Преглед на файлове

board/qemu: ensure root is available before mounting it

On my machine, it happens once in a while that the virtualised machine
boots too fast for the rootfs to be available at the time the kernel
tries to mount it.

For example, board/qemu/arm-vexpress/readme.txt suggested changing
"-smp 1" up to "-smp 4". But doing so here causes a kernel panic:

    VFS: Cannot open root device "mmcblk0" or unknown-block(0,0): error -6
    Please append a correct "root=" boot option; here are the available partitions:
    1f00          131072 mtdblock0
     (driver?)
    1f01           32768 mtdblock1
     (driver?)
    Kernel panic - not syncing: VFS: Unable to mount root fs on
    unknown-block(0,0)

So, add the oh-so-useful 'rootwait' option to all kernel command lines
for qemu defconfigs.

Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Cc: Joel Stanley <joel@jms.id.au>
Cc: Mark Corbin <mark.corbin@embecosm.com>
Cc: Matt Weber <matthew.weber@rockwellcollins.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
(cherry picked from commit 626c9705d29ec93610e87517aee771c2ea500f5d)
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Yann E. MORIN преди 6 години
родител
ревизия
c1d79dbc41

+ 1 - 1
board/qemu/aarch64-virt/readme.txt

@@ -1,6 +1,6 @@
 Run the emulation with:
 Run the emulation with:
 
 
-  qemu-system-aarch64 -M virt -cpu cortex-a53 -nographic -smp 1 -kernel output/images/Image -append "root=/dev/vda console=ttyAMA0" -netdev user,id=eth0 -device virtio-net-device,netdev=eth0 -drive file=output/images/rootfs.ext4,if=none,format=raw,id=hd0 -device virtio-blk-device,drive=hd0
+  qemu-system-aarch64 -M virt -cpu cortex-a53 -nographic -smp 1 -kernel output/images/Image -append "rootwait root=/dev/vda console=ttyAMA0" -netdev user,id=eth0 -device virtio-net-device,netdev=eth0 -drive file=output/images/rootfs.ext4,if=none,format=raw,id=hd0 -device virtio-blk-device,drive=hd0
 
 
 The login prompt will appear in the terminal that started Qemu.
 The login prompt will appear in the terminal that started Qemu.
 
 

+ 1 - 1
board/qemu/arm-versatile/readme.txt

@@ -1,6 +1,6 @@
 Run the emulation with:
 Run the emulation with:
 
 
-  qemu-system-arm -M versatilepb -kernel output/images/zImage -dtb output/images/versatile-pb.dtb -drive file=output/images/rootfs.ext2,if=scsi,format=raw -append "root=/dev/sda console=ttyAMA0,115200" -serial stdio -net nic,model=rtl8139 -net user
+  qemu-system-arm -M versatilepb -kernel output/images/zImage -dtb output/images/versatile-pb.dtb -drive file=output/images/rootfs.ext2,if=scsi,format=raw -append "rootwait root=/dev/sda console=ttyAMA0,115200" -serial stdio -net nic,model=rtl8139 -net user
 
 
 Or for the noMMU emulation:
 Or for the noMMU emulation:
 
 

+ 1 - 1
board/qemu/arm-vexpress/readme.txt

@@ -1,6 +1,6 @@
 Run the emulation with:
 Run the emulation with:
 
 
-  qemu-system-arm -M vexpress-a9 -smp 1 -m 256 -kernel output/images/zImage -dtb output/images/vexpress-v2p-ca9.dtb -drive file=output/images/rootfs.ext2,if=sd,format=raw -append "console=ttyAMA0,115200 root=/dev/mmcblk0" -serial stdio -net nic,model=lan9118 -net user
+  qemu-system-arm -M vexpress-a9 -smp 1 -m 256 -kernel output/images/zImage -dtb output/images/vexpress-v2p-ca9.dtb -drive file=output/images/rootfs.ext2,if=sd,format=raw -append "console=ttyAMA0,115200 rootwait root=/dev/mmcblk0" -serial stdio -net nic,model=lan9118 -net user
 
 
 The login prompt will appear in the terminal that started Qemu. The
 The login prompt will appear in the terminal that started Qemu. The
 graphical window is the framebuffer.
 graphical window is the framebuffer.

