How to make pynq get the rootfs from mmcblk1p2?

I’m almost there bringing Pynq (3.0) for a new board (zynq MP). The problem I have is the SD card is mapped to sd1, not sd0. I did the proper settings in the petalinux configuration, plus changed the makefile (line 162) to read like:

echo 'CONFIG_SUBSYSTEM_SDROOT_DEV="/dev/mmcblk1p2"' >> $$(PL_CONFIG_$1)

plus added the kernel bootargs in the system-user.dtsi file:

bootargs = "root=/dev/mmcblk1p2 rw earlyprintk rootfstype=ext4 rootwait devtmpfs.mount=1 uio_pdrv_genirq.of_id=\"generic-uio\" clk_ignore_unused";

But still fails and seems to insist on mounting the rootfs from mmcblk0:

[    4.474141] List of all partitions:
[    4.477633] 0100           65536 ram0
[    4.477638]  (driver?)
[    4.483733] 0101           65536 ram1
[    4.483738]  (driver?)
...
[    4.563367]  (driver?)
[    4.569548] 010f           65536 ram15
[    4.569552]  (driver?)
[    4.575737] b300        30533632 mmcblk1
[    4.575741]  driver: mmcblk
[    4.582533]   b301          133120 mmcblk1p1 94dbfbe2-01
[    4.582539]
[    4.589329]   b302         9378423 mmcblk1p2 94dbfbe2-02
[    4.589334]
[    4.596123] b308         3817472 mmcblk0
[    4.596127]  driver: mmcblk
[    4.602913]   b30a         3816448 mmcblk0p2 00000000-02
[    4.602918]
[    4.609711] No filesystem could mount root, tried:
[    4.609713]  ext4
[    4.614588]
[    4.617985] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(179,10)

But… If I stop the boot at u-boot and set manually the environment as follows:

setenv bootargs 'earlycon clk_ignore_unused root=/dev/mmcblk1p2 rw rootwait'

then everything is fine, but I think it should be possible to set that in the image, I just can’t see why it doesn’t work as I check all the files in the sdbuild/build folder and everything points to the correct place.

1 Like

Hi there,

I believe this forum post describes a very similar issue Cannot make Pynq boot from SD1 (kernel looks in mmcblk0 for rootfs), have you edited pynq_bootargs.dtsi as that was the solution in the other post?

Thanks
Shawn

1 Like

That did work, thanks a lot.
Previously I used pynq 2.7 and what I modified was the Makefile in /sdbuild, not the pynq_bootargs.
Now I was using pynq 3.0 and that same change didn’t work, but your suggestion did.
I’m not sure whether the makefile can be reverted to the original or not.

1 Like