Présentation

Le projet bilibop est d'abord né comme une alternative aux systèmes autonomes ou volatiles dits LiveUSB. Son premier objectif était de pouvoir utiliser un système d'exploitation à partir d'un périphérique externe – ce que permettent effectivement les systèmes Live – mais en conservant la capacité de modifier ce système à chaud et de manière pérenne, sans recourir à la nécessité de reconstruire une image du système chaque fois qu'on veut déplacer une virgule ou mettre à jour son noyau.

Puis le projet a évolué vers quelque chose qui a rendu son nom obsolète, puisqu'une partie des programmes qui le composent dépasse largement le cadre du système portatif: au départ, bilibop signifiait Bilibop Is Live Install Boot On Pendrive; maintenant il signifie seulement bilibop, comme un nom propre qui aurait perdu son étymologie au fil du temps.

Le projet est actuellement développé en suivant deux axes principaux, à la fois complémentaires et ayant chacun leurs propres champs d'application:

  • améliorer la qualité d'un système tournant depuis un disque amovible et inscriptible en adaptant le système à cette situation particulière, c'est à dire, essentiellement, en le sécurisant.
  • permettre à un système persistant de s'éxécuter en mode non-persistant.

Description des paquets

Le projet bilibop se présente actuellement sous forme de paquets Debian non-officiels, installables avec les outils classiques de gestion des paquets propres à cette distribution. Ces paquets sont disponibles pour les architectures amd64, armel, armhf, i386, ia64, mips, mipsel, powerpc, s390, s390x et sparc.

bilibop

exécuter Debian GNU/Linux depuis un support externe – métapaquet

Ce paquet dépend de bilibop-lockfs et bilibop-rules.

Vous ne devriez pas l'installer, sauf si votre système tourne depuis un support externe inscriptible.

bilibop-common

fonctions shell pour les scripts bilibop

