Script de génération des ISO Custom
Aller à la navigation
Aller à la recherche
ATTENTION : Ce document est en cours de rédaction!!! De nombreux changements vont encore intervenir, il manque beaucoup d'éléments et d'explications.
Les ISOs custom du forum debian-fr.xyz sont générées à l'aides des scripts qui se trouvent sur cette page.
Ils sont largement améliorables et rien n'est figé.
Vous pouvez en discuter ici (page de discussion) ou sur le forum. Et ce sera apprécié...
Le principe:
- On part d'une ISO LIVE DEbian qui contient l'installeur qu'on monte et copie dans un répartoire.
- A l'aide de debbotstrap on crée un système de fichier (dans les scripts qui suivent c'est stable amd64, rien ne vous empêche de changer).
- Avec chroot on "customise" le système de fichiers (Noyau, Gestionnaire de fenêtre, Utilitaires, etc.).
- Avec mksquashfs on recrée le filesystem.squashfs qu'on copie dans la LIVE Debian.
- Avec xorriso on reconstruis l'ISO.
J'utilise apt-cacher-ng. Si ce n'est pas votre cas, remplacez
Proxy="/10.10.10.2:9999"
par
Proxy=""
Script de lancement
# cat live-custom-start.sh
#!/bin/bash
### Variables:
Architecture="amd64"
Branche="stable"
Proxy="/10.10.10.2:9999"
Chemin_base="/var/local"
Nom_chroot="custom"
Chemin_chroot=$Chemin_base/$Nom_chroot
iso="debian-live-8.7.1-amd64-standard.iso"
mkdir -p $Chemin_base/iso
# TEST MONTAGE ISO - Sortie si montée
if mount | grep $iso > /dev/null; then
echo "ISO déjà montée - Impossible de continuer"
exit
else
mount -o loop $Chemin_base/$iso $Chemin_base/iso
fi
rm -rf debian
cp -rp iso debian
umount /var/local/iso
# TEST MONTAGE PSEUDOS SYSTEMES DE FICHIERS - Sortie si montés
if mount | grep $Nom_chroot > /dev/null; then
echo "Pseudo systèmes de fichiers montés - Impossible de continuer"
exit
else
:
fi
# PREPARATION CHROOT + DEBOOTSTRAPING
rm -rf $Chemin_chroot
mkdir -p $Chemin_chroot
apt install -y debootstrap
debootstrap --arch $Architecture $Branche $Chemin_chroot http:/$Proxy/httpredir.debian.org/debian/
mount --bind /dev/pts $Chemin_chroot/dev/pts/
mount --bind /proc $Chemin_chroot/proc/
mount --bind /sys $Chemin_chroot/sys/
#On copie dans le futur chroot les fichiers dont nous aurons besoin, ainsi que le script de personnalisation du chroot
cp -R $Chemin_base/fichiers_chroot/* $Chemin_chroot/tmp/
cp $Chemin_base/personnalisation_chroot.sh $Chemin_chroot/usr/local/bin/personnalisation_chroot.sh
# ENTREE DANS LE CHROOT + PERSONALISATION
chroot ./custom personnalisation_chroot.sh
rm $Chemin_chroot/usr/local/bin/personnalisation_chroot.sh
umount -l $Chemin_chroot/dev/pts/
umount -l $Chemin_chroot/proc/
umount -l $Chemin_chroot/sys/
# CREATION ISO
/var/local/make-custom-iso.sh
exit 0
Script chroot
# cat personnalisation_chroot.sh
#!/bin/bash
### Variables
utilisateur="debian"
mot_de_passe="debian"
### Bureau: mate xfce4 ou lxde
bureau="xfce4"
cp /tmp/hostname /etc/hostname
cp /tmp/hosts /etc/hosts
cp /tmp/mailname /etc/mailname
cp /tmp/sources.list.chroot /etc/apt/sources.list
chmod 1777 /dev/shm/
apt update
apt install -y dialog dbus
dbus-uuidgen > /var/lib/dbus/machine-id
export HOME=/root
apt install -y locales
dpkg-reconfigure locales
dpkg-reconfigure console-data
dpkg-reconfigure keyboard-configuration
dpkg-reconfigure tzdata
apt install -y linux-image-amd64 live-boot
apt upgrade -y
encrypted=$(perl -e 'printf("%s\n", crypt($ARGV[0], "password"))' "$mot_de_passe")
useradd -m -p $encrypted -s /bin/bash $utilisateur
echo 'root:debian'|chpasswd
apt install --ignore-missing -y $(grep -vE "^\s*#" /tmp/programmes/base.liste | tr "\n" " ")
apt install --ignore-missing -y $(grep -vE "^\s*#" /tmp/programmes/utilitaires.liste | tr "\n" " ")
apt install --ignore-missing -y $(grep -vE "^\s*#" /tmp/programmes/firmware.liste | tr "\n" " ")
apt install --ignore-missing -y $(grep -vE "^\s*#" /tmp/programmes/autres_fs.liste | tr "\n" " ")
apt install --ignore-missing -y $(grep -vE "^\s*#" /tmp/programmes/internet.liste | tr "\n" " ")
apt install --ignore-missing -y $(grep -vE "^\s*#" /tmp/programmes/x11.liste | tr "\n" " ")
usermod -a -G lp,floppy,audio,video,cdrom,plugdev,power,netdev,scanner debian
if [ $bureau == "lxde" ]
then
apt install --ignore-missing -y $(grep -vE "^\s*#" /tmp/programmes/lxde.liste | tr "\n" " ")
elif [ $bureau == "mate" ]
then
apt install --ignore-missing -y $(grep -vE "^\s*#" /tmp/programmes/mate.liste | tr "\n" " ")
else
apt install --ignore-missing -y $(grep -vE "^\s*#" /tmp/programmes/xfce4.liste | tr "\n" " ")
fi
mkdir -p /home/debian/Images
cp /tmp/debian/Images/* /home/debian/Images/
mkdir -p /home/debian/.config/autostart
cp /tmp/debian/.xinitrc /home/debian/.xinitrc
if [ $bureau == "lxde" ]
then
mkdir -p /home/debian/.config/pcmanfm/LXDE
cp /tmp/debian/.config/pcmanfm/LXDE/desktop-items-0.conf /home/debian/.config/pcmanfm/LXDE/desktop-items-0.conf
elif [ $bureau == "mate" ]
then
cp /tmp/debian/.config/autostart/gsettings.desktop /home/debian/.config/autostart/gsettings.desktop
else
mkdir -p /home/debian/.config/xfce4/xfconf/xfce-perchannel-xml
mkdir -p /home/debian/.config/xfce4/panel/{launcher-10,launcher-11,launcher-12,launcher-9}
cp -r /tmp/debian/.config/xfce4 /home/debian/.config
mkdir -p /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/
mv /tmp/xfce4-panel.xml /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/
fi
cp /tmp/debian/.config/autostart/conky.desktop /home/debian/.config/autostart/conky.desktop
cp /tmp/debian/.conkyrc /home/debian/.conkyrc
chown -R debian:debian /home/debian
cp /tmp/sources.list.final /etc/apt/sources.list
apt update
apt-get autoremove && apt-get clean
rm /var/lib/dbus/machine-id && rm -rf /tmp/*
exit 0
Script ISO
# cat make-custom-iso.sh
#!/bin/bash
apt install -y syslinux squashfs-tools isolinux syslinux xorriso
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
cd /var/local/
mksquashfs custom custom/binary/live/filesystem.squashfs -comp xz -e boot
cp /usr/lib/ISOLINUX/isolinux.bin /var/local/debian/isolinux/
cp /usr/lib/syslinux/modules/bios/* /var/local/debian/isolinux/
cp /usr/share/misc/pci.ids /var/local/debian/isolinux/
cp /var/local/custom/binary/live/filesystem.squashfs /var/local/debian/live/filesystem.squashfs
cp /var/local/custom/binary/live/vmlinuz /var/local/debian/live/vmlinuz
cp /var/local/custom/binary/live/initrd /var/local/debian/live/initrd.img
cp /var/local/fichiers_iso/memtest86+.bin /var/local/debian/live/memtest86+.bin
cp /var/local/fichiers_iso/splash.png /var/local/debian/isolinux/splash.png
cp /var/local/fichiers_iso/isolinux/* /var/local/debian/isolinux/
# Preparation pour EFI
mkdir -p /var/local/debian/efi/boot
cp /var/local/fichiers_iso/Shell.efi /var/local/debian/efi/boot/Bootx64.efi
echo 'live\vmlinuz initrd=live\initrd.img append boot=live components' > /var/local/debian/liveboot.nsh
chmod +x /var/local/debian/liveboot.nsh
cd /var/local
xorriso -as mkisofs -r -J -joliet-long -l -cache-inodes\
-isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin -partition_offset 16 -A "XYZ Live"\
-b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot\
-boot-load-size 4 -boot-info-table -o remaster.iso debian
exit 0
Lol (discussion) 30 mars 2017 à 10:32 (UTC)