大體思路
boot root initrd.gz grub vmlinuz-2.6.18-308.el5 bin sbin lib etc proc sys dev boot有以上內容我們就可以運行一個非常簡單的Linux,只需要往裡面添加各種配置文件,就可以啟動我們所需要的各種服務。在制作之前,我們先做一些准備工作。
1、在VMware上添加一塊新的IDE磁盤
2、將這塊盤分區,/dev/hdb1 /dev/hdb2,之後格式化為ext3的文件系統
3、掛載/dev/hdb1到/mnt/boot;掛載/dev/hdb2到/mnt/sysroot
前提工作做完之後,我們就可以分別制作boot和root了!那麼我們就開始吧
制作boot分區:
●initrd.gz
initrd.gz其實是一個小的root,它也包含bin sbin lib etc proc sys dev mnt這些目錄,並且還有一個重要的腳本文件init,實現從這個小root到我們真正的root的轉換的功能。最終為了保證我們的Linux體積足夠小,我們就把以上的全部壓縮成了initrd.gz。
但是為了保證我們的小linux能夠實現各種功能,我們只添加目錄是不夠的,因此我們使用busybox來虛擬bin sbin usr下的各種程序。因此我們要先制作一個busybox。
我們下載穩定版的busybox版本busybox-1.20.2.tar.bz2
進入圖形界面後,重要的一項是把busybox所依賴的庫文件做進busybox本身,這個庫只提供給busybox調度使用;
但是我們會發現安裝並不成功
因此我需要下載一個更高版本的內核頭文件,然後把它放在/tmp/busybox-1.20.2/include/mtd/
,因為我虛擬機上有linux-2.6.38.5的內核頭文件,所以我就直接復制到上面目錄下就可以了
安裝完成後,會在/tmp/busybox-1.20.2/目錄下生成一個_install的目錄,這表明我們的busybox安裝成功了,並且_install目錄下有我們所需要的bin sbin usr目錄和各種程序腳本。
可以說現在才開始編寫我們真正的initrd.gz
我們發現/mnt/boot目錄下缺少很多目錄,所以我們手動添加幾個進去