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