Faire une ISO à partir d'un chroot

Partagez ici vos Trucs et vos Astuces.
Répondre
Avatar de l’utilisateur
lol
Site Admin
Site Admin
Messages : 4974
Inscription : 04 avr. 2016, 12:11
Localisation : Madagascar
Status : Hors-ligne

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!
Règles d'usage du forum. Signalez si vous avez posté votre question sur un autre forum. Explications ici
Debian Unstable. Mate/LXQT. Dieu, en créant l'homme, a quelque peu surestimé ses capacités.
Avatar de l’utilisateur
vohu
Membre
Membre
Messages : 455
Inscription : 16 avr. 2016, 12:02
Localisation : Strasbourg
Status : Hors-ligne

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 de l’utilisateur
lol
Site Admin
Site Admin
Messages : 4974
Inscription : 04 avr. 2016, 12:11
Localisation : Madagascar
Status : Hors-ligne

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.
Règles d'usage du forum. Signalez si vous avez posté votre question sur un autre forum. Explications ici
Debian Unstable. Mate/LXQT. Dieu, en créant l'homme, a quelque peu surestimé ses capacités.
MicP
Modérateur
Modérateur
Messages : 896
Inscription : 16 avr. 2016, 22:14
Status : Hors-ligne

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 de l’utilisateur
lol
Site Admin
Site Admin
Messages : 4974
Inscription : 04 avr. 2016, 12:11
Localisation : Madagascar
Status : Hors-ligne

Hello @MicP,

Merci pour l'astuce!
Règles d'usage du forum. Signalez si vous avez posté votre question sur un autre forum. Explications ici
Debian Unstable. Mate/LXQT. Dieu, en créant l'homme, a quelque peu surestimé ses capacités.
Avatar de l’utilisateur
PengouinPdt
Contributeur
Contributeur
Messages : 1343
Inscription : 23 avr. 2016, 23:37
Localisation : 47/FR
Diaspora* : https://framasphere.org/u/hucste
Contact :
Status : Hors-ligne

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 de l’utilisateur
lol
Site Admin
Site Admin
Messages : 4974
Inscription : 04 avr. 2016, 12:11
Localisation : Madagascar
Status : Hors-ligne

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.
Règles d'usage du forum. Signalez si vous avez posté votre question sur un autre forum. Explications ici
Debian Unstable. Mate/LXQT. Dieu, en créant l'homme, a quelque peu surestimé ses capacités.
Avatar de l’utilisateur
arpinux
Membre
Membre
Messages : 40
Inscription : 06 mai 2016, 13:06
Contact :
Status : Hors-ligne

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 de l’utilisateur
lol
Site Admin
Site Admin
Messages : 4974
Inscription : 04 avr. 2016, 12:11
Localisation : Madagascar
Status : Hors-ligne

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:
Règles d'usage du forum. Signalez si vous avez posté votre question sur un autre forum. Explications ici
Debian Unstable. Mate/LXQT. Dieu, en créant l'homme, a quelque peu surestimé ses capacités.
Avatar de l’utilisateur
PengouinPdt
Contributeur
Contributeur
Messages : 1343
Inscription : 23 avr. 2016, 23:37
Localisation : 47/FR
Diaspora* : https://framasphere.org/u/hucste
Contact :
Status : Hors-ligne

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 de l’utilisateur
vohu
Membre
Membre
Messages : 455
Inscription : 16 avr. 2016, 12:02
Localisation : Strasbourg
Status : Hors-ligne

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 de l’utilisateur
lol
Site Admin
Site Admin
Messages : 4974
Inscription : 04 avr. 2016, 12:11
Localisation : Madagascar
Status : Hors-ligne

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/
Règles d'usage du forum. Signalez si vous avez posté votre question sur un autre forum. Explications ici
Debian Unstable. Mate/LXQT. Dieu, en créant l'homme, a quelque peu surestimé ses capacités.
Répondre