Bonjour à tous,
Possesseur d'un disque dur 2'5 USB, j'ai cherché à y installer GNU/Linux tout en bénéficiant de la reconnaissance de matériel des livecd, et à le personnaliser pour y inclure les paramètres/logiciels dont j'aurai besoin en déplacement, et le rendre aussi léger que possible tout en étant fonctionnel : aux ptits oignons 😉
J'ai cherché sur le net, mais peu d'infos à ce sujet, je créé donc ce topic en espérant qu'il vous sera utile.
Niveau : facile normalement, moyen sûrement à cause de mes explications fumeuses :p
Temps : quelques minutes si vous avez deja un iso ou un cd de dapper sous la main, à plusieurs heures pour peaufiner votre distrib si vous le souhaitez.
1ere partie : préparation de la distrib bootable sur support USB
Tout d'abord, téléchargez un iso d'install live de Dapper (xubuntu dans mon cas, mais cette astuce doit marcher avec les autres releases).
Montez l'iso et copiez son contenu sur votre disque dans un repertoire que j'appellerai
distusb, mais libre à vous de l'appeller comme vous le souhaitez.
sudo mount /dev/cdrom /cdrom
sudo rsync -ax /cdrom/. /distusb/
Editez le fichier /distusb/isolinux/isolinux.cfg selon vos besoins, pour ma part, j'ai juste mis le live ubuntu en version FR avec clavier azerty, je verrai plus tard pour changer le splash et autres broutilles.
LABEL live
menu label ^Start or install Xubuntu
kernel vmlinuz
append preseed/locale=fr_FR kbd-chooser/method=fr DEBCONF_PRIORITY=critical preseed/file=/cdrom/preseed/xubuntu.seed boot=casper initrd=initrd.gz ramdisk_size=1048576 root=/dev/ram rw quiet splash --
Copiez et renommez le fichier /distusb/isolinux/isolinux.cfg en syslinux.cfg à la racine de votre répertoire distusb, puis copiez les fichiers vmlinuz et initrd.gz aussi à la racine de distusb.
sudo mv /distusb/isolinux/isolinux.cfg /distusb/syslinux.cfg
sudo cp /distusb/isolinux/vmlinuz /distusb/
sudo cp /distusb/isolinux/initrd.gz /distusb/
2eme partie : Préparation du support USB
Syslinux
http://syslinux.zytor.com/faq.php est limité quand au type de partition qu'il peut rendre exécutable : il doit s'agir de FAT16, et doit avoir une taille de secteur de 16Ko (attention, cela implique que la partition ne pourra pas exceder 1Go).
De plus il me semble qu'il ne peut booter sur une partition qui se trouve après le 1024eme cylindre, pour ma part je l'ai donc créée tout au début de mon disque.
Créons donc une partition inférieure à 1Go, en FAT16 avec des secteurs de 16ko, de 950Mo au début du disque (mon disque USB est /dev/sdb, remplacez le par celui correspondant à votre disque)
sudo parted mkpartfs fat16 1 950
Puis rendons la bootable.
sudo parted set /dev/sdb1 boot on
Voila, une fois montée la partition, nous pouvons y copier le contenu du répertoire /distusb
sudo mkdir /mnt/sdb1
sudo mount /dev/sdb1 /mnt/sdb1
sudo rsync -ax /distusb/. /mnt/sdb1/
Dernière étape, rendre le disque bootable, avec syslinux (il faut avoir démonté la partition au préalable) :
sudo umount /mnt/sdb1
sudo syslinux /dev/sdb1
Voila, votre disque USB avec Ubuntu Live est prêt, testez le 😉
Pour ma part, avec USB2 et 512Mo de RAM, la rapidité est bluffante... en 15s environ je suis sous fluxbox.
3eme partie : personnalisation de votre distribution
Cette partie est subsidiaire, tout dépend de vos besoins...
Le filesystem des live cd ubuntu est en squashfs et se trouve dans le répertoire casper de l'iso.
Nous allons le monter pour copier son contenu (lecture seule) dans le répertoire
/distusbfs (libre à vous de ne pas utiliser le même nom que moi)
sudo mkdir /mnt/tmp
sudo mount /distusb/casper/filesystem.squashfs /mnt/tmp -t squashfs -o loop
sudo rsync -av /mnt/tmp/. /distusbfs/.
sudo umount /mnt/tmp
Voila, vous avez maintenant dans le répertoire distusbfs tout le filesystem de votre distrib USB.
Vous pouvez éditer vos fichiers de config, notamment /etc/apt/sources.list pour bénéficier des dépots univers et multiverse éventuellement... ou d'autres à votre convenance.
Pour pouvoir installer/supprimer des logiciels, il faudra se chrooter dans ce répertoire. Mais tout d'abord il faut y copier le fichier /etc/resolv.conf sinon nous n'aurons pas de résolution DNS, et copier le fichier /etc/hosts pour le reverse DNS.
sudo cp /etc/resolv.conf /distusbfs/
sudo cp /etc/hosts /distusbfs/
Enfin, shtroumphons nous 😉
sudo chroot /distusbfs
et apt-getisez tout ce que vous voulez... c'est le moment.
Il nous faut maintenant reconstruire le fichier filesystem.manifest que l'on trouve à la racine de la distrib et dans son répertoire casper/
dpkg-query -W --showformat='${Package} ${Version}\n' | grep -v deinstall > filesystem.manifest
Une fois terminé, sortez de l'environnement chroot avec la commande
exit
Montez votre disque USB (il s'agit pour moi de /dev/sdb1, mais ça peut être différent pour vous)
Copiez le fichier filesystem.manifest à la racine de votre disque usb et dans son répertoire casper/
sudo cp /distusbfs/filesystem.manifest /mnt/sdb1/
sudo cp /distusbfs/filesystem.manifest /mnt/sdb1/casper/
Enfin, nous devons reconstruire le fichier squashfs :
sudo mksquashfs /distusbfs/ /mnt/sdb1/casper/filesystem.squashed
Et voila, le tuto est (enfin) fini ^^ amusez vous bien.
Librement votre 😉