---
title: Howto OpenBSD/Flashinstall
categories: openbsd
---

## Introduction

L'idée ici est d'installer OpenBSD sur une mémoire flash type clé USB ou carte SD avec /var en read only afin de préserver le support.

## minicom

S'il n'y a pas d'interface vidéo et qu'il faut utiliser le port console, on utilise `minicom` :

~~~
pu port             /dev/ttyUSB0
pu baudrate         115200
pu rtscts           No 
pu xonxoff          Yes
~~~

On peut aussi lancer la commande directement : `$ minicom -b 115200 -D /dev/ttyUSB0`

## Mise en place

**1. Démarrer sur le CD d'installation d'OpenBSD**

Pour un Raspberry Pi, télécharger une image pour l'architecture ARM64

On peut copier minirootXX.fs sur la carte SD avec dd :

~~~
# dd if=minirootXX.img of=/dev/sdX bs=1M && sync
~~~

* Dans le cas d'une APU, au prompt `boot>` on indique au système que c'est une console série

~~~
boot> stty com0 115200
boot> set tty com0
~~~

Cela peut également être précisé dans le fichier de configuration `/etc/boot.conf`, avec la partition montée sur une autre machine :

~~~
# echo "set tty com0" > /mnt/etc/boot.conf
# echo "stty com0 115200" >> /mnt/etc/boot.conf
~~~

* Dans le cas d'un Raspberry Pi, si l'on veut démarrer sur l'interface HDMI, il faudra remplacer ces commandes par :

~~~
boot> set tty fb0

# echo "set tty fb0" > /mnt/etc/boot.conf
~~~

**Note** : étant donné que l'installeur OpenBSD démarre entièrement en RAM, il est parfaitement possible de booter l'installeur sur une carte SD, puis d'installer sur cette même carte SD le système durant l'installation.

Puis on peut passer à l'installation

**2. Installer OpenBSD sur la Clé USB ou carte SD par exemple**

Pour un support de 8G, on utilise ce type de partitionnement :

**Note** : pour un Raspberry Pi, il est important de garder la partition MSDOS automatiquement créée pour pouvoir booter ensuite sur la carte SD.

~~~
/ 1G (a)
swap 512M (b)
/var 1536M (d)
/usr 2G (e)
/home lereste (f)
~~~

**3. Une fois la machine redémarrée on applique les modifications suivantes :**

~~~
# mkdir /var_persistent
# vi /etc/fstab
~~~

On modifie le fichier /etc/fstab afin qu'il ressemble à cela :

~~~
7c9d38374e397267.b none swap sw
7c9d38374e397267.a / ffs rw,softdep,noatime 1 1
7c9d38374e397267.f /home ffs rw,softdep,noatime,nodev,nosuid 1 2
7c9d38374e397267.e /usr ffs rw,softdep,noatime,nodev 1 2
7c9d38374e397267.d /var_persistent ffs ro,softdep,noatime,nodev,nosuid 1 2
swap    /var    mfs   rw,nodev,nosuid,-P=/var_persistent,-s1536m   0 0
swap    /tmp    mfs   rw,noexec,nodev,nosuid,-s64m   0 0
~~~

Ici on utilise mfs qui le gros avantage d'avoir l'option -P qui permet de recupérer le contenu d'un dossier !

On redémarre…

~~~
# Reboot
~~~

**4. Une fois la machine de nouveau disponible**

~~~
pkg_add rsync
~~~

**5. On rajoute le rsync de synchronisation vers la partition persistante**

Lors d'un shutdown propre :

~~~
# cat /etc/rc.shutdown
mount -u -w /var_persistent
sync
sleep 1
echo "Syncing /var (MFS) to Flash, please be patient..."
/usr/local/bin/rsync -aqH --delete --delete-excluded --exclude='run/*' --exclude='cache/*' --exclude='cron/tabs/*.sock' /var/ /var_persistent/
~~~

En cron une fois par semaine :

~~~
# Sync /var vers /var_persistent une fois par semaine
30      4       *       *       6       /bin/sh /etc/rc.shutdown >/dev/null && /sbin/mount -u -r /var_persistent
~~~

**6. On redémarre pour tester !**

## Upgrade du système

Lors d'une mise à jour du système, il faut remettre /var à la place de /var_persistent :

* Exécuter manuellement le cron pour synchroniser /var et /var_persistent
* Ouvrir `/etc/fstab`
* Commenter la ligne `swap    /var    mfs   rw,nodev,nosuid,-P=/var_persistent,-s1536m   0 0`.
* Remplacer `/var_persistent` par `/var`
* Commenter les lignes ajoutées dans `/etc/rc.shutdown`
* Redémarrer
* Faire [l'upgrade](/HowtoOpenBSD/Upgrade)
* Revenir sur le fichier `/etc/fstab` comme avant
* Redémarrer
* Décommenter les lignes dans `/etc/rc.shutdown`

## Liens utiles

* <https://sites.google.com/site/bsdstuff/mfs>
* <https://www.mimar.rs/en/sysadmin/2015/how-to-increase-openbsds-resilience-to-power-outages/>
* <http://wiki.gcu.info/doku.php?id=openbsd:install_soekris>
* <http://man.openbsd.org/newfs.8>
