我在之前的uboot通过nfs挂载ubuntu根文件系统中也有实现过根文件系统的制作,那只是在ubuntu官网已经做好的根文件基础上安装一些自己所需的软解而已。而使用busybox制作根文件系统可以自定义选项,加深自己对linux的系统理解,方便后期学习根文件系统的裁剪。
官网下载地址,进入“download source”下载连接
根据自己的需要下载相应的版本,我下载的是“busybox-1.33.1.tar.bz2 ”。
将下载的文件放入linux开发环境中进行解压,目录如下图所示
为了以后使用方便,修改交叉工具链,进入“makefile”文件
sudo vim makefile
进入文件后修改“arch”和“cross_compile”变量,如下图所示:
注意:交叉编译链一定要是自己安装的全路径
1.修改“printable_string.c”文件
sudo vim libbb/printable_string.c
进入文件后修改内容如下图所示:
2.修改“unicode.c”文件
sudo vim libbb/unicode.c
进入文件后修改内容如下图所示:
1.设置配置项
defconfig:缺项配置,也就是默认配置选项。
allyesconfig:全选配置,也就是说选中busybox的所有功能。
allnoconfig:最小配置。
可以根据自己需要选择配置命令,这里我选用的是最下配置命令如下
sudo make defconfig
配置完成后可通过查看是否有.config文件,如果存在则说明配置成功,如下图所示:
2.进入图形配置
sudo make menuconfig
进入图形配置界面后,配置库文件来源,配置路径如下所示
-> ttings -> build static binary
使用静态库时,编译出来的文件很大,然后编译出来的dns会出问题,所以我这里选用的是动态库,配置如下图所示:
勾选“vi-style line editing commands”,配置路径如下
-> ttings -> vi-style line editing commands
取消“simplified modutils”的勾选,配置路径如下
-> linux module utilities -> simplified modutils
勾选“mdev”,配置路径如下
-> linux syste公司营业执照流程m utilities -> mdev
如下图所示:
勾选“support unicode”及其子选项“check $lc_all, $lc_ctype and $lang environment variables”
-> ttings -> support unicode -> check $lc_all, $lc_ctype and $lang environment variables
到此busybox的配置基本完成,如果需要其他配置项的内容可根据自己的需求选择。
编译时指定生成的根文件系统的存放路径
make install config_prefix=/home/nfs/rootfs
编译完成后会出下图中的结果说明编译成功,如果所示:
此时,进入生成的根文件多完路径下可以看到相应的目录生成,如下图所示:
此时看到的根文件系统是不完全的,因为我选择的库文件是动态库,所以还需要将库文件加入系统中。
1.在生成的根文件目录下创建lib
文件夹
mkdir lib
将交叉编译链arm-linux-gnueabihe/libc/lib
下的所有so和.a文件拷贝到刚才创建的lib文件下
cp *so* *.a /home/nfs/rootfs/lib -d
将刚拷贝过来放在lib目录下的ld-linux-armhf.so.3
的软链接改为源文件,首先删除文件
rm ld-linux-armhf.so.3
然后重新在交叉编译链arm-linux-gnueabihe/libc/lib
下将文件拷贝过来
cp ld-linux-armhf.so.3 /home/nfs/rootfs/lib
将交叉编译链arm-linux-gnueabihe/lib
下的所有so和.a文件拷贝到刚才创建的lib文件下
cp *so* *.a /home/nfs/rootfs/lib -d
2.在生成的根文件目录下创建usr/lib
文件夹
cd ../mkd全球最好的大学ir usr/libcd usr/libls
将交叉编译链arm-linux-gnueabihe/libc/usr/lib
下的所有so和.a文件拷贝到刚才创建的lib文件下
cp *so* *.a /home/nfs/rootfs/usr/lib -d
到此动态库文件已经拷贝完成,可以通过du命令查看刚才拷贝文件的大小
cd ../../du ./lib ./usr/lib
如下图所示:
3.创建其他文件夹
mkdir dev proc mnt sys tmp root
目录如下图所示:
现在我们的根文件系统就基本制作完成了,接下来测试我们制作的根文件是否能用。
测试方式推荐使用nfs的形式挂载根文件系统,由于之间我有写过一篇文章,这里就不过多介绍了,具体流程见uboot通过nfs挂载ubuntu根文件系统
挂载根文件系统启动后,见如下图信息,则说明成功:
启动后虽然能正常使用,但是会提示缺少’rcs’文件,需要在/etc/init.d/
路径下创建rcs文件,如果路径不存在,创建相应的文件即可
1.rvs文件
#! /bin/shpath=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:$pathld_library_path=$ld_library_path:/lib:/usr/libexport path ld_library_pathmount -amkdir /dev/ptsmount -t devpts devpts /dev/ptcho /sbin/mdev > /proc/sys/kernel/hotplug mdev -s
完成后重启开发版,又会出现缺少fstab
文件,同样的方式在/etc
路径下创建fstab
文件
2.fstab文件
# <file system> <dir> <type> <options> <dump> <pass>proc /proc proc defaults 0 0tmpfs /tmp tmpfs defaults 0 0sysfs /sys sysfs defaults 0 0
完成后在此重启,这次虽然没错误提示,还需要在/etc
路径下创建inittab
文件
3.inittab文件
#etc/inittab::sysinit:/etc/init.d/rcsconsole::askfirst:-/关于清明节的作文bin/sh::restart:/sbin/init::ctrlaltdel:/sbin/reboot::shutdown:/bin/umount -a -r::shutdown:/sbin/swqpoff -a
到此简单的根文件系统已经制作完成,可以进行系统的烧写。
1.打开图形配置界面时,可能出现的问题如下图所示:
解决办法,错误主要是没有安装ncurs导致的,只需要进行安装即可
sudo apt-get install libncurs5-dev
原子哥视频教程/d/file/titlepic/p%3e
本文发布于:2023-04-05 04:34:25,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/30f2e46a2f1854da09f91a9d40703dfb.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:通过busybox制作根文件系统详细过程.doc
本文 PDF 下载地址:通过busybox制作根文件系统详细过程.pdf
留言与评论(共有 0 条评论) |