wiki:WikiStart

AReViLive

Qu'est-ce donc?

Comme vous le savez, un live CD est un CD bootable, qui va charger un système linux en mémoire vive. AReViLive est un live CD basé sur la distribution Ubuntu(8.04) sur lequel est préinstallé ARéVi, ainsi que les drivers 3D de la plupart des cartes graphiques récentes, de marque NVIDIA ou ATI.

Il est particulièrement adapté pour:

  • faire une démonstration d'ARéVi et des travaux menés au Cerv.
  • installer un système Ubuntu intégrant ARéVi sur une machine.

Il ne nécessite pas de connection internet pour fonctionner, en effet les drivers étant présents dans l'iso.

Les drivers s'installent automatiquement lors du chargement du système. J'ai patché le soft EnvyNG qui se charge de détecter le modèle de votre carte graphique NVIDIA ou ATI et d'installer en conséquence le bon driver.

Cependant, si vous disposez d'une connection et que vous voulez changer de driver 3D, il vous suffit de lancer la commande suivante:

envyng -g

et de sélectionner la marque de votre carte graphique.

Télécharger une image DVD prête à graver

Fichiers sur le disque

Il embarque également certains fichiers:

  • les sources d'ARéVi, des tests, d'ArWii?
  • les différents tutoriels sur ARéVi
  • une version allégée du DemoChooser? de la salle noire
  • les paquets debian ARéVi créés en collaboration avec F. Devillers

Modes de lancement

Il existe deux modes de lancement pour ARéViLive:

  • un mode graphique avec un bureau GNOME classique
  • un mode dit "console" avec une simple interface twm plus légère

Récupérer l'iso

De l'intérieur du Cerv:

svn checkout svn+ssh://[votre_login]@svn.cerv.fr/var/svn/AReViLive/trunk AReViLive

De l'extérieur:

svn checkout --no-auth-cache --username [votre_login] http://svn-cerv.ath.cx:/svn/AReViLive/trunk AReViLive

Maintenance

Voici un tutoriel pour reconstruire l'iso si vous y apportez des modifications ( http://doc.ubuntu-fr.org/personnaliser_livecd)

Prérequis

  • Posséder l'image d'AReViLive.
  • Disposer d'environ 3Go d'espace libre sur votre Disque Dur.

Extraction du système

On commence par extraire le squashfs de l'image iso pour pouvoir lui apporter les modifications souhaitée.
Au cours du tutoriel, nous allons utiliser plusieurs dossiers. Créez les avec les commandes suivantes (à passer dans votre terminal favori) :

mkdir ~/livecd
cd ~/livecd
mkdir iso squashfs

L'image iso sera stockée dans le dossier iso, dans squashfs sera stocké un « vrai » système.

Copie de l'iso

Il nous faut commencer par copier le contenu de l'image iso sur le disque dur.

  • On va donc le monter :
    sudo mount -o AReViLive_2008m09d21.iso /cdrom
    

Remplacez AReViLive_2008m09d21.iso par le chemin de votre fichier iso.

  • Puis on copie son contenu dans le dossier iso :
    sudo cp -av /cdrom/. iso
    

L'option -a permet de conserver les droits des fichiers copiés

  • Une fois celà fait, on peut le démonter :
    sudo umount /cdrom
    

Copie du squashfs

Nous allons maintenant copier le squashfs (le système de fichier de notre live CD) sur le disque dur afin de pouvoir le modifier.

  • On le monte de la même manière que n'importe quel système de fichier :
    ~/livecd$ sudo mount -t squashfs -o loop iso/casper/filesystem.squashfs /cdrom
    
  • Comme nous l'avons dit au début, le squashfs est un système de fichier sur lequel on ne peut écrire. Il est donc impossible de modifier directement le squashfs que l'on viens de monter. Il faut le copier dans un autre emplacement, le dossier squashfs, que nous avons créé dans ce but :
    ~/livecd$ sudo cp -av /cdrom/. squashfs
    

Attention, cette opération prend un peu de temps.

  • Pour finir, on le démonte :
    sudo umount /cdrom
    

Modification du système

