从系统的启动过程分析,为什么我们划分分区的时候 /sbin 、/bin、/lib、/dev不能做为独立的分区?...
Bootload 從磁盤上加載 vmlinuz-2.6.18-194.el5 和 initrd-2.6.18-194.el5.img 到內(nèi)存中并展開,進(jìn)而完成系統(tǒng)的初始化工作。
[root@node2?~]#?vim?/boot/grub/grub.conf #?grub.conf?generated?by?anaconda # #?Note?that?you?do?not?have?to?rerun?grub?after?making?changes?to?this?file #?NOTICE:??You?have?a?/boot?partition.??This?means?that #??????????all?kernel?and?initrd?paths?are?relative?to?/boot/,?eg. #??????????root?(hd0,0) #??????????kernel?/vmlinuz-version?ro?root=/dev/sda2 #??????????initrd?/initrd-version.img #boot=/dev/sda1 #?設(shè)置默認(rèn)啟動的操作系統(tǒng),0?表示:第一個?title?定義的操作系統(tǒng)。 default=0 #?可以這么說,GRUB?是一個交互式的程序,這里定義的“超時時間”,超過?timeout?定義的 #?時間,用戶不與?GRUB?進(jìn)行交互,GRUB就自動啟動default的操作系統(tǒng)。? timeout=5 #?設(shè)置?GRUB?的背景圖片,圖片位置在第一塊磁盤的第一分區(qū),?站在?Linux?磁盤系統(tǒng)的角度也 #?就是?/boot?(dev/sda1?第一分區(qū)), #?也就是說圖片的位置在?/boot/grub/splash.xpm.gz splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz #?使用?hiddenmenu?來隱藏?GRUB?菜單。 hiddenmenu #?GRUB? #?GRUB?的密碼有兩種: #?????1、設(shè)置?GRUB??的密碼,password?設(shè)置密碼的位置在title定義系統(tǒng)前面。在啟動系 #????????統(tǒng)時候,如果想要操作控制(如進(jìn)入單用戶模式)?GRUB?則需要輸入該密碼。 #?????2、如果?title?使用?password?設(shè)置了密碼。啟動該系統(tǒng)時,要要求用戶輸入正確有 #???????口令,才可以啟動該系統(tǒng)的。 password?--md5?$1$28AGIPNd$u85jSwiyrsReVQGkZv6JD/ title?CentOS?(2.6.18-194.el5)root?(hd0,0)kernel?/vmlinuz-2.6.18-194.el5?ro?root=LABEL=/?quietinitrd?/initrd-2.6.18-194.el5.img說明:
??? 上述就是 grub(boot load)的配置文件,在 grub 的指揮下把磁盤上的 kernel 和 initrd 加載到內(nèi)存中并運(yùn)行。
查看 /boot/initrd-2.6.18-194.el5.img 把它拆開就成下述樣子
root@node2?~]#?ll?/tmp/test/ total?5912 drwx------?2?root?root????4096?Jun?19?07:44?bin drwx------?3?root?root????4096?Jun?19?07:44?dev drwx------?2?root?root????4096?Jun?19?07:44?etc -rwx------?1?root?root????2536?Jun?19?07:44?init drwx------?3?root?root????4096?Jun?19?07:44?lib drwx------?2?root?root????4096?Jun?19?07:44?proc lrwxrwxrwx?1?root?root???????3?Jun?19?07:44?sbin?->?bin drwx------?2?root?root????4096?Jun?19?07:44?sys drwx------?2?root?root????4096?Jun?19?07:44?sysrootlib 目錄保存了,initrd 加載的模塊
[root@node2?~]#?ll?/tmp/test/lib/ total?1200 -rw-------?1?root?root??17908?Jun?19?07:44?dm-log.ko -rw-------?1?root?root??11188?Jun?19?07:44?dm-mem-cache.ko -rw-------?1?root?root???8808?Jun?19?07:44?dm-message.ko -rw-------?1?root?root??75644?Jun?19?07:44?dm-mod.ko -rw-------?1?root?root??74148?Jun?19?07:44?dm-raid45.ko -rw-------?1?root?root??18512?Jun?19?07:44?dm-region_hash.ko -rw-------?1?root?root?147376?Jun?19?07:44?ext3.ko -rw-------?1?root?root?177220?Jun?19?07:44?scsi_mod.ko -rw-------?1?root?root??31560?Jun?19?07:44?scsi_transport_spi.ko ...bin 目錄保存了, initrd 需要使用到的命令工具
[root@node2?~]#?ll??/tmp/test/bin/ total?4752 -rwx------?1?root?root?1075172?Jun?19?07:44?dmraid -rwx------?1?root?root??476292?Jun?19?07:44?insmod -rwx------?1?root?root??862468?Jun?19?07:44?kpartx lrwxrwxrwx?1?root?root??????10?Jun?19?07:44?modprobe?->?/sbin/nash -rwx------?1?root?root?2427036?Jun?19?07:44?nash查看該小的 linux 的運(yùn)行過程
#!/bin/nash mount?-t?proc?/proc?/proc setquiet echo?Mounting?proc?filesystem echo?Mounting?sysfs?filesystem mount?-t?sysfs?/sys?/sys echo?Creating?/dev mount?-o?mode=0755?-t?tmpfs?/dev?/dev mkdir?/dev/pts mount?-t?devpts?-o?gid=5,mode=620?/dev/pts?/dev/pts mkdir?/dev/shm mkdir?/dev/mapper echo?Creating?initial?device?nodes mknod?/dev/null?c?1?3 。。。 mknod?/dev/systty?c?4?0 mknod?/dev/tty?c?5?0 mknod?/dev/console?c?5?1 。。。 mknod?/dev/tty0?c?4?0 。。。 mknod?/dev/tty12?c?4?12 。。。 mknod?/dev/ttyS3?c?4?67 echo?Setting?up?hotplug. hotplug echo?Creating?block?device?nodes. mkblkdevs echo?"Loading?ehci-hcd.ko?module" insmod?/lib/ehci-hcd.ko echo?"Loading?ohci-hcd.ko?module" insmod?/lib/ohci-hcd.ko echo?"Loading?uhci-hcd.ko?module" insmod?/lib/uhci-hcd.ko mount?-t?usbfs?/proc/bus/usb?/proc/bus/usb echo?"Loading?jbd.ko?module" insmod?/lib/jbd.ko echo?"Loading?ext3.ko?module" #?裝載?ext3?文件系統(tǒng) insmod?/lib/ext3.ko echo?"Loading?scsi_mod.ko?module" #?由于?Linux?是宏(單)內(nèi)核設(shè)計的,它把磁盤驅(qū)動做成了模塊。bootload?從?MBR?把內(nèi)核加 #?載到內(nèi)存展開并初始化,它首先要啟動init?進(jìn)程對系統(tǒng)的各項工作 #?進(jìn)行初始化操作。啟動init進(jìn)程,就需要把二進(jìn)制運(yùn)行程序/sbin/init,從磁盤中加載到內(nèi) #?存。就要從磁盤上讀取數(shù)據(jù)。但是?bootload?加載的內(nèi)核中沒有磁盤的驅(qū)動程序, #?所以就沒法從磁盤中讀取數(shù)據(jù)。所以?Linux?就使用了initrd-2.6.18-194.el5.img?把? #?scsi?磁盤驅(qū)動裝載進(jìn)來。 #?ext2文件系統(tǒng)是直接做進(jìn)內(nèi)核的,可以使用該方法來查看是否把?ext2?文件系統(tǒng)做進(jìn)了內(nèi)核 #?[root@node2?~]#?cat?/boot/config-2.6.18-194.el5?|?grep?-i?ext2 #?CONFIG_EXT2_FS=y???---->?值不為?m?,所以不是做成模塊的。 #?CONFIG_EXT2_FS_XATTR=y # #?上面也使用了?insmod?/lib/ex3.ko?把?ex3?文件系統(tǒng)裝載進(jìn)來了。GRUB?包含了磁盤的 #?分區(qū)表,所以這個時候內(nèi)核就可以訪問磁盤上的數(shù)據(jù)了。 insmod?/lib/scsi_mod.ko echo?"Loading?sd_mod.ko?module" insmod?/lib/sd_mod.ko echo?"Loading?scsi_transport_spi.ko?module" insmod?/lib/scsi_transport_spi.ko 。。。 echo?"Loading?dm-mem-cache.ko?module" insmod?/lib/dm-mem-cache.ko echo?"Loading?dm-mod.ko?module" insmod?/lib/dm-mod.ko echo?"Loading?dm-log.ko?module" insmod?/lib/dm-log.ko echo?"Loading?dm-region_hash.ko?module" insmod?/lib/dm-region_hash.ko echo?"Loading?dm-message.ko?module" insmod?/lib/dm-message.ko echo?"Loading?dm-raid45.ko?module" insmod?/lib/dm-raid45.ko echo?Waiting?for?driver?initialization. stabilized?--hash?--interval?1000?/proc/scsi/scsi mkblkdevs echo?Scanning?and?configuring?dmraid?supported?devices resume?LABEL=SWAP-sda3 #?創(chuàng)建?root?根設(shè)備,并以只讀方式掛載之。 echo?Creating?root?device. mkrootdev?-t?ext3?-o?defaults,ro?sda2 echo?Mounting?root?filesystem. mount?/sysroot echo?Setting?up?other?filesystems. setuproot #?切換至“根目錄”并啟動?init?進(jìn)程。 cho?Switching?to?new?root?and?running?init. switchroot說明:
????? 由于系統(tǒng)啟動的時候,只以只讀的方式掛載了 ”/“ 根目錄,根目錄存儲有系統(tǒng)啟動所需的各項工具,配置文件和鏈接庫。
?????? 對于Red Hat Enterprise Linux來說,其根文件系統(tǒng)必須至少包括/etc、/bin、/sbin、/bin和/dev等目錄,否則無法啟動。
?????? 所以,要注意我們裝系統(tǒng)劃分分區(qū)的時候,是不可以把 /etc、/bin、/sbin、/lib 、/dev 劃分為獨(dú)立的分區(qū)的。
轉(zhuǎn)載于:https://blog.51cto.com/9528du/1428127
總結(jié)
以上是生活随笔為你收集整理的从系统的启动过程分析,为什么我们划分分区的时候 /sbin 、/bin、/lib、/dev不能做为独立的分区?...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【高德地图API】那些年我们一起开发的A
- 下一篇: 查看字符集