2020-09-27 23:31:23 +02:00
|
|
|
### ZFS
|
|
|
|
|
2020-09-28 23:34:35 +02:00
|
|
|
Installiamo zfs nel sistema live (lo script è fornito direttamente da hetzner,
|
|
|
|
l'ho copiato in questa repo)
|
|
|
|
|
|
|
|
```
|
|
|
|
./install_zfsonlinux.sh
|
|
|
|
```
|
|
|
|
|
2020-09-27 23:31:23 +02:00
|
|
|
Lanciamo lo script `create_pools.sh`
|
|
|
|
|
2020-09-28 23:34:35 +02:00
|
|
|
```
|
|
|
|
./create_pools.sh
|
|
|
|
```
|
|
|
|
|
|
|
|
(per importare delle pool già esistenti, facciamo `zfs import -f <nome_pool>`).
|
|
|
|
|
2020-09-27 23:31:23 +02:00
|
|
|
|
|
|
|
### 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`
|
|
|
|
|
2020-09-28 23:34:35 +02:00
|
|
|
```ini
|
2020-09-27 23:31:23 +02:00
|
|
|
[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
|
2020-09-28 23:34:35 +02:00
|
|
|
update-grub
|
2020-09-27 23:31:23 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
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
|