Faire une ISO à partir d'un chroot

Partagez ici vos Trucs et vos Astuces.
Répondre
Avatar du membre
lol
Site Admin
Site Admin
Messages : 3373
Enregistré le : 04 avr. 2016, 12:11
Localisation : Madagascar
Contact :
Status : Hors ligne

15 mars 2017, 17:39

Salut,
Nous allons ici détailler la méthode pour créer une ISO bootable à partir d'un chroot créé avec debootstrap.

On considère que vous avez créé un système de base avec debootstrap et que vous avez à l'aide de chroot ajouté tous les outils dont vous avez besoin...
Bien entendu dans le chroot il y a un système de base minimal et un kernel!

1) Prérequis:

Code : Tout sélectionner

apt install -y syslinux squashfs-tools isolinux syslinux xorriso

2) Préparation du système:
Votre chroot étant dans /var/local/custom, voici les commandes à passer:

Code : Tout sélectionner

mkdir -p /var/local/custom/binary/{live,isolinux}
cp /var/local/custom/boot/vmlinuz-* /var/local/custom/binary/live/vmlinuz
cp /var/local/custom/boot/initrd.img-* /var/local/custom/binary/live/initrd
cp /usr/lib/ISOLINUX/isolinux.bin /var/local/custom/binary/isolinux/
cp /usr/lib/syslinux/modules/bios/* /var/local/custom/binary/isolinux/
cp /usr/share/misc/pci.ids /var/local/custom/binary/isolinux/
Nous construisons ensuite le fichier filesystem.squashfs (c'est lui qui contient tout le système du Live CD)

Code : Tout sélectionner

cd /var/local/
mksquashfs custom custom/binary/live/filesystem.squashfs -comp xz -e boot

voici un exemple de fichier isolinux.cfg simple (Ce sera votre menu de démarrage!).

Code : Tout sélectionner

mkdir -p /var/local/fichiers-custom/
nano /var/local/fichiers-custom/isolinux.cfg

Code : Tout sélectionner

ui vesamenu.c32
prompt 0
menu title Debian Jessie custom par debian-fr.xyz ;-)
timeout 300

label live-amd64
        menu label ^Live (amd64)
        menu default
        linux /live/vmlinuz
        append initrd=/live/initrd boot=live nomodeset quiet lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-model=pc105 keyboard-layouts=fr keyboard-variant=latin9 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
        menu label ^Live (amd64 failsafe)
        linux /live/vmlinuz
        append initrd=/live/initrd boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal

endtext

Vous copierez ensuite le fichier isolinux.cfg que vous aurez créé au préalable. C'est le fichie rqui contient le menu de démarrage:

Code : Tout sélectionner

cp /var/local/fichiers-custom/isolinux.cfg /var/local/custom/binary/isolinux/isolinux.cfg
En enfin... vous créez l'ISO avec xorriso:

Code : Tout sélectionner

cd /var/local/custom
xorriso -as mkisofs -r -J -joliet-long -l -cache-inodes -isohybrid-mbr\
 /usr/lib/ISOLINUX/isohdpfx.bin -partition_offset 16 -A "Debian Live"\
 -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4\
 -boot-info-table -o remaster.iso binary
Cela va vous créer le fichier remaster.iso dans le dossier racine du chroot.
Voilà. C'est rapide évidemment. Vos questions et précisions sont les bienvenues!
Debian stable. XFCE.
C'est curieux chez les marins ce besoin de faire des phrases (Les tontons flingueurs).
Avatar du membre
vohu
Membre
Membre
Messages : 455
Enregistré le : 16 avr. 2016, 12:02
Localisation : Strasbourg
Status : Hors ligne

16 mars 2017, 08:31

dsl, je profite de refaire tes tutos pour vérifier si ça marche bien, d'où mon acharnement :)

remplacer dbootstrap par debootstrap

Inverser le paragraphe "Vous copiez ensuite le fichier isolinux..." avec celui contenant le fichier isolinux.cfg.
Même si c'est pas compliqué, quand même donner les lignes pour créer le fichier cfg :

Code : Tout sélectionner

mkdir -p /var/local/fichiers-custom/
nano /var/local/fichiers-custom/isolinux.cfg
Avatar du membre
lol
Site Admin
Site Admin
Messages : 3373
Enregistré le : 04 avr. 2016, 12:11
Localisation : Madagascar
Contact :
Status : Hors ligne

16 mars 2017, 15:14

Salut,
vohu a écrit : 16 mars 2017, 08:31 dsl, je profite de refaire tes tutos pour vérifier si ça marche bien, d'où mon acharnement :)

remplacer dbootstrap par debootstrap

Inverser le paragraphe "Vous copiez ensuite le fichier isolinux..." avec celui contenant le fichier isolinux.cfg.
Même si c'est pas compliqué, quand même donner les lignes pour créer le fichier cfg :

Code : Tout sélectionner

mkdir -p /var/local/fichiers-custom/
nano /var/local/fichiers-custom/isolinux.cfg
Ne sois pas désolé, c'est justifié et apprécié!
Merci.
Debian stable. XFCE.
C'est curieux chez les marins ce besoin de faire des phrases (Les tontons flingueurs).
MicP
Modérateur
Modérateur
Messages : 665
Enregistré le : 16 avr. 2016, 22:14
Status : Hors ligne

17 mars 2017, 00:57

Bonjour

Pour créer la ligne append du fichier /var/local/fichiers-custom/isolinux.cfg
j'avais pensé que chacun utilisant un clavier avec une configuration personnelle,
belges, suisses, bretons, etc. apprécieront peut-être cette ligne de commande :

Code : Tout sélectionner

monAppend="$(sed 's/\"//g;/=$\|^$\|^#\|BACKSPACE/d;s/XKBMODEL/keyboard-model/;s/XKBLAYOUT/keyboard-layouts/;s/XKBVARIANT/keyboard-variants/;s/XKBOPTIONS/keyboard-options/' /etc/default/keyboard) lang=$LANG locales=$LANG timezone=$(cat /etc/timezone)"

Ce qui donne, sur ma machine :

Code : Tout sélectionner

michel@debg53sw:~$ monAppend="$(sed 's/\"//g;/=$\|^$\|^#\|BACKSPACE/d;s/XKBMODEL/keyboard-model/;s/XKBLAYOUT/keyboard-layouts/;s/XKBVARIANT/keyboard-variants/;s/XKBOPTIONS/keyboard-options/' /etc/default/keyboard) lang=$LANG locales=$LANG timezone=$(cat /etc/timezone)"
michel@debg53sw:~$ echo $monAppend
keyboard-model=pc105 keyboard-layouts=fr keyboard-variants=latin9 keyboard-options=compose:lwin,terminate:ctrl_alt_bksp lang=fr_FR.utf8 locales=fr_FR.utf8 timezone=Europe/Paris
michel@debg53sw:~$ 
Avatar du membre
lol
Site Admin
Site Admin
Messages : 3373
Enregistré le : 04 avr. 2016, 12:11
Localisation : Madagascar
Contact :
Status : Hors ligne

17 mars 2017, 06:23

Hello @MicP,

Merci pour l'astuce!
Debian stable. XFCE.
C'est curieux chez les marins ce besoin de faire des phrases (Les tontons flingueurs).
Avatar du membre
PengouinPdt
Contributeur
Contributeur
Messages : 1340
Enregistré le : 23 avr. 2016, 23:37
Localisation : 47/FR
Diaspora* : https://framasphere.org/u/hucste
Contact :
Status : Hors ligne

17 mars 2017, 21:06

Le chroot est forcément dans /var/local/custom ?
PengouinPdt { le seul, le vrai } ~ " Libre as a Pengouin "
- DIY - Debian Sid | Devuan Ceres
----
Ne réponds pas aux PM d'assistance
Avatar du membre
lol
Site Admin
Site Admin
Messages : 3373
Enregistré le : 04 avr. 2016, 12:11
Localisation : Madagascar
Contact :
Status : Hors ligne

18 mars 2017, 06:49

Salut,
PengouinPdt a écrit : 17 mars 2017, 21:06Le chroot est forcément dans /var/local/custom ?
Non bien sur.
N'importe quel dossier fait l'affaire.
Il faut juste penser à avoir suffisamment de place dans la partition ou on fait le chroot (D'autant plus si on ajoute environnement graphique et logiciels).

Je ferais un petit T&A sur chroot.
Debian stable. XFCE.
C'est curieux chez les marins ce besoin de faire des phrases (Les tontons flingueurs).
Avatar du membre
arpinux
Membre
Membre
Messages : 37
Enregistré le : 06 mai 2016, 13:06
Contact :
Status : Hors ligne

20 mars 2017, 01:57

salut ;)
donc partant d'un chroot, on peut sortir un live direct en Stretch dès maintenant ou toute autre configuration particulière genre utilisation d'un dépôt tiers (aux normes Debian)

je m'abonne ! :D
nous sommes tous différents ... c'est notre point commun
Avatar du membre
lol
Site Admin
Site Admin
Messages : 3373
Enregistré le : 04 avr. 2016, 12:11
Localisation : Madagascar
Contact :
Status : Hors ligne

20 mars 2017, 06:30

Hello,
arpinux a écrit : 20 mars 2017, 01:57 salut ;)
donc partant d'un chroot, on peut sortir un live direct en Stretch dès maintenant ou toute autre configuration particulière genre utilisation d'un dépôt tiers (aux normes Debian)

je m'abonne ! :D
Oui!
J'ai vu que tu avais déjà travaillé d'arrache-pied sur ce sujet: http://arpinux.developpez.com/construir ... ve-debian/
Quand mon script sera un peu plus propre je le partagerais Il fait le debootsrap, le chroot et l'ISO dans la foulée.

En cours de chroot je dois encore répondre à 3/4 question, je n'ai pas encore réussi à tout automatiser. Ça reste acceptable. :icon_wink:
Debian stable. XFCE.
C'est curieux chez les marins ce besoin de faire des phrases (Les tontons flingueurs).
Avatar du membre
PengouinPdt
Contributeur
Contributeur
Messages : 1340
Enregistré le : 23 avr. 2016, 23:37
Localisation : 47/FR
Diaspora* : https://framasphere.org/u/hucste
Contact :
Status : Hors ligne

20 mars 2017, 16:38

Moi, je vous dis ; ça sent le partage de Sid :p
PengouinPdt { le seul, le vrai } ~ " Libre as a Pengouin "
- DIY - Debian Sid | Devuan Ceres
----
Ne réponds pas aux PM d'assistance
Avatar du membre
vohu
Membre
Membre
Messages : 455
Enregistré le : 16 avr. 2016, 12:02
Localisation : Strasbourg
Status : Hors ligne

23 mars 2017, 11:23

plop, dans le tuto il manque la copie du fichier vesamenu.c32.

Si non, je crois avoir réglé mon problème de kernel panic avec qemu en ajoutant certaines options qui se trouvent dans le menu failsafe.

Du coup, le dernier problème a régler pour moi c'est le clavier en Français et l'autologin de root ou autre utilisateur.
En mode chroot, j'ai bien mon clavier en français pourtant. j'ai installé les variables d'env comme je le fais habituellement mais là, rien à faire, lorsque le live démarre, le clavier reste en qwerty

Voilà ce que je fais dans le chroot pour le moment, une partie à la main le temps de trouver ce qui fonctionne

Code : Tout sélectionner

#modifier le sources.list ajouter contrib et non-free
nano /etc/apt/sources.list
apt-get update

$INST dialog dbus
$INST live-boot linux-image-686
$INST keyboard-configuration locales tzdata console-data 
$INST parted partimage partclone
$INST fuse2fs isolinux extlinux pxelinux e2fslibs ntfs-3g sshfs curlftpfs curl
$INST ssh gnupg firmware-linux python{,3,-all-dev,3-all-dev,-pip} virtualenvwrapper samba
$INST firmware-{atheros,realtek,iwlwifi}
$INST screen rsync xinit xterm

#choisir les FR-fr
dpkg-reconfigure locales
#choisir azerty
dpkg-reconfigure console-data
dpkg-reconfigure keyboard-configuration

echo "live_debian" > /etc/hostname

cat > /etc/environment << FIN
LANGUAGE="fr_FR.UTF-8"
LANG="fr_FR.UTF-8"
LANG_ALL="fr_FR.UTF-8"
FIN

dbus-uuidgen > /var/lib/dbus/machine-id

#changer le mot de passe root
passwd

#temporaire, pour pouvoir entrer des commandes à la main si nécessaire, exit pour sortir et reprendre le script
bash

apt-get clean

update-initramfs -u

rm -v /var/lib/dbus/machine-id
rm -rfv /tmp/*

umount /proc /sys /dev/pts

Avatar du membre
lol
Site Admin
Site Admin
Messages : 3373
Enregistré le : 04 avr. 2016, 12:11
Localisation : Madagascar
Contact :
Status : Hors ligne

23 mars 2017, 11:37

vohu a écrit : 23 mars 2017, 11:23plop, dans le tuto il manque la copie du fichier vesamenu.c32.

Oui un oubli...

Code : Tout sélectionner

cp /usr/lib/ISOLINUX/isolinux.bin /var/local/custom/binary/isolinux/
cp /usr/lib/syslinux/modules/bios/* /var/local/custom/binary/isolinux/
cp /usr/share/misc/pci.ids /var/local/custom/binary/isolinux/
Debian stable. XFCE.
C'est curieux chez les marins ce besoin de faire des phrases (Les tontons flingueurs).
Répondre