+ 1 - 1
board/qemu/m68k-q800/readme.txt

@@ -1,6 +1,6 @@
 Run the emulation with:
 Run the emulation with:
 
 
- qemu-system-m68k -M q800 -kernel output/images/vmlinux -nographic -drive file=output/images/rootfs.ext2,format=raw -append "root=/dev/sda console=ttyS0"
+ qemu-system-m68k -M q800 -kernel output/images/vmlinux -nographic -drive file=output/images/rootfs.ext2,format=raw -append "rootwait root=/dev/sda console=ttyS0"
 
 
 The login prompt will appear in the terminal that started Qemu.
 The login prompt will appear in the terminal that started Qemu.
 
 

+ 1 - 1
board/qemu/mips32r2-malta/readme.txt

@@ -1,6 +1,6 @@
 Run the emulation with:
 Run the emulation with:
 
 
- qemu-system-mips -M malta -kernel output/images/vmlinux -serial stdio -drive file=output/images/rootfs.ext2,format=raw -append "root=/dev/hda" -net nic,model=pcnet -net user
+ qemu-system-mips -M malta -kernel output/images/vmlinux -serial stdio -drive file=output/images/rootfs.ext2,format=raw -append "rootwait root=/dev/hda" -net nic,model=pcnet -net user
 
 
 The login prompt will appear in the terminal that started Qemu. The
 The login prompt will appear in the terminal that started Qemu. The
 graphical window is the framebuffer. No keyboard support has been
 graphical window is the framebuffer. No keyboard support has been

+ 1 - 1
board/qemu/mips32r2el-malta/readme.txt

@@ -1,6 +1,6 @@
 Run the emulation with:
 Run the emulation with:
 
 
- qemu-system-mipsel -M malta -kernel output/images/vmlinux -serial stdio -drive file=output/images/rootfs.ext2,format=raw -append "root=/dev/hda" -net nic,model=pcnet -net user
+ qemu-system-mipsel -M malta -kernel output/images/vmlinux -serial stdio -drive file=output/images/rootfs.ext2,format=raw -append "rootwait root=/dev/hda" -net nic,model=pcnet -net user
 
 
 The login prompt will appear in the terminal that started Qemu. The
 The login prompt will appear in the terminal that started Qemu. The
 graphical window is the framebuffer. No keyboard support has been
 graphical window is the framebuffer. No keyboard support has been

+ 1 - 1
board/qemu/mips32r6-malta/readme.txt

@@ -1,6 +1,6 @@
 Run the emulation with:
 Run the emulation with:
 
 
-qemu-system-mips -M malta -cpu mips32r6-generic -kernel output/images/vmlinux -drive file=output/images/rootfs.ext2,format=raw -append "root=/dev/hda" -nographic
+qemu-system-mips -M malta -cpu mips32r6-generic -kernel output/images/vmlinux -drive file=output/images/rootfs.ext2,format=raw -append "rootwait root=/dev/hda" -nographic
 
 
 The login prompt will appear in the terminal that started Qemu.
 The login prompt will appear in the terminal that started Qemu.
 
 

+ 1 - 1
board/qemu/mips32r6el-malta/readme.txt

@@ -1,6 +1,6 @@
 Run the emulation with:
 Run the emulation with:
 
 
-qemu-system-mipsel -M malta -cpu mips32r6-generic -kernel output/images/vmlinux -drive file=output/images/rootfs.ext2,format=raw -append "root=/dev/hda" -net nic,model=pcnet -net user -nographic
+qemu-system-mipsel -M malta -cpu mips32r6-generic -kernel output/images/vmlinux -drive file=output/images/rootfs.ext2,format=raw -append "rootwait root=/dev/hda" -net nic,model=pcnet -net user -nographic
 
 
 The login prompt will appear in the terminal that started Qemu.
 The login prompt will appear in the terminal that started Qemu.
 
 

+ 1 - 1
board/qemu/mips64-malta/readme.txt

@@ -1,6 +1,6 @@
 Run the emulation with:
 Run the emulation with:
 
 
