PYNQ: PYTHON PRODUCTIVITY

Failed to mount /boot ( PYNQ v2.6)

I built my own image (pynq v2.6) with prebuilt image ( PYNQ rootfs aarch64 v2.6 )
for a custom board with Zynq Ultrascale device

The SD boot failed with the message: end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(179,2)
The problem was the worng Kernel command line, thanks to @yunqu, I could modify Device tree to give correct Kernel command line:

root=/dev/mmcblk1p2 rw earlyprintk rootfstype=ext4 rootwait devtmpfs.mount=1 uio_pdrv_genirq.of_id=“generic-uio” clk_ignore_unused

(root=/dev/mmcblk0p2 to root=/dev/mmcblk1p2)

so now rootfs is mounted but I still get error:

[FAILED] Failed to mount /boot

And I repetedly get the following msg:

You are in emergency mode. After logging in, type "journalctl -xbGive root password for maintenance
(or press Control-D to continue):

How should I approch or what should I modify to boot up correctly?

Here is the boot log :

Board: Xilinx ZynqMP
DRAM: 1023 MiB
PMUFW: v1.1
EL Level: EL2
Chip ID: zu2cg
NAND: 0 MiB
MMC: mmc@ff160000: 0, mmc@ff170000: 1
Loading Environment from FAT… *** Warning - bad CRC, using default environment

In: serial@ff000000
Out: serial@ff000000
Err: serial@ff000000
Bootmode: SD_MODE1
Reset reason: EXTERNAL
Net:
ZYNQ GEM: ff0e0000, mdio bus ff0e0000, phyaddr 3, interface rgmii-id
eth0: ethernet@ff0e0000
Hit any key to stop autoboot: 0
switch to partitions #0, OK
mmc1 is current device
Scanning mmc 1:1…
Found U-Boot script /boot.scr
1636 bytes read in 12 ms (132.8 KiB/s)
Executing script at 20000000
17530740 bytes read in 1482 ms (11.3 MiB/s)
Loading kernel from FIT Image at 10000000 …
Using ‘conf@1’ configuration
Trying ‘kernel@0’ kernel subimage
Description: Linux Kernel
Type: Kernel Image
Compression: uncompressed
Data Start: 0x100000d4
Data Size: 17494528 Bytes = 16.7 MiB
Architecture: AArch64
OS: Linux
Load Address: 0x00080000
Entry Point: 0x00080000
Hash algo: sha1
Hash value: 200d617e01ef20d7474ee4736f29212ca4ab223e
Verifying Hash Integrity … sha1+ OK
Loading fdt from FIT Image at 10000000 …
Using ‘conf@1’ configuration
Trying ‘fdt@0’ fdt subimage
Description: Flattened Device Tree blob
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0x110af3cc
Data Size: 34386 Bytes = 33.6 KiB
Architecture: AArch64
Hash algo: sha1
Hash value: f0b6c37888c6991417077c2fb7b26a09001d5b28
Verifying Hash Integrity … sha1+ OK
Booting using the fdt blob at 0x110af3cc
Loading Kernel Image
Loading Device Tree to 000000000fff4000, end 000000000ffff651 … OK

Starting kernel …

[ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[ 0.000000] Linux version 5.4.0-xilinx-v2020.1 (oe-user@oe-host) (gcc version 9.2.0 (GCC)) #1 SM P Mon May 31 07:50:48 UTC 2021
[ 0.000000] Machine model: Enclustra MA-XU3-2CG-1E-D10 SOM
[ 0.000000] efi: Getting EFI parameters from FDT:
[ 0.000000] efi: UEFI not found.
[ 0.000000] cma: Reserved 128 MiB at 0x0000000037c00000
[ 0.000000] psci: probing for conduit method from DT.
[ 0.000000] psci: PSCIv1.1 detected in firmware.
[ 0.000000] psci: Using standard PSCI v0.2 function IDs
[ 0.000000] psci: MIGRATE_INFO_TYPE not supported.
[ 0.000000] psci: SMC Calling Convention v1.1
[ 0.000000] percpu: Embedded 22 pages/cpu s50392 r8192 d31528 u90112
[ 0.000000] Detected VIPT I-cache on CPU0
[ 0.000000] CPU features: detected: ARM erratum 845719
[ 0.000000] Speculative Store Bypass Disable mitigation not required
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 257796
[ 0.000000] Kernel command line: root=/dev/mmcblk1p2 rw earlyprintk rootfstype=ext4 rootwait dev tmpfs.mount=1 uio_pdrv_genirq.of_id=“generic-uio” clk_ignore_unused
[ 0.000000] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
[ 0.000000] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes, linear)

