Skip to content

Commit c458559

Browse files
authored
Merge pull request #7 from syself/tg/installimage--update-vendored-code
🌱 Update our code, merge upstream master.
2 parents e909670 + 09e14a8 commit c458559

10 files changed

+380
-432
lines changed

LICENSE

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Copyright (c) 2007-2021, Hetzner Online GmbH
1+
Copyright (c) 2007-2024, Hetzner Online GmbH
22

33
The scripts were written by developers of Hetzner Online GmbH and are
44
maintained and extended by them. The scripts are written in bash and are
@@ -18,3 +18,4 @@ and extended by:
1818
Contributions by external developers:
1919
* Thore Bödecker
2020
* Tim Meusel
21+

almalinux.sh

+78-93
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,46 @@
11
#!/bin/bash
2-
32
#
43
# AlmaLinux specific functions
54
#
65
# (c) 2021, Hetzner Online GmbH
76
#
87

9-
108
# generate_config_mdadm "NIL"
119
generate_config_mdadm() {
12-
if [ -n "$1" ]; then
13-
local mdadmconf="/etc/mdadm.conf"
14-
{
15-
echo "DEVICE partitions"
16-
echo "MAILADDR root"
17-
} > "$FOLD/hdd$mdadmconf"
18-
execute_chroot_command "mdadm --examine --scan >> $mdadmconf"; declare -i EXITCODE=$?
19-
return $EXITCODE
20-
fi
10+
[[ -z "$1" ]] && return 0
11+
12+
local mdadmconf='/etc/mdadm.conf'
13+
{
14+
echo 'DEVICE partitions'
15+
echo 'MAILADDR root'
16+
} > "${FOLD}/hdd${mdadmconf}"
17+
18+
execute_chroot_command "mdadm --examine --scan >> ${mdadmconf}"
19+
return $?
2120
}
2221

2322
# generate_new_ramdisk "NIL"
2423
generate_new_ramdisk() {
25-
if [ -n "$1" ]; then
26-
27-
# pick the latest kernel
28-
VERSION="$(find "$FOLD/hdd/boot/" -name "vmlinuz-*" | cut -d '-' -f 2- | sort -V | tail -1)"
29-
30-
blacklist_unwanted_and_buggy_kernel_modules
31-
configure_kernel_modules
32-
33-
local dracutfile="$FOLD/hdd/etc/dracut.conf.d/99-$C_SHORT.conf"
34-
{
35-
echo "### $COMPANY - installimage"
36-
echo 'add_dracutmodules+=" lvm mdraid "'
37-
echo 'add_drivers+=" raid0 raid1 raid10 raid456 "'
38-
#echo 'early_microcode="no"'
39-
echo 'hostonly="no"'
40-
echo 'hostonly_cmdline="no"'
41-
echo 'lvmconf="yes"'
42-
echo 'mdadmconf="yes"'
43-
echo 'persistent_policy="by-uuid"'
44-
} > "$dracutfile"
45-
46-
execute_chroot_command "dracut -f --kver $VERSION"
47-
declare -i EXITCODE=$?
48-
return "$EXITCODE"
49-
fi
24+
[[ -z "$1" ]] && return 0
25+
26+
blacklist_unwanted_and_buggy_kernel_modules
27+
configure_kernel_modules
28+
29+
local dracutfile="${FOLD}/hdd/etc/dracut.conf.d/99-${C_SHORT}.conf"
30+
cat << EOF > "$dracutfile"
31+
### ${COMPANY} - installimage
32+
add_dracutmodules+=" lvm mdraid "
33+
add_drivers+=" raid0 raid1 raid10 raid456 "
34+
hostonly="no"
35+
hostonly_cmdline="no"
36+
lvmconf="yes"
37+
mdadmconf="yes"
38+
persistent_policy="by-uuid"
39+
EOF
40+
41+
# generate initramfs for the latest kernel
42+
execute_chroot_command "dracut -f --kver $(find "${FOLD}/hdd/boot/" -name 'vmlinuz-*' | cut -d '-' -f 2- | sort -V | tail -1)"
43+
return $?
5044
}
5145