- qemu-system-mips64 -M malta -kernel output/images/vmlinux -serial stdio -drive file=output/images/rootfs.ext2,format=raw -append "root=/dev/hda"
+ qemu-system-mips64 -M malta -kernel output/images/vmlinux -serial stdio -drive file=output/images/rootfs.ext2,format=raw -append "rootwait root=/dev/hda"
 
 
 The login prompt will appear in the terminal that started Qemu. The
 The login prompt will appear in the terminal that started Qemu. The
 graphical window is the framebuffer.
 graphical window is the framebuffer.

+ 1 - 1
board/qemu/mips64el-malta/readme.txt

@@ -1,6 +1,6 @@
 Run the emulation with:
 Run the emulation with:
 
 
- qemu-system-mips64el -M malta -kernel output/images/vmlinux -serial stdio -drive file=output/images/rootfs.ext2,format=raw -append "root=/dev/hda"
+ qemu-system-mips64el -M malta -kernel output/images/vmlinux -serial stdio -drive file=output/images/rootfs.ext2,format=raw -append "rootwait root=/dev/hda"
 
 
 The login prompt will appear in the terminal that started Qemu. The
 The login prompt will appear in the terminal that started Qemu. The
 graphical window is the framebuffer.
 graphical window is the framebuffer.

+ 1 - 1
board/qemu/mips64r6-malta/readme.txt

@@ -1,6 +1,6 @@
 Run the emulation with:
 Run the emulation with:
 
 
- qemu-system-mips64 -M malta -cpu I6400 -kernel output/images/vmlinux -drive file=output/images/rootfs.ext2,format=raw -append "root=/dev/hda" -nographic
+ qemu-system-mips64 -M malta -cpu I6400 -kernel output/images/vmlinux -drive file=output/images/rootfs.ext2,format=raw -append "rootwait root=/dev/hda" -nographic
 
 
 The login prompt will appear in the terminal that started Qemu.
 The login prompt will appear in the terminal that started Qemu.
 
 

+ 1 - 1
board/qemu/mips64r6el-malta/readme.txt

@@ -1,6 +1,6 @@
 Run the emulation with:
 Run the emulation with:
 
 
- qemu-system-mips64el -M malta -cpu I6400 -kernel output/images/vmlinux -drive file=output/images/rootfs.ext2,format=raw -append "root=/dev/hda" -nographic
+ qemu-system-mips64el -M malta -cpu I6400 -kernel output/images/vmlinux -drive file=output/images/rootfs.ext2,format=raw -append "rootwait root=/dev/hda" -nographic
 
 
 The login prompt will appear in the terminal that started Qemu.
 The login prompt will appear in the terminal that started Qemu.
 
 

+ 1 - 1
board/qemu/ppc-g3beige/readme.txt

@@ -1,6 +1,6 @@
 Run the emulation with:
 Run the emulation with:
 
 
-  qemu-system-ppc -M g3beige -kernel output/images/vmlinux -drive file=output/images/rootfs.ext2,format=raw -append "console=ttyS0 root=/dev/hda" -serial stdio -net nic,model=rtl8139 -net user
+  qemu-system-ppc -M g3beige -kernel output/images/vmlinux -drive file=output/images/rootfs.ext2,format=raw -append "console=ttyS0 rootwait root=/dev/hda" -serial stdio -net nic,model=rtl8139 -net user
 
 
 The login prompt will appear in the terminal that started Qemu. The
 The login prompt will appear in the terminal that started Qemu. The
 graphical window is the framebuffer.
 graphical window is the framebuffer.

+ 1 - 1
board/qemu/ppc64-e5500/readme.txt

@@ -1,6 +1,6 @@
 Run the emulation with:
 Run the emulation with:
 
 
- qemu-system-ppc64 -M ppce500 -cpu e5500 -m 256 -kernel output/images/uImage -drive file=output/images/rootfs.ext2,if=virtio,format=raw -append "console=ttyS0 root=/dev/vda" -serial mon:stdio -nographic
+ qemu-system-ppc64 -M ppce500 -cpu e5500 -m 256 -kernel output/images/uImage -drive file=output/images/rootfs.ext2,if=virtio,format=raw -append "console=ttyS0 rootwait root=/dev/vda" -serial mon:stdio -nographic
 
 
 The login prompt will appear in the terminal that started Qemu.
 The login prompt will appear in the terminal that started Qemu.
 
 

+ 1 - 1
board/qemu/ppc64-pseries/readme.txt

