mount initramfs 失敗 - Linux
By Jacob
at 2013-01-25T17:01
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 設定有錯嘛?
還請各位赐教,謝謝。
--
我自己在 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
By Oscar
at 2013-01-27T12:02
at 2013-01-27T12:02
By Frederica
at 2013-02-01T09:29
at 2013-02-01T09:29
By Vanessa
at 2013-02-05T23:27
at 2013-02-05T23:27
By Rosalind
at 2013-02-06T18:46
at 2013-02-06T18:46
By Necoo
at 2013-02-07T10:10
at 2013-02-07T10:10
By Regina
at 2013-02-07T12:02
at 2013-02-07T12:02
Related Posts
ubuntu 12.10 youtude亂碼問題
By Carol
at 2013-01-25T08:58
at 2013-01-25T08:58
請問一個進階的撥接問題
By Lydia
at 2013-01-25T07:33
at 2013-01-25T07:33
請問小筆電跑起來很頓正常嗎?
By Oliver
at 2013-01-25T00:02
at 2013-01-25T00:02
crontab時間設定
By Ursula
at 2013-01-24T17:20
at 2013-01-24T17:20
crontab時間設定
By Doris
at 2013-01-24T16:15
at 2013-01-24T16:15