krebs 4 infest: add arch-infest and refactor
This commit is contained in:
parent
fb945f741d
commit
72d15b2266
@ -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
|
||||
|
@ -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 \
|
||||
|
@ -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
|
||||
|
||||
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
|
||||
|
||||
mount | grep 'on /mnt\>' >&2
|
||||
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 "$@"
|
||||
|
Loading…
Reference in New Issue
Block a user