Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
357 commits
Select commit Hold shift + click to select a range
dee022c
The open network's check reads the lease off the station's name in th…
DevomB Oct 12, 2026
49c54ff
Merge wifi-open-networks: the open network's check reads the station'…
DevomB Oct 12, 2026
15c5ef1
perl's Config.pm records no build host, and SOURCE_DATE_EPOCH's time
DevomB Oct 12, 2026
19dfb84
A radio scans from random addresses, never its own or a network's
DevomB Oct 12, 2026
30ba5fe
Merge wifi-open-networks: an open network can be saved, which the men…
DevomB Oct 12, 2026
56daf1f
The desktop menu's Wi-Fi window saves an open network with o, asking …
DevomB Oct 12, 2026
3962b74
rtl8192cufw is left out: rtl8xxxu lists the 8192CU only under RTL8XXX…
DevomB Oct 12, 2026
05461a7
perl's config.over sets cf_by too, and the doc names every file the v…
DevomB Oct 12, 2026
78102f4
firmware.list: RTL8XXXU_UNTESTED is left unset, not unbuilt
DevomB Oct 12, 2026
4c4046d
Build C++ with libstdc++'s assertions
DevomB Oct 12, 2026
007ecf3
The scan-address wording holds for a driver that refuses a new addres…
DevomB Oct 12, 2026
402e5bc
The menu's Wi-Fi line fits 80 columns, and the open network's check w…
DevomB Oct 12, 2026
5470770
WCN6855 revision 2.1, QCA2066 and QCA6698AQ cards get their firmware
DevomB Oct 12, 2026
39caaad
hardening.md names what libstdc++'s assertions check: no iterators
DevomB Oct 12, 2026
75d7164
Realtek Ethernet gets the PHY and MAC patches r8169 and r8152 ask for
DevomB Oct 12, 2026
4285536
tg3's four firmware files ship: a 5701 A0 needs one to come up
DevomB Oct 12, 2026
2d2e5fc
ADR-012 says Ethernet, Realtek's and Tigon3's
DevomB Oct 12, 2026
172194a
firmware.list's comments name the MT7920 and keep the file's width
DevomB Oct 12, 2026
9269ff2
kryptik wifi scan and the menu's s list the networks in range, as the…
DevomB Oct 12, 2026
b27342d
ADR-012: Realtek's files patch the MAC as well as the PHY
DevomB Oct 12, 2026
13961e5
The daemon's verb list names wifi-scan on a line of its own, beside t…
DevomB Oct 12, 2026
1375375
The guide says an AMD machine needs a 2025 firmware for Zen 5 microco…
DevomB Oct 12, 2026
f983574
The QCA6174's first revision gets its firmware too
DevomB Oct 12, 2026
736553c
The guide names Ryzen AI Max among the Zen 5 processors
DevomB Oct 12, 2026
b2d6393
brcmfmac is built for PCIe only: the image ships no SDIO firmware
DevomB Oct 12, 2026
4d0be52
boot.fragment says what brcmfmac's SDIO bus would do without firmware
DevomB Oct 12, 2026
f25a4dc
A scan asked for during the net zone's pass is answered at its end, n…
DevomB Oct 12, 2026
9fc58cf
The acceptance checks every firmware file a module names is shipped
DevomB Oct 12, 2026
509f096
A radio switched off and on again rejoins by itself, and the net zone…
DevomB Oct 12, 2026
eb102e2
The menu numbers the networks a scan heard, and a or o takes one by i…
DevomB Oct 12, 2026
344bd89
The firmware check reads built-in drivers too, and says what it canno…
DevomB Oct 12, 2026
f03ae69
A radio switched off as the net zone starts gets its supplicant once …
DevomB Oct 12, 2026
5d247c3
Merge wifi-radio-off: a radio switched off as the net zone starts get…
DevomB Oct 12, 2026
f479325
A network taken by its number is saved only as its scan line says it …
DevomB Oct 12, 2026
2beb5b3
The README's Wi-Fi list names the QCA2066, QCA6698AQ and MT7920
DevomB Oct 12, 2026
0b59154
The login prompt says when the kernel refused this processor's microcode
DevomB Oct 12, 2026
91c9133
The microcode notice reads as the update notice does: what, then what…
DevomB Oct 12, 2026
8325a7e
A failed open-network check says what the station's radio hears by it…
DevomB Oct 12, 2026
42f2909
The installer gives the firmware an entry for slot a, for firmware th…
DevomB Oct 12, 2026
4d9b352
The threat model says a compromised net zone can list networks that a…
DevomB Oct 12, 2026
11bf39a
microcode-notice.sh is a function sysinit sources, as its other helpe…
DevomB Oct 12, 2026
d11a545
Python's _xxtestfuzz goes with the other test modules
DevomB Oct 12, 2026
ddc6d70
pldd, sprof, sotruss-lib and pcprofiledump stay accepted: glibc never…
DevomB Oct 12, 2026
f23232c
The install suite checks the entry's PARTUUID against the new GPT; th…
DevomB Oct 12, 2026
017dd77
The installer's plan names the disk's model and what each partition h…
DevomB Oct 12, 2026
233323b
The installer refuses a state passphrase shorter than 8 characters
DevomB Oct 12, 2026
be91e21
ADR-012 says when an AMD processor keeps its firmware's microcode
DevomB Oct 12, 2026
6e91861
ADR-012's microcode line names no login notice, which another change …
DevomB Oct 12, 2026
3d8b6b9
The passphrase floor counts characters, not the C locale's bytes
DevomB Oct 12, 2026
3cb63ea
ADR-012's microcode sentence reads plainly
DevomB Oct 12, 2026
b03a1b6
The desktop suite's scan waits for the net zone the open network's fo…
DevomB Oct 12, 2026
51c6bb7
The installer refuses a disk with 4096-byte logical sectors before wr…
DevomB Oct 12, 2026
bfd5621
The desktop suite asks for the scan until the restarted net zone answers
DevomB Oct 12, 2026
31ed8fb
Merge wifi-scan-list: the desktop suite asks for the scan until the r…
DevomB Oct 12, 2026
60bedde
Merge wifi-radio-off: the scan check waits for the restarted net zone…
DevomB Oct 12, 2026
fda077b
The guide says which firmware settings keep the stick or the disk out…
DevomB Oct 12, 2026
9a290a8
The 4Kn refusal says what is certain: Linux does not mount that FAT, …
DevomB Oct 12, 2026
814bf7f
The guide's firmware paragraph says where to read the RAID message, a…
DevomB Oct 12, 2026
1db07dd
The README says the RTL8188CU and RTL8192CU sticks are not driven
DevomB Oct 12, 2026
fcfd9ca
Merge intel-firmware-requested
DevomB Oct 12, 2026
25e9630
The install medium's shell opens under a few lines saying what it is for
DevomB Oct 12, 2026
86ccb59
The banner names INSTRUCTIONS.md, which a release ships beside its im…
DevomB Oct 12, 2026
a25a50b
The design's installer paragraph names the 4Kn refusal
DevomB Oct 12, 2026
cd104c6
The design's installer paragraph names the passphrase floor
DevomB Oct 12, 2026
f489a32
kryptik-recover --status names the firmware's Kryptik entries, BootOr…
DevomB Oct 12, 2026
918701e
--status takes an entry as a slot's only when its file is that slot's…
DevomB Oct 12, 2026
489cf4d
The radio-off check switches phy0 by its rfkill index, as the radio's…
DevomB Oct 12, 2026
1b10f74
A scan asked as the net zone restarts says the zone is not running, n…
DevomB Oct 12, 2026
5a7686e
Merge wifi-scan-list: a scan asked as the net zone restarts says it i…
DevomB Oct 12, 2026
30ee7c0
Merge wifi-radio-off: the radio-off check switches phy0 by its rfkill…
DevomB Oct 12, 2026
ed1df0c
The medium's banner says whether Secure Boot is on, which only a seri…
DevomB Oct 12, 2026
5efa0c8
A zone volume's new passphrase needs at least 8 characters, from volu…
DevomB Oct 12, 2026
22589bf
A failed Wi-Fi join is followed by a new scan, so a second saved netw…
DevomB Oct 12, 2026
fa1c334
Merge wifi-rejoin-after-failure: a failed join is followed by a scan;…
DevomB Oct 12, 2026
8dc18fc
Merge wifi-open-networks: a failed join is followed by a scan; the se…
DevomB Oct 12, 2026
a8bd6d9
Merge wifi-own-address: a failed join is followed by a scan; the seco…
DevomB Oct 12, 2026
78d47dc
Merge wifi-open-networks: a failed join is followed by a scan; the se…
DevomB Oct 12, 2026
243306e
Merge menu-wifi-open: a failed join is followed by a scan; the second…
DevomB Oct 12, 2026
cfb18c7
The scan's refusal reads as an if on whether the zone still runs
DevomB Oct 12, 2026
a3ca5dd
Merge wifi-scan-list: a failed join is followed by a scan; the second…
DevomB Oct 12, 2026
10780c2
Merge wifi-radio-off: a failed join is followed by a scan; the second…
DevomB Oct 12, 2026
bd7e527
The plan's partition sizes come from lsblk's raw output, which pads n…
DevomB Oct 12, 2026
931a384
The README's storage line says an install disk needs 512-byte logical…
DevomB Oct 12, 2026
9243239
Changing the state passphrase holds the new one to 8 characters
DevomB Oct 12, 2026
c71edf0
The net zone's supplicant ages scan results by the kernel's own count…
DevomB Oct 12, 2026
0704de6
kryptik-recover rewrites an ESP that no longer mounts before it resto…
DevomB Oct 12, 2026
eac90a1
The installer leaves no kernel or version on the ESP for the empty sl…
DevomB Oct 12, 2026
f4a2031
The guide's ESP limitation names kryptik-recover's rewrite too
DevomB Oct 12, 2026
ee77a36
The guide's limitations name the 4Kn refusal
DevomB Oct 12, 2026
efd166f
A failing disk is not rewritten, mount says why, and --status keeps t…
DevomB Oct 12, 2026
5f4b09b
Stage 06 and the acceptance refuse an executable file the list does n…
DevomB Oct 12, 2026
1dd7f5a
A radio switched off as the net zone starts moves in down, so the zon…
DevomB Oct 12, 2026
fb1c61b
Merge wifi-radio-off: a radio switched off as the net zone starts mov…
DevomB Oct 12, 2026
1d8ca01
A radio switched off as the net zone starts moves in down, so the zon…
DevomB Oct 12, 2026
ae6e4f6
A trial the firmware never tried says so, as BootNext is still set af…
DevomB Oct 12, 2026
3687585
Merge radio-off-at-start: a radio switched off as the net zone starts…
DevomB Oct 12, 2026
111330c
Merge wifi-radio-off: radio-off-at-start merged in
DevomB Oct 12, 2026
1c9a079
A trial the firmware never used reads as never started
DevomB Oct 12, 2026
a9e8e5b
kryptik-recover --status says whether the state partition still has i…
DevomB Oct 12, 2026
38dda66
The carry tests name a radio's rfkill state, which carry_nic now takes
DevomB Oct 12, 2026
5bc7c89
Merge radio-off-at-start: the carry tests take the rfkill state
DevomB Oct 12, 2026
475e92a
Merge wifi-radio-off: the carry tests take the rfkill state
DevomB Oct 12, 2026
83271c3
The image's program list reads a lone [ as a name and a closed [...] …
DevomB Oct 12, 2026
04a56b7
USB networking for NetChip 1080 cables, CDC-subset links and the Shar…
DevomB Oct 12, 2026
27386e3
wifi-bss-age's verdict line sits with the radio checks, clear of the …
DevomB Oct 12, 2026
230c8a1
The design says where a switched-off radio's carry belongs: with how …
DevomB Oct 12, 2026
131f3ad
Merge radio-off-at-start: the design text moves to how a radio leaves…
DevomB Oct 12, 2026
b1ac9e4
Merge wifi-radio-off: the design text for a switched-off radio moves
DevomB Oct 12, 2026
39128a4
The radio's rfkill index is taken in a block of its own, below the mo…
DevomB Oct 12, 2026
2bfa604
The image leaves out groff's, openssl's and gettext's documentation t…
DevomB Oct 12, 2026
4573dca
Merge radio-off-at-start: the rfkill index in a block of its own
DevomB Oct 12, 2026
98efed0
Merge wifi-radio-off: the rfkill index in a block of its own
DevomB Oct 12, 2026
9a5b07c
The rfkill index is read inside the module's load, and its switch def…
DevomB Oct 12, 2026
6acdae9
Merge radio-off-at-start: the rfkill index read inside the module's load
DevomB Oct 12, 2026
188bd8b
rfkill_soft is defined before the radio-off check, its first caller here
DevomB Oct 12, 2026
8dac7c2
Merge wifi-radio-off: the rfkill index read inside the module's load
DevomB Oct 12, 2026
8042e8f
A proposal weighs three ways to say why a Wi-Fi network was not joined
DevomB Oct 12, 2026
948dd01
The --write case goes through check(), so its arguments are used
DevomB Oct 12, 2026
1812628
The Wi-Fi refusals note reads the link as the loop does, and keeps th…
DevomB Oct 12, 2026
33027b8
Merge image-programs-named: the program list's test passes check() an…
DevomB Oct 12, 2026
b29abb6
Merge image-programs-named: the program list's test passes check() an…
DevomB Oct 12, 2026
64d4ecb
esp_readable sits beside slot_dev, apart from the ESP helpers that mo…
DevomB Oct 12, 2026
5c5aedf
Merge recover-rewrites-esp: esp_readable beside slot_dev
DevomB Oct 12, 2026
910c0d9
Slot b's records go on a line of their own, apart from the ESP writes…
DevomB Oct 12, 2026
7494672
The Wi-Fi verb's calls stay as they were; the state verb asks through…
DevomB Oct 12, 2026
eb428da
kryptikd's words on a switched-off radio say what it does, and leave …
DevomB Oct 12, 2026
17d8c20
Merge radio-off-at-start: kryptikd's words on a switched-off radio
DevomB Oct 12, 2026
ba20f72
Merge wifi-radio-off: kryptikd's words on a switched-off radio
DevomB Oct 12, 2026
4caf0d5
Merge kernel-job-lock-check (#328): CI's kernel job checks the kernel…
DevomB Oct 12, 2026
e369b9a
Merge decisions-match-tree (#329): The decision records and the harde…
DevomB Oct 12, 2026
59610c7
Merge resolved-config-in-log (#330): The kernel job's log keeps the r…
DevomB Oct 12, 2026
b7201f1
Merge updater-after-kryptikd (#332): Stage 04 installs kryptikd befor…
DevomB Oct 12, 2026
2d694de
Merge esp-writers-shared (#333): Every tool writes the ESP's records …
DevomB Oct 12, 2026
f6470cc
Merge kernel-6.18.56-hardened1 (#334): The kernel is 6.18.56 with lin…
DevomB Oct 12, 2026
d1d5202
Merge degraded-boot-rtc (#335): A degraded boot's clock corrections s…
DevomB Oct 12, 2026
be946cd
Merge iana-etc-20261009 (#336): iana-etc is 20261009, so every pin is…
DevomB Oct 12, 2026
0798b69
Merge wpa-supplicant-own-user (#337): The net zone's wpa_supplicant r…
DevomB Oct 12, 2026
7c63d79
Merge audit-every-object (#338): The image's programs and libraries a…
DevomB Oct 12, 2026
6b0883c
Merge root-image-compressed (#339): The update payload carries the ro…
DevomB Oct 12, 2026
4aacc74
Merge setuid-audit-stale (#340): The setuid audit refuses an entry wi…
DevomB Oct 12, 2026
7405937
Merge suites-shared-drive (#341): The install, integrity and keyboard…
DevomB Oct 12, 2026
5e2c75c
Merge passwd-not-setuid (#342): passwd keeps no setuid bit, so su is …
DevomB Oct 12, 2026
43c4bc2
Merge image-manifest-record (#343): The acceptance records every entr…
DevomB Oct 12, 2026
7f542e1
Merge libnl-no-tools (#344): libnl is built without its command-line …
DevomB Oct 12, 2026
181f4bd
Merge inetutils-no-clients (#345): inetutils installs no ftp, telnet,…
DevomB Oct 12, 2026
0053450
Merge zone-own-resolver (#346): Each routed zone asks a resolver of i…
DevomB Oct 12, 2026
2324e2b
Merge update-forget (#347): kryptik update forget stops a release tha…
DevomB Oct 12, 2026
da22cde
Merge python-no-tests (#348): Python ships without its test suite, it…
DevomB Oct 12, 2026
d38967c
Merge glibc-fortified (#349): glibc is built with --enable-fortify-so…
DevomB Oct 12, 2026
3eec70d
Merge suites-drive-shared (#350): The zones and desktop suites drive …
DevomB Oct 12, 2026
13ccb06
Merge rust-remap-paths (#351): kryptikd and kryptik-wlproxy are built…
DevomB Oct 12, 2026
8149e8a
Merge root-image-repeatable (#352): The root image is the same bytes …
DevomB Oct 12, 2026
6fb63f6
Merge libevdev-survey-gitlab (#353): The pin survey reads libevdev's …
DevomB Oct 12, 2026
51e7dcb
Merge manifest-created-date (#355): The update manifest's created dat…
DevomB Oct 12, 2026
5176fc3
Merge delta-count (#357): The acceptance report says what a delta upd…
DevomB Oct 12, 2026
55bbc6b
Merge chrome-wifi-menu (#358): The desktop's menu lists, adds and for…
DevomB Oct 12, 2026
2415c31
Merge guide-zstd-windows-macos (#359): The guide says where macOS and…
DevomB Oct 12, 2026
b458b8f
Merge menu-updates (#360): The desktop's menu shows the update status…
DevomB Oct 12, 2026
1f91ce3
Merge chrome-network-line (#361): The desktop's menu has a Network li…
DevomB Oct 12, 2026
40738a5
Merge udev-hwdb-compiled (#362): udev's hardware database is compiled…
DevomB Oct 12, 2026
32e0327
Merge image-excludes-list (#363): The image leaves out hwdata's ID fi…
DevomB Oct 12, 2026
0dc0663
Merge archives-stripped (#364): Static archives in the image lose the…
DevomB Oct 12, 2026
df0e2dc
Merge binutils-no-gold (#365): binutils is built without gold, which …
DevomB Oct 12, 2026
d33be01
Merge glibc-review-advisory (#366): The glibc pin review names GLIBC-…
DevomB Oct 12, 2026
95c01e2
Merge recover-status-boot-file (#367): kryptik-recover --status names…
DevomB Oct 12, 2026
b999279
Merge guide-header-backup-disk (#368): The guide says the medium read…
DevomB Oct 12, 2026
88a220d
Merge update-created-wording (#369): kryptik-update calls the manifes…
DevomB Oct 12, 2026
cb535b6
Merge failed-trial-said (#370): A failed trial says why in kryptik up…
DevomB Oct 12, 2026
23bd7cb
Merge release-notes-grouped (#371): Release notes give one line per a…
DevomB Oct 12, 2026
14bd63c
Merge releases-page-payload (#374): The releases page's list names th…
DevomB Oct 12, 2026
b62c149
Merge armed-trial-said (#375): An armed trial shows in kryptik update…
DevomB Oct 12, 2026
59ee366
Merge amd-microcode-firmware (#383): The guide says an AMD machine ne…
DevomB Oct 12, 2026
8fea113
Merge guide-firmware-settings (#394): The guide says which firmware s…
DevomB Oct 12, 2026
9b0e80b
Merge volume-passphrase-floor (#397): A zone volume's new passphrase …
DevomB Oct 12, 2026
7fc034a
Merge wifi-rejoin-after-failure (#398): A failed Wi-Fi join is follow…
DevomB Oct 12, 2026
2a22eb5
Merge wifi-open-networks (#354): A Wi-Fi network with no passphrase c…
DevomB Oct 12, 2026
80e28e9
Merge wifi-own-address (#356): Each saved Wi-Fi network sees the mach…
DevomB Oct 12, 2026
6c4010e
Merge wifi-scan-address (#379): A radio scans from random addresses, …
DevomB Oct 12, 2026
f33a600
Merge wifi-refusals-proposal (#410): A proposal weighs three ways to …
DevomB Oct 12, 2026
52184a6
Merge microcode-refused-notice (#388): The login prompt says when the…
DevomB Oct 12, 2026
32f632c
Merge install-firmware-entry (#389): The installer gives the firmware…
DevomB Oct 12, 2026
bb22f03
Merge install-plan-names-disk (#390): The installer's plan names the …
DevomB Oct 12, 2026
7cd96e7
Merge state-passphrase-floor (#391): The installer refuses a state pa…
DevomB Oct 12, 2026
e19ae99
Merge install-refuses-4kn (#393): The installer refuses a disk with 4…
DevomB Oct 12, 2026
9ef8004
Merge medium-banner (#395): The install medium's shell opens under a …
DevomB Oct 12, 2026
ddb5a6e
Merge recover-status-firmware (#396): kryptik-recover --status names …
DevomB Oct 12, 2026
8e2bcc4
Merge state-change-floor (#399): Changing the state passphrase holds …
DevomB Oct 12, 2026
3bf0627
Merge recover-rewrites-esp (#401): kryptik-recover rewrites an ESP th…
DevomB Oct 12, 2026
288c030
Merge recover-status-state (#406): kryptik-recover --status says whet…
DevomB Oct 12, 2026
700e5b1
Merge install-unlists-slot-b (#402): The installer leaves no kernel o…
DevomB Oct 12, 2026
facdbdc
Merge trial-not-tried (#405): A trial the firmware never started says…
DevomB Oct 12, 2026
0e99769
medium-shell expects --status's lines in the order it prints them: th…
DevomB Oct 12, 2026
db09efa
Merge recover-status-firmware: medium-shell expects --status's lines …
DevomB Oct 12, 2026
b95c516
Merge recover-rewrites-esp: medium-shell expects --status's lines in …
DevomB Oct 12, 2026
29e61be
Merge recover-status-state (#406): medium-shell expects --status's li…
DevomB Oct 12, 2026
12d5f44
The program list names #379's guest-test probe, which lands before it
DevomB Oct 12, 2026
4f82c28
Merge image-programs-named: the list of the image's programs, which t…
DevomB Oct 12, 2026
3de88b7
Merge image-programs-named: the list of the image's programs, which t…
DevomB Oct 12, 2026
9dbfac1
The image's program list names microcode-notice.sh, which this installs
DevomB Oct 12, 2026
fd82bf3
The image's program list names medium-banner.sh, which this installs
DevomB Oct 12, 2026
dd6289e
Merge image-programs-named: the list names #379's probe script
DevomB Oct 12, 2026
365b447
Merge image-programs-named: the list names #379's probe script
DevomB Oct 12, 2026
08ec38e
Merge libinput-c-tools (#372)
DevomB Oct 12, 2026
da78204
Merge intel-firmware-requested (#376)
DevomB Oct 12, 2026
25ac813
Merge brcmfmac-pcie-only (#384)
DevomB Oct 12, 2026
53cedbf
Merge firmware-requested-check (#385)
DevomB Oct 12, 2026
74065d1
Merge modules-zstd (#377)
DevomB Oct 12, 2026
ed31c57
Merge perl-config-fixed (#378)
DevomB Oct 12, 2026
740e8b9
Merge cxx-assertions (#381)
DevomB Oct 12, 2026
1045a09
Merge image-programs-named (#403)
DevomB Oct 12, 2026
3110bfd
Merge image-programs-brackets (#407)
DevomB Oct 12, 2026
5c99c2d
Merge usbnet-old-links-off (#408)
DevomB Oct 12, 2026
cbfde64
Merge image-drops-big-docs (#409)
DevomB Oct 12, 2026
1f3fd6c
Merge microcode-refused-notice (#388)
DevomB Oct 12, 2026
a6aa0c7
Merge medium-banner (#395)
DevomB Oct 12, 2026
07ce483
The kernel takes no initramfs and no boot parameters from whatever lo…
DevomB Oct 12, 2026
bdb97c1
MSG_OOB on unix sockets, TCP MD5 signatures and HugeTLB pages, which …
DevomB Oct 12, 2026
06d10a3
Defconfig's unused network, debug and device options are not built
DevomB Oct 12, 2026
5784c61
The guide and the threat model say what Microsoft's keys in db still …
DevomB Oct 12, 2026
682223b
Microsoft's keys out of db: a password that a cleared CMOS keeps, opt…
DevomB Oct 12, 2026
59654d8
The threat model's condition on db covers a card's option ROM held by…
DevomB Oct 12, 2026
b101d32
The image leaves out the amdgpu firmware this kernel's amdgpu never l…
DevomB Oct 12, 2026
10a360e
The firmware step's count of selected files leaves out what except li…
DevomB Oct 12, 2026
51cb1ea
Policy and multipath routing, which nothing here uses, are not built …
DevomB Oct 12, 2026
81ca31f
Airplane-mode keys that come through the platform's ACPI device reach…
DevomB Oct 12, 2026
3aeaf23
hardening.md names what the kernel leaves out since the initramfs, zo…
DevomB Oct 12, 2026
e4bc077
The hardening bullet says what a loader can no longer hand the kernel…
DevomB Oct 12, 2026
148e02f
The acceptance verdict matches its parts by the full revision, not de…
DevomB Oct 12, 2026
3789bc6
kryptik-recover --status is checked before the repairs it names, and …
DevomB Oct 12, 2026
d2ff2f5
After the restore, --status is checked to show slot b with no version…
DevomB Oct 12, 2026
1babc2e
A build from scratch and a rebuild on a cached tree install the same …
DevomB Oct 12, 2026
05204bc
The program list names what a build from scratch installs
DevomB Oct 12, 2026
6df3641
Merge verdict-full-revision (#420)
DevomB Oct 12, 2026
12dd04d
Merge recover-status-before (#425)
DevomB Oct 12, 2026
8d509b3
Merge image-programs-named (#403)
DevomB Oct 12, 2026
68e0152
Merge same-programs-cold-or-warm (#427)
DevomB Oct 12, 2026
daa59c6
Merge radio-off-at-start (#404)
DevomB Oct 12, 2026
12eab78
Merge menu-wifi-open (#380)
DevomB Oct 12, 2026
548201b
Merge wifi-scan-list (#382)
DevomB Oct 12, 2026
f49084e
Merge wifi-radio-off (#386)
DevomB Oct 12, 2026
6f8b29c
Merge menu-wifi-pick (#387)
DevomB Oct 12, 2026
aea0eae
Merge wifi-scan-age (#400)
DevomB Oct 12, 2026
e7413ef
Merge adr-012-amd-microcode (#392)
DevomB Oct 12, 2026
852af8e
Merge kernel-takes-no-initrd (#413)
DevomB Oct 12, 2026
5a01339
Merge secure-boot-db-keys (#416)
DevomB Oct 12, 2026
688bb9c
Merge zone-reachable-cuts (#414)
DevomB Oct 12, 2026
27241f5
Merge kernel-net-leftovers (#415)
DevomB Oct 12, 2026
4cb345b
Merge amdgpu-firmware-cut (#417)
DevomB Oct 12, 2026
614e2cd
Merge airplane-keys-rfkill (#418)
DevomB Oct 12, 2026
8e0d30f
Merge hardening-doc-kernel-cuts (#419)
DevomB Oct 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -344,8 +344,11 @@ jobs:
./tools/fetch-sources.sh --list \
| awk '$1 == "linux" || $1 == "linux-hardened" || $1 == "kernel-hardening-checker" {print $3}' \
| while read -r u; do
echo "fetching $(basename "$u")"
curl -fL --no-progress-meter -o "sources/$(basename "$u")" "$u"
f="$(basename "$u")"
echo "fetching $f"
curl -fL --no-progress-meter -o "sources/$f" "$u"
# Before anything unpacks it: resolving the config runs the kernel tree's own make and scripts.
awk -v f="$f" '$2 == f' sources.lock | (cd sources && sha256sum --check --strict -)
done
./tools/validate-kernel-config.sh
./tools/validate-kernel-config.sh --hardened
Expand Down
7 changes: 7 additions & 0 deletions .github/workflows/distro.yml
Original file line number Diff line number Diff line change
Expand Up @@ -244,10 +244,17 @@ jobs:
run: |
want="$(sed -n 's/.* rustc-\([0-9.]*\)-x86_64-unknown-linux-gnu\.tar\.xz$/\1/p' build/config/rust.lock)"
rustc --version | grep -qF "rustc ${want} " || { echo "refusing to build what ships with $(rustc --version); the pin is ${want}"; exit 1; }
# The checkout's, cargo's and the target directory's paths would land in panic
# locations, which then differ between two builds of one tree.
home="${CARGO_HOME:-$HOME/.cargo}"
export RUSTFLAGS="--remap-path-prefix=${GITHUB_WORKSPACE}=/kryptik --remap-path-prefix=${home}=/cargo --remap-path-prefix=${CARGO_TARGET_DIR}=/target"
(cd compartments/kryptikd && cargo build --locked --release --target x86_64-unknown-linux-musl)
(cd compositor && cargo build --locked --release --target x86_64-unknown-linux-musl -p wlproxy --bin kryptik-wlproxy)
cp /mnt/kryptik/cargo/x86_64-unknown-linux-musl/release/kryptikd /mnt/kryptik/kryptikd-musl
cp /mnt/kryptik/cargo/x86_64-unknown-linux-musl/release/kryptik-wlproxy /mnt/kryptik/kryptik-wlproxy-musl
for b in /mnt/kryptik/kryptikd-musl /mnt/kryptik/kryptik-wlproxy-musl; do
! grep -aqF -e "$GITHUB_WORKSPACE" -e "$home" -e "$CARGO_TARGET_DIR" "$b" || { echo "$b names a path of this build"; exit 1; }
done
file /mnt/kryptik/kryptikd-musl /mnt/kryptik/kryptik-wlproxy-musl
# The licence texts build/licences ships for what they link.
tools/check-rust-licences.sh /mnt/kryptik/rust-dist
Expand Down
14 changes: 11 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,13 @@ KRYPTIK_JOBS ?=
KRYPTIK_STALE ?= refuse
# Stamped into /etc/os-release; --dirty so an image never claims a clean tree.
KRYPTIK_BUILD_COMMIT ?= $(shell git -C "$(ROOT)" describe --always --dirty --abbrev=40 2>/dev/null || echo unknown)
# The time every timestamp the build writes is set or clamped to: the commit's (docs/design/reproducible-builds.md).
# Without .git, as in the source bundle, the Makefile's time is the commit's: git archive stamps every member with it.
SOURCE_DATE_EPOCH ?= $(shell git -C "$(ROOT)" log -1 --format=%ct 2>/dev/null || stat -c %Y "$(ROOT)/Makefile" 2>/dev/null)
# Never exported empty: GCC refuses a SOURCE_DATE_EPOCH that is not a number.
ifneq ($(SOURCE_DATE_EPOCH),)
export SOURCE_DATE_EPOCH
endif
# kryptikd and kryptik-wlproxy are static Rust binaries built outside the
# chroot and installed by stage 04.
KRYPTIK_KRYPTIKD_BIN ?=
Expand Down Expand Up @@ -71,6 +78,7 @@ CHROOT_ENV := KRYPTIK_ROOT="$(ROOT)" \
KRYPTIK_JOBS="$(KRYPTIK_JOBS)" \
KRYPTIK_STALE="$(KRYPTIK_STALE)" \
KRYPTIK_BUILD_COMMIT="$(KRYPTIK_BUILD_COMMIT)" \
$(if $(SOURCE_DATE_EPOCH),SOURCE_DATE_EPOCH="$(SOURCE_DATE_EPOCH)") \
KRYPTIK_KRYPTIKD_BIN="$(KRYPTIK_KRYPTIKD_BIN)" \
KRYPTIK_WLPROXY_BIN="$(KRYPTIK_WLPROXY_BIN)" \
TERM="$(TERM)" \
Expand Down Expand Up @@ -414,12 +422,12 @@ smoke-userspace:
# --- build output -----------------------------------------------------------

# Reads the ELF headers of what stage 04 installed: a package can ignore the
# hardening flags without failing its build.
# hardening flags without failing its build. Stage 06 strips what ships, not the sysroot.
audit-artifacts:
@"$(TOOLS)"/check-artifact-hardening.sh "$(KRYPTIK_WORK)/sysroot"
@"$(TOOLS)"/check-artifact-hardening.sh "$(KRYPTIK_WORK)/sysroot" --unstripped

audit-artifacts-strict:
@"$(TOOLS)"/check-artifact-hardening.sh "$(KRYPTIK_WORK)/sysroot" --strict
@"$(TOOLS)"/check-artifact-hardening.sh "$(KRYPTIK_WORK)/sysroot" --unstripped --strict

# A record of the tree and of what produced it.
manifest:
Expand Down
23 changes: 14 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,24 +105,29 @@ the firmware from the pinned linux-firmware release

- **Storage:** NVMe (including Intel VMD), AHCI and PIIX SATA, eMMC and SD on
SDHCI, LSI MegaRAID and MPT3 SAS, HPE Smart Array, USB mass storage and UAS,
virtio, VMware PVSCSI, Hyper-V.
virtio, VMware PVSCSI, Hyper-V. The disk Kryptik installs to needs 512-byte
logical sectors: 512e is fine, and a 4Kn disk is refused.
- **Wired network:** Intel e1000/e1000e, igb, igc, ixgbe, i40e; Broadcom tg3
and bnxt; Realtek r8169; Aquantia AQtion; Mellanox ConnectX-4 and later;
USB adapters (AX88179, RTL8152); virtio, VMware vmxnet3, Hyper-V.
- **Wi-Fi:** Intel from the 7260 on; Qualcomm QCA6174, QCA9377, QCA6390,
WCN6855, WCN7850; MediaTek MT7921, MT7922, MT7925; Realtek rtw88, rtw89 and
rtl8xxxu; Broadcom over PCIe. The net zone owns the radio
WCN6855, QCA2066, QCA6698AQ, WCN7850; MediaTek MT7920, MT7921, MT7922,
MT7925; Realtek rtw88, rtw89 and rtl8xxxu (not its RTL8188CU and RTL8192CU
sticks); Broadcom over PCIe. The net zone owns the radio
([net zone design](docs/design/net-zone.md)). No Bluetooth.
- **Display:** the firmware framebuffer (simpledrm) everywhere; Intel (i915,
xe) and AMD (amdgpu) with their firmware; ASPEED and Matrox server BMCs;
virtio-gpu, VMware SVGA, Hyper-V. NVIDIA machines use the firmware
framebuffer. The compositor renders with pixman, so no GPU acceleration is
needed.
xe) and AMD from GCN 3 on (amdgpu) with their firmware; ASPEED and Matrox
server BMCs; virtio-gpu, VMware SVGA, Hyper-V. NVIDIA machines, and AMD's
GCN 1 and 2 parts, use the firmware framebuffer. The compositor renders
with pixman, so no GPU acceleration is needed.
- **Input:** USB HID, PS/2, I2C touchpads and touchscreens on Intel and AMD
laptops, VMware and Hyper-V input.

CPU microcode for Intel and AMD is built into the signed kernel. Hyper-V
trusts only Microsoft's keys, so run Kryptik there with Secure Boot off.
CPU microcode for Intel and AMD is built into the signed kernel. On a Zen 5
processor, and a few EPYC models, the kernel loads it only once the machine's
firmware has AMD's 2025 microcode-signature fix
([user guide](docs/user-guide.md#1-boot-the-medium)). Hyper-V trusts only
Microsoft's keys, so run Kryptik there with Secure Boot off.

A machine outside that list boots a kernel that cannot find its disk or its
network. Adding a driver is one line in the fragment, a firmware file one line
Expand Down
90 changes: 90 additions & 0 deletions build/config/artifact-accepted.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,93 @@ RPATH usr/lib/libcc1.so.* /usr/lib/../lib # libtool, in GCC's bui
RPATH usr/lib/gcc/*/*/plugin/libc[cp]1plugin.so.* /usr/lib/../lib # the same
RPATH usr/lib/libskarnet.so.* /usr/lib # skalibs' own link line
RPATH usr/lib/perl5/*/auto/Time/HiRes/HiRes.so /usr/lib # Time::HiRes, linking librt

# No canary anywhere in the object's code. -fstack-protector-strong (in CFLAGS, and GCC's default
# here) guards only functions with a local array or an address-taken local; these have none.
NO-SSP usr/bin/bzip2recover # no function with a local array or an address-taken local
NO-SSP usr/bin/exch # the same
NO-SSP usr/bin/getconf # the same
NO-SSP usr/libexec/getconf/* # getconf again, under the names of the specifications it reports
NO-SSP usr/bin/rev # no function with a local array or an address-taken local
NO-SSP usr/bin/s6-linux-init-nuke # the same
NO-SSP usr/lib/bash/basename # the same
NO-SSP usr/lib/bash/csv # the same
NO-SSP usr/lib/bash/dirname # the same
NO-SSP usr/lib/bash/dsv # the same
NO-SSP usr/lib/bash/getconf # the same
NO-SSP usr/lib/bash/head # the same
NO-SSP usr/lib/bash/logname # the same
NO-SSP usr/lib/bash/mkfifo # the same
NO-SSP usr/lib/bash/mypid # the same
NO-SSP usr/lib/bash/printenv # the same
NO-SSP usr/lib/bash/push # the same
NO-SSP usr/lib/bash/rmdir # the same
NO-SSP usr/lib/bash/sync # the same
NO-SSP usr/lib/bash/tee # the same
NO-SSP usr/lib/bash/truefalse # the same
NO-SSP usr/lib/bash/tty # the same
NO-SSP usr/lib/bash/unlink # the same
NO-SSP usr/lib/bash/whoami # the same
NO-SSP usr/lib/gawk/revtwoway.so # the same
NO-SSP usr/libexec/awk/grcat # the same
NO-SSP usr/libexec/awk/pwcat # the same
NO-SSP usr/lib/libfl.so.2.* # the same
NO-SSP usr/lib/libmvec.so.1 # the same
NO-SSP usr/lib/libpanelw.so.6.* # the same
NO-SSP usr/lib/libwayland-egl.so.1.* # the same
NO-SSP usr/lib/gconv/libCNS.so # glibc's conversion tables, with no function that takes a buffer
NO-SSP usr/lib/gconv/libGB.so # the same
NO-SSP usr/lib/gconv/libISOIR165.so # the same
NO-SSP usr/lib/gconv/libJIS.so # the same
NO-SSP usr/lib/gconv/libJISX0213.so # the same
NO-SSP usr/lib/gconv/libKSC.so # the same
NO-SSP usr/lib/perl5/*/auto/Devel/Peek/Peek.so # no function with a local array or an address-taken local
NO-SSP usr/lib/perl5/*/auto/Encode/Byte/Byte.so # Encode's conversion tables, with no function that takes a buffer
NO-SSP usr/lib/perl5/*/auto/Encode/CN/CN.so # the same
NO-SSP usr/lib/perl5/*/auto/Encode/EBCDIC/EBCDIC.so # the same
NO-SSP usr/lib/perl5/*/auto/Encode/JP/JP.so # the same
NO-SSP usr/lib/perl5/*/auto/Encode/KR/KR.so # the same
NO-SSP usr/lib/perl5/*/auto/Encode/Symbol/Symbol.so # the same
NO-SSP usr/lib/perl5/*/auto/Encode/TW/TW.so # the same
NO-SSP usr/lib/perl5/*/auto/Fcntl/Fcntl.so # no function with a local array or an address-taken local
NO-SSP usr/lib/perl5/*/auto/File/DosGlob/DosGlob.so # the same
NO-SSP usr/lib/perl5/*/auto/Filter/Util/Call/Call.so # the same
NO-SSP usr/lib/perl5/*/auto/I18N/Langinfo/Langinfo.so # the same
NO-SSP usr/lib/python3.*/lib-dynload/_contextvars.cpython-*.so # the same
NO-SSP usr/lib/python3.*/lib-dynload/_heapq.cpython-*.so # the same
NO-SSP usr/lib/python3.*/lib-dynload/_statistics.cpython-*.so # the same
NO-SSP usr/sbin/accessdb # the same
NO-SSP usr/sbin/findfs # the same
NO-SSP usr/sbin/nologin # the same
NO-SSP usr/sbin/pivot_root # the same
NO-SSP usr/bin/perl # its main() hands everything to libperl, which carries the canaries
NO-SSP usr/bin/perl5.* # the same
NO-SSP usr/bin/python3.* # its main() hands everything to libpython, which carries the canaries
NO-SSP usr/lib/libpython3.so # the stable-ABI library forwards to libpython and has no code of its own
NO-SSP usr/lib/engines-3/capi.so # OpenSSL's CAPI engine wraps a Windows API: on Linux it builds empty
NO-SSP usr/lib/libanl.so.1 # glibc 2.34 moved this library's code into libc, leaving an empty stub
NO-SSP usr/lib/libdl.so.2 # the same
NO-SSP usr/lib/libpthread.so.0 # the same
NO-SSP usr/lib/librt.so.1 # the same
NO-SSP usr/lib/libutil.so.1 # the same
NO-SSP usr/lib/libnss_dns.so.2 # the same
NO-SSP usr/lib/libnss_files.so.2 # the same
NO-SSP usr/lib/ld-linux-x86-64.so.2 # glibc builds the loader without the stack protector: the loader sets up the guard
NO-SSP usr/lib/libgcc_s.so.1 # GCC builds libgcc with -fno-stack-protector: it runs beneath any stack guard
NO-SSP usr/bin/kryptikd # Rust: stable rustc has no stack protector, and safe Rust checks every index
NO-SSP usr/bin/kryptik-wlproxy # the same

# Imports of calls that _FORTIFY_SOURCE=2 or 3 always turns into _chk ones.
NO-FORTIFY usr/bin/pldd # glibc builds elf/, dlfcn/, csu/ and debug/ without FORTIFY (Makeconfig's do-fortify): the loader's bootstrap and the checks themselves
NO-FORTIFY usr/bin/sprof # the same: elf/
NO-FORTIFY usr/lib/audit/sotruss-lib.so # the same: elf/
NO-FORTIFY usr/bin/pcprofiledump # the same: debug/
NO-FORTIFY usr/bin/gawk # passes fprintf as its printing function (print_vars, pp_string_fp, the debugger's print_func)
NO-FORTIFY usr/bin/gawk-* # the same
NO-FORTIFY usr/bin/msg* # gettext's bundled libxml, linked into each tool, keeps fprintf as its error channel
NO-FORTIFY usr/bin/xgettext # the same
NO-FORTIFY usr/lib/gettext/cldr-plurals # the same
NO-FORTIFY usr/bin/objdump # passes fprintf as the disassembler's print function (fprintf_func)
NO-FORTIFY usr/lib/libbfd-*.so # passes fprintf as the print callback of its error output (_bfd_doprnt)
NO-FORTIFY usr/lib/libgmp.so.* # gmp_printf's output tables hold vfprintf and obstack_vprintf
NO-FORTIFY usr/bin/bison # one plain fprintf import beside its fortified calls, from code not yet found: no fprintf taken as a value in bison's tree
39 changes: 39 additions & 0 deletions build/config/firmware-accepted.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Firmware a shipped module names (MODULE_FIRMWARE) that linux-firmware has and the image leaves
# out; tools/check-firmware-requested.sh fails on any other, and on an entry that matches none.
# PATTERN # why (a glob over linux-firmware's names)

# ath10k asks for its newest API file first, and that one ships.
ath10k/QCA6174/hw3.0/firmware-4.bin # firmware-6 ships
ath10k/QCA9377/hw1.0/firmware-5.bin # firmware-6 ships

# Access point and add-in card chips: the list carries the laptop parts (ADR-012).
ath10k/QCA988X/* # QCA9880 and QCA9882
ath10k/QCA9887/* # an access point part
ath11k/QCN9074/* # an access point part

# A variant directory is read only when a devicetree names it, and an x86 machine has none.
ath11k/*/nfa765/* # ath11k_core_create_firmware_path: firmware-name, or three Qualcomm Arm boards

# rtl8xxxu lists the 8192CU's ids only under RTL8XXXU_UNTESTED, which this kernel leaves unset.
rtlwifi/rtl8192cufw_* # no 8192CU stick binds

# e100 runs a D101M or D101S without its microcode, which only adds receive bundling (CPUSaver).
e100/d101[ms]_ucode.bin # optional

# amdgpu binds no CIK part without DRM_AMDGPU_CIK, but code it shares with Topaz and with later
# parts' power management names Bonaire's and Hawaii's files (gmc_v7_0.c, smumgr.c).
amdgpu/bonaire_* # CIK
amdgpu/hawaii_* # CIK

# Instinct accelerators compute and have no display; without KFD (HSA_AMD) nothing here uses one.
amdgpu/aldebaran_* # Instinct
amdgpu/arcturus_* # Instinct
amdgpu/gc_9_4_[34]_* # Instinct
amdgpu/gc_9_5_0_* # Instinct
amdgpu/psp_13_0_6_* # Instinct
amdgpu/psp_13_0_12_* # Instinct
amdgpu/psp_13_0_14_* # Instinct
amdgpu/sdma_4_4_[245].bin # Instinct
amdgpu/smu_13_0_6.bin # Instinct
amdgpu/smu_13_0_14.bin # Instinct
amdgpu/vcn_4_0_3.bin # Instinct
Loading
Loading