Як створити завантажувальну флешку Ubuntu USB з терміналу?


353

Чи є спосіб , щоб створити завантажувальний диск Ubuntu USB флеш - накопичувач від терміналу без використання будь - яких сторонніх додатків , таких як Юмі , Unetbootin , Startup Disk Creator і т.д.

Я спробував створити завантажувальну флешку Ubuntu ddметодом,

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

Він створює файли на USB-диску, але коли я намагаюся завантажувати USB-диск, він виявляє Operating System Not Foundпомилку.


Ви повинні переконатися, що USB-флешка НЕ ​​встановлена. Перевірте з lsblk. Якщо потрібно, зробіть sudo umount / dev / sdb (можливо, sdb1, sdb2). Додати; ехо $? після вашої команди копіювання dd. Отже: sudo dd, якщо = ... of = ... bs = 4M; ехо $? Якщо команда закінчиться, значення, що повертається, має бути 0.

Я переслідував ваші кроки, але він також створює ті самі файли, що і sudo umount /dev/sdb sudo dd if=/path/to/ubuntu.iso of=/dev/sdb bs=1Mcreate.It не створює жодних ubninit,ldlinux.sys,etcфайлів, які є головним важливим для завантаження Linux Linux.
Avinash Raj

Я б встановив grub на MBR USB-диску як завершальний крок.
Старійшина Гік

2
Самий простий спосіб за допомогою вбудованого в інструмент з допомогою терміналу, щоб використовувати , ddяк описано тут. Він працює з усіма гібридними ISO файлами. Але ddце небезпечний інструмент, оскільки він робить те, що ви скажете, без проблем. Тож якщо ви скажете йому витерти сімейні фотографії ... і це невелика помилка введення тексту. Багато інструментів є більш безпечними. Вони допомагають вам визначити та вибрати цільовий диск, а також надають остаточну контрольну точку , де ви можете двічі перевірити, що ви будете записувати на правильний диск. Більшість це інструменти графічного інтерфейсу, деякі можуть працювати і в текстовому режимі, наприклад mkusb-dus.
sudodus

1
Наступне посилання показує приклад, коли внутрішній диск був перезаписаний помилково, коли ddдля створення завантажувальної флеш-пам’яті Ubuntu використовувався командний рядок з , як askubuntu.com/questions/982552/accident-did-dd-dev- sda
sudodus

Відповіді:


431

Можна використовувати dd.

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

де <?><?>буква, за якою йде цифра, шукайте її бігом lsblk.

Це буде виглядати приблизно так

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 

Я би демонстрував sdb1.

Потім, далі (це руйнівна команда і витирає весь USB-накопичувач із вмістом iso, тому будьте обережні):

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

де input.isoзнаходиться вхідний файл та /dev/sd<?>USB-пристрій, на який ви пишете (запустіть, lsblkщоб переглянути всі диски, щоб дізнатися, що <?>саме для вашого USB).

Цей метод швидкий і ніколи мене не підводив.


EDIT: для тих, хто на Mac закінчується тут, використовуйте малі регістри для bs=4m:

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

EDIT: Якщо USB-накопичувач не завантажується (це сталося зі мною), це тому, що ціль - це певний розділ на диску, а не диск. Таким чином, ціль повинна бути / dev / sdc, а не dev / sdc <?>Для мене це було / dev / sdb.

Довідка: https://superuser.com/a/407327 та https://askubuntu.com/a/579615/669976


13
це не працює для мене.
Avinash Raj

7
Дійсно? Ви впевнені, що маєте правильне ім'я файлу .iso, включаючи шлях та правильний / розробник для вашого USB-накопичувача? Як це виходить з ладу? Чи є повідомлення про помилку чи воно просто не завантажується? Ви впевнені, що .iso не корумпований?
Marc

8
У вас може бути корумпований .iso. Ви це перевірили? Ви впевнені , .iso насправді копія чого - то , що є завантажувальним?
Marc

5
Оригінальне запитання і найбільш схвальна відповідь - це та сама людина, яка сказала, що цей метод не працює для нього. ;-) Для мене затверджена відповідь не працює, і ця є. :-) Оголошення.
Драхенфельс

