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).
158 remaining items
tamnd commentedon Nov 11, 2026
Release 0.5.21 is out: https://github.com/tamnd/rukernel/releases/tag/v0.5.21 (#695). It has #691 to #694: the count of the victim of a memory.oom.group kill (#691), the throttle of a cgroup with a cpu.max debt (#692), the AppArmor namespaces and stacks with the regression tests in complain mode (#693), and /dev/tpmrm0, the resource manager of TPM 2.0 (#694).
tamnd commentedon Nov 11, 2026
Item 5 of #541 is partly done in #696: the event log of the firmware at
/sys/kernel/security/tpm0/binary_bios_measurements, from the log area of the ACPITPM2table on x86-64 orlinux,sml-baseof the device tree on arm64, as drivers/char/tpm/eventlog of Linux.tpm2_eventlogreplays PCRs 0 to 7, and they are the same as the SHA-256 PCRs oftpm2_pcrread.tpmtest passes. QEMUvirtwith-kernelhas no firmware, so there is no log.Not done:
systemd-analyze pcrsin thesystemdboot test withRK_TPM=1did not run.The full gate did not run.
tamnd commentedon Nov 11, 2026
#697 adds the flowtables of nf_tables and the
flow_offloadexpression. On x86_64 and arm64, 45 of the 50 tests in the dirs flowtable, listing, owner and cache pass. Before this change, 29 passed. All 15 tests of flowtable now pass. No item is ticked: the item of sets and maps and the full run are still to do.tamnd commentedon Nov 11, 2026
#698 merged: AppArmor enforce mode for the file and exec rules (#540, item 4). A denial of an open, a read, a write, a lock, a map or an exec gives
EACCESand aDENIEDrecord. The boot testapparmorpasses on x86_64 and arm64.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.