From 48be2df1b0d2d0c484398ec94e0058ead9bb1503 Mon Sep 17 00:00:00 2001 From: Mikhail Klementev Date: Tue, 9 May 2023 16:14:15 +0000 Subject: [PATCH] Add Oracle Linux image generator --- tools/qemu-oraclelinux-image/.gitignore | 4 ++ .../Dockerfile.template | 48 +++++++++++++++++++ .../qemu-oraclelinux-image/generate-images.sh | 15 ++++++ 3 files changed, 67 insertions(+) create mode 100644 tools/qemu-oraclelinux-image/.gitignore create mode 100644 tools/qemu-oraclelinux-image/Dockerfile.template create mode 100755 tools/qemu-oraclelinux-image/generate-images.sh diff --git a/tools/qemu-oraclelinux-image/.gitignore b/tools/qemu-oraclelinux-image/.gitignore new file mode 100644 index 0000000..98bd8b6 --- /dev/null +++ b/tools/qemu-oraclelinux-image/.gitignore @@ -0,0 +1,4 @@ +* +!.gitignore +!Dockerfile.template +!generate-images.sh \ No newline at end of file diff --git a/tools/qemu-oraclelinux-image/Dockerfile.template b/tools/qemu-oraclelinux-image/Dockerfile.template new file mode 100644 index 0000000..a3102a5 --- /dev/null +++ b/tools/qemu-oraclelinux-image/Dockerfile.template @@ -0,0 +1,48 @@ +FROM oraclelinux:_VERSION_ + +RUN yum -y update +RUN yum -y groupinstall "Development Tools" +RUN yum -y install qemu-img e2fsprogs + +ENV TMPDIR=/tmp/oraclelinux + +RUN sed -i 's/$ociregion//' /etc/yum.repos.d/* +RUN sed -i 's/$ocidomain/oracle.com/' /etc/yum.repos.d/* + +RUN yum --installroot=$TMPDIR \ + --releasever=_VERSION_ \ + --disablerepo='*' \ + --enablerepo=ol_VERSION__baseos_latest \ + -y groupinstall Base + +RUN cp /etc/yum.repos.d/* $TMPDIR/etc/yum.repos.d/ + +RUN yum --installroot=$TMPDIR \ + --releasever=_VERSION_ \ + --disablerepo='*' \ + --enablerepo=ol_VERSION__baseos_latest \ + -y install openssh-server openssh-clients dhclient + +RUN chroot $TMPDIR /bin/sh -c 'useradd -m user' +RUN sed -i 's/root:\*:/root::/' $TMPDIR/etc/shadow +RUN sed -i 's/user:!!:/user::/' $TMPDIR/etc/shadow +RUN sed -i '/PermitEmptyPasswords/d' $TMPDIR/etc/ssh/sshd_config +RUN echo PermitEmptyPasswords yes >> $TMPDIR/etc/ssh/sshd_config +RUN sed -i '/PermitRootLogin/d' $TMPDIR/etc/ssh/sshd_config +RUN echo PermitRootLogin yes >> $TMPDIR/etc/ssh/sshd_config + +# network workaround +RUN chmod +x $TMPDIR/etc/rc.local +RUN echo 'dhclient' >> $TMPDIR/etc/rc.local + +ENV IMAGEDIR=/tmp/image +ENV IMAGE=/shared/out_of_tree_oraclelinux__VERSION_.img + +RUN mkdir $IMAGEDIR + +# Must be executed with --privileged because of /dev/loop +CMD qemu-img create $IMAGE 4G && \ + mkfs.ext4 -F $IMAGE && \ + mount -o loop $IMAGE $IMAGEDIR && \ + cp -a $TMPDIR/* $IMAGEDIR/ && \ + umount $IMAGEDIR diff --git a/tools/qemu-oraclelinux-image/generate-images.sh b/tools/qemu-oraclelinux-image/generate-images.sh new file mode 100755 index 0000000..4929e7e --- /dev/null +++ b/tools/qemu-oraclelinux-image/generate-images.sh @@ -0,0 +1,15 @@ +#!/bin/sh -eux + +for version in 6 7 8 9; do + mkdir $version + sed "s/_VERSION_/${version}/" Dockerfile.template >> $version/Dockerfile + if [[ $version -eq 6 ]]; then + sed -i 's/baseos_latest/u10_base/' $version/Dockerfile + fi + if [[ $version -eq 7 ]]; then + sed -i 's/baseos_latest/u9_base/' $version/Dockerfile + fi + docker build -t gen-oraclelinux${version}-image $version + rm -rf $version + docker run --privileged -v $(pwd):/shared -t gen-oraclelinux${version}-image +done