Как создать загрузочную флешку FreeBSD из ISO в Windows

Потребовалось сделать загрузочную флешку для FreeBSD 12.1.
Скачал FreeBSD-12.1-RELEASE-i386-dvd1.iso и решил попробовать сделать из него загрузочную флешку.
Да, сделать загрузочную флешку именно из ISO, а не из стандартного img-образа, который не так полон как ISO для DVD.
Зачем? Хочу иметь на флешке более полный набор скомпилированного ПО, а также версии ПО на момент релиза в качестве запасного варианта для данного выпуска фрюхи.

Cоздание загрузочной флешки FreeBSD из образа img

Для полноты: если устраивает img и есть свободный ПК c FreeBSD, то ничего сложного, всё описано на сайте freebsd.org:
скачиваем образ в формате img: FreeBSD-12.1-RELEASE-i386-memstick.img
и закатываем этот файл на флешку из консоли:
# dd if=FreeBSD-12.1-RELEASE-i386-memstick.img of=/dev/da0 bs=1m conv=sync
(здесь флешка обозначена как устройство /dev/da0 )

Под Windows файл …memstick.img записывается программой Win32 Disk Imager — http://disk-imager.ru/download.html

Кстати, наткнулся и на dd под Windows, но пока не опробовал: http://www.chrysocome.net/dd

Cоздание загрузочной флешки FreeBSD из ISO под Windows

Перепробовал несколько программ: Rufus 3.8p, win32diskimager-1.0.0, UltraISO 9, WinSetupFromUSB 1.9… Скажу сразу — все эти программы не справились с созданием загрузочной флешки FreeBSD из ISO.

С задаче справился только Grub, точнее GRUB4DOS:

  1. Форматируем флешку в винде под Fat32. Сразу — моя 8-гиговая флешка определилась как диск К:
  2. Сразу же (!) записываем в корень флешки исошник: FreeBSD-12.1-RELEASE-i386-dvd1.iso
  3. Cкачиваем GRUB4DOS с графическим интерфейсом по ссылке: http://greenflash.su/Files/Grub4DoS_GUI.zip
  4. Вытаскиваем Grub4DOS.exe из архива и запускаем его
  5. Выбираем флешку: K:\  и нажимаем «Извлечь»
  6. Мелькает чёрное окошко и сразу запускается Grub4Dos Installer 1.1
  7. Вверху в пункте Disk выбираем свою флешку.
    Здесь диски обозначены не буквами, а в виде (hd6) (7632М), где вторая цифра — это объём диска. Поэтому очень внимательно смотрите на объём в списке устройств и естественно флешка в компе должна быть одна для безопасности.
  8. Больше я здесь ничего не переключал. Нажимаем Install. В чёрном окошке говорят, что всё в порядке и предлагают нажать Enter — жмём. Теперь все оставшиеся окна программ можно закрыть.
  9. Открываем на флешке файл Menu.lst и добавляем вот это:

    title Install FreeBSD-12.1-RELEASE-i386-dvd1
    map /FreeBSD-12.1-RELEASE-i386-dvd1.iso  (hd32)
    map —hook
    chainloader (hd32)
    boot

    Остальные созданные по-умолчанию варианты загрузок трогать не обязательно — потом поправите.

  10. Грузимся с флешки и смотрим что получилось. У меня получилось — загрузился установщик FreeBSD 🙂

Внимание! Я не случайно указал, что файлы ISO надо заливать на чистую флешку. Иначе потом при загрузке получите вот такое сообщение:

Error 60: File for drive emulation must be in one contiguous disk area

Кому интересно: Причина этой ошибки в том, что исошник фрагментирован. В моём случае не получилось дефрагментировать ни стандартным дефрагментатором Windows, ни утилитой Contig.exe от Марка Руссиновича, ни утилитой WinContig. Последние две упорно говорили, что на диске нет достаточного непрерывного места, чтобы поместить туда нефрагментированную копию файла.
Не знаю… на самом деле, пока искал способ сделать загрузочную флешку, я использовал в качестве тестового 300-мегабайтный FreeBSD-12.1-RELEASE-i386-bootonly.iso. Просто он маленький и его быстрее копировать. Флешка — 8 гигов, так что нефрагментированного места там должно быть навалом…