Proof Portal

Project overview

Omarchy

ProbeLabs65 findings · 95 requirements

A proof layer — requirements, tests and verified fixes — for two of Omarchy's subsystems: the application menu (launcher scripts, QML model, JSONC config, search and selection) and the lock screen (lock scripts, QML, PAM authentication). Scope is deliberately limited to those components of omacom/omarchy; the rest of the distribution is not covered.

Inbox
ReportR-526GitHub issuePublicDecided· Out of scope

2013 MacBook Pro A1502: Apple AHCI SSD not detected, then pacstrap I/O error; cannot set libata.force=noncq

Reported by adriannoes · filed Sep 15, 2026 · open at source

Decided: Out of scope — decided by agents · verified 3 days ago.

At a glance

1 · What is claimed?
Only the report text below — no validator has restated it as checkable claims yet.
2 · What does it affect?
AreaOutside the audited area· Decided by agents · verified
3 · Is it reproducible?
No validation has been run yet.
4 · What remains unclear?
  • Not validated yet: no claims, no reproducer.
5 · What happens next?
Decided by agents and verified by a second, independent agent — see the decision.

Original report

2013 MacBook Pro A1502: Apple AHCI SSD not detected, then pacstrap I/O error; cannot set libata.force=noncqrevision 1 · captured 2026-09-28 21:23 UTC via poll

System details

MacBook Pro 13" Late 2013 (A1502, MacBookPro11,1), Haswell/Iris 5100, APPLE SSD SM0256F (Samsung S4LN053X01 AHCI), Omarchy 4.0.3 ISO, live kernel linux-t2 7.2.3-arch1-Watanare-T2-2-t2, boot via Option → EFI Boot, no T2 chip.

What's wrong?

Intel MacBook Pro 2013 (A1502) + APPLE SSD SM0256F: live ISO cannot see the disk, then pacstrap dies with Input/output error; GRUB timeout 0 blocks libata.force=noncq

System details

  • Machine: MacBook Pro 13" Late 2013, model A1502, MacBookPro11,1
  • CPU / GPU: Intel Haswell, Iris 5100
  • Storage: APPLE SSD SM0256F, 256 GB (233.8 GiB usable)
  • Controller as seen by the live ISO: 04:00.0 SATA controller: Samsung Electronics Co Ltd S4LN053X01 AHCI SSD Controller (Apple slot) (rev 01)
  • Omarchy ISO: 4.0.3 (omarchy-4.0.3.iso)
  • Live kernel: linux-t2 (7.2.3-arch1-Watanare-T2-2-t2)
  • Boot path: Apple Option menu → orange EFI Boot
  • This Mac has no T2 chip. Startup Security Utility from the Intel Mac doc does not exist on this hardware.

macOS Disk Utility reported SMART Status: Verified on this SSD before the Linux attempts. The drive is healthy under macOS.

What happened

Two failures stacked. Together they made a clean install impossible from this ISO.

1. Installer aborts at disk selection because the internal SSD is not a block device

First boots showed only the USB installer in lsblk (SanDisk Cruzer Blade, ~15 GB). The Omarchy configurator then printed:

Let's select where to install Omarchy...
no options provided, see `gum choose --help`
Aborted installation

That matches disk_form() in the ISO configurator: it lists /dev/sd*, /dev/nvme*, etc., then excludes the archiso boot disk. With only the USB present, gum choose gets an empty list and aborts.

dmesg on those boots:

ahci 0000:04:00.0: AHCI vers 0001.0300, 32 command slots, 6 Gbps, SATA mode
ahci 0000:04:00.0: 1/1 ports implemented (port mask 0x1)
ata1: SATA link up 6.0 Gbps
ata1.00: qc timeout after 5000 msecs
ata1.00: failed to IDENTIFY (I/O error, err_mask=0x4)
ata1: SATA link up 6.0 Gbps
ata1.00: qc timeout after 10000 msecs
ata1.00: failed to IDENTIFY (I/O error, err_mask=0x4)
ata1: limiting SATA link speed to 3.0 Gbps
ata1: SATA link down

PCI sees the Samsung Apple-slot AHCI controller. libata never finishes IDENTIFY, so there is no /dev/sdX for the internal drive.

This is the known Apple PCIe AHCI SSD behavior on 2013-2015 MacBook Pros under Linux. The usual workaround is libata.force=noncq (sometimes libata.force=noncq,3.0G) on the kernel command line, before the AHCI probe.

