Work on automating GRUB install

This commit is contained in:
Salt 2020-12-04 01:58:47 -06:00
parent fce752a017
commit 5bdd634354
1 changed files with 29 additions and 8 deletions

View File

@ -79,6 +79,8 @@ Usage: $_name [OPTION]...
-h Print this help text
-c Perform the Gentoo half of installation. Must be invoked from a chroot
or a systemd-nspawn container
-d Perform the second Gentoo half of installation from a chroot
-v Print more status messages. Stacks
Copyright (c) 2020 rehashedsalt@cock.li
@ -198,7 +200,13 @@ build-gentoo() {
sudo systemd-nspawn --directory="$_optdest" /gentoostrap.sh -c
# The nspawn container sadly cannot manipulate the environment entirely, so we need to now do an ACTUAL chroot to install GRUB
mount --types proc /proc "$_optdest/proc"
mount --rbind /sys "$_optdest/sys"
mount --make-rslave "$_optdest/sys"
mount --rbind /dev "$_optdest/dev"
mount --make-rslave "$_optdest/dev"
chroot "$_optdest" /gentoostrap.sh -d
log "Configuration complete! You should be good to reboot now."
}
build-gentoo-chroot() {
# Build Gentoo, but from within the chroot environment
@ -235,6 +243,7 @@ build-gentoo-chroot() {
emerge --jobs --quiet-build y \
app-admin/sudo \
app-editors/vim \
sys-boot/grub:2 \
sys-fs/{e2fs,xfs}progs \
sys-process/cronie
@ -252,7 +261,6 @@ build-gentoo-chroot() {
#emerge --jobs --quiet-build y @module-rebuild
# Install the bootloader
emerge --jobs --quiet-build y sys-boot/grub:2
mkdir -p /boot/efi
chmod 0700 /boot/efi
@ -267,13 +275,21 @@ build-gentoo-chroot() {
cat <<-EOF
Initial system configuration is complete. There are now just a few tasks left:
* Mount the ESP under /boot/efi
* Install and configure grub
* Reboot and pray
* Make sure everything looks good before we install GRUB
Dumping to a shell now. Have fun!
EOF
exec bash
}
build-gentoo-chroot2() {
# Last few chroot steps, mostly involving GRUB
log "Configuring GRUB"
grub-mkconfig -o /boot/grub
log "Installing GRUB"
grub-install
cat <<-EOF
EOF
}
# Main
main() {
@ -282,6 +298,9 @@ main() {
# Parse out flags
while getopts ":chv" opt; do
case $opt in
d)
_optchroot2=1
;;
c)
_optchroot=1
;;
@ -313,15 +332,17 @@ main() {
# TODO: That
# Validate core program dependencies
log "Validating dependencies" 2
if ! has basename curl sha512sum systemd-nspawn tar; then
if ! has basename chroot curl sha512sum systemd-nspawn tar; then
error "Failed to find program: $_return" 1
fi
# Do the do
if [ -z "$_optchroot" ]; then
build-gentoo
else
if [ -n "$_optchroot2" ]; then
build-gentoo-chroot2
elif [ -n "$_optchroot" ]; then
build-gentoo-chroot
else
build-gentoo
fi
exit 0
}