Livecd

De Wiki de Nelly & Richard
Sauter à la navigation Sauter à la recherche
Logo kaella.jpg
Debian.png
Sysrescd.png

Modifier un Live CD basé sur KNOPPIX

Introduction

Il est parfois intéressant malgré les nombreux choix de Live CD actuels, de modifier un live cd existant afin d'adapter au mieux ce dernier. Malgré mes convictions je vous conseille une DEBIAN pour réaliser cette opération. J'ai choisi KAELLA (Distrib Niçoise) qui est une adaptation française de KNOPPIX.

Extraction de l'image ISO

  • Montage de l'image ISO avec cloop-utils
mkdir /tmp/knoppix-cd
mount current.iso /tmp/knoppix-cd -o loop
  • Extraction des fichiers compressés
mkdir /tmp/knoppix-cloop
extract_compressed_fs /tmp/knoppix-cd/KNOPPIX/KNOPPIX >/var/tmp/KNOPPIX-cloop
mount -o loop /var/tmp/KNOPPIX-cloop /tmp/knoppix-cloop
  • Décompression du système de fichier et du CD
mkdir $HOME/my-knoppix-tree $HOME/my-knoppix-cd-tree
système de fichier du cd 
tar -C /tmp/knoppix-cloop -cf - . | tar -C $HOME/my-knoppix-tree -xvpf -
fichiers du cd 
tar -C /tmp/knoppix-cd -cf - . | tar -C $HOME/my-knoppix-cd-tree -xvpf -  

  • Démontage de l'image ISO et du fichier KNOPPIX
umount /tmp/knoppix-cd /tmp/knoppix-cloop
  • Montage du système de fichiers
mount -t proc none $HOME/my-knoppix-tree/proc
  • Préparation du réseau
cp /etc/resolv.conf $HOME/my-knoppix-tree/etc/dhcpc/resolv.conf
  • chroot dans le système de fichiers
chroot $HOME/my-knoppix-tree /bin/sh

Voila vous êtes chrouté dans le cd, un simple ls vous le prouvera :)

Configuration de KAELLA

Bon, deux, trois petits truc qui vous aiderons mais rien de bien folichons.

  • Pour la perso
apt pourra certainement vous aidez
  • Page web s'ouvrant à l'accueil
/usr/share/kaella/index.html
  • Le Wallpaper

L'élément le plus important ;)

$HOME/my-knoppix-cd-tree/KNOPPIX/background.jpg
  • Les signets de konqueror
/etc/skel/.kde/share/apps/konqueror/bookmarks.xml
  • Programmes et/ou fichiers lancés au démarrage

Mettez vos fichiers *.desktop dans /etc/skel/.kde/Autostart/

  • Pour faire les choses proprement
apt-get clean
history -c

ATTENTION : les fichiers que vous déposés dans /home/ par ex. se retrouveront dans /UNIONFS/home/

Compression du Live CD

  • On sort du chroot
exit
umount none
  • Compression du fichier KNOPPIX...
mkisofs -L -R -l -V "KNOPPIX ISO9660" -v -allow-multidot $HOME/my-knoppix-tree | \
create_compressed_fs - 65536 > $HOME/my-knoppix-cd-tree/KNOPPIX/KNOPPIX
  • Création de l'image ISO
mkisofs -pad -l -r -J -v -V "KNOPPIX CRI74 OCSng_client" -no-emul-boot \
-boot-load-size 4 -boot-info-table -b boot/isolinux/isolinux.bin -c \
boot/isolinux/boot.cat -hide-rr-moved -o knoppix.iso my-knoppix-cd-tree/
  • Gravure de l'image ISO
cdrecord -v dev=/dev/cdrom -data knoppix.iso


Liens externes

  • D'autres méthodes suivant les live-cd

http://www.livecdlist.com/wiki/index.php/LiveCD_Creation_Resources

  • Comme vous pourrez le constater ma page est construite essentiellement sur celle-ci

http://www.linuxjournal.com/article/7246

  • Liste des live CD

http://fr.wikipedia.org/wiki/Listes_des_LiveCD_%28Wikip%C3%A9dia%29

