- 論壇徽章:
- 0
|
linuxrc 詳解
2007-07-24 19:57做嵌入式根文件系統(tǒng)時,有l(wèi)inuxrc如下:
#!/bin/sh
echo "mount /etc as ramfs"
/bin/mount -n -t ramfs ramfs /etc
這里的ramfs是從哪兒來,做的根目錄沒有這個,掛這個的目的是干嗎
/bin/cp -a /mnt/etc/* /etc
echo "re-create the /etc/mtab entries"
# re-create the /etc/mtab entries
/bin/mount -f -t cramfs -o remount,ro /dev/bon/2 /
/bin/mount -f -t ramfs ramfs /etc
exec /sbin/init 這里是映象的還是根目錄下的?
-----------------------------------------------------------------------------------
內(nèi)核運(yùn)行時是不是會自己生成一個根文件系統(tǒng),通過linux command line找到*.cramfs,ram,romfs等
映象文件,再掛到內(nèi)核生成的根文件解構(gòu)下?
總是掛不上去,只能發(fā)現(xiàn)ram映象及其filetype
首先你要看懂這個linuxrc,
1. /bin/mount -n -t ramfs ramfs /etc
這句話的作用加載一個ramfs作為/etc目錄。這樣/etc就是一個可寫目錄。
看這個腳本,得出你的根文件系統(tǒng)是一個cramfs,是一個只讀文件系統(tǒng)中,而/etc作為系統(tǒng)運(yùn)行配置文件的存放地點,可能會寫一些運(yùn)行狀態(tài)在這里, linuxrc第一件事情就是將一個ramfs mount 到/etc只讀目錄中,使得/etc/目錄可寫,指定參數(shù) -n的目的是告訴mount不要寫/etc/mtab, 這個文件存放當(dāng)前系統(tǒng)mount了的所有文件系統(tǒng)中。 因為現(xiàn)在/etc/目錄還是只讀,所以這次mount不要寫這個文件,否則會失敗。
而你問到的 ramfs在哪里,這個在你的 /etc/fstab文件中應(yīng)該有ramfs一項, mount 會去找這項,如果沒有,mount會失敗。后面就執(zhí)行不下去。
2. /bin/cp -a /mnt/etc/* /etc
/etc成為可寫目錄后,將所有/mnt/etc中的配置文件拷貝到/etc/中,這說明你的ramfs可能是一個空的ramfs,沒有配置文件,或者配置文件比較老。 同時也說明你這個系統(tǒng)是一個只讀系統(tǒng),每次系統(tǒng)運(yùn)行中寫入的配置不會保留。
將以前mount的那些信息重新寫到/etc/mtab中,命令就是下面這些。
3. /bin/mount -f -t cramfs -o remount,ro /dev/bon/2 /
/bin/mount -f -t ramfs ramfs /etc
這些命令只是將這些mount信息寫到/etc/mtab中,不會實際去mount這些block device,說明你的根文件系統(tǒng)依然是以前的那個/dev/bon/2
4. exec /sbin/init
執(zhí)行根文件系統(tǒng)中的init執(zhí)行程序,使其成為1號進(jìn)程。shell正式運(yùn)行。
你的shell運(yùn)行不起來,可能是因為/etc/fstab有問題,注意看一下你的cramfs中的這個文件內(nèi)容是否正確。
腳本不全,無法做出更進(jìn)一步判斷。最好把你的腳本和cramfs中的文件結(jié)構(gòu)貼出來
本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u/27204/showart_422897.html |
|