From db5d31d563aefb02b0872cad2f0779a4ef005c5d Mon Sep 17 00:00:00 2001 From: Mikhail Klementev Date: Sat, 30 May 2020 13:42:47 +0000 Subject: [PATCH] CentOS 8 image generator --- tools/qemu-centos-img/8/Dockerfile | 56 +++++++++++++++++++++++++++++ tools/qemu-centos-img/8/generate.sh | 6 ++++ 2 files changed, 62 insertions(+) create mode 100644 tools/qemu-centos-img/8/Dockerfile create mode 100755 tools/qemu-centos-img/8/generate.sh diff --git a/tools/qemu-centos-img/8/Dockerfile b/tools/qemu-centos-img/8/Dockerfile new file mode 100644 index 0000000..2502864 --- /dev/null +++ b/tools/qemu-centos-img/8/Dockerfile @@ -0,0 +1,56 @@ +# Copyright 2020 Mikhail Klementev. All rights reserved. +# Use of this source code is governed by a AGPLv3 license +# (or later) that can be found in the LICENSE file. +# +# Usage: +# +# $ sudo docker build -t gen-centos8-image . +# $ sudo docker run --privileged -v $(pwd):/shared -t gen-centos8-image +# $ tar -Szcf out_of_tree_centos_8.img.tar.gz out_of_tree_centos_8.img +# +# out_of_tree_centos_8.img will be created in current directory. +# You can change $(pwd) to different directory to use different destination +# for image. +# +FROM centos:8 + +RUN yum -y update +RUN yum -y groupinstall "Development Tools" +RUN yum -y install qemu-img e2fsprogs + +ENV TMPDIR=/tmp/centos + +RUN yum --installroot=$TMPDIR \ + --releasever=8 \ + --disablerepo='*' \ + --enablerepo=BaseOS \ + -y groupinstall Base +RUN yum --installroot=$TMPDIR \ + --releasever=8 \ + --disablerepo='*' \ + --enablerepo=BaseOS \ + -y install openssh-server openssh-clients + +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_centos_8.img + +RUN mkdir $IMAGEDIR + +# Must be executed with --privileged because of /dev/loop +CMD qemu-img create $IMAGE 2G && \ + mkfs.ext4 -F $IMAGE && \ + mount -o loop $IMAGE $IMAGEDIR && \ + cp -a $TMPDIR/* $IMAGEDIR/ && \ + umount $IMAGEDIR diff --git a/tools/qemu-centos-img/8/generate.sh b/tools/qemu-centos-img/8/generate.sh new file mode 100755 index 0000000..0ab64e4 --- /dev/null +++ b/tools/qemu-centos-img/8/generate.sh @@ -0,0 +1,6 @@ +#!/bin/sh +cd "$(dirname "$0")" + +sudo docker build -t gen-centos8-image . +sudo docker run --privileged -v $(pwd):/shared -t gen-centos8-image +tar -Szcf out_of_tree_centos_8.img.tar.gz out_of_tree_centos_8.img