web-dev-qa-db-fra.com

Ubuntu sur une clé USB - démarrez dans les modes BIOS et UEFI

J'aimerais que Ubuntu soit installé sur une clé USB, que je puisse brancher (presque) n'importe quel ordinateur et démarrer à partir de celui-ci, et que je pourrais utiliser (presque) normalement, comme s'il était installé sur cet ordinateur. J'aimerais aussi avoir une partition de données dessus qui pourrait être utilisée par (presque) n'importe quel ordinateur, principalement pour stocker des applications portables, juste au cas où.


On m'a dit que si j'installais Ubuntu en mode BIOS, je ne pourrais pas démarrer à partir d'un ordinateur en mode UEFI, et inversement.

Puisque j'aimerais pouvoir démarrer sur n'importe quel ordinateur, c'est un gros problème.

Que puis-je faire pour pouvoir démarrer sur des ordinateurs en mode BIOS ou UEFI dans mon cas?

J'ai cherché des solutions, mais la plupart d'entre elles répondent à des besoins spécifiques différents des miens. Il est donc difficile d'extraire les exigences minimales de ces solutions pour les appliquer à mon problème.

Existe-t-il une solution simple, "propre" et assez générique à ce problème?

J'apprécierais quelques explications sur les raisons pour lesquelles une solution spécifique est bonne ou une étape spécifique est nécessaire.