Ce paquet fournit des fonctions shell utilisables par d'autres scripts bilibop sur le système en cours d'exécution ou dans l'environnement du disque mémoire initial (initramdisk). Ces fonctions utilisent les informations disponibles dans /dev, /proc et /sys pour obtenir le nom du disque ou de la partition hébergeant le système, et sont pleinement utilisables par n'importe quelle utilisatrice ou application sans privilège. Dm-crypt, LVM, les périphériques boucle (loop) et les systèmes de fichiers aufs (et n'importe laquelle de leurs combinaisons) sont supportés. Une commande drivemap est aussi fournie, pour montrer les périphériques bloc dans un arbre de dépendances.

En savoir plus...

bilibop-lockfs

verrouiller les systèmes de fichiers et écrire les changements dans la RAM

Si la fonctionnalité « lockfs » est activée (dans un fichier de configuration, depuis la ligne de commande de démarrage ou par une heuristique), rien ne sera écrit sur les systèmes de fichiers locaux listés dans /etc/fstab, à l'exception de ceux qui ont été placès dans une liste blanche, ou des périphériques d'échange chiffrés.

Le système de fichiers racine est verrouillé (en lecture seule, en utilisant aufs) par un script initramfs qui modifie aussi le fichier temporaire fstab pour préparer les autres systèmes de fichiers à être verrouillés plus tard par un script d'aide à mount.

bilibop-lockfs fournit les fonctionnalités suivantes:

  • une politique basée sur le principe de liste blanche: les systèmes de fichiers sur lesquels vous voulez permettre des modifications persistantes doivent être explicitement listés dans un fichier de configuration.
  • non seulement les systèmes de fichiers sont en lecture seule, mais aussi les périphériques bloc: cela interdit les modifications de la table des partitions, des secteurs d'amorçage, des en-tête LUKS et des métadonnées LVM.
  • la gestion des périphériques d'échange (swap), qui peuvent être utilisés tels quels, manuellement, seulement s'ils sont chiffrés ou pas utilisés du tout.
  • des notifications sont affichées au lancement d'une session X à propos du statut des systàmes de fichiers, pour informer l'utilisatrice que des changements volatiles ou persistants sont permis ou non, et où.

Ce paquet peut être utilisé comme une alternative à fsprotect, spécialement pour les systèmes d'exploitation modifiables embarqués sur clef USB; mais il peut aussi être installé sur des ordinateurs publics ou personnels, pour un usage quotidien, des tests ou comme un outil dans une stratégie anti-récupération.

En savoir plus...

bilibop-rules

règles de gestion des périphériques pour système d'exploitation tournant depuis un support amovible

Ce paquet fournit un fichier de règles udev pour gérer le périphérique externe abritant le système en cours d'exécution. Son but principal est d'interdire l'accès en écriture bas niveau sur ce périphérique et ses partitions par les utilisatrices ou les applications non privilégiées, mais d'autres règles commodes et optionnelles, basées sur udisks, ont été ajoutées pour la gestion du disque système et de ses partitions, ainsi que pour celle des disques internes de la machine hôte. La commande lsbilibop permet à l'aministratrice de mettre à jour les propriétés udev des périphériques après une mdification du fichier de configuration.

Pour faciliter la gestion des périphériques, bilibop-rules fournit aussi des scripts d'aide pour:

  • construire un fichier personnalisé de règles udev pour bilibop s'exécutant plus rapidement que le fichier de règles génériques
  • rendre non-persistants des fichiers de règles udev persistants et cumulatifs
  • obliger GRUB à utiliser une carte des périphériques soit fausse, soit toujours à jour
  • filtrer les Volumes Physiques, pour activer seulement ceux dont le système a besoin

Ce paquet n'est pas conçu pour être utilisé depuis un disque interne. Il fonctionne uniquement sur des systèmes installés sur des média amovibles et modifiables, ce qui inclut les systèmes LiveUSB.

En savoir plus...

bilibop-udev

règle udev minimale pour Debian GNU/Linux tournant depuis un périphérique externe

Ce paquet fournit un fichier de règles udev pour gérer le périphérique externe abritant le système en cours d'exécution. Son but est d'interdire l'accès en écriture bas niveau sur ce périphérique et ses partitions par les utilisatrices ou les applications non privilégiées.

Ce paquet n'est pas conçu pour être utilisé depuis un disque interne. Il fonctionne uniquement sur des systèmes installés sur des média amovibles et modifiables, et plus spécialement les systèmes LiveUSB.

En savoir plus...


Installation

Depuis les sources

Obtenir les sources

Les sources du projet bilibop sont disponibles sur mentors.debian.net (Cf ITP et RFS). Cependant, pour éviter d'interférer avec Debian BTS, il est préférable d'utiliser la version « rétroportée » de quidame, disponible au format tar.gz ou depuis un dépôt git. Leur différence, dont les détails sont exposés sur @lists.debian.org, ne touche qu'à l'utilisation de l'outil reportbug.

Ces sources peuvent être obtenues avec l'une des commandes suivantes:

$ dget https://un.poivron.org/~quidame/debian/pool/main/b/bilibop/bilibop_0.4.11~quidame.dsc

ou:

$ wget https://un.poivron.org/~quidame/debian/pool/main/b/bilibop/bilibop_0.4.11~quidame.tar.gz

ou:

$ git clone http://un.poivron.org/~quidame/git/bilibop.git

Ou encore (mais cela nécessite un paramétrage préalable du système – voir plus bas):

$ apt-get source bilibop

Il est aussi possible de les explorer en ligne.

Construire les paquets

Une fois les sources obtenues et éventuellement dépaquetées, la construction des paquets binaires nécessite que certains programmes soient d'abord installés sur le système; les paquets nécessaires sont listés dans le champs Build-Depends: du fichier debian/control dans l'arborescence des sources. Pour bilibop, il faut au moins debhelper, et si possible fakeroot:

$ sudo apt-get install debhelper fakeroot
$ cd bilibop
$ fakeroot dh binary build

La dernière commande construira les paquets binaires pour l'architecture correspondant au système en cours d'éxécution. Si tout s'est bien passé, vous pouvez nettoyer l'arborescence:

$ dh clean

Installer les paquets

Les paquets ainsi construits s'installent ensuite avec la commande dpkg, en commençant par le paquet dont les autres dépendent:

# dpkg -i /chemin/vers/bilibop-common_*.deb
# dpkg -i /chemin/vers/bilibop-lockfs_*.deb
# dpkg -i /chemin/vers/bilibop-rules_*.deb

Depuis le dépôt

Prérequis

Le dépôt de paquets de quidame sur poivron.org a été construit avec l'outil reprepro et est compatible avec les outils de la suite APT: aptitude(8), apt-get(8), apt-cache(8), apt-file(1), apt-mirror(1)... À LA CONDITION QUE LE PAQUET apt-transport-https SOIT PRÉALABLEMENT INSTALLÉ SUR LE SYSTÈME:

# apt-get install apt-transport-https

Les paquets bilibop décrits ci-dessus peuvent donc être gérés facilement en ajoutant le dépôt de quidame aux sources d'APT, par exemple en créant un fichier quidame.list:

# /etc/apt/sources.list.d/quidame.list
deb https://un.poivron.org/~quidame/debian/ wheezy main
deb-src https://un.poivron.org/~quidame/debian/ wheezy main

Clef GPG

Les fichiers InRelease et *.dsc sont signés avec la clef GPG d'identifiant 0x3AA2078F924898F6. La clef publique est disponible sur les serveurs de clefs et sur poivron.org. Son empreinte est: 83FF A019 1A59 F3AC F2AD F756 3AA2 078F 9248 98F6

Pour ajouter cette clef au trousseau de clefs d'APT, vous pouvez utiliser l'une des commandes suivantes:

# apt-key adv --keyserver hkps.pool.sks-keyservers.net --recv-key 0x3AA2078F924898F6

ou:

# wget -q -O- https://un.poivron.org/~quidame/0x3AA2078F924898F6 | apt-key add -

puis:

# apt-key adv --fingerprint quidame

Installation

La suite est triviale:

# apt-get update
# apt-get install bilibop-lockfs

Rapporter des bogues

Les rapports de bogue sont à envoyer à quidame@poivron.org.

Si vous avez installé les paquets depuis mon dépôt sur poivron.org, il est possible d'utiliser l'outil reportbug(1).


En projet

Plusieurs axes de développement sont actuellement en projet. Qu'il s'agisse d'améliorer ce qui existe déjà (que ce soit du point de vue de l'utilisatrice ou de celui de la développeuse) ou d'apporter de nouvelles fonctionnalités, voire de nouveaux paquets binaires, aucun délai n'est à l'ordre du jour.

Améliorations de l'existant

  • Interfacer bilibop-rules avec debconf(1).

  • Utiliser po4a pour traduire les pages de manuel.

  • Améliorer l'ergonomie de bilibop-lockfs quand la politique soft est appliquée. Le but est de sauver certains fichiers (à partir d'une liste) s'ils ont été modifiés au cours de la session. Dans cette liste de fichiers on trouverait, par défaut, la liste elle-même et bilibop.conf.

Futures nouveautés

  • Pour bilibop-lockfs, fournir des scripts idempotents, capables d'être éxécutés aussi bien depuis l'environnement du système que depuis celui de l'initramdisk, pour modifier certains paramètres du système (notamment le nom d'hôte, l'autologin, les adresses MAC...).

  • Permettre de démarrer sur n'importe quelle machine compatible x86.

  • Créer un paquet bilibop-installer, basé sur debian-installer, et incluant des éléments spécifiques à bilibop (probablement sous forme d'un fichier preseed et de scripts pour l'inclure dans une image officielle).