5246
#
@@ -55,91 +49,82 @@ generate_new_ramdisk() {
5549
# Generate the GRUB bootloader configuration.
5650
#
5751
generate_config_grub() {
58-
[ -n "$1" ] || return
59-
# we should not have to do anything, as grubby (new-kernel-pkg) should have
60-
# already generated a grub.conf
61-
# even though grub2-mkconfig will generate a device.map on the fly, the
62-
# anaconda installer still creates this
63-
DMAPFILE="$FOLD/hdd/boot/grub2/device.map"
64-
[ -f "$DMAPFILE" ] && rm "$DMAPFILE"
65-
66-
local -i i=0
67-
for ((i=1; i<=COUNT_DRIVES; i++)); do
68-
local j; j="$((i - 1))"
69-
local disk; disk="$(eval echo "\$DRIVE$i")"
70-
echo "(hd$j) $disk" >> "$DMAPFILE"
71-
done
72-
debug '# device map:'
73-
cat "$DMAPFILE" | debugoutput
74-
75-
local elevator=''
76-
if is_virtual_machine; then
77-
elevator='elevator=noop'
52+
local grubdefconf="${FOLD}/hdd/etc/default/grub"
53+
local exitcode
54+
local grub_cmdline_linux='biosdevname=0 rd.auto=1 consoleblank=0'
55+
56+
# rebuild device map
57+
rm -f "${FOLD}/hdd/boot/grub2/device.map"
58+
build_device_map 'grub2'
59+
60+
if [[ "$IMG_VERSION" -gt 93 ]] && [[ "$IMG_VERSION" -lt 810 ]]; then
61+
grub_cmdline_linux+=' crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M'
62+
else
63+
grub_cmdline_linux+=' crashkernel=auto'
7864
fi
7965

80-
local grub_cmdline_linux='biosdevname=0 crashkernel=auto'
81-
is_virtual_machine && grub_cmdline_linux+=' elevator=noop'
82-
(( USE_KERNEL_MODE_SETTING == 0 )) && grub_linux_default+=' nomodeset'
83-
grub_cmdline_linux+=' rd.auto=1 consoleblank=0'
66+
# nomodeset can help avoid issues with some GPUs.
67+
if ((USE_KERNEL_MODE_SETTING == 0)); then
68+
grub_cmdline_linux+=' nomodeset'
69+
fi
8470

71+
# 'noop' scheduler is used in VMs to reduce overhead.
72+
if is_virtual_machine; then
73+
grub_cmdline_linux+=' elevator=noop'
74+
fi
75+
76+
# disable memory-mapped PCI configuration
8577
if has_threadripper_cpu; then
8678
grub_cmdline_linux+=' pci=nommconf'
8779
fi
8880

89-
if [ "$SYSARCH" == "arm64" ]; then
81+
if [[ "$SYSARCH" == "arm64" ]]; then
9082
grub_cmdline_linux+=' console=ttyAMA0 console=tty0'
9183
fi
9284

93-
sed -i "s/GRUB_CMDLINE_LINUX=.*/GRUB_CMDLINE_LINUX=\"$grub_cmdline_linux\"/" "$FOLD/hdd/etc/default/grub"
94-
95-
if ((IMG_VERSION > 85)) && ((IMG_VERSION <= 92)) && [[ -z "$GRUB_DEFAULT_OVERRIDE" ]]; then
96-
GRUB_DEFAULT_OVERRIDE='saved'
97-
fi
85+
sed -i "s/GRUB_CMDLINE_LINUX=.*/GRUB_CMDLINE_LINUX=\"${grub_cmdline_linux}\"/" "$grubdefconf"
9886

99-
if [[ -n "$GRUB_DEFAULT_OVERRIDE" ]]; then sed -i "s/^GRUB_DEFAULT=.*/GRUB_DEFAULT=$GRUB_DEFAULT_OVERRIDE/" "$FOLD/hdd/etc/default/grub"; fi
87+
# set $GRUB_DEFAULT_OVERRIDE to specify custom GRUB_DEFAULT Value ( https://www.gnu.org/software/grub/manual/grub/grub.html#Simple-configuration )
88+
[[ -n "$GRUB_DEFAULT_OVERRIDE" ]] && sed -i "s/^GRUB_DEFAULT=.*/GRUB_DEFAULT=${GRUB_DEFAULT_OVERRIDE}/" "$grubdefconf"
10089

101-
rm -f "$FOLD/hdd/boot/grub2/grub.cfg"
102-
if [ "$UEFI" -eq 1 ]; then
103-
execute_chroot_command "grub2-mkconfig -o /boot/efi/EFI/almalinux/grub.cfg 2>&1"; declare -i EXITCODE="$?"
90+
# Generate grub.cfg
91+
if [[ "$IMG_VERSION" -gt 93 ]] && [[ "$IMG_VERSION" -lt 810 ]]; then
92+
# https://docs.rockylinux.org/en/latest/reference/grub2/grub2-mkconfig/
93+
execute_chroot_command 'grub2-mkconfig -o /boot/grub2/grub.cfg --update-bls-cmdline 2>&1'
10494
else
105-
execute_chroot_command "grub2-mkconfig -o /boot/grub2/grub.cfg 2>&1"; declare -i EXITCODE="$?"
95+
execute_chroot_command 'grub2-mkconfig -o /boot/grub2/grub.cfg 2>&1'
10696
fi
107-
uuid_bugfix
108-
return "$EXITCODE"
97+
exitcode=$?
98+
99+
grub2_uuid_bugfix 'almalinux'
100+
return "$exitcode"
109101
}
110102

103+
111104
write_grub() {
112-
if [ "$UEFI" -eq 1 ]; then
113-
# we must NOT use grub2-install here. This will replace the prebaked
114-
# grubx64.efi (which looks for grub.cfg in ESP) with a new one, which
115-
# looks for in in /boot/grub2 (which may be more difficult to read)
116-
rm -f "$FOLD/hdd/boot/grub2/grubenv"
117-
execute_chroot_command "ln -s /boot/efi/EFI/almalinux/grubenv /boot/grub2/grubenv"
118-
declare -i EXITCODE=$?
105+
local exitcode
106+
if [[ "$UEFI" -eq 1 ]]; then
107+
execute_chroot_command "grub2-install --target=${SYSARCH}-efi --efi-directory=/boot/efi/ --bootloader-id=${IAM} --force --removable --no-nvram 2>&1"
108+
exitcode=$?
119109
else
120-
# only install grub2 in mbr of all other drives if we use swraid
121-
for ((i=1; i<=COUNT_DRIVES; i++)); do
122-
if [ "$SWRAID" -eq 1 ] || [ "$i" -eq 1 ] ; then
123-
local disk; disk="$(eval echo "\$DRIVE"$i)"
124-
execute_chroot_command "grub2-install --no-floppy --recheck $disk 2>&1"
125-
declare -i EXITCODE=$?
110+
# Only install grub2 in MBR of all other drives if we use SWRAID
111+
for ((i = 1; i <= COUNT_DRIVES; i++)); do
112+
if [[ "$SWRAID" -eq 1 || "$i" -eq 1 ]]; then
113+
execute_chroot_command "grub2-install --no-floppy --recheck $(eval echo "\$DRIVE${i}") 2>&1"
114+
exitcode=$?
126115
fi
127116
done
128117
fi
129-
130-
return "$EXITCODE"
118+
return "$exitcode"
131119
}
132120

133-
#
134121
# os specific functions
135-
# for purpose of e.g. debian-sys-maint mysql user password in debian/ubuntu LAMP
136-
#
137122
run_os_specific_functions() {
138123
randomize_mdadm_array_check_time
139124

140125
# selinux autorelabel if enabled
141-
egrep -q "SELINUX=(enforcing|permissive)" "$FOLD/hdd/etc/sysconfig/selinux" &&
142-
touch "$FOLD/hdd/.autorelabel"
126+
grep -Eq 'SELINUX=(enforcing|permissive)' "${FOLD}/hdd/etc/sysconfig/selinux" &&
127+
touch "${FOLD}/hdd/.autorelabel"
143128

144129
return 0
145130
}

0 commit comments

Comments
 (0)