initd version

This commit is contained in:
jonathan
2025-10-10 21:19:35 +02:00
commit 3dc49844d0
11 changed files with 273 additions and 0 deletions

0
Config.in Normal file
View File

View File

@@ -0,0 +1,103 @@
CONFIG_SYSVIPC=y
CONFIG_POSIX_MQUEUE=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_BPF_SYSCALL=y
CONFIG_BPF_JIT=y
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_CGROUPS=y
CONFIG_MEMCG=y
CONFIG_BLK_CGROUP=y
CONFIG_CGROUP_SCHED=y
CONFIG_CFS_BANDWIDTH=y
CONFIG_RT_GROUP_SCHED=y
CONFIG_CGROUP_PIDS=y
CONFIG_CGROUP_RDMA=y
CONFIG_CGROUP_FREEZER=y
CONFIG_CPUSETS=y
CONFIG_CGROUP_DEVICE=y
CONFIG_CGROUP_CPUACCT=y
CONFIG_CGROUP_PERF=y
CONFIG_CGROUP_BPF=y
CONFIG_CGROUP_MISC=y
CONFIG_USER_NS=y
CONFIG_BLK_DEV_INITRD=y
CONFIG_SMP=y
CONFIG_HYPERVISOR_GUEST=y
CONFIG_PARAVIRT=y
CONFIG_PARAVIRT_SPINLOCKS=y
# CONFIG_GCC_PLUGINS is not set
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_NET=y
CONFIG_PACKET=y
CONFIG_UNIX=y
CONFIG_INET=y
CONFIG_NETFILTER=y
CONFIG_BRIDGE_NETFILTER=y
CONFIG_NF_CONNTRACK=y
CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=y
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
CONFIG_IP_NF_IPTABLES=y
CONFIG_IP_NF_FILTER=y
CONFIG_IP_NF_NAT=y
CONFIG_IP_NF_TARGET_MASQUERADE=y
CONFIG_IP_NF_RAW=y
CONFIG_BRIDGE=y
# CONFIG_WIRELESS is not set
CONFIG_PCI=y
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_DRBD=m
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=1
CONFIG_VIRTIO_BLK=y
CONFIG_BLK_DEV_RBD=m
CONFIG_BLK_DEV_NVME=y
CONFIG_BLK_DEV_SD=y
CONFIG_SCSI_VIRTIO=y
CONFIG_ATA=y
CONFIG_ATA_PIIX=y
CONFIG_NETDEVICES=y
CONFIG_VETH=y
CONFIG_VIRTIO_NET=y
CONFIG_NE2K_PCI=y
CONFIG_8139CP=y
# CONFIG_WLAN is not set
CONFIG_INPUT_EVDEV=y
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_VIRTIO_CONSOLE=y
CONFIG_HW_RANDOM_VIRTIO=m
CONFIG_DRM=y
CONFIG_DRM_QXL=y
CONFIG_DRM_VIRTIO_GPU=y
CONFIG_DRM_BOCHS=y
CONFIG_SOUND=y
CONFIG_SND=y
CONFIG_SND_HDA_INTEL=y
CONFIG_SND_HDA_GENERIC=y
CONFIG_USB=y
CONFIG_USB_XHCI_HCD=y
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_UHCI_HCD=y
CONFIG_USB_STORAGE=y
CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_BALLOON=y
CONFIG_VIRTIO_INPUT=y
CONFIG_VIRTIO_MMIO=y
CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
CONFIG_EXT4_FS=y
CONFIG_FUSE_FS=y
CONFIG_OVERLAY_FS=y
CONFIG_OVERLAY_FS_INDEX=y
CONFIG_OVERLAY_FS_XINO_AUTO=y
CONFIG_OVERLAY_FS_METACOPY=y
CONFIG_TMPFS=y
CONFIG_TMPFS_POSIX_ACL=y
CONFIG_SQUASHFS=y
CONFIG_SQUASHFS_XATTR=y
CONFIG_CRYPTO_DEFLATE=y
CONFIG_UNWINDER_FRAME_POINTER=y

View File

@@ -0,0 +1,11 @@
#!/bin/sh
set -u
set -e
# Add a console on tty1
if [ -e ${TARGET_DIR}/etc/inittab ]; then
grep -qE '^tty1::' ${TARGET_DIR}/etc/inittab || \
sed -i '/GENERIC_SERIAL/a\
tty1::respawn:/sbin/getty -L tty1 0 vt100 # QEMU graphical window' ${TARGET_DIR}/etc/inittab
fi

