第一步,尽量裁减一个小的系统,能够启动,并能进入shell。
这个要求很简单,只要系统能够进入shell,哪怕它什么都做不了,但是它的成功会给后面的裁减带来信心的。
实现的步骤:
step by step
一、准备工作:
1、安装VMware虚拟机(这个步骤很简单,不赘述了)
2、在虚拟机中安装一个发行版Linux,我安装的是Magic Linux 2.0,这个系统安装好后会有编译环境的。
3、另外在虚拟机中再新建一个Linux虚拟机,但是不安装系统。(测试用的)
4、下载Linux内核源代码和busybox到本地硬盘上。
我下载的是:linux-2.6.21.tar.bz2,busybox-1.00.tar.bz2
5、配置好VMware的网络,用来传输源代码和busybox。
我的配置是:
VMware的网络:
Magic Linux中的网络采用手动的设置,设置成192.168.0.5,
6、将kernel源代码和busybox源码复制到Magic Linux下
通过samba的方式,将linux-2.6.21.tar.bz2,busybox-1.00.tar.bz2复制到/home目录下,然后关闭Magic Linux。
7、在Magic Linux系统中添加一个硬盘,这个硬盘就是我们用来测试的虚拟机硬盘。
在Magic Linux虚拟机中,点击“Virtual Machine Setting”-“Add”-“Hard Disk”-“Use an existing virtual disk”
二、编译内核:
1、启动Magic Linux,在grub中选择(single mode)
2、启动完成后
3、cd /home
tar xvf linux-2.6.21.tar.bz2
/usr/src
cd
ln –s /home/linux-2.6.21 linux
linux
cd
mrproper
make
make menuconfig (详细配置见后面)
dep
make
bzImage
make
4、内核配置Code maturity level options 不选中
General Setup
IPC选中
V
System
其它的不选
Loadable module support
Enable loadable module support
不选中(这样比较简单)
Block layer
Schedules里面的全选
IO
其它的都不选中
Processor type and features
Processor family (…)根据你电脑中的CPU型号去选择
选中
support
Generic
x86
其它的一概不选中
Power management options
这里面的都不选中
Bus support
support选中
PCI
support
项全选中
MCA
其它内容都不选中(选中这两项才可以将SCSI的驱动加到内核中)Executable file formats
里面的内容全选中
Networking
里面的内容包括子选项里面的内容都不选中
Device drivers
SCSI device support
device
support
SCSI
support
disk
SCSI
driver--->
SCSI
low-level
SCSI
support
BusLogic
Input device support
keyboards
keyboard
XT
Mouse
mouse
PS/2
support
Graphics
Support for frame buffer devices
graphics
support
VGA
VESA
Console display driver support
Frambuffer项选中
这里面就这几项选中,其它的都不选,包括里面的子选项
File system
Ext2和Ext3都选上ROM file system support选上
其它的都不选中,包括里面的子选项
Kernel hacking及剩下的都不选
然后保存.conifg
三、编译busybox
/home
cd
tar
xvf busybox-1.00.tar.bz2
busybox
cd
menuconfig(配置的时候选中static link就好了,其它的默认) make
make
install
make
四、格式化另外一块硬盘
/dev/sdb
fdisk
然后依次输入
m
n
p
1
m w /dev/sdb1 mkfs.ext3 格式化完毕 五、加载/dev/sdb /mnt/test mkdir mount /dev/sdb /mnt/test /mnt/test cd boot mkdir boot/grub mkdir 六、建立grub配置文件 /mnt/test/boot/grub/ /boot/grub/stage1 cp /mnt/test/boot/grub/ /boot/grub/stage2 cp cp /boot/grub/e2fs_stage1_5 /mnt/test/boot/grub/ /mnt/test/boot/grub/menu.lst vi menu.lst: default=0timeout=20 Linux Test title (hd0,0) root kernel /boot/bzImage noinitrd root=/dev/sda1 rw 编辑完menu.lst后,保存 七、建立文件系统 # cd /mnt/test/ # mkdir dev etc etc/init.d proc mnt tmp var # chmod 777 dev etc etc/init.d proc mnt tmp var # chmod 555 proc # cd dev # mknod tty c 5 0 # mknod console c 5 1 # chmod 666 tty console # mknod tty0 c 4 0 # chmod 666 tty0 # mknod ram0 b 1 0 # chmod 600 ram0 # mknod sda1 b 2 0 # chmod 600 sda1 # mknod null c 1 3 # chmod 666 null 建启动配置文件: /etc/inittab, /etc/init.d/rcS, /etc/fstab initab: ::sysinit:/etc/init.d/rcS ::respawn:/bin/sh rcS: #!/bin/sh echo “Welcome to Test Linux” mount –a # chmod 755 init.d/rc.S fstab: proc /proc proc defaults 0 0 # cp –arR /home/busybox/_install/* /mnt/test/ # touch /mnt/test/etc/busybox.conf # cd / # umount /dev/sdb1 (不卸载的话,安装grub到sdb会出错) 八、安装grub到/dev/sdb1 # grub ¾root (hd1,0) ¾setup (hd1) ¾quit 九、启动Test Linux 先关闭Magic Linux 启动Test Linux Linux 裁减(二)――基于IDE硬盘 基本的方法同上面的一样,但是,在编译内核的时候,要选上: Device Drivers-----Parallel Port Support---- Parallel Port Support---PC-style hardware Device Drivers-----ATA/ATAPI/MFM/RLL Support---- Parallel Port Support---PC-style hardware