From b7cd0974f19ee8f021848e65a09aa18cf5885d2c Mon Sep 17 00:00:00 2001 From: cproudlock Date: Thu, 26 Mar 2026 13:54:25 -0400 Subject: [PATCH] Blancco 7.15.1 upgrade: native kernel boot, BMC cloud licensing - Switch to Blancco native kernel (vmlinuz-bde-linux) for hardware compat - Config.img preferences with BMC connection (classic.eu-west-1.blancco.cloud) - Disable wired LAN in preferences so WiFi takes default route to BMC - WiFi SSID INTERNETACCESS configured in plaintext in config.img - Slim GRUB EFI (1.3MB standalone with minimal modules) - Fix Windows line endings in blancco-init.sh - Add extra NIC drivers to switch_root initramfs - SSH enabled in modified airootfs.sfs (root:blancco) Co-Authored-By: Claude Opus 4.6 (1M context) --- playbook/blancco-init.sh | 330 ++++++++++++++++--------------- playbook/blancco-preferences.xml | 233 +++++++++++++--------- 2 files changed, 308 insertions(+), 255 deletions(-) diff --git a/playbook/blancco-init.sh b/playbook/blancco-init.sh index 0cc27cb..1a4dcd7 100644 --- a/playbook/blancco-init.sh +++ b/playbook/blancco-init.sh @@ -1,162 +1,168 @@ -#!/bin/sh -# Blancco PXE Loader - init script for custom initramfs -# Boot chain: iPXE -> GRUB EFI -> Ubuntu kernel + this initramfs -> switch_root to Blancco -# -# Blancco's own kernel freezes on Dell Precision towers during PXE boot. -# Workaround: boot Ubuntu kernel, download Blancco rootfs (squashfs), mount -# overlay filesystem, and switch_root into Blancco's userspace. - -export PATH=/bin:/sbin - -echo "" -echo "============================================" -echo " Blancco PXE loader" -echo "============================================" -echo "" - -mount -t proc proc /proc -mount -t sysfs sysfs /sys -mount -t devtmpfs devtmpfs /dev 2>/dev/null -mkdir -p /tmp /run - -echo "[1/4] Loading NIC drivers..." -for mod in /lib/modules/*.ko; do - insmod $mod 2>/dev/null -done -sleep 2 - -echo " Waiting for network interface..." -IFACE="" -COUNT=0 -while [ $COUNT -lt 30 ]; do - for i in /sys/class/net/*; do - ifname="${i##*/}" - if [ "$ifname" != "lo" ] && [ -d "$i" ]; then - IFACE=$ifname - break 2 - fi - done - COUNT=$((COUNT + 1)) - sleep 1 - echo -n "." -done -echo "" - -if [ -z "$IFACE" ]; then - echo "ERROR: No network interface found!" - exec sh -fi - -echo " Interface: $IFACE" -ip link set $IFACE up -sleep 2 - -SERVER=10.9.100.1 -ifconfig $IFACE 10.9.100.250 netmask 255.255.255.0 up -sleep 1 -echo " IP: 10.9.100.250" - -echo "[2/4] Downloading Blancco rootfs (666MB)..." -wget -O /tmp/airootfs.sfs http://$SERVER/blancco/arch/x86_64/airootfs.sfs 2>&1 -if [ ! -s /tmp/airootfs.sfs ]; then - echo "ERROR: Failed to download rootfs!" - exec sh -fi -echo " OK ($(wc -c < /tmp/airootfs.sfs) bytes)" - -echo "[3/4] Mounting rootfs..." -mkdir -p /run/lower /run/upper /run/work /run/newroot - -losetup /dev/loop0 /tmp/airootfs.sfs -mount -t squashfs -o ro /dev/loop0 /run/lower -if [ $? -ne 0 ]; then - echo "ERROR: squashfs mount failed!" - exec sh -fi - -insmod /lib/modules/overlay.ko 2>/dev/null -mount -t tmpfs -o size=50% tmpfs /run/upper -mkdir -p /run/upper/upper /run/upper/work - -mount -t overlay overlay -o lowerdir=/run/lower,upperdir=/run/upper/upper,workdir=/run/upper/work /run/newroot -if [ $? -ne 0 ]; then - echo "ERROR: overlay mount failed!" - exec sh -fi - -echo "[4/5] Installing kernel modules (132MB)..." -wget -O /tmp/kmod.tar.gz http://$SERVER/blancco/kmod.tar.gz 2>&1 -if [ -s /tmp/kmod.tar.gz ]; then - cd /run/newroot - gunzip -c /tmp/kmod.tar.gz | tar xf - - rm -f /tmp/kmod.tar.gz - cd / - echo " OK" -else - echo " WARNING: Failed to download kernel modules" -fi - -echo "[5/6] Switching root to Blancco..." -mkdir -p /run/newroot/run /run/newroot/proc /run/newroot/sys /run/newroot/dev /run/newroot/tmp - -echo "[6/6] Downloading Blancco config..." -wget -O /run/newroot/albus/config.xml http://$SERVER/blancco/config-clean.xml 2>&1 -wget -O /run/newroot/albus/preferences.xml http://$SERVER/blancco/preferences.xml 2>&1 -if [ -s /run/newroot/albus/config.xml ]; then - echo " config.xml: $(wc -c < /run/newroot/albus/config.xml) bytes" -else - echo " WARNING: Failed to download config.xml" -fi -if [ -s /run/newroot/albus/preferences.xml ]; then - cp -f /run/newroot/albus/preferences.xml /run/newroot/albus/preferences.save - echo " preferences.xml: $(wc -c < /run/newroot/albus/preferences.xml) bytes" -else - echo " WARNING: Failed to download preferences.xml" -fi - -# Pre-configure X.org to use modesetting driver (generic KMS, works with all GPUs) -mkdir -p /run/newroot/etc/X11/xorg.conf.d -echo " X.org: forcing modesetting driver" -cat > /run/newroot/etc/X11/xorg.conf.d/20-failsafeDriver.conf << 'XEOF' -Section "Device" - Identifier "Failsafe Video Device" - Driver "modesetting" -EndSection -XEOF - -# Enable SSH for remote debugging -echo " Enabling SSH (root:blancco)..." -sed -i 's/^#*PermitRootLogin.*/PermitRootLogin yes/' /run/newroot/etc/ssh/sshd_config 2>/dev/null -cat > /run/newroot/etc/rc.local << 'RCEOF' -#!/bin/bash -echo 'root:blancco' | chpasswd -ssh-keygen -A 2>/dev/null -IFACE=$(ls /sys/class/net/ | grep -v lo | head -1) -ip addr add 10.9.100.250/24 dev "$IFACE" 2>/dev/null -/usr/bin/sshd -RCEOF -chmod +x /run/newroot/etc/rc.local - -ln -sf /usr/lib/systemd/system/rc-local.service /run/newroot/etc/systemd/system/multi-user.target.wants/rc-local.service 2>/dev/null -cat > /run/newroot/etc/systemd/system/pxe-debug.service << 'SVCEOF' -[Unit] -Description=PXE Debug SSH -After=systemd-networkd.service -Wants=systemd-networkd.service - -[Service] -Type=oneshot -RemainAfterExit=yes -ExecStart=/etc/rc.local - -[Install] -WantedBy=multi-user.target -SVCEOF -ln -sf /etc/systemd/system/pxe-debug.service /run/newroot/etc/systemd/system/multi-user.target.wants/pxe-debug.service - -mount --move /proc /run/newroot/proc -mount --move /sys /run/newroot/sys -mount --move /dev /run/newroot/dev - -echo " Starting Blancco..." -exec switch_root /run/newroot /sbin/init +#!/bin/sh +# Blancco PXE Loader - init script for custom initramfs +# Boot chain: iPXE -> GRUB EFI -> Ubuntu kernel + this initramfs -> switch_root to Blancco +# +# Blancco's own kernel freezes on Dell Precision towers during PXE boot. +# Workaround: boot Ubuntu kernel, download Blancco rootfs (squashfs), mount +# overlay filesystem, and switch_root into Blancco's userspace. + +export PATH=/bin:/sbin + +echo "" +echo "============================================" +echo " Blancco PXE loader" +echo "============================================" +echo "" + +mount -t proc proc /proc +mount -t sysfs sysfs /sys +mount -t devtmpfs devtmpfs /dev 2>/dev/null +mkdir -p /tmp /run + +echo "[1/4] Loading NIC drivers..." +for mod in /lib/modules/*.ko; do + echo " insmod $(basename $mod)" + insmod $mod 2>/dev/null || true +done +sleep 5 + +echo " Interfaces after driver load:" +ls /sys/class/net/ 2>/dev/null + +echo " Waiting for network interface..." +IFACE="" +COUNT=0 +while [ $COUNT -lt 60 ]; do + for i in /sys/class/net/*; do + ifname="${i##*/}" + if [ "$ifname" != "lo" ] && [ -d "$i" ]; then + IFACE=$ifname + break 2 + fi + done + COUNT=$((COUNT + 1)) + sleep 1 + echo -n "." +done +echo "" + +if [ -z "$IFACE" ]; then + echo "ERROR: No network interface found!" + echo "Available interfaces:" + ls /sys/class/net/ 2>/dev/null + exec sh +fi + +echo " Interface: $IFACE" +ip link set $IFACE up +sleep 2 + +SERVER=10.9.100.1 +ifconfig $IFACE 10.9.100.250 netmask 255.255.255.0 up +sleep 1 +echo " IP: 10.9.100.250" + +echo "[2/4] Downloading Blancco rootfs (666MB)..." +wget -O /tmp/airootfs.sfs http://$SERVER/blancco/arch/x86_64/airootfs.sfs 2>&1 +if [ ! -s /tmp/airootfs.sfs ]; then + echo "ERROR: Failed to download rootfs!" + exec sh +fi +echo " OK ($(wc -c < /tmp/airootfs.sfs) bytes)" + +echo "[3/4] Mounting rootfs..." +mkdir -p /run/lower /run/upper /run/work /run/newroot + +losetup /dev/loop0 /tmp/airootfs.sfs +mount -t squashfs -o ro /dev/loop0 /run/lower +if [ $? -ne 0 ]; then + echo "ERROR: squashfs mount failed!" + exec sh +fi + +insmod /lib/modules/overlay.ko 2>/dev/null +mount -t tmpfs -o size=50% tmpfs /run/upper +mkdir -p /run/upper/upper /run/upper/work + +mount -t overlay overlay -o lowerdir=/run/lower,upperdir=/run/upper/upper,workdir=/run/upper/work /run/newroot +if [ $? -ne 0 ]; then + echo "ERROR: overlay mount failed!" + exec sh +fi + +echo "[4/5] Installing kernel modules (132MB)..." +wget -O /tmp/kmod.tar.gz http://$SERVER/blancco/kmod.tar.gz 2>&1 +if [ -s /tmp/kmod.tar.gz ]; then + cd /run/newroot + gunzip -c /tmp/kmod.tar.gz | tar xf - + rm -f /tmp/kmod.tar.gz + cd / + echo " OK" +else + echo " WARNING: Failed to download kernel modules" +fi + +echo "[5/6] Switching root to Blancco..." +mkdir -p /run/newroot/run /run/newroot/proc /run/newroot/sys /run/newroot/dev /run/newroot/tmp + +echo "[6/6] Downloading Blancco config..." +wget -O /run/newroot/albus/config.xml http://$SERVER/blancco/config-clean.xml 2>&1 +wget -O /run/newroot/albus/preferences.xml http://$SERVER/blancco/preferences.xml 2>&1 +if [ -s /run/newroot/albus/config.xml ]; then + echo " config.xml: $(wc -c < /run/newroot/albus/config.xml) bytes" +else + echo " WARNING: Failed to download config.xml" +fi +if [ -s /run/newroot/albus/preferences.xml ]; then + cp -f /run/newroot/albus/preferences.xml /run/newroot/albus/preferences.save + echo " preferences.xml: $(wc -c < /run/newroot/albus/preferences.xml) bytes" +else + echo " WARNING: Failed to download preferences.xml" +fi + +# Pre-configure X.org to use modesetting driver (generic KMS, works with all GPUs) +mkdir -p /run/newroot/etc/X11/xorg.conf.d +echo " X.org: forcing modesetting driver" +cat > /run/newroot/etc/X11/xorg.conf.d/20-failsafeDriver.conf << 'XEOF' +Section "Device" + Identifier "Failsafe Video Device" + Driver "modesetting" +EndSection +XEOF + +# Enable SSH for remote debugging +echo " Enabling SSH (root:blancco)..." +if [ -f /run/newroot/etc/ssh/sshd_config ]; then + sed 's/^#*PermitRootLogin.*/PermitRootLogin yes/' /run/newroot/etc/ssh/sshd_config > /run/newroot/etc/ssh/sshd_config.new || true + mv /run/newroot/etc/ssh/sshd_config.new /run/newroot/etc/ssh/sshd_config || true +fi + +cat > /run/newroot/etc/rc.local << 'RCEOF' +#!/bin/bash +echo 'root:blancco' | chpasswd +ssh-keygen -A 2>/dev/null +/usr/bin/sshd 2>/dev/null +RCEOF +chmod +x /run/newroot/etc/rc.local + +cat > /run/newroot/etc/systemd/system/pxe-debug.service << 'SVCEOF' +[Unit] +Description=PXE Debug SSH +After=network.target + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/etc/rc.local + +[Install] +WantedBy=multi-user.target +SVCEOF +ln -sf /etc/systemd/system/pxe-debug.service /run/newroot/etc/systemd/system/multi-user.target.wants/pxe-debug.service 2>/dev/null + +mount --move /proc /run/newroot/proc +mount --move /sys /run/newroot/sys +mount --move /dev /run/newroot/dev + +echo " Starting Blancco..." +exec switch_root /run/newroot /sbin/init diff --git a/playbook/blancco-preferences.xml b/playbook/blancco-preferences.xml index 780d0c7..d7c16f6 100644 --- a/playbook/blancco-preferences.xml +++ b/playbook/blancco-preferences.xml @@ -1,20 +1,26 @@ - + 7 - 14 - 0 + 15 + 1 - WrE8qdGzoKMVy403SVha6O6JOdYlerKbbjyLSWo20NI= - + + + + + false + + workflow auto semi manual + battery cpu @@ -37,6 +43,7 @@ webcam wifi + us be @@ -64,6 +71,7 @@ se sk + en_US de_DE @@ -80,93 +88,104 @@ zh_CN zh_TW - + + + + - - + - - - - - - - + + + + + - - - + + + + - - + + + - + + + + true true false false -
- - - - - +
+ + + + + + false - false - + false + peap tls - - + false + + - - blancco - blancco - - 10.9.100.1 - blancco-reports - - smb - - + - - - - + + + + + - - - - + + + + 20 true - + + + blancco + blancco + + 10.9.100.1 + blancco-reports + + smb + + + + + - false 50 false false @@ -177,10 +196,11 @@ true true 10 - + + false false false false @@ -199,29 +219,36 @@ true true + false 67000 + true + false ntfs + false + false true true + false 30 + false 80 @@ -237,24 +264,28 @@ webcam + bios bios Enterprise Volume Edition - Drive Eraser + + - + 2025-03-10 + - + General Electric Company - - - + + + + local @@ -292,8 +323,8 @@ false true - true 80 + true 70 @@ -303,29 +334,7 @@ - - - custom_field_1 - GERITM Number - - - - custom_field_2 - Device Name - - - - custom_field_3 - Device Serial Number - - - - custom_field_4 - Version - EVE_20250310 - - - + false true @@ -336,43 +345,81 @@ true false - + false + + + + custom_field_1 + GERITM Number + + + + custom_field_2 + Device Name + + + + custom_field_3 + Device Serial Number + + + + custom_field_4 + Version + EVE_20250310 + + + + + - false - - + true + INTERNETACCESS + Acc3ssGr@nted22 WPA-PSK 0 + true false false false + false false + false false - - false - + false viewer - + 5900 - + - - + + + + + false + + daily + weekly + monthly + no automatic check + + https://cdn.blancco.com/products/drive_eraser/download/ota/drive_eraser.json +