]> git.proxmox.com Git - grub2.git/blob - debian/build-efi-images
New upstream beta release (2.02~beta3).
[grub2.git] / debian / build-efi-images
1 #! /bin/sh
2 set -e
3
4 # Copyright (C) 2010, 2011, 2012 Canonical Ltd.
5 # Author: Colin Watson <cjwatson@ubuntu.com>
6 #
7 # This program is free software; you can redistribute it and/or modify it
8 # under the terms of the GNU General Public License as published by the Free
9 # Software Foundation; either version 2, or (at your option) any later
10 # version.
11 #
12 # This program is distributed in the hope that it will be useful, but
13 # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15 # for more details.
16 #
17 # You should have received a copy of the GNU General Public License along
18 # with this program; if not, write to the Free Software Foundation, Inc.,
19 # 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
20
21 # Make EFI boot images for signing.
22
23 if [ $# -lt 5 ]; then
24 echo "usage: $0 GRUB-MKIMAGE GRUB-CORE OUTPUT-DIRECTORY PLATFORM EFI-NAME"
25 fi
26
27 grub_mkimage="$1"
28 grub_core="$2"
29 outdir="$3"
30 platform="$4"
31 efi_name="$5"
32
33 workdir=
34
35 cleanup () {
36 [ -z "$workdir" ] || rm -rf "$workdir"
37 }
38 trap cleanup EXIT HUP INT QUIT TERM
39
40 rm -rf "$outdir"
41 mkdir -p "$outdir"
42
43 workdir="$(mktemp -d build-efi-images.XXXXXX)"
44
45 # GRUB's rescue parser doesn't understand 'if'.
46 echo 'normal (memdisk)/grub.cfg' >"$workdir/grub-bootstrap.cfg"
47
48 # Skeleton configuration file which finds the real boot disk.
49 cat >"$workdir/grub.cfg" <<EOF
50 if [ -z "\$prefix" -o ! -e "\$prefix" ]; then
51 if ! search --file --set=root /.disk/info; then
52 search --file --set=root /.disk/mini-info
53 fi
54 set prefix=(\$root)/boot/grub
55 fi
56 if [ -e \$prefix/$platform/grub.cfg ]; then
57 source \$prefix/$platform/grub.cfg
58 elif [ -e \$prefix/grub.cfg ]; then
59 source \$prefix/grub.cfg
60 else
61 source \$cmdpath/grub.cfg
62 fi
63 EOF
64
65 cat >"$workdir/grub-netboot.cfg" <<EOF
66 if [ -e \$prefix/$platform/grub.cfg ]; then
67 source \$prefix/$platform/grub.cfg
68 else
69 source \$prefix/grub.cfg
70 fi
71 EOF
72
73 mkfs.msdos -C "$workdir/memdisk.fat" 64
74 mcopy -i "$workdir/memdisk.fat" "$workdir/grub.cfg" ::grub.cfg
75
76 mkfs.msdos -C "$workdir/memdisk-netboot.fat" 64
77 mcopy -i "$workdir/memdisk-netboot.fat" "$workdir/grub-netboot.cfg" ::grub.cfg
78
79 CD_MODULES="
80 all_video
81 boot
82 btrfs
83 cat
84 chain
85 configfile
86 echo
87 efifwsetup
88 efinet
89 ext2
90 fat
91 font
92 gettext
93 gfxmenu
94 gfxterm
95 gfxterm_background
96 gzio
97 halt
98 hfsplus
99 iso9660
100 jpeg
101 keystatus
102 loadenv
103 linux
104 lsefi
105 lsefimmap
106 lsefisystab
107 lssal
108 memdisk
109 minicmd
110 normal
111 part_apple
112 part_msdos
113 part_gpt
114 password_pbkdf2
115 png
116 reboot
117 search
118 search_fs_uuid
119 search_fs_file
120 search_label
121 sleep
122 test
123 true
124 video
125 zfs
126 zfscrypt
127 zfsinfo
128 "
129
130 # Platform-specific modules
131 case $platform in
132 x86_64-efi)
133 CD_MODULES="$CD_MODULES
134 linuxefi
135 "
136 ;;
137 esac
138
139 GRUB_MODULES="$CD_MODULES
140 lvm
141 mdraid09
142 mdraid1x
143 raid5rec
144 raid6rec
145 "
146 NET_MODULES="$CD_MODULES
147 tftp
148 "
149
150 "$grub_mkimage" -O "$platform" -o "$outdir/gcd$efi_name.efi" \
151 -d "$grub_core" \
152 -c "$workdir/grub-bootstrap.cfg" -m "$workdir/memdisk.fat" \
153 -p /boot/grub \
154 $CD_MODULES
155 "$grub_mkimage" -O "$platform" -o "$outdir/grub$efi_name.efi" \
156 -d "$grub_core" -p /EFI/ubuntu $GRUB_MODULES
157 "$grub_mkimage" -O "$platform" -o "$outdir/grubnet$efi_name.efi" \
158 -d "$grub_core" -c "$workdir/grub-bootstrap.cfg" \
159 -m "$workdir/memdisk-netboot.fat" -p /grub $NET_MODULES
160
161 exit 0