commit: 66d90af4a77053403c2def45fe110307b53258be
Author: Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Sat Oct 12 16:12:58 2024 +0000
Commit: Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Sat Oct 12 16:12:58 2024 +0000
URL: https://gitweb.gentoo.org/proj/catalyst.git/commit/?id=66d90af4
Restructure grub installation
Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org>
targets/diskimage-stage2/controller.sh | 2 +-
targets/support/create-qcow2.sh | 34 +++++++++++++++++++++++--------
targets/support/diskimage-installation.sh | 8 ++++++++
targets/support/qcow2-grub-install.sh | 7 +++++++
targets/support/qcow2-installation.sh | 9 --------
5 files changed, 41 insertions(+), 19 deletions(-)
diff --git a/targets/diskimage-stage2/controller.sh
b/targets/diskimage-stage2/controller.sh
index 5dac4cc9..a904ef5a 100755
--- a/targets/diskimage-stage2/controller.sh
+++ b/targets/diskimage-stage2/controller.sh
@@ -5,7 +5,7 @@ source ${clst_shdir}/support/functions.sh
case $1 in
run)
# We need to install grub's EFI files and do very basic
configuration
- exec_in_chroot "${clst_shdir}/support/qcow2-installation.sh" ||
exit 1
+ exec_in_chroot
"${clst_shdir}/support/diskimage-installation.sh" || exit 1
;;
pre-kmerge)
diff --git a/targets/support/create-qcow2.sh b/targets/support/create-qcow2.sh
index 2d100b80..b41d635a 100755
--- a/targets/support/create-qcow2.sh
+++ b/targets/support/create-qcow2.sh
@@ -49,6 +49,27 @@ qcow2die() {
die "$@"
}
+# We need a means to execute a script inside the qcow with filesystems mounted
+exec_in_qcow2() {
+ local file_name=$(basename ${1})
+
+ # copy_to_chroot ${1}
+ cp -pPR "${1}" "${mymountpoint}/tmp" || die
+ # copy_to_chroot ${clst_shdir}/support/chroot-functions.sh
+ cp -pPR "${clst_shdir}/support/chroot-functions.sh"
"${mymountpoint}/tmp" || die
+
+ # Ensure the file has the executable bit set
+ chmod +x "${mymountpoint}/tmp/${file_name}" || die
+
+ echo "Running ${file_name} in qcow2:"
+ echo " ${clst_CHROOT} ${mymountpoint} /tmp/${file_name}"
+ ${clst_CHROOT} "${mymountpoint}" "/tmp/${file_name}" || exit 1
+
+ rm -f "${mymountpoint}/tmp/${file_name}" || die
+ rm -f "${mymountpoint}/tmp/chroot-functions.sh" || die
+}
+
+
echo "Creating a new qcow2 disk image file ${myqcow2}.tmp.qcow2 with size
${clst_qcow2_size/%iB/}"
qemu-img create -f qcow2 "${myqcow2}.tmp.qcow2" ${clst_qcow2_size/%iB/} || die
"Cannot create qcow2 file"
@@ -94,7 +115,10 @@ mount ${mypartefi} "${mymountpoint}/boot" || qcow2die
"Could not mount boot part
echo "Copying files into the mounted directories from ${clst_stage_path}"
cp -a "${clst_stage_path}"/* "${mymountpoint}/" || qcow2die "Could not copy
content into mounted image"
-# at this point we have a working system
+# now we can chroot in and install grub
+#/usr/sbin/grub-install --verbose --no-floppy --efi-directory=/boot
--removable --skip-fs-probe \
+# --no-nvram --no-bootsector --target=x86_64-efi || die "grub-install
failed"
+exec_in_qcow2 "${clst_shdir}/support/qcow2-grub-install.sh"
echo "Creating a CONTENTS file ${myqcow2}.CONTENTS"
pushd "${mymountpoint}/" &> /dev/null || qcow2die "Could not cd into
mountpoint"
@@ -104,14 +128,6 @@ popd &> /dev/null || qcow2die "Could
not cd out of mountpoin
echo "Compressing the CONTENTS file"
gzip "${myqcow2}.CONTENTS" || qcow2die "Could not compress the CONTENTS
file"
-# note: the following must already have been done by the stage2:
-# - rudimentary configuration
-# - installation of cloud-init if requested
-# - installation of kernel
-# - installation of fallback efi loader
-# - enabling of services
-# luckily efi requires no image magic, just regular files...
-
echo "Unmounting things"
umount "${mymountpoint}/boot" || qcow2die "Could not unmount boot partition"
umount "${mymountpoint}" || qcow2die "Could not unmount root partition"
diff --git a/targets/support/diskimage-installation.sh
b/targets/support/diskimage-installation.sh
new file mode 100755
index 00000000..8599112b
--- /dev/null
+++ b/targets/support/diskimage-installation.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+source /tmp/chroot-functions.sh
+
+# do some basic system setup here
+
+# we can't install the boot loader because nothing is mounted anywhere
+
diff --git a/targets/support/qcow2-grub-install.sh
b/targets/support/qcow2-grub-install.sh
new file mode 100755
index 00000000..e1bda92b
--- /dev/null
+++ b/targets/support/qcow2-grub-install.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+source /tmp/chroot-functions.sh
+
+# install the boot loader here
+
+/bin/bash
diff --git a/targets/support/qcow2-installation.sh
b/targets/support/qcow2-installation.sh
deleted file mode 100755
index 17f32aa6..00000000
--- a/targets/support/qcow2-installation.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash
-
-source /tmp/chroot-functions.sh
-
-# basic system setup
-
-# now we install grub into the future EFI partition
-/usr/sbin/grub-install --verbose --no-floppy --efi-directory=/boot --removable
--skip-fs-probe \
- --no-nvram --no-bootsector --target=x86_64-efi || die "grub-install
failed"