Live cd Debian (live-helper)

Contrairement à KNOPPIX DebianLive n'utilise pas cloop-utils mais squashfs, le principe reste le même : compresser votre système

live-helper vous assiste dans la réalisation d'un livecd ou d'une clé USB sous debian.

Vous pouvez vous installer une machine virtuelle sous debian en 64 bits de préférence afin de réaliser tout ceci.

Préparation de la machine virtuelle

debian:~# apt-get -y install live-helper
debian:~# mkdir livecd ; cd livecd

Configuration

Vous pouvez si vous le souhaitez utiliser les paramètres de lh_config (lh_config --help)
Cette commande créer l'arborescence nécessaire à la création de votre livecd :

  • dossier config : contient tous les fichiers de configurations.
 debian:~# lh_config -a i386 -d lenny -b usb-hdd

Pour ma part, j'ai préféré éditer les fichier de config config/chroot et config/binary

fichier binary

Il contient les paramètres pour la création de l'iso (isolinux) ou la clé usb (grub)

variables de bases
  • LH_BINARY_IMAGES: set image type iso, usb-hdd, ...
LH_BINARY_IMAGES="iso"
  • $LH_BOOTAPPEND_LIVE: set boot parameters
LH_BOOTAPPEND_LIVE="locale=fr_FR.UTF-8 keyb=fr noxautologin toram"
  • $LH_SYSLINUX_TIMEOUT: set custom syslinux timeout in seconds
LH_SYSLINUX_TIMEOUT="3"

fichier chroot

Il détermine les paquets à installer, nom du sudousers, ...

variables de bases
  • $LH_INTERACTIVE: set interactive build
LH_INTERACTIVE="enabled"
  • $LH_LANGUAGE: set language to use
LH_LANGUAGE="fr"
  • $LH_PACKAGES: set packages to install
LH_PACKAGES="alsa-base alsa-utils arp-scan array-info bc coreutils corkscrew cpulimit cryptmount cryptsetup curl darkstat \
dhcp3-server dialog dump dvd+rw-tools e2fsprogs ethtool exif finch fluxbox fping gaim gftp gpm graphviz grub gtkterm hdparm \
host htop iceweasel-l10n-fr ifenslave-2.6 ifstat iftop imagemagick iotop iperf iproute iptables iptraf iptstate iputils-ping \
ldapvi less lftp links2 lshw lsof lvm2 mc mdadm metar mii-diag minicom moreutils multitail netdiscover ngrep nfs-kernel-server \
nmap ntfs-3g ntfsprogs ntpdate openssh-server openvpn oss-compat partimage pssh pv python rdesktop rsync rtorrent screen \
smbfs sshfs tcpdump telnet telnetd testdisk tftpd-hpa tftp-hpa thttpd tree unzip vim vlan wakeonlan wget whowatch wodim xfe xorg \
xpdf xvnc4viewer zip zsh"
  • $LH_PACKAGES_LISTS: set package list to install

La liste des métapquets se trouvent ici : /usr/share/live-helper/lists/

LH_PACKAGES_LISTS="standard"

Création du livecd

  1. lancer la commande lh_build
  2. modifier, copier vos fichiers une fois chrooté dans votre livecd
  3. exit
  • Il n'y a plus qu'à graver binary.iso ou copier le fichier img sur votre clé :
debian:~# dd if=binary.img | pv | dd of=/dev/sdx

liens externes

SystemRescueCD

Les commandes de bases

Kernel et options de démarrage

  • Suivant votre architecture SystemRescueCD vous propose le kernel 32bits ou 64 bits, respectivement rescuecd et rescue64
  • Si malgré ces 2 kernels votre machine refuse de démarrer il vous reste 2 kernels alternatifs : altker32 et altker64
  • setkmap=fr : clavier français
  • dostartx : démarrage de X
  • docache : rescuecd dans la RAM : pour pouvoir retirer la clef usb ou le cd après le démarrage (RAM >= 512Mo)
  • dodhcp : demande bail dhcp
  • doscsi : permet de charger le module USB et SCSI
  • rootpass : connexion SSH avec le pass souhaité
  • noload=<module> : ne charge pas le module précisé
  • doload=<module> : charge pas le module précisé
  • netboot=nbd://<ip>:<port> : booting over NBD (sysrcd manual NBD | sysrcd manual boot options | échanges lors de la mise en place)

