Comment créer une clé USB bootable Ubuntu à partir d'un terminal?

353

Existe-t-il un moyen de créer un lecteur flash USB Ubuntu amorçable à partir du terminal sans utiliser d’applications tierces telles que YUMI , Unetbootin , Startup Disk Creator , etc.

J'ai essayé de créer une clé USB bootable avec Ubuntu dd,

sudo umount /dev/sdb
sudo dd if=/path/to/ubuntu.iso of=/dev/sdb bs=1M

Il crée des fichiers sur le disque USB, mais lorsque je tente de démarrer le disque USB, une Operating System Not Founderreur s’affiche .

Avinash Raj
la source
Vous devez vous assurer que votre clé USB n'est pas montée. Vérifiez avec lsblk. Si nécessaire, faites sudo umount / dev / sdb (probablement sdb1, sdb2). Ajouter; echo $? après votre commande de copie dd. Donc: sudo dd if = ... of = ... bs = 4M; echo $? Si la commande est terminée, la valeur
J'ai suivi vos étapes, mais il crée également les mêmes fichiers que ceux sudo umount /dev/sdb sudo dd if=/path/to/ubuntu.iso of=/dev/sdb bs=1Mcréés. Il ne crée aucun ubninit,ldlinux.sys,etcfichier dont le démarrage est essentiel pour un système d'exploitation Linux.
Avinash Raj
J'installerais grub sur le MBR du disque USB comme dernière étape.
Elder Geek, le
2
La méthode la plus simple avec les outils intégrés utilisant le terminal consiste à utiliser ddcomme décrit ici. Cela fonctionne avec tous les fichiers iso hybrides. Mais ddc'est un outil dangereux car il fait ce que vous lui dites de faire sans questions. Donc, si vous lui dites d'effacer les photos de famille ... et c'est une petite erreur de frappe. De nombreux outils sont plus sécurisés. Ils vous aident à identifier et à sélectionner le lecteur cible et à fournir un point de contrôle final , sur lequel vous pouvez vérifier que vous écrivez sur le lecteur correct. La plupart d'entre eux sont des outils graphiques, certains peuvent aussi fonctionner en mode texte, par exemple mkusb-dus.
sudodus
1
Le lien suivant montre un exemple, où le lecteur interne a été écrasé par erreur, lorsqu'une ligne de commande a ddété utilisée pour créer un lecteur flash USB Ubuntu amorçable, askubuntu.com/questions/982552/accidentally-did-dd-dev- sda
sudodus

Réponses:

431

Vous pouvez utiliser dd.

 sudo umount /dev/sd<?><?>  

<?><?>est une lettre suivie d'un chiffre, recherchez-la en exécutant lsblk.

Cela ressemblera à quelque chose comme

sdb      8:16   1  14.9G  0 disk 
├─sdb1   8:17   1   1.6G  0 part /media/username/usb volume name
└─sdb2   8:18   1   2.4M  0 part 

Je démonterais sdb1.

Ensuite, ensuite (ceci est une commande destructive qui efface l’ensemble du lecteur USB avec le contenu de l’iso, alors faites attention):

 sudo dd bs=4M if=path/to/input.iso of=/dev/sd<?> conv=fdatasync  status=progress

où se input.isotrouve le fichier d'entrée et /dev/sd<?>le périphérique USB auquel vous écrivez (exécutez lsblkpour afficher tous les lecteurs afin de déterminer ce qui <?>convient à votre clé USB).

Cette méthode est rapide et ne m'a jamais manqué.


EDIT: pour ceux sur un Mac se terminant ici, utilisez des minuscules pour bs=4m:

sudo dd if=inputfile.img of=/dev/disk<?> bs=4m && sync

EDIT: Si le lecteur USB ne démarre pas (cela m'est arrivé), c'est parce que la cible est une partition particulière sur le lecteur au lieu du lecteur. La cible doit donc être / dev / sdc et non pas dev / sdc. <?>Pour moi, il s’agissait de / dev / sdb.

Référence: https://superuser.com/a/407327 et https://askubuntu.com/a/579615/669976

Marc
la source
13
ça ne marche pas pour moi.
Avinash Raj
7
Vraiment? Êtes-vous sûr de disposer du nom de fichier .iso correct, chemin compris, et du correct / dev pour votre clé USB? Comment ça échoue? Existe-t-il un message d'erreur ou ne parvient-il pas à démarrer? Êtes-vous sûr que le .iso n'est pas corrompu?
Marc
8
Vous pourriez avoir un .iso corrompu. Avez-vous vérifié? Etes-vous certain que le .iso est en fait une copie de quelque chose qui est bootable?
Marc
5
La question originale et la réponse la plus votée sont les mêmes qui ont dit que cette méthode ne fonctionnait pas pour lui. ;-) Pour moi, la réponse approuvée ne fonctionne pas et celle-ci fonctionne. :-) Upvoting.
Drachenfels
20
Il status=progressest également utile d’ ajouter un à la ligne de commande pour savoir combien reste à gauche de la copie.
Supernormal
101

