使用busybox制作rootfs

busybox源码编译

  1. 下载busybox(建议最好下载1.30版本以上的)
  2. 解压tar-jxvf busybox-1.30-1.tar.bz2
  3. 配置busybox
    1)进入busybox源码目录,输入make menuconfig(可能还会出现make命令无法执行。解决方法:sudo apt-get install build-essential sudo apt-get install libcurses5-dev)
    2)编译的时候可以选择动态编译,也可以选择静态编译。在这里选择静态编译,及选中Busybox Setting->Bulid Options->[ ]Build Busybox as a static binary(no shared libs)
    3)选择exit然后保存
  4. 输入make编译
  5. 输入make install进行安装
  6. 安装后再busybox源目录下会生成一个_install目录

制作initrd镜像

  1. 在用户主目录下新建一个叫rootfs,将busybox源码目录_install的内容全部复制到该目录。
    1)mkdir /home/fx/rootfs
    2)cp ./_install/* /home/fx/rootfs

  2. 添加根文件系统的必要目录
    mkdir dev etc proc bin sbin sys tmp
    在这里插入图片描述

  3. 添加配置信息
    1)将busybox源码examples/bootfloppy/etc 目录内容,复制到rootfs/etc
    cp examples/bootfloppy/etc/* /home/fx/rootfs/etc
    2)修改rootfs/etc/fstab文件
    在这里插入图片描述
    注意:自检设置,1:开机后磁盘自检 0:不自检
    pass:优先级设置,若自检为1则可对多块硬盘进行优先级设置。
    3) 修改rootfs/etc/profile文件
    在这里插入图片描述

    第七行:定义PATH变量,赋值为后面的字符串,然后导出为环境变量。PATH表示了当前用户的系统命令、常用命令及应用程序的默认存储路径。
    第八行:LD_LIBRARY_PATH设置了应用程序库的路径
    第九行:定义PS1变量并导出为环境变量,PS1是基本提示符,(用户 主机名,工作目录名称)
    4)修改rootfs/etc/inittab文件
    系统启动后首先执行一次/etc/init.d/rcS脚本,脚本执行结束后执行profile脚本(/bin/sh加上”-”的话就会在登陆终端之后调用/etc/目录下的profile文件,而不加”-”则不会执行这个脚本),再执 行/bin/sh程序,之后就可以在控制台输入交互命令,
    5)修改rootfs/etc/init.d/rcS的文件
    在这里插入图片描述
    第一行:这表示一个脚本文件,指明脚本解释器的路径
    第二三四五行:表示显示信息
    第六行:表示挂载所有/etc/fstab指定的文件系统

  4. 拷贝所需要的库(主要这里跟Linux 镜像的版本有关,在16.04 下面没有i386这个库,可以选择x86-84有所需要的库)
    1)添加所需要的设备
    2)制作8M大小的镜像文件
    3)格式化这个镜像文件为ext2
    4)在/mnt目录下建立initrd目录挂载点
    5)将当前目录的initrd.img挂载到.mnt/initrd
    6)将rootfs目录下的所有内容复制到/mnt/initrd
    7)卸载/mnt/initrd
    8)将制作好的initrd放到/boot下
    9)修改/boot/grub/grub.cfg(注意这里跟版本还有关系,例如error: you need to load the linux kernel first 这个问题是你配置有问题,缺少内核启动解决方法:赋值grub.cfg中ubuntu的启动信息)
    10)reboot 然后shift 进入自己建立的rootfs
    效果如图:
    在这里插入图片描述
    在这里插入图片描述
    到这里,rootfs就制作成功了。

发布了12 篇原创文章 · 获赞 7 · 访问量 218

猜你喜欢

转载自blog.csdn.net/weixin_42462651/article/details/104985541