
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:
console=ttyS0,115200n8
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:
- 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
- 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 byk
) - 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