.
.
.

[ 5.755961] cdns-i2c ff020000.i2c: 100 kHz mmio ff020000 irq 31
[ 5.794283] mmc0: SDHCI controller on ff160000.mmc [ff160000.mmc] using ADMA 64-bit
[ 5.833753] mmc1: SDHCI controller on ff170000.mmc [ff170000.mmc] using ADMA 64-bit
[ 5.844488] rtc_zynqmp ffa60000.rtc: setting system clock to 1970-01-01T00:00:39 UTC (39)
[ 5.852681] of_cfs_init
[ 5.855141] of_cfs_init: OK
[ 5.858082] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[ 5.898914] mmc1: new high speed SDHC card at address 5048
[ 5.904975] mmcblk1: mmc1:5048 SD16G 14.4 GiB
[ 5.915540] mmcblk1: p1 p2
[ 5.918440] mmc0: new HS200 MMC card at address 0001
[ 5.924408] mmcblk0: mmc0:0001 IB2916 14.6 GiB
[ 5.929208] mmcblk0boot0: mmc0:0001 IB2916 partition 1 4.00 MiB
[ 5.935396] mmcblk0boot1: mmc0:0001 IB2916 partition 2 4.00 MiB
[ 5.941462] mmcblk0rpmb: mmc0:0001 IB2916 partition 3 4.00 MiB, chardev (244:0)
[ 5.949860] mmcblk0: p1
[ 6.003321] cfg80211: Loaded X.509 cert ‘sforshee: 00b28ddf47aef9cea7’
[ 6.009860] clk: Not disabling unused clocks
[ 6.014126] ALSA device list:
[ 6.017091] No soundcards found.
[ 6.020900] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
[ 6.029513] cfg80211: failed to load regulatory.db
[ 6.084661] [drm] Cannot find any crtc or sizes
[ 6.137146] EXT4-fs (mmcblk1p2): recovery complete
[ 6.143025] EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Opts: (null)
[ 6.151161] VFS: Mounted root (ext4 filesystem) on device 179:2.
[ 6.158393] devtmpfs: mounted
[ 6.161742] Freeing unused kernel memory: 768K
[ 6.166260] Run /sbin/init as init process
[ 7.138906] systemd[1]: System time before build time, advancing clock.
[ 7.170932] systemd[1]: systemd 237 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMO D -IDN2 +IDN -PCRE2 default-hierarchy=hybrid)
[ 7.192503] systemd[1]: Detected architecture arm64.

Welcome to PYNQ Linux, based on Ubuntu 18.04!

