blob: aa342975e08b017974f60d6dcb78d337fb9aeb0c (
plain)
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
|
FROM ubuntu:24.04 as ubuntu_noble
LABEL Description="ubuntu intermediate image"
LABEL Version="2.0"
RUN apt update \
&& apt install -y wget genisoimage syslinux-common \
&& mkdir -p /var/lib/tftpboot/grub \
&& mkdir -p /var/lib/tftpboot/grub/fonts \
&& mkdir -p /var/lib/tftpboot/casper/ubuntu-noble-amd64/ \
&& mkdir -p /var/lib/tftpboot/casper/ubuntu-noble-arm64/
ENV ISO_NOBLE_AMD64=https://releases.ubuntu.com/releases/noble/ubuntu-24.04-live-server-amd64.iso
ENV ISO_NOBLE_ARM64=https://cdimage.ubuntu.com/releases/noble/release/ubuntu-24.04-live-server-arm64.iso
ENV EFI_NOBLE_AMD64=http://archive.ubuntu.com/ubuntu/dists/jammy/main/uefi/grub2-amd64/current/grubnetx64.efi.signed
ENV EFI_NOBLE_ARM64=http://ports.ubuntu.com/ubuntu-ports/dists/jammy/main/uefi/grub2-arm64/current/grubnetaa64.efi.signed
RUN echo "Preparing Grub EFI Binary" \
&& wget $EFI_NOBLE_AMD64 -O /var/lib/tftpboot/grubx64.efi \
&& wget $EFI_NOBLE_ARM64 -O /var/lib/tftpboot/grubaa64.efi \
&& apt download shim-signed \
&& dpkg-deb --fsys-tarfile shim-signed*deb | tar x ./usr/lib/shim/shimx64.efi.signed.latest -O > /var/lib/tftpboot/bootx64.efi \
&& apt download grub-common \
&& dpkg-deb --fsys-tarfile grub-common*deb | tar x ./usr/share/grub/unicode.pf2 -O > /var/lib/tftpboot/grub/fonts/unicode.pf2
RUN echo "Preparing Casper Kernel" \
&& wget $ISO_NOBLE_AMD64 -O /ubuntu-24.04-live-server-amd64.iso \
&& isoinfo -i /ubuntu-24.04-live-server-amd64.iso -x "/CASPER/INITRD.;1" > /var/lib/tftpboot/casper/ubuntu-noble-amd64/initrd \
&& isoinfo -i /ubuntu-24.04-live-server-amd64.iso -x "/CASPER/VMLINUZ.;1" > /var/lib/tftpboot/casper/ubuntu-noble-amd64/vmlinuz \
&& wget $ISO_NOBLE_ARM64 -O /ubuntu-24.04-live-server-arm64.iso \
&& isoinfo -i /ubuntu-24.04-live-server-arm64.iso -x "/CASPER/INITRD.;1" > /var/lib/tftpboot/casper/ubuntu-noble-arm64/initrd \
&& isoinfo -i /ubuntu-24.04-live-server-arm64.iso -x "/CASPER/VMLINUZ.;1" > /var/lib/tftpboot/casper/ubuntu-noble-arm64/vmlinuz
FROM alpine
LABEL Description="dnsmasq service image"
LABEL Version="2.0"
RUN apk add --update --no-cache dnsmasq \
&& rm -rf /var/cache/apk/*
# Extract installer from previous image.
COPY --from=ubuntu_noble /var/lib/tftpboot /var/lib/tftpboot
# Configure PXE.
COPY tftpboot/ /var/lib/tftpboot/
# Configure DNSMASQ.
COPY etc/ /etc/
# Start dnsmasq. It picks up default configuration from /etc/dnsmasq.conf and
# /etc/default/dnsmasq plus any command line switch
ENTRYPOINT ["sh","-c","dnsmasq","--interface=$E_INT","--listen-address=$E_ADD"]
|