首先,你要了解linux的啟動過程:大致如下:BIOS(CMOS)加電——引導(dǎo)啟動設(shè)備選擇啟動順序——找到MBR——由GRUB引導(dǎo)加載內(nèi)核kernel(與initrd文件配合)——加載父進(jìn)程init(配合inittab,rc.sysinit)——啟動login界面。
所以在建立小linux時,我們只需要添加這些基本文件即可。
假設(shè)這里我們;已經(jīng)對安裝小linux的硬盤格式化。
1 模擬建立BOOT和根分區(qū) 將/dev/sdb1,2分別掛在至 /mnt/boot , ./mnt/sysroot下,并在sysroot 下建立根目錄:mkdir root boot usr lib bin sbin proc sys home
2 安裝GRUB;
grub-install --root-directory=/mnt /dev/sdb ,之后再拷貝所需的內(nèi)核文件(這里使用原有系統(tǒng)的vmlinuz-2.6.18.el5), cp /boot/vmlinuz-2.6.18.el5 /mnt/boot/
配置initrd文件,這里不能同內(nèi)核一樣簡單拷貝,需要修改之。
因?yàn)閕nitrd-2.6.18.img是個gzip壓縮文件,先 gzip -d initrd-2.6.18.img ,發(fā)現(xiàn)是CPIO歸檔文件,在用CPIO展開:cpio -id < initrd-2.6.18.img,發(fā)現(xiàn)這其實(shí)就是一個模擬的根文件系統(tǒng)。(其中包含init二進(jìn)制文件),編輯這個init并保存,之后用CPIO歸檔:
find . | cpio -H newc -o | gzip -9 -n > /tmp/ ——(使用find發(fā)現(xiàn)歸檔此目錄下的所有文件并壓縮存放至/tmp)
并在此grub目錄下編輯grub.conf,如下:
default=0
timeout=3
#splashimage=(hd0,0)/grub/milan.xpm.gz
title Little Linux
root (hd0,0)
kernel /vmlinuz ro root=/dev/sda2 quiet
initrd /initrd.gz
3 建立所需的init進(jìn)程,并配置inittab文件。
即拷貝宿主的init即可,注意:很多二進(jìn)制文件都有其依賴的庫文件,也需要拷貝。
注:若想要在系統(tǒng)中添加一些簡單命令,如 ls ,cat ,ping 等,也是按照這種方法,可以自己嘗試。
cp /sbin/init /mnt/sysroot/sbin/
ldd /bin/init :查看init依賴的庫文件,之后再拷貝這些庫文件。PS:這些保存庫文件原有的路徑,如原來在 /lib/下,則拷至 /mnt/sysroot/lib/下。
vim /mnt/sysroot/etc/inittab,如下:
id:3:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit
4 為系統(tǒng)裝配基本的shell,實(shí)現(xiàn)簡單交互
cp /bin/bash /mnt/sysroot/bin/
ldd /bin/bash
拷貝bash依賴的庫文件至制動目錄
5 配置系統(tǒng)初始化腳本,即rc.sysinit文件:如下
echo "welcome to minilinux"
/bin/bash
至此,簡單的傻瓜式迷你linux已經(jīng)完成。
注意:需要執(zhí)行 sync命令使這些更改立即同步至硬盤,可多執(zhí)行幾次。否則很可能造成操作失敗。
億恩科技地址(ADD):鄭州市黃河路129號天一大廈608室 郵編(ZIP):450008 傳真(FAX):0371-60123888
聯(lián)系:億恩小凡
QQ:89317007
電話:0371-63322206 本文出自:億恩科技【www.allwellnessguide.com】
服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]
|