Pour modifier le système que l'on vient de copier, nous utilisons alors un chroot. Pour en savoir plus, consultez man chroot.

  • Quelques réglages préalables pour que le chroot fonctionne correctement :
    ~/livecd$ sudo mount --bind /proc squashfs/proc 
    ~/livecd$ sudo mount --bind /sys squashfs/sys 
    

Ces deux lignes permettent d'utiliser les informations du système hôte

~/livecd$ sudo cp /etc/resolv.conf squashfs/etc/resolv.conf

Afin d'utiliser la connexion réseau du système hôte

~/livecd$ sudo cp /etc/apt/sources.list squashfs/etc/apt/sources.list

Pour utiliser votre sources.list personnel

~/livecd$ sudo gedit squashfs/etc/apt/sources.list

Editez le fichier sources.list si besoin pour activer/désactiver certains dépôts

  • Pour finir, on peut entrer dans le chroot :
    ~/livecd$ sudo chroot squashfs
    

Exemples de modifications

Faites attention à la taille ! Ne soyez pas trop gourmand, si la taille d'un CD (700 Mo) est dépassée, vous ne le saurez malheureusement qu'à la reconstruction du CD . Il est toutefois possible de faire un live DVD, sur lequel vous aurez beaucoup plus d'espace, voire même un live USB.

Mise a jour du système

apt-get update
apt-get dist-upgrade

pas besoin de sudo, vous êtes en root
Attention : la commande apt-get dist-upgrade peut amener une mise à jour du kernel, ce qui vous obligera à une manipulation supplémentaire à la fin.

Installation / Désinstalation de paquets

  • Installez les paquets que vous souhaitez, à l'aide de la commande
    apt-get install *nom du paquet*
    
  • Désinstallez les paquets qui vous sont inutiles :
    dpkg-query -W --showformat='${Installed-Size} ${Package}\n' | sort -nr | less
    

Cette commande vous renvoie la liste des paquets installés, classé par taille. Supprimez ceux qui ne vous servent à rien :

apt-get remove --purge *nom du paquet*
  • Pour installer / désinstaller des langues
    apt-get remove language*
    apt-get install language-pack-fr language-pack-gnome-fr language-support-fr language-pack-kde-fr language-selector
    

Changer fr par la langue souhaitée

Sortie du chroot

D'autres modifications peuvent se faire à l'exterieur du chroot.

  • On nettoie le système :
    apt-get clean
    

Supprime les .deb téléchargés via apt-get.

  • On sort du chroot :
    umount /sys
    umount /proc
    rm /etc/resolv.conf
    exit
    

Insérer des fichiers

Dans le repertoire utilisateur

L'utilisateur par défaut du système chargé lorsque l'on utilise le live CD n'existe pas dans le système compressé. Il est crée par casper pendant le boot. casper copie les fichiers se trouvant dans /etc/skel dans le dossier utilisateur qu'il crée au boot.
Placez donc tous les fichiers que vous voulez dans ce dossier, ils apparaîtront dans le repertoire personnel après le boot.

~livecd$ sudo cp *votre fichier* squashfs/etc/skel

Nous allons pouvoir utiliser cette propriété un peu plus tard pour modifier l'apparence du bureau et utiliser par défaut des thèmes personnalisés.

Dans le système

