diff --git a/CHROMEOS-FLEX.md b/CHROMEOS-FLEX.md index ce003ec..4f7b2e9 100644 --- a/CHROMEOS-FLEX.md +++ b/CHROMEOS-FLEX.md @@ -1,11 +1,14 @@ -# ChromeOS Flex on hp-chell's internal eMMC +# ChromeOS (Flex / FydeOS) on hp-chell's internal eMMC + +**Currently installed: FydeOS** (`iris` build, 2026-09-27). It replaced +ChromeOS Flex; `install-flex-emmc.sh` handles both images. hp-chell (HP Chromebook 13 G1, MrChromebox UEFI firmware) dual-boots: | OS | Disk | Notes | |---|---|---| | KDE neon | `sda`, external USB/SD card (117GB) | primary OS, owns GRUB | -| ChromeOS Flex | `mmcblk0`, internal eMMC (29GB) | installed from neon, see below | +| FydeOS (was ChromeOS Flex) | `mmcblk0`, internal eMMC (29GB) | installed from neon, see below | Because neon lives entirely on external media, the eMMC can be wiped and reinstalled from the running neon system with no risk to neon. @@ -29,7 +32,11 @@ sudo ./install-flex-emmc.sh ~/Downloads/chromeos__reven_recovery_stable-cha - Updates the GRUB chainload entry (below) with the new EFI partition's UUID and runs `update-grub`. -Last installed: 2026-09-27, Flex `16640.57.0` (stable, `reven`). +Install history on the eMMC: +- 2026-09-27: ChromeOS Flex `16640.57.0` (stable, `reven`). It + auto-updated to `16640.61.0` on first boot. +- 2026-09-27: **FydeOS** `FydeOS_for_PC_iris_v23.0-SP1-io.bin` + (`amd64-fydeos_iris-io`, `16700.56.23.51`), which replaced Flex. ## Why not just `dd` the image @@ -111,7 +118,25 @@ Each of these broke an attempt during the 2026-09-27 install: The log must not be in `/tmp` if another user owns the file (root is denied by `fs.protected_regular`). -## Resulting layout (2026-09-27) +## Resulting layout + +FydeOS (current, 2026-09-27): + +``` +mmcblk0 29.1G +├─mmcblk0p1 23.7G ext4 STATE +├─mmcblk0p2 16M KERN-A +├─mmcblk0p3 2.7G ext4 ROOT-A +├─mmcblk0p4 16M KERN-B +├─mmcblk0p5 2.7G ext4 ROOT-B +├─mmcblk0p6-7 512B KERN-C / ROOT-C +├─mmcblk0p8 16M ext4 OEM +├─mmcblk0p9-10 512B reserved / reserved +├─mmcblk0p11 8M RWFW +└─mmcblk0p12 32M vfat EFI-SYSTEM (UUID F35E-F13C, PARTUUID 18151E4F-...) +``` + +ChromeOS Flex (2026-09-27, before FydeOS replaced it): ``` mmcblk0 29.1G @@ -126,24 +151,26 @@ mmcblk0 29.1G └─mmcblk0p12 256M vfat EFI-SYSTEM (UUID CBE4-703E) ``` -The ESP is copied from the image, so its FAT UUID (`CBE4-703E`) survived -the reinstall unchanged. The install itself left the UEFI boot entries +The ESP is copied from the image, so its FAT UUID comes from the image: +`CBE4-703E` for Flex (it survived the Flex reinstall unchanged) and +`F35E-F13C` for FydeOS. The install itself left the UEFI boot entries and `BootOrder` untouched, but Flex's first auto-update changed them. See "Flex takes over the UEFI boot order on updates" below. -## Booting Flex +## Booting ChromeOS (FydeOS) Two ways: 1. **From GRUB** (neon's menu, shown for 5s): the entry "ChromeOS Flex - (internal eMMC)" in `/etc/grub.d/40_custom` chainloads Flex's own EFI - loader (`crdyboot`) from the eMMC's ESP: + (internal eMMC)" in `/etc/grub.d/40_custom` chainloads the eMMC ESP's + own loader: FydeOS's GRUB now (Flex's was `crdyboot`). The title was + kept on purpose, since FydeOS is still ChromeOS. ``` menuentry "ChromeOS Flex (internal eMMC)" { insmod part_gpt insmod fat insmod chain - search --no-floppy --fs-uuid --set=root CBE4-703E + search --no-floppy --fs-uuid --set=root F35E-F13C chainloader /EFI/BOOT/BOOTX64.EFI } ``` @@ -153,7 +180,7 @@ Two ways: POST): `efibootmgr -v` shows `neon` (Boot0005, on the USB card) and `Internal eMMC` (Boot0001), with `BootOrder` `0005,0001,0000,0003,0002`. With the USB card unplugged, the firmware falls through to `Internal - eMMC` and boots Flex with no menu. + eMMC` and boots FydeOS with no menu. ## Flex takes over the UEFI boot order on updates @@ -206,13 +233,20 @@ Ways to live with it (none implemented yet): - Deleting `Boot0004` doesn't help: the next update recreates it. Neon's GRUB entry chainloads the ESP directly and doesn't need it. -## Other ChromiumOS-based images: FydeOS +After the FydeOS install, `Boot0004 "ChromeOS Flex"` was stale: it +pointed at the old Flex ESP (PARTUUID `2877e60b…`, start sector +`0x49000`), which no longer exists, so the firmware skipped it and fell +through to neon. It was deleted 2026-09-27 (`efibootmgr -b 0004 -B`), +which put `BootOrder` back to `0005,0001,0000,0003,0002`. Expect FydeOS +to add its own entry, and move it first, after its first update. -Checked 2026-09-27, by reading the image only (not installed): +## FydeOS + +Checked 2026-09-27 by reading the image, then **installed the same day +with `install-flex-emmc.sh` unchanged. It worked on the first try.** `FydeOS_for_PC_iris_v23.0-SP1-io.bin.zip` (board `amd64-fydeos_iris-io`, version `16700.56.23.51`), in `matt`'s `~/Downloads` (extracted copy in -`~/fydeos-check`). **`install-flex-emmc.sh` should work with it -unchanged.** +`~/fydeos-check`). - **Same installer image layout:** ROOT-A is p3 (2.7GB), ROOT-B is a 2MB placeholder, the ESP is p12. The same `chromeos-install` (Rust) @@ -238,8 +272,8 @@ unchanged.** because Secure Boot is disabled on hp-chell (`mokutil --sb-state`). The image's ESP UUID is `F35E-F13C`. -Caveats before trying it: -- It replaces Flex (same eMMC, full wipe). +Notes: +- It replaced Flex (same eMMC, full wipe). - The script rewrites the UUID in the `40_custom` entry titled "ChromeOS Flex", so FydeOS boots under that title. Decided 2026-09-27 to keep it, since FydeOS is effectively still ChromeOS. @@ -255,4 +289,7 @@ Caveats before trying it: is normal for this class of eMMC). Booted as live/installer media, as explained above. The note at the time that Flex expands STATE on first boot was wrong. -- **2026-09-27**: reinstalled properly with `install-flex-emmc.sh`. +- **2026-09-27**: reinstalled Flex properly with `install-flex-emmc.sh`. + It worked and auto-updated, but took over the UEFI boot order. +- **2026-09-27**: switched to FydeOS (`iris` build) with the same + script; deleted the stale Flex UEFI entry. diff --git a/CLAUDE.md b/CLAUDE.md index 0b5a3f7..6d44a87 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -16,7 +16,7 @@ This is a real **HP Chromebook 13 G1** ("chell" board), converted from ChromeOS - System: Manufacturer `Google`, Product Name `Chell`, Family `Google_Glados`, Serial `5CD732BLC9` — `Chell`/`Glados` is the Google Chrome OS board/reference codename for the HP Chromebook 13 G1. - Baseboard: Manufacturer `Google`, Product Name `Chell`, Serial `PFYTU018J90043`. - Implication: fanless Core m CPU, no way to add a fan — keep sustained-load expectations modest. -- **Storage correction (2026-09-04)**: `sda` (117GB, where `/` lives) is actually an external USB/SD card (`lsblk` shows `TRAN=usb`) — the whole KDE neon install boots from that external card, not from anything internal. The real internal eMMC (`mmcblk0`, ~29GB) was blank until 2026-09-04, when ChromeOS Flex was installed onto it — see "Dual boot" section below. (Superseded the original note here, which incorrectly assumed `sda` was internal.) +- **Storage correction (2026-09-04)**: `sda` (117GB, where `/` lives) is actually an external USB/SD card (`lsblk` shows `TRAN=usb`) — the whole KDE neon install boots from that external card, not from anything internal. The real internal eMMC (`mmcblk0`, ~29GB) was blank until 2026-09-04, when ChromeOS Flex was installed onto it — see "Dual boot" below. (Superseded the original note here, which incorrectly assumed `sda` was internal.) ## Kernel 7.x black-screen bug (diagnosed and fixed 2026-09-03) @@ -117,20 +117,23 @@ flash itself, not a recurrence of the underlying i915 bug or a new problem. If it happens again right after a firmware update, try a forced power-off + power-on before assuming anything is actually broken. -## Dual boot: KDE neon (USB) + ChromeOS Flex (internal eMMC) +## Dual boot: KDE neon (USB) + ChromeOS (internal eMMC) -ChromeOS Flex is installed on the internal eMMC (`/dev/mmcblk0`); neon +**FydeOS** (ChromiumOS-based, `iris` build; replaced ChromeOS Flex on +2026-09-27) is installed on the internal eMMC (`/dev/mmcblk0`); neon stays on the external `sda`. **Full details are in `CHROMEOS-FLEX.md`**, covering install/reinstall via `install-flex-emmc.sh`, why a raw `dd` of the recovery image boots as live media, `chromeos-install`-from-Linux gotchas, the partition layout, and boot selection. Quick reference: -- Reinstall: `sudo ./install-flex-emmc.sh ` (wipes +- Reinstall: `sudo ./install-flex-emmc.sh ` (wipes the eMMC, masks every other disk, about 2.5 min, log in `/var/log/flex-install.log`). -- Boot Flex from neon's GRUB menu with the "ChromeOS Flex (internal +- Boot it from neon's GRUB menu with the "ChromeOS Flex (internal eMMC)" entry (in `/etc/grub.d/40_custom`; chainloads the ESP with FS - UUID `CBE4-703E`), or from the firmware picker (`Esc` at POST, then - `Internal eMMC`). With the USB card unplugged, the firmware boots Flex + UUID `F35E-F13C`; title kept from Flex), or from the firmware picker (`Esc` at POST, then + `Internal eMMC`). With the USB card unplugged, the firmware boots it directly. +- ChromeOS updates re-add a UEFI entry and put it first in `BootOrder`; + see `CHROMEOS-FLEX.md`.