krebs 4 infest: add arch-infest and refactor
This commit is contained in:
parent
fb945f741d
commit
72d15b2266
@ -1,21 +1,30 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
set -eux
|
set -eux
|
||||||
{
|
{
|
||||||
umount /mnt/nix || [ $? -eq 32 ]
|
umount /mnt/nix
|
||||||
umount /mnt/boot || [ $? -eq 32 ]
|
umount /mnt/root
|
||||||
umount /mnt/root || [ $? -eq 32 ]
|
umount /boot || :
|
||||||
umount /mnt || [ $? -eq 32 ]
|
umount /mnt/boot
|
||||||
umount /boot || [ $? -eq 32 ]
|
umount /mnt
|
||||||
|
|
||||||
|
coreutils_path=$(set +f; for i in /nix/store/*coreutils*/bin; do :; done; echo $i)
|
||||||
|
sed_path=$(set +f; for i in /nix/store/*gnused*/bin; do :; done; echo $i)
|
||||||
|
PATH="$coreutils_path:$sed_path"
|
||||||
|
|
||||||
PATH=$(set +f; for i in /nix/store/*coreutils*/bin; do :; done; echo $i)
|
|
||||||
export PATH
|
export PATH
|
||||||
|
|
||||||
mkdir /oldshit
|
mkdir /oldshit
|
||||||
|
|
||||||
|
#fix bug where grub install cant find the /nix/store because its under a bind mount
|
||||||
|
if test -e /boot/grub/grub.cfg; then
|
||||||
|
sed -i 's,//store,/nix/store,g' /boot/grub/grub.cfg
|
||||||
|
fi;
|
||||||
|
|
||||||
mv /bin /oldshit/
|
mv /bin /oldshit/
|
||||||
mv /newshit/bin /
|
mv /newshit/bin /
|
||||||
|
|
||||||
# TODO ensure /boot is empty
|
# TODO ensure /boot is empty
|
||||||
|
# skip boot
|
||||||
rmdir /newshit/boot
|
rmdir /newshit/boot
|
||||||
|
|
||||||
# skip /dev
|
# skip /dev
|
||||||
|
@ -19,16 +19,9 @@ install_nix() {(
|
|||||||
)
|
)
|
||||||
nix_src_dir=$(basename $nix_url .tar.bz2)
|
nix_src_dir=$(basename $nix_url .tar.bz2)
|
||||||
tar jxf $nix_src_dir.tar.bz2
|
tar jxf $nix_src_dir.tar.bz2
|
||||||
mkdir -v -m 0755 -p /nix
|
|
||||||
$nix_src_dir/install
|
$nix_src_dir/install
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#TODO: make this general or move to prepare
|
|
||||||
if ! mount | grep -Fq '/dev/mapper/centos-root on /mnt/nix type xfs'; then
|
|
||||||
mkdir -p /mnt/nix
|
|
||||||
mount --bind /nix /mnt/nix
|
|
||||||
fi
|
|
||||||
|
|
||||||
. /root/.nix-profile/etc/profile.d/nix.sh
|
. /root/.nix-profile/etc/profile.d/nix.sh
|
||||||
|
|
||||||
for i in \
|
for i in \
|
||||||
|
@ -5,10 +5,14 @@ prepare() {(
|
|||||||
if test -e /etc/os-release; then
|
if test -e /etc/os-release; then
|
||||||
. /etc/os-release
|
. /etc/os-release
|
||||||
case $ID in
|
case $ID in
|
||||||
|
arch)
|
||||||
|
prepare_arch "$@"
|
||||||
|
exit
|
||||||
|
;;
|
||||||
centos)
|
centos)
|
||||||
case $VERSION_ID in
|
case $VERSION_ID in
|
||||||
7)
|
7)
|
||||||
prepare_centos7 "$@"
|
prepare_centos "$@"
|
||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@ -19,17 +23,28 @@ prepare() {(
|
|||||||
exit -1
|
exit -1
|
||||||
)}
|
)}
|
||||||
|
|
||||||
prepare_centos7() {
|
prepare_arch() {
|
||||||
|
type bzip2 2>/dev/null || pacman -S --noconfirm bzip2
|
||||||
|
type git 2>/dev/null || pacman -S --noconfirm git
|
||||||
|
type rsync 2>/dev/null || pacman -S --noconfirm rsync
|
||||||
|
prepare_common
|
||||||
|
}
|
||||||
|
|
||||||
|
prepare_centos() {
|
||||||
type bzip2 2>/dev/null || yum install -y bzip2
|
type bzip2 2>/dev/null || yum install -y bzip2
|
||||||
type git 2>/dev/null || yum install -y git
|
type git 2>/dev/null || yum install -y git
|
||||||
type rsync 2>/dev/null || yum install -y rsync
|
type rsync 2>/dev/null || yum install -y rsync
|
||||||
|
prepare_common
|
||||||
|
}
|
||||||
|
|
||||||
|
prepare_common() {
|
||||||
|
|
||||||
if ! getent group nixbld >/dev/null; then
|
if ! getent group nixbld >/dev/null; then
|
||||||
groupadd -g 30000 -r nixbld
|
groupadd -g 30000 -r nixbld
|
||||||
fi
|
fi
|
||||||
for i in `seq 1 10`; do
|
for i in `seq 1 10`; do
|
||||||
if ! getent passwd nixbld$i 2>/dev/null; then
|
if ! getent passwd nixbld$i 2>/dev/null; then
|
||||||
useradd \
|
useradd \
|
||||||
-c "CentOS Nix build user $i" \
|
|
||||||
-d /var/empty \
|
-d /var/empty \
|
||||||
-g 30000 \
|
-g 30000 \
|
||||||
-G 30000 \
|
-G 30000 \
|
||||||
@ -38,7 +53,6 @@ prepare_centos7() {
|
|||||||
-s /sbin/nologin \
|
-s /sbin/nologin \
|
||||||
-u $(expr 30000 + $i) \
|
-u $(expr 30000 + $i) \
|
||||||
nixbld$i
|
nixbld$i
|
||||||
rm -f /var/spool/mail/nixbld$i
|
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
@ -46,29 +60,46 @@ prepare_centos7() {
|
|||||||
# mount install directory
|
# mount install directory
|
||||||
#
|
#
|
||||||
|
|
||||||
if ! mount | grep -Fq '/dev/mapper/centos-root on /mnt type xfs'; then
|
if ! mount | grep -Fq ' on /mnt type '; then
|
||||||
mkdir -p /newshit
|
mkdir -p /newshit
|
||||||
mount --bind /newshit /mnt
|
mount --bind /newshit /mnt
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! mount | grep -Fq '/dev/sda1 on /mnt/boot type xfs'; then
|
if ! mount | grep -Fq ' on /mnt/boot type '; then
|
||||||
mkdir -p /mnt/boot
|
mkdir -p /mnt/boot
|
||||||
mount /dev/sda1 /mnt/boot
|
|
||||||
fi
|
|
||||||
|
|
||||||
mount | grep 'on /mnt\>' >&2
|
if mount | grep -Fq ' on /boot type '; then
|
||||||
|
bootdev=$(mount | grep " on /boot type " | sed 's/ .*//')
|
||||||
|
mount $bootdev /mnt/boot
|
||||||
|
else
|
||||||
|
mount --bind /boot/ /mnt/boot
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
#
|
#
|
||||||
# prepare install directory
|
# prepare install directory
|
||||||
#
|
#
|
||||||
|
|
||||||
|
rootpart=$(mount | grep " on / type" | sed 's/ .*//')
|
||||||
|
|
||||||
mkdir -p /mnt/etc/nixos
|
mkdir -p /mnt/etc/nixos
|
||||||
mkdir -m 0555 -p /mnt/var/empty
|
mkdir -m 0555 -p /mnt/var/empty
|
||||||
|
|
||||||
if ! mount | grep -Fq '/dev/mapper/centos-root on /mnt/root type xfs'; then
|
if ! mount | grep -Fq "$rootpart on /mnt/root type "; then
|
||||||
mkdir -p /mnt/root
|
mkdir -p /mnt/root
|
||||||
mount --bind /root /mnt/root
|
mount --bind /root /mnt/root
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# prepare nix store path
|
||||||
|
#
|
||||||
|
|
||||||
|
mkdir -v -m 0755 -p /nix
|
||||||
|
if ! mount | grep -Fq "$rootpart on /mnt/nix type "; then
|
||||||
|
mkdir -p /mnt/nix
|
||||||
|
mount --bind /nix /mnt/nix
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
prepare "$@"
|
prepare "$@"
|
||||||
|
Loading…
Reference in New Issue
Block a user