IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Discussion :

Mettre sa debian favori sur iso.


Sujet :

Contribuez

  1. #1
    Membre chevronné
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 036
    Points : 1 917
    Points
    1 917
    Billets dans le blog
    5
    Par défaut Mettre sa debian favori sur iso.
    Bonjour,
    Pendant que je flânais un peu sur du tout et rien en oubliant les contraintes de tâches en instances, une idée me vient ce matin.

    Je démarres un pc de bureau qui sert à pas mal de choses pour mes bricolages.

    Au bout de quelques minutes, je me dis que ce serait sympa d'avoir ce système transportable sur un stockage usb, pour pouvoir dans certains cas de dépannages, pouvoir utiliser l'une des nombreuses possibilités que j'ai dans cette machine.

    Ma première réflexion, du fait de ma familiarisation avec la virtualisation, va pour la création d'une image, qui sera manipulable via qemu.
    Sur un stockage externe usb, j'ai toujours une version un peu récente des binaires qemu ou virtualbox.
    Qemu sera pratique dans bien de situations. Je n'aurais pas besoin d'installer sur une machine Windows. L'archive zip est décompressé sur la clé.
    Virtualbox par contre, il me faut l'installer sur la machine étrangère, à quand une version portable de virtualbox sur usb.

    Mais tout ça au bout du compte m'amène à penser que sur une machine qui ne démarre pas, ou un système instable, pour cause de virus ou autres, fera que je ne pourrais rien faire avec.
    L'idéal est donc de démarrer la machine étrangère directement sur l'image.
    Les systèmes live font légion, dans le monde linux, même Microsoft, depuis Windows 8, en version Pro uniquement je crois, donne une possibilité de créer un live-usb du système installé avec un outil dont je ne me rappelles plus très bien du nom.

    J'ai en trousseau quelques lives de distributions qui sont plus au moins arrangeants. Certains sont configurés avec une option de persistance au démarrage afin de retrouver quelques personnalisations.
    Mais cela ne vaut vraiment pas cette debian installée à partir du minimum, puis enrichi progressivement. Truffée de beaucoup de choses utiles. Contenant une base de travail dans pas mal de cas. Je solutionnes beaucoup de choses à partir de cette machine.

    Alors j'opte donc pour la solution de conversion en un live de mon debian. Je vous met ici le mémo des grandes lignes.

    ______________________________________________________________

    Comment convertir sa debian en live ?
    Ce qui suit permettra de le savoir.
    De mémoire, par curiosité j'avais déjà crée un cd live de démonstration avec un outil assez connu: Live-Build. Le manuel en ligne ici.
    Live-build est un bon départ pour la découverte de la création de systèmes live. Il suffit d'installer le paquet live-build.
    Une fois le paquet installé, consulter la documentation est un prérequis pour tirer son épingle du jeu, les fichiers d'aide se trouvent dans /usr/share/doc/live-manual/ , en formats pdf ou html traduits dans pas mal de langues.

    On suppose que vous avez une petite expérience de la chose, que vous voulez comme moi transporter votre Debian Favori n'importe où, continuez donc la lecture des grandes étapes pour y arriver.

    ______________________________________________________________


    Phase 1 : Préparation d'une copie du sytème.
    Après un df -h, je sais qu'un de mes stockages externes a suffisamment de place pour le clone.

    Première étape.
    Pour cette première étape, le dossier /home ne m’intéresse pas. Pour le reste j'estime avoir besoin de 15 Go. en fait 13 Go.

    On va donc démarrer le pc cible sur un live pour copier proprement et rapidement le système.
    Dans la session live, dans un terminal en tant que root, listage des partitions et montage de la partition qui va accueillir la copie. DANS MON CAS SDB4.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    # fdisk -l
    # mount /dev/sdb4 /mnt
    # cd /mnt
    Pour quelqu'un qui n'a pas de contraintes de temps et d'espace, un bête dd if=/dev/sda of=./monsysteme.img fera l'affaire. Mais ce n'est pas mon cas.:argh:
    Préparation du comité ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    # mkdir -p workspace/mnt    workspace/mnts
     
    # cd workspace
    Seconde étape.
    1. Création du fichier qui va accueillir le clone.
    2. On veut aller vite, donc pas de dd, on va dire à fallocate de réserver pour nous 15 milliards d'octets.
    3. Création du système de fichier ext2 sur ce fichier alloué.
    4. Création des répertoires qui serviront de point de montage pour les besoins de la copie source et destination
    5. Monter le fichier image et les partitions qui importent.


    Dans mon cas, tout n'est pas sur une seule partition : boot, usr, var, home ont leurs partitions. Je dois monter donc celles qui m’intéressent dans le dossier correspondant sauf le home.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # fallocate -l  15000000000 workspace/monsysteme.img
     
    # mkfs workspace/monsysteme.img
     
    # mkdir mnts/src mnts/dst
     
    # mount monsysteme.copy	mnt/dst
     
    # mount /dev/sda5 mnts/dst
     
    # mount /dev/sda7 mnts/dst/usr
     
    ...
    Dernière étape de cette phase.
    Tout est en place. Il faut copier maintenant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    # cp -a --sparse=always workspace/mnts/src/* workspace/mnts/dst/
    Nous avons notre copie. Un cd && sync && umount -a avant de rebooter sur la bécane.
    Le reste du travail sera plus aisé en démarrant sur la machine à convertir.

    ______________________________________________________________

    Phase 2 : Finalisations.

    Dans un premier temps mettre en place les contextes utiles à un chroot sur la copie afin de réaliser quelques aménagements.
    Ouvrir un terminal et se rendre sur le stockage externe, dans le dossier workspace qui contient notre fichier.

    Monter le fichier pour chrooter dessus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    # mount -o rw,suid,dev monsysteme.imf mnts/src
    Vider les répertoires dev et proc ainsi que le fichier fstab dans l'image monteé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    # :> mnts/src/etc/fstab
    # rm -rf mnts/src/dev/*
    # rm -rf mnts/src/proc/*
    Nettoyer notre image système des répertoires inutiles, mais surtout on a deux paquets à installer dont un au moins est vital. Il s'agit de live-boot.
    Par conséquent on s'apprête à faire un chroot.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    # mount -t proc proc mnts/src/proc
    # mount --bind /dev mnts/src/dev
    # LANG=C.UTF-8 chroot ./mnts/src /bin/bash
    On est dans le chroot.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    # export TERM=xterm-color
    Si vous tenez au dossier home d'un utilisateur précis, c'est le moment de le créer.
    Vous pouvez copier en étant à l'extérieur du chroot le dossier de l'utilisateur cible dans mnts/src/home/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # mkdir home
    # deluser user1
    Dans mon cas je vide le home (j'avais personnellement monté la partition /home au moment de la copie dans le live). Je n'aurais pas besoin pour cette étape de mes utilisateurs. Les scripts de Live-config ou live-boot vont me mettre un utilisateur par défaut user avec autologin.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #rm -rf home/*
     
    # apt-get install live-boot live-config
    Je ne vais pas détailler l'usage de ces 2 paquets.
    Le premier est quasi indispensable, sauf si vous vous sentez assez compétents pour écrire vous même vos scripts d'initialisation et de montage, là je vous dis tout de suite de passer votre chemin, cet article ne vous apprendra rien de nouveau sur ce plan.
    J'avais voulu écrire par moi même mon script d'initialisation dans l'initrd sans cet outil il y a un moment. Je fus très vite découragé par la complexité déroutante et tortueuse des montages, remontages, démontages au chargement du noyau. Décompressez le fichier inirtrd pour examiner les scripts pour vous faire une idée. Bon vent.

    Live-Boot génère un initrd avec ce qu'il faut pour ne pas avoir de panic au démarrage. Live-Config permet de passer les options de configuration personnalisées. Les options par défaut comme le nom d'hôte, d'utilisateur, d'autologin etc peuvent ne pas convenir à certains. Sinon pour l'exemple ci on se contentera de la configuration par défaut.
    Live-Config permet par voies de scripts (rangées dans le dossier live-config) des personnalisations, comme la création d'utilisateur, configurations réseaux ...

    Pour alléger au maximum, mon image, quelques nettoyages de répertoires ou fichiers dans srv, usr/local, .... Désinstallation de quelques paquets que je ne crois pas avoir besoin en nomade. Puis de certaines docs volumineuses Suppression du gestionnaire de session graphique et de l'environnement de bureau gnome. Installation d'openbox avec le gestionnaire de fenêtres lxde. Quelques paramétrages de ce dernier Et enfin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    # apt-get autoclean
    # apt-get clean
    # apt-get auto remove --purge
    J'ai gagné quelques gigas.

    Sortir du chroot. Nb : si vous avez effectué un montage en étant dans le chroot, démontez le avant de taper Démonter les /dev et /proc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # umount mnts/src/dev
    # umount mnts/src/proc
    Effacement du contenu des fichiers mnts/src/etc/resolv.conf mnts/src/etc/network/interfaces, voir d'autres petites choses qui seront propres à votre contexte.

    Dans mon cas, je suis descendu à 4 Go en supprimant pas mal de paquets dans le chroot, que je jugeais non utile dans ce live.

    ______________________________________________________________

    Phase de finalisation.

    Nous allons compresser le contenu de l'image montée dans le répertoire workspace/mns/src. Un sytème de fichier compressé de type squashfs convient. Mksquashfs est celui qui va nous permettre de réduire considérablement notre fichier. L'iso que j'obtiens par la suite ne pèsera pas plus de 1.2Go.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    # mksquashfs mnts/src multiserv.sqh -e sys -e proc -e dev -e boot
    Nous avons exclu les fichiers /sys /proc /dev /boot

    On prépare l'environnement de création du fichier iso hybride
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # mkdir -p live-perso/live
    # cp -a mnts/src/boot live-perso/
    # mv multiserv.sqh live-perso/live/
    # cd live-perso
    Je remplace le contenu du grub.cfg qui se trouve boot/grub
    # echo :> live-perso/boot/grub/grub.cfg
    # nano live-perso/boot/grub/grub.cfg
    Recopier le contenu de mon fichier de configuration pour l'adapter à votre cas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    insmod search_fs_uuid
    insmod regexp
     
    if [ "${grub_platform}" == "pc" ]; then
    	insmod vbe
    fi
     
    if [ "${grub_platform}" == "efi" ]; then
    	insmod efi_gop
    	insmod efi_uga
    fi
     
    insmod font
     
    if loadfont ${prefix}/unicode.pf2
    then
        insmod gfxterm
        set gfxmode=auto
        set gfxpayload=keep
        terminal_output gfxterm
    #    set theme=${prefix}/themes/1/theme.txt
    fi
     
    set color_normal=white/black
    set color_highlight=white/green
    export color_normal
    export color_highlight
     
    insmod gzio
    insmod part_msdos
    insmod ext2
    insmod xfs
    insmod vga
    insmod configfile
     
    search --file --no-floppy --set=root /boot/grub/i386-efi/core.efi
     
     
    # en fait j'avais 3 lignes de variables op1 à opt3. Le premier à marcher.
    # S'il avait échoué au prochain démarrage, dans lle menu grub j'aurais essayé
    # les suivants comportant plus d'options à fournir au kernel comme live-media-path ...
     
     
    menuentry "Demarrer Live debian" {
    	opt="rootfstype=squashfs boot=live components ro noeject noprompt fstype=squashfs"
    	linux /boot/vmlinuz-3.16.0-4-amd64 $opt
    	initrd /boot/initrd.img-3.16.0-4-amd64
    }
     
    menuentry "System shutdown" {
    	echo "System shutting down..."
    	halt
    }
    menuentry "System restart" {
    	echo "System rebooting..."
    	reboot
    }
    On a presque fini. Il ne reste plus qu'à générer le fichier iso à l'aide de la commande grub-mkrescue.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    # grub-mkrescue -o live-perso.iso live-perso
    Bon week end
    Ousmane


    Quand on tombe dans l'eau, la pluie ne fait plus peur.

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 451
    Points : 43 097
    Points
    43 097
    Par défaut
    Reste à gérer la persistance.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Membre chevronné
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 036
    Points : 1 917
    Points
    1 917
    Billets dans le blog
    5
    Par défaut
    Merci, pour la remarque. J'y pensais au moment de la création dans une étape future que je pourrais traîner à faire voir ne jamais publier par négligence. Mais pour les impatients et les curieux, je les renvoi ici.

    En gros c'est beaucoup plus simple à paramétrer qu'on ne le croit.
    Ajouter une entrée de menu avec un titre indicatif de la persistance ajouter le mot persistence dans les options passées au kernel, ou au démarrage dans l'affichage de menu grub passer en édition pour l'ajouter.
    Bien entendu il faut aller lire le lien donné plus haut et éventuellement le man pour savoir un petit peu comment.
    Ousmane


    Quand on tombe dans l'eau, la pluie ne fait plus peur.

Discussions similaires

  1. [Audio] Mettre de la musique sur son appli possible ? simple ?
    Par Baptiste Wicht dans le forum Multimédia
    Réponses: 23
    Dernier message: 04/08/2008, 12h56
  2. [HTML] Comment faire pour mettre de la musique sur un site
    Par Gray Man dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 11/12/2005, 18h13
  3. Mettre à jour la franchise sur une requête
    Par soso78 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 22/10/2005, 11h18
  4. [AWT] JFrame - Mettre une taille minimum sur une Jframe
    Par rabobsky dans le forum Agents de placement/Fenêtres
    Réponses: 12
    Dernier message: 27/07/2005, 18h20
  5. [débutant] Aide pour mettre une FOREIGN KEY sur une table
    Par cauldron dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/11/2004, 17h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo