[UP] add some viki files, knowledge.
[arrow.git] / viki / kernel / initramfs / do-initramfs-steps03.viki
blob1dc1d19e47893da5b5c0c7ccd846c1b517f67807
1  精通initramfs构建step by step (三):busybox
3 七、什么是busybox
4 busybox 号称是嵌入式Linux中的瑞士军刀——小巧、功能齐全。它把许多常用的Linux命令都集成到一个单一的可执行程序中,只用这一个可执行程序(即 busybox)加上Linux内核就可以构建一个基本的Linux系统。busybox程序非常小巧,包含全部命令可执行文件大小也只有750多K。 busybox是完全模块化的,可以很容易地在编译时增加、删除其中包含的命令。
5 由于busybox的这些特点,它广泛应用于LiveCD、应急修复盘、安装盘等系统中。我们也是以它为基础,构建initramfs。
7 八、busybox的配置、编译和安装
8 (1)去http://busybox.net 去下载最新的源码,解压展开。
9 (2)用
10 make menuconfig
11 命令启动配置界面配置,配置busybox的特性、选择要包含在busybox的命令(busybox称为applet);
12 也可以用
13 make defconfig
14 命令做缺省配置,包含全部的applet。
15 另外两个配置命令是
16 make allyesconfig——最大配置
17 make allnoconfig——最小配置
18 它们和make defconfig命令都可以用来作为自定义配置的初始配置,然后再用make menuconfing命令做定制化配置。
19 为了简单,我们用make defconfig做缺省配置。
20 (3)用
21 make
22 命令编译busybox软件。
23 (4)用
24 make CONFIG_PREFIX=<安装目录> install
25 命令安装。如果在命令行中省略CONFIG_PREFIX变量的赋值,则会安装缺省值 ./_install 目录下。CONFIG_PREFIX可以在make menuconfig的配置界面中修改。
26 我们用make CONFIG_PREFIX=~/initramfs-test/image 命令把busybox安装到initramfs的构建目录中。
27 (5)缺省配置下,busybox动态链接到glibc,所以要把它用到的动态库复制到initramfs的构建目录中。用ldd命令查看busybox用到了哪些动态库文件及相应的文件路径,然后把它们复制到相应的目录下即可。
28 我们编译的busybox需要向image/lib目录下复制
29 ld-linux.so.2
30 libc.so.6
31 libcrypt.so.1
32 libm.so.6
33 动态库文件。
35 九、在image下创建必要的目录和设备文件
36 (1)在imgae目录下创建
37 proc , sys , etc ,mnt
38 四个目录
39 (2)hello world 已经创建了console 设备文件,我们再用
40 mknod -m 600 dev/null c 1 3
41 命令创建另一个基本的设备文件。
43 十、试验一下
44 busybox的构建和准备工作做完了,我们试验一下吧:
45 在image目录下以root用户权限——
46 (1)用
47 mount -vt proc proc =proc
48 mount -vt sysfs sysfs =sys
49 命令安装内核虚拟文件系统
50 (2)用
51 mount -v -o bind /dev dev
52 命令绑定/dev的设备文件到image/dev
53 (3)用
54 chroot . /bin/sh
55 命令进入busybox的环境。出现shell的命令提示符,可以试着输入几个命令,看看执行结果。例如,输入 fdisk -l 命令看看是否能显示硬盘的分区。
58 ---下节预告---
59 busybox系统做好了,我们就以它为基础在initramfs上构建一个可运行的mini Linux系统吧。请看下一个step:
60 精通initramfs构建step by step (四):mini linux