Page MenuHomePureOS Tracker

Fix SeaBIOS boot order
Open, Needs TriagePublic

Description

Seabios boot order is M.2 SSD, then 2.5" HDD. If the SSD is empty and the HDD has an OS on it, then seabios will fail to boot from SSD then fallback on memtest instead of falling back on the HDD.

Event Timeline

nicole added a subscriber: nicole.Nov 19 2017, 07:40

The order that Linux detects the devices is also the other way araound, i.e. the M.2 becomes, if present, sda and the 2.5" SATA becomes sdb if M.2 is present. This should, if possible, also be reflected in Coreoot/Seabios. It is confusing when the first detected Coreboot/Seabios disk becomes the second one in Linux.

@nicole: SeaBIOS will boot from the M.2 and I think linux will assign 'sda' to the HDD it boots from, no ? If you have a linux installed on the 2.5" and you boot on it, the 2.5" would be seen as "sda" in that case, no ?

If you're referring to the "AHCI/0" vs "AHCI/2" that Seabios shows, that's because it's the "port 0" and "port 2" on the AHCI controller and we can't control that (M.2 is routed in hardware to port 2).

Anyways, this task is really about the seabios behavior when the first item in the boot order fails, it should jump to the second item, not to the 3rd.

nicole added a comment.Nov 23 2017, 14:10

Well, I can not say for all combinations but I have M.2 SATA + 2.5" SATA in my L13. In Seabios the M.2 SATA preceeds the 2.5" SATA drive, in Linux the 2.5" SSD becomes sda and the M.2 SATA ssd becomes sdb, this is what dmesg says:

[ 6.367719] ata1.00: configured for UDMA/133
[ 6.368422] scsi 0:0:0:0: Direct-Access ATA Samsung SSD 850 2B6Q PQ: 0 ANSI: 5
[ 6.678125] ata3: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[ 6.679952] ata3.00: supports DRM functions and may not be fully accessible
[ 6.680803] ata3.00: READ LOG DMA EXT failed, trying PIO
[ 6.680809] ata3.00: NCQ Send/Recv Log not supported
[ 6.680815] ata3.00: ATA-9: Samsung SSD 850 EVO M.2 250GB, EMT21B6Q, max UDMA/133
[ 6.680820] ata3.00: 488397168 sectors, multi 1: LBA48 NCQ (depth 31/32), AA
[ 6.680824] ata3.00: failed to get Identify Device Data, Emask 0x40
[ 6.680828] ata3.00: ATA Identify Device Log not supported
[ 6.680831] ata3.00: Security Log not supported
[ 6.680846] ata3.00: failed to set xfermode (err_mask=0x40)
[ 6.680966] ata3: limiting SATA link speed to 3.0 Gbps
[ 6.680970] ata3.00: limiting speed to UDMA/133:PIO3
[ 12.054082] ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 320)
[ 12.056000] ata3.00: supports DRM functions and may not be fully accessible
[ 12.057023] ata3.00: disabling queued TRIM support
[ 12.059794] ata3.00: supports DRM functions and may not be fully accessible
[ 12.060733] ata3.00: disabling queued TRIM support
[ 12.062947] ata3.00: configured for UDMA/133
[ 12.063710] scsi 2:0:0:0: Direct-Access ATA Samsung SSD 850 1B6Q PQ: 0 ANSI: 5
[ 12.070504] sd 0:0:0:0: [sda] 488397168 512-byte logical blocks: (250 GB/233 GiB)
[ 12.070515] sd 0:0:0:0: [sda] Write Protect is off
[ 12.070517] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[ 12.070521] sd 2:0:0:0: [sdb] 488397168 512-byte logical blocks: (250 GB/233 GiB)
[ 12.070531] sd 2:0:0:0: [sdb] Write Protect is off
[ 12.070533] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 12.070533] sd 2:0:0:0: [sdb] Mode Sense: 00 3a 00 00
[ 12.070548] sd 2:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 12.070968] sdb: sdb1
[ 12.071232] sd 2:0:0:0: [sdb] Attached SCSI disk
[ 12.072709] sda: sda1 sda2 sda3 < sda5 >
[ 12.073071] sd 0:0:0:0: [sda] Attached SCSI disk

So you can see that the 2.5" SATA SSD stays sda but in seabios the M.2 SATA SSD is no. 1, no 2 is the 2.5" SSD, 3 is memtest and 4 is coreinfo.