另外,本篇有一個(gè)實(shí)例來(lái)說(shuō)明,將整個(gè)操作系統(tǒng)運(yùn)行在內(nèi)存的實(shí)例(系統(tǒng)默認(rèn)是使用一塊物理磁盤存儲(chǔ)操作系統(tǒng))。
1 概述Linux系統(tǒng)從軟件角度,啟動(dòng)大致過(guò)程如下:
1) 硬件及BIOS加載,通過(guò)啟動(dòng)項(xiàng)找到MBR,讀取MBR中的boot loader,即我們常用的grub工具。
2) boot loader,通過(guò)(如grub.conf)指定的root設(shè)備,加載kernel(vmlinux)、initramfs,并運(yùn)行initramfs中的init。
3) 切換到真正的root fs,執(zhí)行/sbin/init,執(zhí)行rc.sysinit。
4) 執(zhí)行/etc/rc3.d下服務(wù)腳本。
關(guān)于rootfs是什么,參考文檔[1]描述得比較易懂。
[1]: 什么是根文件系統(tǒng)(rootfs)http://www.crifan.com/what_is_root_filesystem/
2 grubgrub的啟動(dòng)參數(shù),如title,timeout等,google一搜一大把,就不在此說(shuō)明。
關(guān)于grub還有一個(gè)作用,就是啟動(dòng)內(nèi)核時(shí),向內(nèi)核傳遞參數(shù),如我們常見(jiàn)的root=…,就是向內(nèi)核傳遞真正的root fs所在的設(shè)備,即root device。
其它可向內(nèi)核傳遞的參數(shù),具體在參考內(nèi)核源碼目錄中有文檔說(shuō)明其作用:Documentation/kernel-parameters.txt(以內(nèi)核src.rpm來(lái)說(shuō),安裝源碼包后,其內(nèi)核源碼在/root/rpmbuild/BUILD/kernel-2.6.32-71.el6/linux-2.6.32-71.el6.x86_64/)。
其作用相當(dāng)于修改/PRoc/sys/kernel/下的對(duì)應(yīng)參數(shù)值,以/proc/sys/kernel/panic為例。
[root@localhost ~]# cat /proc/sys/kernel/panic
0
[root@localhost ~]# vim /boot/grub/grub.conf
……
root (hd0,0)
kernel /boot/vmlinuz-2.6.32-71.el6.5.vsds.x86_64 ro root=UUID=212c95a4-56d0-44fc-93ce-73b5f3e8cf2a rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us panic=2
initrd /boot/initramfs-2.6.32-71.el6.5.vsds.x86_64.img
……
[root@localhost ~]#reboot
[root@localhost ~]# cat /proc/sys/kernel/panic
2
更多說(shuō)明,參見(jiàn)資料[2]。
[2]: linux 內(nèi)核可接受的參數(shù)| 通過(guò)grub給內(nèi)核傳遞參數(shù)
下節(jié)將跟小伙伴們來(lái)說(shuō)說(shuō)initramfs那些事,和本人通過(guò)簡(jiǎn)單修改initramfs將系統(tǒng)從運(yùn)行在磁盤,修改為運(yùn)行到ramdisk中。
新聞熱點(diǎn)
疑難解答
圖片精選