# Agentkernel Minimal Kernel Config for Firecracker
# Based on Firecracker's recommended configuration
# Target: Linux 6.1 LTS or 5.10 LTS
#
# This config produces a ~4MB vmlinux suitable for microVM boot

# Basic kernel options
CONFIG_LOCALVERSION="-agentkernel"
CONFIG_DEFAULT_HOSTNAME="agentkernel"
CONFIG_SYSVIPC=y
CONFIG_POSIX_MQUEUE=y
CONFIG_AUDIT=n
CONFIG_IKCONFIG=n
CONFIG_CGROUPS=y
CONFIG_MEMCG=y
CONFIG_CGROUP_SCHED=y
CONFIG_CPUSETS=y
CONFIG_CGROUP_CPUACCT=y
CONFIG_NAMESPACES=y
CONFIG_UTS_NS=y
CONFIG_IPC_NS=y
CONFIG_USER_NS=y
CONFIG_PID_NS=y
CONFIG_NET_NS=y
CONFIG_MULTIUSER=y
CONFIG_SYSFS_SYSCALL=y
CONFIG_FHANDLE=y
CONFIG_POSIX_TIMERS=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=n
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_AIO=y
CONFIG_ADVISE_SYSCALLS=y
CONFIG_MEMBARRIER=y
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=n
CONFIG_KALLSYMS_BASE_RELATIVE=y

# Processor type
CONFIG_SMP=y
CONFIG_NR_CPUS=32
CONFIG_PREEMPT_VOLUNTARY=y
CONFIG_HZ_100=y
CONFIG_HZ=100
CONFIG_NO_HZ_IDLE=y
CONFIG_HIGH_RES_TIMERS=y

# 64-bit kernel
CONFIG_64BIT=y
CONFIG_X86_64=y

# Memory model
CONFIG_SPARSEMEM=y
CONFIG_SPARSEMEM_VMEMMAP=y

# Disable loadable modules for smaller/faster kernel
CONFIG_MODULES=n

# Block devices
CONFIG_BLOCK=y
CONFIG_BLK_DEV=y
CONFIG_BLK_DEV_LOOP=y

# virtio (essential for Firecracker)
CONFIG_VIRTIO=y
CONFIG_VIRTIO_ANCHOR=y
CONFIG_VIRTIO_MENU=y
CONFIG_VIRTIO_MMIO=y
CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
CONFIG_VIRTIO_BLK=y
CONFIG_VIRTIO_NET=y
CONFIG_VIRTIO_CONSOLE=y
CONFIG_VIRTIO_BALLOON=y
CONFIG_VIRTIO_VSOCKETS=y
CONFIG_VIRTIO_VSOCKETS_COMMON=y
CONFIG_VSOCKETS=y

# Serial console (for debugging)
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y

# Networking
CONFIG_NET=y
CONFIG_PACKET=y
CONFIG_UNIX=y
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
CONFIG_IPV6=y
CONFIG_NETFILTER=y

# File systems
CONFIG_EXT4_FS=y
CONFIG_EXT4_USE_FOR_EXT2=y
CONFIG_TMPFS=y
CONFIG_TMPFS_POSIX_ACL=y
CONFIG_PROC_FS=y
CONFIG_SYSFS=y
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y

# Squashfs for read-only rootfs
CONFIG_SQUASHFS=y
CONFIG_SQUASHFS_ZLIB=y
CONFIG_SQUASHFS_LZO=y
CONFIG_SQUASHFS_XZ=y
CONFIG_SQUASHFS_ZSTD=y

# OverlayFS for copy-on-write
CONFIG_OVERLAY_FS=y

# Crypto (minimal, for networking)
CONFIG_CRYPTO=y
CONFIG_CRYPTO_SHA256=y
CONFIG_CRYPTO_AES=y

# Disable unnecessary features
CONFIG_SOUND=n
CONFIG_USB=n
CONFIG_INPUT=n
CONFIG_DRM=n
CONFIG_FB=n
CONFIG_VGA_CONSOLE=n
CONFIG_BLUETOOTH=n
CONFIG_WIRELESS=n
CONFIG_WLAN=n
CONFIG_RFKILL=n
CONFIG_NFS_FS=n
CONFIG_CIFS=n
CONFIG_DEBUG_INFO=n
CONFIG_DEBUG_KERNEL=n
CONFIG_KPROBES=n
CONFIG_FTRACE=n
CONFIG_PROFILING=n
CONFIG_ACPI=n
CONFIG_PCMCIA=n
CONFIG_PCCARD=n

# PVH entry point (Firecracker uses this for fast boot)
CONFIG_PVH=y

# Disable power management
CONFIG_PM=n
CONFIG_SUSPEND=n
CONFIG_HIBERNATION=n

# Disable hot-plug (not needed in microVMs)
CONFIG_HOTPLUG_CPU=n
CONFIG_MEMORY_HOTPLUG=n
CONFIG_MEMORY_HOTREMOVE=n

# Security (minimal)
CONFIG_SECURITY=n
CONFIG_SECURITYFS=n
CONFIG_SECURITY_NETWORK=n
CONFIG_SECURITY_SELINUX=n
CONFIG_SECURITY_APPARMOR=n

# Compiler optimizations
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
