#!/bin/bash set -e octets="11 12 13 14 15 21 22 23 24 25" echo "Preparing common files..." sudo rm /etc/exports || true echo "proc /proc proc defaults 0 0" | sudo tee "/nfs/baseimage/etc/fstab" > /dev/null echo "[Time]" | sudo tee "/nfs/baseimage/etc/systemd/timesyncd.conf" > /dev/null echo "NTP=192.168.17.2" | sudo tee -a "/nfs/baseimage/etc/systemd/timesyncd.conf" > /dev/null echo "Preparing hosts..." for octet in ${octets}; do host="192.168.17.${octet}" echo "- ${host}" echo " Creating NFS partition..." if [ ! -d "/nfs/${host}" ]; then sudo mkdir "/nfs/${host}" sudo cp -ar /nfs/baseimage/* "/nfs/${host}" fi echo "/nfs/${host} *(rw,sync,no_subtree_check,no_root_squash)" | sudo tee -a /etc/exports > /dev/null # Overlay cannot be exported as NFS :/ # sudo umount "/nfs/${host}" || true # sudo mkdir -p "/nfs/${host}" # sudo mkdir -p "/nfs/overlays/${host}" # sudo mkdir -p "/nfs/workdirs/${host}" # sudo mount -t overlay overlay -o "lowerdir=/nfs/baseimage,upperdir=/nfs/overlays/${host},workdir=/nfs/workdirs/${host}" "/nfs/${host}" echo " Creating TFTP partition..." sudo umount "/tftpboot/${host}" || true sudo mkdir -p "/tftpboot/${host}" sudo mkdir -p "/tftpboot/overlays/${host}" sudo mkdir -p "/tftpboot/workdirs/${host}" sudo mount -t overlay overlay -o "lowerdir=/tftpboot/baseimage,upperdir=/tftpboot/overlays/${host},workdir=/tftpboot/workdirs/${host}" "/tftpboot/${host}" # k3s needs 'cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory' echo "selinux=0 dwc_otg.lpm_enable=0 console=tty1 rootwait rw nfsroot=192.168.17.2:/nfs/${host},v3 ip=dhcp root=/dev/nfs elevator=deadline cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory" | sudo tee "/tftpboot/${host}/cmdline.txt" > /dev/null done echo "Restarting services..." sudo systemctl restart rpcbind sudo systemctl restart nfs-kernel-server sudo systemctl restart dnsmasq echo "Done."