修改 initrd 之後,發生錯誤。

我們生活周遭存在太多太多的 embedded system ,過去 embedded system 有專屬的 OS,現在 linux 也可以應用在嵌入式環境,不過本版將廣泛討論所有嵌入式系統不只 linux 喔,歡迎有這方面經驗或有興趣的朋友一同進來討論。

版主: chester

修改 initrd 之後,發生錯誤。

文章suskind » 週四 4月 26, 2007 6:07 am

小弟的 initd 檔案,取自於:

http://people.debian.org/~aurel32/arm-versatile/initrd.img-2.6.18-4-versatile

搭配 kernel image:

http://people.debian.org/~aurel32/arm-versatile/vmlinuz-2.6.18-4-versatile

可在 QEMU 之下,開機至 BusyBox

之後,一下列步驟,修改 initrd 檔案:

代碼: 選擇全部
$ file initrd.img-2.6.18-4-versatile


代碼: 選擇全部
initrd.img-2.6.18-4-versatile: gzip compressed data, from Unix, last modified: Tue Feb 13 08:29:53 2007, max compression


代碼: 選擇全部
$ cp initrd.img-2.6.18-4-versatile initrd.gz


代碼: 選擇全部
$ gunzip initrd.gz


代碼: 選擇全部
file initrd


代碼: 選擇全部
initrd: ASCII cpio archive (SVR4 with no CRC)


代碼: 選擇全部
mkdir mnt ; cd mnt


代碼: 選擇全部
cpio -idvm < ../initrd


代碼: 選擇全部
cd .. ; find mnt/ -print -depth | cpio -ov | gzip >initrd


代碼: 選擇全部
$ cp initrd initrd.img-2.6.18-4-versatile


之後,用 QEMU 按照正常程序開啟,出現下列錯誤訊息:

代碼: 選擇全部
No filesystem could mount root, tried: ext3 ext2 cramfs
Kernel panic - not syncing: VFS : Unable to mount root file system on unknown-block(8,1)


「我猜」,是製作 initrd 檔案時,方式錯了,請各位學長釋疑。 :-D
suskind
可愛的小學生
可愛的小學生
 
文章: 26
註冊時間: 週三 3月 01, 2006 8:19 am

文章suskind » 週四 4月 26, 2007 6:19 am

剛剛想說,既然在開機過程中「tried: ext3 ext2 cramfs」,那我就來試試:

代碼: 選擇全部
$ genext2fs -b 8192 -i 1024 -d mnt/ initrd


代碼: 選擇全部
$ file initrd


代碼: 選擇全部
initrd: Linux rev 0.0 ext2 filesystem data


代碼: 選擇全部
$ gzip initrd


代碼: 選擇全部
$ file initrd.gz


代碼: 選擇全部
initrd.gz: gzip compressed data, was "initrd", from Unix, last modified: Thu Apr 26 06:07:02 2007


代碼: 選擇全部
mv initrd.gz initrd.img-2.6.18-4-versatile


按照正常程式執行,結果為:

代碼: 選擇全部
VFS: Mount root (ext2 file system).
VFS: Can't open root device "sda1" or unknow-block(8,1)
Please append a correct "root=" boot option
Kernel panic - not syncing: VFS : Unable to mount root file system on unknown-block(8,1)


PS:
QEMU 執行代碼為:

代碼: 選擇全部
qemu-system-arm -M versatilepb -kernel vmlinuz-2.6.18-4-versatile -initrd initrd.img-2.6.18-4-versatile -hda hda.img -append "root=/dev/sda1"
suskind
可愛的小學生
可愛的小學生
 
文章: 26
註冊時間: 週三 3月 01, 2006 8:19 am

文章企鵝狂 » 週四 4月 26, 2007 9:24 am

http://wiki.openvz.org/Modifying_initrd_image

cpio 有很多種格式
用來開機的要用 cpio -H newc -o
newc格式才可以

ext2我就沒有試過了
不過我猜...他是說不能mount root.
而你給qemu的是 root=/dev/sda1
所以應該跟initrd沒什麼關係?
http://news.bbc.co.uk/1/hi/world/asia-pacific/country_profiles/1285915.stm


Country profile: Taiwan
Map of Taiwan
Taiwan is the island which has for all practical purposes been independent for half a century, but which China regards as a rebel region that must be reunited with the mainland - by force if necessary.
企鵝狂
活潑的高中生
活潑的高中生
 
文章: 477
註冊時間: 週三 3月 31, 2004 11:13 am
來自: 台灣共和國


回到 embedded system

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客

cron