summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2014-04-27 12:35:58 +0200
committerDaniel Baumann <mail@daniel-baumann.ch>2014-04-27 12:37:37 +0200
commit5d6574552ff8fdf9623f4c0319097778f8523289 (patch)
tree3009b45ddc91f2ae55bb6ad99d69410471989a5f
parent10a6e8e5792704ba4b04eada0966bdcb724e9fb5 (diff)
downloadvyos-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-script2
-rwxr-xr-xfunctions/defaults.sh6
-rwxr-xr-xscripts/build/binary_hdd43
-rwxr-xr-xscripts/build/binary_syslinux33
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