Standalone make iso image, rather than build+run

Simpler to have an image that takes the kernel and initrd as input,
rather than building them into the image.

The rest need converting.

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
This commit is contained in:
Justin Cormack 2016-09-22 13:12:23 +01:00
parent 340f37d93c
commit 2d483a20b0
6 changed files with 33 additions and 24 deletions

View File

@ -1,18 +0,0 @@
# Create a legacy BIOS bootable ISO
FROM mobylinux/alpine-bios:626757290dbb54109514af22108645cae9ea40c3
WORKDIR /tmp/iso
COPY initrd.img ./
COPY kernel/x86_64/vmlinuz64 ./
COPY isolinux.cfg ./isolinux/
RUN cp /usr/share/syslinux/isolinux.bin ./isolinux/ && \
cp /usr/share/syslinux/ldlinux.c32 ./isolinux/
RUN genisoimage -o ../mobylinux-bios.iso -l -J -R \
-c isolinux/boot.cat \
-b isolinux/isolinux.bin \
-no-emul-boot -boot-load-size 4 -boot-info-table \
-V MobyLinux . && \
isohybrid ../mobylinux-bios.iso

View File

@ -39,9 +39,9 @@ mobylinux-efi.iso: Dockerfile.efi initrd.img kernel/x86_64/vmlinuz64
docker run --net=none --log-driver=none --rm --cap-add sys_admin moby-efi:build cat /tmp/efi/mobylinux.efi > mobylinux.efi
docker run --net=none --log-driver=none --rm --cap-add sys_admin moby-efi:build cat /tmp/efi/mobylinux-efi.iso > $@
mobylinux-bios.iso: Dockerfile.bios initrd.img kernel/x86_64/vmlinuz64 isolinux.cfg
tar cf - $^ | docker build -t moby-bios:build -f Dockerfile.bios -
docker run --net=none --log-driver=none --rm moby-bios:build cat /tmp/mobylinux-bios.iso > $@
mobylinux-bios.iso: initrd.img kernel/x86_64/vmlinuz64
tar cf - initrd.img -C kernel/x86_64 vmlinuz64 | \
docker run --net=none --log-driver=none --rm -i mobylinux/alpine-bios:67236852ecf950af0486ac22b0963b404d16c348 >$@
common: initrd.img
$(MAKE) -C kernel

View File

@ -2,7 +2,15 @@ FROM alpine:3.4
RUN \
apk update && apk upgrade && \
apk add \
apk add --no-cache \
cdrkit \
syslinux \
&& rm -rf /var/cache/apk/*
&& true
WORKDIR /tmp/iso
COPY isolinux.cfg ./isolinux/
COPY make-iso /usr/bin
CMD [ "/usr/bin/make-iso" ]

View File

@ -7,7 +7,7 @@ default: push
hash:
docker pull $(BASE)
tar cf - Dockerfile | docker build --no-cache -t $(IMAGE):build -
tar cf - Dockerfile make-iso isolinux.cfg | docker build --no-cache -t $(IMAGE):build -
docker run --rm $(IMAGE):build sha1sum /lib/apk/db/installed | sed 's/ .*//' > hash
push: hash

View File

@ -0,0 +1,19 @@
#!/bin/sh
# input is a tarball of vmlinuz64 and initrd.img on stdin
# output is an iso on stdout
cp /usr/share/syslinux/isolinux.bin ./isolinux/
cp /usr/share/syslinux/ldlinux.c32 ./isolinux/
tar xf -
genisoimage -o ../mobylinux-bios.iso -l -J -R \
-c isolinux/boot.cat \
-b isolinux/isolinux.bin \
-no-emul-boot -boot-load-size 4 -boot-info-table \
-V MobyLinux .
isohybrid ../mobylinux-bios.iso
cat ../mobylinux-bios.iso