Vous pouvez recopier des fichiers au même emplacement que sur votre propre système, par exemple :

  • Des thèmes
    ~/livecd$ sudo cp -r /usr/share/themes/* squashfs/usr/share/themes
    
  • des fonds d'écran
    ~/livecd$ sudo cp -r /usr/share/backgrounds/* squashfs/usr/share/backgrounds/
    
Rendre le boot explicite

Il est possible de supprimer l'option "quiet" du boot, afin que toutes les étapes soient détaillées.
Éditez le fichier isolinux.cfg qui se trouve dans le dossier iso :

~/livecd$ sudo gedit iso/isolinux/isolinux.cfg

Supprimez toutes les occurrences du mot "quiet". Vous pouvez également supprimer le mot "splash", vous supprimerez ainsi le logo ubuntu ainsi que la barre de chargement. Enregistrez et quittez.

Utiliser une langue par défaut
~/livecd$ echo "fr" | sudo tee iso/isolinux/lang

Remplacez fr.

Modifier l'utilisateur par défaut

L'utilisateur par défaut (cerv) est créé lors du boot par le programme casper. Pour modifier celui-ci, Il faut

  • modifier les fichiers de configuration de casper
  • régénérer le fichier initrd dans le squashfs (en chroot)
  • Modifier le nom de l'utilisateur
    ~/livecd$ sudo gedit squashfs/etc/casper.conf 
    

Ce fichier est court et explicite,

 # This file should go in /etc/casper.conf
 # Supported variables are:
 # USERNAME, USERFULLNAME, HOST, BUILD_SYSTEM
 
 export USERNAME="cerv"
 export USERFULLNAME="Live session user"
 export HOST="ubuntu"
 export BUILD_SYSTEM="Ubuntu"

Modifiez les valeurs à votre convenance.

  • Régénération du fichier initrd

Pour que ces modification soient prises en compte, il est impératif de recréer le fichier initrd qui est chargé au boot. Cette étape est réalisé en chroot (à l'intérieur du système du live CD).

~/livecd$ sudo chroot squashfs
update-initramfs -k all -u
exit

Ceci n'est qu'un aperçu des modifications que vous pouvez faire, il serait impossible de les lister toutes.

Reconstruction du système

Reconstruction du squashfs
  • Pour cette étape, nous allons avoir besoin d'un paquet :
    sudo apt-get install squashfs-tools
    
  • On efface l'ancien squashfs :
    ~livecd$ sudo rm iso/casper/filesystem.squashfs
    
  • Puis on crée le nouveau :

Tout d'abord, il faut régénérer le fichier manifest pour qu'il prenne en compte les modifications dans les paquets.

~/livecd$ sudo chmod a+w iso/casper/filesystem.manifest
~/livecd$ sudo chroot squashfs dpkg-query -W --showformat='${Package} ${Version}\n' > iso/casper/filesystem.manifest
~/livecd$ sudo chmod go-w iso/casper/filesystem.manifest
~/livecd$ sudo chmod a+w iso/casper/filesystem.manifest-desktop 
~/livecd$ sudo chroot squashfs dpkg-query -W --showformat='${Package} ${Version}\n' > iso/casper/filesystem.manifest-desktop 
~/livecd$ sudo chmod go-w iso/casper/filesystem.manifest-desktop

Il faut maintenant compresser le système de fichier du Live CD pour pouvoir le mettre dans une image CD.

~/livecd$ cd squashfs
~/livecd/squashfs$ sudo mksquashfs . ../iso/casper/filesystem.squashfs -nolzma -info
~/livecd/squashfs$ cd ..

Comme toute compression, cela prend beaucoup de ressources et peut prendre du temps. On rajoute -info à la fin qui équivaut à un verbose... pratique pour voir l'avancement de la compression (la barre de progression reste visible) et aussi pour voir ce qui pourait bloquer par moments ;). Une fois que ça a finit de mouliner, la taille de votre fichier s'affiche dans le terminal, vous savez donc si vous avez dépassé la taille maximale ou pas. Si c'est le cas, supprimez des applications/fichiers dans le système, et recommencez.

Création de l'iso

  • Si le noyau a été mis à jour, ou que vous avez modifié le compte utilisateur, il va falloir remplacer deux fichiers essentiels sur l'image disque, que l'on trouve dans ~/livecd/iso/casper : vmlinuz et initrd.gz

On les remplace par les fichiers vmlinuz-* et initrd-img* que l'on trouve dans le dossier ~livecd/squashfs/boot (* représente la version du noyau à jour)

~livecd$ sudo cp squashfs/boot/vmlinuz-2.6* iso/casper/vmlinuz 
~livecd$ sudo cp squashfs/boot/initrd.img-2.6* iso/casper/initrd.gz
  • On régénère un nouveau hash MD5 afin qu'il reflète le nouveau contenu du CD.
    ~livecd$ cd iso
    ~livecd/iso$ sudo su
    ~livecd/iso$ find . -type f -print0 |xargs -0 md5sum | tee md5sum.txt
    ~livecd/iso$ exit
    ~livecd/iso$ cd ..
    

C'est terminé, il ne reste plus qu'à reconstruire une image iso :

~/livecd$ sudo mkisofs -r -V "Custom AReViLive" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o custom-AReViLive.iso iso

Cette commande crée le fichier iso dans le répertoire courant.

Modifications de la configuration du compte utilisateur

Votre live CD est prêt à l'emploi. Comme indiqué brièvement dans la section Modifications, il est possible de rajouter des fichiers dans le répertoire utilisateur. Cela est aussi valable pour les fichiers de configuration, nous allons donc exploiter cette possibilité pour modifier les réglages par défaut du compte utilisateur.

Il est nécessaire de démarrer le cd, en le gravant, ou de préférence en utilisant un système de virtualisation.

Une fois démarré, procédez à toutes les modifications requises, comme appliquer les thèmes rajoutés sur le CD, changer la page d'accueil de firefox ou lui rajouter des modules complémentaires, remanier les menus et la présentation de gnome-panel etc...

Quand vous êtes satisfaits du résultat, ouvrez nautilus et remontez dans l'arborescence au niveau de /home. Créez une archive de votre répertoire utilisateur (clic droit > créer une archive) et sauvegardez là par email ou par FTP.

Vous pouvez maintenant éteindre la machine virtuelle.

Récupérez l'archive et décompressez la, par exemple dans ~livecd/profil

Vous devez maintenant recopier les fichiers de cette archive dans le répertoire /etc/skel du squashfs.

cd livecd
~/livecd$ sudo cp -r profil/. squashfs/etc/skel
~/livecd$ sudo chown -R root:root squashfs/etc/skel

Vérifiez que les fichiers soient au bon emplacement avec ls. Vous devez voir les fichiers de configuration sous cette forme :

~/livecd$ ls -la squashfs/etc/skel
...
drwxr-xr-x   2 root root  304 2008-03-21 08:25 .fontconfig
drwx------   4 root root   96 2008-03-21 08:25 .gconf
drwx------   2 root root   80 2008-03-21 08:25 .gconfd
drwxr-xr-x   4 root root  112 2008-03-21 08:25 .gnome
drwx------   9 root root  272 2008-03-21 08:25 .gnome2
drwx------   2 root root   48 2008-03-21 09:15 .gnome2_private
drwxr-xr-x   2 root root   88 2008-03-21 08:25 .gstreamer-0.10
...

Si tout est OK, il ne reste qu'à recréer une image avec ce nouveau contenu.

Recommencez à partir de #Reconstruction du système. Au prochain démarrage de l'image, les fichiers de configuration seront installés et pris en compte.

Modifications apportées

Paquets

J'ai retiré un certain nombre de paquets pour gagner de la place mais il reste encore du ménage à faire ... Je n'ai pas voulu perdre de temps avec les problèmes de dépendances (risque que plus rien ne marche !) Mais si vous savez ce que vous faites, n'hésitez pas !

La version d'ARéVi installée correspond au paquets ARéVi maintenus par F. Devillers. [voir trac AReVi]

Drivers

Le soft Envyng (paquets envyng-core, envyng-gtk, dkms indispensables) est patché au démarrage du système en fonction de la marque de votre carte graphique, puis restauré. Ce procédé est géré par le script installDrivers3D dans /etc/init.d/ du squashfs.

Trois fichiers sont modifiés: classes.py, main.py, objects.py Trois versions existent dans les dossiers envyngNVIDIA, envyngATI et envyngCORE

Les paquets de drivers doivent être mis dans le répertoire /usr/lib/python2.5/site-packages/Envy/cardsPackages.

Attention à l'architecture, au noyau linux et à la version des paquets !

Modes de lancement

Le script /etc/init.d/modeConsole gère le choix du lancement.

Attention j'ai retiré le lancement automatique du script /etc/init.d/gdm pour le lancer uniquement si on a choisi GNOME.

  • Procédure pour ajouter / supprimer des scripts au démarrage :
    update-rc.d nom_script {start|stop} {ordre de lancement} {runlevels} .
    update-rc.d -f nom_script remove
    

Plus d'informations: man update-rc.d

Pistes d'améliorations

  • Retirez le plus de paquets inutiles possible
  • Etudier les scripts lancés par casper pour éventuellement désactiver certains services (/usr/share/initramfs-tools/scripts/)
  • ...

Informations

N'hésitez pas à me contacter à cette adresse sebleyz@…, j'essaierai de vous répondre dans la limite de mes connaissances ...