krebs 4 infest: add arch-infest and refactor

This commit is contained in:
lassulus 2015-10-17 15:48:53 +02:00
parent fb945f741d
commit 72d15b2266
3 changed files with 56 additions and 23 deletions

View File

@ -1,21 +1,30 @@
#! /bin/sh
set -eux
{
umount /mnt/nix || [ $? -eq 32 ]
umount /mnt/boot || [ $? -eq 32 ]
umount /mnt/root || [ $? -eq 32 ]
umount /mnt || [ $? -eq 32 ]
umount /boot || [ $? -eq 32 ]
umount /mnt/nix
umount /mnt/root
umount /boot || :
umount /mnt/boot
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
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 /newshit/bin /
# TODO ensure /boot is empty
# skip boot
rmdir /newshit/boot
# skip /dev

View File

@ -19,16 +19,9 @@ install_nix() {(
)
nix_src_dir=$(basename $nix_url .tar.bz2)
tar jxf $nix_src_dir.tar.bz2
mkdir -v -m 0755 -p /nix
$nix_src_dir/install
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
for i in \

View File

@ -5,10 +5,14 @@ prepare() {(
if test -e /etc/os-release; then
. /etc/os-release
case $ID in
arch)
prepare_arch "$@"
exit
;;
centos)
case $VERSION_ID in
7)
prepare_centos7 "$@"
prepare_centos "$@"
exit
;;
esac
@ -19,17 +23,28 @@ prepare() {(
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 git 2>/dev/null || yum install -y git
type rsync 2>/dev/null || yum install -y rsync
prepare_common
}
prepare_common() {
if ! getent group nixbld >/dev/null; then
groupadd -g 30000 -r nixbld
fi
for i in `seq 1 10`; do
if ! getent passwd nixbld$i 2>/dev/null; then
useradd \
-c "CentOS Nix build user $i" \
-d /var/empty \
-g 30000 \
-G 30000 \
@ -38,7 +53,6 @@ prepare_centos7() {
-s /sbin/nologin \
-u $(expr 30000 + $i) \
nixbld$i
rm -f /var/spool/mail/nixbld$i
fi
done
@ -46,29 +60,46 @@ prepare_centos7() {
# 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
mount --bind /newshit /mnt
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
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
#
rootpart=$(mount | grep " on / type" | sed 's/ .*//')
mkdir -p /mnt/etc/nixos
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
mount --bind /root /mnt/root
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 "$@"