aboutsummaryrefslogtreecommitdiff
path: root/.config/kbuild
diff options
context:
space:
mode:
Diffstat (limited to '.config/kbuild')
-rw-r--r--.config/kbuild/vf2/install.sh78
-rw-r--r--.config/kbuild/vf2/uninstall.sh42
2 files changed, 120 insertions, 0 deletions
diff --git a/.config/kbuild/vf2/install.sh b/.config/kbuild/vf2/install.sh
new file mode 100644
index 0000000..355e5dd
--- /dev/null
+++ b/.config/kbuild/vf2/install.sh
@@ -0,0 +1,78 @@
+#!/usr/bin/env bash
+# Copyright (C) 2025-Ω Miquel Sabaté Solà <mikisabate@gmail.com>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+set -ex
+
+##
+# Ensure you are root and dependencies are met.
+
+if [ "$EUID" -ne 0 ];then
+ echo "kbuild (error): run this as root."
+ exit 1
+fi
+
+if [ ! -f /usr/bin/dracut ]; then
+ echo "kbuild (error): you need either 'dracut'."
+ exit 1
+fi
+
+##
+# Copy files into filesystem and generate initramfs.
+
+# Regular installs.
+cp -rv usr /
+cp -rv boot /
+
+# Some environments like 'update-initramfs' on Ubuntu expect files to be placed
+# under a special directory in /usr/lib/firmware. Pull this trick now.
+mkdir -p /usr/lib/firmware/$name/device-tree/
+cp -rv boot/dtbs/$name/* /usr/lib/firmware/$name/device-tree/
+
+# And run dracut/update-initramfs.
+dracut --kver=$name -f
+
+##
+# Provide hints on how to configure the bootloader.
+
+if [ -z "$EDITOR" ]; then
+ EDITOR=vi
+fi
+
+cat <<EXT >/etc/grub.d/40_custom
+#!/bin/sh
+exec tail -n +3 \$0
+
+###
+### NOTE: generated by kbuild.
+###
+
+menuentry 'openSUSE on Linux $name' --class opensuse --class gnu-linux --class gnu --class os \$menuentry_id_option 'gnulinux-simple-22391c4c-ad76-c05c-84b3-535dc2efaf97' {
+ load_video
+ set gfxpayload=keep
+ insmod gzio
+ insmod part_gpt
+ insmod btrfs
+ search --no-floppy --fs-uuid --set=root 22391c4c-ad76-c05c-84b3-535dc2efaf97
+ echo 'Loading Linux $name ...'
+ linux /boot/vmlinuz-$name root=UUID=22391c4c-ad76-c05c-84b3-535dc2efaf97 \${extra_cmdline} security=selinux selinux=1 loglevel=3 splash=silent systemd.show_status=1
+ echo 'Loading initial ramdisk ...'
+ initrd /boot/initrd-$name
+}
+EXT
+
+# Edit the configuration file we just produced just in case and update it.
+$EDITOR /etc/grub.d/40_custom
+grub2-mkconfig -o /boot/grub2/grub.cfg
diff --git a/.config/kbuild/vf2/uninstall.sh b/.config/kbuild/vf2/uninstall.sh
new file mode 100644
index 0000000..4227b52
--- /dev/null
+++ b/.config/kbuild/vf2/uninstall.sh
@@ -0,0 +1,42 @@
+#!/usr/bin/env bash
+# Copyright (C) 2025-Ω Miquel Sabaté Solà <mikisabate@gmail.com>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+set -ex
+
+if [ "$EUID" -ne 0 ];then
+ echo "kbuild (error): run this as root."
+ exit 1
+fi
+
+if [ ! -f files.txt ]; then
+ echo "kbuild (error): there must be a 'files.txt' file."
+ exit 1
+fi
+
+xargs rm -f < files.txt
+rm -rf /usr/lib/modules/$name
+rm -rf /boot/dtbs/$name
+rm -rf /usr/lib/firmware/$name
+rm -f /boot/initrd-$name
+rm -f /boot/initrd.img-$name
+
+if [ -z "$EDITOR" ]; then
+ EDITOR=vi
+fi
+
+# Edit the configuration file we just produced just in case and update it.
+$EDITOR /etc/grub.d/40_custom
+grub2-mkconfig -o /boot/grub2/grub.cfg