diff options
author | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2014-04-27 12:35:58 +0200 |
---|---|---|
committer | Daniel Baumann <mail@daniel-baumann.ch> | 2014-04-27 12:37:37 +0200 |
commit | 5d6574552ff8fdf9623f4c0319097778f8523289 (patch) | |
tree | 3009b45ddc91f2ae55bb6ad99d69410471989a5f | |
parent | 10a6e8e5792704ba4b04eada0966bdcb724e9fb5 (diff) | |
download | vyos-live-build-5d6574552ff8fdf9623f4c0319097778f8523289.tar.gz vyos-live-build-5d6574552ff8fdf9623f4c0319097778f8523289.zip |
Add support for making ext[234] or btrfs hdd images bootable with extlinux (Closes: #745816)
extlinux configuration for the bootable image is installed to
/boot/extlinux, matching the extlinux-install script in Debian.
From the configuration point of view it's still called "syslinux",
the same as the rest of the syslinux family (pxelinux, isolinux etc.)
-rw-r--r-- | debian/live-build.bug-script | 2 | ||||
-rwxr-xr-x | functions/defaults.sh | 6 | ||||
-rwxr-xr-x | scripts/build/binary_hdd | 43 | ||||
-rwxr-xr-x | scripts/build/binary_syslinux | 33 |
4 files changed, 61 insertions, 23 deletions
diff --git a/debian/live-build.bug-script b/debian/live-build.bug-script index 4c2a21eeb..8a68d3038 100644 --- a/debian/live-build.bug-script +++ b/debian/live-build.bug-script @@ -6,7 +6,7 @@ DEFAULT_SETTINGS="/etc/live/build.conf" dpkg -l debootstrap cdebootstrap # Checking suggests -dpkg -l dosfstools xorriso loadlin memtest86+ memtest86 mtools parted squashfs-tools mtd-tools syslinux grub uuid-runtime win32-loader +dpkg -l dosfstools xorriso loadlin memtest86+ memtest86 mtools parted squashfs-tools mtd-tools syslinux syslinux-common extlinux grub uuid-runtime win32-loader if [ -e "${DEFAULT_SETTINGS}" ]; then echo "Contents of ${DEFAULT_SETTINGS}:" diff --git a/functions/defaults.sh b/functions/defaults.sh index 92f006797..b1c22e2ad 100755 --- a/functions/defaults.sh +++ b/functions/defaults.sh @@ -1061,12 +1061,12 @@ Check_defaults () if [ "${LB_BOOTLOADER}" = "syslinux" ] then - # syslinux + fat + # syslinux + fat or ntfs, or extlinux + ext[234] or btrfs case "${LB_BINARY_FILESYSTEM}" in - fat*|ntfs) + fat*|ntfs|ext[234]|btrfs) ;; *) - Echo_warning "You have selected values of LB_BOOTLOADER and LB_BINARY_FILESYSTEM which are incompatible - syslinux only supports FAT and NTFS filesystems." + Echo_warning "You have selected values of LB_BOOTLOADER and LB_BINARY_FILESYSTEM which are incompatible - the syslinux family only support FAT, NTFS, ext[234] or btrfs filesystems." ;; esac fi diff --git a/scripts/build/binary_hdd b/scripts/build/binary_hdd index e335a81b7..1868d9d9b 100755 --- a/scripts/build/binary_hdd +++ b/scripts/build/binary_hdd @@ -77,7 +77,19 @@ case "${LB_BOOTLOADER}" in ;; syslinux) - Check_package chroot/usr/bin/syslinux syslinux + case ${LB_BINARY_FILESYSTEM} in + fat*|ntfs) + _BOOTLOADER=syslinux + ;; + ext[234]|btrfs) + _BOOTLOADER=extlinux + ;; + *) + Echo_error "syslinux/extlinux doesn't support ${LB_BINARY_FILESYSTEM}" + exit 1 + ;; + esac + Check_package chroot/usr/bin/${_BOOTLOADER} ${_BOOTLOADER} ;; esac @@ -179,7 +191,7 @@ case "${LB_BUILD_WITH_CHROOT}" in if [ "${LB_BOOTLOADER}" = "syslinux" ] then - dd if=chroot/usr/lib/syslinux/mbr.bin of=${FREELO} bs=440 count=1 + dd if=chroot/usr/lib/${_BOOTLOADER}/mbr.bin of=${FREELO} bs=440 count=1 fi ;; @@ -191,7 +203,7 @@ case "${LB_BUILD_WITH_CHROOT}" in if [ "${LB_BOOTLOADER}" = "syslinux" ] then - dd if=/usr/lib/syslinux/mbr.bin of=${FREELO} bs=440 count=1 + dd if=/usr/lib/${_BOOTLOADER}/mbr.bin of=${FREELO} bs=440 count=1 fi ;; esac @@ -247,6 +259,8 @@ case "${LB_BINARY_FILESYSTEM}" in ;; esac +Echo_message "Copying binary contents into image..." + mkdir -p chroot/binary.tmp mount ${MOUNT_OPTIONS} ${FREELO} chroot/binary.tmp cp -T ${CP_OPTIONS} binary/ chroot/binary.tmp @@ -282,22 +296,33 @@ EOF fi } -umount chroot/binary.tmp -rmdir chroot/binary.tmp +case "${_BOOTLOADER}" in + syslinux) + _SYSLINUX_INSTALLER="syslinux ${FREELO}" + ;; + extlinux) + _SYSLINUX_INSTALLER="extlinux --install /binary.tmp/boot/extlinux" + ;; + *) + _SYSLINUX_INSTALLER="" + ;; +esac -if [ "${LB_BOOTLOADER}" = "syslinux" ] +if [ -n "${_SYSLINUX_INSTALLER}" ] then case "${LB_BUILD_WITH_CHROOT}" in true) - Chroot chroot "syslinux ${FREELO}" + Chroot chroot "${_SYSLINUX_INSTALLER}" ;; - false) - syslinux ${FREELO} + ${_SYSLINUX_INSTALLER} ;; esac fi +umount chroot/binary.tmp +rmdir chroot/binary.tmp + Lodetach ${FREELO} echo "!!! The above error/warning messages can be ignored !!!" diff --git a/scripts/build/binary_syslinux b/scripts/build/binary_syslinux index 1cf7f75ff..9d32e222f 100755 --- a/scripts/build/binary_syslinux +++ b/scripts/build/binary_syslinux @@ -79,15 +79,28 @@ case "${LIVE_IMAGE_TYPE}" in ;; hdd*|*) - _BOOTLOADER="syslinux" - - case "${LB_MODE}" in - progress-linux) - _TARGET="binary/boot" + case ${LB_BINARY_FILESYSTEM} in + fat*|ntfs) + _BOOTLOADER=syslinux + + case "${LB_MODE}" in + progress-linux) + _TARGET="binary/boot" + ;; + + *) + _TARGET="binary/syslinux" + ;; + esac ;; + ext[234]|btrfs) + _BOOTLOADER=extlinux + _TARGET="binary/boot/extlinux" + ;; *) - _TARGET="binary/syslinux" + Echo_error "syslinux/extlinux doesn't support ${LB_BINARY_FILESYSTEM}" + exit 1 ;; esac ;; @@ -110,7 +123,7 @@ fi # Checking depends case "${LB_BUILD_WITH_CHROOT}" in true) - Check_package chroot/usr/bin/syslinux syslinux + Check_package chroot/usr/bin/${_BOOTLOADER} ${_BOOTLOADER} Check_package chroot/usr/lib/syslinux syslinux-common if ls "${_SOURCE}"/*.svg* > /dev/null 2>&1 @@ -120,10 +133,10 @@ case "${LB_BUILD_WITH_CHROOT}" in ;; false) - if [ ! -e /usr/bin/syslinux ] + if [ ! -e /usr/bin/${_BOOTLOADER} ] then - # syslinux - Echo_error "/usr/bin/syslinux - no such file." + # syslinux or extlinux + Echo_error "/usr/bin/${_BOOTLOADER} - no such file." exit 1 fi |