作者 主題: 檔案系統的觀念  (閱讀 3965 次)

0 會員 與 1 訪客 正在閱讀本文。

apachectl

  • 憂鬱的高中生
  • ***
  • 文章數: 174
    • 檢視個人資料
檔案系統的觀念
« 於: 2008-03-27 16:56 »
雖然學linux 已經兩三年了,但最近突然想到一個我百思不解的問題,像在將檔案系統進行掛載時,那個掛載點是存在於哪裡呢?比如 /dev/hda2 分割區我打算把它掛到根目錄,那還沒掛之前,此根目錄是存在於哪裡呢 ?


harrier

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 1856
  • 性別: 男
    • 檢視個人資料
    • 國屬武裝兵
回覆: 檔案系統的觀念
« 回覆 #1 於: 2008-03-28 01:18 »
雖然學linux 已經兩三年了,但最近突然想到一個我百思不解的問題,像在將檔案系統進行掛載時,那個掛載點是存在於哪裡呢?比如 /dev/hda2 分割區我打算把它掛到根目錄,那還沒掛之前,此根目錄是存在於哪裡呢 ?

在 initrd 裡面...
http://www.ibm.com/developerworks/library/l-linuxboot/index.html
不過記得 bzImage 裡面如果需要用到的 driver 都已經 compile 進 kernel,就可以不需要 initrd。
太久沒編 kernel 了,忘了...
...90Net(90:1200/1203),GameNET(99:700/707),ALLNet(92:9200/3111),InfoNet(30:100/103)..MaximusCBCS(浮懷),AirNet,TenderNet,StormNet,FidoNet...
<<- www.nas.vg ->>

apachectl

  • 憂鬱的高中生
  • ***
  • 文章數: 174
    • 檢視個人資料
回覆: 檔案系統的觀念
« 回覆 #2 於: 2008-03-29 06:48 »
那光碟救援模式裡的 /mnt/sysimage 也是在 initrd 裡嗎 ?
如果是的話,兩者有何差別呢 ?
從硬碟開機時,/ 分割區一定要先掛載,剩下才可掛,但救援模式中,/ 分割區沒掛載時,其他分割區可以被掛載,為何可這樣呢?

ohmygod

  • 活潑的大學生
  • ***
  • 文章數: 210
    • 檢視個人資料
回覆: 檔案系統的觀念
« 回覆 #3 於: 2008-03-30 13:40 »
這讓我想到一個問題,在以前ext2時代,如果無甚麼特殊需求,不要用initrd也行,那像這個時候,原本的/ 分割區在還沒掛載前,/ 目錄還是存在於 initrd內嗎? 這是我所懷疑的地方。我是覺得跟 VFS  應該有所關聯。
« 上次編輯: 2008-03-30 13:42 由 ohmygod »

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17474
    • 檢視個人資料
    • http://www.study-area.org
回覆: 檔案系統的觀念
« 回覆 #4 於: 2008-03-30 20:06 »
那光碟救援模式裡的 /mnt/sysimage 也是在 initrd 裡嗎 ?
如果是的話,兩者有何差別呢 ?
從硬碟開機時,/ 分割區一定要先掛載,剩下才可掛,但救援模式中,/ 分割區沒掛載時,其他分割區可以被掛載,為何可這樣呢?
不是,/mnt/sysimage 是在 rescue 環境下,將找到的 / 目錄,掛載到 /mnt/sysimage 的。
那與 initrd 一點關係都沒有。

只要你有一個可運作的系統,就能將所有找到的 file system 掛到指定的目錄去。

apachectl

  • 憂鬱的高中生
  • ***
  • 文章數: 174
    • 檢視個人資料
回覆: 檔案系統的觀念
« 回覆 #5 於: 2008-03-30 20:51 »
不是,/mnt/sysimage 是在 rescue 環境下,將找到的 / 目錄,掛載到 /mnt/sysimage 的。
那與 initrd 一點關係都沒有。

只要你有一個可運作的系統,就能將所有找到的 file system 掛到指定的目錄去。
大大所謂的 / 目錄是指 root partition 嗎? 如果是的話,那在還沒將 root partition 掛載至 /mnt/sysimage 之前,這個 /mnt/sysimage 是從哪裡產生的?

jlovet

  • 憂鬱的高中生
  • ***
  • 文章數: 126
    • 檢視個人資料
回覆: 檔案系統的觀念
« 回覆 #6 於: 2008-03-30 22:36 »
你可以去看kernel source code 的 init/do_mounts.c 這個檔案
裡面蠻清楚的

例如這個東西
name_to_dev_t
是把你開機傳進來的參數 root=/dev/hda0 像這樣, 把hda0轉成 hd(0,0)之類的東西 (後面是不是真的是0,0 我忘了,很久沒有用linux了...)

如果你grub給錯參數,他不是就會說,不能掛載root filesystem (X,X)之類的錯誤訊息。

所以,他不是真的有去找 /dev/hdX 這個檔案的...

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17474
    • 檢視個人資料
    • http://www.study-area.org
回覆: 檔案系統的觀念
« 回覆 #7 於: 2008-03-30 23:01 »
大大所謂的 / 目錄是指 root partition 嗎? 如果是的話,那在還沒將 root partition 掛載至 /mnt/sysimage 之前,這個 /mnt/sysimage 是從哪裡產生的?
在 ram disk 裡面。

ohmygod

  • 活潑的大學生
  • ***
  • 文章數: 210
    • 檢視個人資料
回覆: 檔案系統的觀念
« 回覆 #8 於: 2008-03-31 16:12 »
那光碟救援模式裡的 /mnt/sysimage 也是在 initrd 裡嗎 ?
如果是的話,兩者有何差別呢 ?
從硬碟開機時,/ 分割區一定要先掛載,剩下才可掛,但救援模式中,/ 分割區沒掛載時,其他分割區可以被掛載,為何可這樣呢?
以下存屬小弟的見解,也可講猜測。
從硬碟開機時,initrd 裡的init 最後會 switchroot 至 real root fs,並把 real root fs 的 / mount 成 linux VFS 的 /。
而使用光碟 rescue mode 時,會把rescue 中所需的一些必要檔案放到 ram 中的小型linux 操作環境,並嘗試把real root fs 的 /  mount 至 ram 中暫時的 /mnt/sysimage,如果 mount 失敗還是可以在rescue環境中操作基本指令。

apachectl

  • 憂鬱的高中生
  • ***
  • 文章數: 174
    • 檢視個人資料
回覆: 檔案系統的觀念
« 回覆 #9 於: 2008-04-04 10:42 »
linux 真是博大精深啊,這幾天到 google 找 VFS 的相關資料,有點給他有看沒有懂,可能要等到哪天我懂 kernel source 之後才有辦法理解吧 !