#!/bin/sh # Raspberry Pi OverlayFS Initialization Script with NFS Logging # Version: 1.2 set -e echo "Starting OverlayFS and NFS logging setup..." # Mount root filesystem as read-only mount -o remount,ro / # Start the DHCP client to get the hostname dhclient eth0 -1 # Wait for DHCP to complete # Get the hostname from DHCP DHCP_HOSTNAME=$(cat /var/lib/dhcp/dhclient.* | grep "option host-name" | awk '{print $3}' | tr -d '";') if [ -n "$DHCP_HOSTNAME" ]; then echo "Setting hostname to $DHCP_HOSTNAME" hostnamectl set-hostname "$DHCP_HOSTNAME" else echo "No DHCP hostname found, using default hostname." DHCP_HOSTNAME="default" fi # Set up OverlayFS for /tmp OVERLAY_BASE=/overlay mkdir -p ${OVERLAY_BASE}/{tmp_upper,tmp_work,varlog_work} # Mount /tmp as an overlay filesystem mkdir -p /tmp mount -t overlay overlay \ -o lowerdir=/tmp,upperdir=${OVERLAY_BASE}/tmp_upper,workdir=${OVERLAY_BASE}/tmp_work \ /tmp # Mount /var/log via NFS NFS_SERVER="192.168.12.239" NFS_PATH="/clients/$DHCP_HOSTNAME" LOCAL_MOUNT_POINT="/var/log" echo "Creating local mount point: $LOCAL_MOUNT_POINT" mkdir -p $LOCAL_MOUNT_POINT # Ensure NFS utilities are available if ! command -v mount.nfs > /dev/null; then echo "NFS utilities not found! Installing nfs-common..." sudo apt-get update sudo apt-get install -y nfs-common fi echo "Mounting NFS: $NFS_SERVER:$NFS_PATH to $LOCAL_MOUNT_POINT" mount -t nfs "$NFS_SERVER:$NFS_PATH" $LOCAL_MOUNT_POINT || { echo "NFS mount failed, using OverlayFS for /var/log." # If NFS fails, use OverlayFS for /var/log mkdir -p ${OVERLAY_BASE}/varlog_upper mount -t overlay overlay \ -o lowerdir=/var/log,upperdir=${OVERLAY_BASE}/varlog_upper,workdir=${OVERLAY_BASE}/varlog_work \ /var/log } # Mount Chromium user data directory as an overlay mkdir -p /home/loginuser/.config/chromium mount -t overlay overlay \ -o lowerdir=/home/loginuser/.config/chromium,upperdir=${OVERLAY_BASE}/chromium_upper,workdir=${OVERLAY_BASE}/chromium_work \ /home/loginuser/.config/chromium # Fix permissions for loginuser chown -R loginuser:loginuser /home/loginuser/.config/chromium chmod 700 /home/loginuser/.config/chromium # Ensure that /var/log and /tmp are set up for the next boot echo "Adding NFS /var/log mount to /etc/fstab" if ! grep -q "$NFS_SERVER:$NFS_PATH" /etc/fstab; then echo "$NFS_SERVER:$NFS_PATH $LOCAL_MOUNT_POINT nfs defaults 0 0" | sudo tee -a /etc/fstab fi echo "OverlayFS and NFS logging setup completed successfully." echo "Starting system..." # Continue with the regular boot process exec /sbin/init