fix: disk image build, piCore64 URL, license
Some checks failed
CI / Go Tests (push) Has been cancelled
CI / Build Go Binaries (amd64, linux, linux-amd64) (push) Has been cancelled
CI / Build Go Binaries (arm64, linux, linux-arm64) (push) Has been cancelled
CI / Shellcheck (push) Has been cancelled
Release / Test (push) Has been cancelled
Release / Build Binaries (amd64, linux, linux-amd64) (push) Has been cancelled
Release / Build Binaries (arm64, linux, linux-arm64) (push) Has been cancelled
Release / Build ISO (amd64) (push) Has been cancelled
Release / Create Release (push) Has been cancelled
Some checks failed
CI / Go Tests (push) Has been cancelled
CI / Build Go Binaries (amd64, linux, linux-amd64) (push) Has been cancelled
CI / Build Go Binaries (arm64, linux, linux-arm64) (push) Has been cancelled
CI / Shellcheck (push) Has been cancelled
Release / Test (push) Has been cancelled
Release / Build Binaries (amd64, linux, linux-amd64) (push) Has been cancelled
Release / Build Binaries (arm64, linux, linux-arm64) (push) Has been cancelled
Release / Build ISO (amd64) (push) Has been cancelled
Release / Create Release (push) Has been cancelled
- Add kpartx for reliable loop partition mapping in Docker containers - Fix piCore64 download URL (changed from .img.gz to .zip format) - Fix piCore64 boot partition mount (initramfs on p1, not p2) - Fix tar --wildcards for RPi firmware extraction - Add MIT license (same as KubeSolo) - Add kpartx and unzip to Docker builder image Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -51,10 +51,39 @@ size=1048576, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, name="SystemB"
|
||||
type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, name="Data"
|
||||
EOF
|
||||
|
||||
# Set up loop device
|
||||
LOOP=$(losetup --show -fP "$IMG_OUTPUT")
|
||||
# Set up loop device with partition mappings
|
||||
LOOP=$(losetup --show -f "$IMG_OUTPUT")
|
||||
echo "==> Loop device: $LOOP"
|
||||
|
||||
# Use kpartx for reliable partition device nodes (works in Docker/containers)
|
||||
USE_KPARTX=false
|
||||
if [ ! -b "${LOOP}p1" ]; then
|
||||
if command -v kpartx >/dev/null 2>&1; then
|
||||
kpartx -a "$LOOP"
|
||||
USE_KPARTX=true
|
||||
sleep 1
|
||||
LOOP_NAME=$(basename "$LOOP")
|
||||
P1="/dev/mapper/${LOOP_NAME}p1"
|
||||
P2="/dev/mapper/${LOOP_NAME}p2"
|
||||
P3="/dev/mapper/${LOOP_NAME}p3"
|
||||
P4="/dev/mapper/${LOOP_NAME}p4"
|
||||
else
|
||||
# Retry with -P flag
|
||||
losetup -d "$LOOP"
|
||||
LOOP=$(losetup --show -fP "$IMG_OUTPUT")
|
||||
sleep 1
|
||||
P1="${LOOP}p1"
|
||||
P2="${LOOP}p2"
|
||||
P3="${LOOP}p3"
|
||||
P4="${LOOP}p4"
|
||||
fi
|
||||
else
|
||||
P1="${LOOP}p1"
|
||||
P2="${LOOP}p2"
|
||||
P3="${LOOP}p3"
|
||||
P4="${LOOP}p4"
|
||||
fi
|
||||
|
||||
MNT_EFI=$(mktemp -d)
|
||||
MNT_SYSA=$(mktemp -d)
|
||||
MNT_SYSB=$(mktemp -d)
|
||||
@@ -65,22 +94,25 @@ cleanup() {
|
||||
umount "$MNT_SYSA" 2>/dev/null || true
|
||||
umount "$MNT_SYSB" 2>/dev/null || true
|
||||
umount "$MNT_DATA" 2>/dev/null || true
|
||||
if [ "$USE_KPARTX" = true ]; then
|
||||
kpartx -d "$LOOP" 2>/dev/null || true
|
||||
fi
|
||||
losetup -d "$LOOP" 2>/dev/null || true
|
||||
rm -rf "$MNT_EFI" "$MNT_SYSA" "$MNT_SYSB" "$MNT_DATA" 2>/dev/null || true
|
||||
}
|
||||
trap cleanup EXIT
|
||||
|
||||
# Format partitions
|
||||
mkfs.vfat -F 32 -n KSOLOEFI "${LOOP}p1"
|
||||
mkfs.ext4 -q -L KSOLOA "${LOOP}p2"
|
||||
mkfs.ext4 -q -L KSOLOB "${LOOP}p3"
|
||||
mkfs.ext4 -q -L KSOLODATA "${LOOP}p4"
|
||||
mkfs.vfat -F 32 -n KSOLOEFI "$P1"
|
||||
mkfs.ext4 -q -L KSOLOA "$P2"
|
||||
mkfs.ext4 -q -L KSOLOB "$P3"
|
||||
mkfs.ext4 -q -L KSOLODATA "$P4"
|
||||
|
||||
# Mount all partitions
|
||||
mount "${LOOP}p1" "$MNT_EFI"
|
||||
mount "${LOOP}p2" "$MNT_SYSA"
|
||||
mount "${LOOP}p3" "$MNT_SYSB"
|
||||
mount "${LOOP}p4" "$MNT_DATA"
|
||||
mount "$P1" "$MNT_EFI"
|
||||
mount "$P2" "$MNT_SYSA"
|
||||
mount "$P3" "$MNT_SYSB"
|
||||
mount "$P4" "$MNT_DATA"
|
||||
|
||||
# --- EFI/Boot Partition ---
|
||||
echo " Installing GRUB..."
|
||||
|
||||
Reference in New Issue
Block a user