搜索

Google
 

星期四, 三月 08, 2007

linux裁减实践

1、编译busybox,我通常会选择Busybox Settings/General Configuration中的前面6项,Installation Options中的Don't use /usr,下面的Applets我基本上都选,反正也不大,Init Utilities中我去掉了两个与debugging有关的选项,其它也没什么了,看着选择自己需要的就行了。

2、如果你的busybox编译得没什么问题不需要再调整接下来的工作你可以在_install目录里面做,否则我觉得最好还是挂载好你将要使用的设备,将_install下的所有文件和目录复制到设备上去。mkdir -p boot/grub root dev etc/init.d lib proc tmp var/lib/misc var/lock var/log var/tmp usr/bin usr/lib && chmod 1777 tmp var/tmp。

3、裁减kernel,通常裁减主要用于一个特定的应用,设备都是指定的,可以针对相应的硬件配置只选择自己需要的驱动,裁减的linux应用通常也比较单一,因此很多功能都可以不选择。复制kernel文件vmlinuz到boot目录,如果用grub的话可将grub的stage1和stage2两个文件复制boot/grub中,编辑好grub.conf安装grub即可。

4、要复制的/dev下的一些设备文件:console、core、fd0、null、ptmx、pts、ram*、random、stderr、stdin、stdout、rd、fd、tty、tty0~tty9、urandom、vcs、zero、hda*(如果用的是ide接口硬盘)、pty*,如果要使用X还要复制agppart、misc、log、mem、input。复制方法用cp -avp /dev/xxx

5、复制母系统的/etc/group、passwd、shadow到etc目录,删除掉不需要的组和用户即可。

6、配置/etc/fstab,至少有类似以下这样的项:
/dev/hda11 / reiserfs defaults 0 0
proc /proc proc defaults 0 0
none /dev/pts devpts gid=5,mode=620 0 0

7、配置/etc/inittab:
::sysinit:/etc/init.d/rcS

::respawn:/sbin/getty 38400 tty1
tty2::respawn:/sbin/getty 38400 tty2
tty3::respawn:/sbin/getty 38400 tty3
tty4::respawn:/sbin/getty 38400 tty4

::restart:/sbin/init

::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff -a

8、编辑/etc/issue,如Welcome to MyLinux release 0.1 on \l

9、编辑/etc/init.d/rcS:
#!/bin/sh

/bin/mount -a
/bin/mount -o remount,rw /

echo
echo
echo
echo -en "\t\t\tWelcome to \\033[0;32mMyLinux\\033[0;39m release 0.1\n"

hostname MyLinux
ifconfig lo up
ifconfig eth0 192.168.4.240 netmask 255.255.255.0 up
route add default gw 192.168.4.1
syslogd

10、复制必要的库文件,当然在这儿busybox也可以静态编译链接,但你的应用应该也要用到库文件的,都静态编译链接还是挺浪费空间的,所以我一般并不使用静态编译链接。现在复制必要的库文件到lib目录,可以使用ldd查看某个elf文件需要使用哪些共享库。

基本上就这些步骤,X的配置也很简单,推荐使用gentoo,用gentoo裁减linux非常方便,可以简单地用quickpkg打包你想要的,然后解压到目标设备上,然后删掉不需要的东西即可。现在可以启动一下试试了。。。

没有评论: