这个选项也一定要选,否则make install 后busybox将安装在原系统的/usr下,这将覆盖掉系统原有的命令。选择这个选项后,make install后会在busybox目录下生成一个叫_install的目录,里面有busybox和指向他的链接。 其他选项都是一些Linux基本命令选项,自己需要哪些命令就编译进去,一般用默认的就可以了。配置好后退出并保存。
4 编译并安装busybox
编译好后在busybox目录下生成子目录_install,里面的内容:
drwxr-xr-x 2 root root 4096 11月 24 15:28 bin
lrwxrwxrwx 1 root root 11 11月 24 15:28 Linuxrc -> bin/busybox
drwxr-xr-x 2 root root 4096 11月 24 15:28 sbin |
其中可执行文件busybox在bin目录下,其他的都是指向他的符号链接。我编译出来的busybox可执行文件是935K,加上符号链接,整个_install目录是952K。加上845K的内核不是已经超过1440K了吗?别担心,我们将对整个根文件系统做大幅度的压缩。
八、制作根文件系统
1 基本目录结构
#cd /babyLinux/rootfs
#mkdir etc usr var tmp proc home root dev |
其中etc,proc和dev是一定要建的,bin和sbin不用建,因为busybox中已经有了。其他的可以象征性的建几个就可以了。拷贝busybox:
#cp -R /babyLinux/busybox-1.00/_install/* /babyLinux/rootfs/ |
2 建立设备文件名
#cd /babyLinux/rootfs/dev |
你可以用mknod手工建立,也可以直接从原系统的/dev目录下拷贝过来。
手工建立的方法:
#ls -l /dev/console
crw------- 1 root root 5, 1 11月 30 09:02 /dev/console |
这样就查看到了console设备的主设备号是5,辅设备号是1,是一个标记为C的字符设备。于是,我们可以用mknod建立一个同样的设备文件:
但是手工方法建立太麻烦了,通常直接从/dev下把需要的设备文件拷贝过来。这些设备文件是特殊文件,在拷贝时一定要加上-R参数才能拷贝。
#cp -R /dev/console ./
#cp -R /dev/null ./
#cp -R /dev/zero ./
... |
以下是我认为需要的设备名:
cdrom fd0 hda14 hda4 hdb11 hdb19 hdc hdc16 hdc6 hdd13 hdd3 loop2 ram2
console fd0H1440 hda15 hda5 hdb12 hdb2 hdc1 hdc17 hdc7 hdd14 hdd4 loop3 tty0
fb hda hda16 hda6 hdb13 hdb3 hdc10 hdc18 hdc8 hdd15 hdd5 loop4 tty1
fb0 hda1 hda17 hda7 hdb14 hdb4 hdc11 hdc19 hdd hdd16 hdd6 loop5 tty2
fb1 hda10 hda18 hda8 hdb15 hdb5 hdc12 hdc2 hdd1 hdd17 hdd7 null tty3
fb2 hda11 hda19 hdb hdb16 hdb6 hdc13 hdc3 hdd10 hdd18 hdd8 ram tty4
fb3 hda12 hda2 hdb1 hdb17 hdb7 hdc14 hdc4 hdd11 hdd19 initctl ram0 tty5
fb4 hda13 hda3 hdb10 hdb18 hdb8 hdc15 hdc5 hdd12 hdd2 loop1 ram1 zero |
其中,fd0,hda,ram,ram1,tty1,null,zero,loop1,fb0,fb等是必备的。其它的hda,hda1,hdb等可以根据实际需要决定。但是上表中的选择是比较合理的,即能满足大部分的需要,有没有不用的设备浪费空间。注意,千万不要把/dev下的设备全拷贝过来,那将产生大约420K的/dev目录,这对babyLinux来说太大了。
3 建立etc目录下的配置文件
busybox.conf group inittab motd passwd resolv.conf shadow-
fstab init.d issue mtab profile shadow |
其中init。d是一个目录,从busybox-1。00源代码目录下拷贝过来。
#cp -R /babyLinux/busybox-1.00/examples/bootflopyp
/etc/init.d /babyLinux/rootfs/etc/ |
Busybox.conf是一个空文件。其他文件的内容如下:
fstab
/dev/fd0 / ext2 defaults 0 0
none /proc proc defaults 0 0
/dev/cdrom /mnt/cdrom udf,iso9660 noauto,owner,kudzu,ro 0 0
/dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0
group
root:x:0:root
inittab
::sysinit:/etc/init.d/rcS
:first:/bin/sh
tty2::respawn:/bin/getty 38400 tty2
tty3::respawn:/bin/getty 38400 tty3
tty4::respawn:/bin/getty 38400 tty4
# Stuff to do when restarting the init process
::restart:/bin/init
# Stuff to do before rebooting
::ctrlaltdel:/bin/reboot
::shutdown:/bin/umount -a -r
::shutdown:/bin/swapoff -a
issue
Baby Linux release 0.1
motd
mtab
passwd
root::0:0:root:/root:/bin/ash
profile
# /etc/profile: system-wide .profile file for the Bourne shells
echo
echo
export PS1="[\u@\h \w]\$"
echo "Done"
alias ll='ls -l'
alias du='du -h'
alias df='df -h'
alias rm='rm -i'
echo
resolv.conf
nameserver 202.96.209.5
nameserver 202.96.209.6
shadow
root:$1$$adltAB9Sr/MSKqylIvSJT/:12705:0:99999:7:::
shadow-
root:$1$DWU.tenP$B7ANiXoGoiZMwJR6Ih8810:12705:0:99999:7::: |