SD card size constraint conceptually wrong
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
QEMU |
Invalid
|
Undecided
|
Unassigned |
Bug Description
The patch discussed here:
https://<email address hidden>
introduces an artificial size constraint for SD cards
that has no relation to reality.
I'm trying to use an _actual_ **physical** SD card,
and qemu tells me its size is "invalid".
Something here appears to be conceptually wrong.
-------
# fdisk -l /dev/sdg
Disk /dev/sdg: 14.84 GiB, 15931539456 bytes, 31116288 sectors
Disk model: USB SD Reader
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x7a0c8bb0
Device Boot Start End Sectors Size Id Type
/dev/sdg1 2048 524287 522240 255M c W95 FAT32 (LBA)
/dev/sdg2 524288 31116287 30592000 14.6G 83 Linux
# qemu-system-aarch64 -M raspi3 -m 1G -kernel vmlinuz-5.4.79-v8 -dtb bcm2837-
qemu-system-
SD card size has to be a power of 2, e.g. 16 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).
-------
The same invocation with a dump of the actual image
resized to match qemu's odd expectations works fine.
This is on QEMU 5.2.0, as evidenced by the following:
-------
# qemu-system-aarch64 -version
QEMU emulator version 5.2.0
Copyright (c) 2003-2020 Fabrice Bellard and the QEMU Project developers
-------
Is there a simple workaround that disables this rather
arbitrary constraint?
Changed in qemu: | |
status: | New → Confirmed |
On 1/7/21 8:24 PM, - wrote: /msg720833. html ------- ------- ------- ------- ------- ------- - rpi-3-b- plus.dtb -append console=ttyAMA0\ root=/dev/ mmcblk0p2\ rw -nographic -serial mon:stdio -drive file=/dev/ sdg,format= raw aarch64: Invalid SD card size: 14.8 GiB
> Public bug reported:
>
> The patch discussed here:
> https://<email address hidden>
> introduces an artificial size constraint for SD cards
> that has no relation to reality.
>
> I'm trying to use an _actual_ **physical** SD card,
> and qemu tells me its size is "invalid".
>
> Something here appears to be conceptually wrong.
>
> -------
> # fdisk -l /dev/sdg
> Disk /dev/sdg: 14.84 GiB, 15931539456 bytes, 31116288 sectors
> Disk model: USB SD Reader
> Units: sectors of 1 * 512 = 512 bytes
> Sector size (logical/physical): 512 bytes / 512 bytes
> I/O size (minimum/optimal): 512 bytes / 512 bytes
> Disklabel type: dos
> Disk identifier: 0x7a0c8bb0
>
> Device Boot Start End Sectors Size Id Type
> /dev/sdg1 2048 524287 522240 255M c W95 FAT32 (LBA)
> /dev/sdg2 524288 31116287 30592000 14.6G 83 Linux
> # qemu-system-aarch64 -M raspi3 -m 1G -kernel vmlinuz-5.4.79-v8 -dtb bcm2837-
> qemu-system-
> SD card size has to be a power of 2, e.g. 16 GiB.
Your physical card likely is 16GiB. The firmware running
on it is free to reserve some amount to replace broken
blocks. In your case ~7%.
We choose to restrict the model to the physical layer to
simplify the design and avoid to deal with security issues.
Patches to improve the model by better matching the real
world are always welcomed!
> 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).
Indeed, we can remove this warning for block devices.
> ------- ------- ------- ------- ------- ------- ------- - ------- ------- ------- ------- ------- ------- - ------- ------- ------- ------- ------- ------- -
>
> The same invocation with a dump of the actual image
> resized to match qemu's odd expectations works fine.
>
>
> This is on QEMU 5.2.0, as evidenced by the following:
> -------
> # qemu-system-aarch64 -version
> QEMU emulator version 5.2.0
> Copyright (c) 2003-2020 Fabrice Bellard and the QEMU Project developers
> -------
>
> Is there a simple workaround that disables this rather
> arbitrary constraint?
No, but you can send a patch :)
Regards,
Phil.