@@ -1,6 +1,6 @@
 Run the emulation with:
 Run the emulation with:
 
 
- qemu-system-ppc64 -M pseries -cpu POWER7 -m 256 -kernel output/images/vmlinux -append "console=hvc0 root=/dev/sda" -drive file=output/images/rootfs.ext2,if=scsi,index=0,format=raw -serial stdio -display curses
+ qemu-system-ppc64 -M pseries -cpu POWER7 -m 256 -kernel output/images/vmlinux -append "console=hvc0 rootwait root=/dev/sda" -drive file=output/images/rootfs.ext2,if=scsi,index=0,format=raw -serial stdio -display curses
 
 
 The login prompt will appear in the terminal that started Qemu.
 The login prompt will appear in the terminal that started Qemu.
 
 

+ 1 - 1
board/qemu/ppc64le-pseries/readme.txt

@@ -1,6 +1,6 @@
 Run the emulation with:
 Run the emulation with:
 
 
-qemu-system-ppc64 -M pseries -cpu POWER8 -m 256 -kernel output/images/vmlinux -append "console=hvc0 root=/dev/sda" -drive file=output/images/rootfs.ext2,if=scsi,index=0,format=raw -serial stdio -display curses
+qemu-system-ppc64 -M pseries -cpu POWER8 -m 256 -kernel output/images/vmlinux -append "console=hvc0 rootwait root=/dev/sda" -drive file=output/images/rootfs.ext2,if=scsi,index=0,format=raw -serial stdio -display curses
 
 
 The login prompt will appear in the terminal window.
 The login prompt will appear in the terminal window.
 
 

+ 1 - 1
board/qemu/riscv32-virt/readme.txt

@@ -1,6 +1,6 @@
 Run Linux in emulation with:
 Run Linux in emulation with:
 
 
-  qemu-system-riscv32 -M virt -kernel output/images/fw_jump.elf -device loader,file=output/images/Image,addr=0x80400000 -append "root=/dev/vda ro" -drive file=output/images/rootfs.ext2,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 -netdev user,id=net0 -device virtio-net-device,netdev=net0 -nographic
+  qemu-system-riscv32 -M virt -kernel output/images/fw_jump.elf -device loader,file=output/images/Image,addr=0x80400000 -append "rootwait root=/dev/vda ro" -drive file=output/images/rootfs.ext2,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 -netdev user,id=net0 -device virtio-net-device,netdev=net0 -nographic
 
 
 The login prompt will appear in the terminal that started Qemu.
 The login prompt will appear in the terminal that started Qemu.
 
 

+ 1 - 1
board/qemu/riscv64-virt/readme.txt

@@ -1,6 +1,6 @@
 Run Linux in emulation with:
 Run Linux in emulation with:
 
 
-  qemu-system-riscv64 -M virt -kernel output/images/fw_jump.elf -device loader,file=output/images/Image,addr=0x80200000 -append "root=/dev/vda ro" -drive file=output/images/rootfs.ext2,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 -netdev user,id=net0 -device virtio-net-device,netdev=net0 -nographic
+  qemu-system-riscv64 -M virt -kernel output/images/fw_jump.elf -device loader,file=output/images/Image,addr=0x80200000 -append "rootwait root=/dev/vda ro" -drive file=output/images/rootfs.ext2,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 -netdev user,id=net0 -device virtio-net-device,netdev=net0 -nographic
 
 
 The login prompt will appear in the terminal that started Qemu.
 The login prompt will appear in the terminal that started Qemu.
 
 

+ 1 - 1
board/qemu/sh4-r2d/readme.txt

@@ -1,6 +1,6 @@
 Run the emulation with:
 Run the emulation with:
 
 
-  qemu-system-sh4 -M r2d -kernel output/images/zImage -drive file=output/images/rootfs.ext2,if=ide,format=raw -append "root=/dev/sda console=ttySC1,115200 noiotrap" -serial null -serial stdio -net nic,model=rtl8139 -net user
+  qemu-system-sh4 -M r2d -kernel output/images/zImage -drive file=output/images/rootfs.ext2,if=ide,format=raw -append "rootwait root=/dev/sda console=ttySC1,115200 noiotrap" -serial null -serial stdio -net nic,model=rtl8139 -net user
 
 
 The login prompt will appear in the terminal that started Qemu.
 The login prompt will appear in the terminal that started Qemu.
 The graphical window is the framebuffer.
 The graphical window is the framebuffer.

