前言。
Linux系統啓動流程。
(1)POST(Power-onSelf Test:開機自檢)
(2)BIOS(BootSequence:指定啓動的設備讀取磁盤中操作系統內核文件)(3)MBR(BootLoader加載內核文件至內存)
(4)kernel(initramfs(centos6) :將內核解壓縮爲根目錄,加載合適的驅動程序,最後退出虛擬文件系統)
(5)/sbin/init(實現系統的初始化,負責管理用戶空間的進程)
(6)啓動shell
由此可知,裁剪內核關鍵在於步驟(3)(4)(5)
環境
虛擬機VMwareWorks,centos6.5
新建一臺1221,新添加一塊磁盤命名爲2 Hard Disk,默認是sdb
新建Mini Linx,選擇磁盤必須爲上述已存在的2.Hard Dis
步驟
(1)在1221新加的磁盤分區sdb1,sdb2。格式化(ext4格式),分別掛載至目錄/mnt/boot,/mnt/sysroot。
相信難不到大家的哦,所用命令如下。
fdisk /dev/sdb ;
mke2fs -t ext4 /dev/sdb1;
mkdir-pv /mnt/{boot,sysroot}
結果如下
(2)在sdb上安裝grub
注意此處的“--root-directory=/mnt”選項,sdb1是掛載在/mnt/boot上的,不要寫成--root-directory=/mnt/boot 了。
sdb對應的硬盤是hd1,但是這個編號1僅僅對次主機有效,換到一個單獨的主機上的時候就是hd0。
grub-install --root-directory=/mnt /dev/sdb
(3)複製內核vmlinuz和內核加載部分硬件所依賴的initramfs
cp /boot/vmlinuz-2.6.32-431.el6.x86_64 /mnt/boot/vmlinuz
cp /boot/initramfs-2.6.32-431.el6.x86_64.img /mnt/boot/initramfs.img
(4)創建Linux需要的一些基本文件(在Mini Linux系統上需要的)
mkdir -pv /etc/rc.d root boot dev proc sys tmp var usr srv lib lib64 bin sbin home mnt media
(5)移植bash和一些相關的命令至目標主機的根文件系統(後面網卡的配置需要)
(6)切換到/mnt/sysroot/bin/目錄下、給bash創建一個軟鏈接,同時測試bash是否移植成功
ln -sv bash sh
(7)在目標機的/boot/grub目錄中創建grub.conf,實現開機自檢
(8)爲了能夠實現開機啓動網卡,需要將宿主機上的網卡配置文件複製到目標機上,可以通過lsmod查看當前系統的所有模塊,可以通過modinfo 模塊名稱來查看模塊的詳細信息,同時複製模塊至目標主機lib/modules目錄。
mkdir -p /mnt/sysroot/lib/modules
cp /lib/modules/2.6.32-358.el6.x86_64/kernel/drivers/net/e1000/e1000.ko /mnt/sysroot/lib/modules/
(9)爲了使系統能夠開機自動掛載一些文件系統和初始化一些服務,在目標機sbin/目錄創建init文件
開啓Mini Linux可以看到
網卡模塊安裝配置成功如下,
也可ping通
附:bincp.sh腳本(移植可執行程序的腳本、包括程序所依賴的庫文件)