-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup.sh
152 lines (118 loc) · 4.86 KB
/
setup.sh
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
141
142
143
144
145
146
147
148
149
150
151
152
#!/bin/bash
echo "setting up raid1"
diskA="/dev/nvme0n1"
diskB="/dev/nvme2n1"
efiPart=${diskA}p1
efiPart2=${diskB}p1
efiMountPoint="/tmp/efi"
btrfsPart=${diskA}p2
btrfsId=$(uuidgen)
btrfsMountPoint="/tmp/btrfs"
newroot="/tmp/newroot"
suite="noble"
linuxVer="6.8.0-31-generic"
###############################################################################
# wipe disks and setup partitions
###############################################################################
sfdisk --wipe always --delete $diskA
sfdisk --wipe always --delete $diskB
sfdisk $diskA << EOF
size=512M, type=U
size=+
EOF
sfdisk $diskB << EOF
size=512M, type=U
size=+
EOF
###############################################################################
# format efi and mount
###############################################################################
mkfs.vfat $efiPart
mkdir -p $efiMountPoint
mount -t vfat $efiPart /tmp/efi
###############################################################################
# download grub and setup minimal grub.cfg
###############################################################################
apt update -y
apt install grub-efi-amd64 -y
# copy into the default uefi path so that the firmware can find and load it
mkdir -p ${efiMountPoint}/EFI/BOOT/
cp /usr/lib/grub/x86_64-efi/monolithic/grubx64.efi ${efiMountPoint}/EFI/BOOT/BOOTX64.efi
cat << EOF > ${efiMountPoint}/EFI/BOOT/grub.cfg
set timeout=5
menuentry "ubuntu" {
search --no-floppy --set=root --fs-uuid ${btrfsId}
linux /@/boot/vmlinuz-${linuxVer} root=UUID=${btrfsId} ro rootflags=subvol=@,degraded
initrd /@/boot/initrd.img-${linuxVer}
}
menuentry "ubuntu2" {
search --no-floppy --set=root --fs-label btrfsraid
linux /@/boot/vmlinuz-${linuxVer} root=LABEL=btrfsraid ro rootflags=subvol=@,degraded
initrd /@/boot/initrd.img-${linuxVer}
}
EOF
# copy over the efi as backup
dd if=$efiPart of=$efiPart2
###############################################################################
# format and mount btrfs
###############################################################################
mkfs.btrfs -f --label btrfsraid --uuid $btrfsId -m raid1 -d raid1 $btrfsPart ${diskB}p2
mkdir -vp $btrfsMountPoint
mount -vt btrfs $btrfsPart $btrfsMountPoint
###############################################################################
# setup btrfs and chroot fs
###############################################################################
btrfs subvolume create $btrfsMountPoint/@
btrfs subvolume create $btrfsMountPoint/@home
btrfs subvolume create $btrfsMountPoint/@var
btrfs subvolume create $btrfsMountPoint/@snapshots
btrfs subvolume create $btrfsMountPoint/@logs
mkdir -vp $newroot
mount -vt btrfs -o subvol=@ $btrfsPart $newroot
mkdir -vp $newroot/home
mount -vt btrfs -o subvol=@home $btrfsPart $newroot/home
mkdir -vp $newroot/.snapshots
mount -vt btrfs -o subol=@snapshots $btrfsPart $newroot/.snapshots
mkdir -vp $newroot/var
mount -vt btrfs -o subvol=@var $btrfsPart $newroot/var
mkdir -vp $newroot/var/logs
mount -vt btrfs -o subvol=@ogs $btrfsPart $newroot/var/logs
mkdir -vp $newroot/dev
mount --bind /dev $newroot/dev
mkdir -vp $newroot/sys
mount --bind /sys $newroot/sys
mkdir -vp $newroot/proc
mount --bind /proc $newroot/proc
###############################################################################
# install debootstrap
###############################################################################
apt install debootstrap
debootstrap $suite $newroot
###############################################################################
# fstab and sudoers
###############################################################################
cat << EOF > $newroot/etc/fstab
UUID=$btrfsId / btrfs degraded,defaults,subvol=/@ 0 0
UUID=$btrfsId /home btrfs degraded,defaults,subvol=/@home 0 0
UUID=$btrfsId /.snapshots btrfs degraded,defaults,subvol=/@snapshots 0 0
UUID=$btrfsId /var btrfs degraded,defaults,subvol=/@var 0 0
UUID=$btrfsId /var/log btrfs degraded,defaults,subvol=/@logs 0 0
EOF
sed -i 's/^%sudo.*$/%sudo ALL=(ALL:ALL) NOPASSWD:ALL/' $newroot/etc/sudoers
###############################################################################
# install in chroot
###############################################################################
chroot $newroot /bin/bash <<EOF
echo "Europe/Berlin" > /etc/timezone
echo "rippy" > /etc/hostname
DEBIAN_FRONTEND=noninteractive dpkg-reconfigure tzdata
apt update -y
apt install -y linux-image-${linuxVer} vim curl git openssh-server
useradd -m -s /bin/bash -p "\$6$HGNy.V6smXGeivrN\$Rimm3drQRh4hK8p2bKqn8apC.avoFrU9C9opiOH0bMkAlYcPzU4H9gx/TpnxeIWnXVXnAPMW8QarA66nnHZdh." ned3si
usermod -aG sudo ned3si
mkdir -p /home/ned3si/.ssh/
curl https://github.com/dneumair.keys > /home/ned3si/.ssh/authorized_keys
chown -R ned3si:ned3si /home/ned3si/.ssh
chmod 700 /home/ned3si/.ssh
chmod 600 /home/ned3si/.ssh/authorized_keys
EOF