config: add MQUEUE, BRIDGE, NETFILTER support#128
Conversation
These config files were originally generated against older kernel versions (6.6.59 for x86_64/aarch64/sev/windows, 6.12.20 for tdx/riscv64) and had not been refreshed after the 6.12.87 rebase. Run `make olddefconfig` against the 6.12.87 kernel sources to pick up new defaults and resolve any missing or changed Kconfig symbols. Assisted-by: <anthropic/claude-opus-4.6> Signed-off-by: Dusty Mabe <dusty@dustymabe.com>
The value is set on aarch64 and without it we hit a common error trying to run containers inside a libkrun VM. Start up libkrun: ``` $ podman run --net=host --rm --log-level=debug quay.io/fedora/fedora-minimal:44 echo hello ... time="2026-05-18T19:55:54Z" level=debug msg="ExitCode msg: \"crun: mount `mqueue` to `dev/mqueue`: no such device: oci runtime error\"" Error: OCI runtime error: crun: mount `mqueue` to `dev/mqueue`: No such device ``` Note this is essentially a revert of 62444be. Assisted-by: <anthropic/claude-opus-4.6> Signed-off-by: Dusty Mabe <dusty@dustymabe.com>
If you want to start a podman container inside the krun VM and not use `--net=host` (i.e. use netavark instead) then you need BRIDGE support [1]. Additionally, enable CONFIG_NETFILTER and the full nftables stack (NF_TABLES, NF_CONNTRACK, NF_NAT, NFT_MASQ, etc.) so that podman/netavark can use nft without getting: src/mnl.c:66: Unable to initialize Netlink socket: Protocol not supported Enable these on all three architectures: x86_64, aarch64, riscv64. [1] podman-container-tools/podman#25201 (comment) Assisted-by: <anthropic/claude-opus-4.6> Signed-off-by: Dusty Mabe <dusty@dustymabe.com>
There's never been a well-defined rule. If there's a use case, the change doesn't impact boot time and the size increase isn't too large, it can go in. In this case, on aarch64 I see the size increases by just 64k, and there isn't a reason for this change to affect boot time. So LGTM, thanks! |
|
I've just noticed the first commit, beyond aligning the config with 6.12.87, actually changes the current configuration, at least on aarch64 (for instance, disabling KVM). Please drop the first commit and just add the new configuration options (Makefile does an "olddefconfig" anyway). |
oops. Yes, I see that now.
Do you know an easy way for me to translate "I want bridge and netfilter/nftables support" into the right config options? with |
Let me update the configs manually, and then you can rebase this PR on it. |
|
Hey @dustymabe I've coincidentally been working on the exact same thing over the last 2 days. I also modified the kernel modules to run docker (without any warnings so there's a bit more bloat). It would be nice to add these, too. (Update:) This PR is also very useful as this is a basically perfect solution for the dind problem. |
|
FYI, the MQUEUE topic came up before in containers/libkrun#653. This was adressed in podman-container-tools/podman#28639 (inner podman no longer requires MQUEUE). |
Oh nice. That's not in a podman release just yet but will be nice once it is.
yeah I'm not sure what we want the strategy to be - will lean on @slp for that. If we drop that part from this PR I should add a commit to remove MQUEUE from the non-x86_64 configs because 62444be only removed it from x86_64. @slp I think at this point I'm waiting on #128 (comment) - let me know if there's any action I need to take |
Interesting @DaniD3v - we're definitely working in the same area. I think it's slightly different, though. For me I launch the AI tool inside the krun VM and then it does everything in there. So I think the difference is that for me opencode itself (and the entire VM it's running in) is the sandbox and for you opencode is run in some environment (host?) and then it runs commands via the MCP tool you wrote inside a sandbox. Is that a correct understanding? |
yes, exactly
I see. That's also interesting. The MCP server approach has a few (opinionated) advantages: I guess you could combine them tho and then you'd still have advantages 1 and 3 |
|
@dustymabe Please consider rebasing on top of #129. I've sync'ed the config files on top of a 6.12.91 kernel. |
I'm still building my trust in AI in general. Right now my workflow shares only specific directories into the environment where my tool (opencode) runs. The container (really krunvm via
|
@slp will do! I'm no kernel expert here. Do you know the best way to enable the default config values for nftables/netfilter and bridge in the configs? In my initial run I just asked AI to do it, but I'd like to do it a more proper way if there is one you recommend. |
See individual commit messages.
Essentially what I'm trying to do is run
podmaninside my krun VM and have it be completely isolated from the host, but also function well enough without special arguments to act generically like a container runtime. i.e. I want to be able to navigate to a project's source code and typemake whateverand if that project leverages containers everything just works.An example of this would be
make ci-operator-configfrom this repo without having to patch the Makefile like this:Ultimately my goal is to sandbox AI agents so I'm comfortable allowing them to do more, but not worrying about my host system.
I understand especially the last commit adding BRIDGE/NETFILTER may cause the size of the kernel to increase and may not be desired since it enables many options. Is this generally a problem? Is there some sort of balance between "these config options enable an important use case" and the size increase?