mafalda_how_to/installazione.md

190 lines
4.6 KiB
Markdown
Raw Normal View History

2020-09-27 23:31:23 +02:00
### ZFS
Lanciamo lo script `create_pools.sh`
### Installazione debian base
Dal live system, ci segnamo l'output del seguente comando
```
blkid -s PARTUUID -o value <path/to/efi/partition>
```
dove `<path/to/efi/partition>` corrisponde al valore puntato da `${DISK1}-part1`
nello script lanciato nello step precedente. Installiamo nella directory target
il sistema base
```
debootstrap buster /mnt
```
Entriamo in chroot con systemd-nspawn
```
systemd-nspawn -D /mnt
```
Modificare le `/etc/apt/sources.list` per includere i seguenti
```
deb http://deb.debian.org/debian buster main non-free contrib
deb http://deb.debian.org/debian buster-updates main non-free contrib
deb http://deb.debian.org/debian buster-backports main non-free contrib
deb http://security.debian.org buster/updates main non-free contrib
```
Facciamo il pinning (ovvero diciamo ad apt di prendere certi pacchetti da una
specifica repository) per i pacchetti relativi a ZFS, mettendo questo contenuto
in `/etc/apt/preferences.d/90_zfs`
```
Package: libnvpair1linux libuutil1linux libzfs2linux libzfslinux-dev libzpool2linux python3-pyzfs pyzfs-doc spl spl-dkms zfs-dkms zfs-dracut zfs-initramfs zfs-test zfsutils-linux zfsutils-linux-dev zfs-zed
Pin: release n=buster-backports
Pin-Priority: 990
```
Per lo scopo dell'installazione
```
ln -s /proc/self/mounts /etc/mtab
apt update
```
Configurare il locale e la timezone (io ho selezionato `en_US.UTF-8` e locale
`Europe/Berlin`)
```
apt install --yes locales
dpkg-reconfigure locales
dpkg-reconfigure tzdata
```
Installiamo i pacchetti relativi a ZFS nel nuovo sistema
```
apt install --yes dpkg-dev linux-headers-amd64 linux-image-amd64
apt install --yes zfs-initramfs
apt install --yes console-setup
echo REMAKE_INITRD=yes > /etc/dkms/zfs.conf
```
Aggiungiamo la seguente riga nell'`/etc/fstab`
```
PARTUUID=<uuid_da_primo_step> /boot/efi vfat nofail,x-systemd.device-timeout=1 0 1
```
(dove `<uuid_da_primo_step>` è la stringa ottenuta nel primo passo di questa
sezione) e preoccupiamoci di ciò che riguarda il boot
```
apt install dosfstools
apt install --yes grub-efi-amd64 shim-signed
dpkg --purge os-prober
```
Impostiamo la password root
```
passwd
```
(Forse non serve) creiamo e abilitiamo questa unit systemd (in
`/etc/systemd/system/zfs-import-bpool.service`) per forzare l'import della pool
di `/boot`
```dosini
[Unit]
DefaultDependencies=no
Before=zfs-import-scan.service
Before=zfs-import-cache.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/sbin/zpool import -N -o cachefile=none bpool
[Install]
WantedBy=zfs-import.target
```
Adesso installiamo e configuriamo grub
```
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian --recheck
perl -i -pe 's/(GRUB_CMDLINE_LINUX=")/${1}root=ZFS=rpool /' /etc/default/grub
echo 'GRUB_DISABLE_OS_PROBER=true' >> /etc/default/grub
update-grub")'
```
I seguenti passi servono a configurare il boot
```
umount /boot/efi
umount /boot
zfs set mountpoint=legacy bpool
echo "bpool /boot zfs nodev,relatime,x-systemd.requires=zfs-import-bpool.service 0 0" >> /etc/fstab
```
e disabilitiamo il suspend/resume (questo è un server)
```
echo RESUME=none > /etc/initramfs-tools/conf.d/resume
```
### Dropbear
Installiamo dropbear nell'initramfs
```
apt install --yes dropbear-initramfs
```
Configuriamo dropbear per rispondere alla porta `4747` (morto-che-parla)
```
echo 'DROPBEAR_OPTIONS="-s -j -k -p 4747"' >> /etc/dropbear-initramfs/config
```
(`-s` disabilita password login; `-j` disabilita il local port forwarding; `-k`
disabilita il remote port forwarding; `-p` è la porta a cui bindarsi)
Copiamo la chiave pubblica generata in `/etc/dropbear-initramfs/authorized_keys`
```
cat <LA_CHIAVE_PUBLICA> >> /etc/dropbear-initramfs/authorized_keys
```
Configuriamo la rete
```
echo 'IP="144.76.80.140::144.76.80.129:255.255.255.224:::off"' >> /etc/initramfs-tools/initramfs.conf
```
### Stunt per far funzionare zfs al boot in dropbear
Copiamo lo script da [qui][zfsunlock] e mettiamolo in
2020-09-28 22:24:44 +02:00
`/usr/share/initramfs-tools/scripts/zfsunlock` e diamogli l'eseguibilità:
2020-09-27 23:31:23 +02:00
```
2020-09-28 22:24:44 +02:00
chmod +x /usr/share/initramfs-tools/scripts/zfsunlock
2020-09-27 23:31:23 +02:00
```
Poi modifichiamo `/usr/share/initramfs-tools/scripts/zfs` come in [questo
commit][commit] (si può usare la patch in `zfs.patch`, copiandola in
`/tmp/zfs.patch` e invocando `patch < /tmp/zfs.patch`).
Infine, aggiorniamo l'initramfs
```
update-initramfs -u -v
```
[zfsunlock]: https://raw.githubusercontent.com/openzfs/zfs/1cc635a2dd0379181950a1458255ea8ae8b9c1e0/contrib/initramfs/zfsunlock
[commit]: https://github.com/openzfs/zfs/commit/1cc635a2dd0379181950a1458255ea8ae8b9c1e0#diff-98a21a3fd74b681e806ecbd958c2352bL409