制作文件系统
执行以下步骤,制作文件系统:
-
创建目录结构:
mkdir rootfs cd rootfs mkdir dev usr bin sbin lib etc proc tmp sys var root mnt
-
下载BusyBox源代码,保存至rootfs文件夹以外的路径:
git clone https://git.busybox.net/busybox
-
找到解压后文件所在位置,并进入BusyBox配置界面:
cd busybox make CROSS_COMPILE=riscv64-linux-gnu- ARCH=riscv menuconfig
-
选择Y检查Build static binary (no shared libs)选项。
,按
-
指定编译器。
-
选择
下,将路径更改为rootfs文件目录的路径(即编译后的BusyBox的安装路径)。示例:
/home/user/rootfs
- 保存设置内容,退出BusyBox设置窗口。
-
编译BusyBox:
make ARCH=riscv
-
安装BusyBox:
make install
-
进入此前创建的rootfs/etc目录,创建一个名为inittab的文件,并使用vim文本编辑器打开。
cd rootfs/etc vim inittab
-
复制以下内容,并粘贴到
inittab
文件内。::sysinit:/etc/init.d/rcS ::respawn:-/bin/login ::restart:/sbin/init ::ctrlaltdel:/sbin/reboot ::shutdown:/bin/umount -a -r ::shutdown:/sbin/swapoff -a
-
在rootfs/etc目录下,新建名为profile的文件,并使用vim文本编辑器打开。
vim profile
-
复制以下内容,并粘贴到profile文件内。
# /etc/profile: system-wide .profile file for the Bourne shells echo # echo -n "Processing /etc/profile..." # no-op # Set search library path # echo "Set search library path in /etc/profile" export LD_LIBRARY_PATH=/lib:/usr/lib # Set user path # echo "Set user path in /etc/profile" PATH=/bin:/sbin:/usr/bin:/usr/sbin export PATH # Set PS1 # Note: In addition to the SHELL variable, ash supports \u, \h, \W, \$, \!, \n, \w, \nnn (octal numbers corresponding to ASCII characters) # And \e[xx;xxm (color effects), etc. # Also add an extra '\' in front of it! # echo "Set PS1 in /etc/profile" export PS1="\\e[00;32m[$USER@\\w\\a]\\$\\e[00;34m" # echo "Done"
-
在rootfs/etc目录下,新建名为fstab的文件,并使用vim文本编辑器打开。
vim fstab
-
复制以下内容,并粘贴到fstab文件内。
proc /proc proc defaults 0 0 none /tmp tmpfs defaults 0 0 mdev /dev tmpfs defaults 0 0 sysfs /sys sysfs defaults 0 0
-
在rootfs/etc目录下,新建名为passwd的文件,并使用vim文本编辑器打开。
vim passwd
-
复制以下内容,并粘贴到passwd文件内。
root:x:0:0:root:/root:/bin/sh
-
在rootfs/etc目录下,新建名为group的文件,并使用vim文本编辑器打开。
vim group
-
复制以下内容,并粘贴到group文件内。
root:x:0:root
-
在rootfs/etc目录下,新建名为shadow的文件,并使用vim文本编辑器打开。
vim shadow
-
复制以下内容,并粘贴到shadow文件内。
root:BAy5qvelNWKns:1:0:99999:7:::
-
在rootfs/etc目录下,新建名为init.d的目录,并到该目录下。
mkdir init.d cd init.d
-
在rootfs/etc目录下,新建名为rcS的文件,并使用vim文本编辑器打开。
vim rcS
-
复制以下内容,并粘贴到rcS文件内。
#! /bin/sh #echo "----------mount all" /bin/mount -a #echo "----------Starting mdev......" #/bin/echo /sbin/mdev > /proc/sys/kernel/hotplug mdev -s echo "********************************************************" echo " starfive mini RISC-V Rootfs" echo "********************************************************"
-
进入此前创建的
rootfs/dev
目录,并执行以下操作:1 cd rootfs/dev 2 sudo mknod -m 666 console c 5 1 3 sudo mknod -m 666 null c 1 3
-
在rootfs的根目录下新建软链接:
1 cd rootfs/ 2 ln -s bin/busybox init
-
修改rootfs目录中所有文件的权限:
sudo chmod 777 -R *
-
在rootfs目录下,执行以下命令在指定目录下生成rootfs.cpio.gz (cpio文件系统包)。
1 cd rootfs 2 find .| cpio -o -H newc | gzip > /home/user/Desktop/rootfs.cpio.gz
注: 系统成功执行命令后,将在桌面上生成名为rootfs.cpio.gz的文件。您也可以根据需要,将命令中的目录修改为其它路径。如果您的CPU中有8个内核,请将其更改为-j8。该过程较为耗时,请您耐心等待。