#!/bin/sh #if [[ -z $1 || -z $2 ]]; then if [[ -z $1 ]]; then echo -e "ERREUR : paramétre(s) manquant(s) " echo -e "Passer en paramétre : " echo -e "1. Nom du profil (ex : kubauto)" # echo -e "2. Version de l'Alpine (forcé à edge pour le moment)" echo "" exit 1 else PROFILENAME=$1 ALPINE_VERSION=edge export $PROFILENAME cat << EOF > ~/aports/scripts/mkimg.$PROFILENAME.sh profile_$PROFILENAME() { profile_standard kernel_cmdline="unionfs_size=512M console=tty0 console=ttyS0,115200" syslinux_serial="0 115200" apks="\$apks mtools parted rsync vim util-linux curl coreutils strace dhcp dhcpcd kubeadm lvm2 dfc cni-plugin-flannel cni-plugins flannel flannel-contrib-cni kubelet kubeadm kubectl uuidgen docker docker-compose " local _k _a for _k in \$kernel_flavors; do apks="\$apks linux-\$_k" for _a in \$kernel_addons; do apks="\$apks \$_a-\$_k" done done apks="\$apks linux-firmware" hostname="$PROFILENAME" apkovl="genapkovl-$PROFILENAME.sh" } EOF chmod +x ~/aports/scripts/mkimg.$PROFILENAME.sh cat << 'EOP' > ~/aports/scripts/genapkovl-$PROFILENAME.sh #!/bin/sh -e HOSTNAME="$1" if [ -z "$HOSTNAME" ]; then echo "usage: $0 hostname" exit 1 fi cleanup() { rm -rf "$tmp" } makefile() { OWNER="$1" PERMS="$2" FILENAME="$3" cat > "$FILENAME" chown "$OWNER" "$FILENAME" chmod "$PERMS" "$FILENAME" } rc_add() { mkdir -p "$tmp"/etc/runlevels/"$2" ln -sf /etc/init.d/"$1" "$tmp"/etc/runlevels/"$2"/"$1" } tmp="$(mktemp -d)" trap cleanup EXIT mkdir -p "$tmp"/etc makefile root:root 0644 "$tmp"/etc/hostname <> "$tmp/etc/apk/repositories" echo 'http://dl-cdn.alpinelinux.org/alpine/$ALPINE_VERSION/main' >> "$tmp/etc/apk/repositories" echo 'http://dl-cdn.alpinelinux.org/alpine/$ALPINE_VERSION/community' >> "$tmp/etc/apk/repositories" echo 'http://dl-cdn.alpinelinux.org/alpine/$ALPINE_VERSION/testing' >> "$tmp/etc/apk/repositories" mkdir -p "$tmp"/etc/apk makefile root:root 0644 "$tmp"/etc/apk/world <> /root/preseeded.txt EOF rc_add devfs sysinit rc_add dmesg sysinit rc_add mdev sysinit rc_add hwdrivers sysinit rc_add modloop sysinit rc_add hwclock boot rc_add modules boot rc_add sysctl boot rc_add hostname boot rc_add bootmisc boot rc_add syslog boot # we want our preseed to run & have network while at it rc_add networking boot rc_add local boot rc_add mount-ro shutdown rc_add killprocs shutdown rc_add savecache shutdown tar -c -C "$tmp" etc | gzip -9n > $HOSTNAME.apkovl.tar.gz EOP chmod +x ~/aports/scripts/genapkovl-$PROFILENAME.sh # Create output dir if test ! -d ~/iso; then echo "Creating output dir" mkdir -p ~/iso fi echo "ISO generation" cd ~/aports/scripts/ sh mkimage.sh --tag $ALPINE_VERSION \ --outdir ~/iso \ --arch x86_64 \ --repository http://dl-cdn.alpinelinux.org/alpine/$ALPINE_VERSION/main \ --repository http://dl-cdn.alpinelinux.org/alpine/$ALPINE_VERSION/community \ --repository http://dl-cdn.alpinelinux.org/alpine/$ALPINE_VERSION/testing \ --profile $PROFILENAME fi