Vous y êtes presque dd, mais il vous manque une étape.

sudo umount /dev/sdX
sudo dd if=/path/to/ubuntu.iso of=/dev/sdX bs=4M && sync

sdXest votre périphérique usb (cela peut être vérifié avec lsblk).

Le syncbit est important car il ddpeut être renvoyé avant la fin de l'opération d'écriture.

utilisateur373766
la source
17
+1 pour mentionner sync. Sans cela, vous ne savez pas si le contenu a été copié. De plus, si vous n'êtes pas pressé, vous devez vous md5sumassurer que les deux fichiers sont bien sûrs.
Dave
4
Peut-être qu'il vaut la peine de mentionner que l'USB devra peut-être être (re) formaté en FAT32 avec d' sudo mkfs.msdos -F 32 /dev/sdXabord?
Nemo
10
@Nemo, est-ce possible pour que cela fasse une différence? dddans / dev / sdX écrasera tout système de fichiers existant.
Mwfearnley
5
syncest inutile ici. Cela n'affecte que les opérations du système de fichiers.
punund
3
conv=fdatasync- écrire physiquement les données du fichier de sortie avant de terminer devrait prendre en charge la synchronisation, mais bon appel en vous assurant que le dispositif est démonté en premier.
Johnathon Havens
98

Créer une clé USB bootable Ubuntu à partir d'un terminal

  • Placez le ubuntu.isofichier dans n’importe quelle partition du disque dur.

  • Puis montez le ubuntu.isofichier avec les commandes ci-dessous dans le terminal:

    sudo mkdir /media/iso/
    sudo mount -o loop /path/to/ubuntu.iso /media/iso
    
  • Insérez votre clé USB. Mon lecteur est /dev/sdd. Voici une capture d'écran:

Capture d'écran GParted

  • Votre lecteur peut être automatiquement monté à l'intérieur /media/. Supposons qu'il a été monté dans /media/xxx/.

  • Copiez tous les fichiers de /media/iso/votre lecteur flash USB monté en exécutant la commande ci-dessous (veillez à inclure le point):

    cp -a /media/iso/. /media/xxx/
    
  • Ensuite, vous avez besoin du ldlinux.sysfichier sur votre clé USB pour que le périphérique USB soit amorçable . Ma partition USB est /dev/sdd1; Entrez lsblkpour voir ce qui vous appartient. Exécutez les commandes ci-dessous:

    sudo apt-get install syslinux mtools
    sudo syslinux -s /dev/sdd1
    
  • Naviguez jusqu'au /media/xxxdossier de montage et renommez le isolinuxrépertoire syslinux. Ensuite , allez dans le dossier renommé et renommer le fichier isolinux.cfgà syslinux.cfg.

  • Redémarrez votre PC et modifiez l'ordre de démarrage dans le BIOS pour permettre le démarrage à partir d'un lecteur USB. Maintenant, votre clé USB Ubuntu va démarrer et vous pouvez l'installer.

Cette méthode fonctionnera pour n'importe quelle distribution Linux, pas seulement Ubuntu. Vous n'avez pas besoin d'installer de logiciel tiers pour créer un lecteur flash USB Linux .

Avinash Raj
la source
3
Je l'essaie pour le moment, pourriez-vous préciser quoi / pourquoi vous utilisez: cp -a plutôt que cp -r
moldave
2
Vous avez besoin sudode la syslinuxcommande.
Cammy_the_block
9
Cette méthode n'a pas fonctionné pour moi. Le cp -a donne: 'cp: impossible de créer un lien symbolique' /media/xxx/./ubuntu ': Opération non autorisée' ou autre, car la cible est fat32. J'ai essayé d'ignorer que ... n'a pas fonctionné
eu lieu
6
Il est important de noter que le port USB doit être un système de fichiers fat32, sinon syslinux ne fonctionnera pas
Ricardo BRGWeb
2
La console me montre la même erreur que @ sheß. J'ai vérifié le système de fichiers (FAT32) et signaler BOOT.
Chofoteddy
40

Vous avez deux choix.

Si vous désirez une interface graphique, utilisez usb-creator (c'est dans le dépôt d'ubuntu)

entrez la description de l'image ici

Si vous voulez un outil en ligne de commande, utilisez dd

