Booting Core20 from SSD does not work

I am trying to install Ubuntu Core 20.04 on an APU1d system board by PC Engines. I flashed the image to an mSATA SSD using the ‘dd’ program standard on Linux OS. A serial port connection with my laptop and using a program called gtkterm, I send and receive input to and from the board.

However, after selecting the SSD to boot from in the BIOS, I get no more input over the serial port, leaving me clueless on what the issue might be. Any help would be appreciated!

Memory: 2 GB RAM
SSD: TS32GMSA370 ATA-9 Hard-Disk (+/- 30 GB)

Gtkterm output:

PC Engines APU BIOS build date: Apr 5 2014
Reading data from file [bootorder]
SeaBIOS (version ?-20140405_120742-frink)
SeaBIOS (version ?-20140405_120742-frink)
Found coreboot cbmem console @ 7e150400
Found mainboard PC Engines APU
Relocating init from 0x000e8e71 to 0x7e1065e0 (size 39259)
Found CBFS header at 0xfffffb90
found file “bootorder” in cbmem
CPU Mhz=1001
Found 27 PCI devices (max PCI bus is 05)
Copying PIR from 0x7e160400 to 0x000f27a0
Copying MPTABLE from 0x7e161400/7e161410 to 0x000f25b0 with length 1ec
Copying ACPI RSDP from 0x7e162400 to 0x000f2590
Copying SMBIOS entry point from 0x7e16d800 to 0x000f2570
Using pmtimer, ioport 0x808
Scan for VGA option rom
EHCI init on dev 00:12.2 (regs=0xf7f08420)
Found 1 lpt ports
Found 2 serial ports
AHCI controller at 11.0, iobase f7f08000, irq 11
EHCI init on dev 00:13.2 (regs=0xf7f08520)
EHCI init on dev 00:16.2 (regs=0xf7f08620)
Searching bootorder for: /pci@i0cf8/@11/drive@0/disk@0
AHCI/0: registering: “AHCI/0: TS32GMSA370 ATA-9 Hard-Disk (30533 MiBytes)”
Searching bootorder for: /rom@img/setup
Searching bootorder for: /rom@img/memtest
OHCI init on dev 00:12.0 (regs=0xf7f04000)
OHCI init on dev 00:13.0 (regs=0xf7f05000)
OHCI init on dev 00:14.5 (regs=0xf7f06000)
OHCI init on dev 00:16.0 (regs=0xf7f07000)
Searching bootorder for: /pci@i0cf8/usb@16,2/storage@1/
Searching bootorder for: /pci@i0cf8/usb@16,2/usb-
USB MSC vendor=‘Multiple’ product=‘Card Reader’ rev=‘1.00’ type=0 removable=1
scsi_is_ready returned -1
Unable to configure USB MSC drive.
Unable to configure USB MSC device.
All threads complete.
Scan for option roms
Running option rom at c000:0003

iPXE ( 00:00.0 C000 PCI2.10 PnP PMMpmm call arg1=1
pmm call arg1=0
+7E0E94B0pmm call arg1=1
pmm call arg1=0
+7E0494B0 C000

Searching bootorder for: /rom@genroms/pxeboot.rom

Build date: Apr 5 2014
System memory size: 2017 MB

Press F12 for boot menu.

Select boot device:

  1. AHCI/0: TS32GMSA370 ATA-9 Hard-Disk (30533 MiBytes)
  2. iPXE (PCI 00:00.0)
  3. Payload [setup]
  4. Payload [memtest]

Searching bootorder for: HALT
drive 0x000f2500: PCHS=16383/16/63 translation=lba LCHS=1024/255/63 s=62533296
Space available for UMB: c1000-ee800, f0000-f2500
Returned 253952 bytes of ZoneHigh
e820 map has 6 items:
0: 0000000000000000 - 000000000009fc00 = 1 RAM
1: 000000000009fc00 - 00000000000a0000 = 2 RESERVED
2: 00000000000f0000 - 0000000000100000 = 2 RESERVED
3: 0000000000100000 - 000000007e14e000 = 1 RAM
4: 000000007e14e000 - 000000007f000000 = 2 RESERVED
5: 00000000f8000000 - 00000000f9000000 = 2 RESERVED
enter handle_19:
Booting from Hard Disk…
Booting from 0000:7c00

the bootloader config defaults to “console=ttyS0”, i wonder if your serial console might be showing up as a different device from /dev/ttyS0 here …

also, how exactly did you dd to the disk (i got one older alix APU here from the same vendor, that worked just fine by simply using a USB->mSATA adapter back then (i used this one))

I used a similar device to the one you linked, after which I used the following bash code in terminal to flash the image to the disk.

cat /home/user/Downloads/dawson-uc18-m7-20190122-10.img | sudo dd of=/dev/sdb bs=32M status=progress; sync

My serial port shows up as ttyUSB0 and that is the device I selected in gtkterm as the port to open.

yeah, i was looking for the other side of the serial line here, indeed a USB->serial adapter will show up as ttyUSB0 on the PC side :slight_smile: the question is if the “console=ttyS0” on the device side actually points to the proper serial device during boot …

do you have any reference linux image for the board that you could flash and inspect the output of cat /proc/cmdline to see what console= argument is used on a working system ?

Yeah I misunderstood the first time, sorry. The reference linux image yielded console=ttyS0.

After looking through the file system of the SSD with core20 flashed on it, I found the following file with directory /etc/systemd/system/ . Does this file’s default value determine the console used?

Edit: I know this is not the serial-getty service I am looking for, but I cannot find it anywhere.

all the getty services (apart from the tty1 one) get dynamically generated based on the console= args from the cmdline … it looks like ttyS0 is used by default on your Hardware so this bit should be fine (UbuntuCore has both: console=tty1 as well as console=ttyS0 set by default, for both a getty service should start up)

I have discovered part of the issue. My firmware on the device is coreboot, which is apparently not compatible with gpt, but only with mbr. Is there a way for Ubuntu Core20 to boot with BIOS or do I need to flash my ROM? (i discovered that is possible)

i think Core20 on x86 hard-requires gpt nowadays (due to the UEFI requirement for secure booting), so i fear you need to flash your ROM first if that is an opportunity…

Alright, I will try that first then. Thanks for your patience!