62 lines
1.5 KiB
Bash
62 lines
1.5 KiB
Bash
#!/bin/sh
|
|
|
|
# find given append opt
|
|
get_append_opt() {
|
|
awk -v search="$1" '
|
|
$1 == "append" || $1 == "APPEND" {
|
|
split($0, a);
|
|
for (i in a) {
|
|
if (index(a[i], search) == 1) {
|
|
print a[i];
|
|
}
|
|
}
|
|
}' /boot/extlinux.conf | sort | uniq
|
|
}
|
|
|
|
# print default kernel options
|
|
get_default_opts() {
|
|
awk '
|
|
$1 == "append" || $1 == "APPEND" {
|
|
opts="";
|
|
space="";
|
|
split($0, a);
|
|
for (i in a) {
|
|
if (i != 1 \
|
|
&& (index(a[i], "root=") != 1) \
|
|
&& (index(a[i], "initrd=") != 1) \
|
|
&& (index(a[i], "modules=") != 1)) {
|
|
opts = opts space a[i];
|
|
space = " ";
|
|
}
|
|
}
|
|
print opts;
|
|
}
|
|
' /boot/extlinux.conf | sort | uniq
|
|
}
|
|
|
|
if ! [ -f /boot/extlinux.conf ]; then
|
|
exit 0
|
|
fi
|
|
|
|
# check if we already have a generated extlinux.conf
|
|
if grep -q '^# Generated by update-extlinux' /boot/extlinux.conf; then
|
|
exit 0
|
|
fi
|
|
|
|
# try fish out the kernel opts from extlinuix.conf's append line
|
|
root=$(get_append_opt 'root=' | head -n 1)
|
|
modules=$(get_append_opt 'modules=' | head -n 1)
|
|
opts=$(get_default_opts | head -n 1)
|
|
|
|
# populate update-extlinux.conf with the info we know
|
|
if [ -n "$root" ]; then
|
|
sed -i -e "/^root=/s|.*|$root|g" /etc/update-extlinux.conf
|
|
fi
|
|
if [ -n "$modules" ]; then
|
|
sed -i -e "/^modules=/s|.*|$modules|g" /etc/update-extlinux.conf
|
|
fi
|
|
if [ -n "$opts" ]; then
|
|
sed -i -e "/^default_kernel_opts=/s|.*|default_kernel_opts=\"$opts\"|g" /etc/update-extlinux.conf
|
|
fi
|
|
|