Repository navigation
Open
1 / 91 of 9 issues completedLabels
area/bpfBPF: the verifier, the JIT, maps and BTF.BPF: the verifier, the JIT, maps and BTF.area/containerscgroup v2 and the container interfaces.cgroup v2 and the container interfaces.area/netNetworking: sockets, TCP, netlink and netfilter.Networking: sockets, TCP, netlink and netfilter.area/securityLSMs, seccomp, Landlock, capabilities and mitigations.LSMs, seccomp, Landlock, capabilities and mitigations.area/vfsThe VFS, the dentry cache, procfs and sysfs.The VFS, the dentry cache, procfs and sysfs.kind/milestoneA tracking issue for one milestone. It lists the items and the exit criterion.A tracking issue for one milestone. It lists the items and the exit criterion.priority/p2Do this when there is time.Do this when there is time.
Milestone
Description
The L4 distribution images boot to multi user mode with systemd.
Items
- R5 systemd as PID 1: cgroup v2 controllers, namespaces and pidfds #536 systemd as PID 1: cgroup v2 with all controllers, all namespaces and pidfds. Exit: systemd boots and starts its default units.
- R5 eBPF: the interpreter, maps and cgroup programs #537 The eBPF interpreter, maps and cgroup programs. Exit: systemd IP accounting and the device controller work.
- R5 netlink: rules, nexthops, generic netlink and ethtool for networkd, resolved and udevd #538 The netlink families for networkd, resolved and udevd. Exit: networkd configures the network and udevd names the devices.
- R5 uevents, the keyring, fanotify and inotify #539 uevents, the keyring, fanotify and inotify. Exit: Their LTP tests reach the pass set of the reference.
- R5 AppArmor and SELinux: the LSM framework, permissive and then enforcing #540 AppArmor and SELinux, first in permissive mode and then in enforcing mode. Exit: Ubuntu boots with AppArmor enforcing. Fedora boots with SELinux enforcing.
- R5 TPM: the CRB and TIS drivers, /dev/tpm0 and /dev/tpmrm0 #541 The TPM driver. Exit: systemd-cryptenroll binds a key to the virtual TPM.
- R5 nftables: the hooks, nf_tables, conntrack and NAT #542 nftables. Exit: The nftables test suite reaches the pass set of the reference.
- R5 the remaining /sys and /proc files that the images read #543 The remaining /sys and /proc files that the corpus reads. Exit: The L4 trace of each image shows no missing file.
- Bench on KVM: will-it-scale for CortenMM and the huge page flush #533 Bench on KVM: will-it-scale for CortenMM and the huge page flush. Exit: The numbers for both backends on x86_64 and arm64 are in tools/bench, and open question 1 (Open question 1: CortenMM or VMAs as the source of truth for address spaces #22) is decided.
Exit criterion
The L4 images boot to multi user mode and pass their smoke tests on both tier 1 architectures: Debian 13, Ubuntu 26.04 and 26.10, Fedora 44, Arch, Alpine 3.22 and NixOS 26.05. The systemd TEST-* integration tests reach the pass set of the reference, apart from the listed exceptions.
If we stop here
We have a kernel that distributions can use in place of Linux in virtual machines.
Refer to spec/22-milestones.md.
Metadata
Metadata
Assignees
Labels
area/bpfBPF: the verifier, the JIT, maps and BTF.BPF: the verifier, the JIT, maps and BTF.area/containerscgroup v2 and the container interfaces.cgroup v2 and the container interfaces.area/netNetworking: sockets, TCP, netlink and netfilter.Networking: sockets, TCP, netlink and netfilter.area/securityLSMs, seccomp, Landlock, capabilities and mitigations.LSMs, seccomp, Landlock, capabilities and mitigations.area/vfsThe VFS, the dentry cache, procfs and sysfs.The VFS, the dentry cache, procfs and sysfs.kind/milestoneA tracking issue for one milestone. It lists the items and the exit criterion.A tracking issue for one milestone. It lists the items and the exit criterion.priority/p2Do this when there is time.Do this when there is time.
Activity
tamnd commentedon Nov 1, 2026
Added #533: the bench on KVM for CortenMM and the huge page flush, moved from #405 and #435 in R4. It also decides open question 1 (#22).
162 remaining items
tamnd commentedon Nov 11, 2026
#699 adds the crate
rk-cryptowith SHA-1, SHA-2, HMAC, AES and the modes ECB, CBC, CTR and XTS, as crypto/ of Linux, for #541 (theAF_ALGitem). The 13 unit tests with the vectors of crypto/testmgr.h pass.AF_ALGcomes in the next two PRs.tamnd commentedon Nov 12, 2026
Release 0.5.22 is out: https://github.com/tamnd/rukernel/releases/tag/v0.5.22 (#700). It has #696 to #699: the event log of the TPM firmware (#696), the nf_tables flowtables (#697), the AppArmor enforce mode for the file and exec rules (#698), and the crate rk-crypto with SHA, HMAC and AES (#699).
tamnd commentedon Nov 12, 2026
#701 finishes the first part of the verifier. For each program of bpf/test_verifier of the program types of this issue (
SOCKET_FILTER,CGROUP_SKB,CGROUP_SOCK,CGROUP_SOCK_ADDRandCGROUP_DEVICE), rukernel now accepts or refuses the program as Linux does, with the same message. It adds state pruning, the Linux rules for back edges withCAP_BPF, the bounds afterBPF_JSETandBPF_JMP32, the alignment and context access rules, andBPF_PROG_TEST_RUN. tools/kselftest/bpf.md gives the result.Test results:
cargo test -p rk-bpf -p rk-abi(server2): 80 and 7 passed. Clippy gives no new warnings. Load of server2: 14.6 to 18.5.kselftestwith bpf/test_verifier (server1, load 2.6 to 3.3):Summary: 281 PASSED, 510 SKIPPED, 0 FAILED. Before, 259 passed and 22 failed. The skips are the unprivileged runs, the program types outside this issue, thebpf_loopinline that needs a JIT, andBPF_MAP_TYPE_PERF_EVENT_ARRAY.ltp(server1, load 0.18 to 0.44): bpf_map01, bpf_prog01, bpf_prog02, bpf_prog03 and bpf_prog04 pass. bpf_prog05, bpf_prog06 and bpf_prog07 give TCONF, as on Linux withkernel.unprivileged_bpf_disabled=2.boot-test initwith-- only bpf(server1, load 0.03 to 0.11): exit 33, 94 checks ok.boot-test aarch64withRK_AARCH64_TESTS=initand-- only bpf(server2, load 5.4 to 5.7): pass, 94 checks ok.tamnd commentedon Nov 12, 2026
#702 (#542, nft-26) adds the stateful expressions of sets and elements of nf_tables (
counter,quota,limitandconnlimit).Result on x86_64: sets 78 of 93 pass (61 in the report), transactions 37 of 41 (34 in the report). json, maps, nft-f, optimizations and transactions: 105 of 129, 96 before. The inet boot tests pass on x86_64 and arm64.
No item is ticked. The sets and maps groups of the report have more work.
tamnd commentedon Nov 12, 2026
#703 adds the
AF_ALGsockets with the typehash, as crypto/af_alg.c and crypto/algif_hash.c, for #541 (theAF_ALGitem). LTP af_alg01 passes on x86_64 and arm64. af_alg02 to af_alg06 and af_alg08 give TCONF, as on Linux with the allow list. af_alg07 fails:fchownaton a closed socket does not giveENOENTyet.skciphercomes in the next PR.tamnd commentedon Nov 12, 2026
Release 0.5.23 is out: https://github.com/tamnd/rukernel/releases/tag/v0.5.23 (#704). It has #701 to #703: the first part of the eBPF verifier, with the result of Linux for test_verifier (#701), the stateful expressions of nf_tables sets and elements and connlimit (#702), and AF_ALG sockets with the type hash (#703).
tamnd commentedon Nov 12, 2026
#705 adds the
sdbpfboot test. It runs test-bpf-devices, test-bpf-firewall and test-bpf-foreign-programs of systemd, which useBPF_PROG_ATTACH,BPF_PROG_DETACH,BPF_PROG_QUERYandBPF_LINK_CREATEwith the effective arrays. The kernel needed no change.sdbpfon server1: the three tests exit 0,rk-sdbpf: pass, QEMU exit 1. Load average 2.1 to 3.4.-- only bpfon server1: exit 33, 94 ok. Load average 0.03 to 0.11.-- only bpfon server2: pass, 94 ok. Load average 5.4 to 5.7. xtask has no systemd tests on arm64.Remaining: systemd logs "Failed to get cgroup ID ... Operation not supported", probably from
name_to_handle_aton cgroupfs. systemd ignores it.tamnd commentedon Nov 12, 2026
#706 adds
FAN_REPORT_MNT: a fanotify group marks a mount namespace withFAN_MARK_MNTNSand getsFAN_MNT_ATTACHandFAN_MNT_DETACHwith aFAN_EVENT_INFO_TYPE_MNTrecord. The focusedinitboot test passes on x86_64 and arm64. LTP fanotify21 passes, and fanotify20 gives TCONF as on Linux 7.3. This completes the fanotify item of #539.tamnd commentedon Nov 12, 2026
#707 (#542, nft-27) makes the sets of nf_tables with ranges work as nft_set_rbtree.c and nft_set_pipapo.c of Linux: get of a range, overlaps, concatenated ranges, adjacent ranges and the dump order of nft_pipapo_walk.
Result on x86_64: sets 81 of 93 pass (78 before, 61 in the report) and maps 25 of 31, with nft-28 in the same kernel. The inet boot tests pass on x86_64 and arm64.
tamnd commentedon Nov 12, 2026
Release 0.5.24 is out: https://github.com/tamnd/rukernel/releases/tag/v0.5.24 (#708). It has #705 to #707: #705, #706 and #707.
tamnd commentedon Nov 12, 2026
#709 adds the
AF_ALGsockets with the typeskcipher, as crypto/algif_skcipher.c, for #541 (theAF_ALGitem). The ciphers areecb(aes),cbc(aes),ctr(aes)andxts(aes). LTP af_alg01 passes on x86_64 and arm64, and af_alg02 to af_alg06 and af_alg08 give TCONF, as on Linux 7.3 with the allow list. af_alg07 needs the owner of the inode of a socket, which comes in the next PR.tamnd commentedon Nov 12, 2026
#710 adds the path rules of AppArmor (#540 item 4). The VFS calls the path hooks of Linux, and an open with
O_TRUNCtruncates only after the LSM check. The path regression tests and readdir pass, as on Linux 6.8. The item stays open: the other rule classes and theubuntuboot test come in the next PRs.tamnd commentedon Nov 12, 2026
#711 (#542, nft-28) adds the expressions
numgenandhashof nf_tables and more keys ofmeta, as nft_numgen.c, nft_hash.c and nft_meta.c of Linux.Result: maps/nat_addr_port, optimizations/merge_stmts_concat_vmap and transactions/0046set_0 now pass on x86_64 and arm64. The inet boot tests pass on x86_64 and arm64.
tamnd commentedon Nov 12, 2026
#712 (#542, nft-29) adds the expression
payloadthat writes the packet, with the checksums of IP, TCP, UDP and SCTP, and the expressionqueue, as nft_payload.c and nft_queue.c of Linux.Result: nft-f/0012different_defines_0, nft-f/0024priority_0 and maps/0007named_ifname_dtype_0 now pass on x86_64 and arm64. On x86_64, maps 27 of 31, nft-f 29 of 34 and sets 82 of 93 pass. The inet boot tests pass on x86_64 and arm64.
tamnd commentedon Nov 13, 2026
Release 0.5.25 is out: https://github.com/tamnd/rukernel/releases/tag/v0.5.25 (#713). It has #709 to #712: #709, #710, #711 and #712.