制作文件系统

请参考以下步骤,制作文件系统:

步骤:

  1. 创建目录结构:
    mkdir rootfs
    cd rootfs
    mkdir dev usr bin sbin lib etc proc tmp sys var root mnt
  2. 下载busybox源代码,保存至rootfs文件夹以外的路径:
    git clone https://git.busybox.net/busybox
  3. 进入解压文件所在文件夹,并进入busybox设置界面:
    cd busybox
    make CROSS_COMPILE=riscv64-linux-gnu- ARCH=riscv menuconfig
    1. Busybox设置界面
  4. 选择Settings > Build Options,按Y键查看Build static binary (no shared libs)选项。
  5. Build Options下选择cross compiler prefix,并输入以下命令指定编译器:
    riscv64-linux-gnu-
  6. 选择Installation Options > Destination path for ‘make install’,根据提示输入以下路径,将其设置为rootfs文件路径(即编译后的busybox安装路径)。

    示例:

    /home/user/rootfs
  7. 退出busybox设置窗口,并保存设置。
  8. 编译busybox。
    make ARCH=riscv
  9. 安装busybox:
    make install
  10. 进入到此前创建的rootfs/etc目录,新建名为inittab的文件,然后使用Vim文本编辑器打开:
    cd rootfs/etc
    vim inittab
  11. 复制以下内容,并粘贴到inittab文件内:
    ::sysinit:/etc/init.d/rcS
    ::respawn:-/bin/login
    ::restart:/sbin/init
    ::ctrlaltdel:/sbin/reboot
    ::shutdown:/bin/umount -a -r
    ::shutdown:/sbin/swapoff -a
  12. rootfs/etc路径下,新建名为profile的文件,然后使用Vim文本编辑器打开:
    vim profile
  13. 复制以下内容,并粘贴到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"
  14. rootfs/etc路径下,新建名为fstab的文件,然后使用Vim文本编辑器打开:
    vim fstab
  15. 复制以下内容并粘贴到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
  16. rootfs/etc路径下新建名为passwd的文件,然后使用Vim文本编辑器打开:
    vim passwd
  17. 复制以下内容并粘贴到passwd文件内:
    root:x:0:0:root:/root:/bin/sh
  18. rootfs/etc路径下新建名为group的文件,然后使用Vim文本编辑器打开:
    vim group
  19. 复制以下内容并粘贴到group文件内:
    root:x:0:root
  20. rootfs/etc路径下新建名为shadow的文件,然后使用Vim文本编辑器打开:
    vim shadow
  21. 复制以下内容并粘贴到shadow文件内:
    root:BAy5qvelNWKns:1:0:99999:7:::
  22. rootfs/etc路径下新建名为init.d的目录,然后进入到该目录:
    mkdir init.d
    cd init.d
  23. rootfs/etc/init.d路径下,新建名为rcS的文件,然后使用Vim文本编辑器打开:
    vim rcS
  24. 复制以下内容,并粘贴到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 "********************************************************"
  25. 进入到此前创建的rootfs/dev路径下,并执行以下命令:
    1 cd rootfs/dev
    2 sudo mknod -m 666 console c 5 1
    3 sudo mknod -m 666 null c 1 3
  26. 在rootfs根目录下,新建软链接:
    1 cd rootfs/
    2 ln -s bin/busybox init
  27. 修改rootfs目录下所有文件的权限:
    sudo chmod 777 -R *
  28. 在rootfs目录下,执行以下命令在指定的目录下生成rootfs.cpio.gz(cpio系统软件包)。
    1 cd rootfs
    2 find . | cpio -o -H newc | gzip > /home/user/Desktop/rootfs.cpio.gz
    注:

    系统成功执行命令后,将在桌面上生成名为rootfs.cpio.gz的文件。您也可以根据需要,将命令中的目录修改为其它路径。整个编译过程需要耗费一定时间,请耐心等待。