Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédente | |||
tutoriel:lubuntu_usb_creator [Le 25/02/2021, 09:33] – [Lubuntu USB Creator] note importante lenainjaune | tutoriel:lubuntu_usb_creator [Le 25/02/2021, 09:35] (Version actuelle) – [Lubuntu USB Creator] note importante lenainjaune | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
+ | ---- | ||
+ | |||
+ | |||
+ | <note important> | ||
+ | ====== Lubuntu USB Creator ====== | ||
+ | <note help>Ce tutoriel a pour origine un besoin de remplacer un disque dur défaillant (voir [[http:// | ||
+ | |||
+ | Ayant bien-bien-bien avancé sur le sujet et je vous propose aujourd' | ||
+ | |||
+ | Comme je le disais dans mon [[http:// | ||
+ | |||
+ | J'ai réussi à créer un Live USB persistant sur un HDD SATA branché sur une station d' | ||
+ | |||
+ | Je l'ai appelé L.U.C. (Lubuntu USB Creator). | ||
+ | |||
+ | Comme je suis trop content :-) ! | ||
+ | |||
+ | Ce document est devenu très grand et tout ne sera pas utile pour tout le monde. | ||
+ | |||
+ | <note tip>Pour ceux qui sont juste curieux du résultat, vous pouvez directement lire le chapitre [[# | ||
+ | |||
+ | <note help>Si vous avez des commentaires, | ||
+ | |||
+ | ===== Pré-requis ===== | ||
+ | Pour mettre tout ça en place, vous aurez besoins des éléments suivants : | ||
+ | * Disposer des [[: | ||
+ | * Disposer d'une connexion à Internet configurée et activée. | ||
+ | * Le fichier ISO de la distribution | ||
+ | Pour connaître l' | ||
+ | <code bash> | ||
+ | * Un PC pour construire le support USB, appelons le **PC-BUILDER** (voir les [[# | ||
+ | * Un disque dur externe SATA + station accueil SATA reliée par USB ou eSATA (pour ceux qui ne connaissent pas : [[http:// | ||
+ | <note warning> | ||
+ | ATTENTION : la technologie d'une clé USB n' | ||
+ | </ | ||
+ | * Un autre PC pour tester, appelons le **PC-LIVE** qui servira d' | ||
+ | |||
+ | <note tip> | ||
+ | |||
+ | ==== Plateformes supportées ==== | ||
+ | Ces couples de plateformes ont été testées avec succès : | ||
+ | ^ OS PC-BUILDER | ||
+ | | Ubuntu 12.04 LTS 32 bits | 32 bits | Lubuntu 14.10 32 bits | 32 bits | | | ||
+ | | Ubuntu 14.04 LTS 64 bits | 32 bits | Lubuntu 14.10 32 bits | 32 bits | environnement VM | | ||
+ | |||
+ | <note tip> | ||
+ | |||
+ | ===== Un live USB persistant ? ===== | ||
+ | Le Net regorge de tutoriels pour créer des Live CD et Live USB . | ||
+ | |||
+ | Mais au fait c'est quoi un Live xx ? | ||
+ | |||
+ | C'est la possibilité de démarrer un mini OS pour par exemple installer un système un peu plus costaud ou tout simplement le tester sans affecter l' | ||
+ | |||
+ | Comme les CDs c'est un peu galère, on a créé les Live USB qui sont plus rapides et plus {ergonom|économ|écolog}iques. | ||
+ | |||
+ | Cerise sur le gateau, la persistance. Ben oui, pourquoi ne pas pouvoir enregistrer ses réglages, ses fichiers aussi ? | ||
+ | |||
+ | La persistance a réglé le problème, à un tel point qu'on pourrait presque songer à remplacer son vieux OS par un Live USB persistant (sisi j'vous jure :-P ). | ||
+ | |||
+ | A noter que de base, la persistance réside dans un fichier nommé **casper-rw** de 4 GB maxi (limitation FAT32) et se trouve à la racine du support. | ||
+ | |||
+ | ===== Ce que je vous propose ici ===== | ||
+ | Un Live USB dont la persistance se fera sur une partition à part entière dédiée. Il sera équipé du système d' | ||
+ | |||
+ | Il faut ajouter que tout se configure avant l' | ||
+ | |||
+ | Le top must de la mort qui tue :-), in situ on pourra réinitialiser le support comme si on venait de le créer (reboot nécessaire) et on pourra même modifier sa propre installation sans repasser par la re-création du support (plus d' | ||
+ | |||
+ | ===== Fonctionnement d'un support bootable ===== | ||
+ | <note help> | ||
+ | J'ai fait une grosse recherche sur tout le mécanisme de boot et je me propose de vous exposer mes découvertes. Cette partie optionnelle est longue et technique, mais elle n'est pas complexe. De plus, j'ai précisé mes sources. Bonne lecture ! | ||
+ | </ | ||
+ | |||
+ | <note important> | ||
+ | Ce que je décris ici, c'est ce que j'ai compris après plein, plein, pleins de lectures sur le sujet. Des sujets qui parfois se contredisent, | ||
+ | </ | ||
+ | |||
+ | Nota : ici je ne parle que du mécanisme de boot par BIOS / MBR ; je m' | ||
+ | |||
+ | Le schéma à avoir en tête ([[http:// | ||
+ | |||
+ | {{http:// | ||
+ | |||
+ | Nota : **BS** (Boot Sector) sera nommé VBR, dans les explications suivantes, car boot sector est un terme trop générique. | ||
+ | |||
+ | Je passe toutes les étapes (très intéressantes) sur le démarrage physique et électronique du PC, pour arriver à la dernière étape de traitement du BIOS après le POST ([[http:// | ||
+ | |||
+ | Le BIOS cherche le premier support bootable, dont on peut définir soi-même l' | ||
+ | |||
+ | ==== Support bootable et MBR ==== | ||
+ | Q : Qu'est ce qu'un support bootable ?\\ | ||
+ | R : C'est un support qui lors du démarrage d'un PC, va exécuter du code pour charger un système d' | ||
+ | |||
+ | Q : Qu'est ce qu'un **MBR** (Master Boot Record) ?\\ | ||
+ | R : // | ||
+ | |||
+ | Nota : <code bash> | ||
+ | |||
+ | Q : Quel est le contenu d'un MBR ?\\ | ||
+ | R : Un code exécutable (appelons la **routine_MBR**), | ||
+ | |||
+ | <note important> | ||
+ | Attention : le nombre magique ne suffit pas en soi, pour déterminer si le support est réellement bootable, il faut également qu'une partition soit active (voir dessous) ! | ||
+ | </ | ||
+ | |||
+ | On peut visualiser le contenu hexadécimal/ | ||
+ | |||
+ | < | ||
+ | $ hd /dev/sde -n 512 -s 0 | ||
+ | 00000000 | ||
+ | 00000010 | ||
+ | 00000020 | ||
+ | 00000030 | ||
+ | 00000040 | ||
+ | 00000050 | ||
+ | * | ||
+ | 000001b0 | ||
+ | 000001c0 | ||
+ | 000001d0 | ||
+ | 000001e0 | ||
+ | 000001f0 | ||
+ | 00000200 | ||
+ | </ | ||
+ | |||
+ | Vous remarquerez que cette section se termine par "55 aa", on a donc le nombre magique 0xaa55, on visualise donc le MBR d'un disque bootable | ||
+ | |||
+ | Nota : * indique que la ligne du dessus est répétée plusieurs fois | ||
+ | |||
+ | Q : Que contient le **descripteur de partitions principales** ?\\ | ||
+ | R : 64 octets décrivant les 4 partitions principales. Pour chacune des partitions sur 16 octets (16*4=64), on sait si la partition est active (donc bootable), on connait son système de fichiers sous-jacent (**FS** : File System), sa taille et sa position ([[http:// | ||
+ | |||
+ | En reprenant l' | ||
+ | < | ||
+ | 000001b0 | ||
+ | 000001c0 | ||
+ | |||
+ | 000001c0 | ||
+ | 000001d0 | ||
+ | |||
+ | 000001d0 | ||
+ | 000001e0 | ||
+ | 000001f0 | ||
+ | </ | ||
+ | |||
+ | Ici : | ||
+ | * Le 1er bloc (ligne 000001b0) représente le descripteur de partition 1 : le 80 du début indique que la partition est active (et donc bootable). | ||
+ | * Le 2ème bloc (ligne 000001c0) représente le descripteur de la partition 2 : le 00 du début indique que la partition n'est pas active (donc n'est pas bootable). | ||
+ | * Le 3ème bloc (commence à la ligne 000001d0) représente les descripteurs des partitions 3 et 4 : comme elles sont remplies de " | ||
+ | |||
+ | Pour plus d' | ||
+ | |||
+ | ==== Partition principale / étendue ==== | ||
+ | Q : Que trouve t-on au début d'une **partition principale** ?\\ | ||
+ | R : 512 octets qui constituent, | ||
+ | |||
+ | Q : Qu'est ce qu'une **partition étendue** ?\\ | ||
+ | R : Permet d' | ||
+ | |||
+ | FIXME Q : Que contient un secteur de boot d'une partition étendue ?\\ | ||
+ | R : Même type de structure qu'un MBR ([[http:// | ||
+ | |||
+ | ==== VBR et bootloader ==== | ||
+ | Q : Qu'est ce qu'un **VBR** (Volume Boot Record) ?\\ | ||
+ | R : C'est un secteur de boot de partition. Les informations qu' | ||
+ | |||
+ | Nota : la taille d'un VBR dépend du FS sous-jacent (FAT32 : 32 secteurs, NTFS : 16 secteurs - [[http:// | ||
+ | |||
+ | Q : Quel est le contenu d'un VBR ?\\ | ||
+ | R : Un VBR commence toujours par une instruction de saut vers le code exécutable que nous appellerons **routine_VBR**, | ||
+ | |||
+ | Nota : on peut visualiser le contenu hexadécimal/ | ||
+ | |||
+ | < | ||
+ | $ hd /dev/sde1 -n 512 -s 0 | ||
+ | 00000000 | ||
+ | 00000010 | ||
+ | 00000020 | ||
+ | 00000030 | ||
+ | 00000040 | ||
+ | 00000050 | ||
+ | 00000060 | ||
+ | 00000070 | ||
+ | 00000080 | ||
+ | 00000090 | ||
+ | 000000a0 | ||
+ | 000000b0 | ||
+ | 000000c0 | ||
+ | 000000d0 | ||
+ | 000000e0 | ||
+ | 000000f0 | ||
+ | 00000100 | ||
+ | 00000110 | ||
+ | 00000120 | ||
+ | 00000130 | ||
+ | 00000140 | ||
+ | 00000150 | ||
+ | 00000160 | ||
+ | 00000170 | ||
+ | 00000180 | ||
+ | 00000190 | ||
+ | 000001a0 | ||
+ | 000001b0 | ||
+ | 000001c0 | ||
+ | 000001d0 | ||
+ | 000001e0 | ||
+ | 000001f0 | ||
+ | 00000200 | ||
+ | </ | ||
+ | |||
+ | En reprenant l' | ||
+ | < | ||
+ | 00000000 | ||
+ | |||
+ | 00000000 | ||
+ | |||
+ | 00000000 | ||
+ | 00000010 | ||
+ | 00000020 | ||
+ | 00000030 | ||
+ | 00000040 | ||
+ | 00000050 | ||
+ | |||
+ | 00000050 | ||
+ | 00000060 | ||
+ | 00000070 | ||
+ | 00000080 | ||
+ | 00000090 | ||
+ | 000000a0 | ||
+ | 000000b0 | ||
+ | 000000c0 | ||
+ | 000000d0 | ||
+ | 000000e0 | ||
+ | 000000f0 | ||
+ | 00000100 | ||
+ | 00000110 | ||
+ | 00000120 | ||
+ | 00000130 | ||
+ | 00000140 | ||
+ | 00000150 | ||
+ | 00000160 | ||
+ | 00000170 | ||
+ | 00000180 | ||
+ | 00000190 | ||
+ | 000001a0 | ||
+ | 000001b0 | ||
+ | 000001c0 | ||
+ | 000001d0 | ||
+ | 000001e0 | ||
+ | 000001f0 | ||
+ | 00000200 | ||
+ | </ | ||
+ | |||
+ | On peut notera que : | ||
+ | * Les 3 premiers octets constituent une instruction de saut de 88 octets ([[http:// | ||
+ | * Les 8 octets suivants concernent le [[http:// | ||
+ | * Le bloc suivant concerne le BPB ([[http:// | ||
+ | * Le dernier bloc commence par la routine_VBR (exécuté après l' | ||
+ | * Encore et toujours, les deux derniers octets constituent le nombre magique 0xaa55 | ||
+ | |||
+ | Plus d' | ||
+ | |||
+ | Q : Qu'est ce qu'un **bootloader** ?\\ | ||
+ | R : C'est un programme en lecture seule accessible dans le système de fichiers (généralement on peut le voir avec un simple ls). Son rôle est de charger en mémoire un mini-système d' | ||
+ | |||
+ | ==== En résumé ==== | ||
+ | On peut dire ici que le démarrage se fait en trois temps après le POST. Le BIOS exécute la routine_MBR, | ||
+ | |||
+ | Tout ça pour dire, que finalement tout est possible, selon " | ||
+ | |||
+ | Ceci explique certainement, | ||
+ | |||
+ | ===== Installation manuelle du Live USB ===== | ||
+ | Avant d' | ||
+ | |||
+ | <note important> | ||
+ | Ce guide manuel est dédié pour un live USB " | ||
+ | </ | ||
+ | |||
+ | ==== Préparation ==== | ||
+ | Pour créer le support avec une persistance dans une partition **/ | ||
+ | |||
+ | L' | ||
+ | * Pour une raison que j' | ||
+ | * Apparemment, | ||
+ | |||
+ | ==== Session Live FR et silencieuse ==== | ||
+ | Modifier le fichier de configuration ([[: | ||
+ | |||
+ | Remplacer son contenu par : | ||
+ | < | ||
+ | DEFAULT live | ||
+ | LABEL live | ||
+ | SAY Lubuntu USB Live Persistant | ||
+ | KERNEL / | ||
+ | APPEND noprompt persistent boot=casper initrd=/ | ||
+ | locale=fr_FR.UTF-8 console-setup/ | ||
+ | </ | ||
+ | |||
+ | ==== Remplacer le fichier gfxboot.c32 ==== | ||
+ | Remplacer le fichier gfxboot.c32 du support par celui du PC-BUILDER de création : | ||
+ | <code bash> | ||
+ | |||
+ | Nota :\\ | ||
+ | Si on ne fait pas cette étape, le boot automatique ne marchera pas et se soldera par un prompt "boot :". Dans ce cas, on n'aura plus qu'à taper manuellement **" | ||
+ | |||
+ | ==== Mettre en place le PC-LIVE ==== | ||
+ | Brancher le live USB sur un PC de test éteint (PC-LIVE) | ||
+ | |||
+ | S' | ||
+ | |||
+ | Démarrer le PC-LIVE et configurer le BIOS pour qu'il démarre sur le Live USB ou bien choisir le support depuis la liste des périphériques (F12 ou autre). | ||
+ | |||
+ | NB : je ne décris pas cette étape qui varie d'une machine à une autre, toutefois une recherche avec votre moteur de recherche favori, devrait donner rapidement la solution. | ||
+ | |||
+ | ==== 1er démarrage : Live session ==== | ||
+ | Vous venez de démarrer le support avec succès et le bureau est affiché. Il ne reste plus qu'à personnaliser et ajouter un nouvel utilisateur (vous). | ||
+ | |||
+ | <note tip> | ||
+ | On peut noter qu'il y a un raccourci " | ||
+ | </ | ||
+ | |||
+ | === Modifier adresse IP via Network Manager === | ||
+ | * Icône réseau en bas à droite > Modification des connexions (Edit Connections) | ||
+ | * Sélectionner : Connexion filaire 1 (Wired connection 1) | ||
+ | * Modifier (Edit) | ||
+ | * Onglet " | ||
+ | * Méthode (Method) : manuelle (manual) | ||
+ | * Adresse (Address) : 192.168.0.3 | ||
+ | * Masque réseau (Netmask) : 24 (/24 soit 255.255.255.0) | ||
+ | * Passerelle (Gateway) : 192.168.0.254 | ||
+ | * DNS (DNS servers) : 8.8.8.8 | ||
+ | * Enregistrer (Save) | ||
+ | * Fermer (Close) | ||
+ | |||
+ | === Environnement complet en FR === | ||
+ | * Menu démarrer > Préférences > Prise en charge des langues | ||
+ | * Popup "La prise en charge des langues n'est pas complètement installée" | ||
+ | * Installer | ||
+ | * Installer / Supprimer des langues | ||
+ | * Cocher : Français | ||
+ | * Décocher : Anglais | ||
+ | * Appliquer les changements | ||
+ | * Appliquer à tout le système | ||
+ | * Close | ||
+ | |||
+ | === Installer SSH et VNC === | ||
+ | * Menu démarrer > Outils système > Gestionnaire de paquets Synaptic | ||
+ | * Popup " | ||
+ | * Fermer | ||
+ | * Tout mettre à niveau | ||
+ | * Rechercher | ||
+ | * Saisir : openssh-server | ||
+ | * Rechercher | ||
+ | * Cocher > Sélectionner pour l' | ||
+ | * Ajouter à la sélection | ||
+ | * Refaire une recherche pour **vino** et pour **x11vnc** | ||
+ | * Appliquer | ||
+ | * Popup " | ||
+ | * Appliquer | ||
+ | * Popup "Les modifications ont été appliquées" | ||
+ | * Fermer | ||
+ | * Fermer | ||
+ | |||
+ | === Créer votre utilisateur (vous) === | ||
+ | |||
+ | * Menu démarrer > Outils système > Utilisateurs et groupes | ||
+ | * Ajouter et renseigner les différents champs (adapter) : | ||
+ | * Nom : mon nom complet | ||
+ | * Utilisateur : mon_login | ||
+ | * Valider | ||
+ | * Popup " | ||
+ | * Nouveau mot de passe : mot_de_passe_super_baleze | ||
+ | * Confirmation (retaper) : | ||
+ | * Cocher (option) "Ne pas demander de mot de passe à la connexion" | ||
+ | * Valider | ||
+ | * Gérer les groupes | ||
+ | * Sélectionner le groupe sudo | ||
+ | * Propriétés | ||
+ | * Cocher " | ||
+ | * Valider | ||
+ | * Fermer | ||
+ | * Fermer | ||
+ | |||
+ | === Ouverture auto de session === | ||
+ | * Menu démarrer > Accessoires > LXTerminal | ||
+ | * Saisir les lignes suivantes (adapter mon_login) et les exécuter : | ||
+ | |||
+ | <code bash> | ||
+ | ME=< | ||
+ | sudo sed -i " | ||
+ | exit | ||
+ | </ | ||
+ | |||
+ | * Menu démarrer > Déconnexion > Redémarrer | ||
+ | |||
+ | ==== 2ème démarrage : votre session ==== | ||
+ | Vous venez d' | ||
+ | |||
+ | <note tip> | ||
+ | Vous pourrez constater, qu'il N'Y A PLUS de raccourci " | ||
+ | </ | ||
+ | |||
+ | === Supprimer l' | ||
+ | * Menu démarrer > Accessoires > LXTerminal | ||
+ | * Saisir les lignes suivantes telles quelles et les exécuter : | ||
+ | |||
+ | <code bash> | ||
+ | LU=lubuntu | ||
+ | sudo deluser $LU | ||
+ | sudo usermod -g $USER $LU | ||
+ | sudo delgroup $LU | ||
+ | sudo rm -rf /home/$LU | ||
+ | sudo sed -i " | ||
+ | sudo sed -i "/ | ||
+ | sudo sed -i "/ | ||
+ | exit | ||
+ | </ | ||
+ | |||
+ | === Configurer VNC === | ||
+ | Autoriser l' | ||
+ | * Menu démarrer > Exécuter et saisir : < | ||
+ | * Cocher " | ||
+ | * Fermer | ||
+ | |||
+ | Sécuriser l' | ||
+ | * Menu démarrer > Accessoires > LXTerminal | ||
+ | * Saisir les lignes suivantes telles quelles et les exécuter : | ||
+ | * x11vnc -storepasswd | ||
+ | * Renseigner mot de passe : mot_de_passe_super_baleze | ||
+ | * Confirmation (retaper) : | ||
+ | * Write password to ... : y | ||
+ | * exit | ||
+ | |||
+ | Démarrage automatique de VNC : | ||
+ | * Menu démarrer > Accessoires > LXTerminal | ||
+ | * Saisir les lignes suivantes telles quelles et les exécuter : | ||
+ | |||
+ | <code bash> | ||
+ | sudo bash -c "echo x11vnc -rfbauth / | ||
+ | exit | ||
+ | </ | ||
+ | |||
+ | * Menu démarrer > Déconnexion > Redémarrer | ||
+ | |||
+ | ==== Tests d' | ||
+ | Désormais on peut accéder à distance par SSH : depuis le terminal d'un PC (appelons le PC-CLIENT, exécuter la ligne suivante dans un terminal : | ||
+ | <code bash>ssh < | ||
+ | |||
+ | Et on peut également accéder avec un client VNC, pour ma part j'ai utilisé Remmina. | ||
+ | |||
+ | Il faut configurer la connexion comme ceci (adapter) : | ||
+ | |||
+ | * Nom : nom_du_profil (ex : live_pc) | ||
+ | * Protocole : "VNC - Virtual Network Computing" | ||
+ | * Serveur : 192.168.0.3 (adresse statique du serveur) | ||
+ | * Nom d' | ||
+ | * Mot de passe (celui généré par x11vnc -storepasswd) : mot_de_passe_super_baleze | ||
+ | * Profondeur de couleur : autre chose que 256 couleurs (sinon ne marche pas) | ||
+ | * Se connecter | ||
+ | |||
+ | Et voilou :-) ! | ||
+ | |||
+ | ===== L.U.C. (Lubuntu USB Creator) ===== | ||
+ | |||
+ | ==== Fonctionnement ==== | ||
+ | Nous allons voir ici, le fonctionnement interne de votre Live USB. | ||
+ | |||
+ | <note help> | ||
+ | Cette partie optionnelle est longue et technique, mais elle n'est pas complexe. Bonne lecture ! | ||
+ | </ | ||
+ | <note important> | ||
+ | Volontairement, | ||
+ | </ | ||
+ | |||
+ | Si vous avez lu le chapitre [[# | ||
+ | |||
+ | Donc, vous branchez votre support USB et vous démarrez la machine. Le BIOS effectue le POST et détermine le premier support bootable. | ||
+ | |||
+ | Et ensuite ? | ||
+ | |||
+ | === Boot support === | ||
+ | Le BIOS va exécuter la routine_MBR (construite par la commande **parted / | ||
+ | |||
+ | === Le bootloader syslinux === | ||
+ | A ce stade, syslinux ce n'est qu'un simple prompt (c.a.d. un curseur qui clignote sur fond noir :-) ) qui attend que vous saisissiez quelque chose, avant d' | ||
+ | |||
+ | Vous pourriez simplement taper manuellement (sur un clavier QWERTY of course ;-) ) :\\ | ||
+ | <code bash>/ | ||
+ | |||
+ | Et ça marcherait (explication plus bas) ! | ||
+ | |||
+ | Fort heureusement, | ||
+ | |||
+ | Donc, **/ | ||
+ | |||
+ | Que sont ces fichiers du dossier **/casper** : | ||
+ | * **/ | ||
+ | * **/ | ||
+ | |||
+ | Pour s'en convaincre, si le chargement du système échoue après l' | ||
+ | |||
+ | Maintenant que le mini-système et ses pilotes sont en mémoire, l' | ||
+ | |||
+ | === 1er démarrage système === | ||
+ | <note important> | ||
+ | Ne maitrisant pas du tout le processus de boot du système Live, je préfère m' | ||
+ | </ | ||
+ | |||
+ | Notre système de fichier est monté. | ||
+ | |||
+ | L' | ||
+ | |||
+ | Remarque importante : | ||
+ | |||
+ | Pour arriver à créer ce point d' | ||
+ | |||
+ | Ce script externe va supprimer son propre déclencheur dans **/ | ||
+ | |||
+ | Cette première phase va permettre d' | ||
+ | |||
+ | **/ | ||
+ | |||
+ | Cette première phase s' | ||
+ | |||
+ | === 2ème démarrage système === | ||
+ | La deuxième phase de post-installation démarre avec l' | ||
+ | |||
+ | **/ | ||
+ | |||
+ | Et voilou ! | ||
+ | |||
+ | ==== Synoptique et rôle des fichiers ==== | ||
+ | Synoptique de LUC : | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Rôle des fichiers : | ||
+ | * luc : dossier projet | ||
+ | * luc/iso : montage du fichier ISO | ||
+ | * luc/ | ||
+ | * luc/liveusb : dossier montage du support USB | ||
+ | * luc/ | ||
+ | * luc/ | ||
+ | * luc/ | ||
+ | * luc/ | ||
+ | * luc/ | ||
+ | * luc/ | ||
+ | * luc/ | ||
+ | * luc/ | ||
+ | * luc/ | ||
+ | * luc/ | ||
+ | * luc/ | ||
+ | * luc/ | ||
+ | |||
+ | Nota : RW (Lecture / Ecriture), RO (Lecture seule) | ||
+ | |||
+ | ==== Mode d' | ||
+ | |||
+ | <note important> | ||
+ | Pour automatiser la gestion du réseau, je n'ai pas eu d' | ||
+ | </ | ||
+ | |||
+ | Copier le contenu du [[# | ||
+ | |||
+ | Donnez vous les droits d' | ||
+ | <code bash> | ||
+ | |||
+ | Déterminer le support que vous allez utiliser :\\ | ||
+ | <code bash> | ||
+ | |||
+ | === Configurer paramètres fonctionnels (ou laisser les valeurs par défaut) === | ||
+ | * **DEV** : c'est un support entier choisi et non une partition (ex : DEV=/ | ||
+ | * **ISO** : chemin absolu du fichier ISO de Lubuntu (ex : ISO='/ | ||
+ | * **ME** : c'est ... vous, le nom de login de votre utilisateur (ex : ME=lnj) | ||
+ | * **ME_FULL** : c'est encore vous mais avec le nom long (ex : ME_FULL=' | ||
+ | * **NET_ADDRESS** : adresse IP statique donnée au PC-LIVE (ex : NET_ADDRESS=192.168.0.3) | ||
+ | * **NET_NETMASK** : masque réseau du réseau de PC-LIVE (ex : NET_NETMASK=255.255.255.0) | ||
+ | * **NET_GATEWAY** : la passerelle du réseau de PC-LIVE (ex : NET_GATEWAY=192.168.0.254) | ||
+ | * **NET_DNS** : un serveur DNS accessible par le PC-LIVE (ex : NET_DNS=8.8.8.8) | ||
+ | |||
+ | === Configurer les paramètres pré-configurés (ou laisser les valeurs par défaut) === | ||
+ | |||
+ | Remarque : pour plus de détails, voir le [[# | ||
+ | |||
+ | * **USB_LABEL** : le nom de la partition 1 de votre Live USB (ex : USB_LABEL=L_LUBUNTU) | ||
+ | * **USB_PART1_SIZE** : la taille de la partition 1 (ex : USB_PART1_SIZE=1G) | ||
+ | * **USB_PART2_SIZE** : la taille de la partition 2 (ex : USB_PART2_SIZE=100%) | ||
+ | * **LIVE_USB_BOOT_MESSAGE** : Message de bienvenue lors du démarrage (ex: LIVE_USB_BOOT_MESSAGE=' | ||
+ | * **LIVE_USB_BOOT_QUIET** : indique si le démarrage est verbeux / silencieux (0/1) (ex : LIVE_USB_BOOT_QUIET=1) | ||
+ | * **ME_DEFAULT_PASSWORD** : mon mot de passe en clair pour l' | ||
+ | * **EMBED_PACKETS** : liste des logiciels qui seront installés (SSH sera automatiquement ajouté) (ex : EMBED_PACKETS=' | ||
+ | * **EMBED_VNC** : indique si VNC sera non installé / installé (0/1) (ex : EMBED_VNC=1) | ||
+ | * **UPDATE_OS** : indique si on occulte / fait la MAJ OS (0/1) (ex : UPDATE_OS=1) | ||
+ | * **INSTALL_APP_LANG** : indique si on occulte / installe le support de langues pour les applications (0/1) (ex : INSTALL_APP_LANG=1) | ||
+ | |||
+ | === Installer le support === | ||
+ | Exécuter :\\ | ||
+ | <code bash> | ||
+ | |||
+ | === Utiliser la configuration rapide === | ||
+ | Exécuter :\\ | ||
+ | <code bash> | ||
+ | |||
+ | * **DEV** est un support entier et est nécessairement le 1er paramètre | ||
+ | * **ISO** (optionnel) est le chemin de l'ISO et est nécessairement le 2ème paramètre | ||
+ | |||
+ | Cette configuration rapide permet de ne pas modifier le script pour ces paramètres. | ||
+ | |||
+ | === Modifier vos mots de passe === | ||
+ | Une fois le Live USB démarré et opérationnel, | ||
+ | * Mot de passe de session : <code bash> | ||
+ | * Mot de passe de VNC (si vous l'avez installé) : <code bash> | ||
+ | |||
+ | === Les outils === | ||
+ | Des alias ont été ajoutés au profil de l' | ||
+ | |||
+ | Les outils : | ||
+ | |||
+ | * luc_edit_runme1st : édite le script **/ | ||
+ | * luc_edit_syslinux : édite la configuration **/ | ||
+ | * luc_reset : (attention : contenu de la persistance perdu) réinitialise la partition **casper-rw** (**/ | ||
+ | |||
+ | ==== Le code ==== | ||
+ | <note help>Si vous avez des commentaires, | ||
+ | |||
+ | Le script luc_onetouch_install.sh (n' | ||
+ | |||
+ | <code bash luc_onetouch_install.sh> | ||
+ | #!/bin/bash | ||
+ | |||
+ | # LUBUNTU USB CREATOR aka LUC (run as sudo only) | ||
+ | # Up to date version : https:// | ||
+ | # v1.4 lnj 22/04/2015 | ||
+ | |||
+ | # USAGE : luc_onetouch_install.sh [DEV [ISO]] | ||
+ | # Where optional DEV is device disk (not a partition) and optional ISO an ISO file. | ||
+ | |||
+ | # | ||
+ | |||
+ | # History : | ||
+ | # - v1.4 lnj 22/04/2015 : adding needed dependency | ||
+ | # - v1.3 lnj 15/04/2015 : adding needed dependency squashfs-tools | ||
+ | # - v1.2 lnj 12/04/2015 | ||
+ | |||
+ | # | ||
+ | # http:// | ||
+ | # http:// | ||
+ | # http:// | ||
+ | # more - boot process : https:// | ||
+ | # http:// | ||
+ | # http:// | ||
+ | # https:// | ||
+ | |||
+ | |||
+ | ################################## | ||
+ | |||
+ | # to retrieve parts and disks : http:// | ||
+ | # lsblk -o NAME, | ||
+ | |||
+ | |||
+ | ################################ | ||
+ | |||
+ | # ------------------------------- FUNCTIONAL -------------------------------------- | ||
+ | # DEV : the DEV disk used to install Live USB (not part) ; can be given from $1 arg | ||
+ | # See lsblk command above to determine the target disk | ||
+ | # !!! Warning: DEV data will be permanently deleted (no possible return ) !!! | ||
+ | # ISO : ISO file location (only absolute paths is possible) ; i.e. '/ | ||
+ | # ME : my short name user | ||
+ | # ME_FULL : my full name user | ||
+ | # NET_ADDRESS : static IP address wanted in my network | ||
+ | # !!! Becareful : possible IP conflict with other PC, especially DHCP scope !!! | ||
+ | # NET_NETMASK : my network mask | ||
+ | # NET_GATEWAY : the accessible gateway (i.e. to join the Internet) | ||
+ | # NET_DNS : an accessible DNS server to allow internet browsing and apt-get jobs too | ||
+ | |||
+ | DEV=/ | ||
+ | # !!! Warning: DEV data will be permanently deleted (no possible return ) !!! | ||
+ | ISO='/ | ||
+ | ME=user | ||
+ | ME_FULL=' | ||
+ | NET_ADDRESS=192.168.0.3 | ||
+ | NET_NETMASK=255.255.255.0 | ||
+ | NET_GATEWAY=192.168.0.254 | ||
+ | NET_DNS=8.8.8.8 | ||
+ | |||
+ | # ------------------------------- PRE-CONFIGURED ----------------------------------- | ||
+ | # USB_LABEL : partition 1 label [default : L_LUBUNTU (Live LUBUNTU)] | ||
+ | # USB_PART1_SIZE : size for the partition 1 | ||
+ | # | ||
+ | # USB_PART2_SIZE : size for the partition 2 | ||
+ | # | ||
+ | # If we want a 3rd part or more, not give 100% or specify in absolute size | ||
+ | # for example 10GB (see man parted and search unit) | ||
+ | # LIVE_USB_BOOT_MESSAGE : welcome boot message [dft : ' | ||
+ | # LIVE_USB_BOOT_QUIET : 0/1 (0 => verbose/no splash, 1 => quiet with splash) | ||
+ | # [default : 1] | ||
+ | # ME_DEFAULT_PASSWORD : my simple default password (change it for first logon) | ||
+ | # !!! Becareful : password in clear, so give a temp simple password !!! | ||
+ | # [default : lubuntu] | ||
+ | # EMBED_PACKETS : list of packets automatically installed at 1st boot | ||
+ | # separate all packets by a space | ||
+ | # i.e. EMBED_PACKETS=' | ||
+ | # [default : '' | ||
+ | # Nota : ssh is later included by default | ||
+ | # EMBED_VNC : 0/1 embed VNC for remote desktop (0 => no, 1 => yes) | ||
+ | # | ||
+ | # [default : 1] | ||
+ | # UPDATE_OS : 0/1 update OS (take a while) (0 => no, 1 => yes) | ||
+ | # [default : 1] | ||
+ | # INSTALL_APP_LANG : 0/1 install language for apps (take a while) (0 => no, 1 => yes) | ||
+ | # [default : 1] | ||
+ | |||
+ | USB_LABEL=L_LUBUNTU | ||
+ | USB_PART1_SIZE=1G | ||
+ | USB_PART2_SIZE=100% | ||
+ | LIVE_USB_BOOT_MESSAGE=' | ||
+ | LIVE_USB_BOOT_QUIET=1 | ||
+ | ME_DEFAULT_PASSWORD=lubuntu | ||
+ | # !!! Becareful : password in clear, so give a temp simple password !!! | ||
+ | EMBED_PACKETS='' | ||
+ | EMBED_VNC=1 | ||
+ | UPDATE_OS=1 | ||
+ | INSTALL_APP_LANG=1 | ||
+ | |||
+ | |||
+ | # ---------------------------------------------------------------------- | ||
+ | |||
+ | # For future version | ||
+ | # | ||
+ | # DEFAULT_LIVE_USB_USER : default live session user | ||
+ | # NETWORK_MANAGER_ACTIVE : 0/1 indicate how to manage network (0 => ifup, 1 => NM) | ||
+ | # [default : 0] | ||
+ | # LOCALE : embed locale for keyboard, live session boot and other stuff | ||
+ | # [default : FR so ' | ||
+ | # LANGUAGE_SUPPORT : make apps language with the right language support | ||
+ | # [default : fr] | ||
+ | # DATE_TIME_ZONE : synchro Time Zone (http:// | ||
+ | # [default : Europe/ | ||
+ | # WAITING_REBOOT_TITLE : title to display in the terminal before reboot | ||
+ | # [default : ' | ||
+ | |||
+ | DEFAULT_LIVE_USB_USER=lubuntu | ||
+ | NETWORK_MANAGER_ACTIVE=0 | ||
+ | LOCALE=' | ||
+ | LANGUAGE_SUPPORT=fr | ||
+ | DATE_TIME_ZONE=Europe/ | ||
+ | WAITING_REBOOT_TITLE=' | ||
+ | |||
+ | # Embed ssh to install | ||
+ | EMBED_PACKETS=" | ||
+ | |||
+ | # Embed VNC to install | ||
+ | if [ $EMBED_VNC -eq 1 ] ; then | ||
+ | EMBED_PACKETS=" | ||
+ | fi | ||
+ | |||
+ | # Quiet or not | ||
+ | if [ $LIVE_USB_BOOT_QUIET -eq 1 ] ; then | ||
+ | LIVE_USB_BOOT_QUIET=' | ||
+ | else | ||
+ | LIVE_USB_BOOT_QUIET= | ||
+ | fi | ||
+ | |||
+ | # Manage network with NM or ifup | ||
+ | if [ $NETWORK_MANAGER_ACTIVE -eq 1 ] ; then | ||
+ | NETWORK_MANAGER_ACTIVE= | ||
+ | else | ||
+ | NETWORK_MANAGER_ACTIVE=' | ||
+ | fi | ||
+ | |||
+ | # Define customized colors : http:// | ||
+ | C_red=' | ||
+ | C_blue=' | ||
+ | C_green=' | ||
+ | C_yellow=' | ||
+ | C_NC=' | ||
+ | |||
+ | # Echoing all steps (usage : echof " | ||
+ | # a=( " | ||
+ | # http:// | ||
+ | function echof () { if [ " | ||
+ | |||
+ | |||
+ | ############################## | ||
+ | |||
+ | LUC_MNT=~/ | ||
+ | |||
+ | # If we give arg1 it will become DEV | ||
+ | if [ " | ||
+ | DEV=$1 | ||
+ | fi | ||
+ | |||
+ | # If we give arg2 it will become ISO | ||
+ | if [ " | ||
+ | ISO=" | ||
+ | fi | ||
+ | |||
+ | # Get DISK part of DEV, so /dev/sde gives sde | ||
+ | DISK=`echo $DEV |sed " | ||
+ | |||
+ | # If DEV is not a real device disk | ||
+ | IS_DISK=`lsblk -o NAME, | ||
+ | if [ ! " | ||
+ | echo "Error : $DEV is not a valid disk !" | ||
+ | exit 1 | ||
+ | fi | ||
+ | |||
+ | # If ISO file does not exist | ||
+ | if [ ! -f " | ||
+ | echo "Error : $ISO ISO file does not exist !" | ||
+ | exit 2 | ||
+ | fi | ||
+ | |||
+ | # Infos about selected device | ||
+ | echo -e " | ||
+ | RES=`lsblk -o NAME, | ||
+ | echo -e " | ||
+ | |||
+ | mkdir -p $LUC_MNT | ||
+ | |||
+ | # For each partition we display the partial content | ||
+ | for X in `echo $DEV`* | ||
+ | do | ||
+ | if [ $X != $DEV ] ; then | ||
+ | echo -e " | ||
+ | |||
+ | if [ " | ||
+ | FOLDER=`mount |grep $X |cut -f 3 -d " "` | ||
+ | CONTENT=`ls -alF $FOLDER | head` | ||
+ | else | ||
+ | mount $X $LUC_MNT | ||
+ | CONTENT=`ls -alF $LUC_MNT | head` | ||
+ | umount -l $LUC_MNT | ||
+ | fi | ||
+ | |||
+ | echo -e " | ||
+ | fi | ||
+ | done | ||
+ | |||
+ | rmdir $LUC_MNT | ||
+ | |||
+ | # Confirm or not : http:// | ||
+ | MSG=" | ||
+ | echo -e "$MSG (no return is possible) !${C_NC}" | ||
+ | read -p "Are you sure (y/[N]) ? " -r | ||
+ | echo | ||
+ | |||
+ | if [[ ! $REPLY =~ ^[y]$ ]] | ||
+ | then | ||
+ | exit 0 | ||
+ | fi | ||
+ | |||
+ | # do dangerous stuff | ||
+ | #echo Destroy en cours... | ||
+ | |||
+ | |||
+ | ################################ | ||
+ | |||
+ | # LUC paths | ||
+ | LUC_PATH=~/ | ||
+ | LUC_LIVEUSB_PATH=~/ | ||
+ | LUC_ISO_PATH=~/ | ||
+ | LUC_SQUASHFS_PATH=~/ | ||
+ | LUC_CUSTOM_SQUASHFS_PATH=~/ | ||
+ | |||
+ | # Scripts and other stuff paths | ||
+ | SCRIPTS_PATH=$LUC_LIVEUSB_PATH/ | ||
+ | RUNME1ST_ROOT_PATH=scripts/ | ||
+ | RUNME1ST_EXT_PATH=/ | ||
+ | SYSLINUX_EXT_PATH=/ | ||
+ | RESET_ROOT_PATH=scripts/ | ||
+ | RESET_EXT_PATH=/ | ||
+ | RUNMELAST_PATH=/ | ||
+ | |||
+ | # Escaped string path | ||
+ | RUNME1ST_EXT_PATH_ESC=${RUNME1ST_EXT_PATH// | ||
+ | RUNMELAST_PATH_ESC=${RUNMELAST_PATH// | ||
+ | |||
+ | # debug : Start / End / exit to let start here and move end and exit | ||
+ | #:<< | ||
+ | #COM | ||
+ | #exit | ||
+ | |||
+ | echof "=== PREPARE LIVE USB ===" | ||
+ | |||
+ | echof " | ||
+ | apt-get install -y syslinux mtools parted squashfs-tools | ||
+ | |||
+ | echof " | ||
+ | umount $DEV* | ||
+ | umount $LUC_ISO_PATH | ||
+ | umount $LUC_LIVEUSB_PATH | ||
+ | umount $LUC_SQUASHFS_PATH | ||
+ | rm -rf $LUC_PATH | ||
+ | |||
+ | echof " | ||
+ | # man parted : http:// | ||
+ | # sample : http:// | ||
+ | # 100% remaining space http:// | ||
+ | echof " | ||
+ | parted " | ||
+ | msg=" | ||
+ | echof "$msg flag boot + lba" | ||
+ | parted -a cylinder " | ||
+ | mkfs.vfat -n " | ||
+ | parted " | ||
+ | parted " | ||
+ | msg=" | ||
+ | echof "$msg label ' | ||
+ | parted -a cylinder " | ||
+ | mkfs.ext4 -L ' | ||
+ | |||
+ | echof " | ||
+ | |||
+ | echof " | ||
+ | rm -rf $LUC_PATH | ||
+ | mkdir $LUC_PATH | ||
+ | mkdir $LUC_LIVEUSB_PATH | ||
+ | mkdir $LUC_ISO_PATH | ||
+ | mkdir $LUC_SQUASHFS_PATH | ||
+ | mkdir $LUC_CUSTOM_SQUASHFS_PATH | ||
+ | |||
+ | echof " | ||
+ | mount " | ||
+ | |||
+ | echof " | ||
+ | mount -o loop $ISO $LUC_ISO_PATH | ||
+ | |||
+ | echof " | ||
+ | # 2 errors of symlink will occur, because we can not copy symlink in FAT32 FS | ||
+ | rsync -aPv --exclude ' | ||
+ | |||
+ | echof " | ||
+ | rsync -aPv $LUC_ISO_PATH/ | ||
+ | |||
+ | # Rename isolinux folder is mandatory because SYSLINUX searches in /syslinux folder (http:// | ||
+ | mv $LUC_LIVEUSB_PATH/ | ||
+ | |||
+ | echof " | ||
+ | cat > " | ||
+ | DEFAULT live | ||
+ | LABEL live | ||
+ | SAY $LIVE_USB_BOOT_MESSAGE | ||
+ | KERNEL / | ||
+ | ## casper config : http:// | ||
+ | ## - NETWORK_MANAGER_ACTIVE : indicate whether NM or ifup is used to manage network | ||
+ | ## | ||
+ | ## - persistent : | ||
+ | ## - LIVE_USB_BOOT_QUIET : display or not Lubuntu splash no verbose | ||
+ | ## | ||
+ | ## - LOCALE : embed locale for keyboard, live session boot and other stuff | ||
+ | ## | ||
+ | APPEND noprompt $NETWORK_MANAGER_ACTIVE \ | ||
+ | | ||
+ | | ||
+ | EOT | ||
+ | |||
+ | # Files not used | ||
+ | rm $LUC_LIVEUSB_PATH/ | ||
+ | |||
+ | echof " | ||
+ | |||
+ | # We must use gfxboot.c32 file's host (https:// | ||
+ | rsync -aPv / | ||
+ | |||
+ | # Last step to make the USB bootable (`syslinux -i dev` run too) | ||
+ | syslinux " | ||
+ | |||
+ | ################################ | ||
+ | |||
+ | echof "=== CUSTOMIZE LIVE USB ===" | ||
+ | |||
+ | echof " | ||
+ | mount -t squashfs -o loop $LUC_PATH/ | ||
+ | rsync -aPv $LUC_SQUASHFS_PATH/ | ||
+ | |||
+ | echof " | ||
+ | # Entry point to execute an external script and following the execution in a terminal | ||
+ | echo sudo lxterminal -t "'" | ||
+ | -e "bash -c \" | ||
+ | >> $LUC_CUSTOM_SQUASHFS_PATH/ | ||
+ | |||
+ | # Folder in which we are storing external scripts of live system | ||
+ | mkdir $SCRIPTS_PATH | ||
+ | |||
+ | echof " | ||
+ | bash -c "cat > $LUC_LIVEUSB_PATH/ | ||
+ | #!/bin/bash | ||
+ | ## Hint : alter this file in Live USB context only | ||
+ | |||
+ | ## | ||
+ | EMBED_VNC=$EMBED_VNC | ||
+ | UPDATE_OS=$UPDATE_OS | ||
+ | INSTALL_APP_LANG=$INSTALL_APP_LANG | ||
+ | |||
+ | ## | ||
+ | ## nota : due to Network Manager removing, network will not auto-start | ||
+ | bash -c "cat > / | ||
+ | auto lo | ||
+ | iface lo inet loopback | ||
+ | |||
+ | iface eth0 inet static | ||
+ | address $NET_ADDRESS | ||
+ | netmask $NET_NETMASK | ||
+ | gateway $NET_GATEWAY | ||
+ | dns-nameservers $NET_DNS | ||
+ | EOF1_1 | ||
+ | sed -i ": | ||
+ | ifdown eth0 | ||
+ | ifup eth0 | ||
+ | |||
+ | # Update is asked | ||
+ | if [ \$UPDATE_OS -eq 1 ] ; then | ||
+ | apt-get -y update | ||
+ | fi | ||
+ | |||
+ | ## Install SSH and other asked packets | ||
+ | apt-get -y install $EMBED_PACKETS | ||
+ | |||
+ | ## All apps with LANGUAGE_SUPPORT is asked | ||
+ | ## http:// | ||
+ | if [ \$INSTALL_APP_LANG -eq 1 ] ; then | ||
+ | apt-get -y install \`check-language-support -l $LANGUAGE_SUPPORT\` | ||
+ | fi | ||
+ | |||
+ | ## Date & Time Zone | ||
+ | timedatectl set-timezone $DATE_TIME_ZONE | ||
+ | |||
+ | ## Add ME, join SUDOERS, AUTO LOGON and set DEFAULT PASSWORD | ||
+ | addgroup $ME | ||
+ | adduser --ingroup $ME --home /home/$ME --disabled-password -gecos " | ||
+ | adduser $ME sudo | ||
+ | ## Auto-logon : http:// | ||
+ | sed -i " | ||
+ | / | ||
+ | bash -c "echo $ME: | ||
+ | |||
+ | # Embed VNC stuff | ||
+ | if [ \$EMBED_VNC -eq 1 ] ; then | ||
+ | |||
+ | # VNC : auto enable server desktop sharing | ||
+ | # http:// | ||
+ | gsettings set org.gnome.Vino enabled true | ||
+ | gsettings set org.gnome.Vino prompt-enabled false | ||
+ | gsettings set org.gnome.Vino require-encryption false | ||
+ | |||
+ | bash -c "cat >> / | ||
+ | |||
+ | # VNC : Activate distant desktop sharing | ||
+ | # src : http:// | ||
+ | # nota : x11vnc indicates that running without password is dangerous ; | ||
+ | # so it recommends to creating a password file (x11vnc -storepasswd) | ||
+ | # repeat : allow repetitive keys | ||
+ | # remind too : ending '&' | ||
+ | x11vnc -rfbauth ~/ | ||
+ | EOF1_2 | ||
+ | |||
+ | fi | ||
+ | |||
+ | ## Useful aliases | ||
+ | bash -c "cat >> / | ||
+ | |||
+ | alias luc_edit_runme1st=" | ||
+ | alias luc_edit_syslinux=" | ||
+ | alias luc_reset=" | ||
+ | EOF1_3 | ||
+ | |||
+ | ## Delete first trigger | ||
+ | sed -i "/ | ||
+ | |||
+ | ## Adding last trigger | ||
+ | sed -i ": | ||
+ | |||
+ | ## Last actions in session ME | ||
+ | ## warning : this script auto delete itself in the end | ||
+ | bash -c "cat > $RUNMELAST_PATH" | ||
+ | #!/bin/bash | ||
+ | ### Hint : alter this file in Live USB context only | ||
+ | |||
+ | ### Definitively remove $DEFAULT_LIVE_USB_USER user/ | ||
+ | ### nota : usermod -g ... temporarily move user into my group, so I can remove it | ||
+ | deluser $DEFAULT_LIVE_USB_USER | ||
+ | usermod -g $ME $DEFAULT_LIVE_USB_USER | ||
+ | delgroup $DEFAULT_LIVE_USB_USER | ||
+ | rm -rf / | ||
+ | sed -i " | ||
+ | sed -i "/ | ||
+ | sed -i "/ | ||
+ | |||
+ | ### Delete my RUNMELAST trigger | ||
+ | sed -i "/ | ||
+ | |||
+ | ### Delete me | ||
+ | rm -f \\\$0 | ||
+ | EOF1_4 | ||
+ | |||
+ | chmod +x $RUNMELAST_PATH | ||
+ | |||
+ | reboot | ||
+ | EOF1 | ||
+ | |||
+ | chmod +x $LUC_LIVEUSB_PATH/ | ||
+ | |||
+ | echof " | ||
+ | bash -c "cat > $LUC_LIVEUSB_PATH/ | ||
+ | #!/bin/bash | ||
+ | ## Empty casper-rw partition (impossible to retrieve data) | ||
+ | CASPER_RW_PATH=\`mount |grep casper-rw |cut -f 3 -d " "\` | ||
+ | rm -rf \$CASPER_RW_PATH/ | ||
+ | echo " | ||
+ | echo " | ||
+ | "you must reboot to resolve the problem" | ||
+ | echo "To reboot : sudo reboot + give password" | ||
+ | EOF4 | ||
+ | |||
+ | chmod +x $LUC_LIVEUSB_PATH/ | ||
+ | |||
+ | echof " | ||
+ | mksquashfs $LUC_CUSTOM_SQUASHFS_PATH \ | ||
+ | $LUC_LIVEUSB_PATH/ | ||
+ | |||
+ | |||
+ | ################################ | ||
+ | |||
+ | echof "=== FINALIZE LIVE USB ===" | ||
+ | |||
+ | echof " | ||
+ | umount $LUC_SQUASHFS_PATH | ||
+ | umount $LUC_LIVEUSB_PATH | ||
+ | umount $LUC_ISO_PATH | ||
+ | rm -rf $LUC_PATH | ||
+ | echof " | ||
+ | unset -f echof | ||
+ | </ | ||
+ | |||
+ | ===== Mini How-To ===== | ||
+ | |||
+ | ==== Avant l' | ||
+ | Dans le script OneTouch, si je veux : | ||
+ | * Changer la taille des partitions : voir les paramètres pré-configurés **USB_PART*_SIZE** | ||
+ | * Ajouter d' | ||
+ | * Ajouter automatiquement des nouveaux logiciels : voir le paramètre pré-configuré **EMBED_PACKETS** et séparer les packets par une espace | ||
+ | * Avoir tous les messages au démarrage : voir le paramètre pré-configuré **LIVE_USB_BOOT_QUIET** | ||
+ | |||
+ | ==== Après l' | ||
+ | Si je veux : | ||
+ | * Avoir ou pas tous les messages au démarrage : supprimer / ajouter les paramètres "quiet splash" | ||
+ | * Utiliser ou pas le Network Manager au lieu de ifup : supprimer / ajouter le paramètre **" | ||
+ | * Modifier le script d' | ||
+ | * Réinitialiser (attention : contenu de la persistance perdu) : Live USB éteint il suffit de monter et de supprimer le contenu de la partition **casper-rw**, | ||
+ | |||
+ | ===== Les autres OS ? ===== | ||
+ | |||
+ | ==== Live USB 64 bits ==== | ||
+ | Je n'ai pas pu installer un Lubuntu 64 bits car je n'ai pas de processeur 64 bits à disposition. | ||
+ | |||
+ | Si quelqu' | ||
+ | |||
+ | ==== Live USB autres distros ==== | ||
+ | Donc, là je n'ai testé que Lubuntu. Il faudra vérifier / adapter les scripts runme1st_from_ext.sh et reset.sh qui sont dédiés à Lubuntu. | ||
+ | |||
+ | ==== PC-BUILDER autre que Ubuntu ==== | ||
+ | Si PC-BUILDER n'est par Debian like, je pense qu'il faudra tout adapter. En particulier, | ||
+ | |||
+ | ==== PC-BUILDER sous Windows ==== | ||
+ | Alors là tout est à faire :-D, mais peut être qu'en Power Shell ce n'est pas si compliqué et ça permettrait de tout scripter. | ||
+ | |||
+ | * Créer une clé bootable avec système Live Linux ([[http:// | ||
+ | * Gestion MBR et partitions par script ([[http:// | ||
+ | |||
+ | Par contre pour les fonctionnalités squashfs, je ne suis pas sûr qu'un Windows puisse (peut être avec émulation) | ||
+ | |||
+ | Bref ! A voir ! | ||
+ | |||
+ | ===== TODO ===== | ||
+ | |||
+ | ==== Où vais-je ? ==== | ||
+ | Je suis à 99 % satisfait du résultat. | ||
+ | |||
+ | Seul un (tout ch'ti) petit bémol : ce n'est pas pratique de trimbaler un HDD externe (je pense à l' | ||
+ | |||
+ | Donc ce problème reste à résoudre (en même temps c' | ||
+ | |||
+ | J'ai deux pistes : | ||
+ | * les clés USB avec technologie SSD (très onéreuses 8-o ) | ||
+ | * les clés USB standard avec gestions différentes (comme par exemple [[http:// | ||
+ | |||
+ | ==== Pistes à suivre (ou pas :) ) ? ==== | ||
+ | * Résoudre les problèmes connus | ||
+ | * Etudier le processus de boot du système Live ou système normal | ||
+ | * Comprendre pourquoi il faut copier gfxboot.c32 de PC-BUILDER | ||
+ | * Epurer tous les fichiers dont on n'a pas besoin pour le boot, pour créér un système minimal | ||
+ | * Que se passe-t-il lors d'une mise à jour du système ? Du noyau ? | ||
+ | * Gestion des disques avec GPT (pour UEFI) | ||
+ | * Historiser tous les affichages en plus de l' | ||
+ | * Gérer la wifi par script | ||
+ | * Modifier filesystem.squashfs de manière à lui intégrer les applis et autres AVANT le 1er démarrage (chroot sur le système) : pas forcément pertinent car 1) la taille de partition 1 va grossir et donc il faudra le gérer, 2) on peut modifier in situ le script runme1st_from_ext.sh (on a déjà la rolls quoi !) | ||
+ | * Multi boot ? | ||
+ | |||
+ | ===== Problèmes connus ===== | ||
+ | * A l' | ||
+ | * Si on enlève la prise en charge ifup dans / | ||
+ | * Parfois sous Lubuntu, le bouton power n' | ||
+ | |||
+ | ===== Le mot de la fin ===== | ||
+ | Je tiens à remercier les nombreuses personnes qui n'ont pas hésité à passer du temps pour nous transmettre leur travail, leur passion, leurs tests, leurs découvertes, | ||
+ | |||
+ | Toute cette documentation a été élaborée en à partir de l' | ||
+ | |||
+ | Voilou, merci de m' | ||
+ | |||
+ | ===== Historique ===== | ||
+ | |||
+ | * v_1_2 (22/04/15) : | ||
+ | * modifications mineures | ||
+ | * v_1_1 (17/04/15) : | ||
+ | * modifications mineures, | ||
+ | * test actualisé Ubuntu 14.04 LTS 64 bits, | ||
+ | * ajout de la rubrique " | ||
+ | * v_1_0 (14/04/15) : début de l' | ||
+ | |||
+ | ---- | ||
+ | // | ||
+ | |||
+ | Version : 1.2 | ||
+ | |||
+ | Date de version : 22/04/15 |