Ce que je veux faire
J'ai récemment changé mon desktop de xubuntu à OpenBSD car suite à l'achat d'un clavier mécanique, je l'utilise plus sérieusement. Je compte utiliser un disque de 500 Go pour le système et un disque d'1 To pour les données. Bien évidemment les deux disques sont chiffrés avec softraid.
Mon but est que le deuxième disque soit monté automatiquement au boot, sans même me demander la phrase de passe.
On formate le disque
On commence par chiffrer le nouveau disque. On suppose que c'est wd1. Je suppose que les commandes données sont connues :
$ fdisk -e wd1
$ disklabel -E wd1 # on créé juste la partition p en RAID
$ bioctl -c C -l /dev/wd1p softraid0
à ce moment là, le disque chiffré va être monté sur (supposons) sd1.
$ dd if=/dev/zero of=/dev/rsd1c bs=1m count=1
$ fdisk -e sd1 # on créé la partition a
$ disklabel -E sd1
Mais ça c'est dans la FAQ sinon.
L'automount.
la phrase de passe
On commence par mettre la phrase de passe dans un fichier sur le disque. On s'en fiche car 1) le disque est chiffré 2) c'est pas des données vraiment confidentielles (on a rien à cacher, n'est ce pas ?).
$ echo "92915934093122c04f4711291f8fae282ef56022" > /etc/passphrase
Ensuite on utilise chown(8) et chmod(8) pour arriver à
-rw------- 1 root wheel 123 Nov 8 17:59 /etc/passphrase
(sinon de toute façon, bioctl va râler).
Identifions les disques
À partir de maintenant, on va utiliser des DUIDs et non plus le device car les disques et les volumes créés par softraid peuvent changer, mais pas les DUIDs.
Il y a deux volumes, le physique /dev/wd1
et le logique
/dev/sd1
. Les deux ont bien évidemment chacun leur propre DUID.
Pour trouver le DUID d'un disque, c'est dans disklabel(8) :
$ disklabel wd1 | grep duid
duid: 4d498d4248c8d056
$ disklabel sd1 | grep duid
duid: 384c27964f6e987d
On choisit comment on va le monter
On indique dans /etc/fstab
comment on veut le monter. Dans mon cas à
la fin du fichier c'est :
$ tail -n 1 /etc/fstab
b1e264fc29000110.a /dataporn ffs rw,nodev,nosuid,softdep,noauto 0 0
On voit au début de la ligne le DUID suivi de la lettre "a" car j'ai utilisé (à tort, c'est réservé pour / normalement) la partition "a" pour mes données. Par contre attention, c'est le DUID du volume monté par softraid, pas celui du volume physique.
Je vous laisse lire les mans de mount(8) et de fstab(5) si vous ne comprenez pas les options. On termine par "0 0" pour dire ne pas tenter de le fsck pour la même raison qu'on le met en noauto, car au boot le volume n'a pas encore été monté donc pour le système il n'existe pas (vous pouvez essayer, je l'ai fait :p).
On déchiffre et on monte le disque
On va donc utiliser le fichier /etc/rc.local
pour déchiffrer et monter
le disque et il puisera les informations dans /etc/fstab
pour monter
le volume au bon endroit.
La différence entre -current et -stable est que le script
/etc/rc.local
n'est plus dans /etc
mais dans /etc/examples
.
On rajoute dans ce fichier les lignes :
bioctl -c C -l 4d498d4248c8d056.p -p /etc/passphrase softraid0
echo "check /dataporn"; fsck -p /dataporn; mount -s /dataporn
Cette fois, c'est le DUID du volume physique. On monte le volume
chiffré puis on lance un petit fsck (comme le fait le système au boot)
et enfin, on monte le volume suivant /etc/fstab
.
On peut lancer les commandes à la main pour vérifier que ça se passe bien puis on reboot pour tester et ça devrait marcher.
Les bisous
Merci à semarie et landry@ pour l'aide et les conseils.