From 5f37a5ca179de4c53b9230dff13eb792c8e3ecb3 Mon Sep 17 00:00:00 2001 From: elseif Date: Tue, 1 Sep 2026 15:59:58 +0800 Subject: [PATCH] modified: .github/workflows/patch_v7.yml modified: setup-routeros.sh --- .github/workflows/patch_v7.yml | 14 +++++++------- setup-routeros.sh | 22 ++++++++++++++++------ 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/.github/workflows/patch_v7.yml b/.github/workflows/patch_v7.yml index 6eb4f36..ba56571 100644 --- a/.github/workflows/patch_v7.yml +++ b/.github/workflows/patch_v7.yml @@ -852,13 +852,13 @@ jobs: ls -lh "$IMAGE_PREFIX".* (cd $BUILD_DIR && \ - zip $PUBLISH_DIR/$IMAGE_NAME.ova.zip $IMAGE_PREFIX.ova && \ - zip $PUBLISH_DIR/$IMAGE_NAME.qcow2.zip $IMAGE_PREFIX.qcow2 && \ - zip $PUBLISH_DIR/$IMAGE_NAME.vmdk.zip $IMAGE_PREFIX.vmdk && \ - zip $PUBLISH_DIR/$IMAGE_NAME.vhd.zip $IMAGE_PREFIX.vhd && \ - zip $PUBLISH_DIR/$IMAGE_NAME.vhdx.zip $IMAGE_PREFIX.vhdx && \ - zip $PUBLISH_DIR/$IMAGE_NAME.vdi.zip $IMAGE_PREFIX.vdi && \ - zip $PUBLISH_DIR/$IMAGE_NAME.img.zip $IMAGE_PREFIX.img ) + zip $PUBLISH_DIR/$IMAGE_NAME.ova.zip $IMAGE_NAME.ova && \ + zip $PUBLISH_DIR/$IMAGE_NAME.qcow2.zip $IMAGE_NAME.qcow2 && \ + zip $PUBLISH_DIR/$IMAGE_NAME.vmdk.zip $IMAGE_NAME.vmdk && \ + zip $PUBLISH_DIR/$IMAGE_NAME.vhd.zip $IMAGE_NAME.vhd && \ + zip $PUBLISH_DIR/$IMAGE_NAME.vhdx.zip $IMAGE_NAME.vhdx && \ + zip $PUBLISH_DIR/$IMAGE_NAME.vdi.zip $IMAGE_NAME.vdi && \ + zip $PUBLISH_DIR/$IMAGE_NAME.img.zip $IMAGE_NAME.img ) rm -f "$IMAGE_PREFIX".* } diff --git a/setup-routeros.sh b/setup-routeros.sh index d0ee825..5dc620e 100644 --- a/setup-routeros.sh +++ b/setup-routeros.sh @@ -778,18 +778,28 @@ step_install() { echo "sgdisk failed on $TARGET_DISK" > "$ERR_FILE" return 1 fi - # Active boot partition - printf '\x80' | dd of="$TARGET_DISK" bs=1 seek=446 conv=notrunc >> "$LOG_FILE" 2>&1 || { - step_msg "[ 33%] [ERR] Step 3/8: Failed to Active boot partition on $TARGET_DISK" - echo "dd failed to Active boot partition on $TARGET_DISK" > "$ERR_FILE" - return 1 - } + # Must be 0x83, otherwise "ERROR: could not find disk!" printf '\x83' | dd of="$TARGET_DISK" bs=1 seek=450 conv=notrunc >> "$LOG_FILE" 2>&1 || { step_msg "[ 33%] [ERR] Step 3/8: Failed to change partition type on $TARGET_DISK" echo "dd failed to change partition type on $TARGET_DISK" > "$ERR_FILE" return 1 } + + # Active boot partition + printf '\x80' | dd of="$TARGET_DISK" bs=1 seek=446 conv=notrunc >> "$LOG_FILE" 2>&1 || { + step_msg "[ 33%] [ERR] Step 3/8: Failed to Active boot partition on $TARGET_DISK" + echo "dd failed to Active boot partition on $TARGET_DISK" > "$ERR_FILE" + return 1 + } + + # Clear the 3rd partition entry generated by sgdisk --hybrid + dd if=/dev/zero of="$TARGET_DISK" bs=1 seek=478 count=16 conv=notrunc >> "$LOG_FILE" 2>&1 || { + step_msg "[ 33%] [ERR] Failed to clear 3rd MBR partition entry on $TARGET_DISK" + echo "dd failed to clear 3rd MBR partition entry on $TARGET_DISK" > "$ERR_FILE" + return 1 + } + if [[ $is_uefi -eq 0 ]]; then # Write MikroTik BIOS bootstrap code into bytes 0-439 of the saved MBR printf '%s' "FA31C08ED0BC007C89E65007501FFBFCBF0006B90001F2A5EA1D060000BEBE07B304803C807423803C00750983C610FECB75EFCD18BE9B06AC3C00740B56BB0700B40ECD105EEBF0EBFE8B148B4C0289F5BF0500BB007CB8010257CD135F730C31C0CD134F75EDBE7C06EBCCBFFE7D813D55AA75C289EEEA007C00004572726F72206C6F6164696E67206F7065726174696E6720737973746566D004D697373696E67206F7065726174696E672073797374656D0000000000" \