Installer OpenBSD et post-installation
simplicité n’est pas synonyme de facilité.
Ceci est mon aide-mémoire pour installer et configurer un nouvel ordinateur avec OpenBSD. Testé avec OpenBSD 7.2.
Écrire l’image sur une clé USB
# dd if=install72.fs of=/dev/rsd1c bs=1m
Redémarrer l’ordi en sélectionnant la clé usb comme disque d’amorçage (Enter, F12).
Installation sur un disque dur encrypté
Suivre les instructions du FAQ.
Sélectionner le (S)hell en tapant S, Enter.
Afficher les disques durs
# sysctl hw.disknames
hw.disknames=sd0:,rd0:5002a2104c89d6f6,sd1:3bd615e698d75c63
Afficher les partitions actuelles sur sd0:
# disklabel sd0
Si sd0 n’apparait pas dans /dev/ vous aurai des messages du type disklabel: DIOCGDINFO: Inappropriate ioctl or device
. Il faut alors créer sd0 manuellement:
# cd /dev && sh MAKEDEV sd0
Effacer le disque dur au complet. Créer une table de partition GUID (GPT) avec une partition RAID.
# dd if=/dev/urandom of=/dev/rsd0c bs=1m
# fdisk -iy -g -b 960 sd0
# disklabel -E sd0
Label
> a a
offset: [1024]
size: [500117105]
FS type: [4.2BSD] RAID
> w
> q
No label changes:
#
Créer un disque virtuel encrypté avec un mot de passe fort. Effacer le premier meg sur le nouveau disque (FAQ).
# bioctl -c C -l sd0a softraid0
# cd /dev && sh MAKEDEV sd2
# dd if=/dev/zero of=/dev/rsd2c bs=1m count=1
# exit
Installation
Sélectionner (I)nstall et répondre aux questions. L’installateur vous aidera à créer les partitions, le mot de passe root, un utilisateur, extraire les paquets du système, configurer le fuseau horaire et la langue du clavier, activer xenodm.
Débrancher la clé USB et redémarrer OpenBSD à partir du disque dur.
Post-installation
Exécuter syspatch(8) pour mettre les dernière mises à jour.
# syspatch
Mettre à jour les firmwares pour activer la carte wifi.
# fw_update
/tmp en ram
On monte /tmp en ram, et on attribue 1/10 de la RAM disponible.
On commente avant tout la ligne contenant déjà une entrée pour /tmp dans /etc/fstab.
# sed -i '/\/tmp /s/^/\#/' /etc/fstab
# printf "swap /tmp mfs rw,nodev,nosuid,-s=%sB 0 0\n" \
$(dmesg |awk '/avail mem/ { print int($4 / 10)}') \
>> /etc/fstab
# chmod 1777 /tmp
/home en 700
$ chmod 0700 $HOME
Utilisation d’imprimante
J’ai une imprimante USB et réseau. Je ne souhaite pas qu’elles soient détectées comme “ulpt”. On installera CUPS plus tard.
echo "disable ulpt" >> /etc/bsd.re-config
Performance d’affichage : machdep.allowaperture
Puisque c’est suggéré dans mon fichier /var/log/Xorg.0.log, j’active ette option:
echo “machdep.allowaperture=1” >> /etc/sysctl.conf
softdeps,noatime
L’option softdeps permet d’accélérer l’utilisation des disques. Attention, en cas de crash, il y a plus de risques d’avoir des pertes malgré le caractère très conservateur du système de fichier d’OpenBSD.
sed -i ‘s/rw,/rw,softdep,/g’ /etc/fstab
On peut aller encore plus loin en ne tenant pas compte des dates d’accès (noatime) :
sed -i ‘s/rw,/rw,softdep,noatime,/g’ /etc/fstab
Ajouter noatime dans fstab(5) pour réduire la fréquence d’écriture au disque dur:
# sed -i 's/rw/rw,noatime/' /etc/fstab
login.conf et performances
Augmenter la limite de mémoire dans login.conf(5):
# cp /etc/login.conf /etc/login.conf.orig
# sed -i 's/datasize-cur=768M/datasize-cur=4096M/' /etc/login.conf
# sed -i 's/datasize-max=768M/datasize-max=4096M/' /etc/login.conf
groupes
Ajouter votre usager au groupe operator pour utiliser les commandes shutdown ou reboot sans nécessiter doas. À partir de OpenBSD 7.4 il faut utiliser le groupe _shutdown (explication).
doas
Donner des droits à votre utilisateur principal dans /etc/doas.conf
:
# usermod -G wheel phil
# cat /etc/doas.conf
permit persist keepenv phil
permit nopass :wheel cmd /sbin/disklabel
permit nopass :wheel cmd /sbin/umount
permit nopass :wheel cmd /sbin/mount
permit nopass :wheel cmd /usr/sbin/zzz
permit nopass :wheel cmd /usr/sbin/ZZZ
wsconsctl
# cat /etc/wsconsctl.conf
keyboard.bell.volume=0
display.brightness=80
rc.shutdown
Scripts à exécuter au shutdown (au besoin)
echo “su phil /home/phil/bin/sync push” >> /etc/rc.shutdown
Configurer les cartes réseau
# echo 'up' > /etc/hostname.re0
# cat /etc/hostname.iwm0
join SSID wpakey votre_cle_wpa
up
# cat /etc/hostname.trunk0
trunkproto failover trunkport re0 trunkport iwm0
dhcp
Définir le NAS dans /etc/hosts
# echo '192.168.1.8 nas' >> /etc/hosts
Voir la FAQ pour la réseautique
Définir le routeur comme passerelle
Facultatif si on utilise DHCP
# echo '192.168.1.1' > /etc/mygate
rc.local
# cat /etc/rc.local
sleep 30 && syspatch
sleep 60 && find /home -name "*.core" -delete &
apm
Activer apmd(8)
# rcctl enable apmd
# rcctl set apmd flags -A -z 8
# rcctl start apmd
apmd (ok)
Pour un laptop: # rcctl set apmd flags -A -z 8
Pour un desktop: # rcctl set apmd flags
ntpd
sed -i 's/www\.google\.com/www.openbsd.org/' /etc/ntpd.conf
ports
Modifier /etc/installurl
avec un mirroir proche de votre endroit. installurl(5)
Liste générée avec pkg_info -zm > pkglist
# ftp https://phil.quebec/bin/pkglist_thinkpad
# pkg_add -vmzl pkglist_thinkpad
Restaurer le $HOME
Si on duplique une autre machine, restaurer les fichiers du backup avec duplicity.
# duplicity file:///mnt/nas/backup/thinkpad/home /home/phil
# duplicity file:///mnt/nas/backup/thinkpad/etc /etc.old
# duplicity file:///mnt/nas/backup/www /var/www/htdoc
Modifier les fichiers dans /etc au besoin (/etc/hosts, etc)
Install dotfiles (fichiers de configuration)
Via la restauration complère de mon $HOME avec duplicity.
Accès au NAS via sshfs
Pris en compte par la restauration du $HOME et des scripts avec duplicity.
$ cat bin/nas
doas sshfs -o allow_other -o uid=1001 -o gid=0 phil@nas:/mnt/ZFSMirroir/MeEtPhilippe /mnt/nas
Autologin
Si on est le seul utilisateur de la machine et que l’ensemble est chiffré et qu’on éteint son ordi lorsqu’on ne l’utilise pas, alors on peut activer l’autologin pour xenodm :
echo 'DisplayManager._0.autoLogin: user' >> /etc/X11/xenodm/xenodm-config
Dans ce cas, je vous conseille de désactiver la possibilité de fermer la session graphique avec Ctrl-Shift-backspace. Sinon, n’importe qui peut prendre le contrôle de votre session même si vous l’avez verrouillée avec xlock (ou autre).
cat << EOF >> /etc/X11/xorg.conf
Section "ServerFlags"
Option "DontZap" "true"
EndSection
EOF
Activer smtpd(8), httpd(8), ifstated(8), ntpd(8), unwind(8).
voilà
Guides utiles
- https://si3t.ch/w/doku.php?id=notes:openbsd:postinst
- https://www.romanzolotarev.com/
- https://www.c0ffee.net/blog/openbsd-on-a-laptop/
- https://jcs.org/2019/08/14/x1c7
Par Philippe St-Jacques