Как создать загрузочную флешку Ubuntu USB с терминала?

353

Есть ли способ создать загрузочную флешку Ubuntu USB из терминала без использования сторонних приложений, таких как YUMI , 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ошибку.

Avinash Raj
источник
Вы должны убедиться, что ваш USB-накопитель НЕ подключен. Проверьте с lsblk. При необходимости выполните sudo umount / dev / sdb (вероятно, sdb1, sdb2). Добавить; echo $? после вашей команды dd copy. Итак: sudo dd if = ... of = ... bs = 4M; echo $? Если команда завершилась, возвращаемое значение должно быть 0.
я следовал за вашими шагами, но он также создает те же файлы, что и sudo umount /dev/sdb sudo dd if=/path/to/ubuntu.iso of=/dev/sdb bs=1Mсоздает. Он не создает никаких ubninit,ldlinux.sys,etcфайлов, которые в основном важны для загрузки под Linux.
Авинаш Радж
Я бы установил grub на MBR USB-диска в качестве последнего шага.
Старейшина Гик
2
Самый простой способ использования встроенных инструментов с использованием терминала - использовать, ddкак описано здесь. Работает со всеми гибридными ISO-файлами. Но ddэто опасный инструмент, потому что он делает то, что вы говорите, чтобы делать без вопросов. Так что, если вы скажете это стереть семейные фотографии ... и это небольшая ошибка печати. Многие инструменты более безопасны. Они помогают вам определить и выбрать целевой диск и предоставить конечную контрольную точку , где вы можете перепроверить, что вы будете записывать на правильный диск. Большинство из них - инструменты с графическим интерфейсом, некоторые также могут работать в текстовом режиме, например mkusb-dus.
Судодус
1
Следующая ссылка показывает пример, когда внутренний диск был перезаписан по ошибке, когда командная строка с ddбыла использована для создания загрузочной флешки Ubuntu USB, askubuntu.com/questions/982552/accidentally-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).

Этот метод быстрый и никогда не подводил меня.


РЕДАКТИРОВАТЬ: для тех на Mac, заканчивающихся здесь, используйте строчные буквы для bs=4m:

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

РЕДАКТИРОВАТЬ: Если USB-накопитель не загружается (это случилось со мной), это потому, что целью является определенный раздел на диске вместо диска. Таким образом, цель должна быть / dev / sdc, а не dev / sdc. <?>Для меня это был / dev / sdb.

Ссылка: https://superuser.com/a/407327 и https://askubuntu.com/a/579615/669976.

Марк
источник
13
это не работает для меня.
Авинаш Радж
7
В самом деле? Вы уверены, что у вас есть правильное имя файла .iso, включая путь, и правильный / dev для вашего USB-накопителя? Как это терпит неудачу? Есть ли сообщение об ошибке или оно просто не загружается? Вы уверены, что .iso не поврежден?
Marc
8
Вы можете иметь испорченный .iso. вы проверили? Вы уверены , .iso на самом деле копия чего - то , что является загрузочным?
Marc
5
Оригинальный вопрос и наиболее одобренный ответ - тот же человек, который сказал, что этот метод не работает для него. ;-) Для меня одобренный ответ не работает, и этот делает. :-) Апвоттинг.
Драхенфельс
20
Добавление a 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может вернуться до завершения операции записи.

user373766
источник
17
+1 за упоминание sync. Без этого вы не представляете, был ли контент действительно скопирован. Кроме того, если вы не спешите, вы должны md5sumоба файла просто, чтобы быть вдвойне уверены.
Дейв
4
Может быть, стоит упомянуть, что USB может потребоваться (пере) отформатировать как FAT32 с sudo mkfs.msdos -F 32 /dev/sdXпервым?
Немо
10
@ Немо, можно ли что-то изменить? ddв / dev / sdX перезапишет любую существующую файловую систему.
mwfearnley
5
syncздесь бессмысленно. Это влияет только на операции файловой системы.
Пунунд
3
conv=fdatasync- физическая запись данных выходного файла перед завершением должна позаботиться о синхронизации, но неплохо бы убедиться, что устройство сначала отключено.
Джонатон Хейвенс
98

Создание загрузочной флешки Ubuntu USB из терминала

  • Поместите ubuntu.isoфайл в любой раздел жесткого диска.

  • Затем смонтируйте ubuntu.isoфайл с помощью следующих команд в терминале:

    sudo mkdir /media/iso/
    sudo mount -o loop /path/to/ubuntu.iso /media/iso
    
  • Вставьте флешку. Мой диск есть /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 ': операция не разрешена' и другие подобные, так как цель - fat32. Я пытался игнорировать это ... не сработало
