mirror of
https://github.com/vyos/vyos-build.git
synced 2025-10-01 20:28:40 +02:00
Makefile: T2640: add helper to convert ISO to OCI image to start a container
Use either "make oci" or call the script manually: $ scripts/iso-to-oci build/live-image-amd64.hybrid.iso I: mount ISO build/live-image-amd64.hybrid.iso I: extracting squashfs content I: generate OCI container image vyos-1.5-strongswan-202311241125.tar I: to import the previously generated OCI image to your local images run: docker import vyos-1.5-strongswan-202311241125.tar vyos:1.5-strongswan-202311241125 --change 'CMD [/sbin/init]'
This commit is contained in:
parent
0411ec870e
commit
499e8e1cbb
1
.gitignore
vendored
1
.gitignore
vendored
@ -7,3 +7,4 @@ packages/*
|
|||||||
!packages/*/
|
!packages/*/
|
||||||
testinstall*.img
|
testinstall*.img
|
||||||
*.qcow2
|
*.qcow2
|
||||||
|
*.tar
|
||||||
|
|||||||
5
Makefile
5
Makefile
@ -59,6 +59,11 @@ testraid: checkiso
|
|||||||
qemu-live: checkiso
|
qemu-live: checkiso
|
||||||
scripts/check-qemu-install --qemu-cmd build/live-image-amd64.hybrid.iso
|
scripts/check-qemu-install --qemu-cmd build/live-image-amd64.hybrid.iso
|
||||||
|
|
||||||
|
.PHONE: oci
|
||||||
|
.ONESHELL:
|
||||||
|
oci: checkiso
|
||||||
|
scripts/iso-to-oci build/live-image-amd64.hybrid.iso
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
.ONESHELL:
|
.ONESHELL:
|
||||||
clean:
|
clean:
|
||||||
|
|||||||
63
scripts/iso-to-oci
Executable file
63
scripts/iso-to-oci
Executable file
@ -0,0 +1,63 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
function cleanup() {
|
||||||
|
if [[ -d $ROOTFS ]]; then
|
||||||
|
rm -rf $ROOTFS
|
||||||
|
fi
|
||||||
|
if [[ -d $UNSQUASHFS ]]; then
|
||||||
|
rm -rf $UNSQUASHFS
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
||||||
|
echo "Not running as root"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$#" -ne 1 ]; then
|
||||||
|
echo "Illegal number of parameters"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ISO=$1
|
||||||
|
ROOTFS=rootfs
|
||||||
|
UNSQUASHFS=unsquashfs
|
||||||
|
|
||||||
|
# ensure clean working directory
|
||||||
|
cleanup
|
||||||
|
|
||||||
|
mkdir $ROOTFS $UNSQUASHFS
|
||||||
|
echo "I: mount ISO $ISO"
|
||||||
|
mount -t iso9660 -o loop $ISO $ROOTFS/ >/dev/null 2>&1
|
||||||
|
|
||||||
|
# create directory, unpack squashfs filesystem, get ISO version
|
||||||
|
# and unmount ISO
|
||||||
|
echo "I: extracting squashfs content"
|
||||||
|
unsquashfs -follow -dest $UNSQUASHFS/ $ROOTFS/live/filesystem.squashfs >/dev/null 2>&1
|
||||||
|
VERSION=$(jq --raw-output .version $ROOTFS/version.json)
|
||||||
|
umount $ROOTFS/
|
||||||
|
|
||||||
|
# fix locales for correct system configuration loading
|
||||||
|
sed -i 's/^LANG=.*$/LANG=C.UTF-8/' $UNSQUASHFS/etc/default/locale
|
||||||
|
|
||||||
|
# optional step: Decrease docker image size by deleting not necessary files for container
|
||||||
|
rm -rf $UNSQUASHFS/boot/*.img
|
||||||
|
rm -rf $UNSQUASHFS/boot/*vyos*
|
||||||
|
rm -rf $UNSQUASHFS/boot/vmlinuz
|
||||||
|
rm -rf $UNSQUASHFS/lib/firmware/
|
||||||
|
rm -rf $UNSQUASHFS/usr/lib/x86_64-linux-gnu/libwireshark.so*
|
||||||
|
rm -rf $UNSQUASHFS/lib/modules/*amd64-vyos
|
||||||
|
rm -rf $UNSQUASHFS/root/.gnupg
|
||||||
|
|
||||||
|
# create a symbolic link to the configuration
|
||||||
|
ln -s /opt/vyatta/etc/config $UNSQUASHFS/config
|
||||||
|
|
||||||
|
# create docker image
|
||||||
|
echo "I: generate OCI container image vyos-$VERSION.tar"
|
||||||
|
tar -C unsquashfs -c . -f vyos-$VERSION.tar
|
||||||
|
|
||||||
|
echo "I: to import the previously generated OCI image to your local images run:"
|
||||||
|
echo ""
|
||||||
|
echo " docker import vyos-$VERSION.tar vyos:$VERSION --change 'CMD ["/sbin/init"]'"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
cleanup
|
||||||
Loading…
x
Reference in New Issue
Block a user