QEMU wrongly requires SD card sizes to be a power of two
Host environment
- Operating system: Linux
- OS/kernel version: Linux mypc 6.3.8_1 #1 SMP PREEMPT_DYNAMIC Wed Jun 21 09:47:38 UTC 2023 x86_64 GNU/Linux
- Architecture: x86
- QEMU flavor: qemu-system-aarch64
- QEMU version: 8.0.50
- QEMU command line:
sudo qemu-system-aarch64 -M raspi2b -drive file=/dev/mmcblk0,if=sd,format=raw
Emulated/Virtualized environment
- Operating system: Raspberry Pi OS
- OS/kernel version: any
- Architecture: ARM
Description of problem
QEMU arbitrarily requires SD card sizes to be a power of 2. However, this behavior does not match the real world, and I am unable to pass a physical SD card into the guest operating system.
$ sudo qemu-system-aarch64 -M raspi2b -drive file=/dev/mmcblk0,if=sd,format=raw
qemu-system-aarch64: Invalid SD card size: 29.7 GiB
SD card size has to be a power of 2, e.g. 32 GiB.
You can resize disk images with 'qemu-img resize <imagefile> <new-size>'
(note that this will lose data if you make the image smaller than it currently is).
Steps to reproduce
- Insert a physical SD card into your host system and make a note of its device name. It will be something like
/dev/mmcblk0
- Attempt to start a guest OS with the SD card attached. See the command above.
- You will get an error saying that the card size is not a power of two.
Additional information
Edited by NinjaCowboy