+ 1 - 1
board/qemu/sh4eb-r2d/readme.txt

@@ -1,6 +1,6 @@
 Run the emulation with:
 Run the emulation with:
 
 
-  qemu-system-sh4eb -M r2d -kernel output/images/zImage -drive file=output/images/rootfs.ext2,if=ide,format=raw -append "root=/dev/sda console=ttySC1,115200 noiotrap" -serial null -serial stdio -net nic,model=rtl8139 -net user
+  qemu-system-sh4eb -M r2d -kernel output/images/zImage -drive file=output/images/rootfs.ext2,if=ide,format=raw -append "rootwait root=/dev/sda console=ttySC1,115200 noiotrap" -serial null -serial stdio -net nic,model=rtl8139 -net user
 
 
 The login prompt will appear in the terminal that started Qemu.
 The login prompt will appear in the terminal that started Qemu.
 The graphical window is the framebuffer.
 The graphical window is the framebuffer.

+ 1 - 1
board/qemu/sparc-ss10/readme.txt

@@ -1,6 +1,6 @@
 Run the emulation with:
 Run the emulation with:
 
 
-  qemu-system-sparc -M SS-10 -kernel output/images/zImage -drive file=output/images/rootfs.ext2,format=raw -append "root=/dev/sda console=ttyS0,115200" -serial stdio -net nic,model=lance -net user
+  qemu-system-sparc -M SS-10 -kernel output/images/zImage -drive file=output/images/rootfs.ext2,format=raw -append "rootwait root=/dev/sda console=ttyS0,115200" -serial stdio -net nic,model=lance -net user
 
 
 The login prompt will appear in the terminal that started Qemu.
 The login prompt will appear in the terminal that started Qemu.
 
 

+ 1 - 1
board/qemu/sparc64-sun4u/readme.txt

@@ -1,6 +1,6 @@
 Run the emulation with:
 Run the emulation with:
 
 
-  qemu-system-sparc64 -M sun4u -kernel output/images/vmlinux -append "root=/dev/sda console=ttyS0,115200" -serial stdio -drive file=output/images/rootfs.ext2,format=raw -net nic,model=e1000 -net user
+  qemu-system-sparc64 -M sun4u -kernel output/images/vmlinux -append "rootwait root=/dev/sda console=ttyS0,115200" -serial stdio -drive file=output/images/rootfs.ext2,format=raw -net nic,model=e1000 -net user
 
 
 The login prompt will appear in the terminal that started Qemu.
 The login prompt will appear in the terminal that started Qemu.
 
 

+ 1 - 1
board/qemu/x86/readme.txt

@@ -1,6 +1,6 @@
 Run the emulation with:
 Run the emulation with:
 
 
-  qemu-system-i386 -M pc -kernel output/images/bzImage -drive file=output/images/rootfs.ext2,if=virtio,format=raw -append "root=/dev/vda" -net nic,model=virtio -net user
+  qemu-system-i386 -M pc -kernel output/images/bzImage -drive file=output/images/rootfs.ext2,if=virtio,format=raw -append "rootwait root=/dev/vda" -net nic,model=virtio -net user
 
 
 Optionally add -smp N to emulate a SMP system with N CPUs.
 Optionally add -smp N to emulate a SMP system with N CPUs.
 
 

+ 1 - 1
board/qemu/x86_64/readme.txt

@@ -1,6 +1,6 @@
 Run the emulation with:
 Run the emulation with:
 
 
-  qemu-system-x86_64 -M pc -kernel output/images/bzImage -drive file=output/images/rootfs.ext2,if=virtio,format=raw -append "root=/dev/vda" -net nic,model=virtio -net user
+  qemu-system-x86_64 -M pc -kernel output/images/bzImage -drive file=output/images/rootfs.ext2,if=virtio,format=raw -append "rootwait root=/dev/vda" -net nic,model=virtio -net user
 
 
 Optionally add -smp N to emulate a SMP system with N CPUs.
 Optionally add -smp N to emulate a SMP system with N CPUs.