#!/bin/sh if [ "$ramroot" = "" ]; then echo "Use only with ramroot-admin" exit 1 fi default="$1" fallback="$2" fallback_timeout="$3" if [ ! -d "$ramroot/snapshot/$default/boot" ]; then echo "Default snapshot does not exist" exit 1 fi if [ -e /etc/ramroot/boot-info ]; then . /etc/ramroot/boot-info fi entries=`mktemp` idx=0 for i in `cd $ramroot/snapshot && echo *`; do if [ "$i" = "$default" ]; then default_idx=$idx fi if [ "$i" = "$fallback" ]; then fallback_idx=$idx fi title="`cat $ramroot/snapshot/$i/etc/ramroot/grub-title`" echo "title $title" >> $entries extraopts=" ramroot_uuid=$boot_uuid ramroot_snapshot=$i panic=60" if [ "$fallback" != "" -a "$i" = "$default" ]; then extraopts+=" ramroot_watchdog=$fallback_timeout" fi grep -E "^(kernel|initrd)" $ramroot/snapshot/$i/boot/grub/menu.lst\ | head -n 2\ | sed "s@^@ @;s@/boot/@/snapshot/$i/boot/@;s@ root=/dev/hda1 ro @ @"\ | sed "/^ kernel/s@\$@$extraopts@"\ >> $entries if [ "$fallback" != "" -a "$i" = "$default" ]; then echo " savedefault fallback" >> $entries fi echo >> $entries idx="`expr $idx + 1`" done newlst=`mktemp` echo "timeout 10" >> $newlst echo "root (hd0,0)" >> $newlst if [ "$fallback" != "" ]; then echo "default saved" >> $newlst echo "fallback $fallback_idx" >> $newlst else echo "default $default_idx" >> $newlst fi echo >> $newlst cat $entries >> $newlst rm $entries if ! grep initrd $newlst > /dev/null; then echo incomplete menu.lst exit 1 fi if [ "$ramroot_build" = "" ]; then mount -o remount,rw $ramroot fi mv $newlst $ramroot/boot/grub/menu.lst if [ "$fallback" != "" ]; then grub-set-default --root-directory=$ramroot $default_idx fi if [ "$ramroot_build" = "" ]; then mount -o remount,ro $ramroot fi