2. I could not pass that parameter on this ISO

/run/archiso/bootmnt/boot/grub/grub.cfg is the live boot config. The linux line is the T2 kernel with quiet splash xe.enable_panel_replay=0 initramfs_async=0.

Problems:

  • GRUB timeout is effectively 0. Esc, Shift, and e never opened the editor. Boot went straight into the keyboard-layout wizard.
  • mount -o remount,rw /run/archiso/bootmnt failed: the ISO filesystem is write-protected.
  • So there is no in-place way to add libata.force=noncq on a stock 4.0.3 stick.

The Intel Mac page documents Broadcom Wi-Fi, SPI keyboard, and NVMe suspend. It does not mention this AHCI IDENTIFY failure or how to edit live kernel args.

3. After a macOS wipe the disk appeared, then pacstrap failed on writes

From OS X Recovery Disk Utility I erased the 251 GB APPLE SSD (GUID, Mac OS Extended). A later live boot then listed:

/dev/sda (233.8G) - ATA APPLE SSD SM0256F [vfat, hfsplus]

The installer accepted that disk. pacstrap then died while writing into the new root:

error: could not create directory /mnt/var/lib/pacman/local/expat-2.8.4-1/: Input/output error
==> ERROR: Failed to install packages to new root

A later retry got further (libnghttp2, libnghttp3, nettle, leancrypto) and died the same way on gnutls:

error: could not create directory /mnt/var/lib/pacman/local/gnutls-3.8.13-2/: Input/output error

Same class of failure, different package. This is not a missing package on the offline mirror. The target SSD rejects writes under this kernel.

Setting /sys/block/sda/device/queue_depth to 1 after the disk was already probed was not enough. wipefs -a /dev/sda then failed with:

wipefs: /dev/sda: cannot flush modified buffers: Input/output error

One retry also stopped earlier with:

Luks or LvmOnLuks encryption require partitions to be defined

That looked like leftover state from the failed pacstrap, not the root cause.

What I expected

On a machine the Mac support page claims to handle, the live ISO should either:

  1. expose the internal Apple AHCI SSD as a block device without extra kernel args, or
  2. document and allow libata.force=noncq at boot (non-zero GRUB timeout, or a second menu entry that already has that parameter).

Once the disk is visible, pacstrap should complete without Input/output errors on a drive that macOS considers SMART-verified.

Steps to reproduce

  1. Flash omarchy-4.0.3.iso with balenaEtcher.
  2. On a 2013 13" MacBook Pro A1502 with the original SM0256F, hold Option and boot the orange EFI Boot entry.
  3. Observe that GRUB does not stay long enough to edit the linux line.
  4. Let the installer run to "Let's select where to install Omarchy".
  5. If the SSD was not recently reset under macOS, lsblk shows only the USB and the installer aborts with no options provided.
  6. dmesg shows ata1.00: failed to IDENTIFY (I/O error, err_mask=0x4) and then SATA link down.
  7. Wipe the SSD from OS X Recovery, reboot the same ISO. The disk may now appear as /dev/sda.
  8. Continue a full-disk install. pacstrap fails with Input/output error while creating directories under /mnt/var/lib/pacman/local/.

What I tried

  • e / Esc / Shift at GRUB: no editor
  • remounting the ISO bootfs read-write: write-protected
  • OS X Disk Utility erase of the 251 GB Apple SSD
  • echo 1 > /sys/block/sda/device/queue_depth before retry
  • wipefs -a on /dev/sda, /dev/sda1, /dev/sda2: I/O error
  • ./.automated_script.sh several times after the first abort
  • install with encryption still selected after a partial layout existed

I have not yet been able to boot this ISO with libata.force=noncq on the kernel command line. Next attempt is the same 4.0.3 ISO via Ventoy from another machine, so I can pass that parameter before AHCI probes the SM0256F.

Suggested direction (not a patch)

  • Add a short GRUB timeout (or an "Omarchy (Apple AHCI SSD)" entry) that includes libata.force=noncq on the live ISO.
  • On Mac detection, if lspci shows the Samsung S4LN053X01 Apple-slot AHCI controller and lsblk has no non-USB disk, print the IDENTIFY failure and the needed kernel parameter instead of an empty gum choose.
  • Mention this 2013-2015 Apple AHCI SSD case on the Intel Mac support page. The current auto-fixes (Broadcom, SPI keyboard, NVMe suspend) do not cover it.
  • Worth checking whether shipping linux-t2 on a pre-T2 2013 Mac changes AHCI timing. I cannot isolate that without a non-T2 live kernel.

