blob: 177d06e472e1edd0c9786f6e6f1ab4f650e21f7b (
plain) (
blame)
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
|
#!/bin/bash
set -euo pipefail
systemd-detect-virt --vm --quiet
test -f /cdrom/lab/owner
mount_config() {
mkdir -p "$1"
modprobe 9pnet_virtio
mount -t 9p config "$1" -o access=0,trans=virtio ||
mount -t virtiofs config "$1"
}
if [ "${1:-}" = live ]; then
mount_config /mnt/lxd-agent
(cd /mnt/lxd-agent && ./install.sh)
umount /mnt/lxd-agent
systemctl start lxd-agent
exit 0
fi
test -d /target/etc
install -m 600 /cdrom/lab/owner /target/etc/canonical-lab
install -m 600 /cdrom/lab/disk-password /target/root/lab-unlock.key
# The disposable guest stores its unlock key in the unencrypted initramfs.
awk 'NF && $1 !~ /^#/ {$3="/root/lab-unlock.key"} {print}' \
/target/etc/crypttab >/target/etc/crypttab.lab
mv /target/etc/crypttab.lab /target/etc/crypttab
mkdir -p /target/etc/dracut.conf.d
printf 'install_items+=" /root/lab-unlock.key "\n' >/target/etc/dracut.conf.d/99-canonical-lab.conf
printf 'canonical-test ALL=(ALL:ALL) NOPASSWD:ALL\n' >/target/etc/sudoers.d/canonical-lab
chmod 440 /target/etc/sudoers.d/canonical-lab
printf '[daemon]\nAutomaticLoginEnable=True\nAutomaticLogin=canonical-test\n' >/target/etc/gdm3/custom.conf
printf 'PermitRootLogin no\nPasswordAuthentication no\nAllowAgentForwarding no\n' >/target/etc/ssh/sshd_config.d/00-canonical-lab.conf
printf 'APT::Get::Assume-Yes "true";\n' >/target/etc/apt/apt.conf.d/99canonical-lab
mkdir -p /target/etc/dconf/profile /target/etc/dconf/db/canonical-lab.d/locks
if ! test -f /target/etc/dconf/profile/user; then
printf 'user-db:user\n' >/target/etc/dconf/profile/user
fi
printf 'system-db:canonical-lab\n' >>/target/etc/dconf/profile/user
printf '[org/gnome/desktop/interface]\nclock-show-weekday=false\n' >/target/etc/dconf/db/canonical-lab.d/00-settings
printf '/org/gnome/desktop/interface/clock-show-weekday\n' >/target/etc/dconf/db/canonical-lab.d/locks/test
curtin in-target --target=/target -- dconf update
mount_config /target/mnt/lxd-agent
curtin in-target --target=/target -- bash -c 'cd /mnt/lxd-agent && ./install.sh'
umount /target/mnt/lxd-agent
curtin in-target --target=/target -- update-initramfs -u -k all
# shellcheck disable=SC2016
curtin in-target --target=/target -- bash -ec \
'for image in /boot/initrd.img-*; do lsinitrd "$image" | grep -F root/lab-unlock.key; done'
|