制作文件系统
请参考以下步骤,制作文件系统:
步骤:
- 创建目录结构:
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
- 选择Settings > Build Options,按Y键查看Build static binary (no shared libs)选项。
- 在Build Options下选择cross compiler
prefix,并输入以下命令指定编译器:
riscv64-linux-gnu-
- 选择Installation Options > Destination path for ‘make
install’,根据提示输入以下路径,将其设置为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/init.d路径下,新建名为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的文件。您也可以根据需要,将命令中的目录修改为其它路径。整个编译过程需要耗费一定时间,请耐心等待。