она
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
я хочу только инструменты командной строки, а не графический инструмент (например , загрузочный диск создателя) .По к ddметоду, только 3 папки и 1 файл был создан в моем usb.While я пытаюсь загрузить это говорит operating system not founderror.Files как ubninit,menu.c32,ubnpathl.txt,ubnfilel.txt,ldlinux.sysотсутствующие (которые очень важно, чтобы загрузить живую Ubuntu USB).
Авинаш Радж
1
Я попробовал метод dd с ubuntu.iso, и это сработало! Однако это слишком много времени, чтобы записываться на USB. Интересно, что означает bs = 1M. Я нашел этот сайт manpages.ubuntu.com/manpages/karmic/en/man1/dd.1.html . Теперь мне интересно, если изменение значения приведет к более быстрому копированию на USB? И каковы риски .. может быть, кто-то знает.
молдавский
4
Bs - это размер блока. dd прочитает 1 МБ данных в память, а затем приступит к записи их на диск в целом. Используя очень маленький размер блока, вы получите много ресурсов процессора. Использование очень большого размера блока может привести к неожиданным побочным эффектам, например, более длительным паузам без активности диска и / или большому использованию ОЗУ. 1M или 4M обычно является хорошим значением при создании диска из ISO. Больше информации о размерах блоков: stackoverflow.com/questions/6161823/…
ApolloLV
Я считаю, что создание загрузочного USB - это то, что я делаю нечасто, но когда я делаю это, я хочу, чтобы все было сделано правильно. Меньший размер блока может занять больше времени, но разве это проблема? Нет.
Марк
2
@Marc - единственная проблема - это скорость, меньший размер блока не более или менее подвержен ошибкам, чем больший размер блока и, следовательно, меньший размер блока! = "Сделано правильно". Правильно выполнено означает проверку суммы md5 iso и подтверждение суммы md5 записанного изображения. Как только вы подтвердите 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

mchid
источник
Я должен отметить, что для меня все остальное не удалось, но это сработало - я выбрал catкоманду.
Цифровой Дракула
Для тех, кто настаивает на том, что ddодного достаточно, мне также нужно, чтобы это работало.
GuiRitter
Если вам нужен инструмент, который используется, ddкогда ISO является гибридным и монтируется, скопируйте файл ISO + устанавливает SYSLINUX, когда ISO нет, используйте bootisoвместо этого.
Жюль Рэндольф
1
Можете ли вы объяснить, что на самом деле делает каждая из этих команд? Какой смысл создавать файловую систему vfat на устройстве, а затем сразу же перезаписывать ее содержимым iso-файла? Что на isohybridсамом деле делает? это каким-то образом модифицирует ISO?
Чеширеков
10

Если под «сторонним» вы подразумеваете «gui», я предлагаю легкий сценарий с именем bootiso после ответа Avinash Raj , потому что ddон не всегда работает. Большой плюс в том, что он очень безопасен (выполняет много проверок безопасности, чтобы не связываться с системой), прост в установке и переносим.

Кроме того, bootisoбудет проверять ISO-файл, чтобы выбрать один из двух режимов: image-copy ( dd), когда ISO-файл является гибридным, то есть USB-совместимым. И режим mount-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 года, так как поддерживает «wim split» файл «install.wim» (с помощью команды «wimlib-imagex»), размер которого> 4 ГБ, и в противном случае его нельзя сохранить в FAT32.
мевдшее
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 нет. Это размер блока для использования при копировании. Поскольку аргумент count не был предоставлен, он скопирует весь ввод в блоках по 1 МБ. Это может быть удалено.
sjbx
«Не используйте путь к битам» - дезинформация. Сам процесс не запекает компоненты пути в скопированное изображение на любом этапе, поэтому не имеет значения, переходите ли вы к каталогу, содержащему ваш образ ISO, или просто указываете полный путь. Более того, dd также может принимать входные данные от stdin, так что вы можете просто направить два dd в каждый другой, чтобы убедиться, что путь к изображению не запечен.
Габор Гарами
Это будет работать только для гибридных 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
Nooty
источник
4
-1. Вы даже проверяли это? sudo cp -rvf /mnt/* /dev/sdxне будет работать (или, по крайней мере, не делать то, что вы намерены). Вы не копируете файлы на необработанное устройство ( /dev/). Вместо этого следует смонтировать карту и скопировать содержимое файла ISO на карту (точка монтирования - точка монтирования). И что не так с текущим принятым ответом, который имеет тот же подход.
gertvdijk