Створення мультизавантажувального USB-флеш-накопичувача в операційній системі FreeBSD, завантаження FreeBSD iso образу використовуючи GRUB.


Для початку встановимо Grub зручним для вас способом.
cd /usr/ports/sysutils/grub2-pcbsd/
make install clean
або
pkg install grub2-pcbsd
Підключаємо USB-флеш-накопичувач і дивимося розділи за допомогою команди:
gpart show
Потім монтуємо USB-флеш-накопичувач залежно від того, як він визначається, у мене це
mount_msdosfs /dev/da0s4 /mnt
Створюємо директорію boot, dev та встановлюємо GRUB на USB-флеш-накопичувач за допомогою команд
mkdir /mnt/boot
mkdir /mnt/dev
grub-install --boot-directory=/mnt/boot /dev/da0
Копіюємо iso образи на USB-флеш-накопичувач
cp -R /tmp/iso /mnt
Створюємо конфігураційний файл GRUB за допомогою консольного редактора EE або чим ви користуєтеся.
ee /mnt/boot/grub/grub.cfg


Мій файл конфігурації виглядає так:


### BEGIN of grub.cfg ###
# Boot автоматично після 30 secs.
set timeout=30

# By default, boot the first entry.
set default=0

insmod loopback
insmod iso9660
insmod ufs2
insmod ntfs
insmod msdosfs
menuentry "FreeBSD 13.0 amd64" {
  set isofile="/iso/FreeBSD-13.0-RELEASE-amd64-disc1.iso"
  loopback loop $isofile
  kfreebsd (loop)/boot/kernel/kernel
  set kFreeBSD.vfs.root.mountfrom=msdosfs:/dev/da0s4
}

menuentry "Slitaz GNU/Linux" {
  loopback loop /iso/slitaz-rolling-core64.iso
  linux (loop)/boot/vmlinuz-3.16.55-slitaz64 iso-scan/filename=/iso/slitaz-rolling-core64.iso boot=live quiet noeject noprompt
  initrd (loop)/boot/rootfs.gz
}

menuentry "Clonezilla live" {
  set isofile="/iso/clonezilla-live-2.8.0-27-i686.iso"
  loopback loop $isofile
  linux (loop)/live/vmlinuz boot=live union=overlay username=user config components quiet noswap nolocales edd=on nomodeset nodmraid ocs_live_run=\"ocs-live-general\" \"no\" locales= vga=788 ip=frommedia nosplash toram=filesystem.squashfs findiso=$isofile
  initrd (loop)/live/initrd.img
}


menuentry 'GParted i386' {
  set gfxpayload=text # ~= vga='normal'
  set isofile_abspath='/iso/gparted-live-1.0.0-5-i686.iso'
  set isofile_devpath="${devroot}${isofile_abspath}"
  loopback loop "(${root})${isofile_abspath}"
  linux '(loop)/live/vmlinuz' boot='live' union='overlay' username='denis' config components noswap noeject toram='filesystem.squashfs' ip=''nosplash findiso="${isofile_abspath}"
  initrd '(loop)/live/initrd.img'
}

menuentry "ClamAV live" {
  set isofile="/iso/AntivirusLiveCD-38.0-0.104.0.iso"
  loopback loop $isofile
  linux (loop)/boot/bzImage iso-scan/filename=/iso/AntivirusLiveCD-38.0-0.104.0.iso boot=live quiet noeject noprompt
  initrd (loop)/boot/initrd.gz
}


### END of grub.cfg ###

 


Створюємо конфігураційний файл mount для завантаження FreeBSD.

ee /mnt/.mount.conf

.timeout 3
.md /iso/FreeBSD-13.0-RELEASE-amd64-disc1.iso
.timeout 4
cd9660:/dev/md# ro
.ask

У даному прикладі в мультизавантажувальному USB-флеш-накопичувачі будуть завантажуватися з ISO ISO операційна система FreeBSD, операційна система Slitaz GNU/Linux, засіб резервного копіювання Clonezilla, редактор дисків Gparted і антивірус ClamAV.Аналогічно можна завантажити інші образи систем використовуючи Grub.
Перезавантажуємось...