Сетевая загрузка установщика

Образ установщика OpenBSD (ядро bsd.rd) в сжатом виде занимает примерно 5 мб, поэтому его удобно грузить по сети.

PXE

PXE-загрузка применяется для локальной сети: например, один из компьютеров может стать станцией, которая будет раздавать установщик (не следует забывать, чо bsd.rd можно использовать и как восстановительную систему для OpenBSD). Для этого потребуются серверы dhcpd и tftpd.

Настройка dhcpd

Для настройки и запуска dhcp-сервера требуется установить ip-адрес из заданой подсети (например. 192.168.0.51) и установить подобный конфиг /etc/dhcpd.conf

  # option  domain-name-servers 192.168.0.1;
  
  subnet 192.168.0.0 netmask 255.255.255.0 {
  #        option routers 192.168.0.1;
          range 192.168.0.52 192.168.0.252;
          filename "pxeboot";
  }

После чего можно включить dhcp-сервер:

  rcctl enable dhcpd
  rcctl start dhcpd

Настройка tftpd

Минимальный комплект состоит из двух файлов - ядра bsd.rd (по умолчанию ищется под именем bsd) и pxeboot (находится в /usr/mdec). Для сокращения времени сетевой загрузки ядро перед использованием лучше сжать. То есть, инфраструктуру можно подготовить примерно вот так

  mkdir /var/tftp
  rcctl enable tftpd
  rcctl set tftpd flags /var/tftp
  cp /usr/mdec/pxeboot /var/tftp
  cat /bsd.rd | gzip -9 > /var/tftp/bsd
  rcctl start tftpd

Можно также использовать файл etc/boot.conf - подробности в man boot.

gPXE/iPXE

gPXE/iPXE помимо dhcp позволяет также загружать образ напрямую с http.

iPXE может быть загружен с носителей, с EFI, записан напрямую в сетевую карту. Пользователи Debian/Ubuntu могут сделать apt-get intstall ipxe и iPXE будет автоматически добавлен в меню GRUB.

В приглашении iPXE, когда он попросит нажать CTRL-B, следует выполнить это, и в получившейся консоли ввести:

  > dhcp
  > chain http://51t.ru/pxe

Данный сайт предоставляет http-ссылки для iPXE-загрузки. Для 64-битного установщика текущей версии OpenBSD служит адрес http://51t.ru/pxe64 (или просто 51t.ru/pxe), для 32-битного - http://51t.ru/pxe32

Кроме того, есть образы установщиков 1.44 мб: соответственно http://51t.ru/fdd64 и http://51t.ru/fdd32




Да, нужен ещё http-сервер, откуда он будет брать базовую систему (можно, конечно, и с интернета грузить, по умолчанию он предложит зеркала, но можно забить свой в процессе установки)
// 2017-09-04 22:09

т.е. дополнительные пакеты с образа не установишь уже никак? Ядро заставить работать с диском через биосовские прерывания нельзя? Чтоб образ не терялся...

Значит, для организации полноценной загрузки и установки по сети нужно ещё поднять http сервер с пакетами программ и както указать на него инсталятору?
// 2017-09-04 21:09

Это загрузит 8-мегабайтный исошник в память. Потому что pxelinux может грузить только образы, которые прикинулись диском, обманывая BIOS компьютера. После загрузки ядра то, что прикидывалось до bios, видно не будет, поэтому ядро этот исошник видеть уже не сможет, и грузить 210 мегабайтный ISO-файл бессмысленно. Для этого потребуется или 32, или 64 мб памяти, я сейчас точно сказать не смогу... но 64 точно хватит

Суть этого всего в том, чтобы загрузить bsd.rd, и это единственный доступный способ. После загрузки bsd.rd в память всё идёт так, как будто это ядро загрузили с CD, после чего вытащили диск.
// 2017-09-04 19:43

извеняюсь за невежество, но это
kernel memdisk iso raw
initrd cd61.iso
загрузит весь исошник в память? т.е памяти на машине должно быть 800+ мегобайт?
// 2017-09-04 19:11

bsd.rd и есть полноценный установщик
для загрузки через pxelinux, можно использовать memdisk, типа:

label OpenBSD 6.1
kernel memdisk raw
initrd floppy61.fs

или

label OpenBSD 6.1
kernel memdisk iso raw
initrd cd61.iso
// 2017-09-04 08:17

А как организавать загрузку не только одного ядра, а полноценного инсталятора, например взятого отсюда http://51t.ru/txt-openbsd-pentium2.html ? Например есть ПК с tftp с которого грузятся разные системы и установщики, как туда добавить дистрибутив OpenBSD для установки внутри локальной сети?
// 2017-09-03 22:02