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
etbilibop-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.
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.
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.
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.
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
avecdebconf
(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 etbilibop.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é surdebian-installer
, et incluant des éléments spécifiques à bilibop (probablement sous forme d'un fichierpreseed
et de scripts pour l'inclure dans une image officielle).