Apply microSD write tweaks; correct docs: neon is on the built-in microSD slot

commit=30 on the root fs, journald capped at 100M, smartmontools disabled.
The neon root is a microSD card in the built-in slot (USB-attached reader),
not an external USB card; wording fixed across docs and the install script.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ergosteur
2026-09-27 13:18:03 -04:00
co-authored by Claude Opus 5.5
parent c8afa460f4
commit 5374c2a5ed
5 changed files with 32 additions and 14 deletions
+4 -4
View File
@@ -7,10 +7,10 @@ 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 |
| KDE neon | `sda`, microSD card in the built-in slot (117GB; the reader is USB-attached internally) | primary OS, owns GRUB |
| 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
Because neon lives entirely on the microSD card, the eMMC can be wiped and
reinstalled from the running neon system with no risk to neon.
## Installing / reinstalling
@@ -177,9 +177,9 @@ Two ways:
Run `sudo update-grub` after editing `40_custom`. The install script
rewrites the `--fs-uuid` value automatically.
2. **From the firmware boot picker** (MrChromebox UEFI, `Esc` during
POST): `efibootmgr -v` shows `neon` (Boot0005, on the USB card) and
POST): `efibootmgr -v` shows `neon` (Boot0005, on the microSD card) and
`Internal eMMC` (Boot0001), with `BootOrder` `0005,0001,0000,0003,0002`.
With the USB card unplugged, the firmware falls through to `Internal
With the microSD card removed, the firmware falls through to `Internal
eMMC` and boots FydeOS with no menu.
## Flex takes over the UEFI boot order on updates
+5 -5
View File
@@ -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" below. (Superseded the original note here, which incorrectly assumed `sda` was internal.)
- **Storage correction (2026-09-04)**: `sda` (117GB, where `/` lives) is a microSD card in the laptop's **built-in microSD slot**. The slot's reader hangs off the internal USB bus, which is why `lsblk` shows `TRAN=usb`, but it is *not* an external USB device. The whole KDE neon install boots from that microSD card, not from the eMMC. (Wording corrected 2026-09-27; earlier notes called it an "external USB/SD card".) 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 the internal eMMC.)
## Kernel 7.x black-screen bug (diagnosed and fixed 2026-09-03)
@@ -117,11 +117,11 @@ 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 (internal eMMC)
## Dual boot: KDE neon (microSD) + ChromeOS (internal eMMC)
**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`**,
stays on the microSD card (`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.
@@ -133,7 +133,7 @@ Quick reference:
- 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 `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
`Internal eMMC`). With the microSD card removed, the firmware boots it
directly.
- ChromeOS updates re-add a UEFI entry and put it first in `BootOrder`;
see `CHROMEOS-FLEX.md`.
@@ -164,5 +164,5 @@ history): keyd Chromebook keyboard remap (built from source,
via `/etc/modules-load.d/cros-video.conf` (`cros_ec_typec`,
`typec_displayport`), `linux-generic-hwe-24.04-edge` (why it's on 7.x
kernels) plus the 6.17 fallback, `/tmp` on tmpfs + localepurge to spare
the USB-card root, the removed r8152 DKMS driver, disabled tailscaled,
the microSD root, the removed r8152 DKMS driver, disabled tailscaled,
and third-party apt repos and hand-installed tools.
+20 -3
View File
@@ -64,10 +64,11 @@ history show `nano /etc/default/grub` + `update-grub`): `GRUB_DEFAULT=0`,
`GRUB_TIMEOUT=5`, `GRUB_TIMEOUT_STYLE=menu`,
`GRUB_CMDLINE_LINUX_DEFAULT='splash'` (see `setup-i915-kernel7-fix.sh`).
## Storage / wear on the USB-card root
## Storage / wear on the microSD root
neon's root is an external USB/SD card, so a few changes cut down writes
and space use:
neon's root is a microSD card in the built-in slot (`sda`; the slot's
reader is USB-attached internally), and microSD handles lots of small
writes poorly, so a few changes cut down writes and space use:
- **`/tmp` is tmpfs** (in `/etc/fstab`:
`tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0`). Not in the shell
history, so it was probably added in the same `nano /etc/fstab` edit
@@ -79,6 +80,22 @@ and space use:
install (`USE_DPKG`, `MANDELETE`). If another language's translations
or man pages are ever needed, add them with
`sudo dpkg-reconfigure localepurge`.
- **Root mounted with `commit=30`** (2026-09-27): the root line in
`/etc/fstab` is `defaults,commit=30`; the pre-change copy is
`/etc/fstab.bak-2026-09-27`. ext4 commits its journal every 30s
instead of every 5s, so writes are batched into fewer, larger bursts.
Trade-off: a crash or forced power-off can lose up to ~30s of recent
changes that weren't fsync'd (apt/dpkg, editors and databases fsync, so
they're unaffected). 30 rather than 60 because this machine has needed
forced power-offs. `relatime` is kept deliberately (not `noatime`).
- **journald capped at 100MB** (2026-09-27):
`/etc/systemd/journald.conf.d/50-max-size.conf` sets
`SystemMaxUse=100M` (it was 455MB).
- **`smartmontools` disabled** (2026-09-27, `systemctl disable --now`):
it failed on every boot because neither the microSD card nor the eMMC
supports SMART.
- The card doesn't support discard/TRIM (`lsblk -D` shows 0), so
`fstrim.timer` does nothing for it. That's harmless and was left alone.
## Networking
+1 -1
View File
@@ -3,7 +3,7 @@
Set up **2026-03-05**, reconstructed on 2026-09-27 from `~/.bash_history`
and the live config. It replaces the disk swapfile with compressed swap
in RAM. That suits this machine: 15GiB RAM, and neon's root lives on a
slow external USB/SD card (`sda`) that you don't want to swap to or wear
slow microSD card in the built-in slot (`sda`) that you don't want to swap to or wear
out.
## Current state (2026-09-27)
+2 -1
View File
@@ -2,7 +2,8 @@
# install-flex-emmc.sh
#
# Properly install ChromeOS Flex onto hp-chell's internal eMMC from the
# running KDE neon system (which boots from an external USB/SD card).
# running KDE neon system (which boots from the microSD card in the built-in
# slot; its reader is USB-attached internally, so it shows as sda).
#
# Why not just dd the image: the Flex recovery .bin is an *installer*
# image -- ROOT-B is a 2MB placeholder and STATE is a fixed ~6GB with