View File

@@ -0,0 +1,73 @@
BR2_x86_64=y
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_12=y
BR2_GLOBAL_PATCH_DIR="board/qemu/patches"
#BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_NIMUX_PATH)/patches"
BR2_RELRO_PARTIAL=y
BR2_FORTIFY_SOURCE_2=y
BR2_TARGET_GENERIC_HOSTNAME="nimux"
BR2_TARGET_GENERIC_ISSUE="Welcome to Nimux!"
BR2_TARGET_GENERIC_PASSWD_SHA512=y
BR2_TARGET_ROOTFS_CPIO=y
BR2_TARGET_ROOTFS_CPIO_GZIP=y
BR2_TARGET_ENABLE_ROOT_LOGIN=y
BR2_TARGET_GENERIC_ROOT_PASSWD="hellotux"
BR2_TARGET_ROOTFS_INITRAMFS=y
BR2_TARGET_ROOTFS_ISO9660=y
BR2_TARGET_ROOTFS_ISO9660_ISOLINUX=y
BR2_TARGET_SYSLINUX=y
BR2_TARGET_SYSLINUX_LEGACY_BIOS=y
BR2_TARGET_SYSLINUX_ISOLINUX=y
BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
BR2_SYSTEM_BIN_SH_BASH=y
BR2_SYSTEM_BIN_SH="bash"
BR2_ENABLE_LOCALE_WHITELIST="C C.UTF-8 en_US en_US.UTF-8"
BR2_GENERATE_LOCALE="C en_US"
BR2_TARGET_TZ_INFO=y
BR2_TARGET_LOCALTIME="Europe/Amsterdam"
BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_NIMUX_PATH)/rootfs-overlay"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.27"
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_NIMUX_PATH)/board/qemu/x86_64/linux.config"
#BR2_LINUX_KERNEL_XZ=y
#BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y
BR2_PACKAGE_LINUX_TOOLS_CPUPOWER=y
#BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL_NIMUX_PATH)/board/pc/busybox.config"
BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
BR2_PACKAGE_SQUASHFS=y
BR2_PACKAGE_SQUASHFS_GZIP=y
BR2_PACKAGE_SSHFS=y
BR2_PACKAGE_ZFS=y
BR2_PACKAGE_ACPID=y
BR2_PACKAGE_EUDEV_RULES_GEN=y
BR2_PACKAGE_HDPARM=y
BR2_PACKAGE_HWDATA=y
BR2_PACKAGE_HWDATA_IAB_OUI_TXT=y
BR2_PACKAGE_CA_CERTIFICATES=y
BR2_PACKAGE_LIBCURL=y
BR2_PACKAGE_LIBCURL_CURL=y
BR2_PACKAGE_LIBCAP=y
BR2_PACKAGE_BRIDGE_UTILS=y
BR2_PACKAGE_IFTOP=y
BR2_PACKAGE_NTP=y
BR2_PACKAGE_NANO=y
BR2_PACKAGE_NANO_TINY=n
BR2_PACKAGE_BASH=y
BR2_PACKAGE_BASH_COMPLETION=y
BR2_PACKAGE_INOTIFY_TOOLS=y
BR2_PACKAGE_SUDO=y
BR2_PACKAGE_CPULOAD=y
BR2_PACKAGE_DOCKER_CLI=y
BR2_PACKAGE_DOCKER_COMPOSE=y
BR2_PACKAGE_DOCKER_ENGINE=y
BR2_DOWNLOAD_FORCE_CHECK_HASHES=y
BR2_SYSTEM_DHCP="eth0"
BR2_ROOTFS_POST_BUILD_SCRIPT="board/qemu/x86_64/post-build.sh"
#BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh"
BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)"
# BR2_TARGET_ROOTFS_EXT2=y
# BR2_TARGET_ROOTFS_TAR is not set
BR2_PACKAGE_HOST_QEMU=y
BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y

2
external.desc Normal file
View File

@@ -0,0 +1,2 @@
name: NIMUX
desc: The custom buildroot overlay for nimux

1
external.mk Normal file
View File

