61 lines
2.2 KiB
Python
61 lines
2.2 KiB
Python
import os
|
|
import sys
|
|
import shutil
|
|
|
|
BOOT_DRIVE = "H:\\"
|
|
STAGING_DIR = r"C:\Users\Snarf\OneDrive\Desktop\code\SnarfCode\boot_staging"
|
|
|
|
print(f"Checking for DietPi boot filesystem on {BOOT_DRIVE}...")
|
|
|
|
if not os.path.exists(BOOT_DRIVE):
|
|
print(f"Error: {BOOT_DRIVE} is not mounted.")
|
|
sys.exit(1)
|
|
|
|
# Check if config.txt or dietpi.txt exists on H:\
|
|
boot_indicators = ["config.txt", "dietpi.txt", "cmdline.txt"]
|
|
found = [f for f in boot_indicators if os.path.exists(os.path.join(BOOT_DRIVE, f))]
|
|
|
|
if not found:
|
|
print(f"Warning: {BOOT_DRIVE} does not look like a freshly flashed DietPi boot partition yet (indicators not found).")
|
|
print(f"Current contents of {BOOT_DRIVE}: {os.listdir(BOOT_DRIVE)}")
|
|
sys.exit(2)
|
|
|
|
print(f"Found boot filesystem! Detected: {found}")
|
|
|
|
# 1. Copy dietpi.txt
|
|
src_dietpi = os.path.join(STAGING_DIR, "dietpi.txt")
|
|
dst_dietpi = os.path.join(BOOT_DRIVE, "dietpi.txt")
|
|
shutil.copy2(src_dietpi, dst_dietpi)
|
|
print(f" [OK] Injected pre-configured {dst_dietpi}")
|
|
|
|
# 2. Copy Automation_Custom_Script.sh
|
|
src_script = os.path.join(STAGING_DIR, "Automation_Custom_Script.sh")
|
|
dst_script = os.path.join(BOOT_DRIVE, "Automation_Custom_Script.sh")
|
|
shutil.copy2(src_script, dst_script)
|
|
print(f" [OK] Injected first-boot {dst_script}")
|
|
|
|
# 3. Patch cmdline.txt with cgroups
|
|
cmdline_path = os.path.join(BOOT_DRIVE, "cmdline.txt")
|
|
if os.path.exists(cmdline_path):
|
|
with open(cmdline_path, "r", encoding="utf-8") as f:
|
|
cmdline = f.read().strip()
|
|
|
|
cgroups = "cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory net.ifnames=0"
|
|
if "cgroup_memory=1" not in cmdline:
|
|
cmdline = f"{cmdline} {cgroups}\n"
|
|
with open(cmdline_path, "w", encoding="utf-8", newline="\n") as f:
|
|
f.write(cmdline)
|
|
print(" [OK] Patched cmdline.txt with cgroup parameters")
|
|
else:
|
|
print(" [OK] cmdline.txt already contains cgroup parameters")
|
|
|
|
# 4. Create empty 'ssh' file if needed
|
|
ssh_flag = os.path.join(BOOT_DRIVE, "ssh")
|
|
with open(ssh_flag, "w") as f:
|
|
pass
|
|
print(" [OK] Created empty ssh flag file")
|
|
|
|
print("\n=== SD Card Configuration Complete! ===")
|
|
print("The card is fully prepared to boot unattended into sninfr2lnxwrk01, join Aerodrome K3s, sync time, and register with Zabbix!")
|
|
|