Outils utiles inclus

  • Partimage : création et restauration de partition
  • testdisk : récupération de données et diagnostic disque
  • foremost : récupération de données
  • pxebootsrv : scripts permettant l'usage d'un serveur de thins clients
# démarrage...
root@sysresccd /root % ifconfig eth0 192.168.1.5 && /etc/init.d/pxebootsrv start
# ...faites booter vos clients via PXE...
  • lvm2, mdadm, cryptsetup, ntfs-3g, clamav, python, perl, tcpdump, openssh, oenvpn, zsh, ...
  • liste des paquets

Personnalisation

Dans la même lignée que debian live-helper sysresccd utilise squashfs. Tous les scripts sont déjà en place et la manip et relativement simple.
Décidément on peut tout faire avec ce livecd :)

Préparation

  • Montage du disque dur dans /mnt/custom
root@sysresccd /root % mount /dev/sdx1 /mnt/custom
  • extraction du livecd
root@sysresccd /root % sysresccd-custom extract

chroot dans votre livecd

  • on se chroot dans le dossier (humm... c'est agréable o_O)
root@sysresccd /root % chroot /mnt/custom/customcd/files
  • montage de /proc
root@sysresccd / % mount -t proc none /proc
  • définition de votre serveur DNS
root@sysresccd / % echo "nameserver your_name_server" > /etc/resolv.conf

personnalisation de vos applications

  • mise à jour de portage
root@sysresccd / % emerge --sync
  • recherche d'un paquet puis installation...
root@sysresccd / % emerge --search tree
root@sysresccd / % emerge app-text/tree
  • désinstallation et nettoyage
root@sysresccd / % sysresccd-cleansys x11tools devtools
  • on sort du chroot via un petit ctrl-d puis on démonte le /proc
root@sysresccd /root % umount /mnt/custom/customcd/files/proc/

personnalisation du contenu

Au choix vous pouvez aussi faire ces modifications pendant que vous êtes chrooté dans votre système, du moins en ce qui concerne les fichier de conf.

  • Ajout de vos données :
root@sysresccd /root % cp -av data /mnt/custom/customcd/isoroot/
  • besoin d'action au démarrage :
root@sysresccd /root % vim /mnt/custom/customcd/isoroot/autorun
...
  • les options de démarrage
root@sysresccd /root % vim /mnt/custom/customcd/isoroot/isolinux/isolinux.cfg
...

Finalisation

  • on définit la langue
root@sysresccd /root % sysresccd-custom setkmap fr
  • on recompresse le tout (~20 minutes)
root@sysresccd /root % sysresccd-custom squashfs
  • et on génère l'iso
root@sysresccd /root % sysresccd-custom isogen my_sysresccd

installation sur une clé USB

Préparation de la clé

# umount /dev/sdx1
  • Créer une partition FAT32 sur la totalité de la clé.
  • Formatage de cette partition :
# mkfs.vfat -n NOM_CLEF /dev/sdx1
# mount /dev/sdx1 /mnt/usb/
  • Création des dossiers de base :
# mkdir -p /mnt/usb/boot/grub /mnt/usb/data /mnt/usb/sysrcd

Installation de systemrescuecd

  • Montage de l'iso de systemrescuecd :
# mount -o loop systemrescucd.iso /mnt/iso/
# cd /mnt/iso ; cp sysrcd.dat isolinux/rescuecd isolinux/rescue64 isolinux/initram.igz ../usb/sysrcd/
# sync

Installation de grub

  • Copie des fichiers nécessaires :
# cp /lib/grub/i386-pc/* /mnt/usb/boot/grub/
  • Grub (là ne vous plantez pas de disques)
# grub
grub> find /boot/grub/stage1
      (hd0,1)
      (hd1,0)
grub> root (hd1,0)
      Filesystem is type fat, partition type 0xb
grub> setup (hd1)
      Checking if "/boot/grub/stage1" exists... yes
      Checking if "/boot/grub/stage2" exists... yes
      Checking if "/boot/grub/fat_stage1_5" exists... yes
      Running "embed /boot/grub/fat_stage1_5 (hd2)"...  15 sectors are embedded.
     succeeded
      Running "install /boot/grub/stage1 (hd2) (hd2)1+15 p (hd2,0)/boot/grub/stage2
     /boot/grub/menu.lst"... succeeded
     Done.
grub> quit
  • Avec votre éditeur de texte préféré, éditez : /mnt/boot/grub/menu.lst
default         0
timeout         3
color cyan/blue white/blue

title           systemrescuecd i386
root            (hd1,0)
# ou : uuid            uuid_de_la_clef
kernel          /sysrcd/rescuecd subdir=sysrcd setkmap=fr dodhcp docache doscsi rootpass=XXXX
initrd          /sysrcd/initram.igz
quiet

title           systemrescuecd x64
root            (hd1,0)
kernel          /sysrcd/rescue64 subdir=sysrcd setkmap=fr dodhcp docache doscsi rootpass=XXXX
initrd          /sysrcd/initram.igz
quiet

title           systemrescuecd kernel alternatif 32bits
root            (hd1,0)
kernel          /sysrcd/altker32 subdir=sysrcd setkmap=fr
initrd          /sysrcd/initram.igz
quiet

title           Boot from an existing OS
root            (hd0,0)
chainloader     +1
boot
# sync

Vos données

Sur la même partition que SystemRescueCD
  • Faites-vous simplement un dossier à la même hauteur que le dossier boot et sysrcd contenant vos données.
Partition séparée chiffrer
  • Comme d'habitude je vous donne les infos de bases, pour de plus amples informations les manpages et le site officiel vous aideront.
  • Etant donné que nous travaillons sur une clé USB, il ne faut oublier qu'elle peut-être volée, perdue, ... Donc pourquoi ne pas chiffrer vos données ?
  • Pour cette étape je considère que vous avez réalisé un partitionnement du type :
/dev/sda1 FAT32 ~250Mo
/dev/sda2 lvm le reste
  • Il vous faudra installer cryptsetup
$ sudo apt-get install cryptsetup
  • Afin de pouvoir monter/démonter facilement votre clé USB, nous allons utiliser LUKS : Linux Unified Key Setup.
# Remplissage de la partition de données aléatoire
$ dd if=/dev/urandom of=/dev/sda2

# Préparation de la partition
$ sudo cryptsetup --verbose --verify-passphrase create luksFormat /dev/sda2
# là on devrait vous demander 2 fois votre passphrase.

# ouverture du device
$ sudo cryptsetup luksOpen /dev/sda2 key

# formattage de la partition
$ sudo mkfs.ext3 /dev/mapper/key

# Montage de la partition ext3
$ sudo mount /dev/mapper/key /mnt

# copier vos données puis synchroniser les données et demonter la partition
$ sync && sudo umount /mnt && sudo cryptsetup luksClose /dev/mapper/key
  • Vous n'avez plus qu'à reconnecter votre clé USB et une jolie interface graphique vous demandera votre passphrase
  • manuellement :
$ sudo cryptsetup luksOpen /dev/sda2
# saisie de la passphrase
$ sudo mount /dev/mapper/key /mnt
  • Si vous souhaiter utiliser cette méthode pour des partition sur un poste fixe il vous faudra sans doute ajouter les lignes qui vont bien dans /etc/crypttab et dans ce cas l'utilisation de LUKS ne sera pas conseillé.

Customisation de l'initram.igz

  • Extraction de l'initial ramdisk
root@vm1:/var/tmp/initram/# xzcat ../initram.igz | cpio -idv
  • Archivage et compression de l'initial ramdisk
root@vm1:/var/tmp/initram/# find . | cpio -H newc -o | xz --check=crc32 --x86 --lzma2 > ../initram_custom.igz

sources