summaryrefslogtreecommitdiff
path: root/archauto.sh
diff options
context:
space:
mode:
Diffstat (limited to 'archauto.sh')
-rwxr-xr-xarchauto.sh138
1 files changed, 42 insertions, 96 deletions
diff --git a/archauto.sh b/archauto.sh
index 9feca5e..9fc002c 100755
--- a/archauto.sh
+++ b/archauto.sh
@@ -1,88 +1,57 @@
-#!/bin/bash -x
+#!/bin/bash
-{
+# configuration
-INSTALL_DRIVE=/dev/sda
+INSTALL_DRIVE=/dev/vda
PARTITION_BOOT=1
-PARTITION_SWAP=2
-PARTITION_ROOT=3
-LABEL_BOOT=BOOT
-LABEL_SWAP=SWAP
+PARTITION_ROOT=2
LABEL_ROOT=ROOT
MOUNT_PATH=/mnt
-GIT_REPO=git://andreasbaumann.dyndns.org/cfenginetests.git
+HTTP_SERVER=http://eurobuild3.lan:8080
+HOSTNAME=archlinux
+NTP_SERVER=192.168.1.1
-echo "Installing minimalistic base system.."
-
-sgdisk -Z ${INSTALL_DRIVE}
-sgdisk -a 2048 -o ${INSTALL_DRIVE}
-
-sgdisk -n ${PARTITION_BOOT}:0:+100M ${INSTALL_DRIVE}
-sgdisk -t ${PARTITION_BOOT}:ef02 ${INSTALL_DRIVE}
-sgdisk -c ${PARTITION_BOOT}:"${LABEL_BOOT}" ${INSTALL_DRIVE}
-
-sgdisk -n ${PARTITION_SWAP}:0:+900M ${INSTALL_DRIVE}
-sgdisk -t ${PARTITION_SWAP}:8200 ${INSTALL_DRIVE}
-sgdisk -c ${PARTITION_SWAP}:"${LABEL_SWAP}" ${INSTALL_DRIVE}
+echo "Partitioning and creating filesystem.."
-sgdisk -n ${PARTITION_ROOT}:0:0 ${INSTALL_DRIVE}
-sgdisk -t ${PARTITION_ROOT}:8300 ${INSTALL_DRIVE}
-sgdisk -c ${PARTITION_ROOT}:"${LABEL_ROOT}" ${INSTALL_DRIVE}
+wipefs -a ${INSTALL_DRIVE}
+printf ",128M,L,*\n" | /sbin/sfdisk -f ${INSTALL_DRIVE}
+printf ",,L,*\n" | /sbin/sfdisk -a -f ${INSTALL_DRIVE}
-sgdisk -G ${INSTALL_DRIVE}
-
-mkswap ${INSTALL_DRIVE}${PARTITION_SWAP}
-swapon ${INSTALL_DRIVE}${PARTITION_SWAP}
+mkfs.ext2 ${INSTALL_DRIVE}${PARTITION_BOOT}
mkfs.ext4 ${INSTALL_DRIVE}${PARTITION_ROOT}
-#mkfs.ext4 ${INSTALL_DRIVE}${PARTITION_BOOT}
-mkdir -p ${MOUNT_PATH}
mount ${INSTALL_DRIVE}${PARTITION_ROOT} ${MOUNT_PATH}
-#mkdir ${MOUNT_PATH}/boot
-#mount ${INSTALL_DRIVE}${PARTITION_BOOT} ${MOUNT_PATH}/boot
-
-#export http_proxy=http://192.168.1.12:3128
-export no_proxy=localhost,10.0.2.2
+mkdir ${MOUNT_PATH}/boot
+mount ${INSTALL_DRIVE}${PARTITION_BOOT} ${MOUNT_PATH}/boot
-# use our local cache
-sed -i '/\[core\]/aServer = http://10.0.2.2:8080/$repo/os/$arch' /etc/pacman.conf
-sed -i '/\[extra\]/aServer = http://10.0.2.2:8080/$repo/os/$arch' /etc/pacman.conf
-sed -i '/\[community\]/aServer = http://10.0.2.2:8080/$repo/os/$arch' /etc/pacman.conf
+echo "Installing minimalistic base system.."
-# switch off signature for now
sed -i 's/^SigLevel.*/SigLevel = Never/g' /etc/pacman.conf
-pacstrap ${MOUNT_PATH} filesystem grep findutils coreutils glibc bash pacman mkinitcpio linux dhcpcd systemd
+sed -i "/\[core\]/aServer = ${HTTP_SERVER}/\$repo/os/\$arch" /etc/pacman.conf
+sed -i "/\[extra\]/aServer = ${HTTP_SERVER}/\$repo/os/\$arch" /etc/pacman.conf
+sed -i "/\[community\]/aServer = ${HTTP_SERVER}/\$repo/os/\$arch" /etc/pacman.conf
+
+pacstrap ${MOUNT_PATH} filesystem grep findutils coreutils glibc bash pacman mkinitcpio linux dhcpcd systemd sed systemd-sysvcompat
-# use our local cache in installed pacman
-sed -i '/\[core\]/aServer = http://10.0.2.2:8080/$repo/os/$arch' ${MOUNT_PATH}/etc/pacman.conf
-sed -i '/\[extra\]/aServer = http://10.0.2.2:8080/$repo/os/$arch' ${MOUNT_PATH}/etc/pacman.conf
-sed -i '/\[community\]/aServer = http://10.0.2.2:8080/$repo/os/$arch' ${MOUNT_PATH}/etc/pacman.conf
+sed -i 's/^SigLevel.*/SigLevel = Never/g' ${MOUNT_PATH}/etc/pacman.conf
-# add our local packages into a separate repository
-printf "\n[myrepo]\nServer = http://10.0.2.2:8080/\044repo/os/\044arch\n" >> ${MOUNT_PATH}/etc/pacman.conf
+sed -i "/\[core\]/aServer = ${HTTP_SERVER}/\$repo/os/\$arch" ${MOUNT_PATH}/etc/pacman.conf
+sed -i "/\[extra\]/aServer = ${HTTP_SERVER}/\$repo/os/\$arch" ${MOUNT_PATH}/etc/pacman.conf
+sed -i "/\[community\]/aServer = ${HTTP_SERVER}/\$repo/os/\$arch" ${MOUNT_PATH}/etc/pacman.conf
-# synchronize package databases for installed pacman
arch-chroot ${MOUNT_PATH} pacman -Sy
-# switch off signature for now in installed pacman
-sed -i 's/^SigLevel.*/SigLevel = Never/g' ${MOUNT_PATH}/etc/pacman.conf
+echo "Installing boot loader.."
-arch-chroot ${MOUNT_PATH} pacman --noconfirm -S grub-bios sed
-mkdir ${MOUNT_PATH}/boot/grub/locale/
-cp ${MOUNT_PATH}/usr/share/locale/en@quot/LC_MESSAGES/grub.mo ${MOUNT_PATH}/boot/grub/locale/en.mo
-# disable quiet mode, set text mode instead of graphical mode
-# also ban cirrus KVM
-# set correct path of systemd binary (symlink /sbin/init has gone)
-sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="quiet"/GRUB_CMDLINE_LINUX_DEFAULT="modprobe.blacklist=cirrus init=\/usr\/lib\/systemd\/systemd console=ttyS0,9600n8"/g' ${MOUNT_PATH}/etc/default/grub
-sed -i 's/GRUB_GFXMODE=auto/GRUB_GFXMODE=text/g' ${MOUNT_PATH}/etc/default/grub
-sed -i 's/GRUB_TERMINAL_INPUT=console/GRUB_TERMINAL_INPUT=serial/g' ${MOUNT_PATH}/etc/default/grub
-sed -i 's/#GRUB_TERMINAL_OUTPUT=console/GRUB_TERMINAL_OUTPUT=serial/g' ${MOUNT_PATH}/etc/default/grub
-echo 'GRUB_SERIAL_COMMAND="serial --speed=9600 --unit=0 --word=8 --parity=no --stop=1"' >> ${MOUNT_PATH}/etc/default/grub
+genfstab -p ${MOUNT_PATH} > ${MOUNT_PATH}/etc/fstab
+
+arch-chroot ${MOUNT_PATH} pacman --noconfirm -S grub
+sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT.*/GRUB_CMDLINE_LINUX_DEFAULT="quiet"/g' ${MOUNT_PATH}/etc/default/grub
arch-chroot ${MOUNT_PATH} grub-mkconfig -o /boot/grub/grub.cfg
-arch-chroot ${MOUNT_PATH} grub-install --target=i386-pc --recheck ${INSTALL_DRIVE}
+arch-chroot ${MOUNT_PATH} grub-install --force /dev/vda
-genfstab -p ${MOUNT_PATH} >> ${MOUNT_PATH}/etc/fstab
+echo "Configuring base system.."
sed -i 's/^#en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/g' ${MOUNT_PATH}/etc/locale.gen
arch-chroot ${MOUNT_PATH} locale-gen
@@ -91,50 +60,27 @@ echo LANG=en_US.UTF-8 > ${MOUNT_PATH}/etc/locale.conf
ln -s /usr/share/zoneinfo/Europe/Zurich ${MOUNT_PATH}/etc/localtime
arch-chroot ${MOUNT_PATH} hwclock --systohc --utc
-echo "archiso" > ${MOUNT_PATH}/etc/hostname
+echo ${HOSTNAME} > ${MOUNT_PATH}/etc/hostname
arch-chroot ${MOUNT_PATH} systemctl enable dhcpcd@ens3.service
-arch-chroot ${MOUNT_PATH} sh -c "echo 'root:123qwe' | chpasswd"
+arch-chroot ${MOUNT_PATH} sh -c "echo 'root:xx' | chpasswd"
-# synchronized time is a requirement, install and configure ntp
-# we use a standard NTP server, later we can change that via cfengine
-# we don't have a network here (yet, still chrooted)
arch-chroot ${MOUNT_PATH} pacman --noconfirm -S ntp
-#while ! ping -c1 0.pool.ntp.org &>/dev/null; do :; done
-#arch-chroot ${MOUNT_PATH} ntpdate 0.pool.ntp.org
-arch-chroot ${MOUNT_PATH} systemctl enable ntpd.service
-# monitord needs netstat
-arch-chroot ${MOUNT_PATH} pacman --noconfirm -S net-tools
+arch-chroot ${MOUNT_PATH} ntpdate ${NTP_SERVER}
-# we use 'git' to manage our promises
-arch-chroot ${MOUNT_PATH} pacman --noconfirm -S git
+sed -i 's/^server/#server/g' ${MOUNT_PATH}/etc/ntp.conf
+echo "server ${NTP_SERVER}" >> ${MOUNT_PATH}/etc/ntp.conf
-arch-chroot ${MOUNT_PATH} pacman --noconfirm -S cfengine
-
-# install rules for the machine from git
-# no net, must be done as cfengine rule, anyway, rule distribution should
-# happen only on generated cfengine masters
-#arch-chroot ${MOUNT_PATH} git clone ${GIT_REPO} /srv/cfengine/masterfiles
-
-# enable cfengine
-arch-chroot ${MOUNT_PATH} systemctl enable cf-execd.service
-arch-chroot ${MOUNT_PATH} systemctl enable cf-monitord.service
-arch-chroot ${MOUNT_PATH} systemctl enable cf-serverd.service
+arch-chroot ${MOUNT_PATH} systemctl enable ntpd.service
-# for debugging
-#echo "Installation.. press any key to reboot."
-#read
+echo "Unmounting.."
-echo "Unmounting installation mount points.."
-#umount ${MOUNT_PATH}/boot
+umount ${MOUNT_PATH}/boot
umount ${MOUNT_PATH}
-echo "Done.. Rebooting system.."
-sleep 3
-
-systemctl reboot
+echo "Powering off.."
-} 2>&1 | tee -a /dev/ttyS0
-
+sleep 10
+systemctl poweroff