Table of Contents

Проблема

Создание загрузочной флешки для установки Free BSD 11.0 оказалось довольно нетривиальной задачей. При этом, официальный образ флешки *.img не всегда работает как нужно. На некоторых ноутбуках он не загружается вовсе!!
Приведенный здесь способ позволяет сделать загрузочную флешку даже с помощью linux Live-CD.

Решение

Для начала создаем на флешке раздел FAT32, делаем его загрузочным и форматируем.

fdisk /dev/sdx

Если на диске есть разделы, то ликвидируем их. Для этого жмем d
После удаления разделов жмем n и создаем новый.
В процессе создания указваем что раздел p (primary).
После создания жмем a, чтобы сделать раздел активным.
Затем жмем t, чтобы задать тип раздела и вводим тип c (FAT32).
Жмем w и записываем изменения на флешку.

Форматируем флешку с меткой FREEBSD11. Метка важна, поскольку в дальнейшем она будет использована для монтирования:

sudo umount /dev/sdx1
sudo mkfs.vfat -F 32 -n FREEBSD11 /dev/sdx1

Установка загрузчика GRUB

Монтируем флешку и ставим на нее GRUB2.

sudo mkdir /mnt/USB && sudo mount /dev/sdx1 /mnt/USB
sudo grub-install --force --no-floppy --boot-directory=/mnt/USB/ /dev/sdx 

Старые версии GRUB вместо –boot-directory используют -root-directory. Если что-то не так, то установщик GRUB скажет что “Installation is impossible. Aborting”.

Создаем на флешке файлик /grub/grub.cfg

sudo nano /mnt/USB/grub/grub.cfg

и пишем туда вот что:

menuentry "FreeBSD 11.0 Text Install" {
  kfreebsd /boot/kernel/kernel
  kfreebsd_loadenv /boot/device.hints
  kfreebsd_module_elf /boot/kernel/ums.ko
  set kFreeBSD.vfs.root.mountfrom=msdosfs:/dev/msdosfs/FREEBSD11
  set kFreeBSD.kern.geom.eli.visible_passphrase=2
  set kFreeBSD.hw.memtest.tests=0
  set kFreeBSD.vfs.zfs.arc_max=128M
  set kFreeBSD.grub.platform=$grub_platform
  set kFreeBSD.xconsole=YES
  set kFreeBSD.kern.cam.boot_delay="50000"
  set kFreeBSD.kern.geom.label.disk_ident.enable=0
  set kFreeBSD.kern.geom.label.gptid.enable=0
  set kFreeBSD.kern.geom.label.ufsid.enable=0
  set kFreeBSD.vfs.mountroot.timeout="180"
}

Распаковка образа iso

Дальше нужно распаковать смонтировать инсталляционный iso-образ и распаковать его на флешку:

sudo mkdir /mnt/cdrom && sudo mount -t iso9660 ./FreeBSD-11.0-RELEASE-amd64-disc1.iso /mnt/cdrom 
sudo rsync -rLK --ignore-existing /mnt/cdrom/ /mnt/USB

Затем на флешке редактируем /etc/fstab и приводим его к такому виду:

/dev/msdosfs/FREEBSD11  /   msdosfs ro    0   0

Тут важно, чтобы указанная метка FREEBSD11 соответствовала указанной при форматировании.

В моем случае флешка оказалась медленной и перед отмонтированием я запустил sync, чтобы убедиться в том, что все корректно записалось.
sync идет довольно долго (около часа!!), так как много мелких файлов.

sync
umount /dev/sdx1

Все. Дальше просто загружаемся с флешки и ставим FreeBSD 11.0.

Этим же методом можно сделать загрузочную флешку для установки TrueOS (бывший PCBSD).

https://github.com/trueos/pcbsd/blob/master/overlays/install-overlay/boot/grub/grub.cfg.pcbsd