20
Додавання status=progressдо командного рядка також корисно, щоб побачити, скільки залишилося верхньої копії.
Надзвичайний

101

Ви майже там з dd, але вам не вистачає кроку.

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

де sdXваш USB-пристрій (це можна перевірити lsblk).

syncБіт важливо , так як ddможе повернутися до завершення операції запису.


17
+1 для згадки sync. Без цього ви не маєте уявлення, чи вміст був фактично скопійований. Крім того, якщо ви не поспішаєте, ви повинні md5sumобидва файли, щоб бути впевненими вдвічі.
Дейв

4
Можливо, варто згадати про USB, можливо, спочатку потрібно (повторно) відформатувати як FAT32 sudo mkfs.msdos -F 32 /dev/sdX?
Немо

10
@Nemo, чи можливо для цього щось змінити? ddдо / dev / sdX замінить будь-яку існуючу файлову систему.
mwfearnley

5
syncтут безглуздо. Це впливає лише на операції з файловою системою.
карунд

3
conv=fdatasync- фізично записувати дані вихідних файлів перед завершенням слід подбати про синхронізацію, але добре зателефонуйте, щоб переконатися, що пристрій спочатку відключено.
Johnathon Havens

98

Створення завантажувальної флешки Ubuntu USB з терміналу

  • Помістіть ubuntu.isoфайл у будь-який розділ жорсткого диска.

  • Потім змонтуйте ubuntu.isoфайл із наведеними нижче командами у терміналі:

    sudo mkdir /media/iso/
    sudo mount -o loop /path/to/ubuntu.iso /media/iso
    
  • Вставте USB-флешку. Мій привід /dev/sdd. Ось скріншот:

Знімок екрана GParted

  • Ваш привід може бути автоматично встановлений всередині /media/. Припустимо, що він був змонтований /media/xxx/.

  • Скопіюйте всі файли з /media/iso/встановленої флеш-пам’яті USB, виконавши команду нижче (обов’язково додайте крапку):

    cp -a /media/iso/. /media/xxx/
    
  • Далі вам потрібен ldlinux.sysфайл на USB-флешці, щоб зробити USB завантажувальним . Мій USB-розділ /dev/sdd1; увійдіть, lsblkщоб побачити, що у вас. Виконайте команди нижче:

    sudo apt-get install syslinux mtools
    sudo syslinux -s /dev/sdd1
    
  • Перейдіть до /media/xxxпапки монтування та перейменуйте isolinuxкаталог у syslinux. Потім перейдіть до перейменованої папки та перейменуйте файл isolinux.cfgу syslinux.cfg.

  • Перезавантажте комп'ютер і змініть порядок завантаження в BIOS, щоб дозволити завантаження з USB-накопичувача. Тепер ваша флешка Ubuntu USB завантажиться, і ви можете встановити її.

Цей метод буде працювати для будь-якого дистрибутива Linux, не тільки для Ubuntu. Вам не потрібно встановлювати будь-яке програмне забезпечення сторонніх виробників, щоб зробити флешку USB Linux .


3
Я пробую це на даний момент, чи можете ви, будь ласка, вказати, що / для чого ви використовуєте: cp -a, а не cp -r
moldovean

2
Вам потрібно sudoдля syslinuxкоманди.
Cammy_the_block

9
Цей метод для мене не спрацював. Cp -a дає: 'cp: не може створити символічне посилання' /media/xxx/./ubuntu ': Операція не дозволена' тощо тощо, оскільки ціль є жиром32. Я намагався ігнорувати це ... не вийшло
вона

6
Важливо зауважити, що usb має бути файловою системою fat32, інакше syslinux не буде працювати
Ricardo BRGWeb

2
Консоль показує мені таку ж помилку, що і @ sheß. Я перевірив файлову систему (FAT32) та познач BOOT.
Chofoteddy

40

У вас є два варіанти.

Якщо ви бажаєте графічного інтерфейсу, використовуйте usb-Creator (він знаходиться в репортах ubuntu)

введіть тут опис зображення

