Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
tutoriel:lubuntu_usb_creator [Le 25/02/2021, 09:33]
lenainjaune [Lubuntu USB Creator] note importante
tutoriel:lubuntu_usb_creator [Le 25/02/2021, 09:35] (Version actuelle)
lenainjaune [Lubuntu USB Creator] note importante
Ligne 1: Ligne 1:
 +{{tag>​boot live_usb lubuntu mbr tutoriel Trusty}}
  
 +----
 +
 +
 +<note important>​Tout ce qui trouve dans cette page est à prendre **avec des pincettes**. Certains éléments sont obsolètes et/ou mal maîtrisés. En définitive,​ il y a **à boire et à manger** mais certains éléments sont très utiles (en partie l'​écriture du script **bash** dont je suis assez fier :-)). Je reviendrais certainement bientôt, mettre à jour et simplifier, parce qu'​avec le recul je trouve cette page fouilli et peu optimisée. A suivre .... lnj le 25/02/21 à 09:​35</​note>​
 +====== Lubuntu USB Creator ======
 +<note help>Ce tutoriel a pour origine un besoin de remplacer un disque dur défaillant (voir [[http://​openclassrooms.com/​forum/​sujet/​remplacer-un-hdd-par-un-live-usb#​message-88173124|ici]]). Comme je pouvais difficilement le remplacer (format 1.8" peu commun), je suis parti en quête de solution alternative. Je voulais explorer la possibilité d'​utiliser un Live USB, mais sans trop savoir où je m'​aventurais. Pris au jeu, cette exploration est devenue un projet à part entière. ​
 +
 +Ayant bien-bien-bien avancé sur le sujet et je vous propose aujourd'​hui le fruit de mon travail... :​-)</​note>​
 +
 +Comme je le disais dans mon [[http://​openclassrooms.com/​forum/​sujet/​remplacer-un-hdd-par-un-live-usb#​message-88173124|post initial]], j'​allais tester la solution du Live USB à partir d'un S-ATA externe connecté par USB. 
 +
 +J'ai réussi à créer un Live USB persistant sur un HDD SATA branché sur une station d'​accueil externe et connectée via USB. De plus, j'ai réussi à créer un script '​OneTouch'​ qui construit lui même le Live USB à partir de nos réglages.
 +
 +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 [[#​pre-requis|Pré-requis]] puis poursuivre par [[#​mode_d_emploi|Mode d'​emploi]] (temps d'​installation estimé : 20 minutes)</​note>​
 +
 +<note help>Si vous avez des commentaires,​ remarqué des erreurs ou adapté le script à d'​autres distributions,​ n'​hésitez pas à faire un retour sur le [[http://​forum.ubuntu-fr.org/​viewtopic.php?​pid=19673001#​p19673001|forum]].</​note>​
 +
 +===== Pré-requis =====
 +Pour mettre tout ça en place, vous aurez besoins des éléments suivants :
 +  * Disposer des [[:​sudo|droits d'​administration]].
 +  * Disposer d'une connexion à Internet configurée et activée.
 +  * Le fichier ISO de la distribution ​ [[https://​help.ubuntu.com/​community/​Lubuntu/​GetLubuntu|Lubuntu]] pour architecture 32 bits (voir les [[#​plateformes_supportees|plateformes supportées]])
 +Pour connaître l'​architecture du micro-processeur : 
 +<code bash>​lscpu |grep bit</​code>​
 +  * Un PC pour construire le support USB, appelons le **PC-BUILDER** (voir les [[#​plateformes_supportees|plateformes supportées]])
 +  * Un disque dur externe SATA + station accueil SATA reliée par USB ou eSATA (pour ceux qui ne connaissent pas : [[http://​lmgtfy.com/?​q=station+accueil+sata+usb|http://​lmgtfy.com/?​q=station+accueil+sata+usb]]) ; pour ceux qui n'ont pas un tel matériel une simple clé USB de 2 GB mini fera l'​affaire pour tester.
 +<note warning>
 +ATTENTION : la technologie d'une clé USB n'​étant pas prévue pour les multiples écritures nécessaires au fonctionnement d'un OS, il en résultera une durée de vie réduite, vous voilà prévenu !
 +</​note>​
 +  * Un autre PC pour tester, appelons le **PC-LIVE** qui servira d'​hôte à notre Live USB (il ne touchera pas à l'​éventuel OS en place) ; si on n'a pas de 2ème PC on peut utiliser PC-BUILDER, seulement ce sera moins pratique (surtout pour l'​accès distant ^^ )
 +
 +<note tip>​Maintenant que vous avez les pré-requis,​ peut être voudriez-vous tester la [[#​mode_d_emploi|finalité]] (temps estimé : 20 min) ?</​note>​
 +
 +==== Plateformes supportées ====
 +Ces couples de plateformes ont été testées avec succès :
 +^ OS PC-BUILDER ​           ^ CPU     ^ OS PC-LIVE ​           ^ CPU     ^ RMQ ^
 +| 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>​N'​hésitez pas à faire un retour sur le [[http://​forum.ubuntu-fr.org/​viewtopic.php?​pid=19673001#​p19673001|forum]],​ pour faire évoluer cette liste.</​note>​
 +
 +===== 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'​éventuel système déjà en place.
 +
 +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'​exploitation Lubuntu, car très léger. Il sera accessible à distance via SSH ou par VNC à une adresse IP définie AVANT la création du support. Il sera en français, à l'​heure et aura comme unique utilisateur ... vous ! Il possèdera les fonctions de base d'un système d'​exploitation : client navigateur Internet, éditeur de texte, navigateur de fichiers, Disk, GParted, etc. En outre, il intégrera tous les outils que vous jugerez bon de lui ajouter (avant ou après sa création).
 +
 +Il faut ajouter que tout se configure avant l'​installation en renseignant [[#​mode_d_emploi|quelques paramètres]] (pas de quoi foueter un chat non plus hein !).
 +
 +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'​explications dans le [[#​mini_how-to|mini How-To]])
 +
 +===== 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>​
 +
 +<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,​ surtout au niveau des termes. Je ne garanti pas l'​exactitude,​ mais je suis parti du principe que quand plusieurs explications vont dans le même sens, c'est qu'​elle doivent être vraies ou tendre vers la vérité. Ensuite, il y a mes propres expériences (réalisées avec mes mimines à moi), le bon sens et l'​intuition. Toutefois quand j'​annonce quelque chose, j'​essaye dans la mesure du possible de citer mes sources. Si vous voyez des erreurs n'​hésitez pas à le signaler, mais dans la même optique, en citant vos sources.
 +</​note>​
 +
 +Nota : ici je ne parle que du mécanisme de boot par BIOS / MBR ; je m'​attaquerais peut être plus tard au boot UEFI / GPT encore que je ne sois pas sûr que des Live USB de plus de 2 TB soient pertinents.
 +
 +Le schéma à avoir en tête ([[http://​poloastucien.free.fr/​mbr_fat_secteurs_boot_h.html#​1|source]]) :
 +
 +{{http://​poloastucien.free.fr/​mbr_secteurs-01.jpg}}
 +
 +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://​fr.wikipedia.org/​wiki/​Power-On_Self-Test|Power-On Self-Test]])
 +
 +Le BIOS cherche le premier support bootable, dont on peut définir soi-même l'​ordre de recherche (boot sequence) ou à la demande avec la touche F12 (ou autre), puis exécute le code du MBR...
 +
 +==== 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'​exploitation ou autres. Pour permettre cela, il faut que les premiers octets du support constituent un MBR bootable ou plus rarement, un VBR bootable (voir plus bas).
 +
 +Q : Qu'est ce qu'un **MBR** (Master Boot Record) ?\\
 +R : //​C'​est le premier secteur adressable d'un disque dur (cylindre 0, tête 0 et secteur 1, ou secteur 0 en adressage logique) dans le cadre d'un partitionnement Intel.// ([[http://​fr.wikipedia.org/​wiki/​Master_boot_record|wiki]]). Par héritage, pour adapter aux supports autres que le disque dur, on dira que le [[http://​fr.wikipedia.org/​wiki/​Master_boot_record|MBR]] ce sont les **512 premiers octets** de n'​importe quel support bootable.
 +
 +Nota : <code bash>​fdisk -l /​dev/<​device></​code>​ retourne l'​adresse en CHS (Cylinder, Head, Sector) et l'​adresse du premier secteur LBA (Logical Block Address) MEME si le support est une simple clé USB, alors que physiquement il n'y a ni cylindres, ni têtes de lecture sur une clé USB (comme quoi l'​héritage...)
 +
 +Q : Quel est le contenu d'un MBR ?\\
 +R : Un code exécutable (appelons la **routine_MBR**),​ d'​éventuels messages d'​erreurs en cas de problème, le descripteur des partitions principales,​ une signature de contrôle facultative et se termine obligatoirement par les octets "55 aa" qui représentent le **nombre magique** 0xaa55 ([[http://​fr.wikipedia.org/​wiki/​Master_boot_record#​Structure_du_MBR|wiki]]) pour distinguer un support bootable d'un autre ([[http://​poloastucien.free.fr/​mbr_fat_secteurs_boot_h.html#​2|sources]])
 +
 +<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) !
 +</​note>​
 +
 +On peut visualiser le contenu hexadécimal/​ASCII d'un MBR grâce à la commande hexdump ou hd <code bash>hd /​dev/<​device>​ -n 512 -s 0</​code>​
 +
 +<​code>​
 +$ hd /dev/sde -n 512 -s 0
 +00000000 ​ fa b8 00 10 8e d0 bc 00  b0 b8 00 00 8e d8 8e c0  |................|
 +00000010 ​ fb be 00 7c bf 00 06 b9  00 02 f3 a4 ea 21 06 00  |...|.........!..|
 +00000020 ​ 00 be be 07 38 04 75 0b  83 c6 10 81 fe fe 07 75  |....8.u........u|
 +00000030 ​ f3 eb 16 b4 02 b0 01 bb  00 7c b2 80 8a 74 01 8b  |.........|...t..|
 +00000040 ​ 4c 02 cd 13 ea 00 7c 00  00 eb fe 00 00 00 00 00  |L.....|.........|
 +00000050 ​ 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
 +*
 +000001b0 ​ 00 00 00 00 00 00 00 00  30 85 09 00 00 00 80 01  |........0.......|
 +000001c0 ​ 01 00 0c fe 3f 79 3f 00  00 00 bb e7 1d 00 00 00  |....?​y?​.........|
 +000001d0 ​ 01 7a 83 fe ff ff fa e7  1d 00 c7 a2 83 12 00 00  |.z..............|
 +000001e0 ​ 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
 +000001f0 ​ 00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
 +00000200
 +</​code>​
 +
 +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://​poloastucien.free.fr/​mbr_fat_secteurs_boot_h.html#​2|sources]])
 +
 +En reprenant l'​affichage hexdump du dessus :
 +<​code>​
 +000001b0 ​                                            80 01  |              ..|
 +000001c0 ​ 01 00 0c fe 3f 79 3f 00  00 00 bb e7 1d 00        |....?​y?​....... ​ |
 +
 +000001c0 ​                                            00 00  |              ..|
 +000001d0 ​ 01 7a 83 fe ff ff fa e7  1d 00 c7 a2 83 12        |.z............ ​ |
 +
 +000001d0 ​                                            00 00  |              ..|
 +000001e0 ​ 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
 +000001f0 ​ 00 00 00 00 00 00 00 00  00 00 00 00 00 00        |.............. ​ |
 +</​code>​
 +
 +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 "​00",​ cela indique qu'il n'y a pas de 3ème et 4ème partition.
 +
 +Pour plus d'​explications,​ voir [[http://​poloastucien.free.fr/​mbr_fat_secteurs_boot_h.html#​2|ici]].
 +
 +==== Partition principale / étendue ====
 +Q : Que trouve t-on au début d'une **partition principale** ?\\
 +R : 512 octets qui constituent,​ soit le début d'un secteur de boot de volume (VBR), soit un secteur de boot de partition étendue (EBR) - ([[http://​poloastucien.free.fr/​mbr_fat_secteurs_boot_h.html#​1|sources]]).
 +
 +Q : Qu'est ce qu'une **partition étendue** ?\\
 +R : Permet d'​étendre le nombre de partitions pour dépasser la limite des 4 partitions principales.
 +
 +FIXME Q : Que contient un secteur de boot d'une partition étendue ?\\
 +R : Même type de structure qu'un MBR ([[http://​en.wikipedia.org/​wiki/​Extended_boot_record|EBR]]),​ en revanche semble commencer par une instruction de saut.
 +
 +==== 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'​elle contient, varient selon le FS sous-jacent. Certains supports contiennent directement un VBR sans MBR parent ; c'est le cas de nos vieilles disquettes ([[http://​en.wikipedia.org/​wiki/​Volume_boot_record#​Signature|wiki]])
 +
 +Nota : la taille d'un VBR dépend du FS sous-jacent (FAT32 : 32 secteurs, NTFS : 16 secteurs - [[http://​poloastucien.free.fr/​mbr_fat_secteurs_boot_h.html#​1|source]])
 +
 +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**,​ est suivi par le BPB qui donne les caractéristiques physiques de la partition et surtout l'​adresse de la table d'​allocation de fichiers, suivi de la routine_VBR,​ les éventuels messages d'​erreur,​ et comme pour le MBR, elle se termine par le nombre magique 0xaa55 ([[http://​poloastucien.free.fr/​mbr_fat_secteurs_boot_h.html#​5|source]]). La routine_VBR exécutera le bootloader.
 +
 +Nota : on peut visualiser le contenu hexadécimal/​ASCII d'un VBR de partition grâce à la commande hexdump <code bash>hd /​dev/<​device><​num_part>​ -n 512 -s 0</​code>​
 +
 +<​code>​
 +$ hd /dev/sde1 -n 512 -s 0
 +00000000 ​ eb 58 90 53 59 53 4c 49  4e 55 58 00 02 08 20 00  |.X.SYSLINUX... .|
 +00000010 ​ 02 00 00 00 00 f8 00 00  3f 00 ff 00 00 00 00 00  |........?​.......|
 +00000020 ​ bb e7 1d 00 78 07 00 00  00 00 00 00 02 00 00 00  |....x...........|
 +00000030 ​ 01 00 06 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
 +00000040 ​ 00 01 29 04 22 bd 91 4c  5f 4c 55 42 55 4e 54 55  |..)."​..L_LUBUNTU|
 +00000050 ​ 20 20 46 41 54 33 32 20  20 20 fa fc 31 c9 8e d1  |  FAT32   ​..1...|
 +00000060 ​ bc 76 7b 52 06 57 1e 56  8e c1 b1 26 bf 78 7b f3  |.v{R.W.V...&​.x{.|
 +00000070 ​ a5 8e d9 bb 78 00 0f b4  37 0f a0 56 20 d2 78 1b  |....x...7..V .x.|
 +00000080 ​ 31 c0 b1 06 89 3f 89 47  02 f3 64 a5 8a 0e 18 7c  |1....?​.G..d....||
 +00000090 ​ 88 4d f8 50 50 50 50 cd  13 eb 62 8b 55 aa 8b 75  |.M.PPPP...b.U..u|
 +000000a0 ​ a8 c1 ee 04 01 f2 83 fa  4f 76 31 81 fa b2 07 73  |........Ov1....s|
 +000000b0 ​ 2b f6 45 b4 7f 75 25 38  4d b8 74 20 66 3d 21 47  |+.E..u%8M.t f=!G|
 +000000c0 ​ 50 54 75 10 80 7d b8 ed  75 0a 66 ff 75 ec 66 ff  |PTu..}..u.f.u.f.|
 +000000d0 ​ 75 e8 eb 0f 51 51 66 ff  75 bc eb 07 51 51 66 ff  |u...QQf.u...QQf.|
 +000000e0 ​ 36 1c 7c b4 08 e8 e9 00  72 13 20 e4 75 0f c1 ea  |6.|.....r. .u...|
 +000000f0 ​ 08 42 89 16 1a 7c 83 e1  3f 89 0e 18 7c fb bb aa  |.B...|..?​...|...|
 +00000100 ​ 55 b4 41 e8 cb 00 72 10  81 fb 55 aa 75 0a f6 c1  |U.A...r...U.u...|
 +00000110 ​ 01 74 05 c6 06 46 7d 00  66 b8 88 1a 02 00 66 ba  |.t...F}.f.....f.|
 +00000120 ​ 00 00 00 00 bb 00 80 e8  0e 00 66 81 3e 1c 80 5e  |..........f.>​..^|
 +00000130 ​ 30 95 71 75 74 e9 f8 02  66 03 06 60 7b 66 13 16  |0.qut...f..`{f..|
 +00000140 ​ 64 7b b9 10 00 eb 2b 66  52 66 50 06 53 6a 01 6a  |d{....+fRfP.Sj.j|
 +00000150 ​ 10 89 e6 66 60 b4 42 e8  77 00 66 61 8d 64 10 72  |...f`.B.w.fa.d.r|
 +00000160 ​ 01 c3 66 60 31 c0 e8 68  00 66 61 e2 da c6 06 46  |..f`1..h.fa....F|
 +00000170 ​ 7d 2b 66 60 66 0f b7 36  18 7c 66 0f b7 3e 1a 7c  |}+f`f..6.|f..>​.||
 +00000180 ​ 66 f7 f6 31 c9 87 ca 66  f7 f7 66 3d ff 03 00 00  |f..1...f..f=....|
 +00000190 ​ 77 17 c0 e4 06 41 08 e1  88 c5 88 d6 b8 01 02 e8  |w....A..........|
 +000001a0 ​ 2f 00 66 61 72 01 c3 e2  c9 31 f6 8e d6 bc 68 7b  |/​.far....1....h{|
 +000001b0 ​ 8e de 66 8f 06 78 00 be  da 7d ac 20 c0 74 09 b4  |..f..x...}. .t..|
 +000001c0 ​ 0e bb 07 00 cd 10 eb f2  31 c0 cd 16 cd 19 f4 eb  |........1.......|
 +000001d0 ​ fd 8a 16 74 7b 06 cd 13  07 c3 42 6f 6f 74 20 65  |...t{.....Boot e|
 +000001e0 ​ 72 72 6f 72 0d 0a 00 00  00 00 00 00 00 00 00 00  |rror............|
 +000001f0 ​ 00 00 00 00 00 00 00 00  fe 02 b2 3e 18 37 55 aa  |...........>​.7U.|
 +00000200
 +</​code>​
 +
 +En reprenant l'​affichage hexdump du dessus :
 +<​code>​
 +00000000 ​ eb 58 90                                          |.X.             |
 +
 +00000000 ​          53 59 53 4c 49  4e 55 58                 ​| ​  ​SYSLINUX ​   |
 +
 +00000000 ​                                      02 08 20 00  |            .. .|
 +00000010 ​ 02 00 00 00 00 f8 00 00  3f 00 ff 00 00 00 00 00  |........?​.......|
 +00000020 ​ bb e7 1d 00 78 07 00 00  00 00 00 00 02 00 00 00  |....x...........|
 +00000030 ​ 01 00 06 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
 +00000040 ​ 00 01 29 04 22 bd 91 4c  5f 4c 55 42 55 4e 54 55  |..)."​..L_LUBUNTU|
 +00000050 ​ 20 20 46 41 54 33 32 20  20                       ​| ​ FAT32         |
 +
 +00000050 ​                             20 fa fc 31 c9 8e d1  |          ..1...|
 +00000060 ​ bc 76 7b 52 06 57 1e 56  8e c1 b1 26 bf 78 7b f3  |.v{R.W.V...&​.x{.|
 +00000070 ​ a5 8e d9 bb 78 00 0f b4  37 0f a0 56 20 d2 78 1b  |....x...7..V .x.|
 +00000080 ​ 31 c0 b1 06 89 3f 89 47  02 f3 64 a5 8a 0e 18 7c  |1....?​.G..d....||
 +00000090 ​ 88 4d f8 50 50 50 50 cd  13 eb 62 8b 55 aa 8b 75  |.M.PPPP...b.U..u|
 +000000a0 ​ a8 c1 ee 04 01 f2 83 fa  4f 76 31 81 fa b2 07 73  |........Ov1....s|
 +000000b0 ​ 2b f6 45 b4 7f 75 25 38  4d b8 74 20 66 3d 21 47  |+.E..u%8M.t f=!G|
 +000000c0 ​ 50 54 75 10 80 7d b8 ed  75 0a 66 ff 75 ec 66 ff  |PTu..}..u.f.u.f.|
 +000000d0 ​ 75 e8 eb 0f 51 51 66 ff  75 bc eb 07 51 51 66 ff  |u...QQf.u...QQf.|
 +000000e0 ​ 36 1c 7c b4 08 e8 e9 00  72 13 20 e4 75 0f c1 ea  |6.|.....r. .u...|
 +000000f0 ​ 08 42 89 16 1a 7c 83 e1  3f 89 0e 18 7c fb bb aa  |.B...|..?​...|...|
 +00000100 ​ 55 b4 41 e8 cb 00 72 10  81 fb 55 aa 75 0a f6 c1  |U.A...r...U.u...|
 +00000110 ​ 01 74 05 c6 06 46 7d 00  66 b8 88 1a 02 00 66 ba  |.t...F}.f.....f.|
 +00000120 ​ 00 00 00 00 bb 00 80 e8  0e 00 66 81 3e 1c 80 5e  |..........f.>​..^|
 +00000130 ​ 30 95 71 75 74 e9 f8 02  66 03 06 60 7b 66 13 16  |0.qut...f..`{f..|
 +00000140 ​ 64 7b b9 10 00 eb 2b 66  52 66 50 06 53 6a 01 6a  |d{....+fRfP.Sj.j|
 +00000150 ​ 10 89 e6 66 60 b4 42 e8  77 00 66 61 8d 64 10 72  |...f`.B.w.fa.d.r|
 +00000160 ​ 01 c3 66 60 31 c0 e8 68  00 66 61 e2 da c6 06 46  |..f`1..h.fa....F|
 +00000170 ​ 7d 2b 66 60 66 0f b7 36  18 7c 66 0f b7 3e 1a 7c  |}+f`f..6.|f..>​.||
 +00000180 ​ 66 f7 f6 31 c9 87 ca 66  f7 f7 66 3d ff 03 00 00  |f..1...f..f=....|
 +00000190 ​ 77 17 c0 e4 06 41 08 e1  88 c5 88 d6 b8 01 02 e8  |w....A..........|
 +000001a0 ​ 2f 00 66 61 72 01 c3 e2  c9 31 f6 8e d6 bc 68 7b  |/​.far....1....h{|
 +000001b0 ​ 8e de 66 8f 06 78 00 be  da 7d ac 20 c0 74 09 b4  |..f..x...}. .t..|
 +000001c0 ​ 0e bb 07 00 cd 10 eb f2  31 c0 cd 16 cd 19 f4 eb  |........1.......|
 +000001d0 ​ fd 8a 16 74 7b 06 cd 13  07 c3 42 6f 6f 74 20 65  |...t{.....Boot e|
 +000001e0 ​ 72 72 6f 72 0d 0a 00 00  00 00 00 00 00 00 00 00  |rror............|
 +000001f0 ​ 00 00 00 00 00 00 00 00  fe 02 b2 3e 18 37 55 aa  |...........>​.7U.|
 +00000200
 +</​code>​
 +
 +On peut notera que :
 +  * Les 3 premiers octets constituent une instruction de saut de 88 octets ([[http://​www.binaryhexconverter.com/​hex-to-decimal-converter|58h=88d]] ; 58 en héxadécimal correspond à 88 décimal). Donc on va "​sauter"​ 88 octets qui nous emmène directement au 4ème bloc (ligne 0000050)
 +  * Les 8 octets suivants concernent le [[http://​thestarman.narod.ru/​asm/​mbr/​W7VBR.htm|OEM ID]] (en gros qui a créé le VBR) : ici on voit que c'est SYSLINUX
 +  * Le bloc suivant concerne le BPB ([[http://​fr.wikipedia.org/​wiki/​BIOS_parameter_block|BIOS parameter block]]) qui décrit la couche physique du support ; également on peut voir en clair le libellé du support (ici L_LUBUNTU), ainsi que le FS (ici le système de fichier est en FAT32)
 +  * Le dernier bloc commence par la routine_VBR (exécuté après l'​instruction de saut), suivi des messages d'​erreur
 +  * Encore et toujours, les deux derniers octets constituent le nombre magique 0xaa55
 +
 +Plus d'​explications [[http://​thestarman.narod.ru/​asm/​mbr/​W7VBR.htm|ici]] (attention : en anglais et pour utilisateurs avertis)
 +
 +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'​exploitation qui à son tour pourra charger un système d'​exploitation "​lourd"​ (Ubuntu, Windows).
 +
 +==== 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,​ qui exécute à son tour la routine_VBR,​ qui exécute elle même le boot loader. Rien n'​empêche de le faire en deux temps : le BIOS exécute la routine_MBR qui exécute elle même le bootloader. Voir en un temps, le BIOS exécute la routine_MBR qui se trouve être le fichier bootloader. Aussi, je rappelle qu'on peut très bien avoir un VBR sans MBR (cas des [[http://​en.wikipedia.org/​wiki/​Design_of_the_FAT_file_system#​Bootsector|disquettes]]).
 +
 +Tout ça pour dire, que finalement tout est possible, selon "​comment"​ on écrit le BIOS, la routine de MBR / VBR, etc.
 +
 +Ceci explique certainement,​ pourquoi les explications concernant le boot, sont floues et divergentes. En tout cas j'​espère vous avoir éclairé sur ses possibilités.
 +
 +===== Installation manuelle du Live USB =====
 +Avant d'​élaborer le [[#​le_code|script OneTouch]], je suis bien évidemment passé par la phase "​installation à la mano".
 +
 +<note important>​
 +Ce guide manuel est dédié pour un live USB "​Lubuntu 14.10 32 bits" qui a été créé depuis un PC équipé de "​Ubuntu 12.04 LTS 32 bits" (PC-BUILDER) ; si vous n'avez pas ces prérequis, vous aurez certainement à adapter les consignes suivantes.
 +</​note>​
 +
 +==== Préparation ====
 +Pour créer le support avec une persistance dans une partition **/​casper-rw**,​ j'ai suivi [[http://​gornthorn.over-blog.fr/​article-live-usb-en-mode-persistant-avec-l-integralite-de-la-cle-usb-74373994.html|ce lien]] qui utilise l'​outil "​Créer un disque de démarrage"​ et GParted ([[:​tutoriel:​comment_installer_un_paquet|Installez les paquets]] **[[apt>​gparted|gparted]]**).
 +
 +L'​outil "​Créer un disque de démarrage"​ est par défaut sous Ubuntu et contient quelques bugs. Entre autres :
 +  * Pour une raison que j'​ignore,​ parfois le support disparait au bout d'un moment ; il suffit de rebrancher le support pour qu'il réapparaisse
 +  * Apparemment,​ si on utilise une connexion eSATA, le support ne sera pas détecté par l'​application (en tout cas, moi je n'ai pas réussi), donc uniquement en connexion USB
 +
 +==== Session Live FR et silencieuse ====
 +Modifier le fichier de configuration ([[:​tutoriel:​comment_modifier_un_fichier|Ouvrez le fichier]] **<​racine_support_usb>/​syslinux/​syslinux.cfg**).
 +
 +Remplacer son contenu par :
 +<​code>​
 +DEFAULT live
 +LABEL live
 +  SAY Lubuntu USB Live Persistant
 +  KERNEL /​casper/​vmlinuz
 +  APPEND noprompt persistent boot=casper initrd=/​casper/​initrd.lz quiet splash \
 +  locale=fr_FR.UTF-8 console-setup/​layoutcode=fr
 +</​code>​
 +
 +==== Remplacer le fichier gfxboot.c32 ====
 +Remplacer le fichier gfxboot.c32 du support par celui du PC-BUILDER de création :
 +<code bash>​sudo cp /​usr/​lib/​syslinux/​gfxboot.c32 <​racine_support_usb>/​syslinux/​gfxboot.c32</​code>​
 +
 +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 **"​live"​** (sans les guillemets),​ suivi d'un appui la touche **Entrée**.
 +
 +==== Mettre en place le PC-LIVE ====
 +Brancher le live USB sur un PC de test éteint (PC-LIVE)
 +
 +S'​assurer que le PC-LIVE est relié physiquement au réseau (au besoin démarrez le et vérifiez que vous avez accès au réseau).
 +
 +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 "​Installer Lubuntu"​ sur le bureau
 +</​note>​
 +
 +=== 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 "​Paramètres IPv4" (IPv4 settings) et renseigner (adapter à votre cas) :
 +      * 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 "​Présentation rapide"​
 +    * Fermer
 +  * Tout mettre à niveau
 +  * Rechercher
 +  * Saisir : openssh-server
 +    * Rechercher
 +  * Cocher > Sélectionner pour l'​installation
 +    * Ajouter à la sélection
 +  * Refaire une recherche pour **vino** et pour **x11vnc**
 +  * Appliquer
 +  * Popup "​Appliquer les modification suivantes"​
 +    * 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 "​Modifier le mot de passe de l'​utilisateur"​ (adapter) :
 +    * 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 "​vous"​ dans la liste des membres du groupe
 +      * 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=<​mon_login>​
 +sudo sed -i "​s/​lubuntu/​$ME/​g"​ /​etc/​lightdm/​lightdm.conf
 +exit
 +</​code>​
 +
 +  * Menu démarrer > Déconnexion > Redémarrer
 +
 +==== 2ème démarrage : votre session ====
 +Vous venez d'​ouvrir automatiquement votre session avec succès. Il ne reste plus qu'à supprimer l'​utilisateur par défaut de la Live session "​lubuntu"​ et configurer l'​accès VNC.
 +
 +<note tip>
 +Vous pourrez constater, qu'il N'Y A PLUS de raccourci "​Installer Lubuntu"​ sur le bureau
 +</​note>​
 +
 +=== Supprimer l'​utilisateur "​lubuntu"​ et son groupe ===
 +  * 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 "​s/​^$LU/​$USER/​g"​ /​etc/​sudoers.d/​casper
 +sudo sed -i "/​^$LU:/​d"​ /etc/passwd
 +sudo sed -i "/​^$LU:/​d"​ /etc/shadow
 +exit
 +</​code>​
 +
 +=== Configurer VNC ===
 +Autoriser l'​accès distant :
 +  * Menu démarrer > Exécuter et saisir : <​code>​vino-preferences</​code>​
 +    * Cocher "​Autoriser d'​autres utilisateurs à voir votre bureau"​
 +    * Fermer
 +
 +Sécuriser l'​échange par VNC :
 +  * 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 /​home/​$USER/​.vnc/​passwd -forever -repeat -display :0 \& >> /​etc/​profile"​
 +exit
 +</​code>​
 +
 +  * Menu démarrer > Déconnexion > Redémarrer
 +
 +==== Tests d'​accès distant ====
 +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 <​mon_login>​@<​ip_PC-LIVE></​code>​ (ex : ssh lnj@192.168.0.3)
 +
 +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'​utilisateur : mon_login
 +  * 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>​
 +<note important>​
 +Volontairement,​ je ne donne pas trop d'​explications dans la section qui suit, car je maitrise mal et ça alourdirait.
 +</​note>​
 +
 +Si vous avez lu le chapitre [[#​fonctionnement_d_un_support_bootable|Fonctionnement d'un support bootable]], le début devrait vous sembler limpide.
 +
 +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 /​dev/<​device>​ mklabel -s "​msdos"​**),​ qui à son tour va exécuter la routine_VBR (construite par la commande **syslinux /​dev/<​device>​**),​ qui va exécuter le boot loader (fichier **/​ldlinux.sys** créé par la commande syslinux précédente).
 +
 +=== 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'​appuyer sur la touche Entrée. En réalité, il attend que vous lui fournissiez un **kernel**.
 +
 +Vous pourriez simplement taper manuellement (sur un clavier QWERTY of course ;-) ) :\\
 +<code bash>/​casper/​vmlinuz /​casper/​initrd.lz</​code>​
 +
 +Et ça marcherait (explication plus bas) !
 +
 +Fort heureusement,​ **/​syslinux.sys** est accompagné d'un fichier **/​syslinux/​syslinux.cfg** qui automatise son fonctionnement.
 +
 +Donc, **/​syslinux.sys** va [[http://​www.syslinux.org/​wiki/​index.php/​SYSLINUX#​How_do_I_Configure_SYSLINUX.3F|lire]] **/​syslinux/​syslinux.cfg**,​ en déduire et exécuter **/​casper/​vmlinuz /​casper/​initrd.lz** suivi des autres joyeusetés,​ telles que désactiver le network-manager pour le remplacer par ifup, indiquer la persistance,​ booter silencieusement (écran splash à l'​appui),​ etc.
 +
 +Que sont ces fichiers du dossier **/casper** :
 +  * **/​casper/​vmlinuz** : **kernel** de linux au format compressé (d'où le "​z"​ au lieu du "​x"​),​ c'est à dire le noyau de linux, par défaut sans interractions extérieures possibles et qui sera chargé en mémoire vive.
 +  * **/​casper/​initrd.lz** : ([[http://​en.wikipedia.org/​wiki/​Initrd|initial ramdisk]]) ajoute une sorte de mini système d'​exploitation (compressé et lui aussi en mémoire vive) qui permettra, entre autre, d'​interagir sur le kernel, de lui ajouter des pilotes et des fonctionnalités,​ mais aussi, il permettra de dialoguer avec l'​utilisateur.
 +
 +Pour s'en convaincre, si le chargement du système échoue après l'​exécution du boot loader **/​syslinux.sys**,​ on se retrouve avec une ligne de commande (initramfs) avec un shell qui prend en compte les commandes busybox ([[http://​fr.wikipedia.org/​wiki/​BusyBox|wiki]]).
 +
 +Maintenant que le mini-système et ses pilotes sont en mémoire, l'​installation Live commence... ​
 +
 +=== 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'​abstenir de dire des bêtises et sauter directement à la phase suivante
 +</​note>​
 +
 +Notre système de fichier est monté.
 +
 +L'​étape suivante c'est l'​exécution automatique de **/​etc/​profile** (point d'​entrée sous notre contrôle - voir [[#​synoptique_et_role_des_fichiers|synoptique]]),​ qui va exécuter un script externe au système **/​cdrom/​scripts/​runme1st_from_ext.sh** (externe, car il se trouve sur la première partition du Live USB). Cette étape va s'​effectuer APRES l'​ouverture de la Live session, lorsque le bureau sera affiché, pour avoir une interaction avec l'​utilisateur final (vous). Ce dernier pourra alors suivre les opérations en cours dans un terminal. Si on ne lui montre pas, il aura l'​impression que le démarrage dure (c'est tordu, mais ça marche :D !)
 +
 +Remarque importante :
 +
 +Pour arriver à créer ce point d'​entrée,​ on a extrait le contenu du fichier **<​racine_live_usb>/​casper/​filesystem.squashfs** (système d'​exploitation au format compressé [[http://​fr.wikipedia.org/​wiki/​SquashFS|SQUASHFS]] en lecture seule), on en a modifié le fichier **<​racine_contenu>/​etc/​profile** et on a reconstruit **<​racine_live_usb>/​casper/​filesystem.squashfs**. La modification ayant inséré dans **/​etc/​profile** une unique instruction qui dit tout simplement : exécute le fichier externe **/​cdrom/​scripts/​runme1st_from_ext.sh** (voir [[#​synoptique_et_role_des_fichiers|synoptique]])
 +
 +Ce script externe va supprimer son propre déclencheur dans **/​etc/​profile** (pour éviter qu'il soit exécuté à chaque démarrage) et réaliser la première phase de post-installation.
 +
 +Cette première phase va permettre d'​installer le système aux petits oignons : sa configuration réseau, ses outils, ses réglages, l'​utilisateur final (vous), l'​accès distant et dernière étape, la création du script **/​home/​runmelast.sh** avec son déclencheur ajouté dans **/​etc/​rc.local**.
 +
 +**/​home/​runmelast.sh** sera exécuté après redémarrage.
 +
 +Cette première phase s'​achève avec le redémarrage de la machine.
 +
 +=== 2ème démarrage système ===
 +La deuxième phase de post-installation démarre avec l'​exécution automatique du script **/​etc/​rc.local** qui exécute à son tour **/​home/​runmelast.sh**.
 +
 +**/​home/​runmelast.sh** va supprimer : l'​utilisateur de la Live session qui n'est plus utile et qui a un mot de passe vide (on ne pouvait pas le faire avant car on était sur sa propre session, donc impossible de se supprimer soi-même), son déclencheur dans **/​etc/​rc.local**,​ lui-même.
 +
 +Et voilou !
 +
 +==== Synoptique et rôle des fichiers ====
 +Synoptique de LUC :
 +
 +{{:​tutoriel:​luc_synoptic.png?​direct|}}
 +
 +Rôle des fichiers :
 +  * luc : dossier projet
 +  * luc/iso : montage du fichier ISO
 +  * luc/​iso/​casper/​filesystem.squashfs : le filesystem du Live CD au format squashfs
 +  * luc/liveusb : dossier montage du support USB
 +  * luc/​liveusb/​casper/​filesystem.squashfs : le filesystem du Live USB au format squashfs RO
 +  * luc/​liveusb/​casper/​vmlinuz : le kernel linux compressé qui sera chargé en mémoire
 +  * luc/​liveusb/​casper/​initrd.lz : sorte de mini-OS chargé en mémoire, qui interface kernel + utilisateur
 +  * luc/​liveusb/​idlinux.sys : bootloader qui rend le support bootable (généré par syslinux)
 +  * luc/​liveusb/​scripts : scripts externes au live USB (accessible depuis **/cdrom** du Live USB)
 +  * luc/​liveusb/​scripts/​reset.sh : réinitialise tout comme au premier boot (donnée persistantes de **casper-rw perdues**)
 +  * luc/​liveusb/​scripts/​runme1st_from_ext.sh : script auto-déclenché au premier boot du Live USB par le point d'​entrée **/​etc/​profile**
 +  * luc/​liveusb/​syslinux/​gfxboot.c32 : fichier remplacé par celui de PC-BUILDER
 +  * luc/​liveusb/​syslinux/​syslinux.cfg : configuration de boot du Live USB
 +  * luc/​squashfs : dossier montage de **luc/​filesystem.squashfs**
 +  * luc/​custom-squashfs : dossier RW sur une copie du contenu de **luc/​iso/​casper/​filesystem.squashfs**,​ on ajoute uniquement le point d'​entrée dans **/​etc/​profile** vers **/​cdrom/​scripts/​runme1st.sh**
 +  * luc/​filesystem.squashfs : copie en RW de **luc/​iso/​casper/​filesystem.squashfs** en RO
 +
 +Nota : RW (Lecture / Ecriture), RO (Lecture seule)
 +
 +==== Mode d'​emploi ====
 +
 +<note important>​
 +Pour automatiser la gestion du réseau, je n'ai pas eu d'​autre choix, que de me passer du Network Manager qui n'est pas configurable en ligne de commande sous Ubuntu. La version nmcli ne permet pas le paramétrage sous Ubuntu (apparemment sous les autres distributions ça marche). Je ne le désinstalle pas, il est seulement "​caché"​ par le paramètre **ip=frommedia** de **<​racine_live_USB>/​syslinux/​syslinux.cfg**. Supprimer le paramètre et redémarrer permettra d'​utiliser à nouveau le Network Manager.
 +</​note>​
 +
 +Copier le contenu du [[#​le_code|script OneTouch]] et le coller dans le fichier ​ **luc_onetouch_install.sh**
 +
 +Donnez vous les droits d'​exécution :\\
 +<code bash>​chmod u+x luc_onetouch_install.sh</​code>​
 +
 +Déterminer le support que vous allez utiliser :\\
 +<code bash>​lsblk -o NAME,​TYPE,​FSTYPE,​LABEL,​SIZE,​MOUNTPOINT</​code>​
 +
 +=== Configurer paramètres fonctionnels (ou laisser les valeurs par défaut) ===
 +  * **DEV** : c'est un support entier choisi et non une partition (ex : DEV=/​dev/​sde)
 +  * **ISO** : chemin absolu du fichier ISO de Lubuntu (ex : ISO='/​ISO/​lubuntu-14.10-desktop-i386.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='​Le nain jaune'​)
 +  * **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 [[#​le_code|script OneTouch]]
 +
 +  * **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='​Lubuntu USB Live Persistant'​
 +  * **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'​installation ; à changer dès l'​ouverture de session (ex : ME_DEFAULT_PASSWORD=lubuntu)
 +  * **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>​sudo ./​luc_onetouch_install.sh</​code>​
 +
 +=== Utiliser la configuration rapide ===
 +Exécuter :\\
 +<code bash>​sudo ./​luc_onetouch_install.sh DEV ISO</​code>​
 +
 +  * **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,​ n'​oubliez pas de modifier sur le PC-LIVE :
 +  * Mot de passe de session : <code bash>​passwd</​code>​
 +  * Mot de passe de VNC (si vous l'avez installé) : <code bash>​x11vnc -storepasswd</​code>​
 +
 +=== Les outils ===
 +Des alias ont été ajoutés au profil de l'​utilisateur final (vous) dans le fichier **~/​.bahsrc** ; ils ciblent des fichier du dossier externe **/cdrom**.
 +
 +Les outils :
 +
 +  * luc_edit_runme1st : édite le script **/​cdrom/​scripts/​runme1st_from_ext.sh**
 +  * luc_edit_syslinux : édite la configuration **/​cdrom/​syslinux/​syslinux.cfg**
 +  * luc_reset : (attention : contenu de la persistance perdu) réinitialise la partition **casper-rw** (**/​cdrom/​scripts/​reset.sh**) ; redémarrage nécessaire avec le mot de passe configuré dans **ME_DEFAULT_PASSWORD**
 +
 +==== Le code ====
 +<note help>Si vous avez des commentaires,​ remarqué des erreurs ou adapté le script à d'​autres distributions,​ n'​hésitez pas à faire un retour sur le [[http://​forum.ubuntu-fr.org/​viewtopic.php?​pid=19673001#​p19673001|forum]].</​note>​
 +
 +Le script luc_onetouch_install.sh (n'​oubliez pas de [[#​mode_d_emploi|configurer]])
 +
 +<code bash luc_onetouch_install.sh>​
 +#!/bin/bash
 +
 +# LUBUNTU USB CREATOR aka LUC (run as sudo only)
 +# Up to date version : https://​doc.ubuntu-fr.org/​tutoriel/​lubuntu_usb_creator
 +# 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.
 +
 +#​ Supported versions : https://​doc.ubuntu-fr.org/​tutoriel/​lubuntu_usb_creator?​do=edit&​rev=0#​plateformes_supportees
 +
 +# 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
 +
 +#​ Different links which help me :
 +# http://​askubuntu.com/​questions/​397481/​how-to-make-a-persistent-live-ubuntu-usb-with-more-than-4gb
 +# http://​david.hautbois.free.fr/​wordpress/​index.php/​175-how-to-customize-your-ubuntu-live-usb-stick
 +# http://​day-to-day-stuff.blogspot.fr/​2011/​03/​on-making-custom-ubuntu-bootable-usb.html
 +# more - boot process : https://​wiki.archlinux.org/​index.php/​syslinux
 +# http://​doc.ubuntu-fr.org/​tutoriel/​live_usb_install4
 +# http://​www.linux.com/​community/​blogs/​133-general-linux/​420179-creating-a-debian-live-usb-flash-drive-with-persistence-for-non-techies
 +# https://​help.ubuntu.com/​community/​USB%20Installation%20Media)
 +
 +
 +##################################​ CHOOSE HDD #####################################​
 +
 +# to retrieve parts and disks : http://​www.labtestproject.com/​using_linux/​partition_hard_disk_using_fdisk_command_on_linux_fedora_system
 +# lsblk -o NAME,​TYPE,​FSTYPE,​LABEL,​SIZE,​MOUNTPOINT
 +
 +
 +################################​ STATIC SETTINGS ##################################​
 +
 +# ------------------------------- 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. '/​ISO/​tux.iso'​
 +# 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=/​dev/​sde
 +# !!! Warning: DEV data will be permanently deleted (no possible return ) !!!
 +ISO='/​ISO/​lubuntu-14.10-desktop-i386.iso'​
 +ME=user
 +ME_FULL='​User'​
 +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
 +#​ [recommended : USB_PART1_SIZE=1G - for 1 GB, see man parted search unit]
 +# USB_PART2_SIZE : size for the partition 2
 +#​ [recommended : USB_PART2_SIZE=100% - for all the remaining space] ​
 +# 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 : '​Lubuntu USB Live Persistant'​]
 +# 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='​htop vim'
 +# [default : ''​]
 +# Nota : ssh is later included by default
 +# EMBED_VNC : 0/1 embed VNC for remote desktop (0 => no, 1 => yes)
 +#​ http://​adept1formatique.unblog.fr/​2013/​08/​12/​bureau-a-distance-avec-lubuntu/​
 +# [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='​Lubuntu USB Live Persistant'​
 +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 '​locale=fr_FR.UTF-8 console-setup/​layoutcode=fr'​
 +# LANGUAGE_SUPPORT : make apps language with the right language support
 +# [default : fr]
 +# DATE_TIME_ZONE : synchro Time Zone (http://​askubuntu.com/​a/​594186)
 +# [default : Europe/​Paris]
 +# WAITING_REBOOT_TITLE : title to display in the terminal before reboot
 +# [default : '​Patienter avant le redémarrage...'​]
 +
 +DEFAULT_LIVE_USB_USER=lubuntu
 +NETWORK_MANAGER_ACTIVE=0
 +LOCALE='​locale=fr_FR.UTF-8 console-setup/​layoutcode=fr'​
 +LANGUAGE_SUPPORT=fr
 +DATE_TIME_ZONE=Europe/​Paris
 +WAITING_REBOOT_TITLE='​Patienter avant le redémarrage...'​
 +
 +# Embed ssh to install
 +EMBED_PACKETS="​ssh $EMBED_PACKETS"​
 +
 +# Embed VNC to install
 +if [ $EMBED_VNC -eq 1 ] ; then
 + EMBED_PACKETS="​$EMBED_PACKETS vino x11vnc"​
 +fi
 +
 +# Quiet or not
 +if [ $LIVE_USB_BOOT_QUIET -eq 1 ] ; then
 + LIVE_USB_BOOT_QUIET='​quiet splash'​
 +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='​ip=frommedia'​
 +fi
 +
 +# Define customized colors : http://​stackoverflow.com/​a/​5947802
 +C_red='​\033[1;​31m'​
 +C_blue='​\033[0;​34m'​
 +C_green='​\033[0;​32m'​
 +C_yellow='​\033[1;​33m'​
 +C_NC='​\033[0m'​
 +
 +# Echoing all steps (usage : echof "​..."​ [color])
 +# a=( "​$@"​ ) ... ${a[1]} because ${$2} does not work (args to array)
 +# http://​stackoverflow.com/​a/​18041780 + http://​stackoverflow.com/​a/​12711837
 +function echof () { if [ "​$2"​ ] ; then a=( "​$@"​ ) ; echo -e "​\n${a[1]}=>​ $1${C_NC}\n"​ ; else echo -e "​\n${C_yellow}=>​ $1${C_NC}\n"​ ; fi }
 +
 +
 +##############################​ PROTECT DATA #############################​
 +
 +LUC_MNT=~/​tmp/​mnt
 +
 +# If we give arg1 it will become DEV
 +if [ "​$1"​ ] ; then
 + DEV=$1
 +fi
 +
 +# If we give arg2 it will become ISO
 +if [ "​$2"​ ] ; then
 + ISO="​$2"​
 +fi
 +
 +# Get DISK part of DEV, so /dev/sde gives sde
 +DISK=`echo $DEV |sed "​s/​.*\/​\([a-z]*\)$/​\1/"​`
 +
 +# If DEV is not a real device disk
 +IS_DISK=`lsblk -o NAME,​TYPE,​FSTYPE,​LABEL,​SIZE,​MOUNTPOINT |grep ^$DISK`
 +if [ ! "​$IS_DISK"​ ] ; then
 + echo "Error : $DEV is not a valid disk !"
 + exit 1
 +fi
 +
 +# If ISO file does not exist
 +if [ ! -f "​$ISO"​ ] ; then
 + echo "Error : $ISO ISO file does not exist !"
 + exit 2
 +fi
 +
 +# Infos about selected device
 +echo -e "​\n${C_yellow}Block device of ${C_blue}$DEV${C_NC} :"
 +RES=`lsblk -o NAME,​TYPE,​FSTYPE,​LABEL,​SIZE,​MOUNTPOINT |sed "​1p;/​$DISK/​!d"​`
 +echo -e "​${C_green}$RES${C_NC}"​
 +
 +mkdir -p $LUC_MNT
 +
 +# For each partition we display the partial content
 +for X in `echo $DEV`*
 +do
 + if [ $X != $DEV ] ; then
 + echo -e "​\n${C_yellow}Partial content of ${C_blue}$X${C_NC} :"
 +
 + if [ "​`mount |grep $X`" ] ; then
 + 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 "​$CONTENT"​
 + fi
 +done
 +
 +rmdir $LUC_MNT
 +
 +# Confirm or not : http://​stackoverflow.com/​a/​1885534
 +MSG="​\n${C_red}You are about destroying all data from ${C_blue}$DEV${C_red}"​
 +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...
 +
 +
 +################################​ PREPARE ################################​
 +
 +# LUC paths
 +LUC_PATH=~/​luc
 +LUC_LIVEUSB_PATH=~/​luc/​liveusb
 +LUC_ISO_PATH=~/​luc/​iso
 +LUC_SQUASHFS_PATH=~/​luc/​squashfs
 +LUC_CUSTOM_SQUASHFS_PATH=~/​luc/​custom-squashfs
 +
 +# Scripts and other stuff paths
 +SCRIPTS_PATH=$LUC_LIVEUSB_PATH/​scripts
 +RUNME1ST_ROOT_PATH=scripts/​runme1st_from_ext.sh
 +RUNME1ST_EXT_PATH=/​cdrom/​$RUNME1ST_ROOT_PATH
 +SYSLINUX_EXT_PATH=/​cdrom/​syslinux/​syslinux.cfg
 +RESET_ROOT_PATH=scripts/​reset.sh
 +RESET_EXT_PATH=/​cdrom/​$RESET_ROOT_PATH
 +RUNMELAST_PATH=/​home/​runmelast.sh
 +
 +# 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
 +#COM
 +#exit
 +
 +echof "=== PREPARE LIVE USB ==="
 +
 +echof "​PREPARE > Download dependencies" ​
 +apt-get install -y syslinux mtools parted squashfs-tools
 +
 +echof "​PREPARE > Unmount all" ​
 +umount $DEV*
 +umount $LUC_ISO_PATH
 +umount $LUC_LIVEUSB_PATH
 +umount $LUC_SQUASHFS_PATH
 +rm -rf $LUC_PATH
 +
 +echof "​PREPARE > MBR + partitions"​
 +# man parted : http://​linux.die.net/​man/​8/​parted
 +# sample : http://​stackoverflow.com/​questions/​10519486/​valid-arguments-for-parted
 +# 100% remaining space http://​forums.gentoo.org/​viewtopic-t-586478-start-0.html
 +echof "​PREPARE > MBR MS-DOS (force to change)"​
 +parted "​$DEV"​ mklabel -s "​msdos"​
 +msg="​PREPARE > part1 FAT32, $USB_PART1_SIZE,​ format FAT32, label $USB_LABEL,"​
 +echof "$msg flag boot + lba"
 +parted -a cylinder "​$DEV"​ mkpart primary fat32 1 $USB_PART1_SIZE
 +mkfs.vfat -n "​$USB_LABEL"​ -I "​$DEV"​1 -F 32
 +parted "​$DEV"​ set 1 boot on
 +parted "​$DEV"​ set 1 lba on
 +msg="​PREPARE > part2 EXT4, $USB_PART2_SIZE remaining space, format EXT4,"
 +echof "$msg label '​casper-rw'"​
 +parted -a cylinder "​$DEV"​ mkpart primary ext4 $USB_PART1_SIZE $USB_PART2_SIZE
 +mkfs.ext4 -L '​casper-rw'​ "​$DEV"​2
 +
 +echof "​PREPARE > Live USB Building"​
 +
 +echof "​PREPARE > Live USB Building > Prepare working dir skeleton"​
 +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 "​PREPARE > Live USB Building > Mount of USB device"​
 +mount "​$DEV"​1 $LUC_LIVEUSB_PATH ​
 +
 +echof "​PREPARE > Live USB Building > Mount of ISO file"
 +mount -o loop $ISO $LUC_ISO_PATH
 +
 +echof "​PREPARE > Live USB Building > Copy all file from ISO"
 +# 2 errors of symlink will occur, because we can not copy symlink in FAT32 FS
 +rsync -aPv --exclude '​filesystem.squashfs'​ $LUC_ISO_PATH/​ $LUC_LIVEUSB_PATH/​
 +
 +echof "​PREPARE > Live USB Building > Copy of squashfs filesystem"​
 +rsync -aPv $LUC_ISO_PATH/​casper/​filesystem.squashfs $LUC_PATH/
 +
 +# Rename isolinux folder is mandatory because SYSLINUX searches in /syslinux folder (http://​www.syslinux.org/​wiki/​index.php/​SYSLINUX#​How_do_I_Configure_SYSLINUX.3F)
 +mv $LUC_LIVEUSB_PATH/​isolinux/​ $LUC_LIVEUSB_PATH/​syslinux
 +
 +echof "​PREPARE > Live USB Building > Create boot configuration"​
 +cat > "​$LUC_LIVEUSB_PATH/​syslinux/​syslinux.cfg"​ <<​EOT ​
 +DEFAULT live
 +LABEL live
 +  SAY $LIVE_USB_BOOT_MESSAGE
 +  KERNEL /​casper/​vmlinuz
 +  ## casper config : http://​manpages.ubuntu.com/​manpages/​trusty/​man7/​casper.7.html
 +  ## - NETWORK_MANAGER_ACTIVE : indicate whether NM or ifup is used to manage network
 +  ##   ​ [default : ip=frommedia]
 +  ## - persistent :​ make persistent the "​casper-rw"​ partition
 +  ## - LIVE_USB_BOOT_QUIET : display or not Lubuntu splash no verbose
 +  ##   ​ [default : quiet splash]
 +  ## - LOCALE : embed locale for keyboard, live session boot and other stuff
 +  ##   ​ [locale=fr_FR.UTF-8 console-setup/​layoutcode=fr]
 +  APPEND noprompt $NETWORK_MANAGER_ACTIVE \
 +   ​persistent boot=casper initrd=/​casper/​initrd.lz \
 +   ​$LIVE_USB_BOOT_QUIET $LOCALE
 +EOT
 +
 +# Files not used
 +rm $LUC_LIVEUSB_PATH/​syslinux/​isolinux.cfg
 +
 +echof "​PREPARE > Live USB Building > Make `echo $DEV`1 bootable"​
 +
 +# We must use gfxboot.c32 file's host (https://​bugs.launchpad.net/​ubuntu/​+source/​usb-creator/​+bug/​1325801/​comments/​11)
 +rsync -aPv /​usr/​lib/​syslinux/​gfxboot.c32 $LUC_LIVEUSB_PATH/​syslinux/​
 +
 +# Last step to make the USB bootable (`syslinux -i dev` run too)
 +syslinux "​$DEV"​1
 +
 +################################​ CUSTOMIZE ################################​
 +
 +echof "=== CUSTOMIZE LIVE USB ==="
 +
 +echof "​CUSTOMIZE > Extract SQUASHFS filesystem"​
 +mount -t squashfs -o loop $LUC_PATH/​filesystem.squashfs $LUC_SQUASHFS_PATH
 +rsync -aPv $LUC_SQUASHFS_PATH/​ $LUC_CUSTOM_SQUASHFS_PATH/​
 +
 +echof "​CUSTOMIZE > Adding auto-trigger script on reboot"​
 +# Entry point to execute an external script and following the execution in a terminal
 +echo sudo lxterminal -t "'"​$WAITING_REBOOT_TITLE"'"​ \
 + -e "bash -c \"​$RUNME1ST_EXT_PATH\"​ &" \
 + >> $LUC_CUSTOM_SQUASHFS_PATH/​etc/​profile
 +
 +# Folder in which we are storing external scripts of live system
 +mkdir $SCRIPTS_PATH
 +
 +echof "​CUSTOMIZE > Building off auto triggered script"​
 +bash -c "cat > $LUC_LIVEUSB_PATH/​$RUNME1ST_ROOT_PATH"​ <<​EOF1
 +#!/bin/bash
 +## Hint : alter this file in Live USB context only
 +
 +##​ PRE-CONFIGURED SWITCH VARS FROM PARENT
 +EMBED_VNC=$EMBED_VNC
 +UPDATE_OS=$UPDATE_OS
 +INSTALL_APP_LANG=$INSTALL_APP_LANG
 +
 +##​ Modifying network configuration,​ auto-start in boot and apply changes
 +## nota : due to Network Manager removing, network will not auto-start
 +bash -c "cat > /​etc/​network/​interfaces"​ <<​EOF1_1
 +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 ":​a;​N;​s/​\nexit 0/\n# Start network\nifup eth0\n&/;​Ta"​ /​etc/​rc.local
 +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://​askubuntu.com/​questions/​149876/​how-can-i-install-one-language-by-command-line
 +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 "​$ME_FULL"​ $ME
 +adduser $ME sudo
 +## Auto-logon : http://​doc.ubuntu-fr.org/​lightdm#​connexion_automatique
 +sed -i "​s/​^\(autologin-user=\)$DEFAULT_LIVE_USB_USER$/​\1$ME/​g"​ \
 + /​etc/​lightdm/​lightdm.conf
 +bash -c "echo $ME:​$ME_DEFAULT_PASSWORD | /​usr/​sbin/​chpasswd"​
 +
 +# Embed VNC stuff
 +if [ \$EMBED_VNC -eq 1 ] ; then
 +
 + # VNC : auto enable server desktop sharing
 + # http://​askubuntu.com/​a/​530196
 + 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 >> /​home/​$ME/​.profile"​ <<​EOF1_2
 +
 +# VNC : Activate distant desktop sharing
 +# src : http://​adept1formatique.unblog.fr/​2013/​08/​12/​bureau-a-distance-avec-lubuntu/​
 +# 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 '&'​ will run this command detached from process
 +x11vnc -rfbauth ~/​.vnc/​passwd -forever -repeat -display :0 &
 +EOF1_2
 +
 +fi
 +
 +## Useful aliases
 +bash -c "cat >> /​home/​$ME/​.bashrc"​ <<​EOF1_3
 +
 +alias luc_edit_runme1st="​sudo nano $RUNME1ST_EXT_PATH"​
 +alias luc_edit_syslinux="​sudo nano $SYSLINUX_EXT_PATH"​
 +alias luc_reset="​sudo $RESET_EXT_PATH"​
 +EOF1_3
 +
 +## Delete first trigger
 +sed -i "/​^sudo lxterminal -t/d" /​etc/​profile
 +
 +## Adding last trigger
 +sed -i ":​a;​N;​s/​\nexit 0/​\n$RUNMELAST_PATH_ESC&/;​Ta"​ /​etc/​rc.local
 +
 +## Last actions in session ME
 +## warning : this script auto delete itself in the end
 +bash -c "cat > $RUNMELAST_PATH"​ <<​EOF1_4
 +#!/bin/bash
 +### Hint : alter this file in Live USB context only
 +
 +### Definitively remove $DEFAULT_LIVE_USB_USER user/​group/​home/​sudoers/​persistance
 +### 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 /​home/​$DEFAULT_LIVE_USB_USER
 +sed -i "​s/​^$DEFAULT_LIVE_USB_USER/​$ME/​g"​ /​etc/​sudoers.d/​casper
 +sed -i "/​^$DEFAULT_LIVE_USB_USER:/​d"​ /etc/passwd
 +sed -i "/​^$DEFAULT_LIVE_USB_USER:/​d"​ /etc/shadow
 +
 +### Delete my RUNMELAST trigger
 +sed -i "/​^$RUNMELAST_PATH_ESC/​d"​ /​etc/​rc.local
 +
 +### Delete me
 +rm -f \\\$0
 +EOF1_4
 +
 +chmod +x $RUNMELAST_PATH
 +
 +reboot
 +EOF1
 +
 +chmod +x $LUC_LIVEUSB_PATH/​$RUNME1ST_ROOT_PATH
 +
 +echof "​CUSTOMIZE > Building of 'reset all' script"​
 +bash -c "cat > $LUC_LIVEUSB_PATH/​$RESET_ROOT_PATH"​ <<​EOF4
 +#!/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 "​System has been reset !"
 +echo "​Warning : the system is now incomplete, "\
 +"you must reboot to resolve the problem"​
 +echo "To reboot : sudo reboot + give password"​
 +EOF4
 +
 +chmod +x $LUC_LIVEUSB_PATH/​$RESET_ROOT_PATH
 +
 +echof "​CUSTOMIZE > Restore SQUASHFS filesystem"​
 +mksquashfs $LUC_CUSTOM_SQUASHFS_PATH \
 + $LUC_LIVEUSB_PATH/​casper/​filesystem.squashfs -info
 +
 +
 +################################​ FINALIZE ################################​
 +
 +echof "=== FINALIZE LIVE USB ==="
 +
 +echof "​FINALIZE > Unmount and cleaning"​
 +umount $LUC_SQUASHFS_PATH
 +umount $LUC_LIVEUSB_PATH
 +umount $LUC_ISO_PATH
 +rm -rf $LUC_PATH
 +echof "​~~~ SUCCESS ! YOUR LIVE USB IS READY TO RUN ! ~~~" $C_green
 +unset -f echof
 +</​code>​
 +
 +===== Mini How-To =====
 +
 +==== Avant l'​installation ====
 +Dans le script OneTouch, si je veux :
 +  * Changer la taille des partitions : voir les paramètres pré-configurés **USB_PART*_SIZE**
 +  * Ajouter d'​autres partitions : ne pas donner 100% de la taille restante à **USB_PART2_SIZE** et utiliser un outil de partition tel GParted
 +  * 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'​installation ====
 +Si je veux :
 +  * Avoir ou pas tous les messages au démarrage : supprimer / ajouter les paramètres "quiet splash"​ dans le fichier **{/​cdrom|<​racine_live_usb>​}/​syslinux/​syslinux.cfg** (selon si le Live USB est démarré ou non) ; (re)démarrer pour prendre en compte.
 +  * Utiliser ou pas le Network Manager au lieu de ifup : supprimer / ajouter le paramètre **"​ip=frommedia"​** dans le fichier **{/​cdrom|<​racine_live_usb>​}/​syslinux/​syslinux.cfg** (selon si le Live USB est démarré ou non) ; (re)démarrer pour prendre en compte.
 +  * Modifier le script d'​installation du PC-LIVE : modifier le fichier **{/​cdrom|<​racine_live_usb>​}/​scripts/​runme1st_from_ext.sh** (selon si le Live USB est démarré ou non) ; ne pas oublier de réinitialiser (par défaut le script n'est plus déclenché après la première installation) et à (re)démarrer.
 +  * 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**,​ si le Live USB est démarré et a été construit avec L.U.C., il suffit d'​exécuter le script **sudo /​cdrom/​scripts/​reset.sh** (redémarrage nécessaire avec le mot de passe configuré dans **ME_DEFAULT_PASSWORD**)
 +
 +===== 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'​un le teste, ce serait bien qu'il fasse un retour !
 +
 +==== 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,​ toutes les commandes apt-get.
 +
 +==== 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://​forum.ubuntu-fr.org/​viewtopic.php?​id=270322|exemple]])
 +  * Gestion MBR et partitions par script ([[http://​blogs.msdn.com/​b/​san/​archive/​2012/​07/​03/​managing-storage-with-windows-powershell-on-windows-server-2012.aspx|point d'​entrée]])
 +
 +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'​utilisation dans le train par exemple).
 +
 +Donc ce problème reste à résoudre (en même temps c'​était un peu l'​objectif du post ;-) ).
 +
 +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://​www.wefightcensorship.org/​fr/​article/​tails-systeme-dexploitation-live-taille-lanonymathtml.html|tails]])
 +
 +==== 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'​écran pendant la construction du Live USB
 +  * 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'​ouverture de session par SSH, la sortie standard de VNC (stdout) est redirigée vers le terminal
 +  * Si on enlève la prise en charge ifup dans /​syslinux/​syslinux.cfg,​ la remettre ne réactivera par ifup et ce sera toujours le Network Manager qui aura le contrôle (à corriger)
 +  * Parfois sous Lubuntu, le bouton power n'​ouvre pas la fenêtre pour éteindre / redémarrer / fermer la session
 +
 +===== 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,​ leur savoir. Je référence une partie de ces personnes en indiquant le lien source. Enfin, je remercie tout particulièrement [[http://​poloastucien.free.fr/​mbr_fat_secteurs_boot_h.html|Polo Astucien]] pour son étude très précise sur les mécanismes de boot d'un support. J'ai découvert que le boot est un monde en soi. Comme le disait un de mes anciens profs : "En informatique,​ on ouvre une porte et il y en a dix autres à explorer..."​
 +
 +Toute cette documentation a été élaborée en à partir de l'​outil d'​aperçu de https://​doc.ubuntu-fr.org.
 +
 +Voilou, merci de m'​avoir lu et j'​espère que mon travail vous sera utile.
 +
 +===== 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 "​Systèmes supportés"​
 +  * v_1_0 (14/04/15) : début de l'​aventure ;-)
 +
 +----
 +//​Contributeurs principaux : [[:​utilisateurs:​lenainjaune|lenainjaune]].//​
 +
 +Version : 1.2
 +
 +Date de version : 22/04/15
  • tutoriel/lubuntu_usb_creator.txt
  • Dernière modification: Le 25/02/2021, 09:35
  • par lenainjaune