mirror of
https://github.com/linuxkit/linuxkit.git
synced 2025-09-01 15:08:33 +00:00
pass target arch to final image builder as TARGETARCH; use TARGETARCH when generating raw and iso, fallback to build arch; use updated images that read TARGETARCH; ensure grub has EFI for all archs
Signed-off-by: Avi Deitcher <avi@deitcher.net>
This commit is contained in:
53
tools/grub-dev/Dockerfile
Normal file
53
tools/grub-dev/Dockerfile
Normal file
@@ -0,0 +1,53 @@
|
||||
# this is really hard to build. Do not change this version unless you must
|
||||
FROM linuxkit/alpine:86cd4f51b49fb9a078b50201d892a3c7973d48ec AS grub-build
|
||||
|
||||
RUN apk add \
|
||||
automake \
|
||||
make \
|
||||
bison \
|
||||
gettext \
|
||||
flex \
|
||||
gcc \
|
||||
git \
|
||||
libtool \
|
||||
libc-dev \
|
||||
linux-headers \
|
||||
python3 \
|
||||
autoconf
|
||||
|
||||
# because python is not available
|
||||
RUN ln -s python3 /usr/bin/python
|
||||
|
||||
ENV GRUB_MODULES="part_gpt fat ext2 iso9660 gzio linux acpi normal cpio crypto disk boot crc64 gpt \
|
||||
search_disk_uuid tftp verify xzio xfs video"
|
||||
ENV GRUB_COMMIT=2f868ac992be2ae3ab838951aa3e260c045f20f9
|
||||
|
||||
COPY patches/* /patches/
|
||||
|
||||
WORKDIR /src
|
||||
RUN git clone https://github.com/coreos/grub.git grub
|
||||
WORKDIR /src/grub
|
||||
RUN git checkout -b grub-build ${GRUB_COMMIT}
|
||||
RUN for patch in /patches/*.patch; do \
|
||||
echo "Applying $patch"; \
|
||||
patch -p1 < "$patch"; \
|
||||
done
|
||||
|
||||
RUN ./autogen.sh
|
||||
|
||||
RUN ./configure --libdir=/grub-lib --with-platform=efi CFLAGS="-Os -Wno-unused-value"
|
||||
RUN make -j "$(getconf _NPROCESSORS_ONLN)"
|
||||
RUN make install
|
||||
RUN case $(uname -m) in \
|
||||
x86_64) \
|
||||
./grub-mkimage -O x86_64-efi -d /grub-lib/grub/x86_64-efi -o /grub-lib/BOOTX64.EFI -p /EFI/BOOT ${GRUB_MODULES} linuxefi; \
|
||||
;; \
|
||||
aarch64) \
|
||||
./grub-mkimage -O arm64-efi -d /grub-lib/grub/arm64-efi -o /grub-lib/BOOTAA64.EFI -p /EFI/BOOT ${GRUB_MODULES}; \
|
||||
;; \
|
||||
esac
|
||||
|
||||
FROM scratch
|
||||
ENTRYPOINT []
|
||||
WORKDIR /
|
||||
COPY --from=grub-build /grub-lib/*.EFI /
|
5
tools/grub-dev/build.yml
Normal file
5
tools/grub-dev/build.yml
Normal file
@@ -0,0 +1,5 @@
|
||||
image: grub-dev
|
||||
network: true
|
||||
arches:
|
||||
- arm64
|
||||
- amd64
|
@@ -1,52 +1,9 @@
|
||||
# this is really hard to build. Do not change this version unless you must
|
||||
FROM linuxkit/alpine:86cd4f51b49fb9a078b50201d892a3c7973d48ec AS grub-build
|
||||
|
||||
RUN apk add \
|
||||
automake \
|
||||
make \
|
||||
bison \
|
||||
gettext \
|
||||
flex \
|
||||
gcc \
|
||||
git \
|
||||
libtool \
|
||||
libc-dev \
|
||||
linux-headers \
|
||||
python3 \
|
||||
autoconf
|
||||
|
||||
# because python is not available
|
||||
RUN ln -s python3 /usr/bin/python
|
||||
|
||||
ENV GRUB_MODULES="part_gpt fat ext2 iso9660 gzio linux acpi normal cpio crypto disk boot crc64 gpt \
|
||||
search_disk_uuid tftp verify xzio xfs video"
|
||||
ENV GRUB_COMMIT=2f868ac992be2ae3ab838951aa3e260c045f20f9
|
||||
|
||||
COPY patches/* /patches/
|
||||
|
||||
WORKDIR /src
|
||||
RUN git clone https://github.com/coreos/grub.git grub
|
||||
WORKDIR /src/grub
|
||||
RUN git checkout -b grub-build ${GRUB_COMMIT}
|
||||
RUN for patch in /patches/*.patch; do \
|
||||
echo "Applying $patch"; \
|
||||
patch -p1 < "$patch"; \
|
||||
done
|
||||
|
||||
RUN ./autogen.sh
|
||||
RUN ./configure --libdir=/grub-lib --with-platform=efi CFLAGS="-Os -Wno-unused-value"
|
||||
RUN make -j "$(getconf _NPROCESSORS_ONLN)"
|
||||
RUN make install
|
||||
RUN case $(uname -m) in \
|
||||
x86_64) \
|
||||
./grub-mkimage -O x86_64-efi -d /grub-lib/grub/x86_64-efi -o /grub-lib/BOOTX64.EFI -p /EFI/BOOT ${GRUB_MODULES} linuxefi; \
|
||||
;; \
|
||||
aarch64) \
|
||||
./grub-mkimage -O arm64-efi -d /grub-lib/grub/arm64-efi -o /grub-lib/BOOTAA64.EFI -p /EFI/BOOT ${GRUB_MODULES}; \
|
||||
;; \
|
||||
esac
|
||||
FROM --platform=linux/amd64 linuxkit/grub-dev:e94da02aac3a39fec34047051a40d367e61cd0a0 AS grub-build-amd64
|
||||
FROM --platform=linux/arm64 linuxkit/grub-dev:e94da02aac3a39fec34047051a40d367e61cd0a0 AS grub-build-arm64
|
||||
|
||||
FROM scratch
|
||||
ENTRYPOINT []
|
||||
WORKDIR /
|
||||
COPY --from=grub-build /grub-lib/*.EFI /
|
||||
COPY --from=grub-build-amd64 /*.EFI /
|
||||
COPY --from=grub-build-arm64 /*.EFI /
|
||||
|
@@ -1,4 +1,4 @@
|
||||
FROM linuxkit/grub:4de02c056b3295f510b7fb4f9b5a2785f854ac23 AS grub
|
||||
FROM linuxkit/grub:292deb743d85eb79cbd5b163841db8ccd2500677 AS grub
|
||||
|
||||
FROM linuxkit/alpine:316c3f9d85c21fdd8bc7479e81d290f85bf60eb0 AS mirror
|
||||
RUN mkdir -p /out/etc/apk && cp -r /etc/apk/* /out/etc/apk/
|
||||
|
@@ -3,7 +3,7 @@
|
||||
set -e
|
||||
|
||||
# get the GRUB2 boot file name
|
||||
ARCH=`uname -m`
|
||||
ARCH=${TARGETARCH:-`uname -m`}
|
||||
case $ARCH in
|
||||
x86_64)
|
||||
BOOTFILE=BOOTX64.EFI
|
||||
|
@@ -1,4 +1,4 @@
|
||||
FROM linuxkit/grub:4de02c056b3295f510b7fb4f9b5a2785f854ac23 AS grub
|
||||
FROM linuxkit/grub:292deb743d85eb79cbd5b163841db8ccd2500677 AS grub
|
||||
|
||||
FROM linuxkit/alpine:316c3f9d85c21fdd8bc7479e81d290f85bf60eb0 AS mirror
|
||||
RUN mkdir -p /out/etc/apk && cp -r /etc/apk/* /out/etc/apk/
|
||||
|
@@ -3,7 +3,7 @@
|
||||
set -e
|
||||
|
||||
# get the GRUB2 boot file name
|
||||
ARCH=`uname -m`
|
||||
ARCH=${TARGETARCH:-`uname -m`}
|
||||
case $ARCH in
|
||||
x86_64)
|
||||
BOOTFILE=BOOTX64.EFI
|
||||
|
@@ -1,4 +1,4 @@
|
||||
FROM linuxkit/grub:4de02c056b3295f510b7fb4f9b5a2785f854ac23 AS grub
|
||||
FROM linuxkit/grub:292deb743d85eb79cbd5b163841db8ccd2500677 AS grub
|
||||
|
||||
FROM linuxkit/alpine:316c3f9d85c21fdd8bc7479e81d290f85bf60eb0 AS mirror
|
||||
RUN mkdir -p /out/etc/apk && cp -r /etc/apk/* /out/etc/apk/
|
||||
|
@@ -15,7 +15,7 @@ ESP_FILE=$PWD/boot.img
|
||||
|
||||
|
||||
# get the GRUB2 boot file name
|
||||
ARCH=`uname -m`
|
||||
ARCH=${TARGETARCH:-`uname -m`}
|
||||
case $ARCH in
|
||||
x86_64)
|
||||
BOOTFILE=BOOTX64.EFI
|
||||
|
@@ -1,4 +1,4 @@
|
||||
FROM linuxkit/grub:4de02c056b3295f510b7fb4f9b5a2785f854ac23 AS grub
|
||||
FROM linuxkit/grub:292deb743d85eb79cbd5b163841db8ccd2500677 AS grub
|
||||
|
||||
FROM linuxkit/alpine:316c3f9d85c21fdd8bc7479e81d290f85bf60eb0 AS mirror
|
||||
RUN mkdir -p /out/etc/apk && cp -r /etc/apk/* /out/etc/apk/
|
||||
|
@@ -15,7 +15,7 @@ ESP_FILE=$PWD/boot.img
|
||||
|
||||
|
||||
# get the GRUB2 boot file name
|
||||
ARCH=`uname -m`
|
||||
ARCH=${TARGETARCH:-`uname -m`}
|
||||
case $ARCH in
|
||||
x86_64)
|
||||
BOOTFILE=BOOTX64.EFI
|
||||
|
Reference in New Issue
Block a user