Якщо ви хочете інструмент командного рядка, використовуйте dd

#Replace X accordingly in both commands

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

Просто переконайтеся /dev/sdX, що ви хочете використовувати флешку (вона знищить дані на флешці).

Див. Https://help.ubuntu.com/community/Installation/FromUSBStick для отримання додаткової інформації.


1
я хочу лише інструменти командного рядка, а не інструмент gui (як, наприклад, створювач диска запуску). Відповідно до ddметоду, у моєму usb було створено лише 3 папки та 1 файл. Хоча я намагаюся завантажуватись, він каже, що operating system not foundпомилки ubninit,menu.c32,ubnpathl.txt,ubnfilel.txt,ldlinux.sysє. дуже важливо для завантаження живого ubuntu usb).
Avinash Raj

1
Я спробував метод DD з ubuntu.iso, і він спрацював! але занадто багато часу, проте, щоб записати на USB. Цікаво, що означає bs = 1M. Я знайшов цей сайт manpages.ubuntu.com/manpages/karmic/en/man1/dd.1.html . Тепер мені цікаво, чи зміна значення зробить швидше копіювання на USB? А які ризики .. можливо, хтось знає.
moldovean

4
Bs - розмір блоку. dd прочитає 1 Мб даних в пам'ять, а потім перейде до запису на диску в цілому. Використовуючи дуже невеликий розмір блоку, ви отримаєте багато центральних витрат. Використання дуже великого розміру блоку може призвести до несподіваних побічних ефектів, наприклад, довших пауз без дискової активності та / або великого використання оперативної пам'яті. 1M або 4M зазвичай є хорошим значенням при створенні диска з ISO. Більш детальна інформація про розміри блоку: stackoverflow.com/questions/6161823 / ...
ApolloLV

Я думаю, що робити завантажувальний usb - це те, що я роблю нечасто, але коли я це роблю, я хочу, щоб це було зроблено правильно. Менший розмір блоку може зайняти більше часу, але це проблема? Ні.
Марк

2
@Marc - Єдине питання - швидкість, менший розмір блоку не має більш-менш помилок, ніж більший розмір блоку і, таким чином, менший розмір блоку! = "Зроблено правильно". Правильно виконано означає перевірку md5sum iso та підтвердження md5sum написаного зображення. Після підтвердження m5dsums ви знаєте, що це було зроблено правильно.
Пантера

28

Спочатку від'єднайте USB-пристрій, а потім використовуйте lsblkдля перевірки пристрою.

Іноді (як правило, старіші ISO файли) dd недостатньо, і pendrive не завантажиться. У цьому випадку вам може знадобитися встановити syslinux:

sudo apt-get install syslinux

а потім запустіть такі команди:

sudo mkfs -t vfat -I /dev/sdX

Ви хочете виконати цю останню команду /dev/sdXі ні /dev/sdX1 .

Потім перейдіть до наступних команд:

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

або, щоб побачити хід зображення, напишіть:

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

або замість цього ddви можете використовувати cat:

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

Пам'ятайте, щоб видати команду синхронізації, щоб промити кеш запису

sync

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


Мені потрібно згадати, що для мене все інше не вдалося, але це спрацювало - я вибрав catкоманду.
Digital Dracula

Для тих, хто наполягає на тому, що ddодного лише достатньо, мені також це було потрібно для роботи.
GuiRitter

Якщо ви хочете, щоб інструмент, який використовується, ddколи ISO гібридний і монтується, скопіюйте файл ISO + встановіть SYSLINUX, коли ISO відсутній, використовуйте bootisoзамість цього.
Жуль Рендольф

1
Чи можете ви пояснити, що насправді робить кожна з цих команд? який сенс зробити файлову систему vfat на пристрої, а потім негайно перезаписати її вмістом файлу iso? Що isohybridнасправді робить? чи змінює ISO якимось чином?
чеширков

10

Якщо під "сторонніми" ви маєте на увазі "гуї", я пропоную легкий сценарій на ім'я bootiso після відповіді Авінаша Радж , адже ddце не завжди працює. Великий плюс у тому, що він дуже захищений (виконує багато перевірок безпеки, щоб не зіпсуватись із системою), простий в установці та переносний.

