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.