]> git.proxmox.com Git - grub2.git/blame - debian/build-efi-images
merge patched into master
[grub2.git] / debian / build-efi-images
CommitLineData
fa6c7410
CW
1#! /bin/sh
2set -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
4144b27f
CW
23if [ $# -lt 7 ]; then
24 echo "usage: $0 GRUB-MKIMAGE GRUB-CORE OUTPUT-DIRECTORY DEB-ARCH PLATFORM EFI-NAME SBAT-CSV [EFI-VENDOR]"
fa6c7410
CW
25fi
26
27grub_mkimage="$1"
28grub_core="$2"
29outdir="$3"
e8bc4a23
SM
30deb_arch="$4"
31platform="$5"
32efi_name="$6"
4144b27f
CW
33sbat_csv="$7"
34efi_vendor="${8:-$(dpkg-vendor --query vendor | tr '[:upper:]' '[:lower:]')}"
fa6c7410 35
12848774
CW
36# mkfs.msdos may not be on the default PATH.
37export PATH="$PATH:/sbin:/usr/sbin"
38
fa6c7410
CW
39workdir=
40
41cleanup () {
42 [ -z "$workdir" ] || rm -rf "$workdir"
43}
44trap cleanup EXIT HUP INT QUIT TERM
45
46rm -rf "$outdir"
47mkdir -p "$outdir"
48
49workdir="$(mktemp -d build-efi-images.XXXXXX)"
50
51# GRUB's rescue parser doesn't understand 'if'.
52echo 'normal (memdisk)/grub.cfg' >"$workdir/grub-bootstrap.cfg"
53
54# Skeleton configuration file which finds the real boot disk.
55cat >"$workdir/grub.cfg" <<EOF
81ad9ef0
CW
56if [ -z "\$prefix" -o ! -e "\$prefix" ]; then
57 if ! search --file --set=root /.disk/info; then
58 search --file --set=root /.disk/mini-info
59 fi
60 set prefix=(\$root)/boot/grub
fa6c7410 61fi
fa6c7410
CW
62if [ -e \$prefix/$platform/grub.cfg ]; then
63 source \$prefix/$platform/grub.cfg
bde7427b 64elif [ -e \$prefix/grub.cfg ]; then
fa6c7410 65 source \$prefix/grub.cfg
bde7427b
MTL
66else
67 source \$cmdpath/grub.cfg
fa6c7410
CW
68fi
69EOF
70
ca3f5ead
CW
71cat >"$workdir/grub-netboot.cfg" <<EOF
72if [ -e \$prefix/$platform/grub.cfg ]; then
73 source \$prefix/$platform/grub.cfg
74else
75 source \$prefix/grub.cfg
76fi
77EOF
78
fa6c7410
CW
79mkfs.msdos -C "$workdir/memdisk.fat" 64
80mcopy -i "$workdir/memdisk.fat" "$workdir/grub.cfg" ::grub.cfg
81
ca3f5ead
CW
82mkfs.msdos -C "$workdir/memdisk-netboot.fat" 64
83mcopy -i "$workdir/memdisk-netboot.fat" "$workdir/grub-netboot.cfg" ::grub.cfg
84
fa6c7410 85CD_MODULES="
e7609323
CW
86 all_video
87 boot
88 btrfs
89 cat
90 chain
91 configfile
92 echo
93 efifwsetup
94 efinet
95 ext2
96 fat
97 font
146d21cc 98 f2fs
e7609323
CW
99 gettext
100 gfxmenu
101 gfxterm
9af7fea1 102 gfxterm_background
e7609323
CW
103 gzio
104 halt
39245563 105 help
e7609323
CW
106 hfsplus
107 iso9660
e24c17ad 108 jfs
e7609323
CW
109 jpeg
110 keystatus
111 loadenv
eb5a1b16 112 loopback
e7609323 113 linux
39245563 114 ls
e7609323
CW
115 lsefi
116 lsefimmap
117 lsefisystab
118 lssal
119 memdisk
120 minicmd
121 normal
f17c7dc0 122 ntfs
e7609323
CW
123 part_apple
124 part_msdos
125 part_gpt
126 password_pbkdf2
127 png
6c26522e 128 probe
e7609323 129 reboot
07481aa3 130 regexp
e7609323
CW
131 search
132 search_fs_uuid
133 search_fs_file
134 search_label
135 sleep
eb5a1b16 136 squash4
e7609323 137 test
07231bba 138 true
e7609323 139 video
01f1eee9 140 xfs
a293f3b3
CW
141 zfs
142 zfscrypt
143 zfsinfo
e7609323 144 "
84d36c11 145
146# Platform-specific modules
147case $platform in
bd2c77be 148 x86_64-efi|i386-efi)
84d36c11 149 CD_MODULES="$CD_MODULES
f17c7dc0 150 cpuid
84d36c11 151 linuxefi
f17c7dc0 152 play
49fe0485
CW
153 tpm
154 "
155 ;;
156esac
84d36c11 157
e7609323 158GRUB_MODULES="$CD_MODULES
7f8df903
CW
159 cryptodisk
160 gcry_arcfour
161 gcry_blowfish
162 gcry_camellia
163 gcry_cast5
164 gcry_crc
165 gcry_des
166 gcry_dsa
167 gcry_idea
168 gcry_md4
169 gcry_md5
170 gcry_rfc2268
171 gcry_rijndael
172 gcry_rmd160
173 gcry_rsa
174 gcry_seed
175 gcry_serpent
176 gcry_sha1
177 gcry_sha256
178 gcry_sha512
179 gcry_tiger
180 gcry_twofish
181 gcry_whirlpool
4133b434 182 luks
e7609323
CW
183 lvm
184 mdraid09
185 mdraid1x
9b00f9af
LT
186 raid5rec
187 raid6rec
e7609323
CW
188 "
189NET_MODULES="$CD_MODULES
190 tftp
191 "
fa6c7410 192
e8bc4a23 193# CD boot image
0f1841a0 194echo "Including modules $CD_MODULES in $outdir/gcd$efi_name.efi"
fa6c7410 195"$grub_mkimage" -O "$platform" -o "$outdir/gcd$efi_name.efi" \
81ad9ef0 196 -d "$grub_core" \
fa6c7410 197 -c "$workdir/grub-bootstrap.cfg" -m "$workdir/memdisk.fat" \
81ad9ef0 198 -p /boot/grub \
4144b27f 199 --sbat "$sbat_csv" \
fa6c7410 200 $CD_MODULES
e8bc4a23
SM
201
202# Normal disk boot image
0f1841a0 203echo "Including modules $GRUB_MODULES in $outdir/grub$efi_name.efi"
fa6c7410 204"$grub_mkimage" -O "$platform" -o "$outdir/grub$efi_name.efi" \
4144b27f
CW
205 -d "$grub_core" -p "/EFI/$efi_vendor" \
206 --sbat "$sbat_csv" \
207 $GRUB_MODULES
e8bc4a23
SM
208
209# Normal network boot image
0f1841a0 210echo "Including modules $NET_MODULES in $outdir/grubnet$efi_name.efi"
ca3f5ead
CW
211"$grub_mkimage" -O "$platform" -o "$outdir/grubnet$efi_name.efi" \
212 -d "$grub_core" -c "$workdir/grub-bootstrap.cfg" \
e8bc4a23 213 -m "$workdir/memdisk-netboot.fat" \
4144b27f
CW
214 -p /grub \
215 --sbat "$sbat_csv" \
216 $NET_MODULES
e8bc4a23
SM
217
218# Special network boot image for d-i to use. Just the same as the
219# normal network boot image, but with a different value baked in for
220# the prefix setting
0f1841a0 221echo "Including modules $NET_MODULES in $outdir/grubnet$efi_name-installer.efi"
e8bc4a23
SM
222"$grub_mkimage" -O "$platform" -o "$outdir/grubnet$efi_name-installer.efi" \
223 -d "$grub_core" -c "$workdir/grub-bootstrap.cfg" \
224 -m "$workdir/memdisk-netboot.fat" \
4b9590ca
CW
225 -p "/${efi_vendor}-installer/$deb_arch/grub" \
226 --sbat "$sbat_csv" \
227 $NET_MODULES
fa6c7410
CW
228
229exit 0