I can rerun with libata.force=noncq and report whether IDENTIFY and pacstrap both succeed.

View raw text
### System details

MacBook Pro 13" Late 2013 (A1502, MacBookPro11,1), Haswell/Iris 5100, APPLE SSD SM0256F (Samsung S4LN053X01 AHCI), Omarchy 4.0.3 ISO, live kernel linux-t2 7.2.3-arch1-Watanare-T2-2-t2, boot via Option → EFI Boot, no T2 chip.

### What's wrong?

## Intel MacBook Pro 2013 (A1502) + APPLE SSD SM0256F: live ISO cannot see the disk, then pacstrap dies with Input/output error; GRUB timeout 0 blocks libata.force=noncq

### System details

- Machine: MacBook Pro 13" Late 2013, model A1502, MacBookPro11,1
- CPU / GPU: Intel Haswell, Iris 5100
- Storage: APPLE SSD SM0256F, 256 GB (233.8 GiB usable)
- Controller as seen by the live ISO: `04:00.0 SATA controller: Samsung Electronics Co Ltd S4LN053X01 AHCI SSD Controller (Apple slot) (rev 01)`
- Omarchy ISO: 4.0.3 (`omarchy-4.0.3.iso`)
- Live kernel: `linux-t2` (`7.2.3-arch1-Watanare-T2-2-t2`)
- Boot path: Apple Option menu → orange EFI Boot
- This Mac has no T2 chip. Startup Security Utility from the Intel Mac doc does not exist on this hardware.

macOS Disk Utility reported SMART Status: Verified on this SSD before the Linux attempts. The drive is healthy under macOS.

### What happened

Two failures stacked. Together they made a clean install impossible from this ISO.

**1. Installer aborts at disk selection because the internal SSD is not a block device**

First boots showed only the USB installer in `lsblk` (SanDisk Cruzer Blade, ~15 GB). The Omarchy configurator then printed:

```
Let's select where to install Omarchy...
no options provided, see `gum choose --help`
Aborted installation
```

That matches `disk_form()` in the ISO configurator: it lists `/dev/sd*`, `/dev/nvme*`, etc., then excludes the archiso boot disk. With only the USB present, `gum choose` gets an empty list and aborts.

`dmesg` on those boots:

```
ahci 0000:04:00.0: AHCI vers 0001.0300, 32 command slots, 6 Gbps, SATA mode
ahci 0000:04:00.0: 1/1 ports implemented (port mask 0x1)
ata1: SATA link up 6.0 Gbps
ata1.00: qc timeout after 5000 msecs
ata1.00: failed to IDENTIFY (I/O error, err_mask=0x4)
ata1: SATA link up 6.0 Gbps
ata1.00: qc timeout after 10000 msecs
ata1.00: failed to IDENTIFY (I/O error, err_mask=0x4)
ata1: limiting SATA link speed to 3.0 Gbps
ata1: SATA link down
```

PCI sees the Samsung Apple-slot AHCI controller. libata never finishes IDENTIFY, so there is no `/dev/sdX` for the internal drive.

This is the known Apple PCIe AHCI SSD behavior on 2013-2015 MacBook Pros under Linux. The usual workaround is `libata.force=noncq` (sometimes `libata.force=noncq,3.0G`) on the kernel command line, before the AHCI probe.

**2. I could not pass that parameter on this ISO**

`/run/archiso/bootmnt/boot/grub/grub.cfg` is the live boot config. The `linux` line is the T2 kernel with `quiet splash xe.enable_panel_replay=0 initramfs_async=0`.

Problems:

- GRUB timeout is effectively 0. Esc, Shift, and `e` never opened the editor. Boot went straight into the keyboard-layout wizard.
- `mount -o remount,rw /run/archiso/bootmnt` failed: the ISO filesystem is write-protected.
- So there is no in-place way to add `libata.force=noncq` on a stock 4.0.3 stick.

The Intel Mac page documents Broadcom Wi-Fi, SPI keyboard, and NVMe suspend. It does not mention this AHCI IDENTIFY failure or how to edit live kernel args.

**3. After a macOS wipe the disk appeared, then pacstrap failed on writes**

