[問題] mount initramfs 失敗

看板Linux作者 (GEEK)時間13年前 (2013/01/25 17:01), 編輯推噓0(008)
留言8則, 2人參與, 最新討論串1/1
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 設定有錯嘛? 還請各位赐教,謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.251.70.82

01/25 22:57, , 1F
你如果是用initramfs,為什麼還要再去mount他呢?
01/25 22:57, 1F

01/25 22:57, , 2F
一進到userspace時就在你產生的initramfs裡了啊
01/25 22:57, 2F

01/25 22:58, , 3F
cpio格式的ramfs己經和/dev/ramX無關了
01/25 22:58, 3F

01/25 23:02, , 5F
ramfs-rootfs-initramfs.txt
01/25 23:02, 5F

01/29 14:15, , 6F
謝謝您的說明,我在去爬文試試看
01/29 14:15, 6F

01/29 18:22, , 7F
我成功了,使用 qemu-system-x86_64 測試可以正常開機
01/29 18:22, 7F

01/29 18:23, , 8F
改天我在 PO 文分享....
01/29 18:23, 8F
文章代碼(AID): #1H0adZVc (Linux)