From eb46c7128b8a69ddb9c681f8bedc16452ed693df Mon Sep 17 00:00:00 2001 From: CyberMind-FR Date: Tue, 17 Mar 2026 21:17:46 +0100 Subject: [PATCH] fix(vm): Fix ARM builds by using arch-specific packages - Remove docker/bind-server from ARM (not available) - Use simpler package set for ARM targets - Fix rockchip profile name - Keep x86-64 with full package set Co-Authored-By: Claude Opus 4.5 --- .claude/settings.local.json | 4 +- .github/workflows/build-vm-appliance.yml | 24 +++-- .../secubox-app-jellyfin_3.0.0-r1_all.ipk | Bin 4709 -> 0 bytes secubox-tools/c3box-vm/proxmox-import.sh | 89 ------------------ 4 files changed, 18 insertions(+), 99 deletions(-) delete mode 100644 secubox-tools/build-output/secubox-app-jellyfin_3.0.0-r1_all.ipk delete mode 100755 secubox-tools/c3box-vm/proxmox-import.sh diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 3150357a..c5ccd407 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -580,7 +580,9 @@ "Bash(gh workflow run:*)", "Bash(git show:*)", "Bash(jq -r '.[] | \"\" \"\" + .workflowName + \"\": \"\" + .conclusion + \"\" \\(ID: \"\" + \\(.databaseId | tostring\\) + \"\"\\)\"\"' echo \"\" echo \"=== VM Appliance Artifacts ===\" gh api repos/gkerma/secubox-openwrt/actions/runs/23205786221/artifacts --jq '.artifacts[] | \"\" \"\" + .name + \"\" \\(\"\" + \\(\\(.size_in_bytes / 1048576\\) | floor | tostring\\) + \"\" MB\\)\"\"' echo \"\" echo \"=== Package Build Artifacts ===\" gh api repos/gkerma/secubox-openwrt/actions/runs/23206423503/artifacts --jq '.artifacts[] | \"\" \"\" + .name + \"\" \\(\"\" + \\(\\(.size_in_bytes / 1048576\\) | floor | tostring\\) + \"\" MB\\)\"\"')", - "Bash(__NEW_LINE_0593582cd60ca850__ echo \"\")" + "Bash(__NEW_LINE_0593582cd60ca850__ echo \"\")", + "Bash(./secubox-tools/c3box-vm-full-build.sh:*)", + "Bash(DISK_SIZE=2 OUTPUT_DIR=/home/reepost/CyberMindStudio/secubox-openwrt/secubox-tools/c3box-vm/output ./secubox-tools/c3box-vm-full-build.sh:*)" ] } } diff --git a/.github/workflows/build-vm-appliance.yml b/.github/workflows/build-vm-appliance.yml index 013fbd6a..19df4520 100644 --- a/.github/workflows/build-vm-appliance.yml +++ b/.github/workflows/build-vm-appliance.yml @@ -599,26 +599,29 @@ jobs: cat repositories.conf fi - # Base OpenWrt packages + # Base OpenWrt packages (common to all architectures) PACKAGES="luci luci-ssl luci-app-opkg luci-theme-openwrt-2020" PACKAGES="$PACKAGES curl wget-ssl htop iftop tcpdump nano" PACKAGES="$PACKAGES openssh-sftp-server" - PACKAGES="$PACKAGES block-mount kmod-fs-ext4 kmod-fs-vfat kmod-fs-btrfs" - PACKAGES="$PACKAGES parted e2fsprogs resize2fs" + PACKAGES="$PACKAGES block-mount kmod-fs-ext4 kmod-fs-vfat" PACKAGES="$PACKAGES git rsync screen tmux bash jq" - PACKAGES="$PACKAGES docker dockerd containerd" PACKAGES="$PACKAGES wireguard-tools kmod-wireguard luci-proto-wireguard" # Remove conflicting dnsmasq PACKAGES="$PACKAGES -dnsmasq dnsmasq-full" - # Network and security packages - PACKAGES="$PACKAGES haproxy bind-server bind-tools" - PACKAGES="$PACKAGES kmod-nf-conntrack kmod-nf-nat kmod-ipt-nat" + # Network packages (available on all platforms) + PACKAGES="$PACKAGES haproxy" # Architecture-specific packages case "${{ matrix.target }}" in x86/64) + # x86-64 has the most packages available + PACKAGES="$PACKAGES parted e2fsprogs resize2fs" + PACKAGES="$PACKAGES kmod-fs-btrfs" + PACKAGES="$PACKAGES docker dockerd containerd" + PACKAGES="$PACKAGES bind-server bind-tools" + PACKAGES="$PACKAGES kmod-nf-conntrack kmod-nf-nat kmod-ipt-nat" if [[ "${{ matrix.boot }}" == "efi" ]]; then PACKAGES="$PACKAGES grub2-efi" fi @@ -627,14 +630,17 @@ jobs: armsr/armv8) # ARM64 generic - virtio support for QEMU/Proxmox PACKAGES="$PACKAGES kmod-virtio-net kmod-virtio-blk" + PACKAGES="$PACKAGES parted e2fsprogs" ;; bcm27xx/bcm2711) # Raspberry Pi 4 specific PACKAGES="$PACKAGES kmod-usb-net-asix-ax88179 kmod-usb-net-rtl8152" + PACKAGES="$PACKAGES parted e2fsprogs" ;; rockchip/armv8) # Rockchip ARM64 PACKAGES="$PACKAGES kmod-usb-net-rtl8152" + PACKAGES="$PACKAGES parted e2fsprogs" ;; esac @@ -703,8 +709,8 @@ jobs: PROFILE="rpi-4" ;; rockchip/armv8) - # List available profiles and pick first one - PROFILE=$(make info 2>/dev/null | grep -oP 'Default profile:\s+\K\S+' || echo "nanopi-r4s") + # NanoPi R4S as default for rockchip + PROFILE="friendlyarm_nanopi-r4s" ;; *) PROFILE="generic" diff --git a/secubox-tools/build-output/secubox-app-jellyfin_3.0.0-r1_all.ipk b/secubox-tools/build-output/secubox-app-jellyfin_3.0.0-r1_all.ipk deleted file mode 100644 index eb9ba941ae1480a5968192f01abdb309c4d40c70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4709 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/dev/null; then - echo "Error: qm command not found. Are you running this on Proxmox?" - exit 1 -fi - -# Check if VMID already exists -if qm status $VMID &>/dev/null; then - echo "Error: VM $VMID already exists. Choose a different VMID." - exit 1 -fi - -echo "Creating VM $VMID..." - -# Create VM with basic settings -qm create $VMID \ - --name c3box-secubox \ - --memory 2048 \ - --cores 2 \ - --cpu host \ - --net0 virtio,bridge=vmbr0 \ - --ostype l26 \ - --agent enabled=1 - -echo "Importing disk..." - -# Import disk -qm importdisk $VMID "$QCOW2_FILE" $STORAGE --format qcow2 - -echo "Attaching disk..." - -# Attach disk with VirtIO SCSI -qm set $VMID \ - --scsihw virtio-scsi-pci \ - --scsi0 $STORAGE:vm-$VMID-disk-0 - -# Set boot order -qm set $VMID --boot order=scsi0 - -# Add serial console for troubleshooting -qm set $VMID --serial0 socket - -echo "" -echo -e "${GREEN}VM $VMID created successfully!${NC}" -echo "" -echo "Next steps:" -echo " 1. Start VM: qm start $VMID" -echo " 2. Open console: qm terminal $VMID" -echo " 3. Get IP: qm guest cmd $VMID network-get-interfaces" -echo " 4. Web UI: https://" -echo "" -echo "Default credentials: root / c3box" -echo "IMPORTANT: Change the password on first login!"