Kubernetes-ready Ubuntu Vagrant Box with OS-level optimizations. Supports 24.04 LTS (Noble Numbat, default) and 26.04 LTS (Resolute Raccoon, kernel Linux 7.0).
Vagrant Cloud (v1.1.0):
- 24.04 ext4:
dasomel/ubuntu-24.04-ext4/ xfs:dasomel/ubuntu-24.04-xfs- 26.04 ext4:
dasomel/ubuntu-26.04-ext4/ xfs:dasomel/ubuntu-26.04-xfs
| 24.04 LTS (Noble Numbat) | 26.04 LTS (Resolute Raccoon) | |
|---|---|---|
| Kernel | 6.8 | 7.0 |
| init / cgroup | systemd 255, cgroup v2 default | systemd 259, cgroup v1 removed (v2-only) |
| Container runtime | containerd 1.7 | containerd 2.2 / runc 1.4 |
| Crypto | TLS 1.2+ | Post-quantum default (OpenSSL 3.5 / OpenSSH 10.2) |
| Core utilities | GNU coreutils, sudo | partial Rust rewrite (uutils, sudo-rs) |
| Choose when | Maximum stability (default) | Latest LTS, kernel 7.0 features |
K8s note: 26.04 is cgroup v2-only — set
SystemdCgroup=truefor kubelet/containerd (see K8s Post-Install). Both lines are tuned identically for Kubernetes. Full comparison: migration notes.
- Base OS: Ubuntu 24.04 LTS or 26.04 LTS Cloud Image
- Multi-Architecture: AMD64, ARM64
- Multi-Provider: VirtualBox, VMware Fusion
- Filesystem Selection: ext4 (default) or xfs
- K8s Ready: OS tuning for Kubernetes (K8s not included)
- 1TB Disk: Large disk with thin provisioning (ext4 ~2.2GB, xfs ~3.4GB)
- Auto-Extension: Disk auto-extends on boot (partition → PV → LV → filesystem)
| Provider | AMD64 | ARM64 | Notes |
|---|---|---|---|
| VirtualBox | ✅ | ✅ | VirtualBox 7.1+ required for ARM64 |
| VMware Fusion | ✅* | ✅ | Apple Silicon supported; *AMD64 is local-build only — Vagrant Cloud ships ARM64 (CI runner limitation) |
# 24.04 ext4 (default, stable, general purpose)
vagrant init dasomel/ubuntu-24.04-ext4
vagrant up --provider=vmware_desktop
# 24.04 xfs (better for K8s ephemeral storage quota, large files)
vagrant init dasomel/ubuntu-24.04-xfs
vagrant up --provider=vmware_desktop
# 26.04 (Resolute Raccoon, kernel Linux 7.0)
vagrant init dasomel/ubuntu-26.04-ext4
vagrant up --provider=vmware_desktop| ext4 | xfs | |
|---|---|---|
| Best for | General purpose | K8s workloads, large files |
| K8s Quota | No native support | --local-storage-capacity-isolation |
| Online Shrink | Supported | Not supported |
| Box Size | ~2.2GB | ~3.4GB |
Vagrant.configure("2") do |config|
# 24.04: "dasomel/ubuntu-24.04-ext4" or "dasomel/ubuntu-24.04-xfs"
# 26.04: "dasomel/ubuntu-26.04-ext4" or "dasomel/ubuntu-26.04-xfs"
config.vm.box = "dasomel/ubuntu-24.04-ext4"
config.vm.provider "virtualbox" do |vb|
vb.memory = 4096
vb.cpus = 2
end
config.vm.provider "vmware_desktop" do |v|
v.vmx["memsize"] = "4096"
v.vmx["numvcpus"] = "2"
end
config.vm.hostname = "k8s-node"
config.vm.network "private_network", ip: "192.168.56.10"
end- Kernel Parameters: Network, memory, and filesystem tuning (
vm.max_map_count=1048576) - Resource Limits: File descriptors, processes, memory locks
- K8s Prerequisites: Swap disabled, required kernel modules (
br_netfilter,overlay,iscsi_tcp), IP forwarding, persistentbpffsmount (/sys/fs/bpffor Cilium), CSI storage prerequisites (open-iscsiwithiscsidenabled,cryptsetup,dmsetup,nfs-commonfor Longhorn V1) - Security & Compliance:
unattended-upgradespurged (kubelet Graceful Node Shutdown conflict),needrestartremoved (Qualys LPE CVEs),auditdinstalled (disabled by default, CIS benchmark ready with bounded I/O settings) - Time Synchronization:
chronyreplacingsystemd-timesyncd(Ubuntu 25.10+/26.04 default, K8s/etcd recommended), Korean NTP servers configured via/etc/chrony/sources.d/kr-ntp.sources - Disk I/O: Scheduler and read-ahead optimization
- Network: TCP buffers, conntrack, ring buffers,
dhcp-identifier: macnetplan configuration (fixes 26.04 post-install IP change SSH timeout)
| Category | Tools |
|---|---|
| K8s Ecosystem | jq, yq, bash-completion, nfs-common, open-iscsi, cryptsetup, dmsetup, apparmor-utils, sshpass |
| Security & Audit | auditd (disabled by default) |
| Monitoring | sysstat, iotop, iftop, nload, nethogs, dool |
| Network Diag | ipvsadm, ipset, conntrack, ethtool, tcpdump, nmap |
| Performance | linux-tools, bpfcc-tools, bpftrace |
Users install these components based on their requirements:
- Container runtime (containerd, CRI-O)
- Kubernetes (kubeadm, kubelet, kubectl)
- CNI plugins (Flannel, Calico, Cilium)
# 1. Install containerd
sudo apt-get update && sudo apt-get install -y containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
sudo systemctl restart containerd && sudo systemctl enable containerd
# 2. Install K8s (choose your version)
K8S_VERSION="v1.31"
curl -fsSL "https://pkgs.k8s.io/core:/stable:/${K8S_VERSION}/deb/Release.key" | \
sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/${K8S_VERSION}/deb/ /" | \
sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update && sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
# 3. Initialize cluster (master node)
sudo kubeadm init --pod-network-cidr=10.244.0.0/16# Check tuning settings
vagrant ssh -c "cat /etc/vagrant-box/info.json"
vagrant ssh -c "/bin/bash /etc/vagrant-box/check-tuning.sh"- Box Usage Guide - Detailed usage instructions
- K8s Post-Install - containerd/kubelet tuning
- Packer Build Guide - Building boxes from source
- Vagrant Cloud Guide - Upload, manage, and delete boxes
- HCP Credentials Setup - Rotate HCP service principal keys
- Deploy Checklist - Pre-release verification
- Legal & Licensing - OSS licenses and compliance
- Changelog - Release notes and version history
cd packer
# Initialize Packer plugins
./build.sh init
# Build 24.04 (default)
./build.sh vmware-arm64
./build.sh vmware-arm64 --fs=xfs
# Build 26.04
./build.sh vmware-arm64 --version=26.04
./build.sh vmware-arm64 --version=26.04 --fs=xfs
# Build all boxes
./build.sh all # 24.04 ext4
./build.sh all --version=26.04 # 26.04 ext4
# Upload (root script)
UBUNTU_VERSION=26.04 ./upload-boxes.sh # 26.04 uploadCI: Use the
ubuntu_versioninput in the GitHub Actionsworkflow_dispatchtrigger to select 24.04 or 26.04.
- Vagrant 2.3+
- VirtualBox 7.1+ (for ARM64) or VMware Fusion
- Packer 1.10+ (CI pinned to 1.15.4)
- VirtualBox 7.1+ / VMware Fusion
- 20GB+ disk space per box
- Build timeouts:
ssh_timeout1h (2h forvmware-arm64), CI job timeout 90m
This project is licensed under the MIT License - see the LICENSE file for details.
This box includes software from various open source projects. See NOTICE for details.
| Component | License |
|---|---|
| Ubuntu 24.04 / 26.04 | Various |
| Kubernetes | Apache 2.0 |
| containerd | Apache 2.0 |
This project includes comprehensive context files for AI coding assistants in the .agent/ directory:
- AGENT.md - Complete technical guide (Packer, K8s tuning, optimizations)
- SECURITY.md - Security guidelines and best practices
- skills/ - AI agent skills for automated reviews
While designed for tools like Claude Code, these files contain valuable technical documentation for all developers working with Packer, Kubernetes, or Ubuntu optimization.
Contributions are welcome! Please feel free to submit a Pull Request.