技術討論區 > Embedded 討論版

[分享] 嵌入式檔案系統掛載架構 (一)

(1/3) > >>

thyme:
有人花了數萬元的學費,結果沒學到什麼,這次幫他惡補一下,
讓他心理平衡一下。因為手邊沒有他所要的詳細資料,僅能靠
記憶,所以會多花些功夫介紹其他的東西。

照上次規矩,先由大家熟悉的地方談起,再切入正題。首先來
看普通 PC 的檔案掛載

--- 代碼: ---
$ mount
/dev/hda2 /boot ext2 rw 0 0
/dev/hda1 / ext2 rw 0 0

--- 程式碼結尾 ---

其中 hda1 表示第一顆硬碟第一個分割區,hda2 則是第二個分割
區,如果不是 hda 而是 sda ,那就是 SCSI 硬碟,當然也有是
模擬成 SCSI 硬碟的,例如 USB Flash Disk。開機時,先由BIOS
叫起 bootloader(lilo或是grub),再由 bootloader 載入 kernel
及 root(/) 並交給它們執行。

清楚後,就方便講解其他的檔案掛載方式。再來我們要說的是一片
軟碟開機的檔案掛載方式,由於一片軟碟容量太小了(用今日的眼光
來看),所以一般人都先把檔案壓縮後才放入軟碟內,比較傳統做法
是在軟碟最最前面直接放入 Linux Kernel,接著放入壓縮後的檔案
系統,由 Kernel 負責開機,開機後,先開一個 Ram Disk,然後
Kernel 會把軟碟後面的資料解壓縮,並放入 Ram Disk ,再交由
Ram Disk 上的程式去完成最後開機的動作,完成開機後,最後看到
的 root(/) 就是掛在 /dev/ram 底下,而不是 /dev/hda1 之類的
了。那軟碟上的呢?當然就沒用了。

那網路開機呢?網路開機有好幾種方式,原理也類似,都是先由一個
程式,也許是 BIOS ,也許是 Floppy disk 上的小程式,跑起來後
,再上網載入 Kernel 及檔案系統,一般做法是把檔案系統放入
Ram Disk 上,也有做法是用 NFS 的方式,直接取之網路用之網路。

喝口水吧,下節課再談談 ARM 上常用的 DOC 。

V-ezlinux:
哇哈哈商業的嵌入式linux通常都只有boot  and image1~3個
沒有人會放tar.gz擋再上面巴! 假設您是有hd要放資料的由boot開機請不要理會/dev/hdX? 通常會開一個ramdisk來放部份file system 開完機下mount可以看到/dev/ram0 / ; /dev/ram1 /etc ; /dev/ram2 /hd ...目前看過這種覺得比較標準巴 rootfs / 也就是我說過整支程式靈魂要靠linuxrc ...or 改/usr/src/linux...... 裡的程式摟

thyme:

--- 引述: "V-ezlinux" ---通常會開一個ramdisk來放部份file system 開完機下mount可以看到/dev/ram0 / ; /dev/ram1 /etc ; /dev/ram2 /hd ...目前看過這種覺得比較標準巴
--- 引用結尾 ---


這做法有一個很大的缺點,會多佔一個 RAM disk 的空間,
而且還是解壓縮後的大檔案系統,我現在都不這麼做了。

V-ezlinux:
哇那您有啥新方法教一下巴!

jou:

--- 引述: "V-ezlinux" ---教一下巴!
--- 引用結尾 ---

呵~~
烤焦魚下巴!也很好吃!   : )~~~

導覽

[0] 文章列表

[#] 下頁

前往完整版本