#!/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