agama/live/config-cdroot/fix_bootconfig.ppc64le
Lubos Kocman 88123de634 * Script generated boot menu for all arches
- Newly added x86_64 and aarch64 write stock copies from kiwi
  generated grub.cfg

- Intel uefi boot fix from "Boot from disk item" (gh#openSUSE/agama#1609)

- Keep -x on purpose for future trubleshooting (advice from Marcus)

- Use $kiwi_iname instead of static agama-live reference in all of
  config-cdroom/* with exception of s390x, where for some reason
  we use SUSE Linux... string instead
2024-09-16 23:14:38 +02:00

127 lines
2.7 KiB
Bash
Executable file

#! /bin/bash
# This script takes an unpacked ppc64le Live iso image in the form KIWI-NG currently creates.
#
# It modifies the tree to match ppx64le expectations.
#
# Usage:
#
# fix_bootconfig.ppc64le DST_DIR
#
# iso layout before:
# .
# ├── LiveOS
# │   └── squashfs.img
# └── boot
# └── ppc64le
# └── loader
# ├── initrd
# ├── isolinux.cfg
# ├── isolinux.msg
# └── linux
#
# iso layout adjusted:
# .
# ├── LiveOS
# │   └── squashfs.img
# ├── boot
# │   ├── grub2
# │   │   ├── core.elf
# │   │   ├── grub.cfg
# │   │   └── powerpc-ieee1275
# │   │   └── *.mod
# │   └── ppc64le
# │   ├── initrd
# │   └── linux
# └── ppc
# └── bootinfo.txt
#
dst="$1"
if [ ! -d "$dst" ] ; then
echo "fix_bootconfig.ppc64le: image dir \"$dst\" not found"
exit 1
fi
# KIWI config which should normally be inherited
# from a parent process in our case xorriso
# but that's not the case.
test -f $dst/.profile && . $dst/.profile
# ----------------
# Note:
#
# KIWI-NG creates an iso with isolinux boot files in boot/ppc64le/loader.
#
# These files are not needed except for kernel and initrd (and kernel params from isolinux.cfg).
#
# This script removes the isolinux config and adds ppc64le related config
# files. It also moves kernel and initrd to the usual location (in boot/s390x).
#
boot_dir=$dst/boot/ppc64le
grub_dir=$dst/boot/grub2
mkdir -p $boot_dir $grub_dir $dst/ppc
# if files are in a 'loader' subdir, move them out
if [ -d $boot_dir/loader ] ; then
mv $boot_dir/loader/{initrd,linux} $boot_dir
rm -r $boot_dir/loader
fi
chmod 644 $boot_dir/{initrd,linux}
# Create grub.cfg.
#
cat >$dst/boot/grub2/grub.cfg <<XXX
gfxmode=auto
set default="$kiwi_iname"
insmod gettext
if sleep --interruptible 0 ; then
timeout=60
fi
menuentry "$kiwi_iname" --class os --unrestricted {
echo 'Loading kernel...'
linux /boot/ppc64le/linux
echo 'Loading initrd...'
initrd /boot/ppc64le/initrd
}
menuentry "Check Installation Media -- $kiwi_iname" --class os --unrestricted {
echo 'Loading kernel...'
linux /boot/ppc64le/linux mediacheck=1 plymouth.enable=0
echo 'Loading initrd...'
initrd /boot/ppc64le/initrd
}
menuentry 'local' {
exit
}
submenu 'Other options...' {
menuentry 'Reboot' {
reboot
}
menuentry 'Exit to Open Firmware' {
exit
}
}
XXX
# Create bootinfo.txt
#
cat >$dst/ppc/bootinfo.txt <<XXX
<chrp-boot>
<description>$kiwi_iname</description>
<os-name>openSuSE Tumbleweed</os-name>
<boot-script>boot &device;:1,\boot\grub2\grub.elf</boot-script>
</chrp-boot>
XXX