我们这里使用的内核版本是linux-2.6.38.5 busybox使用的是busybox-1.20.2
1、准备
先在虚拟机上添加一块新硬盘,给硬盘分两个主分区(本例中的硬盘名为hdb)hdb1和hdb2,格式化文件系统为ext3,然后将hdb1挂载至/mnt/boot,将hdb2挂载至/mnt/sysroot.
2、编译
略
3、制作
将编译好的busybox复制到/mnt/sysroot目录下并且删掉无用项linuxrc
创建一个目录为系统制作init文件
另外还需创建两个必要的设备文件
[root@localhost busybox]# mknod dev/console c 5 1
[root@localhost busybox]# mknod dev/null c 1 3
编辑init文件
[root@localhost busybox]# vim init
添加如下内容:
#!/bin/sh
mount -t proc proc /proc
mount -t sysfs sysfs /sys
insmod /lib/modules/jbd.ko
insmod /lib/modules/ext3.ko
mdev -s
mount -t ext3 /dev/hda2 /mnt/sysroot
exec switch_root /mnt/sysroot /sbin/init
给init文件赋权限,然后压缩内容送给boot作为initrd文件
建立真正的根文件系统
还需创建两个必要的设备文件
[root@localhost busybox]# mknod dev/console c 5 1
[root@localhost busybox]# mknod dev/null c 1 3
为系统建立启动所需的脚本并且赋予权限
[root@localhost sysroot]# vim etc/rc.d/rc.sysinit
文件内容为:
#!/bin/sh
echo -e "\tWelcome to \033[31mMageEdu\033[0m Linux"
echo -e "Remounting the root filesystem ..."
mount -t proc proc /proc
mount -t sysfs sysfs /sys
mount -o remount,rw /
echo -e "Creating the files of device ..."
mdev -s
echo -e "Mounting the filesystem ..."
mount -a
swapon -a
echo -e "Starting the log daemon ..."
syslogd
klogd
echo -e "Configuring loopback interface ..."
ifconfig lo 127.0.0.1/24
ifconfig eth0 172.16.100.9/16
# END
[root@localhost sysroot]# chmod +x etc/rc.d/rc.sysinit
为init配置所需文件inittab
[root@localhost sysroot]# vim etc/inittab
文件内容:
::sysinit:/etc/rc.d/rc.sysinit
console::respawn:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
创建文件系统表配置文件fstab
[root@localhost sysroot]# vim etc/fstab
文件内容:
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/hda1 /boot ext3 defaults 0 0
/dev/hda2 / ext3 defaults 1 1
为日志进程建立配置文件,将日志发送至/var/log/messages文件
[root@localhost sysroot]# vim etc/syslog.conf
文件内容:
*.info /var/log/messages
这些做完了不要忘了最关键的一步,安装grub!
[root@localhost ~]# grub-install --root-directory=/mnt /dev/hdb
[root@localhost ~]# cd /mnt/boot
[root@localhost boot]# vim grub/grub.conf
文件内容:
default=0
timeout=5
color light-green/black light-magenta/black
title Welcom to Linux(kernel:2.6.38.5)
root (hd0,0)
kernel /bzImage ro root=/dev/hdb2 quiet
initrd /initrd.gz
至此这个Linux已经可以运行了,而且还包含了数百种命令,但是你知道这个Linux有多大吗?做好之后可以自己看一下,我的还不到30M……
说明一下,这个