[ 7.265020] systemd[1]: Set hostname to .
[ 8.245869] random: systemd: uninitialized urandom read (16 bytes read)
[ 8.252562] systemd[1]: Reached target System Time Synchronized.
[ OK ] Reached target System Time Synchronized.
[ 8.268770] random: systemd: uninitialized urandom read (16 bytes read)
[ 8.276069] systemd[1]: Created slice System Slice.
[ OK ] Created slice System Slice.
[ 8.292746] random: systemd: uninitialized urandom read (16 bytes read)
[ 8.299577] systemd[1]: Listening on /dev/initctl Compatibility Named Pipe.
[ OK ] Listening on /dev/initctl Compatibility Named Pipe.
[ 8.321151] systemd[1]: Created slice User and Session Slice.
[ OK ] Created slice User and Session Slice.
[ 8.337091] systemd[1]: Created slice system-serial\x2dgetty.slice.
[ OK ] Created slice system-serial\x2dgetty.slice.
[ 8.352686] systemd[1]: Reached target Remote File Systems.
[ OK ] Reached target Remote File Systems.
[ 8.368960] systemd[1]: Listening on Journal Socket (/dev/log).
[ OK ] Listening on Journal Socket (/dev/log).
[ OK ] Listening on udev Kernel Socket.
[ OK ] Listening on udev Control Socket.
[ OK ] Created slice system-getty.slice.
[ OK ] Reached target Swap.
[ OK ] Listening on Journal Audit Socket.
[ OK ] Reached target Slices.
[ OK ] Started Dispatch Password Requests to Console Directory Watch.
[ OK ] Listening on Syslog Socket.
[ OK ] Started Forward Password Requests to Wall Directory Watch.
[ OK ] Reached target Local Encrypted Volumes.
[ OK ] Listening on Journal Socket.
Mounting Huge Pages File System…
Starting Journal Service…
Starting Remount Root and Kernel File Systems…
Starting Restore / save the current clock…
Mounting Kernel Debug File System…
Starting Load Kernel Modules…
Starting Create Static Device Nodes in /dev…
Starting udev Coldplug all Devices…
Mounting POSIX Message Queue File System…
Starting Nameserver information manager…
[ OK ] Started ntp-systemd-netif.path.
[ OK ] Started Journal Service.
[ OK ] Mounted Huge Pages File System.
[ OK ] Started Remount Root and Kernel File Systems.
[ OK ] Started Restore / save the current clock.
[ OK ] Mounted Kernel Debug File System.
[ OK ] Started Load Kernel Modules.
[ OK ] Mounted POSIX Message Queue File System.
[ OK ] Started Create Static Device Nodes in /dev.
Starting Apply Kernel Variables…
Mounting Kernel Configuration File System…
[ OK ] Reached target Local File Systems (Pre).
Starting udev Kernel Device Manager…
Starting Load/Save Random Seed…
Starting Flush Journal to Persistent Storage…
[ OK ] Started Nameserver information manager.
[ OK ] Started Apply Kernel Variables.
[ OK ] Mounted Kernel Configuration File System.
[ OK ] Started Load/Save Random Seed.
[ OK ] Reached target Network (Pre).
[ OK ] Started udev Coldplug all Devices.
[ OK ] Started Flush Journal to Persistent Storage.
[ OK ] Started udev Kernel Device Manager.
[ 10.015586] zocl-drm amba:zyxclmm_drm: IRQ index 0 not found
[ OK ] Found device /dev/ttyPS0.
[ OK ] Found device /dev/mmcblk0p1.
[ OK ] Listening on Load/Save RF Kill Switch Status /dev/rfkill Watch.
Mounting /boot…
[ 11.189724] FAT-fs (mmcblk0p1): bogus number of reserved sectors
[FAILED] Failed to mount /boot.
See ‘systemctl status boot.mount’ for details.
[DEPEND] Dependency failed for Unattended Upgrades Shutdown.
[DEPEND] Dependency failed for Local File Systems.
[ OK ] Started ifup for eth0.
Starting Enable support for additional executable binary formats…
Starting Raise network interfaces…
[ OK ] Closed Syslog Socket.
[ OK ] Reached target Login Prompts.
[ OK ] Reached target Timers.
Starting Create Volatile Files and Directories…
[ OK ] Started Emergency Shell.
[ OK ] Reached target Emergency Mode.
[ OK ] Reached target Paths.
[ OK ] Reached target Sockets.
[ OK ] Started Enable support for additional executable binary formats.
[ OK ] Started Create Volatile Files and Directories.
Mounting /boot…
[ 11.473348] FAT-fs (mmcblk0p1): bogus number of reserved sectors
Starting Network Time Synchronization…
[ OK ] Stopped target Emergency Mode.
[ OK ] Started Entropy daemon using the HAVEGE algorithm.
Starting Network Name Resolution…
Starting Update UTMP about System Boot/Shutdown…
[ OK ] Stopped Emergency Shell.

[FAILED] Failed to mount /boot.

