精通init ramfs构建step by step(三)

2019-07-13 06:44发布

七、什么是busybox     busybox号称是嵌入式Linux中的瑞士军刀——小巧、功能齐全。它把许多常用的Linux命令都集成到一个单一的可执行程序中,只用这一个可执行程序(即busybox)加上Linux内核就可以构建一个基本的Linux系统。busybox程序非常小巧,包含全部命令可执行文件大小也只有750多K。busybox是完全模块化的,可以很容易地在编译时增加、删除其中包含的命令。     由于busybox的这些特点,它广泛应用于LiveCD、应急修复盘、安装盘等系统中。我们也是以它为基础,构建init ramfs。     八、busybox的配置、编译和安装     (1)去http://busybox.net 去下载最新的源码,解压展开。     (2)用     make menuconfig     命令启动配置界面配置,配置busybox的特性、选择要包含在busybox的命令(busybox称为applet);     也可以用     make defconfig     命令做缺省配置,包含全部的applet。     另外两个配置命令是     make allyesconfig——最大配置     make allnoconfig——最小配置     它们和make defconfig命令都可以用来作为自定义配置的初始配置,然后再用make menuconfing命令做定制化配置。     为了简单,我们用make defconfig做缺省配置。     (3)用     make     命令编译busybox软件。     (4)用     make CONFIG_PREFIX=<安装目录> install     命令安装。如果在命令行中省略CONFIG_PREFIX变量的赋值,则会安装缺省值 ./_install 目录下。CONFIG_PREFIX可以在make menuconfig的配置界面中修改。     我们用make CONFIG_PREFIX=~/initramfs-test/image 命令把busybox安装到init ramfs的构建目录中。     (5)缺省配置下,busybox动态链接到glibc,所以要把它用到的动态库复制到init ramfs的构建目录中。用ldd命令查看busybox用到了哪些动态库文件及相应的文件路径,然后把它们复制到相应的目录下即可。     我们编译的busybox需要向image/lib目录下复制     ld-linux.so.2     libc.so.6     libcrypt.so.1     libm.so.6     动态库文件。     九、在image下创建必要的目录和设备文件     (1)在imgae目录下创建     proc , sys , etc ,mnt     四个目录     (2)hello world 已经创建了console 设备文件,我们再用     mknod -m 600 dev/null c 1 3     命令创建另一个基本的设备文件。     十、试验一下     busybox的构建和准备工作做完了,我们试验一下吧:     在image目录下以root用户权限——     (1)用     mount -vt proc proc =proc     mount -vt sysfs sysfs =sys     命令安装内核虚拟文件系统     (2)用     mount -v -o bind /dev dev     命令绑定/dev的设备文件到image/dev     (3)用     chroot . /bin/sh     命令进入busybox的环境。出现shell的命令提示符,可以试着输入几个命令,看看执行结果。例如,输入 fdisk -l 命令看看是否能显示硬盘的分区。     系列文章:     精通init ramfs构建step by step (一)     精通init ramfs构建step by step (二)     精通init ramfs构建step by step (四)     精通init ramfs构建step by step (五)     精通init ramfs构建step by step (六)     本篇文章来自IDC专家网 原文链接:http://www.soidc.net/articles/1215485053493/20090505/1215945621508_1.html