關於開機流程的問題請教



贊助商連結


b90220208
2008-11-04, 11:06 PM
:D 關於開機流程:

BIOS ->
-> MBR
-> Kernel
-> initial ramdisk
-> root filesystem(ro)
-> init
-> /etc/rc.d/rc.sysint
-> /etc/rc.d/init.d/*

請教

1.)
root filesystem(ro) 的作用( 為何在此要 mount 起 / 且還是 read only 呢? )

2.)
initial ramdisk
google 查得的結果多用來驅動 SCSI 硬碟用(當然不只此)...請教為何這些硬體得在此先驅動呢?


謝謝 !

贊助商連結


bx2aa
2008-11-05, 01:42 AM
:D 關於開機流程:

BIOS ->
-> MBR
-> Kernel
-> initial ramdisk
-> root filesystem(ro)
-> init
-> /etc/rc.d/rc.sysint
-> /etc/rc.d/init.d/*

請教

1.)
root filesystem(ro) 的作用( 為何在此要 mount 起 / 且還是 read only 呢? )

2.)
initial ramdisk
google 查得的結果多用來驅動 SCSI 硬碟用(當然不只此)...請教為何這些硬體得在此先驅動呢?


謝謝 !
因為只是要讀 initrd 的 image 所以用 ro mount 起來就好了.

把 initrd.img 讀出來要放哪裡?

wangcm
2008-11-05, 08:06 AM
1.)
root filesystem(ro) 的作用( 為何在此要 mount 起 / 且還是 read only 呢? )

因為root file system有可能必須fsck,而系統的utility都是放在root file system內的(i.e.非mount起來才讀得到),mount成rw又不能fsck,所以只有mount成ro了:D ....



2.)
initial ramdisk
google 查得的結果多用來驅動 SCSI 硬碟用(當然不只此)...請教為何這些硬體得在此先驅動呢?

謝謝 !

initrd通常是拿來放storage/file system相關module的,這部份若沒有static link進kernel中kernel又要如何mount file system呢,所以要先把這堆東東包成kernel一定讀得到的格式讓kernel有module可用,接下來才有戲唱就是了:D :D ....

b90220208
2008-11-05, 04:40 PM
Thanks#


把 initrd.img 讀出來要放哪裡?
...不是 RAM 中嗎

若是要讀 /boot 中 initrd 的 image , 那麼開機流程順序為何是
initial ramdisk ->-> root filesystem(ro) 呢?

b90220208
2008-11-05, 05:16 PM
感謝#

initrd通常是拿來放storage/file system相關module的,這部份若沒有static link進kernel中kernel又要如何mount file system呢,所以要先把這堆東東包成kernel一定讀得到的格式讓kernel有module可用,接下來才有戲唱就是了:D :D ....

這些 scsi, sata, usb 等的 driver 為何要先行於此驅動...其道理是...?
若以例如網卡的方式( /etc/modprobe.conf ) 驅動不是亦為可行嗎?

wangcm
2008-11-05, 06:03 PM
感謝#


這些 scsi, sata, usb 等的 driver 為何要先行於此驅動...其道理是...?
若以例如網卡的方式( /etc/modprobe.conf ) 驅動不是亦為可行嗎?

如果不知道怎麼驅動storage,要怎麼mount在storage上的root file system呢----因為此時kernel根本是沒辦法讀到放在root file system中的module的:sleep: ....BTW,如果root file system是在USB或NFS上,那當然也得先把USB/networking動起來才有得玩,如果不是這樣的話initrd要不要包USB/networking相關部份自然就無所謂了:sleep: ....

PS:kernel之所以非靠storage相關module才能mount root file system,是因為只要loader載入kernel image,kernel initial起來之後對kernel而言BIOS就等於不存在了,so:sleep: :sleep: ....

bx2aa
2008-11-06, 01:48 AM
Thanks#

...不是 RAM 中嗎

若是要讀 /boot 中 initrd 的 image , 那麼開機流程順序為何是
initial ramdisk ->-> root filesystem(ro) 呢?

google 查到 vm vmlinuz
vmlinuz 是可執行的 LINUX Kernel
vm 是把硬碟當記憶體

當執行完 Kernel 後, 要靠把 initrd.img 虛擬為檔案系統, 然後透過 initrd.img 裏面的 linuxrc 去載入模組.

RHEL 4 裏面說的 開機流程 是
BIOS
MBR
kernel ------>mount / ro 會用到 / 下的 /etc /bin /sbin /dev /lib
init 再依 RunLevel 去執行要開啟哪些檔案; 直到設定 hostname 後, 再 remount / 為 rw

我修改我的 initrd.img 把 linuxrc 裏的 load ext3 module 註解掉.
可想而知 當然開不起來 .
http://www.pczone.com.tw/attachment.php?attachmentid=16114&stc=1&d=1225907315
man mkinitrd