mount initramfs 失敗 - Linux

Jacob avatar
By Jacob
at 2013-01-25T17:01

Table of Contents

Greeting ,
我自己在 USB 中建立一個開機的系統(我不要使用 Livecd 的方式或者其他工具)
這個系統使用的是 Ubuntu 的套件,所我要自己

1. 劃分磁區
2. 安裝 Bootloader (Grub2)
3. 編譯安裝核心
4. 編譯安裝 root fs

以上都已經成功,說明如下:
----------------------------------------------
我成功的編譯 3.2.37 的 bzImage , 也成功的安裝好 grub2 ,
同時我也下載 ubuntu 12.04 的 rootfs,下載方式:

sudo debootstrap --arch=i386 --variant=minbase precise
/mnt/build/i386/ubuntu_12.04/ http://us.archive.ubuntu.com/ubuntu/

我使用過 chroot ,確認這個 rootfs 是可以工作的,如下:

mount -o bind /proc /mnt/build/i386/ubuntu_12.04/proc/
chroot /mnt/build/i386/ubuntu_12.04

現在我要將這個 rootfs 建立成為 initramfs ,指令:

find . | sudo cpio --format=newc -ov > ../rootfs.cpio.gz

好,現在我將這個檔案複製到 /dev/sdb1 (我的 USB 的第一個分割區)
這時我在去設定 grub config :

set root=(hd0,1)
menuentry "Ubuntu" {
linux /boot/bzImage rootfstype=ext4
root=/dev/ram0 real_root=/dev/sda1
initrd /rootfs.cpio.gz
}

然後我使用 sudo qemu-system-x86_64 -usb /dev/sdb 測試開機。
kernel 可以成功啟動,然後 kernel 會將剛剛的檔案解壓縮到 ram 中,
但是要執行 mount root時就失掉了,
我去追蹤了一下,死在 do_mount_root函數中的

int err = sys_mount(name, "/root", fs, flags, data);

這個函數是被 mount_block_root 函數所呼叫的,
我發現他傳入的 name是: /dev/root。可使我已經在 bootloader 中
傳入 root=/dev/ram0
為什麼還是去 mount /dev/root 呢?
請問是不是我什麼地方沒有做對 ? 難道 grub2 config 設定有錯嘛?

還請各位赐教,謝謝。



--
Tags: Linux

All Comments

Oscar avatar
By Oscar
at 2013-01-27T12:02
你如果是用initramfs,為什麼還要再去mount他呢?
一進到userspace時就在你產生的initramfs裡了啊
Frederica avatar
By Frederica
at 2013-02-01T09:29
cpio格式的ramfs己經和/dev/ramX無關了
Vanessa avatar
By Vanessa
at 2013-02-05T23:27
https://www.kernel.org/doc/Documentation/filesystems/
ramfs-rootfs-initramfs.txt
Rosalind avatar
By Rosalind
at 2013-02-06T18:46
謝謝您的說明,我在去爬文試試看
Necoo avatar
By Necoo
at 2013-02-07T10:10
我成功了,使用 qemu-system-x86_64 測試可以正常開機
Regina avatar
By Regina
at 2013-02-07T12:02
改天我在 PO 文分享....

ubuntu 12.10 youtude亂碼問題

Carol avatar
By Carol
at 2013-01-25T08:58
用的版本是ubuntu 12.10 用chrome看youtude,開頭有廣告可以按下跳過時 都是一個方格裡面打插插 不知要如何解決亂碼問題,謝謝 - ...

請問一個進階的撥接問題

Lydia avatar
By Lydia
at 2013-01-25T07:33
系統:Debian 系列 問題: 原本 ADSL 撥接可以使用軟體 pppoeconf 來設定。 假定我不使用這個軟體來設定, 那要如何使用更為手動的方式來設定撥接上網呢? 也就是說,帳號、密碼要怎麼設定?(中華電信) - ...

請問小筆電跑起來很頓正常嗎?

Oliver avatar
By Oliver
at 2013-01-25T00:02
我有一台Z530的小筆電,RAM 2G。 從沒用過linux,心血來潮灌了ubuntu 12.10,因為聽說linux比較省資源。 但是灌好後,我的小筆電跑的超慢... 一頓一頓的。 害我都沒辦法嘗試各種新功能。 想說是不是因為視覺特效的關係,卻也找不到地方調整。 想請問是我的小筆電太差了,還是有哪些設定我 ...

crontab時間設定

Ursula avatar
By Ursula
at 2013-01-24T17:20
You can try this one. * 9-13/1 * * * Shell_Command Man 5 crontabl for more detial $andgt; man 5 crontab EXAMPLE CRON FILE # use /bin/sh to run co ...

crontab時間設定

Doris avatar
By Doris
at 2013-01-24T16:15
大家好 最近想要設一個crontab,但要設的時間點有點問題~ 想設的時間點是: 早上九點到中午一點半,每一小時執行一次 請問有辨法用一行就可以設定嗎? - ...