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.