#Replace X accordingly in both commands

sudo umount /dev/sdX
sudo dd if=/path/to/ubuntu.iso of=/dev/sdbX bs=1M

Assurez /dev/sdX- vous simplement que le lecteur flash que vous souhaitez utiliser (il détruira les données du lecteur flash).

Voir https://help.ubuntu.com/community/Installation/FromUSBStick pour plus d'informations.

Panthère
la source
1
Je veux que des outils de ligne de commande, pas l' outil IUG (comme créateur de disque de démarrage) .Selon la ddméthode, seulement 3 dossiers et 1 fichier a été créé dans mon usb.While j'essaie de démarrer , il dit operating system not founderror.Files comme ubninit,menu.c32,ubnpathl.txt,ubnfilel.txt,ldlinux.syssont manquantes (qui sont très important de démarrer en direct ubuntu usb).
Avinash Raj
1
J'ai essayé la méthode DD avec ubuntu.iso et cela a fonctionné! Il faut aussi beaucoup de temps pour écrire sur une clé USB. Je me demande ce que signifie bs = 1M. J'ai trouvé ce site manpages.ubuntu.com/manpages/karmic/en/man1/dd.1.html . Maintenant, je me demande si la modification de la valeur rendra la copie sur USB plus rapide? Et quels sont les risques… peut-être que quelqu'un le sait.
Moldovean
4
Le bs est la taille du bloc. dd lira 1 Mo de données dans la mémoire, puis l’écrira sur le disque dans son ensemble. En utilisant une très petite taille de bloc, vous aurez beaucoup de temps système. L'utilisation d'une très grande taille de bloc peut entraîner des effets secondaires inattendus, par exemple des pauses plus longues d'inactivité du disque et / ou une utilisation importante de la RAM. 1M ou 4M est généralement une bonne valeur lors de la création d'un disque à partir d'un ISO. Plus d'informations sur la taille des blocs: stackoverflow.com/questions/6161823/…
ApolloLV
Je pense que faire un usb bootable est quelque chose que je fais rarement, mais quand je le fais, je le veux bien. Une taille de bloc plus petite peut prendre plus de temps, mais est-ce un problème? Nan.
Marc
2
@Marc - Le seul problème est la vitesse, une taille de bloc plus petite n'est pas plus ou moins sujette aux erreurs qu'une taille de bloc plus grande et donc une taille de bloc plus petite! = "Bien fait". Done right signifie vérifier le md5sum de l'iso et confirmer le md5sum de l'image écrite. Une fois que vous avez confirmé les m5dsums, vous savez que tout a été bien fait.
Panther
28

Commencez par démonter le périphérique USB, puis utilisez-le lsblkpour vérifier le périphérique.

Parfois, les fichiers iso (généralement les fichiers ISO les plus anciens) ne suffisent pas et la clé USB ne démarre pas. Dans ce cas, vous devrez peut-être installer syslinux:

sudo apt-get install syslinux

puis exécutez les commandes suivantes:

sudo mkfs -t vfat -I /dev/sdX

Vous voulez exécuter cette dernière commande pour /dev/sdXet non /dev/sdX1 .

Ensuite, passez aux commandes suivantes:

isohybrid /path/to/file.iso --entry 4 --type 0x1c
dd if='/path/to/file.iso' of=/dev/sdX bs=8M

ou, pour voir les progrès de l'image, écrivez:

pv -tpreb /path/to/file.iso | dd of=/dev/sdX bs=8M

ou au lieu de dd, vous pouvez utiliser à la catplace:

sudo -s
cat /path/to/file.iso > /dev/sdX

N'oubliez pas que la commande de synchronisation soit vidée pour vider le cache en écriture

sync

web.archive.org/web/20140327085331/https://tails.boum.org/doc/first_steps/installation/manual/linux/index.en.html

mchid
la source
Je dois mentionner que pour moi tout le reste a échoué, mais cela a fonctionné - j'ai opté pour la catcommande.
Dracula numérique
Pour ceux qui insistent sur le fait que cela ddsuffit à lui seul, j’avais également besoin de cela pour fonctionner.
GuiRitter
Si vous voulez un outil utilisé ddlorsque ISO est hybride et monté, copiez le fichier ISO + installe SYSLINUX alors que ISO ne l’est pas, utilisez bootisoplutôt.
Jules Randolph
1
Pouvez-vous expliquer ce que chacune de ces commandes fait réellement? Quel est l'intérêt de créer un système de fichiers vfat sur le périphérique, puis de l'écraser immédiatement avec le contenu du fichier iso? Que fait isohybridréellement? cela modifie-t-il l'ISO d'une certaine manière?
cheshirekow
10

