lots of fixes, automation for bitfolk
[distro-setup] / bitfolk-chroot-install
1 #!/bin/bash
2
3 if ! test "$BASH_VERSION"; then echo "error: shell is not bash" >&2; exit 1; fi
4 shopt -s inherit_errexit 2>/dev/null ||: # ignore fail in bash < 4.4
5 set -eE -o pipefail
6 trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" exit status: $?, PIPESTATUS: ${PIPESTATUS[*]}" >&2' ERR
7
8
9 host=$1
10
11 case $host in
12 je)
13 ip6=2001:ba8:1f1:f09d
14 ip4=85.119.82.128
15 ;;
16 bk)
17 ip6=2001:ba8:1f1:f0c9
18 ip4=85.119.83.50
19 ;;
20 esac
21
22 debconf-set-selections <<'EOF'
23 locales locales/default_environment_locale select en_US.UTF-8
24 locales locales/locales_to_be_generated multiselect en_US.UTF-8 UTF-8
25 EOF
26
27 # /a/bin/fai/fai/config/hooks/updatebase.UBUNTU
28 debconf --owner=locales sh -c '
29 . /usr/share/debconf/confmodule
30 db_version 2.0
31 db_get locales/locales_to_be_generated &&
32 mkdir -p /var/lib/locales/supported.d &&
33 echo "$RET" > /var/lib/locales/supported.d/local'
34 dpkg-reconfigure -fnoninteractive locales
35
36 apt -y remove --purge --auto-remove netplan.io libnetplan0
37 apt update
38 apt -y install linux-virtual-hwe-20.04 grub-pc-bin openssh-server ifupdown rsync
39 mkdir -p /root/.ssh
40 chmod 700 /root/.ssh
41 cat >/root/.ssh/authorized_keys <<'EOF'
42 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDX42yru/h6r6UDRy/VwVZjcYEmNLG5/SUjv7xwu43OaW0wL+uHYg2rkfn4Ygh5o1I5pgBh2SWg8TeWuVGhgL1SCuBzzeai/+58Sny065Qak+D2WjVOuRonRelh+CBA5EpNZPuiWQkoWdf9NACTBCbS2Zu7r8OOgRqu/ruaDNePlG5+U0Wlpy3oBnpbzQiuSA3AKMW30fsCJtOBjz5qQaiPbYEKJy3AOvtbq10wliKx9TpsTzrq8dKWs7PLhZnzqVCsaq6D95IzjqXcSpx4Cga5bn+YEuAnJQ53PGA5eO+hpz6HDmawTbJlaV/Dufb9bJ/ZZy1DXzs07yWRtTEY54/X ian@iankelling.org
43 EOF
44
45 # https://tools.bitfolk.com/wiki/IPv6
46 cat >/etc/network/interfaces <<EOF
47 auto lo
48 iface lo inet loopback
49
50 # The primary network interface
51 auto eth0
52 iface eth0 inet static
53 address $ip4/21
54 gateway 85.119.80.1
55
56 iface eth0 inet6 static
57 address $ip6::2
58 netmask 64
59 gateway $ip6::1
60 post-up echo 0 > /proc/sys/net/ipv6/conf/default/accept_ra
61 post-up echo 0 > /proc/sys/net/ipv6/conf/all/accept_ra
62 post-up echo 0 > /proc/sys/net/ipv6/conf/$IFACE/accept_ra
63 post-up echo 0 > /proc/sys/net/ipv6/conf/default/autoconf
64 post-up echo 0 > /proc/sys/net/ipv6/conf/all/autoconf
65 post-up echo 0 > /proc/sys/net/ipv6/conf/$IFACE/autoconf
66 EOF
67
68 cat >/etc/fstab <<'EOF'
69 /dev/xvda1 / ext4 noatime,nodiratime 0 1
70 /dev/xvdb1 none swap nofail,x-systemd.device-timeout=30s,x-systemd.mount-timeout=30s,sw 0 0
71 EOF
72
73 cat >> /etc/default/grub <<'EOF'
74 GRUB_CMDLINE_LINUX_DEFAULT=""
75 GRUB_CMDLINE_LINUX="console=hvc0"
76 EOF
77
78 update-grub
79
80 cat >/etc/systemd/resolved.conf.d/servers.conf <<'EOF'
81 [Resolve]
82 DNS=85.119.80.232 85.119.80.233
83 Domains=~.
84 EOF
85
86 cat >/etc/hostname <<EOF
87 $host
88 EOF
89
90 # from fai/fai/config/scripts/FAIBASE/10-misc
91
92 TIMEZONE=US/Eastern
93 echo $TIMEZONE >/etc/timezone
94 if [[ -L /etc/localtime ]]; then
95 ln -sf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime
96 else
97 cp -f /usr/share/zoneinfo/${TIMEZONE} /etc/localtime
98 fi
99
100
101 echo $0 SUCCESS