Avatar (Fabio Alessandro Locati|Fale)'s blog

MACCHIATObin boot on serial port

March 6, 2023

I bought a MACCHIATObin Single Shot a few months ago with the idea of creating a NAS out of it. The results have been very good and, to begin in an easy way, I decided to install Fedora 37 Server Edition.

Now that I’ve decided exactly what I want out of it, I reinstalled Fedora and started from scratch with exactly what I wanted. I decided to install Fedora 37 IoT, which is an rpm-ostree based release. To create the installation media, I leveraged arm-image-installer. Overall everything went well, and the system booted successfully, although I wasn’t sure at first due to an issue with my DHCP server configuration. Therefore I decided to connect to the board serial port and see if the boot was successful.

Considering that I did not want to mess up my system, I used screen for the job:

screen /dev/ttyUSB0 115200

Everything started as expected, however three lines appeared on the screen with no further progress:

EFI stub: Booting Linux Kernel...
EFI stub: Using DTB from configuration table
EFI stub: Exiting boot services and installing virtual address map...

I initially suspected something was wrong with the image created, but after re-creating the image a few times and still receiving the same result, I convinced myself that the image was not the issue. After several attempts, I noticed that the network lights blinked irregularly after more than 10 seconds of this text appearing. This meant that the boot was probably going forward, but I was not seeing it. The most probable cause of this was the kernel parameters within GRUB. Once checked, I noted the console parameter was pointing to a real tty and not the serial one. I, therefore, changed the console parameter to:


This informed the kernel of the requirement to use the serial console. Immediately, the system spewed the usual three lines but then outputted more lines until the console login prompt was finally reached.

I decided to share this quick summary of the process that brought me to circumvent this issue for multiple reasons:

  1. No matter how well you know a topic, there will always be edge cases where your debug performances are suboptimal thanks to some simple conditions that you have not considered or taken for granted
  2. Remember, if you need to connect via serial port to a device, screen is a great way to do so, as long as you remember how to exit it (Ctrl-a followed by k)
  3. If you do not see the boot output on your console, very probably, it is being redirected to a different console, so check the kernel parameters