Fixes rootless Docker setup on Arch Linux failing with Failed to open() /dev/net/tun: No such device.
Vikunja task: GRM-154
Changes
Load tun kernel module: On Arch Linux, CONFIG_TUN=m so the module must be loaded explicitly. Added a modprobe task before running dockerd-rootless-setuptool.sh. If modprobe fails (kernel mismatch after pacman -Syu without reboot), warn but don't fail — a reboot will fix it.
Pre-configure systemd override: Create the systemd override directory and override.conf BEFORE running the setuptool, so when the setuptool starts docker.service it picks up the pasta network driver instead of defaulting to slirp4netns.
Pass env var to setuptool: Also pass DOCKERD_ROOTLESS_ROOTLESSKIT_NET to the setuptool command for belt-and-suspenders coverage.
Root Cause
The tun kernel module was not loaded. The running kernel (7.0.10) didn't match the installed kernel modules (7.0.13) after a pacman -Syu that upgraded the linux package without rebooting. modprobe couldn't find the tun module for the running kernel version.
Verification
218 tests pass, 100% coverage
lint-all passes
## Summary
Fixes rootless Docker setup on Arch Linux failing with `Failed to open() /dev/net/tun: No such device`.
Vikunja task: GRM-154
## Changes
- **Load tun kernel module**: On Arch Linux, CONFIG_TUN=m so the module must be loaded explicitly. Added a modprobe task before running dockerd-rootless-setuptool.sh. If modprobe fails (kernel mismatch after pacman -Syu without reboot), warn but don't fail — a reboot will fix it.
- **Pre-configure systemd override**: Create the systemd override directory and override.conf BEFORE running the setuptool, so when the setuptool starts docker.service it picks up the pasta network driver instead of defaulting to slirp4netns.
- **Pass env var to setuptool**: Also pass DOCKERD_ROOTLESS_ROOTLESSKIT_NET to the setuptool command for belt-and-suspenders coverage.
## Root Cause
The tun kernel module was not loaded. The running kernel (7.0.10) didn't match the installed kernel modules (7.0.13) after a pacman -Syu that upgraded the linux package without rebooting. modprobe couldn't find the tun module for the running kernel version.
## Verification
- 218 tests pass, 100% coverage
- lint-all passes
- Load the tun kernel module before running dockerd-rootless-setuptool.sh,
as both slirp4netns and pasta drivers require /dev/net/tun inside a user
namespace. On Arch Linux CONFIG_TUN=m so the module must be loaded
explicitly. If modprobe fails (kernel mismatch after pacman -Syu without
reboot), warn but don't fail — a reboot will fix it.
- Create the systemd override directory and override.conf BEFORE running
the setuptool, so when the setuptool starts docker.service it picks up
the pasta network driver instead of defaulting to slirp4netns.
- Pass DOCKERD_ROOTLESS_ROOTLESSKIT_NET env var to the setuptool command
as well, for belt-and-suspenders coverage.
Generated with [Devin](https://devin.ai)
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
emil
changed title from GRM-154 fix: load tun module and pre-configure systemd override for Arch rootless Docker to GRM-154: Fix Arch Linux rootless Docker: load tun module and pre-configure systemd override2026-07-16 17:18:15 +00:00
Documentation: WARNING — Ansible role changed but no docs updated
Tests: OK
Commit conventions: OK
No issues found by automated checks.
Auto-merge: If all CI checks pass, this PR will be merged automatically.
## Automated PR Review
- Architecture compliance: OK
- Best practices: OK
- Security: OK
- i18n: OK
- Resource management: OK
- Documentation: WARNING — Ansible role changed but no docs updated
- Tests: OK
- Commit conventions: OK
No issues found by automated checks.
---
**Auto-merge:** If all CI checks pass, this PR will be merged automatically.
Documentation: WARNING — Ansible role changed but no docs updated
Tests: OK
Commit conventions: OK
No issues found by automated checks.
Auto-merge: If all CI checks pass, this PR will be merged automatically.
## Automated PR Review
- Architecture compliance: OK
- Best practices: OK
- Security: OK
- i18n: OK
- Resource management: OK
- Documentation: WARNING — Ansible role changed but no docs updated
- Tests: OK
- Commit conventions: OK
No issues found by automated checks.
---
**Auto-merge:** If all CI checks pass, this PR will be merged automatically.
kireto
approved these changes 2026-07-16 17:39:29 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Fixes rootless Docker setup on Arch Linux failing with
Failed to open() /dev/net/tun: No such device.Vikunja task: GRM-154
Changes
Root Cause
The tun kernel module was not loaded. The running kernel (7.0.10) didn't match the installed kernel modules (7.0.13) after a pacman -Syu that upgraded the linux package without rebooting. modprobe couldn't find the tun module for the running kernel version.
Verification
GRM-154 fix: load tun module and pre-configure systemd override for Arch rootless Dockerto GRM-154: Fix Arch Linux rootless Docker: load tun module and pre-configure systemd overrideAutomated PR Review
No issues found by automated checks.
Auto-merge: If all CI checks pass, this PR will be merged automatically.
Automated PR Review
No issues found by automated checks.
Auto-merge: If all CI checks pass, this PR will be merged automatically.
Auto-approved: all CI checks passed (validate, molecule-tests).