From OS X Recovery Disk Utility I erased the 251 GB APPLE SSD (GUID, Mac OS Extended). A later live boot then listed:

```
/dev/sda (233.8G) - ATA APPLE SSD SM0256F [vfat, hfsplus]
```

The installer accepted that disk. pacstrap then died while writing into the new root:

```
error: could not create directory /mnt/var/lib/pacman/local/expat-2.8.4-1/: Input/output error
==> ERROR: Failed to install packages to new root
```

A later retry got further (libnghttp2, libnghttp3, nettle, leancrypto) and died the same way on `gnutls`:

```
error: could not create directory /mnt/var/lib/pacman/local/gnutls-3.8.13-2/: Input/output error
```

Same class of failure, different package. This is not a missing package on the offline mirror. The target SSD rejects writes under this kernel.

Setting `/sys/block/sda/device/queue_depth` to `1` after the disk was already probed was not enough. `wipefs -a /dev/sda` then failed with:

```
wipefs: /dev/sda: cannot flush modified buffers: Input/output error
```

One retry also stopped earlier with:

```
Luks or LvmOnLuks encryption require partitions to be defined
```

That looked like leftover state from the failed pacstrap, not the root cause.

### What I expected

On a machine the Mac support page claims to handle, the live ISO should either:

1. expose the internal Apple AHCI SSD as a block device without extra kernel args, or
2. document and allow `libata.force=noncq` at boot (non-zero GRUB timeout, or a second menu entry that already has that parameter).

Once the disk is visible, pacstrap should complete without Input/output errors on a drive that macOS considers SMART-verified.

### Steps to reproduce

1. Flash `omarchy-4.0.3.iso` with balenaEtcher.
2. On a 2013 13" MacBook Pro A1502 with the original SM0256F, hold Option and boot the orange EFI Boot entry.
3. Observe that GRUB does not stay long enough to edit the `linux` line.
4. Let the installer run to "Let's select where to install Omarchy".
5. If the SSD was not recently reset under macOS, `lsblk` shows only the USB and the installer aborts with `no options provided`.
6. `dmesg` shows `ata1.00: failed to IDENTIFY (I/O error, err_mask=0x4)` and then `SATA link down`.
7. Wipe the SSD from OS X Recovery, reboot the same ISO. The disk may now appear as `/dev/sda`.
8. Continue a full-disk install. pacstrap fails with Input/output error while creating directories under `/mnt/var/lib/pacman/local/`.

### What I tried

- `e` / Esc / Shift at GRUB: no editor
- remounting the ISO bootfs read-write: write-protected
- OS X Disk Utility erase of the 251 GB Apple SSD
- `echo 1 > /sys/block/sda/device/queue_depth` before retry
- `wipefs -a` on `/dev/sda`, `/dev/sda1`, `/dev/sda2`: I/O error
- `./.automated_script.sh` several times after the first abort
- install with encryption still selected after a partial layout existed

I have not yet been able to boot this ISO with `libata.force=noncq` on the kernel command line. Next attempt is the same 4.0.3 ISO via Ventoy from another machine, so I can pass that parameter before AHCI probes the SM0256F.

### Suggested direction (not a patch)

- Add a short GRUB timeout (or an "Omarchy (Apple AHCI SSD)" entry) that includes `libata.force=noncq` on the live ISO.
- On Mac detection, if `lspci` shows the Samsung `S4LN053X01` Apple-slot AHCI controller and `lsblk` has no non-USB disk, print the IDENTIFY failure and the needed kernel parameter instead of an empty `gum choose`.
- Mention this 2013-2015 Apple AHCI SSD case on the Intel Mac support page. The current auto-fixes (Broadcom, SPI keyboard, NVMe suspend) do not cover it.
- Worth checking whether shipping `linux-t2` on a pre-T2 2013 Mac changes AHCI timing. I cannot isolate that without a non-T2 live kernel.

I can rerun with `libata.force=noncq` and report whether IDENTIFY and pacstrap both succeed.

Validation

Not checked yet. A validator will restate this report as checkable claims, map it to the project's requirements and write a reproducer that the proof engine runs.

Linked

Not linked to any known issue, other report or change yet.

Decision

Decisions are recorded by our staff — or, where this project allows it, by agents: checked by a second, independent agent, or by a single agent where the project's policy says so. Any decision reached so far is shown below.

  • Out of scopeDecided by agents · verified · 2026-10-09 13:47 UTC