Si par "tiers" vous voulez dire "gui", je suggère un script léger nommé bootiso d' après Avinash Raj answer, car ddil ne fonctionne pas toujours. Le gros avantage est qu’il est très sécurisé (effectue de nombreuses vérifications de sécurité pour ne pas gâcher le système), facile à installer et portable.

En outre, bootisoinspectera le fichier ISO pour choisir entre deux modes: image-copy ( dd) lorsque le fichier ISO est hybride, c'est-à-dire compatible USB. Et le mode mount-rsync lorsque le fichier ISO n'est pas hybride, auquel cas un chargeur d'amorçage SYSLINUX sera automatiquement installé s'il est pris en charge [ plus de détails sur le comportement automatique ].

Comment l'utiliser

Première option, fournissez simplement l'ISO comme premier argument et vous serez invité à sélectionner un lecteur parmi une liste extraite de lsblk:

bootiso myfile.iso

Ou fournissez explicitement le périphérique USB:

bootiso -d /dev/sde myfile.iso

Installation rapide

curl -L https://git.io/bootiso -O
chmod +x bootiso

Voyez-le en action:

Jules Randolph
la source
1
Je suis d’accord, c’est un très beau script qui élimine les éléments effrayants du processus. Plus de détails ici: tecmint.com/create-bootable-usb-in-linux-commandline
kr37 le
Il prend même en charge Windows 10 oct 2018, car il prend en charge le "fractionnement de Wim" du fichier "install.wim" (à l'aide de la commande "wimlib-imagex") qui est> 4 Go et ne peut sinon pas être stocké sur FAT32.
Mevdschee
7
$ dd if=ubuntu-14.04.1-desktop-amd64.iso of=/dev/sdX bs=1MB

N'utilisez pas le chemin pour mordre.

  1. Utilisez la cdcommande pour accéder au dossier contenant le fichier .iso.
  2. utiliser la commande dd if=FILE NAME HERE.iso of=/dev/sdX bs=1MB
  3. Attendez que la sortie de la console ressemble à ceci:

    1028+1 records in
    1028+1 records out
    1028653056 bytes (1.0 GB) copied, 55.4844 s, 18.5 MB/s
    
  4. Boot de l'USB.

Remarque: Assurez-vous d’écrire sur le bon périphérique. Un usb ne sera pas toujours monté: dev/sdXoù X peut être n’importe quelle lettre.

Alexander Stamos
la source
2
quelle est la signification de bs = 1MB dans la commande dd ???
juggernauthk108
1
@ juggernaut1996 aucun. C'est la taille de bloc à utiliser lors de la copie. Comme aucun argument de comptage n'a été fourni, il copiera la totalité de l'entrée en blocs de 1 Mo. Il pourrait être enlevé.
sjbx
Le "Ne pas utiliser le chemin d'accès à bit" est une désinformation. Le processus lui-même ne cuit pas les composants de chemin dans l'image copiée, il est donc inutile de naviguer dans le répertoire contenant votre image ISO ou de simplement indiquer le chemin complet. De plus, dd peut également accepter les entrées de stdin, vous pouvez donc simplement lier deux dd l'une à l'autre pour vous assurer qu'aucun chemin ne se loge dans l'image.
Gabor Garami
Cela ne fonctionnera que pour les ISO hybrides, qui remplissent aujourd'hui une bonne majorité des cas, mais il existe des exceptions notables telles que UltimateBootCD. Utilisez à la bootisoplace.
Jules Randolph
-5

Essayez ceci, et ne m'a jamais échoué plus de 100 fois:

Formatez la carte:

$ sudo mkfs.vfat -F32 /dev/sdx

Montez l'image ISO:

$ sudo mount ubuntu.iso /mnt

Copier le contenu sur la carte:

$ sudo cp -rvf /mnt/* /SD_CardMountPoint

Ensuite:

  • renommer le isolinuxdossier ensyslinux
  • renommer syslinux/isolinux.cfgensyslinux/syslinux.cfg
  • renommer syslinux/isolinux.binensyslinux/syslinux.bin
  • courir syslinux -s /dev/sdx
Nooty
la source
4
-1. Avez-vous même testé cela? sudo cp -rvf /mnt/* /dev/sdxne fonctionnera pas (ou du moins ne fera pas ce que vous avez l'intention). Vous ne copiez pas de fichiers sur un périphérique brut ( /dev/). Au lieu de cela, vous devez monter la carte et copier le contenu du fichier ISO sur la carte (point de montage à point de montage). Et quel est le problème avec la réponse acceptée actuelle qui a la même approche.
gertvdijk