various fixes
[automated-distro-installer] / fai / config / distro-install-common / libreboot_grub.cfg
1 #!/bin/sh
2 # shebang is for editor file mode detection only
3
4 function save_vars {
5 if [ -s $envfile ]; then
6 for var in $@; do
7 save_env --file $envfile $var
8 done
9 fi
10 }
11
12 function save_chosen {
13 save_vars did_fai_check last_boot
14 }
15
16 # we don't set this to fai check so we can't get into
17 # an infinite reboot cycle. We depend on the os to
18 # create the initial grubenv file.
19 set default=/debianstable_bootstrap # could use 0 here.
20 set timeout=1
21
22 for part in (ahci*4) (ata*4); do
23 envfile=$part/grubenv
24 if [ -s $envfile ]; then
25 load_env --file $envfile
26 if [ x$did_fai_check != xtrue -a x$last_boot != x$default ]; then
27 set default=fai-check
28 elif [ ! -z $last_boot ]; then
29 set default=$last_boot
30 fi
31 break
32 fi
33 done
34
35 did_fai_check=false
36
37 bs_dir=/debianstable_bootstrap
38 menuentry $bs_dir --id=$bs_dir {
39 # note, we might be able to use $chosen and avoid setting this here,
40 # and set it inside save_chosen. but I haven't tested it,
41 # it's just one less line of repitition.
42 last_boot=$1
43 save_chosen
44 configfile $bs_dir/boot/grub/grub.cfg
45 }
46
47 for dir in /boot_*; do
48 if [ $dir == '/boot_*' ]; then
49 break
50 fi
51 menuentry $dir --id=$dir {
52 last_boot=$1
53 save_chosen
54 configfile $1/grub/grub.cfg
55 }
56 done
57
58 menuentry fai-check --id=fai-check {
59 did_fai_check=true
60 save_vars did_fai_check
61 configfile $bs_dir/boot/grub/grub.cfg
62 }