debian-installer grub-efi test image
John Paul Adrian Glaubitz <[email protected]>
| Newsgroups | gmane.linux.debian.ports.ia64 |
|---|---|
| Message-ID | <[email protected]> |
Hi! I have just created the first test image for debian-installer on ia64 with grub-efi as a bootloader instead of elilo. The changes have not been committed to git yet but a test image can be found at [1]. Could someone test whether this image does something useful for them? For anyone interested, the patches for d-i and debian-cd are attached. Adrian > [1] https://cdimage.debian.org/cdimage/ports/grub-test/ -- .''`. John Paul Adrian Glaubitz : :' : Debian Developer - [email protected] `. `' Freie Universitaet Berlin - [email protected] `- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913
0001-ia64-Switch-bootloader-for-d-i-from-elilo-to-grub.patch
(text/x-patch, 17.8 KB)
>From 134c589ab28ef5557a3d914a7ed0e4f675940fd5 Mon Sep 17 00:00:00 2001
From: John Paul Adrian Glaubitz <glaubitz@localhost>
Date: Sun, 28 Apr 2019 00:37:40 +0200
Subject: [PATCH] ia64: Switch bootloader for d-i from elilo to grub
---
build/boot/ia64/elilo.conf | 31 ---------
build/boot/ia64/elilo_menu.msg | 24 -------
build/boot/ia64/general.msg | 24 -------
build/boot/ia64/params.msg | 25 -------
build/config/ia64.cfg | 153 +++++++++++++++++++++--------------------
build/config/ia64/cdrom.cfg | 8 +--
build/config/ia64/netboot.cfg | 9 +--
debian/control | 5 +-
8 files changed, 89 insertions(+), 190 deletions(-)
delete mode 100644 build/boot/ia64/elilo.conf
delete mode 100644 build/boot/ia64/elilo_menu.msg
delete mode 100644 build/boot/ia64/general.msg
delete mode 100644 build/boot/ia64/params.msg
diff --git a/build/boot/ia64/elilo.conf b/build/boot/ia64/elilo.conf
deleted file mode 100644
index 9f586b8..0000000
--- a/build/boot/ia64/elilo.conf
+++ /dev/null
@@ -1,31 +0,0 @@
-chooser=textmenu
-default=install
-delay=20
-prompt
-
-message=${SYSDIR}elilo_menu.msg
-f1=${SYSDIR}general.msg
-f2=${SYSDIR}params.msg
-
-relocatable
-
-image=${KERNEL}
- label=install
- description="Install"
- initrd=${INITRD}
- append="--"
- read-only
-
-image=${KERNEL}
- label=expert
- description="Install [Expert mode]"
- initrd=${INITRD}
- append="priority=low --"
- read-only
-
-image=${KERNEL}
- label=rescue
- description="Rescue"
- initrd=${INITRD}
- append="rescue/enable=true --"
- read-only
diff --git a/build/boot/ia64/elilo_menu.msg b/build/boot/ia64/elilo_menu.msg
deleted file mode 100644
index e9e21b2..0000000
--- a/build/boot/ia64/elilo_menu.msg
+++ /dev/null
@@ -1,24 +0,0 @@
- ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß
-10
- 7fÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ 74Debian Installer7f ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ7f¿10
- 7f³70 This is the Debian GNU/Linux installation system, built on ${BUILD_DATE}. 7f³10
- 7f³70 7f³10
- 7f³70 Use the arrow keys to select a menu item and then Enter to select it. 7f³10
- 7f³70 Use the function keys for help. On a serial console, use Ctrl-F and the 7f³10
- 7f³70 function key number instead. 7f³10
- 7f³70 7f³10
- 7f³70 7eBeware that this is an OS installer, and misuse can result in the loss of 7f³10
- 7f³70 7eany data currently on your disks. 7f³10
- 7f³70 ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ70¿7f ³10
- 7f³70 ³70 70³ 7f³10
- 7f³70 ³70 70³7f ³10
- 7f³70 ³70 70³7f ³10
- 7f³70 ³70 70³7f ³10
- 7f³70 ³70 70³7f ³10
- 7f³70 ³70 1e70³ 7f³10
- 7f³70 ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ70 7f³10
- 7f³70 7f³10
- 7f³70 Boot: 35 70 7f³10
- 7f³70 7f³10
- 7f³70 Help: [71F170-General] [71F270-Params] 7f³10
- 7fÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ10
diff --git a/build/boot/ia64/general.msg b/build/boot/ia64/general.msg
deleted file mode 100644
index ca8de0b..0000000
--- a/build/boot/ia64/general.msg
+++ /dev/null
@@ -1,24 +0,0 @@
- ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß
-10
- 7fÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ 74General Screen7f ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ70¿10
- 7f³70 ³10
- 7f³70 There are two ways to install Debian from this image. Expert mode ³10
- 7f³70 gives you more control over the configuration of the system by ³10
- 7f³70 giving you the option to change configuration parameters and control ³10
- 7f³70 which packages are loaded. Normal mode installs the default set of ³10
- 7f³70 packages and automatically configures them with the default settings. ³10
- 7f³70 ³10
- 7f³70 ³10
- 7f³70 See the Installation Manual or the FAQ for more information; both ³10
- 7f³70 documents are available at the Debian web site: ³10
- 7f³70 http://www.debian.org/ ³10
- 7f³70 ³10
- 7f³70 ³10
- 7f³70 Debian GNU/Linux is Copyright (C) 1993-2014 Software in the Public ³10
- 7f³70 Interest and others and comes with ABSOLUTELY NO WARRANTY, to the ³10
- 7f³70 extent permitted by applicable law. ³10
- 7f³70 ³10
- 7f³70 ³10
- 7f³70 Press any key to return to main screen ³10
- 7f³70 ³10
- 7fÀ70ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ10
diff --git a/build/boot/ia64/params.msg b/build/boot/ia64/params.msg
deleted file mode 100644
index c386842..0000000
--- a/build/boot/ia64/params.msg
+++ /dev/null
@@ -1,25 +0,0 @@
- ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß
-10
- 7fÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ 74Params Screen7f ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ70¿10
- 7f³70 ³10
- 7f³70 You can enter boot parameters on the Boot: line. ³10
- 7f³70 ³10
- 7f³70 For the serial console console=ttyS0,9600n8 ³10
- 7f³70 ³10
- 7f³70 Verbose debugging DEBCONF_DEBUG=5 ³10
- 7f³70 Force static network config netcfg/disable_dhcp=true ³10
- 7f³70 ³10
- 7f³70 Text mode (improves interactivity DEBIAN_FRONTEND=text ³10
- 7f³70 for slow consoles) ³10
- 7f³70 ³10
- 7f³70 Rescue mode rescue/enable=true ³10
- 7f³70 ³10
- 7f³70 ³10
- 7f³70 ³10
- 7f³70 ³10
- 7f³70 ³10
- 7f³70 ³10
- 7f³70 ³10
- 7f³70 Press any key to return to main screen ³10
- 7f³70 ³10
- 7fÀ70ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ10
diff --git a/build/config/ia64.cfg b/build/config/ia64.cfg
index 454a662..1a32f80 100644
--- a/build/config/ia64.cfg
+++ b/build/config/ia64.cfg
@@ -1,6 +1,3 @@
-# How big a floppy image should I make? (in kilobytes)
-FLOPPY_SIZE = 32768
-
MEDIUM_SUPPORTED = cdrom netboot
# The version of the kernel to use.
@@ -12,86 +9,94 @@ DEBIAN_RELEASE = unstable
KEYRING = /usr/share/keyrings/debian-ports-archive-keyring.gpg
-INITRD_FS = initramfs
+GRUB_EFI=y
+GRUB_PLATFORM=ia64-efi
+GRUB_EFI_NAME=ia64
-# The DOS volume id to use for DOS floppies. This is a 32 bit hexidecimal
-# number.
-DOS_VOLUME_ID = deb00001
-# The DOS volume label to use for DOS floppies. This is a 11 character
-# string.
-DOS_VOLUME_LABEL = "Debian Inst"
+arch_boot_screens:
+arch_tree:
+# The font to load in GRUB
+GRUB_FONT = /usr/share/grub/ascii.pf2
-arch_tree:
+# Extract GRUB EFI files.
+.PHONY: ia64_grub_efi
+ia64_grub_efi:
+ifeq ($(GRUB_EFI),y)
+ efi-image $(TEMP_GRUB_EFI) $(GRUB_PLATFORM) $(GRUB_EFI_NAME) $(NETBOOT_PATH)
+endif
-# Create a bootable floppy image.
-# 1. make a dos filesystem image
-# 2. copy over kernel, initrd
-# 3. copy over elilo files
-.PHONY: arch_boot
-arch_boot:
- dd if=/dev/zero [email protected] bs=1k count=$(FLOPPY_SIZE)
- mkfs.msdos --invariant -i $(DOS_VOLUME_ID) -n $(DOS_VOLUME_LABEL) -C $(TEMP_BOOT) $(FLOPPY_SIZE)
-
- mmd -i$(TEMP_BOOT) ::/efi
- mmd -i$(TEMP_BOOT) ::/efi/boot
- mcopy -i$(TEMP_BOOT) $(TEMP_KERNEL) ::/linux
- mcopy -i$(TEMP_BOOT) $(TEMP_INITRD) ::/initrd.gz
- mcopy -i$(TEMP_BOOT) /usr/lib/elilo/elilo.efi ::/efi/boot/bootia64.efi
- mcopy -i$(TEMP_BOOT) /usr/lib/elilo/elilo.efi ::/elilo.efi
-
- cat boot/ia64/elilo.conf \
- | ramdisk-size-subst $(TEMP_INITRD) \
- | bootvars-subst MEDIA_TYPE "$(MEDIA_TYPE)" \
- DEBIAN_VERSION "$(DEBIAN_VERSION)" \
- BUILD_DATE "$(BUILD_DATE)" \
- SYSDIR "/efi/boot/" \
- KERNEL /linux INITRD /initrd.gz \
- > $(TEMP)/elilo-cd.conf
- mcopy -i$(TEMP_BOOT) $(TEMP)/elilo-cd.conf ::/elilo.conf
- mcopy -i$(TEMP_BOOT) $(TEMP)/elilo-cd.conf ::/efi/boot/elilo.conf
-
- $(foreach file,$(sort $(wildcard $(TEMP_BOOT_SCREENS)/*.msg)), \
- mcopy -i$(TEMP_BOOT) $(file) ::/efi/boot/`basename $(file)`; \
- )
- echo "elilo linux" | mcopy -i$(TEMP_BOOT) - ::/install.nsh
+# Supply GRUB EFI configuration.
+.PHONY: arch_cd_info_dir
+arch_cd_info_dir: ia64_grub_efi
+ -rm -f $(TEMP_CD_INFO_DIR)/*
+ mkdir -p $(TEMP_CD_INFO_DIR)
-arch_boot_screens:
- -rm -f $(TEMP_BOOT_SCREENS)/*
- mkdir -p $(TEMP_BOOT_SCREENS)
- $(foreach SCREEN,$(wildcard boot/ia64/*.msg), \
- bootvars-subst MEDIA_TYPE "$(MEDIA_TYPE)" \
- DEBIAN_VERSION "$(DEBIAN_VERSION)" \
- BUILD_DATE "$(BUILD_DATE)" \
- < $(SCREEN) > $(TEMP_BOOT_SCREENS)/`basename $(SCREEN)`\
- ;)
+ if [ "$(GRUB_EFI)" = y ]; then \
+ set -e; \
+ mkdir -p $(TEMP_CD_INFO_DIR)/grub/$(GRUB_PLATFORM); \
+ cp -a $(TEMP_GRUB_EFI)/efi.img $(TEMP_CD_INFO_DIR)/grub/; \
+ grub-gencfg \
+ KERNEL /%install%/vmlinuz \
+ INITRD /%install%/initrd.gz \
+ HEADER boot/$(ARCH)/grub/grub-efi.cfg \
+ > $(TEMP_CD_INFO_DIR)/grub/grub.cfg; \
+ cp -a $(GRUB_FONT) $(TEMP_CD_INFO_DIR)/grub/font.pf2; \
+ cp -a $(TEMP_GRUB_EFI)/boot/grub/$(GRUB_PLATFORM)/* \
+ $(TEMP_CD_INFO_DIR)/grub/$(GRUB_PLATFORM)/; \
+ fi
.PHONY: arch_miniiso
-arch_miniiso: $(TEMP_BOOT)
- -rm -rf $(TEMP_CD_TREE)/*
- install -m 644 -D $(TEMP_BOOT) $(TEMP_CD_TREE)/boot/boot.img
+arch_miniiso: ia64_grub_efi
+ -rm -f $(TEMP_CD_TREE)/*
+ mkdir -p $(TEMP_CD_TREE)
- genisoimage -no-emul-boot -J -o $(TEMP_MINIISO) -b boot/boot.img \
- -c boot/boot.catalog $(TEMP_CD_TREE)
+ ln -f $(TEMP_KERNEL) $(TEMP_CD_TREE)/linux
+ ln -f $(TEMP_INITRD) $(TEMP_CD_TREE)/initrd.gz
+
+ mkdir -p $(TEMP_CD_TREE)/.disk
+ echo "Debian GNU/Linux $(DEBIAN_VERSION) $(ARCH) - netboot mini.iso $(BUILD_DATE)"\
+ > $(TEMP_CD_TREE)/.disk/info
+
+ if [ "$(GRUB_EFI)" = y ]; then \
+ set -e; \
+ mkdir -p $(TEMP_CD_TREE)/boot/grub/$(GRUB_PLATFORM); \
+ cp -a $(TEMP_GRUB_EFI)/efi.img $(TEMP_CD_TREE)/boot/grub/; \
+ grub-gencfg \
+ KERNEL /linux \
+ INITRD /initrd.gz \
+ HEADER boot/$(ARCH)/grub/grub-efi.cfg \
+ > $(TEMP_CD_TREE)/boot/grub/grub.cfg; \
+ cp -a $(GRUB_FONT) $(TEMP_CD_TREE)/boot/grub/font.pf2; \
+ cp -a $(TEMP_GRUB_EFI)/boot/grub/$(GRUB_PLATFORM)/* \
+ $(TEMP_CD_TREE)/boot/grub/$(GRUB_PLATFORM)/; \
+ fi
+
+ if [ "$(GRUB_EFI)" = y ]; then \
+ xorriso -as mkisofs -r -J -c boot.cat \
+ -boot-load-size 4 -boot-info-table \
+ -eltorito-alt-boot \
+ --efi-boot boot/grub/efi.img -no-emul-boot \
+ -o $(TEMP_MINIISO) $(TEMP_CD_TREE); \
+ fi
.PHONY: arch_netboot_dir
-arch_netboot_dir:
+arch_netboot_dir: ia64_grub_efi
-rm -f $(TEMP_NETBOOT_DIR)
mkdir -p $(TEMP_NETBOOT_DIR)/$(NETBOOT_PATH)
- cp $(TEMP_INITRD) $(TEMP_KERNEL) $(TEMP_NETBOOT_DIR)/$(NETBOOT_PATH)
-
- cp /usr/lib/elilo/elilo.efi $(TEMP_NETBOOT_DIR)/$(NETBOOT_PATH)
- cat boot/ia64/elilo.conf \
- | ramdisk-size-subst $(TEMP_INITRD) \
- | bootvars-subst MEDIA_TYPE "$(MEDIA_TYPE)" \
- DEBIAN_VERSION "$(DEBIAN_VERSION)" \
- BUILD_DATE "$(BUILD_DATE)" \
- SYSDIR "$(BOOT_SCREEN_DIR)" \
- KERNEL vmlinuz INITRD initrd.gz \
- > $(TEMP_NETBOOT_DIR)/$(NETBOOT_PATH)/elilo.conf
-
- mkdir -p $(TEMP_NETBOOT_DIR)/$(NETBOOT_PATH)/$(BOOT_SCREEN_DIR)
- set -e; \
- $(foreach file,$(wildcard $(TEMP_BOOT_SCREENS)/*.msg), \
- cp $(file) $(TEMP_NETBOOT_DIR)/$(NETBOOT_PATH)/$(BOOT_SCREEN_DIR); \
- )
+ cp $(TEMP_KERNEL) $(TEMP_NETBOOT_DIR)/$(NETBOOT_PATH)/linux
+ cp $(TEMP_INITRD) $(TEMP_NETBOOT_DIR)/$(NETBOOT_PATH)/initrd.gz
+
+ if [ "$(GRUB_EFI)" = y ]; then \
+ set -e; \
+ mkdir -p $(TEMP_NETBOOT_DIR)/$(NETBOOT_PATH)/grub/$(GRUB_PLATFORM); \
+ cp -a $(TEMP_GRUB_EFI)/*.efi $(TEMP_NETBOOT_DIR)/$(NETBOOT_PATH); \
+ cp -a $(GRUB_FONT) $(TEMP_NETBOOT_DIR)/$(NETBOOT_PATH)/grub/font.pf2; \
+ cp -a $(TEMP_GRUB_EFI)/boot/grub/$(GRUB_PLATFORM)/* \
+ $(TEMP_NETBOOT_DIR)/$(NETBOOT_PATH)/grub/$(GRUB_PLATFORM)/; \
+ grub-gencfg \
+ KERNEL /$(NETBOOT_PATH)/linux \
+ INITRD /$(NETBOOT_PATH)/initrd.gz \
+ HEADER boot/$(ARCH)/grub/grub-efi.cfg \
+ > $(TEMP_NETBOOT_DIR)/$(NETBOOT_PATH)/grub/grub.cfg; \
+ fi
diff --git a/build/config/ia64/cdrom.cfg b/build/config/ia64/cdrom.cfg
index 53bcb64..38547cb 100644
--- a/build/config/ia64/cdrom.cfg
+++ b/build/config/ia64/cdrom.cfg
@@ -1,8 +1,8 @@
MEDIA_TYPE = CD-ROM
-TARGET = $(KERNEL) $(INITRD) $(BOOT)
+TARGET = $(INITRD) $(KERNEL) $(DEBIAN_CD_INFO)
EXTRANAME = $(MEDIUM)/
-MANIFEST-KERNEL = "kernel for use to build a CD"
-MANIFEST-INITRD = "initrd for use to build a CD"
-MANIFEST-BOOT = "CDROM image for Itanium systems"
+MANIFEST-KERNEL = "kernel for use with mkisofs to build a CD"
+MANIFEST-INITRD = "initrd for use with mkisofs to build a CD"
+MANIFEST-DEBIAN_CD_INFO = "mkisofs config files for CD"
diff --git a/build/config/ia64/netboot.cfg b/build/config/ia64/netboot.cfg
index ecf7668..e38305f 100644
--- a/build/config/ia64/netboot.cfg
+++ b/build/config/ia64/netboot.cfg
@@ -1,11 +1,8 @@
MEDIA_TYPE = netboot image
-NETBOOT_DIR_TARGETS := $(TEMP_INITRD) $(TEMP_KERNEL)
+NETBOOT_DIR_TARGETS = $(TEMP_INITRD) $(TEMP_KERNEL)
TARGET = $(NETBOOT_DIR) $(NETBOOT_TAR) $(MINIISO)
EXTRANAME = $(MEDIUM)/
-BOOT_SCREEN_DIR = boot-screens/
-
-MANIFEST-NETBOOT_DIR = "netboot directory for tftp server"
-MANIFEST-NETBOOT_TAR = "tarball of netboot directory"
-MANIFEST-MINIISO = "tiny CD image that boots the netboot installer"
+MANIFEST-NETBOOT_DIR = "boot directory for tftp server"
+MANIFEST-NETBOOT_TAR = "tarball of boot directory"
diff --git a/debian/control b/debian/control
index b5e1350..01e6b83 100644
--- a/debian/control
+++ b/debian/control
@@ -57,7 +57,7 @@ Build-Depends:
# default.)
hfsutils [powerpc],
# For making bootable HFS USB sticks for powerpc.
- dosfstools [i386 m68k amd64 armhf arm64],
+ dosfstools [i386 ia64 m68k amd64 armhf arm64],
# For creating FAT filesystems with mkfs.msdos.
# Of course i386/amd64 use this for floppies, CDs etc.
# m68k uses it for atari floppies
@@ -112,6 +112,7 @@ Build-Depends:
# Signed bootloader components for UEFI Secure Boot
grub-efi-arm64-bin [arm64],
grub-efi-ia32-bin [i386],
+ grub-efi-ia64-bin [ia64],
grub-efi-arm-bin [armhf],
grub-common [amd64 arm64 i386], xorriso,
# Used to make EFI bootable images
@@ -134,7 +135,7 @@ Build-Depends:
tofrodos [i386 amd64 kfreebsd-i386 kfreebsd-amd64],
# For todos, used on files that need to be accessible from
# DOS.
- mtools [i386 m68k amd64 armhf arm64 kfreebsd-i386 kfreebsd-amd64 hurd-i386],
+ mtools [i386 ia64 m68k amd64 armhf arm64 kfreebsd-i386 kfreebsd-amd64 hurd-i386],
# mcopy is used to put files onto FAT filesystems w/o
# mounting them. Note that patches from #900409 and #900410
# are required for a reproducible build (available since
--
1.8.5.3
0001-ia64-Switch-bootloader-for-d-i-from-elilo-to-grub-in.patch
(text/x-patch, 5.3 KB)
>From ab8e7c5fe5b3dcbad0dc0d2a8669fb9d3ce5a958 Mon Sep 17 00:00:00 2001 From: John Paul Adrian Glaubitz <[email protected]> Date: Sat, 27 Apr 2019 22:39:31 +0000 Subject: [PATCH] ia64: Switch bootloader for d-i from elilo to grub in debian-cd --- tools/boot/buster/boot-ia64 | 120 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 96 insertions(+), 24 deletions(-) diff --git a/tools/boot/buster/boot-ia64 b/tools/boot/buster/boot-ia64 index ba5b1996..67dda5a3 100755 --- a/tools/boot/buster/boot-ia64 +++ b/tools/boot/buster/boot-ia64 @@ -1,6 +1,9 @@ #!/bin/bash + +# Based on boot-x86 # -# boot-ia64 +# Do install stuff for arm64, including making bootable CDs +# Works with debian-installer # # $1 is the CD number # $2 is the temporary CD build dir @@ -8,10 +11,14 @@ . $BASEDIR/tools/boot/$DI_CODENAME/common.sh set -e +#set -x + +# Workaround for #823881: +export MTOOLS_SKIP_CHECK=1 N=$1 CDDIR=$2 -INSTALLDIR="install" +INSTALLDIR="install.a64" # Common options for all disks add_mkisofs_opt $CDDIR/../$N.mkisofs_opts "-J -joliet-long" @@ -24,39 +31,104 @@ if [ $N != "1" ]; then fi if [ "$DI_WWW_HOME" = "default" ]; then - DI_WWW_HOME="https://d-i.debian.org/daily-images/ia64/daily" + DI_WWW_HOME="https://d-i.debian.org/daily-images/arm64/daily" try_di_image_cache else DI_WWW_HOME=$(echo $DI_WWW_HOME | sed "s,%ARCH%,$ARCH,") fi +case "$MKISOFS" in + *xorriso*) + XORRISO_VER=$(xorriso_version) + ;; + *) + echo "ERROR: debian-cd depends on xorriso for making $ARCH bootable CDs." + exit 1; + ;; +esac + cd $CDDIR/.. -# Download boot images -for image in boot.img; do +BOOT_IMAGES="cdrom/initrd.gz cdrom/vmlinuz cdrom/debian-cd_info.tar.gz" + +# Download boot images. +for image in $BOOT_IMAGES; do if [ ! -e "$image" ]; then - if [ ! "$DI_WWW_HOME" ];then - if [ ! "$DI_DIR" ];then - DI_DIR="$MIRROR/dists/$DI_DIST/main/installer-$ARCH/current/images" - fi - cp "$DI_DIR/cdrom/$image" . || \ - cp "$DI_DIR/$image" . - else - $WGET "$DI_WWW_HOME/cdrom/$image" || \ - $WGET "$DI_WWW_HOME/$image" - fi + dir=$(dirname $image) + mkdir -p $dir + if [ -n "$LOCAL" -a -f "${LOCALDEBS:-$MIRROR}/dists/$DI_DIST/local/installer-$ARCH/current/images/$image" ]; then + cp "${LOCALDEBS:-$MIRROR}/dists/$DI_DIST/local/installer-$ARCH/current/images/$image" "$image" + elif [ ! "$DI_WWW_HOME" ];then + if [ ! "$DI_DIR" ];then + DI_DIR="$MIRROR/dists/$DI_DIST/main/installer-$ARCH/current/images" + fi + cp "$DI_DIR/$image" "$image" + else + $WGET "$DI_WWW_HOME/$image" -O "$image" + fi fi done -mkdir -p boot$N/boot -cp -f boot.img boot$N/boot/ -add_mkisofs_opt $CDDIR/../$N.mkisofs_opts "-no-emul-boot" -add_mkisofs_opt $CDDIR/../$N.mkisofs_opts "-b boot/boot.img" -add_mkisofs_opt $CDDIR/../$N.mkisofs_opts "-c boot/boot.catalog" +mkdir -p $CDDIR/$INSTALLDIR +cp -lf cdrom/vmlinuz $CDDIR/$INSTALLDIR/ +cp -lf cdrom/initrd.gz $CDDIR/$INSTALLDIR/ + +# Boot setup including config and help files comes from d-i. +mkdir -pv $PWD/boot$N +cat cdrom/debian-cd_info.tar.gz | (cd boot$N/; tar zx) + +if [ -d boot$N/grub ] ; then + echo " Adding EFI boot code for $ARCH on CD$N" + + # Move GRUB files to the right place. + mkdir -p $CDDIR/EFI/boot + mcopy -n -s -i boot$N/grub/efi.img '::efi/*' $CDDIR/EFI + mkdir -p $CDDIR/boot/grub + mv boot$N/grub/* $CDDIR/boot/grub/ + rmdir boot$N/grub + + # Stuff the EFI boot files into a FAT filesystem, making it as + # small as possible. We end up re-packing like this in case we're + # making a multi-arch image + + # First, work out how many blocks we need + blocks=$(calculate_efi_image_size $CDDIR) + + # Now make a new image to contain the files + rm -f $CDDIR/boot/grub/efi.img + mkfs.msdos -v -C "$CDDIR/boot/grub/efi.img" $blocks >/dev/null -bls=$(calc_boot_size "boot$N/boot/boot.img") -add_mkisofs_opt $CDDIR/../$N.mkisofs_opts "-boot-load-size $bls" -add_mkisofs_opt $CDDIR/../$N.mkisofs_dirs "boot$N" + # And copy them into place + mmd -i "$CDDIR/boot/grub/efi.img" ::efi + mcopy -o -s -i "$CDDIR/boot/grub/efi.img" $CDDIR/EFI/* \ + "::efi" -# done + # Ugh - different code here depending on the version of xorriso we've got + if [ $XORRISO_VER -le 10202 ] ; then + echo "ERROR: debian-cd depends on xorriso > 1.2.2 for making $ARCH bootable CDs." + exit 1; + elif [ $XORRISO_VER -gt 10202 ] ; then + echo " Using newer EFI support in xorriso $XORRISO_VER" + + # Location of the EFI boot image, and don't emulate a floppy or HD + add_mkisofs_opt $CDDIR/../$N.mkisofs_opts "-e boot/grub/efi.img -no-emul-boot" + + # Add an *extra* partition on the end for the EFI bits + add_mkisofs_opt $CDDIR/../$N.mkisofs_opts "-append_partition 2 0xef $CDDIR/boot/grub/efi.img" + + # And force alignment + add_mkisofs_opt $CDDIR/../$N.mkisofs_opts "-partition_cyl_align all" + fi + + # Finally, belt and braces - fix up the %install% entries in grub + # in case they're still there + sed -i "s,\%install\%,$INSTALLDIR,g" $CDDIR/boot/grub/grub.cfg + + # Substitute custom KERNEL_PARAMS into grub.cfg + sed -i "s,/vmlinuz ,/vmlinuz $KERNEL_PARAMS ,g" $CDDIR/boot/grub/grub.cfg + +else + echo " No EFI boot code for $ARCH on CD$N" +fi +# th,th, thats all