summaryrefslogtreecommitdiff
path: root/Attic/archauto.sh
blob: 9feca5e604d3b9f35f1e6c9bd2b3df93ea8566c2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#!/bin/bash -x

{

INSTALL_DRIVE=/dev/sda
PARTITION_BOOT=1
PARTITION_SWAP=2
PARTITION_ROOT=3
LABEL_BOOT=BOOT
LABEL_SWAP=SWAP
LABEL_ROOT=ROOT
MOUNT_PATH=/mnt
GIT_REPO=git://andreasbaumann.dyndns.org/cfenginetests.git

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}

sgdisk -n ${PARTITION_ROOT}:0:0 ${INSTALL_DRIVE}
sgdisk -t ${PARTITION_ROOT}:8300 ${INSTALL_DRIVE}
sgdisk -c ${PARTITION_ROOT}:"${LABEL_ROOT}" ${INSTALL_DRIVE}

sgdisk -G ${INSTALL_DRIVE}

mkswap ${INSTALL_DRIVE}${PARTITION_SWAP}
swapon ${INSTALL_DRIVE}${PARTITION_SWAP}
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

# 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

# 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

# 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

# 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

# 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

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
arch-chroot ${MOUNT_PATH} grub-mkconfig -o /boot/grub/grub.cfg
arch-chroot ${MOUNT_PATH} grub-install --target=i386-pc --recheck ${INSTALL_DRIVE}

genfstab -p ${MOUNT_PATH} >> ${MOUNT_PATH}/etc/fstab

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
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

arch-chroot ${MOUNT_PATH} systemctl enable dhcpcd@ens3.service

arch-chroot ${MOUNT_PATH} sh -c "echo 'root:123qwe' | 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

# we use 'git' to manage our promises
arch-chroot ${MOUNT_PATH} pacman --noconfirm -S git

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

# for debugging
#echo "Installation.. press any key to reboot."
#read

echo "Unmounting installation mount points.."
#umount ${MOUNT_PATH}/boot
umount ${MOUNT_PATH}

echo "Done.. Rebooting system.."
sleep 3

systemctl reboot

} 2>&1 | tee -a /dev/ttyS0