Skip to content

emOS emos-v0.3

Latest

Choose a tag to compare

@github-actions github-actions released this 06 Sep 11:57
· 1 commit to main since this release
12ef5b3

emOS 0.3

Keeps routine logging off the flash, and makes the flash's own wear readable.

The network log lived on the eMMC, unbounded

net.log was on /data and appended with no bound — and not only its own lines:
spawn() points every child's stdout and stderr there, so wmt_loader,
wpa_supplicant, dhcpcd, ntpd and the five-second wpa_cli nudge all wrote to
flash through it. A device that cannot join its network wrote to the eMMC every
five seconds for ever, in exactly the failure state where nobody is watching.

It now lives on /run, the tmpfs whose own comment says it exists so routine
logging never touches the eMMC — this was the one log that did not use it.
Capped at 128KB with one rotation. The cost is that it does not survive a
reboot, which is the right trade: it answers "why is the network not up NOW",
read over the console while the device is running, and a crash spanning a
reboot is what the last_kmsg copies are for.

Everything else that writes to /data was swept and is already bounded or writes
only on change, including boot-good.img, which compares the boot header's SHA1
image id rather than the size.

debugfs is mounted, so the eMMC reports its wear

The flash carries PRE_EOL_INFO and two life-time estimates in its Extended CSD.
On this kernel the only route to them is
/sys/kernel/debug/mmc0/mmc0:0001/ext_csd — the generic sysfs attributes are a
Linux 4.9 addition and 3.18 has neither, and Samsung's vendor samsung_smart
answers "version 0, error mode: Invalid".

Without the mount that directory is empty, so the health of the part we write
to was unreadable on the OS doing the writing.

Requires a reflash to take effect: this is in the boot image, not the
controller.

What's Changed

  • Say WHERE the packer could not reproduce a boot image by @wilbowes in #456
  • Do not require a boot image's id to reproduce, and check the escrow's md5 by @wilbowes in #457
  • Reuse the reference's MTK kernel header instead of guessing its padding byte by @wilbowes in #458
  • Ask whether the device connected, and roll a bad network back by @wilbowes in #460
  • Wait for the device to REGISTER, which is not the same as connecting by @wilbowes in #461
  • Keep the network log in RAM, and bound it by @wilbowes in #462

Full Changelog: emos-v0.2...emos-v0.3