See ‘systemctl status boot.mount’ for details.
[DEPEND] Dependency failed for Local File Systems.
[ OK ] Started Emergency Shell.
[ OK ] Reached target Emergency Mode.
[ OK ] Started Update UTMP about System Boot/Shutdown.
Starting Update UTMP about System Runlevel Changes…
[ OK ] Started Update UTMP about System Runlevel Changes.
[ OK ] Started Network Time Synchronization.
[ OK ] Started Network Name Resolution.
[ OK ] Reached target Host and Network Name Lookups.
You are in emergency mode. After logging in, type “journalctl -xb” to view
system logs, “systemctl reboot” to reboot, “systemctl default” or “exit”
to boot into default mode.
Give root password for maintenance
(or press Control-D to continue): [ 22.796918] FAT-fs (mmcblk0p1): bogus number of reserved secto rs
[ OK ] Stopped Emergency Shell.

[FAILED] Failed to mount /boot.

See ‘systemctl status boot.mount’ for details.
[DEPEND] Dependency failed for Local File Systems.
[ OK ] Started Emergency Shell.
[ OK ] Reached target Emergency Mode.
Starting Network Name Resolution…
[ OK ] Started Network Name Resolution.
[ OK ] Started Raise network interfaces.
[ OK ] Reached target Network.
[ OK ] Reached target Network is Online.
You are in emergency mode. After logging in, type "journalctl -xbGive root password for maintenance
(or press Control-D to continue): [ 35.278377] FAT-fs (mmcblk0p1): bogus number of reserved secto rs
You are in emergency mode. After logging in, type "journalctl -xbGive root password for maintenance
(or press Control-D to continue):

And here is additional information:

root@pynq:~# systemctl status boot.mount

¡Ü boot.mount - /boot
Loaded: loaded (/etc/fstab; generated)
Active: failed (Result: exit-code) since Mon 2020-10-19 15:00:30 UTC; 7s ago
Where: /boot
What: /dev/mmcblk0p1
Docs: man:fstab(5)
man:systemd-fstab-generator(8)
Process: 491 ExecMount=/bin/mount /dev/mmcblk0p1 /boot -t vfat (code=exited, s

Oct 19 15:00:30 pynq systemd[1]: Mounting /boot…
Oct 19 15:00:30 pynq mount[491]: mount: /boot: wrong fs type, bad option, bad su
Oct 19 15:00:30 pynq systemd[1]: boot.mount: Mount process exited, code=exited s
Oct 19 15:00:30 pynq systemd[1]: boot.mount: Failed with result ‘exit-code’.
Oct 19 15:00:30 pynq systemd[1]: Failed to mount /boot.
lines 1-14/14 (END)[ 47.761425] FAT-fs (mmcblk0p1): bogus number of reserved sectors
You are in emergency mode. After logging in, type "journalctl -xbGive root password for maintenance
(or press Control-D to continue):

ZynqMP> mmc list

mmc@ff160000: 0 (eMMC)
mmc@ff170000: 1 (SD)

ZynqMP> mmcinfo

Device: mmc@ff160000
Manufacturer ID: 70
OEM: 100
Name: IB291
Bus Speed: 199999998
Mode: HS200 (200MHz)
Rd Block Len: 512
MMC version 5.1
High Capacity: Yes
Capacity: 14.6 GiB
Bus Width: 8-bit
Erase Group Size: 512 KiB
HC WP Group Size: 8 MiB
User Capacity: 14.6 GiB
Boot Capacity: 4 MiB ENH
RPMB Capacity: 4 MiB ENH

root@pynq:~# mount -a

[ 611.309937] FAT-fs (mmcblk0p1): bogus number of reserved sectors
mount: /boot: wrong fs type, bad option, bad superblock on /dev/mmcblk0p1, missing codepage or helper program, or other error.

root@pynq:~# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
mtdblock0 31:0 0 1M 0 disk
mtdblock1 31:1 0 256K 0 disk
mtdblock2 31:2 0 22M 0 disk
mmcblk1 179:0 0 14.4G 0 disk
|-mmcblk1p1 179:1 0 100M 0 part
-mmcblk1p2 179:2 0 6.6G 0 part / mmcblk0 179:8 0 14.6G 0 disk -mmcblk0p1 179:9 0 14.6G 0 part
mmcblk0boot0 179:16 0 4M 1 disk
mmcblk0boot1 179:24 0 4M 1 disk
root@pynq:~# [ 658.450551] FAT-fs (mmcblk0p1): bogus number of reserved sectors

I solved the problem by modifing block argument in /etc/fstab :blush: