Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
417 commits
Select commit Hold shift + click to select a range
1b3b5d7
heap: align the data a caller gets, not the block before its header
eKisNonos Sep 27, 2026
454e098
linux/install: pacman, from a signed database to verified files
eKisNonos Sep 27, 2026
a291bad
xz: a decoder for the .xz format and LZMA2, with vectors from xz itself
eKisNonos Sep 27, 2026
6376106
linux/install: read xz packages too
eKisNonos Sep 27, 2026
adef62f
openpgp: read ASCII armor, as Debian publishes keys and Release.gpg
eKisNonos Sep 27, 2026
7c48300
process: a new thread starts with every FPU register cleared
eKisNonos Sep 27, 2026
7cfa6f7
linux/install: share signatures, decompression and hex beyond pacman
eKisNonos Sep 27, 2026
78affdc
linux/install: Debian, from a signed Release to verified .debs
eKisNonos Sep 27, 2026
27ccfb5
kernel: build without SSE, so no kernel code touches a thread's vectors
eKisNonos Sep 27, 2026
4de4cd6
kernel: no vector registers in its C or its BLAKE3 either
eKisNonos Sep 27, 2026
6816135
aarch64: compile and link the core profile
eKisNonos Sep 27, 2026
840a881
aarch64: read PAN from its own ID field and encode the PAN writes
eKisNonos Sep 27, 2026
526e234
aarch64: reach the boot page tables and CPU roster through raw pointers
eKisNonos Sep 27, 2026
0330890
aarch64: drop unused imports, a dead constant and an unused read
eKisNonos Sep 27, 2026
f8f055c
ci: build the aarch64 kernel on every push
eKisNonos Sep 27, 2026
015e595
init: say what the market answered before refusing an install
eKisNonos Sep 27, 2026
062df09
linux: write down the socket model item 9 is built to
eKisNonos Sep 27, 2026
78043ec
market: one release lookup for readiness and the release itself
eKisNonos Sep 27, 2026
e20c09d
store: place the measurement below the gates, where they end
eKisNonos Sep 27, 2026
2c58578
linux: sign the install and run roles' endpoints into the manifest
eKisNonos Sep 27, 2026
56e4461
linux install: a status the system reports, with the reason it stopped
eKisNonos Sep 27, 2026
9f71ad2
store: follow an install to the end, and say why when it stops
eKisNonos Sep 27, 2026
3114992
store: show which version a listing installs, and from where
eKisNonos Sep 27, 2026
d7b908b
terminal: a prompt that reads, a window with room, help you can scan
eKisNonos Sep 27, 2026
5871d8a
iommu: select the vendor from ACPI at boot and report what is enforced
eKisNonos Sep 27, 2026
cf9efa1
iommu: check the posture line in every boot matrix cell, add q35-amdv…
eKisNonos Sep 27, 2026
25173c0
linux: record why no pacman or Debian key is pinned yet
eKisNonos Sep 27, 2026
ea35e1d
aarch64: table descriptors honour user_accessible
eKisNonos Sep 27, 2026
cabd3a3
aarch64: narrow pub items nothing outside the crate reaches
eKisNonos Sep 27, 2026
6f4ea8d
aarch64: stop the boot log claiming what did not happen
eKisNonos Sep 27, 2026
c0fefc9
build: embed capsules for the kernel's own architecture
eKisNonos Sep 27, 2026
199429d
aarch64: map the kernel image page by page so W^X holds
eKisNonos Sep 27, 2026
a133866
store, terminal: fix what the live-session screenshots showed
eKisNonos Sep 27, 2026
5717a3a
tools: a mirror relay that keeps a guest's fetches on this machine's …
eKisNonos Sep 27, 2026
86fb860
linux/install: pin Kali's 2025 archive key as the Debian anchor
eKisNonos Sep 27, 2026
3278006
linux/install: reach a mirror on the local network directly
eKisNonos Sep 27, 2026
0cf67e7
kernel: name the page tables and the demand fill behind a user fault
eKisNonos Sep 27, 2026
9d00dd7
linux: a tree per distribution, and listings that say which
eKisNonos Sep 27, 2026
de9d845
linux/install: room for a distribution's index, held once
eKisNonos Sep 27, 2026
75fad0b
linux/install: say which step of a mirror fetch stopped
eKisNonos Sep 27, 2026
36ef297
tools/market-catalogue: list Kali packages through the chain the devi…
eKisNonos Sep 27, 2026
e8ece0f
terminal: drop the tool entry the install builtin shadows
eKisNonos Sep 27, 2026
974f748
linux/install: the install role holds Network, and only it
eKisNonos Sep 27, 2026
0223d41
store: a Linux card names its distribution
eKisNonos Sep 27, 2026
a2dd2b7
build: name the aarch64 user target in the aarch64 make recipes
eKisNonos Sep 27, 2026
54e07d2
Merge branch 'build/capsule-target-arch' into arch/aarch64-wx
eKisNonos Sep 27, 2026
b8a0cf4
security: remove the guard allocator that unmapped by physical address
eKisNonos Sep 27, 2026
32f23ba
aarch64: name every terminal exception before the CPU parks
eKisNonos Sep 27, 2026
d181b41
ci: boot the aarch64 kernel under QEMU and assert its trap lines
eKisNonos Sep 27, 2026
3eef46d
linux/net: send the connect-by-host length as net.sockets reads it
eKisNonos Sep 27, 2026
8ad665d
linux/install: a reply ends at its Content-Length, not at an empty read
eKisNonos Sep 27, 2026
ad065b6
inflate, linux/install: a gzip bound the caller sets, sized for real …
eKisNonos Sep 27, 2026
e018c62
linux: resolve a program's interpreter through the guest's links
eKisNonos Sep 27, 2026
8108315
store: drop the distribution from listing labels
eKisNonos Sep 27, 2026
64fe4a7
linux: a guest starts knowing where its display is
eKisNonos Sep 27, 2026
eb623ae
linux: deliver a caught signal and return from its handler
eKisNonos Sep 27, 2026
871a161
linux: reserve a PROT_NONE mapping lazily, so a runtime's arena is cheap
eKisNonos Sep 28, 2026
76b7b73
linux-guests: static Go binaries, and drop movies from the test store
eKisNonos Sep 28, 2026
8ac32d5
vfs: the packed store may hold 128 files, not 64
eKisNonos Sep 28, 2026
b577f8e
mk: keep the desktop demo capsules out of the Linux-guest test store
eKisNonos Sep 28, 2026
b5eed68
iommu: carry the unconfined grant count beside enforcing
eKisNonos Sep 28, 2026
75529b8
attest: bind the DMA posture into the signed document, version 3
eKisNonos Sep 28, 2026
1910df8
linux: lift the mapping window above the stack for a large reservation
eKisNonos Sep 28, 2026
bf9d9db
mk: build the Linux-guest test image without first-boot setup
eKisNonos Sep 28, 2026
5ab0a09
exit: keep a thread group's page tables until its last member is gone
eKisNonos Sep 28, 2026
3fc1ac1
foreign: start a guest's clone child on its parent's registers
eKisNonos Sep 28, 2026
874f3ec
kill: let a foreign supervisor end the guests it hosts
eKisNonos Sep 28, 2026
5e81fb7
setup-wizard: wait for the desktop, and say so when setup cannot start
eKisNonos Sep 28, 2026
2892723
linux: delete the unused clone copy under call/
eKisNonos Sep 28, 2026
ce395f7
mm: log a demand fill only after one is made
eKisNonos Sep 28, 2026
ffc1b54
foreign: fork on the calling thread's registers and thread pointer
eKisNonos Sep 28, 2026
2311afc
foreign: report a guest thread's fatal fault to its supervisor
eKisNonos Sep 28, 2026
959b57f
linux: end the process when a guest thread dies on a signal
eKisNonos Sep 28, 2026
a06600d
app_skeleton: let an app keep its window open when close is pressed
eKisNonos Sep 28, 2026
adb4a79
text_editor: never overwrite a file with text that was not read from it
eKisNonos Sep 28, 2026
7e51ab4
nonos_vt: an xterm-compatible terminal screen, parser and input encoder
eKisNonos Sep 28, 2026
4e36246
app_skeleton: name the Insert and function keys the input drivers send
eKisNonos Sep 28, 2026
bd52d02
terminal: run programs on an xterm-grade screen sized to the window
eKisNonos Sep 28, 2026
1e6b8a6
linux: commit a reserved span when mprotect asks for access
eKisNonos Sep 28, 2026
addec49
linux: write the new tid where clone is asked to
eKisNonos Sep 28, 2026
10947aa
linux: end a thread at its exit, and wake its joiner
eKisNonos Sep 28, 2026
db772ac
linux: a pthreads guest, to prove musl threads create, lock and join
eKisNonos Sep 28, 2026
69f3b48
linux: give a pipe Linux's ends: end of file, broken pipe, hang-up
eKisNonos Sep 28, 2026
3e48edb
linux: keep O_NONBLOCK per descriptor, and honour it on a pipe
eKisNonos Sep 28, 2026
bfb0789
linux: serve eventfd
eKisNonos Sep 28, 2026
06a266a
linux: let epoll_wait, an eventfd and a full pipe wait, as Linux's do
eKisNonos Sep 28, 2026
e8f2093
kernel: tell a program whether its streams reach a terminal
eKisNonos Sep 28, 2026
8de62e9
std: ask the kernel whether a standard stream is a terminal
eKisNonos Sep 28, 2026
5cc7edf
toolkit: draw characters the UI face lacks from its mono face
eKisNonos Sep 28, 2026
c6a4f6a
text_editor: draw folder chevrons in pixels, colour only code
eKisNonos Sep 28, 2026
c77637b
terminal: readline keys, and chords that type nothing
eKisNonos Sep 28, 2026
ca91842
terminal: help that fits 80 columns and names every key
eKisNonos Sep 28, 2026
c2f4fe8
terminal: drop rg, which no build registers, and name refusals
eKisNonos Sep 28, 2026
6ac5bb8
terminal: start a selection from the margin around the text
eKisNonos Sep 28, 2026
69bb50b
terminal: tell the programs it shows that they reach a screen
eKisNonos Sep 28, 2026
32d2a1a
linux: report edge-triggered and one-shot epoll entries as Linux does
eKisNonos Sep 28, 2026
aa0087d
linux: end a futex wait at its timeout, and serve bitset and requeue
eKisNonos Sep 28, 2026
b1ead15
linux: two guests to prove waiting: gopoll and cwait
eKisNonos Sep 28, 2026
17ce995
build: drop std build caches when the std layer changes
eKisNonos Sep 28, 2026
b716a34
linux: let any number of threads wait to read one pipe
eKisNonos Sep 28, 2026
439ed66
linux: let poll, ppoll, select and pselect6 wait for their timeout
eKisNonos Sep 28, 2026
7c3967f
linux: cwait waits with two pipe readers and with poll, ppoll and select
eKisNonos Sep 28, 2026
85b3d77
linux: a closed descriptor leaves epoll, and dup2 closes what it repl…
eKisNonos Sep 28, 2026
468f5aa
linux: cwait checks that a closed descriptor leaves epoll
eKisNonos Sep 28, 2026
b9efc7f
linux: give timerfd Linux's semantics, and keep it with the family
eKisNonos Sep 28, 2026
2f0db3b
linux: cwait checks timerfd one-shot, periodic and absolute
eKisNonos Sep 28, 2026
84e10f5
linux: a guest that needs a signal to reach a running thread: gopreempt
eKisNonos Sep 28, 2026
262c062
linux: serve the descriptor ioctls: FIONREAD, FIONBIO, FIOCLEX, FIONCLEX
eKisNonos Sep 28, 2026
8f77807
linux: carry an epoll interest list through dup and fork
eKisNonos Sep 28, 2026
a045bec
linux: cwait checks the descriptor ioctls and an epoll list through fork
eKisNonos Sep 28, 2026
ff778c7
linux: serve the scheduler calls, epoll_create and epoll_pwait2
eKisNonos Sep 28, 2026
66b55fa
linux: cwait checks the scheduler calls and the other epoll forms
eKisNonos Sep 28, 2026
c912534
terminal: take commands longer than the screen is wide
eKisNonos Sep 28, 2026
8bf7064
terminal: sixteen colours chosen for the window's ground
eKisNonos Sep 28, 2026
d8b8baf
terminal: stroke box-drawing characters across the whole cell
eKisNonos Sep 28, 2026
9039b89
linux: map tgkill's thread group and thread into the family's pids
eKisNonos Sep 28, 2026
afd96ef
linux: cwait checks tgkill with the numbers getpid and gettid give
eKisNonos Sep 28, 2026
55c3c7f
wallet: talk to the RPC only after the server proves it is the host
eKisNonos Sep 28, 2026
596b428
wallet: show the recovery phrase, and make Esc go back
eKisNonos Sep 28, 2026
49dffbb
wallet: refuse to sign a transfer above a 1000 gwei gas price
eKisNonos Sep 28, 2026
24cafe1
linux: cwait runs every part and names each one that fails
eKisNonos Sep 28, 2026
82a487a
foreign: stop a running guest thread at a tick when its supervisor asks
eKisNonos Sep 28, 2026
bada7b7
linux: deliver a caught signal to a thread running its own code
eKisNonos Sep 28, 2026
cee3aed
linux: a C guest that needs a signal to reach a running thread: cpreempt
eKisNonos Sep 28, 2026
fecaf5c
linux: put a signal frame's registers where Linux's ucontext has them
eKisNonos Sep 28, 2026
07d9c92
linux: keep each thread's signal stack; enter SA_ONSTACK handlers on it
eKisNonos Sep 28, 2026
8a41183
linux: keep each thread's alternate signal stack and enter SA_ONSTACK…
eKisNonos Sep 28, 2026
d7b2019
linux: cwait proves the alternate signal stack
eKisNonos Sep 28, 2026
c0f685d
linux: cwait proves the alternate signal stack
eKisNonos Sep 28, 2026
f5fe356
foreign: a call drops the stop mark its answer already covers
eKisNonos Sep 28, 2026
66aabbc
foreign: a call drops the stop mark its answer already covers
eKisNonos Sep 28, 2026
2b5c726
linux: clone writes the guest's own tid where the caller asked
eKisNonos Sep 28, 2026
9481d8c
linux: clone writes the guest's own tid where the caller asked
eKisNonos Sep 28, 2026
5b40bbc
linux: cwait sends pthread_kill to another thread
eKisNonos Sep 28, 2026
b8985e0
linux: cwait sends pthread_kill to another thread
eKisNonos Sep 28, 2026
9d3a712
wallet: draw the Shield screens and say when no shield service answers
eKisNonos Sep 28, 2026
e8dd078
wallet: make a withdrawal wait like a payment, and let the banner close
eKisNonos Sep 28, 2026
3fe559b
wallet: draw Swap on the Etna frame with every term in the open
eKisNonos Sep 28, 2026
23f3c55
wallet: let the Swap banner close, and word the early spend for both
eKisNonos Sep 28, 2026
1755567
Merge origin/main into linux/sync
eKisNonos Sep 28, 2026
072a096
Merge origin/ui/shield-swap-terminal into linux/sync
eKisNonos Sep 28, 2026
3ad8985
Merge origin/setup/wait-for-desktop into linux/sync
eKisNonos Sep 28, 2026
c1aad8e
Merge origin/amd/iommu-runtime-select into linux/sync
eKisNonos Sep 28, 2026
94c309b
Merge origin/arch/aarch64-trap-names into linux/sync
eKisNonos Sep 28, 2026
6fc0738
Merge origin/iommu/snoop-and-bus-master into linux/sync
eKisNonos Sep 28, 2026
99c45ef
linux: a guest's console write longer than 256 bytes reaches the log
eKisNonos Sep 28, 2026
ec3f309
kernel: let the terminal run the Linux personality as a tool
eKisNonos Sep 28, 2026
e12fb50
linux: run the program the terminal's linux command names
eKisNonos Sep 28, 2026
55f80d0
terminal: a linux command that runs Linux programs from the Linux tree
eKisNonos Sep 28, 2026
3a57528
linux_guests: programs and data files built outside the tree
eKisNonos Sep 28, 2026
0b8682e
linux: the terminal shows the program's output, not the run's progress
eKisNonos Sep 28, 2026
3025e7f
vfs: hold a store of up to 48 MiB, in a heap of 128 MiB
eKisNonos Sep 28, 2026
00d1c35
linux: list the terminal role's endpoints in the signed manifest
eKisNonos Sep 28, 2026
a2ad4c1
tool: name the error when the terminal's personality fails to spawn
eKisNonos Sep 28, 2026
67601ee
rustfmt the module lists the Linux lane left out of order
eKisNonos Sep 28, 2026
f8a00dd
Merge branch 'linux/next-waits' into linux/sync
eKisNonos Sep 28, 2026
9d66135
linux: move the terminal's launch into its own file
eKisNonos Sep 28, 2026
bce8ffa
linux: the terminal's linux command says what the store answered
eKisNonos Sep 28, 2026
bff3425
foreign: keep mod.rs to declarations, and the death notice in notice
eKisNonos Sep 28, 2026
3ebaacf
foreign: give MkForeignInterrupt its own directory, each file short
eKisNonos Sep 28, 2026
1dc7ba3
linux: drop the abi's allow(dead_code) and the constants it hid
eKisNonos Sep 28, 2026
eaa1279
linux: keep sigaltstack's stack_t layout beside the alternate stack
eKisNonos Sep 28, 2026
f95e12e
linux: split the signal frame into layout, placement and build
eKisNonos Sep 28, 2026
ffd65b4
linux proofs: group the deb seed's hex digits in fours
eKisNonos Sep 28, 2026
5ef31a2
confine: no IOMMU in service leaves a driver unconfined, not refused
eKisNonos Sep 28, 2026
2311c9d
linux: write the signal lane's comments as /* */
eKisNonos Sep 28, 2026
f38eb3c
linux proofs: split the signal frame tests three ways
eKisNonos Sep 28, 2026
9f55982
foreign: keep a handler's FPU stack apart from entering and leaving it
eKisNonos Sep 28, 2026
6407107
linux guests: split cwait into one file per group of parts
eKisNonos Sep 28, 2026
336e29e
Merge branch 'linux/next-waits' into linux/sync
eKisNonos Sep 28, 2026
e414472
linux: say and note in their own file, out of start.rs
eKisNonos Sep 28, 2026
6d52666
tool: keep tool.linux out of the embedded tools' registry
eKisNonos Sep 28, 2026
ed41fa1
linux: write the terminal command's comments as /* */
eKisNonos Sep 28, 2026
7618d46
linux guests: programs and files from outside the tree in Outside.mk
eKisNonos Sep 28, 2026
44a39b8
linux: a program the store lacks is told apart from a store in error
eKisNonos Sep 28, 2026
ab92e7c
interrupts: reclaim a dead process only on a tick from user mode
eKisNonos Sep 28, 2026
ca2bdff
linux: read a program in one allocation of its size
eKisNonos Sep 28, 2026
11bca18
Merge branch 'linux/next-waits' into linux/sync
eKisNonos Sep 28, 2026
a40a850
linux: the terminal finds a bare program name along the guest's PATH
eKisNonos Sep 28, 2026
4166729
terminal: run a baked tool as a foreground program, not an install
eKisNonos Sep 28, 2026
1fa05bb
linux: a delivered signal is a line for the log, not the terminal
eKisNonos Sep 28, 2026
66d2f0b
interrupts: reclaim on a tick that interrupts the idle halt too
eKisNonos Sep 29, 2026
bc65207
foreign: a dying supervisor's guests are torn down, not abandoned
eKisNonos Sep 29, 2026
76615a0
linux: move a wait's attempt, expiry and may_wait into waits_try.rs
eKisNonos Sep 29, 2026
03a1bfd
linux: readv and writev wait on a pipe as read and write do
eKisNonos Sep 29, 2026
6e51b7e
linux: a write to a blocking pipe answers once all of it is in
eKisNonos Sep 29, 2026
14e4749
linux guests: move the C guests into CGuests.mk
eKisNonos Sep 29, 2026
4b5e902
linux guests: cpipe, bytes through a pipe between two processes
eKisNonos Sep 29, 2026
6f1f990
foreign: keep a stop mark until a handler is entered
eKisNonos Sep 29, 2026
4b1447a
linux: a signal left pending by an answer is delivered, not forgotten
eKisNonos Sep 29, 2026
7e91acd
linux: enter a handler with DF clear; bound a frame nested on altstack
eKisNonos Sep 29, 2026
c57f530
linux guests: cpreempt fails if the handler ran on another thread
eKisNonos Sep 29, 2026
5faa8b7
linux guests: cwait's pthread-kill part checks the thread it hit
eKisNonos Sep 29, 2026
b19f058
linux guests: cwait counts a periodic timer against the time taken
eKisNonos Sep 29, 2026
d2ad2a8
terminal proofs: linux is the kernel's own tool, not an apps.list one
eKisNonos Sep 29, 2026
3389095
vfs: move the store loader's chunk read into chunk.rs
eKisNonos Sep 29, 2026
1b274de
linux: move commit and reserve out of mem_map.rs
eKisNonos Sep 29, 2026
53f8185
linux guests: cmadv, madvise checked against Linux's rules
eKisNonos Sep 29, 2026
86626ad
linux guests: csig, signals for threads that were parked, not running
eKisNonos Sep 29, 2026
59cd3f5
linux guests: cpreempt spins with DF set; the handler must find it clear
eKisNonos Sep 29, 2026
6331bf6
linux: the terminal's launch takes every argument and says what it saw
eKisNonos Sep 29, 2026
3ea24d4
linux: madvise does what Linux promises, or refuses
eKisNonos Sep 29, 2026
9b4070b
vfs: size each store entry's buffer once, and refuse one that won't fit
eKisNonos Sep 29, 2026
96c65fa
vfs: clear the store status once a later attempt stages the whole store
eKisNonos Sep 29, 2026
c4ac409
vfs, mk: say the store budget as it is since 3025e7f85
eKisNonos Sep 29, 2026
32b0c4c
terminal: only a foreground program's end resets the screen's modes
eKisNonos Sep 29, 2026
a30ce47
linux: fork copies each region a megabyte at a time
eKisNonos Sep 29, 2026
aa1620d
linux guests: cpipe says so when its fork fails
eKisNonos Sep 29, 2026
0a95001
foreign: a syscall numbered as a stop code gets ENOSYS
eKisNonos Sep 29, 2026
a52cd76
foreign: mark a thread for a tick stop only while it is still a guest
eKisNonos Sep 29, 2026
4c58466
foreign: MkForeignExec refuses a thread stopped at a tick
eKisNonos Sep 29, 2026
fd507b1
foreign: a handler entered from a tick starts with a clean FPU
eKisNonos Sep 29, 2026
4a21970
tool: say why a tool did not start, and keep empty arguments
eKisNonos Sep 29, 2026
e8d8787
terminal: move the pipeline step out of pump.rs
eKisNonos Sep 29, 2026
4f4ad24
terminal: a background job's end resets the screen when nothing holds it
eKisNonos Sep 29, 2026
38af0e4
linux: a new mapping is the only record of its span
eKisNonos Sep 29, 2026
d130d02
linux: mprotect's commit and mremap's growth keep a span's mark
eKisNonos Sep 29, 2026
314495b
linux: madvise on a span with a hole advises what is mapped, then ENOMEM
eKisNonos Sep 29, 2026
79fdcc0
linux: a waiting readv or writev watches its descriptor
eKisNonos Sep 29, 2026
a8c4f1b
linux: a waiting write answers as Linux after a partial write, or none
eKisNonos Sep 29, 2026
95f2399
linux: say which answers mark a thread for its next tick
eKisNonos Sep 29, 2026
5c59d10
linux: an empty program name gets the usage line
eKisNonos Sep 29, 2026
613b55b
foreign: a handler answer spends the stop mark when it is posted
eKisNonos Sep 29, 2026
3407167
linux guests: csig checks which thread ran each handler
eKisNonos Sep 29, 2026
52f3bd5
linux guests: cpreempt sets DF before it says it spins
eKisNonos Sep 29, 2026
79d6a6a
linux guests: cmadv, a fixed mapping over a reservation and a hole
eKisNonos Sep 29, 2026
4c3f164
linux guests: cwait times its timerfd waits from before arming
eKisNonos Sep 29, 2026
5f814d4
foreign: show a guest's program, calls and pages in the process table
eKisNonos Sep 29, 2026
317f96b
process manager: keep the grant chips clear of the actions
eKisNonos Sep 29, 2026
243c2fd
process manager: a click on Overview selects the row under it
eKisNonos Sep 29, 2026
db757d8
process manager: share of RAM to the tenth, and who keeps guest pages
eKisNonos Sep 29, 2026
45c71ea
process manager: name every capability the kernel defines
eKisNonos Sep 29, 2026
25b7563
process manager: fall back only to a row the table shows
eKisNonos Sep 29, 2026
e97f1f1
terminal: fill block elements as exact parts of the cell
eKisNonos Sep 29, 2026
3027233
market: a curated security toolset list for the catalogue
eKisNonos Sep 29, 2026
23b1e0f
linux_guests: attest a program's shared libraries, so they may run
eKisNonos Sep 29, 2026
9e1c35b
linux: a fixed anonymous mapping gives zeros over old frames
eKisNonos Sep 29, 2026
477dcf9
linux: connect() with no route out is ENETUNREACH, not ECONNREFUSED
eKisNonos Sep 30, 2026
f64c1cd
virtio-net, virtio-gpu: order ring writes against the index that publ…
eKisNonos Sep 30, 2026
673f49f
virtio-net, virtio-gpu: leave at once when the device is not there
eKisNonos Sep 30, 2026
03c8dc9
e1000: answer the stack, queue TX and reclaim it, reset like the manu…
eKisNonos Sep 30, 2026
b12f1c8
rtl8139: answer the stack, come up under UEFI, draw the address, fix …
eKisNonos Sep 30, 2026
198772c
rtl8169: answer the stack, come up at all, ring the ring that exists
eKisNonos Sep 30, 2026
d616df0
net_core: say which NIC the stack bound
eKisNonos Sep 30, 2026
5afe5ed
build: nonos-mk-ethernet-prod, the desktop with the wired NIC drivers
eKisNonos Sep 30, 2026
bf57b3c
iwlwifi: the MAC clock bit, the RF-kill bit, and the firmware file la…
eKisNonos Sep 30, 2026
180b1ec
rtl8821ce: install the group key where the AP numbers it
eKisNonos Sep 30, 2026
9f8e6d3
Merge origin/linux/go-guests into linux/sync
eKisNonos Sep 30, 2026
09dd2ea
Merge origin/drivers/net-real-hardware into linux/sync
eKisNonos Sep 30, 2026
950541d
Merge origin/main into linux/sync
eKisNonos Sep 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions .github/actions/nonos-setup/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -89,10 +89,10 @@ runs:
for t in "${tgts[@]}"; do
t="$(echo "${t}" | xargs)"
[ -z "${t}" ] && continue
# x86_64-nonos is a JSON build-std target, not a rustup target.
# The *-nonos targets are JSON build-std targets, not rustup targets.
# Only `rustup target add` the registered tier-2/3 targets.
case "${t}" in
x86_64-nonos|x86_64-nonos-user) echo "skip rustup target add ${t} (json build-std target)"; continue ;;
x86_64-nonos|x86_64-nonos-user|aarch64-nonos|aarch64-nonos-user) echo "skip rustup target add ${t} (json build-std target)"; continue ;;
esac
echo "rustup target add ${t}"
rustup target add "${t}"
Expand Down
93 changes: 93 additions & 0 deletions .github/workflows/ci-boot-aarch64.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
name: ci-boot-aarch64

# Reusable aarch64 boot proof. Each cell builds one image through the make
# target a developer runs, boots it under QEMU virt with a GICv3 and `-cpu max`,
# and holds the serial log to that cell's claims with
# scripts/check_aarch64_boot.py:
#
# core the core profile reaches [KSEC] 4/4, Core ready,
# Entering userspace and [INIT] Starting, in that order,
# with no trap, boot refusal or panic line on the way
# trap-sp0 an exception in the SP_EL0 vector group, taken with the
# MMU off, prints one [TRAP] line whose ESR, saved SPSR,
# SP and ELR are the ones the architecture defines for the
# `brk #0x5350` the image carries
# trap-kernel-abort a kernel read of an unmapped address, taken with the MMU
# on, prints the trap contract's report with a same-EL data
# abort, a level 0 translation fault and the address read
#
# The runner is x86_64, so QEMU emulates the CPU (TCG). A core boot reaches
# [INIT] Starting in seconds, so the deadline only bounds a hung boot.

on:
workflow_call:

permissions:
contents: read

defaults:
run:
shell: bash

concurrency:
group: ci-boot-aarch64-${{ github.ref }}
cancel-in-progress: false

jobs:
boot-aarch64:
name: boot-aarch64 (${{ matrix.cell }})
runs-on: ubuntu-latest
timeout-minutes: 45
strategy:
fail-fast: false
matrix:
include:
- cell: core
target: nonos-mk-arm
- cell: trap-sp0
target: nonos-mk-arm-trap-sp0
- cell: trap-kernel-abort
target: nonos-mk-arm-trap-kernel-abort
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v4.2.2
with:
submodules: recursive
persist-credentials: false
- uses: ./.github/actions/nonos-setup
with:
targets: aarch64-nonos
module: boot-aarch64
- name: Install QEMU for aarch64
run: |
set -euo pipefail
sudo apt-get update
sudo apt-get install -y qemu-system-arm
qemu-system-aarch64 --version | head -1
- name: Prove the asserter rejects what it must
run: python3 scripts/check_aarch64_boot.py --self-test
- name: Provision a scratch signing key
# The fork dev seed signs the manifest; this lane proves the boot path,
# not the trust chain, and the image never leaves the runner.
run: bash nonos-ci/setup-signing-key.sh
- name: Build the ${{ matrix.cell }} image
run: make ${{ matrix.target }} SIGNING_KEY=.keys/signing_key_v1.bin
- name: Check the image is a loadable AArch64 kernel
run: python3 scripts/check_kernel_elf.py --arch aarch64 --elf target/aarch64-nonos/release/nonos-kernel
# The log goes under runner.temp, which starts empty in every job, rather
# than under target/, which the setup action restores from cache: a log
# left by an earlier run must never be what gets uploaded.
- name: Boot the ${{ matrix.cell }} cell
run: |
set -euo pipefail
mkdir -p "${{ runner.temp }}/boot-aarch64"
python3 scripts/check_aarch64_boot.py --cell ${{ matrix.cell }} \
--elf target/aarch64-nonos/release/nonos-kernel \
--log "${{ runner.temp }}/boot-aarch64/${{ matrix.cell }}.log" --deadline 300
- name: Upload the serial log
if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: boot-aarch64-${{ matrix.cell }}
path: ${{ runner.temp }}/boot-aarch64/${{ matrix.cell }}.log
retention-days: 14
if-no-files-found: error
50 changes: 50 additions & 0 deletions .github/workflows/ci-build-aarch64.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: ci-build-aarch64

