#!/bin/sh version= default=0 timeout=5 verbose=0 conf=/boot/grub/menu.lst myconf=/etc/update-extlinux.conf # read in extlinux settings if [ -f "$myconf" ]; then . $myconf fi everbose() { if [ "$verbose" = "0" ]; then return fi echo $* } ewarn() { echo "WARNING:" $@ >&2 } eerror() { echo "ERROR:" $@ >&2 return 1 } everbose "Updating extlinux configuration." if [ "x$root" = "x" ]; then ewarn "Root device is not specified in $myconf." blkid_export=$(blkid -o export /dev/root) if [ -n "$blkid_export" ]; then export $blkid_export fi if [ -z "$UUID" ]; then # try parse /proc/mount for mounted / dev=$(awk '$2 == "/" {dev=$1} END {print dev}' /proc/mounts) if [ -n "$dev" ]; then blkid_export=$(blkid -o export $dev) if [ -n "$blkid_export" ]; then export "$blkid_export" fi fi fi if [ -z "$UUID" ]; then if [ -z "$dev" ]; then eerror "Failed to detect root device" exit 1 else root=$dev fi else root=UUID=$UUID fi everbose "Root device is: $root" fi menu_hidden= umask 0022 rm -f $conf.new echo "# Generated by update-pvgrub $version" > $conf.new echo "default 0" >> $conf.new if [ "$hidden" = "1" ]; then echo "hiddenmenu" >> $conf.new fi echo "timeout $rtimeout" >> $conf.new lst=0 for kernel in $(find /boot -name "vmlinuz-*" -type f); do tag=$(basename $kernel | cut -b9-) everbose "Found kernel: $kernel" label=$(grep -w -l $tag /usr/share/kernel/*/kernel.release | cut -d/ -f5) if [ -z "$label" ]; then label=$lst fi echo "title Linux $tag" >> $conf.new echo "root (hd0)" >> $conf.new echo "kernel /boot/$(basename $kernel) root=$root modules=${modules}${TYPE:+,$TYPE} $default_kernel_opts" >> $conf.new if [ -f "/boot/initramfs-$tag" ]; then everbose "Found initramfs: /boot/initramfs-$tag" echo "initrd /boot/initramfs-$tag" >> $conf.new fi echo "" >> $conf.new lst=$(($lst + 1)) done if [ -n "$password" ]; then echo "password --md5 $password" >> $conf.new echo "" >> $conf.new chmod o-r $conf.new fi everbose "$lst entries found." if cmp -s $conf.new $conf; then everbose "Configuration unchanged." rm $conf.new fi if [ "$overwrite" != "1" ]; then exit 0 elif [ -f "$conf.new" ]; then # keep a backup just in case if [ -f "$conf" ]; then mv $conf $conf.old fi mv $conf.new $conf fi