OBSD4* : wiki

Personnaliser une image d'installation

Si vous voulez personnaliser en avance une image d'installation d'OpenBSD, voici comment faire.

Tout d'abord, procurez-vous le dernier fichier d'installation. À l'heure où j'écris ces lignes, il s'agit de install60.fs.

Extraction

Une fois téléchargé, on extrait les fichiers contenus dans cette image que l'on va mettre dans un dossier install60 :

mkdir -p install60
vnconfig vnd0 install60.fs
mount /dev/vnd0a /mnt
cp -r /mnt/* install60/

On retire le montage de l'image install60.fs :

umount /mnt
vnconfig -u vnd0

Il est maintenant possible de personnaliser le contenu de l'image.

Personnalisation

Il vous est possible d'ajouter un set à ceux qui existent déjà. L'un des sets particulièrement intéressant à envisager est site60.tgz. Vous pouvez mettre à l'intérieur :

  • Un script install.site qui sera exécuté juste après l'installation d'OpenBSD
  • Un script etc/rc.firsttime qui sera lancé dès le premier lancement de votre installation tout fraîche.
  • Créez les dossiers usr/local/bin ou etc/ dans votre archive avec les fichiers que vous souhaitez avoir par défaut sur votre installation
  • … Soyez créatifs

Pour créer cette archive, la commande suivante fait l'affaire, à supposer que votre pseudo-racine est dans un dossier site/ :

cd site/
tar cvzf site60.tgz *

Pré-remplir avec des packages

Vous pouvez très bien ajouter à votre image d'installation des paquets prêts à être installés. Il faudra juste préciser une variable PKG_PATH qui pointe vers le dossier contenant tous les paquets.

Autre chose importante, il faut mettre dans ce dossier le package quirks.

Puisque récupérer toutes les dépendances d'un paquet peut s'avérer compliqué, je vous propose le script suivant. Pour fonctionner, il suppose que les paquets à récupérer sont déjà installés sur votre machine :

#!/bin/sh
# Auteur :      thuban <thuban@yeuxdelibad.net>
# licence :     MIT

# Description : download all packages and theirs dependencies
# Depends : openbsd
# warning : all packages must be installed ont the openbsd host which run this script

PACKAGES="mupdf
st
firefox-esr
"

OUTDIR=site/home/root/pkg_cache


get_deps() {
    DEPS=$(pkg_info -f $1 | grep '^@depend' | cut -f 3 -d :)
    echo $DEPS
}

dl_pkgs() {
    DEPS=$(get_deps $1)
    for d in $DEPS; do
        if [ ! -f $OUTDIR/$d.tgz ]; then
            ftp -C -o $OUTDIR/$d.tgz $PKG_PATH/$d.tgz
            dl_pkgs $d
        fi
    done
    p=$(pkg_info $1 | head -n1 | cut -d':' -f 2)
    ftp -C -o $OUTDIR/$p.tgz $PKG_PATH/$p.tgz
}

mkdir -p $OUTDIR


# quirks is needed
dl_pkgs "quirks"

for p in $PACKAGES; do
    echo "*** $p"
    dl_pkgs $p
done

exit 0

Reconstruire l'image

On commence par créer une nouvelle image avec dd. Remplacez 250 par le nombre de MB que doit faire votre nouvelle image :

dd if=/dev/zero of=disk.img bs=1m count=250

Maintenant, on initialise l'image en créant la partition qui va bien dessus :

vnconfig vnd0 disk.img
fdisk -i vnd0
echo "a\n\n\n\n\nw\nq\n" | disklabel -E vnd0
newfs /dev/rvnd0a

Vous pouvez maintenant monter cette image afin de copier son contenu dedans :

mkdir nouvelle_image
mount /dev/vnd0a nouvelle_image/
cp install60/* nouvelle_image

On rend l'image bootable :

installboot -r nouvelle_image vnd1 /usr/mdec/biosboot /usr/mdec/boot

Puis on démonte tout :

umount nouvelle_image/
vnconfig -u vnd0

Utiliser l'image

Comme d'habitude :

dd if=/location/install*.fs of=/dev/rsd1c bs=1m

Références