@@ -0,0 +1 @@
include $(sort $(wildcard $(BR2_EXTERNAL_NIMUX_PATH)/package/*/*.mk))

10
rootfs-overlay/etc/fstab Normal file
View File

@@ -0,0 +1,10 @@
# <file system> <mount pt> <type> <options> <dump> <pass>
proc /proc proc defaults,nosuid,nodev,noexec 0 0
devpts /dev/pts devpts defaults,nosuid,noexec,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /dev/shm tmpfs nosuid,nodev,mode=0777 0 0
tmpfs /tmp tmpfs nosuid,nodev,mode=1777 0 0
tmpfs /run tmpfs nosuid,nodev,mode=0755 0 0
tmpfs /mnt tmpfs nosuid,nodev,mode=0755 0 0
tmpfs /var/log tmpfs nosuid,nodev,mode=0775 0 0
sysfs /sys sysfs defaults,nosuid,nodev,noexec 0 0
cgroup2 /sys/fs/cgroup cgroup2 defaults,nosuid,nodev,noexec 0 0

View File

@@ -0,0 +1,62 @@
# /etc/inittab
#
# Copyright
#
# Note: BusyBox init doesn't support runlevels. The runlevels field is
# completely ignored by BusyBox init. If you want runlevels, use
# sysvinit.
# Format for each entry: <id>:<runlevels>:<action>:<process>
#
# id == tty to run on, or empty for /dev/console
# runlevels == ignored
# action == one of sysinit, respawn, askfirst, wait, and once
# process == program to run
# Startup the system.
::sysinit:/bin/mount /proc # Lightwhale requires the pseudo file systems for setup-persistence...
::sysinit:/bin/mount /sys # ...and since the rootfs is already mounted in RAM at this point...
::sysinit:/bin/mount /run # ...we have /etc/fstab present which is used for mount options...
::sysinit:/bin/mount /tmp # ...so we are mounting them as intended.
::sysinit:/bin/mount /mnt #
::sysinit:/bin/mount /var/log
::sysinit:/bin/mount -t cgroup2 none /sys/fs/cgroup
::sysinit:/bin/mkdir -p /dev/pts /dev/shm /run/lock /run/db # Subdirs in pseudo file system required by init scripts.
#::sysinit:/lib/lightwhale/rescue-shell
#::sysinit:/lib/lightwhale/setup-persistence
# create a read-only mapping of the rootfs
::sysinit:mkdir -p /mnt/root.squashfs
::sysinit:mount --bind / /mnt/root.squashfs
::sysinit:mount --make-rprivate /mnt/root.squashfs/
# create overlay
::sysinit:/usr/sbin/zpool import nimux-zfs
::sysinit:/bin/mount -t overlay overlay-etc -o lowerdir=/mnt/root.squashfs/etc/,upperdir=/mnt/overlays/root/etc/upper,workdir=/mnt/overlays/root/etc/work /etc
::sysinit:/bin/mount -t overlay overlay-home -o lowerdir=/mnt/root.squashfs/home/,upperdir=/mnt/overlays/root/home/upper,workdir=/mnt/overlays/root/home/work /home
null::sysinit:/bin/ln -sf /proc/self/fd /dev/fd
null::sysinit:/bin/ln -sf /proc/self/fd/0 /dev/stdin
null::sysinit:/bin/ln -sf /proc/self/fd/1 /dev/stdout
null::sysinit:/bin/ln -sf /proc/self/fd/2 /dev/stderr
::sysinit:/bin/mount -a
#::sysinit:/sbin/swapon -a
::sysinit:/bin/hostname -F /etc/hostname # Because a custom hostname may have been mounted at this point.
# Now run all the lovely rc scripts.
::sysinit:/etc/init.d/rcS
# Put a getty on the serial port.
tty1::respawn:/sbin/getty -L tty1 0 vt100 # First console
tty2::respawn:/sbin/getty -L tty2 0 vt100 # Extra console, for good measure.
console::respawn:/sbin/getty -L console 0 vt100 # Serial console, for headless QEMU.
# Stuff to do before rebooting.
::shutdown:/etc/init.d/rcK
#::shutdown:/sbin/swapoff -a
::shutdown:/bin/umount -a -r

View File

@@ -0,0 +1 @@
zfs

View File

@@ -0,0 +1,2 @@
# change the default editor to nano
export EDITOR='/bin/nano'

View File

@@ -0,0 +1,8 @@
# overrule the default prompt to make it more usefull
if [ "$PS1" ]; then
if [ "`id -u`" -eq 0 ]; then
export PS1="\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]# "
else
export PS1="\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ "
fi
fi