Крім того, bootisoбуде перевіряти файл ISO, щоб вибрати один з двох режимів: image-copy ( dd), коли файл ISO гібридний, тобто зручний для USB. І режим монтажу-rsync, коли файл ISO не гібридний, у цьому випадку завантажувач SYSLINUX автоматично встановлюється, якщо підтримується [ детальніше про автоматичну поведінку ].

Як ним користуватися

Перший варіант, просто введіть ISO в якості першого аргументу, і вам буде запропоновано вибрати диск серед списку, вилученого з lsblk:

bootiso myfile.iso

Або надайте чітко USB-пристрій:

bootiso -d /dev/sde myfile.iso

Швидка установка

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

Дивіться це в дії:


1
Я згоден, це дуже приємний сценарій, який виводить страшні шматочки з процесу. Більше інформації тут: tecmint.com/create-bootable-usb-in-linux-commandline
kr37

Він навіть має підтримку Windows 10 жовтня 2018 року, оскільки він підтримує "розбиття вім" файлу "install.wim" (використовуючи команду "wimlib-imagex"), тобто> 4Gb, інакше не може зберігатися на FAT32.
mevdschee

7
$ dd if=ubuntu-14.04.1-desktop-amd64.iso of=/dev/sdX bs=1MB

Не використовуйте шлях для кусання.

  1. За допомогою cdкоманди перейдіть до папки, яка містить файл .iso
  2. використовувати команду dd if=FILE NAME HERE.iso of=/dev/sdX bs=1MB
  3. Зачекайте, поки вихід консолі виглядає приблизно так:

    1028+1 records in
    1028+1 records out
    1028653056 bytes (1.0 GB) copied, 55.4844 s, 18.5 MB/s
    
  4. Завантаження з usb.

Примітка. Переконайтеся, що ви записуєте на потрібний пристрій, usb не завжди буде встановлений на: dev/sdXде X може бути будь-яка літера.


2
яке значення bs = 1MB в команді dd ???
juggernauthk108

1
@ juggernaut1996 немає. Це розмір блоку, який слід використовувати при копіюванні. Оскільки аргумент підрахунку не наданий, він буде копіювати весь вхід в 1МБ-блоки. Його можна було зняти.
sjbx

"Не використовуйте шлях для кусання" - це дезінформація. Сам процес не вкладає компоненти контуру в скопійоване зображення на жодному кроці, тому це не має значення, якщо ви переходите до каталогу, що містить ваше зображення ISO, або просто надаєте повний шлях. Більше того, dd також може приймати вкладення від stdin, тож ви можете просто передати два дд в інший, щоб переконатися, що жоден шлях не зафіксований у зображенні.
Габор Гарамі

Це буде працювати лише для гібридних ISO, які сьогодні заповнюють значну більшість випадків, але є помітні винятки, такі як UltimateBootCD. Використовуйте bootisoзамість цього.
Жуль Рендольф

-5

Спробуйте це, і ніколи не підводив мене більше 100 разів:

Відформатуйте картку:

$ sudo mkfs.vfat -F32 /dev/sdx

Монтуйте образ ISO:

$ sudo mount ubuntu.iso /mnt

Скопіюйте вміст на карту:

$ sudo cp -rvf /mnt/* /SD_CardMountPoint

Тоді:

  • перейменувати isolinuxпапку вsyslinux
  • перейменувати syslinux/isolinux.cfgвsyslinux/syslinux.cfg
  • перейменувати syslinux/isolinux.binвsyslinux/syslinux.bin
  • бігати syslinux -s /dev/sdx

4
-1. Ви це навіть тестували? sudo cp -rvf /mnt/* /dev/sdxне буде працювати (або принаймні не робити те, що ви задумали). Ви не копіюєте файли на необроблений пристрій ( /dev/). Натомість слід встановити картку та скопіювати вміст файлу ISO на карту (точка монтування до точки монтажу). А що не так із прийнятою нинішньою відповіддю, яка має той самий підхід.
gertvdijk
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.