Ubuntu 20.04 PXE boot hangs on rockpi4a 1.4

I am trying to boot the Ubuntu Focal (rockpi4a_ubuntu_focal_server_arm64_20210125_2342-gpt.img) over network (TFTP + NFS) on the rockpi4a 1.4. I’ve followed the article wiki.radxa.com/Rockpi4/dev/u-boot/pxe but It seems there is some problem loading the rootfs from NFS server (see the log below).

  1. I am able to boot the kernel, but it hangs after disabling uart0 (bootconsole [uart0] disabled)
  2. I belive that the kernel should mount the root filesystem from NFS server as instructed by the bootargs. this is my pxelinux.cfg/default file:

label kernel-4.4.154-112-rockchip-gfdb18c8bab17
kernel /vmlinuz-4.4.154-112-rockchip-gfdb18c8bab17
initrd /initrd.img-4.4.154-112-rockchip-gfdb18c8bab17
devicetreedir /dtbs/4.4.154-112-rockchip-gfdb18c8bab17
append earlycon=uart8250,mmio32,0xff1a0000 earlyprintk console=ttyS2,1500000n8 init=/sbin/init netboot=nfs root=/dev/nfs rootfstype=ext4 ip=dhcp nfsroot=192.168.4.9:/mnt/pxe/rootfs,v3 ro rootwait

My NFS server is working, I am able to mount the rootfs from different board (also rockpi4a) in the same network (using command line).

I am really stuck here, could anyone help? Thank you in advance. The serial console log ends with (as a new user, I was not able to post the entire console log):

Starting kernel …

[ 1.899002] bootconsole [uart0] disabled

…nothing happens here - the ‘ss -a|grep nfs’ on the NFS server does not show any new client connections and I haven’t found a way how to find the reason of the malfunction since there are no logs after the kernel disables bootconsole (I’ve googled a lot but without success).

Paste the full log at: https://paste.ubuntu.com/ and send the link here.

Here it is:

full boot log: https://paste.ubuntu.com/p/6Jy67bYgHs/

In the hw_intfc.conf there are all default values, i.e.:


intfc:pwm0=off
intfc:pwm1=off
intfc:uart2=off
intfc:uart4=off
intfc:spi1=on
intfc:spi2=off
intfc:i2c2=off
intfc:i2c6=off
intfc:i2c7=off

intfc:dtoverlay=console-on-ttyS2

#intfc:dtoverlay=console-on-ttyS4

…paste.ubuntu.com needs login, so I’ve put the log to the pastebin: https://pastebin.com/7a48gzyM
thank you for any help - I am stuck on it with rockpi4a unable to boot as diskless device.

Anyone? I’ve seen many ‘bootconsole [uart0] disabled’ discussions, but nothing helped me. When using kernel parameters from the https://wiki.radxa.com/Rockpi4/dev/u-boot/pxe only the ‘Starting kernel …’ is logged and nothing more. Therefore I’ve used different setup (mentioned above) which, however, stops outputting log at ‘bootconsole [uart0] disabled’…so I am not able to find out why the board is not booting…

I think the issue may be related to the console=ttyS2 kernel parameter in your PXE configuration. Based on the wiki PXE page that you linked it seems that the older kernels might be using the ‘fiq-debugger’ driver for the serial consoles, so maybe the following will work:

console=ttyFIQ0

If that doesn’t work, the console= parameter can be specified with the same format as the earlycon= parameter in order to know for sure the kernel will continue to use the same console. This approach is nice in cases where you aren’t certain which serial driver is running the console because it gets you away from not knowing which name scheme to use (e.g. ttyS0 vs ttyFIQ0). Just make the console= parameter the same as your earlycon= parameter, for example:

console=uart8250,mmio32,0xff1a0000

If the above works and gets you fully booted you can then take a look at /dev and/or the /proc/tty files to figure out which driver is being used and which console name scheme you need for console=.

thank you, amcduffee.

unfortunately neither of the settings helped to uncover further logs - I’ve always ended with the ‘bootconsole [uart0] disabled’

my last bootargs are:

append earlyprintk earlycon=uart8250,mmio32,0xff1a0000,ttyS0 console=uart8250,mmio32,0xff1a0000,ttyFIQ0,ttyS0 ro init=/sbin/init ip=dhcp root=/dev/nfs rootfstype=nfs rootwait nfsroot=192.168.1.20:/mnt/pxe/rootfs

and the corresponding boot log: https://pastebin.com/N4NQf9mf

please note that i am not able to boot at all since i am experimenting with pxe+nfs boot (which is ok for now). it is clear that there is something not right regarding the nfs mount, but i don’t know what (since the logs are missing). and therefore i must solve the logging issue.

…i’ve also tested the same board booting the same os - but booting from nvme. the bootargs were:

earlyprintk console=ttyFIQ0,1500000n8 rw init=/sbin/init rootfstype=ext4 rootwait root=UUID=83c6c7ca-6e5e-4934-a805-b08fe31a6371 console=ttyS2,1500000n8

the boot log: https://pastebin.com/1TJJVV7g

i’ve tried the same bootargs with pxe boot (including identical hw_intfc.conf) but no luck, the problem was the same - there were even no logs after the ‘Starting kernel’ line. so now i am really confused…

The extra ,ttyFIQ0,ttyS0 on the end doesn’t make any sense. The values after the address are options, which can be seen in https://pastebin.com/N4NQf9mf :

[ 0.000000] earlycon: Early serial console at MMIO32 0xff1a0000 (options ‘ttyS0’)

The (options 'ttyS0') part tells you the kernel interpreted the trailing ,ttyS0 as an option. It isn’t correct, but also doesn’t appear to have broken anything because you are still seeing the early console.

A bit further in the same log:

[ 0.000000] Kernel command line: earlyprintk earlycon=uart8250,mmio32,0xff1a0000,ttyS0 console=uart8250,mmio32,0xffs

I can’t verify the console= parameter because the line is truncated, but you want them to look like this:

earlycon=uart8250,mmio32,0xff1a0000 console=uart8250,mmio32,0xff1a0000

If that still doesn’t work, you could try adding the following parameter:

keep_bootcon

It is supposed to make the kernel keep the boot console active instead of disabling it. Maybe it will allow you to see more messages.

thank you very much for the clarification and especially for the keep_bootcon parameter - which helped to overcome the disabled console. With the boot console enabled i now see more logs to analyze my boot problem.