Index: update_bootloaders.sh |
diff --git a/update_bootloaders.sh b/update_bootloaders.sh |
index 9fce64abde532e9ef5059c20864bc725d7a8bdfc..bdd7c09a0d7e9b580160d2fca1cb63468823e15e 100755 |
--- a/update_bootloaders.sh |
+++ b/update_bootloaders.sh |
@@ -22,6 +22,10 @@ DEFINE_string from "/tmp/boot" \ |
"Path the legacy bootloader templates are copied from. (Default /tmp/boot)" |
DEFINE_string to "/tmp/esp.img" \ |
"Path to esp image or ARM output MBR (Default: /tmp/esp.img)" |
+DEFINE_integer to_offset 0 \ |
+ "Offset in bytes into 'to' if it is a file (Default: 0)" |
+DEFINE_integer to_size -1 \ |
+ "Size in bytes of 'to' to use if it is a file. -1 is ignored. (Default: -1)" |
DEFINE_string vmlinuz "/tmp/vmlinuz" \ |
"Path to the vmlinuz file to use (Default: /tmp/vmlinuz)" |
# The kernel_partition and the kernel_cmdline each are used to supply |
@@ -106,13 +110,23 @@ if [[ ! -e "${FLAGS_to}" ]]; then |
ESP_BLOCKS=16384 |
/usr/sbin/mkfs.vfat -C "${FLAGS_to}" ${ESP_BLOCKS} |
ESP_DEV=$(sudo losetup -f) |
- test -z "${ESP_DEV}" && error "No free loop devices." |
+ if [ -z "${ESP_DEV}" ]; then |
+ die "No free loop devices." |
+ fi |
sudo losetup "${ESP_DEV}" "${FLAGS_to}" |
else |
if [[ -f "${FLAGS_to}" ]]; then |
ESP_DEV=$(sudo losetup -f) |
- test -z "${ESP_DEV}" && error "No free loop devices." |
- sudo losetup "${ESP_DEV}" "${FLAGS_to}" |
+ if [ -z "${ESP_DEV}" ]; then |
+ die "No free loop devices." |
+ fi |
+ |
+ esp_offset="--offset ${FLAGS_to_offset}" |
+ esp_size="--sizelimit ${FLAGS_to_size}" |
+ if [ ${FLAGS_to_size} -lt 0 ]; then |
+ esp_size= |
+ fi |
+ sudo losetup ${esp_offset} ${esp_size} "${ESP_DEV}" "${FLAGS_to}" |
else |
# If it is a block device or something else, try to mount it anyway. |
ESP_DEV="${FLAGS_to}" |
@@ -167,7 +181,7 @@ if [[ "${FLAGS_arch}" = "x86" ]]; then |
# we cut over from rootfs booting (extlinux). |
if [[ ${FLAGS_install_syslinux} -eq ${FLAGS_TRUE} ]]; then |
sudo umount "${ESP_FS_DIR}" |
- sudo syslinux -d /syslinux "${FLAGS_to}" |
+ sudo syslinux -d /syslinux "${ESP_DEV}" |
fi |
elif [[ "${FLAGS_arch}" = "arm" ]]; then |
# Extract kernel flags |