# Reusable aarch64 compile proof. Builds the kernel for aarch64-nonos.json with
# the core profile through the same make target a developer runs, then checks
# the output is a loadable AArch64 image rather than only that cargo exited 0.
#
# What it checks:
# - the crate, the arch assembly and the link all succeed for aarch64
# - the ELF is an AArch64 static executable whose entry is `_start`
# - the entry lies in an executable PT_LOAD and no PT_LOAD is W+X
# - the signed manifest and signature sections are present
# It does not boot the image. That is ci-boot-aarch64.yml's job.

on:
workflow_call:

permissions:
contents: read

defaults:
run:
shell: bash

concurrency:
group: ci-build-aarch64-${{ github.ref }}
cancel-in-progress: false

jobs:
build-aarch64:
name: build-aarch64
runs-on: ubuntu-latest
timeout-minutes: 45
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v4.2.2
with:
submodules: recursive
persist-credentials: false
- uses: ./.github/actions/nonos-setup
with:
targets: aarch64-nonos
module: build-aarch64
- name: Provision a scratch signing key
# The build embeds an Ed25519 signature over the kernel manifest, so it
# needs a seed. This lane proves compilation, not the trust chain; the
# fork dev seed is enough and never reaches a release.
run: bash nonos-ci/setup-signing-key.sh
- name: Build the aarch64 kernel (microkernel-core + nonos-arch-preview)
run: make nonos-mk-arm SIGNING_KEY=.keys/signing_key_v1.bin
- name: Check the image is a loadable AArch64 kernel
run: python3 scripts/check_kernel_elf.py --arch aarch64 --elf target/aarch64-nonos/release/nonos-kernel
2 changes: 1 addition & 1 deletion .github/workflows/ci-iso.yml
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ jobs:

# Build the flashable image. This drives, in order: build and sign every
# capsule, enroll the whole set under one STARK policy root and emit each
# NZKSTRK1 trailer, build and dual-sign the kernel, enroll the kernel and
# NZKSTRK2 trailer, build and dual-sign the kernel, enroll the kernel and
# embed its STARK self-attestation trailer, build the bootloader with the
# stark-kernel-attest check and the enrolled kernel root, and package the
# GPT/FAT32 image.
Expand Down
6 changes: 6 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,12 @@ jobs:
build:
uses: ./.github/workflows/ci-build.yml

build-aarch64:
uses: ./.github/workflows/ci-build-aarch64.yml

boot-aarch64:
uses: ./.github/workflows/ci-boot-aarch64.yml

# The baked trust ledger must verify on every checkout, not only on a
# release tag. The keystore re-enrollment shipped with a stale ledger
# and nothing between merges and the tag ever looked, so the first
Expand Down
14 changes: 14 additions & 0 deletions .github/workflows/verify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,18 @@ jobs:
run: python3 scripts/check_service_caps.py
- name: Attestation parameters live in one place
run: python3 scripts/check_attest_params.py
- name: Every assumption the security rests on is registered
run: python3 tools/nonos-assumptions
- name: No new control that exists and does not run
run: python3 scripts/check_unenforced.py && python3 scripts/check_unenforced.py --self-test
- name: Linux syscall coverage does not fall
run: python3 tools/nonos-linux-coverage --baseline scripts/baselines/linux-syscalls.txt
- name: Wayland coverage does not fall
run: python3 tools/nonos-wayland-coverage --baseline scripts/baselines/wayland-globals.txt
- name: Every served Linux call says what it discloses
run: python3 tools/ratchets/disclosure.py
- name: Every mutant still removes the control it names
run: python3 tools/nonos-mutant --check

# The committed verification/evidence/EVIDENCE.json is a machine-readable inventory of
# everything NONOS proves. Regenerate it from the source tree and fail if it
Expand Down Expand Up @@ -353,6 +365,8 @@ jobs:
- audio_proto_proofs
- capsule_crypto_proofs
- aes_proofs
- capsule_linux_proofs
- market_proofs
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v4.2.2
with:
Expand Down
Binary file added .keys/app_store_publisher_ed25519.pub
Binary file not shown.
Binary file added .keys/app_store_publisher_mldsa65.pub
Binary file not shown.
2 changes: 2 additions & 0 deletions .keys/marketplace_operator_ed25519.pub
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
)_„É|b<C‹Ê=Á€˜Ÿ
;¡úâT­êŽc
22 changes: 16 additions & 6 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,12 @@ nonos-arch-preview = []
# no reason to spend it on, and the benchmark lane turns them on.
nonos-bench-micro = []

# aarch64 boot lane only. Each compiles one deliberate exception into the boot
# path so the lane can assert the line the kernel prints for it. No profile
# enables them; a kernel built with one stops at that exception by design.
nonos-trap-proof-sp0 = []
nonos-trap-proof-kernel-abort = []

# Bootstrap. `kernel` switches malloc/free to Rust `alloc`; `standalone`
# brings in the panic handler and global allocator.
kernel = []
Expand Down Expand Up @@ -113,6 +119,7 @@ nonos-capsule-video-player = []
nonos-capsule-about = []
nonos-capsule-install = []
nonos-capsule-install-cli = []
nonos-capsule-app-store = []
nonos-capsule-audio-player = []
nonos-capsule-hello = []
nonos-capsule-boot-splash = []
Expand Down Expand Up @@ -556,6 +563,8 @@ microkernel-desktop-base = [
"nonos-capsule-about",
"nonos-capsule-install",
"nonos-capsule-install-cli",
"nonos-capsule-app-store",
"nonos-capsule-market",
"nonos-capsule-linux",
"nonos-capsule-audio",
"nonos-capsule-driver-hda",
Expand Down Expand Up @@ -824,8 +833,10 @@ nonos-arch-iommu = [] # src/arch/x86_64/iommu/*
# machine has with no IOMMU at all. Split from `nonos-arch-iommu` because that
# flag only decides whether the code compiles; this one decides whether the
# hardware is put in charge. Part of `microkernel-core`: a build that omits it
# says so on the console at boot, and the DMA API refuses to hand out a
# device address it cannot back with a translation.
# says so on the console at boot, and IommuDomain refuses to allocate, map or
# attach while no unit translates. MkDmaMap and the direct memory::dma
# allocators do not ask: they hand out host-physical device addresses with or
# without a translation.
nonos-iommu-enforce = ["nonos-arch-iommu"]

# In-tree crypto, audit-anchored constant-time implementations.
Expand Down Expand Up @@ -873,7 +884,9 @@ x25519-dalek = { version = "2", default-features = false, features = ["s
sha3 = { version = "0.10", default-features = false, optional = true }

# Hashing.
blake3 = { version = "1.0", default-features = false }
# Portable only: the SSE and AVX assembly would use vector registers in the
# kernel, which runs before a thread's are saved.
blake3 = { version = "1.0", default-features = false, features = ["pure"] }
sha2 = { version = "0.10", default-features = false, features = ["force-soft"] }

# Core utilities used in the kernel tree.
Expand All @@ -886,9 +899,6 @@ smoltcp = { version = "0.11", default-features = false, features = ["alloc", "so
[target.'cfg(target_arch = "x86_64")'.dependencies]
x86_64 = { version = "0.14", default-features = false, features = ["abi_x86_interrupt", "instructions"] }

[target.'cfg(not(target_arch = "x86_64"))'.dependencies]
blake3 = { version = "1.0", default-features = false, features = ["pure"] }

[build-dependencies]
blake3 = { version = "1.5", default-features = false }
cc = "1.1"
Expand Down
10 changes: 8 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -116,8 +116,9 @@ qemu-serial: nonos-mk-run-serial-log
qemu-smp: nonos-mk-run-smp-serial-log
.PHONY: qemu-smp
# The same boot with DMA remapping hardware present. Every other lane gives
# QEMU no IOMMU, so the kernel reports "DMA is unrestricted" and the VT-d
# bring-up compiled into every image never executes. Slow: VT-d needs TCG.
# QEMU no IOMMU, so the kernel reports "[IOMMU] vendor=none enforcing=0" and
# the VT-d bring-up compiled into every image never executes. Slow: VT-d
# needs TCG.
qemu-iommu: nonos-mk-run-iommu-serial-log
.PHONY: qemu-iommu
# The installer, end to end. `make qemu-install` boots the desktop with a blank
Expand Down Expand Up @@ -197,6 +198,11 @@ doctor:
else echo " MISS rust $(TOOLCHAIN) (rustup toolchain install $(TOOLCHAIN))"; ok=0; fi; \
if [ -n "$(OVMF)" ] && [ -f "$(OVMF)" ]; then echo " ok OVMF $(OVMF)"; \
else echo " MISS OVMF UEFI firmware"; ok=0; fi; \
if ! $(QEMU) -accel help 2>/dev/null | grep -qx "$(QEMU_ACCEL)"; then \
echo " MISS accel $(QEMU_ACCEL) ($(QEMU) does not offer it; set QEMU_ACCEL)"; ok=0; \
elif [ "$(QEMU_ACCEL)" = tcg ]; then \
echo " ok accel tcg (no /dev/kvm or hvf: the CPU is emulated and boots are slow)"; \
else echo " ok accel $(QEMU_ACCEL)"; fi; \
echo; \
if [ $$ok = 1 ]; then echo " This host can build and boot NONOS."; \
else \
Expand Down
Loading
Loading