]>
git.proxmox.com Git - grub2.git/blob - util/grub.d/10_hurd.in
4 # grub-mkconfig helper script.
5 # Copyright (C) 2006,2007,2008,2009,2010 Free Software Foundation, Inc.
7 # GRUB is free software: you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation, either version 3 of the License, or
10 # (at your option) any later version.
12 # GRUB is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License for more details.
17 # You should have received a copy of the GNU General Public License
18 # along with GRUB. If not, see <http://www.gnu.org/licenses/>.
21 exec_prefix
= "@exec_prefix@"
22 datarootdir
= "@datarootdir@"
24 export TEXTDOMAIN
= @PACKAGE@
25 export TEXTDOMAINDIR
= "@localedir@"
27 .
"@datadir@/@PACKAGE@/grub-mkconfig_lib"
29 CLASS
= "--class gnu --class os"
31 if [ "x ${GRUB_DISTRIBUTOR} " = "x" ] ; then
34 OS
= " ${GRUB_DISTRIBUTOR} GNU/Hurd"
35 CLASS
= "--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1|LC_ALL=C sed 's,[^[:alnum:]_],_,g') ${CLASS} "
43 for i
in / boot
/ gnumach
* ; do
45 basename = `basename $i `
47 rel_dirname
= `make_system_path_relative_to_its_root $dirname `
48 gettext_printf
"Found GNU Mach: %s" " $i " >& 2
50 kernels
= " ${kernels} ${rel_dirname}/${basename} "
55 # FIXME: This works for ext2. For other filesystems we might need special-casing
57 * fs
) hurd_fs
= " ${GRUB_FS} " ;;
58 *) hurd_fs
= " ${GRUB_FS} fs" ;;
61 for i
in / hurd
/ ${hurd_fs} .static
/ hurd
/ exec ; do
62 if test -e " $i " ; then
63 gettext_printf
"Found Hurd module: %s" " $i " >& 2
71 if ${at_least_one} ; then : ; else
72 # no hurd here, aborting silently
76 if ${all_of_them} && test -e / lib
/ ld.so
.1 ; then : ; else
77 gettext "Some Hurd stuff found, but not enough to boot." >& 2
82 title_correction_code
=
87 kernel_base
= "`basename " ${kernel} "`"
89 if [ x
$type != xsimple
] ; then
90 if [ x
$type = xrecovery
] ; then
91 title
= "$(gettext_printf " % s
, with Hurd
% s
(% s
) " " ${OS}" "${kernel_base}" "$(gettext "${GRUB_RECOVERY_TITLE} ")" ) "
92 oldtitle=" $OS using
$kernel_base ( $GRUB_RECOVERY_TITLE ) "
94 title=" $
( gettext_printf
"%s, with Hurd %s" " ${OS} " " ${kernel_base} " ) "
95 oldtitle=" $OS using
$kernel_base "
97 if [ x" $oldtitle " = x" $GRUB_ACTUAL_DEFAULT " ]; then
98 quoted=" $
( echo " $GRUB_ACTUAL_DEFAULT " | grub_quote
) "
99 title_correction_code=" ${title_correction_code} if [ \" x\
$default \" = ' $quoted ' ]; then default
= '$(echo " $replacement_title " | grub_quote)' ; fi ; "
100 grub_warn " $
( gettext_printf
"Please don't use old title \`%s' for GRUB_DEFAULT, use \`%s' (for versions before 2.00) or \`%s' (for 2.00 or later)" " $GRUB_ACTUAL_DEFAULT " " $replacement_title " "gnuhurd-advanced- $boot_device_id >'gnuhurd- $kernel - $type -$(grub_get_device_id " ${GRUB_DEVICE_BOOT} ")'" ) "
102 sed " s
/ ^
/ $submenu_indentation / " << EOF
103 menuentry '$(echo " $title " | grub_quote)' ${CLASS} \ $menuentry_id_option 'gnuhurd- $kernel - $type -$(grub_get_device_id " ${GRUB_DEVICE_BOOT} ")' {
106 sed " s
/ ^
/ $submenu_indentation / " << EOF
107 menuentry '$(echo " $OS " | grub_quote)' ${CLASS} \ $menuentry_id_option 'gnuhurd-simple-$(grub_get_device_id " ${GRUB_DEVICE_BOOT} ")' {
111 prepare_grub_to_access_device " ${GRUB_DEVICE_BOOT} " | grub_add_tab|sed " s
/ ^
/ $submenu_indentation / "
112 message=" $
( gettext_printf
"Loading GNU Mach ..." ) "
114 if [ x $type = xrecovery ] ; then
119 sed " s
/ ^
/ $submenu_indentation / " << EOF
120 echo '$(echo " $message " | grub_quote)'
121 multiboot ${kernel} root=device:${GRUB_DEVICE#/dev/} $opts ${GRUB_CMDLINE_GNUMACH}
124 if [ x $type != xrecovery ] ; then
125 save_default_entry | grub_add_tab| sed " s
/ ^
/ $submenu_indentation / "
127 prepare_grub_to_access_device " ${GRUB_DEVICE} " | grub_add_tab| sed " s
/ ^
/ $submenu_indentation / "
128 message=" $
( gettext_printf
"Loading the Hurd ..." ) "
129 if [ x $type = xrecovery ] ; then
135 sed " s
/ ^
/ $submenu_indentation / " << EOF
136 echo '$(echo " $message " | grub_quote)'
137 module /hurd/ ${hurd_fs} .static ${hurd_fs} $opts \\
138 --multiboot-command-line='\ ${kernel-command-line} ' \\
139 --host-priv-port='\ ${host-port} ' \\
140 --device-master-port='\ ${device-port} ' \\
141 --exec-server-task='\ ${exec-task} ' -T typed '\ ${root} ' \\
142 '\$(task-create)' '\$(task-resume)'
143 module /lib/ld.so.1 exec /hurd/exec '\$(exec-task=task-create)'
149 title_correction_code=
151 # Extra indentation to add to menu entries in a submenu. We're not in a submenu
152 # yet, so it's empty. In a submenu it will be equal to ' \t ' (one tab).
153 submenu_indentation=" "
156 while [ " x
$kernels " != " x
" ] ; do
157 kernel=`version_find_latest $kernels `
159 if [ " x
$is_top_level " = xtrue ] && [ " x
${GRUB_DISABLE_SUBMENU} " != xy ]; then
160 hurd_entry " $kernel " simple
161 submenu_indentation=" $grub_tab "
163 # TRANSLATORS: %s is replaced with an OS name
164 echo " submenu
'$(gettext_printf "Advanced options for %s" " ${OS} " | grub_quote)' \
$menuentry_id_option 'gnuhurd-advanced-$(grub_get_device_id " ${GRUB_DEVICE_BOOT} ")' { "
168 hurd_entry " $kernel " advanced
169 hurd_entry " $kernel " recovery
171 kernels=`echo $kernels | tr ' ' ' \n ' | grep -vx $kernel | tr ' \n ' ' '`
174 # If at least one kernel was found, then we need to
175 # add a closing '}' for the submenu command.
176 if [ x" $is_top_level " != xtrue ]; then
180 echo " $title_correction_code "