blob: 4a6a0d1f2f531ad3cd6b554b4ae276225d7145cc (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
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 '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
|