Livecd
Sommaire |
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
- lancer la commande lh_build
- modifier, copier vos fichiers une fois chrooté dans votre livecd
- 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)
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
- On démarre une VM avec un SystemRescueCD
- 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é.