[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [PATCH] Old BIOS: start partition at specific place



Greetings,

Please know that If the below patch is based against debian-next branch I believe you can commit it yourself see:

http://live.debian.net/manual/unstable/html/live-manual.en.html#665

Thanks.

On Tue, Sep 22, 2015 at 3:56 PM, Maximilian Mehnert <maximilian.mehnert@gmx.de> wrote:
Some BIOSes dont't boot from partitions starting at sector 1024.
Some are even more peculiar and only start from sector 63.
This patch adds an option for the binary_hdd target to manually
configure the partition start.
---
 scripts/build/binary_hdd | 14 ++++++++++++--
 scripts/build/config     | 12 +++++++++++-
 2 files changed, 23 insertions(+), 3 deletions(-)

diff --git a/scripts/build/binary_hdd b/scripts/build/binary_hdd
index c958aff..0ffb20a 100755
--- a/scripts/build/binary_hdd
+++ b/scripts/build/binary_hdd
@@ -172,7 +172,12 @@ esac
 case "${LB_BUILD_WITH_CHROOT}" in
        true)
                Chroot chroot "parted -s ${FREELO} mklabel ${PARTITION_TABLE_TYPE}" || true
-               Chroot chroot "parted -a optimal -s ${FREELO} mkpart primary ${PARTITION_TYPE} 0% 100%" || true
+               if [ "x${LB_HDD_PARTITION_START}" = "x" ]; then
+                       Chroot chroot "parted -a optimal -s ${FREELO} mkpart primary ${PARTITION_TYPE} 0% 100%" || true
+               else
+                        Echo_message "using partition start at ${LB_HDD_PARTITION_START}"
+                       Chroot chroot "parted -s ${FREELO} mkpart primary ${PARTITION_TYPE} ${LB_HDD_PARTITION_START} 100%" || true
+               fi
                Chroot chroot "parted -s ${FREELO} set 1 boot on" || true
                Chroot chroot "parted -s ${FREELO} set 1 lba off" || true

@@ -184,7 +189,12 @@ case "${LB_BUILD_WITH_CHROOT}" in

        false)
                parted -s ${FREELO} mklabel ${PARTITION_TABLE_TYPE} || true
-               parted -a optimal -s ${FREELO} mkpart primary ${PARTITION_TYPE} 0% 100% || true
+               if [ "x${LB_HDD_PARTITION_START}" = "x" ]; then
+                       parted -a optimal -s ${FREELO} mkpart primary ${PARTITION_TYPE} 0% 100% || true
+               else
+                        Echo_message "using partition start at ${LB_HDD_PARTITION_START}"
+                       parted -s ${FREELO} mkpart primary ${PARTITION_TYPE} ${LB_HDD_PARTITION_START} 100% || true
+               fi
                parted -s "${FREELO}" set 1 boot on || true
                parted -s "${FREELO}" set 1 lba off || true

diff --git a/scripts/build/config b/scripts/build/config
index fbe9865..fbc66ff 100755
--- a/scripts/build/config
+++ b/scripts/build/config
@@ -69,6 +69,7 @@ USAGE="${PROGRAM}   [--apt apt|aptitude]\n\
 \t    [--isohybrid-options OPTION|\"OPTIONS\"]\n\
 \t    [--hdd-label LABEL]\n\
 \t    [--hdd-size MB]\n\
+\t    [--hdd-partition-start [parted unit, e.g. 63s]\n\
 \t    [--iso-application NAME]\n\
 \t    [--iso-preparer NAME]\n\
 \t    [--iso-publisher NAME]\n\
@@ -139,7 +140,7 @@ Local_arguments ()
                security:,updates:,backports:,binary-filesystem:,binary-images:,
                apt-indices:,bootappend-install:,bootappend-live:,bootappend-live-failsafe:,bootloaders:,checksums:,compression:,config:,zsync:,build-with-chroot:,
                debian-installer:,debian-installer-distribution:,debian-installer-preseedfile:,debian-installer-gui:,
-               grub-splash:,isohybrid-options:,hdd-label:,hdd-size:,iso-application:,iso-preparer:,iso-publisher:,
+               grub-splash:,isohybrid-options:,hdd-label:,hdd-size:,hdd-partition-start:,iso-application:,iso-preparer:,iso-publisher:,
                iso-volume:,jffs2-eraseblock:,memtest:,net-root-filesystem:,net-root-mountoptions:,
                net-root-path:,net-root-server:,net-cow-filesystem:,net-cow-mountoptions:,net-cow-path:,
                net-cow-server:,net-tarball:,firmware-binary:,firmware-chroot:,swap-file-path:,swap-file-size:,
@@ -566,6 +567,11 @@ Local_arguments ()
                                shift 2
                                ;;

+                       --hdd-partition-start)
+                               LB_HDD_PARTITION_START="${2}"
+                               shift 2
+                               ;;
+
                        --iso-application)
                                LB_ISO_APPLICATION="${2}"
                                shift 2
@@ -1198,6 +1204,10 @@ LB_HDD_LABEL="${LB_HDD_LABEL}"
 # (Default: ${LB_HDD_SIZE})
 LB_HDD_SIZE="${LB_HDD_SIZE}"

+# \$LB_HDD_PARTITION_START: set start of partition for booting on bios that expects specific layout (e.g. "63s"). If empty, use optimal layout.
+# (Default: ${LB_HDD_PARTITION_START})
+LB_HDD_PARTITION_START="${LB_HDD_PARTITION_START}"
+
 # \$LB_ISO_APPLICATION: set iso author
 # (Default: ${LB_ISO_APPLICATION})
 LB_ISO_APPLICATION="${LB_ISO_APPLICATION}"
--
2.5.1



Reply to: