1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
#! /bin/sh
# Set a default boot entry for GRUB
# Copyright (C) 2004 Free Software Foundation, Inc.
#
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# Initialize some variables.
PACKAGE=grub-legacy-ec2
VERSION=0.97-29ubuntu60
rootdir=
entry=
# Usage: usage
# Print the usage.
usage () {
cat <<EOF
Usage: grub-set-default [OPTION] entry
Set the default boot entry for GRUB.
-h, --help print this message and exit
-v, --version print the version information and exit
--root-directory=DIR Use the directory DIR instead of the root directory
ENTRY is a number or the special keyword \`default\'.
Report bugs to <bug-grub@gnu.org>.
EOF
}
# Check the arguments.
for option in "$@"; do
case "$option" in
-h | --help)
usage
exit 0 ;;
-v | --version)
echo "grub-set-default (GNU GRUB ${VERSION})"
exit 0 ;;
--root-directory=*)
rootdir=`echo "$option" | sed 's/--root-directory=//'` ;;
-*)
echo "Unrecognized option \`$option'" 1>&2
usage
exit 1
;;
*)
if test "x$entry" != x; then
echo "More than one entries?" 1>&2
usage
exit 1
fi
# We don't care about what the user specified actually.
entry="${option}" ;;
esac
done
if test "x$entry" = x; then
echo "entry not specified." 1>&2
usage
exit 1
fi
find_grub_dir ()
{
echo -n "Searching for GRUB installation directory ... " >&2
for d in $grub_dirs ; do
if [ -d "$d" ] ; then
grub_dir="$d"
break
fi
done
if [ -z "$grub_dir" ] ; then
abort "No GRUB directory found.\n###"
else
echo "found: $grub_dir" >&2
fi
echo $grub_dir
}
grub_dirs="/boot/grub /boot/boot/grub"
# Determine the GRUB directory. This is different among OSes.
# if rootdir has been informed use it or find grubdir otherwise
if [ -n "${rootdir}" ]; then
grubdir=${rootdir}/boot/grub
if test -d ${grubdir}; then
:
else
grubdir=${rootdir}/grub
if test -d ${grubdir}; then
:
else
echo "No GRUB directory found under ${rootdir}/" 1>&2
exit 1
fi
fi
else
grubdir=$(find_grub_dir)
fi
file=${grubdir}/default
if test -f ${file}; then
chmod 0600 ${file}
rm -f ${file}
fi
cat <<EOF > $file
$entry
#
#
#
#
#
#
#
#
#
#
# WARNING: If you want to edit this file directly, do not remove any line
# from this file, including this warning. Using \`grub-set-default\' is
# strongly recommended.
EOF
# Bye.
exit 0
|