Ma configuration actuelle:

  • Clé USB: SanDisk Ultra Fit (32 Go)
  • Système d'exploitation: Xubuntu 16.04 i386
  • installation: installation complète (à partir d'un Live USB construit avec Rufus)
  • pilotes: aucun propriétaire
  • systèmes de fichiers:
    • table de partition: GPT
      • 2: ESP , /boot/efi, 128 Mio, FAT32, [boot, esp]
      • 3: ABP , 128 Mio, HFS +
      • 4: BBP , 2 Mio, [bios_grub]
      • 5: échange, 512 Mio
      • 6: racine , /, 24 Gio, ext4, defaults,errors=remount-ro,lazytime,commit=60
      • 1: data , /media/data, ~ 3.6 Gio, FAT32, defaults,lazytime,check=strict
    • RAM:
      • /tmp, tmpfs, defaults,nosuid,nodev,noexec,mode=1777
  • échanger:
    • vm.swappiness=5
    • partition swap: 512 Mio, pour urgence
    • zRAM
    • fichiers d'échange:
      • /var/swap/hib.swp: même taille que la RAM, pour l'hibernation, générée par un script au démarrage
      • /var/swap/opt.swp: si nécessaire, généré par un script
  • surapprovisionnement: ~ 5,6%
    • intégré: ~ 1,2 Gio (apparemment)
    • ajouté: 512 Mio
  • ordonnanceur: deadline
4
CidTori

NB: Je présente ici la manière manuelle de procéder. C'est un peu plus compliqué (pas une pensée impossible) mais vous pouvez contrôler exactement ce que vous voulez/dont vous avez besoin. Si vous ne comprenez rien, utiliser un logiciel comme MultiSystem serait peut-être une meilleure solution.

Il existe deux manières de créer une telle clé USB. Vous pouvez utiliser une table de partition mdos/MBR ou une table de partition GPT. Les deux ont des avantages et des inconvénients, je vais essayer de décrire d'abord la version de mdos, et je pourrai revenir à la version de GPT plus tard, lorsque le temps me le permettra.

table de partition mdos/MBR

Tout d’abord, assurez-vous d’avoir toute votre sauvegarde de données. Ces opérations peuvent être dangereuses si vous ne savez pas ce que vous faites et peuvent effacer votre disque dur si vous faites de mauvaises manipulations. Assurez-vous donc de savoir ce que vous faites avant de taper une commande.

Étape 1: Trouvez votre périphérique USB

Utilisez la commande

lsblk

pour trouver le nom de votre périphérique USB. Vous pouvez par exemple exécuter lsblkname__, brancher votre clé et exécuter une fois de plus lsblkpour voir ce qui a changé. Le périphérique qui apparaît est votre clé et sera noté avec /dev/sdX.

Étape 2: Créez les partitions

Vous pouvez utiliser n’importe quel programme que vous aimez: gpartedname__, fdiskname__, cfdisk(un outil en ligne de commande pour fdiskname __) ... Procédez ensuite aux opérations suivantes

  • Commencez par lancer le programme (Sudo gparted ou Sudo fdisk /dev/sdX en fonction du programme choisi)
  • Réinitialisez ensuite votre appareil pour qu'il dispose d'une table de partition msdos___ (dans gparted_ est dans "Périphérique/Créer une nouvelle table de partition", avec fdisktapez oname__.
  • Puis créez trois partitions. Le premier est en FAT32, ce sera la partition de données (il pourrait aussi s'agir de NTFS, ext ou de tout autre système de fichiers), le second est une partition EFI (basée sur FAT) et doit être amorçable et environ 150M, le le dernier est la partition avec l'iso, et doit être amorçable et en FAT32 (si vous utilisez ext2, si démarrera, mais vous ne pourrez pas utiliser la persistance). Voici ce que vous voudriez avoir à la fin du processus (notez les drapeaux (drapeau sur l'image), ils sont importants):

gparted result

Si vous voulez les créer avec fdiskname__, vous devriez avoir quelque chose comme ça:

$ Sudo fdisk -l /dev/sdc
Disque /dev/sdc : 14,3 GiB, 15376000000 octets, 30031250 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0x2d844503

Périphérique Amorçage    Début      Fin Secteurs Taille Id Type
/dev/sdc1                 2048 14682111 14680064     7G  b W95 FAT32
/dev/sdc2    *        14682112 14989311   307200   150M ef EFI (FAT-12/16/32)
/dev/sdc3    *        14989312 30031249 15041938   7,2G  b W95 FAT32

Pour ce faire, suivez ces étapes:

Sudo fdisk /dev/sdX
o

n
p
1
<Enter>
+7G     # Or any size you want, just be sure to let arount 2G at the end of the device
t
b

n
p
2
<Enter>
+150M
t
ef

n
p
3
<Enter>
<Enter>
t
b

w

Sudo mkfs.fat -F32 /dev/sdX1
Sudo mkfs.vfat /dev/sdX2
Sudo mkfs.fat -F32 /dev/sdX3

Étape 3: Montez les partitions

Maintenant, montez-les pour écrire sur eux

mkdir /tmp/usb{2,3}
Sudo mount /dev/sdX2 /tmp/usb2/
Sudo mount /dev/sdX3 /tmp/usb3/

Étape 4: Installez grub sur les deux partitions (EFI et non-EFI)

Ensuite, vous devez installer grub sur les deux partitions. Assurez-vous d'avoir installé grub, puis exécutez:

Sudo grub-install -v --no-floppy --boot-directory=/tmp/usb3 --target=i386-pc /dev/sdX
Sudo grub-install -v --no-floppy --boot-directory=/tmp/usb2 --efi-directory=/tmp/usb2 --removable --target=x86_64-efi /dev/sdX

Étape 5: Copiez le fichier ISO et configurez grub

Copiez ensuite votre fichier ISO dans le dossier suivant:

Sudo cp <your iso file> /tmp/usb3/linux-iso

et mettre la configuration grub dans les deux configurations grub /tmp/usb2/grub/grub.cfg et /tmp/usb3/grub/grub.cfg (NB: cela peut être grub2/grub.cfg selon votre version de grub)

insmod loopback
insmod iso9660

menuentry 'XUbuntu 16.04 "Xenial Xerus" - AMD64' {
          set isofile="/linux-iso/xubuntu-16.04.1-desktop-AMD64.iso"
          search --no-floppy --set -f $isofile
          loopback loop $isofile
          linux  (loop)/casper/vmlinuz.efi locale=fr_FR bootkbd=fr console-setup/layoutcode=fr iso-scan/filename=$isofile boot=casper file=/cdrom/preseed/ubuntu.seed noprompt ro quiet splash noeject --
          initrd (loop)/casper/initrd.lz
} 

NB: vous devriez éditer ce fichier pour qu'il corresponde au bon fichier ISO. Ici, nous supposons que nous avons mis le fichier dans /tmp/usb3/linux-iso/xubuntu-16.04.1-desktop-AMD64.iso.

Redémarrez et essayez-le en mode UEFI et non UEFI: cela devrait fonctionner, mais vous ne devriez pas encore avoir de persistance!

Étape 6: ajouter une persistance simple

Ajouter de la persistance est très facile. L'idée est de créer sur la 3ème partition (en fait, toute partition FAT32 serait acceptée) un fichier vide casper-rw qui contiendra un système de fichiers ext2. Il sera ensuite positionné au-dessus du fichier ISO, de sorte que si le système est modifié, le fichier casper-rw enregistre ces modifications. Si vous souhaitez enregistrer uniquement le domicile, procédez exactement de la même manière, mais avec le nom de fichier home-rw au lieu de casper-rw (cela peut être utile si vous vous souciez uniquement des données du document et si vous préférez éviter les problèmes de persistance totale expliqués après). Enfin, notez qu'au lieu d'un fichier, vous pouvez simplement créer une partition dans ext2 dont le libellé est casper-rw ou home-rw et vous obtiendrez exactement le même résultat, à la différence que vous pourrez avoir plus de 4 Go de modifications (taille maximale en FAT32). système).

Pour créer le fichier, lancez simplement:

Sudo dd if=/dev/zero of=/mnt/usb3/casper-rw bs=1M count=512

(ici c'est 512M, mais vous pouvez changer la taille des données jusqu'à 4G)

et ajoutez persistentdans la ligne linux ... dans les fichiers /mnt/usb{2,3}/grub/grub.cfg (modifiez les deux fichiers). Cela devrait ressembler à ceci:

insmod loopback
insmod iso9660

menuentry 'XUbuntu persistent 16.04 "Xenial Xerus" - AMD64' {
          set isofile="/linux-iso/xubuntu-16.04.1-desktop-AMD64.iso"
          search --no-floppy --set -f $isofile
          loopback loop $isofile
          linux  (loop)/casper/vmlinuz.efi locale=fr_FR bootkbd=fr console-setup/layoutcode=fr iso-scan/filename=$isofile boot=casper persistent file=/cdrom/preseed/ubuntu.seed noprompt ro quiet splash noeject --
          initrd (loop)/casper/initrd.lz
}

Maintenant, redémarrez: vous devriez avoir de la persistance! Vous pouvez même mélanger des fichiers persistants et non persistants comme ceci:

insmod loopback
insmod iso9660

menuentry 'XUbuntu 16.04 "Xenial Xerus" - AMD64' {
          set isofile="/linux-iso/xubuntu-16.04.1-desktop-AMD64.iso"
          search --no-floppy --set -f $isofile
          loopback loop $isofile
          linux  (loop)/casper/vmlinuz.efi locale=fr_FR bootkbd=fr console-setup/layoutcode=fr iso-scan/filename=$isofile boot=casper file=/cdrom/preseed/ubuntu.seed noprompt ro quiet splash noeject --
          initrd (loop)/casper/initrd.lz
}
menuentry 'XUbuntu persistent 16.04 "Xenial Xerus" - AMD64' {
          set isofile="/linux-iso/xubuntu-16.04.1-desktop-AMD64.iso"
          search --no-floppy --set -f $isofile
          loopback loop $isofile
          linux  (loop)/casper/vmlinuz.efi locale=fr_FR bootkbd=fr console-setup/layoutcode=fr iso-scan/filename=$isofile boot=casper persistent file=/cdrom/preseed/ubuntu.seed noprompt ro quiet splash noeject --
          initrd (loop)/casper/initrd.lz
}

Persistance multiple

Pour le moment, tous les systèmes d'exploitation de la clé ont le même fichier de persistance. Et si c'est un casper-rw qui est partagé, si peut tout casser (les données d'un système d'exploitation n'ont rien à voir avec les données de l'autre système d'exploitation). Pour avoir un fichier persistant pour chaque système, c'est très simple, mettez le fichier dans un dossier donné, par exemple persist/xubuntu:

mkdir /mnt/usb3/persist/xubuntu/
Sudo dd if=/dev/zero of=/mnt/usb3/persist/xubuntu/casper-rw bs=1M count=512

et ajoutez persistent persistent-path=/persist/xubuntu dans les fichiers grub.cfg:

insmod loopback
insmod iso9660

menuentry 'XUbuntu persistent 16.04 "Xenial Xerus" - AMD64' {
          set isofile="/linux-iso/xubuntu-16.04.1-desktop-AMD64.iso"
          search --no-floppy --set -f $isofile
          loopback loop $isofile
          linux  (loop)/casper/vmlinuz.efi locale=fr_FR bootkbd=fr console-setup/layoutcode=fr iso-scan/filename=$isofile boot=casper persistent persistent-path=/persist/xubuntu file=/cdrom/preseed/ubuntu.seed noprompt ro quiet splash noeject --
          initrd (loop)/casper/initrd.lz
}

Vous pouvez également noter que je n'ai pas trouvé le moyen d'avoir une partition casper-rw pour chaque système d'exploitation. Je ne vois donc pas comment avoir une persistance multiple ET une persistance supérieure à 4 Go pour tous les systèmes d'exploitation. Si quelqu'un a une idée, je serais heureux d'en entendre parler. Peut-être que le montage de la partition pourrait résoudre temporairement ce problème?

Inconvénient de la persistance

Lorsque vous utilisez la persistance, vous devez savoir que la mise à niveau peut être dangereuse. Cela pourrait en effet endommager votre système si les modifications touchent le noyau, évitez donc de trop en faire. De plus, parfois, lorsque vous changez d’ordinateur, cela ne vous convient pas. Certaines personnes expliquent qu’elles ont perdu Internet lorsque la carte Internet a changé. Si vous souhaitez mettre à niveau votre système, vous devez envisager de l'installer directement sur la clé USB (comme si la clé USB était un disque), mais cette méthode peut échouer si vous essayez votre clé sur un ordinateur nécessitant un logiciel propriétaire non fourni. inclus dans le système d'exploitation installé. Si quelqu'un a une solution qui contourne ces inconvénients, je serais heureux d'en entendre parler.

Sources

Pour configurer grub afin qu'il corresponde à d'autres systèmes ou si vous souhaitez utiliser GPT au lieu de MBR, les liens suivants pourraient vous intéresser:

Profitez-en et n'hésitez pas à demander si vous avez des questions.

5
tobiasBora

Installation complète sur USB - BIOS/UEFI

Mkusb constitue un excellent point de départ pour un lecteur USB à installation complète capable de démarrer à partir du BIOS et de l'UEFI:

  • Utilisez mkusb pour créer un système Live sur le programme d’installation USB (2 Go ou plus).

  • Utilisez mkusb pour créer un système persistant sur la cible 128 Go USB en utilisant les paramètres par défaut avec une persistance de ~ 25 Go (la partition NTFS restante est utilisée comme partition de données accessible par Windows). .

enter image description here

  • Dès que mkusb se termine, ouvrez GParted et supprimez sdx4, la partition ISO9660, puis développez sdx5 dans l’espace récupéré, sdx étant le nom de l’unité du lecteur cible.

  • Créez une partition supplémentaire ext4 sdx6 pour/home si vous le souhaitez.

enter image description here

  • Débranchez ou retirez le disque dur avant de poursuivre, (facultatif mais recommandé, hautement recommandé en mode UEFI).

  • Lecteur d’installation d’amorçage, sélectionnez Essayer.

  • Insérer le lecteur cible

  • Démarrer l'installation Ubuntu ...

  • Sélectionnez "Quelque chose d'autre".

  • Sélectionnez sdx5 (sur le lecteur cible), puis cliquez sur Modifier.

enter image description here

  • Sélectionnez Utiliser comme: ext4, Format et Point de montage: /.

Ne touchez aucune autre partition (sauf si vous ajoutez une partition/home à sdx6).

  • Sélectionnez sdx5 comme Périphérique pour l'installation du chargeur de démarrage .

  • Installation complète.

  • Coupez le fichier grub.cfg de sdx5/boot/grub et collez-le dans le fichier sdx3/boot/grub en écrasant le fichier grub.cfg existant.

  • Démarrez le lecteur cible et exécutez Sudo update-grub pour ajouter tous les lecteurs au menu de démarrage.

  • N'installez aucun pilote propriétaire (par exemple, Nvidia) sur les installations antérieures à 18.04.

1
C.S.Cameron