X-Git-Url: https://iankelling.org/git/?p=automated-distro-installer;a=blobdiff_plain;f=fai%2Fconfig%2Fbasefiles%2Fmk-basefile;h=39471d83ae7cbff6e8416731ba7066a2707b4d5d;hp=b4d790c94dae2d760e258d3deae28d7e15387afa;hb=591c84435e22df12f2b5121c08578bff7c6bb047;hpb=47b51938ae090a2717cb2ec3f9e547a76e7b2ae7 diff --git a/fai/config/basefiles/mk-basefile b/fai/config/basefiles/mk-basefile index b4d790c..39471d8 100755 --- a/fai/config/basefiles/mk-basefile +++ b/fai/config/basefiles/mk-basefile @@ -1,14 +1,16 @@ #! /bin/bash - # mk-basefile, create basefiles for some distributions # -# Thomas Lange, Uni Koeln, 2011-2016 +# Thomas Lange, Uni Koeln, 2011-2021 # based on the Makefile implementation of Michael Goetze +# +# Usage example: mk-basefile -J STRETCH64 +# This will create a STRETCH64.tar.xz basefile. # Supported distributions (each i386/amd64): # Debian GNU/Linux # Ubuntu 14.04/16.04 -# CentOS 5/6/7 +# CentOS 5/6/7/8 # Scientific Linux Cern 5/6 # # Packages you might want to install to use this command: @@ -17,21 +19,34 @@ # Define your local mirros here # For the first stage, set the CentOS/SLC mirror in /etc/rinse/rinse.conf -MIRROR_DEBIAN=http://http.us.debian.org/debian +MIRROR_DEBIAN=http://deb.debian.org/debian/ MIRROR_UBUNTU=http://mirror.netcologne.de/ubuntu/ MIRROR_TRISQUEL=http://mirror.fsf.org/trisquel/ MIRROR_CENTOS=http://mirror.netcologne.de/ -EXCLUDE_SQUEEZE=isc-dhcp-client,isc-dhcp-common,info,tasksel,tasksel-data -EXCLUDE_WHEEZY=info,tasksel,tasksel-data -EXCLUDE_JESSIE=tasksel,tasksel-data -EXCLUDE_STRETCH=tasksel,tasksel-data +EXCLUDE_SQUEEZE=isc-dhcp-client,isc-dhcp-common,info +EXCLUDE_WHEEZY=info +EXCLUDE_JESSIE=info +EXCLUDE_STRETCH=info +EXCLUDE_BUSTER= +EXCLUDE_BULLSEYE= +EXCLUDE_BOOKWORM= +EXCLUDE_TRIXIE= +EXCLUDE_SID= + EXCLUDE_BELENOS=dhcp3-client,dhcp3-common,info EXCLUDE_TRUSTY=dhcp3-client,dhcp3-common,info -EXCLUDE_XENIAL=tasksel,tasksel-data - -INCLUDE_DEBIAN=aptitude - +EXCLUDE_XENIAL=udhcpc,dibbler-client,info +EXCLUDE_FLIDAS=udhcpc,dibbler-client,info +EXCLUDE_BIONIC=udhcpc,dibbler-client,info +EXCLUDE_ETIONA=udhcpc,dibbler-client,info +EXCLUDE_FOCAL=udhcpc,dibbler-client,info +EXCLUDE_NABIA=udhcpc,dibbler-client,info + +# here you can add packages, that are needed very early +INCLUDE_DEBIAN= +INCLUDE_ETIONA=ifupdown +INCLUDE_NABIA=ifupdown setarch() { @@ -43,7 +58,7 @@ setarch() { check() { - if [ `id -u` != 0 ]; then + if [ $(id -u) != 0 ]; then echo "You must be root to create chroots." exit 1 fi @@ -67,6 +82,7 @@ check() { mkpost-centos() { + # set local mirror for rinse post script [ -z "$MIRROR_CENTOS" ] && return cat < $xtmp/post #! /bin/sh @@ -80,6 +96,7 @@ EOM mkpost-slc() { + # set local mirror for rinse post script ver=$1 [ -z "$MIRROR_SLC" ] && return cat < $xtmp/post @@ -96,10 +113,19 @@ EOM cleanup-deb() { - chroot $xtmp aptitude clean - rm -f $xtmp/etc/hostname $xtmp/etc/resolv.conf $xtmp/etc/machine-id - rm $xtmp/var/lib/apt/lists/*_* - rm -f $xtmp/etc/udev/rules.d/70-persistent-net.rules + if [[ $cmd ]]; then + if [[ -e $cmd ]]; then + cp "$cmd" $xtmp/tmp + chroot $xtmp "/tmp/$cmd" + else + chroot $xtmp $cmd + fi + fi + chroot $xtmp apt-get clean + rm -f $xtmp/etc/hostname $xtmp/etc/resolv.conf \ + $xtmp/var/lib/apt/lists/*_* $xtmp/usr/bin/qemu-*-static \ + $xtmp/etc/udev/rules.d/70-persistent-net.rules + > $xtmp/etc/machine-id } @@ -121,7 +147,7 @@ cleanup-rinse() { tarit() { - tar $attributes --one-file-system -C $xtmp -cf - . | $zip > $target.$ext + tar $attributes --numeric-owner --one-file-system -C $xtmp -cf - . | $zip > $target.$ext } @@ -160,19 +186,29 @@ debgeneric() { local DIST=$1 shift local mirror=$1 + shift + local arch=$1 - if [[ $DIST =~ 64 ]]; then - arch=amd64 - else - arch=i386 - fi - - DIST=${DIST%%??} - dist=${DIST,,} + dist=${DIST%%[0-9][0-9]} + local exc="EXCLUDE_$dist" + [ -n "${!exc}" ] && exc="--exclude=${!exc}" || unset exc + local inc="INCLUDE_$dist" + [ -n "${!inc}" ] && inc="--include=${!inc}" || unset inc + dist=${dist,,} - local exc="EXCLUDE_$DIST" check - debootstrap --arch $arch --exclude=${!exc} --include=${INCLUDE_DEBIAN} $dist $xtmp $mirror + + if [ -n "$arch" ]; then + qemu-debootstrap --arch $arch ${exc} $inc $dist $xtmp $mirror + target="${target}_${arch^^}" + else + if [[ $DIST =~ 64 ]]; then + arch=amd64 + else + arch=i386 + fi + debootstrap --arch $arch ${exc} $inc $dist $xtmp $mirror + fi cleanup-deb tarit } @@ -184,15 +220,26 @@ prtdists() { CENTOS5_32 CENTOS5_64 CENTOS6_32 CENTOS6_64 CENTOS7_32 CENTOS7_64 + CENTOS8_64 SLC5_32 SLC5_64 SLC6_32 SLC6_64 SLC7_64 TRUSTY32 TRUSTY64 XENIAL32 XENIAL64 + FLIDAS64 + BIONIC64 + ETIONA64 + FOCAL64 + NABIA64 SQUEEZE32 SQUEEZE64 WHEEZY32 WHEEZY64 JESSIE32 JESSIE64 STRETCH32 STRETCH64 + BUSTER32 BUSTER64 + BULLSEYE32 BULLSEYE64 + BOOKWORM32 BOOKWORM64 + TRIXIE32 TRIXIE64 + SID32 SID64 " } @@ -201,16 +248,18 @@ usage() { cat <