Введение (i386-спецификация), без дисковая станция NetBSD HOW-TO

Существует пара способов загрузки ядра NetBSD, для без дисковых станций:

  1. С помощью сетевой загрузки ПЗУ (rom)
    Вам необходимо иметь BIOS с поддержкой сетевой загрузки и соответствующую сетевую карточку. Часто присутствует в современных ПК, как правило, когда есть встроенный сетевой адаптер (прим. см. Network Interface Card (или Controller). В первую очередь, установите сервер для сети (см. diskless(8)) и измените настройки BIOS, что бы попробовать сетевую загрузку.
    В случае если в вашем BIOS нет, а сетевая карта поддерживает сетевой загрузчик NetBSD, вы можете загрузится в DOS (см. ниже dosboot.com) и воспользоваться netboot.com для сетевой загрузки ядра. Для создания рабочего компакт-диска в /usr/src/sys/arch/i386/stand/netboot, отредактируйте Makefile, для необходимых параметров сетевого адаптера и запустите make netboot.com.
  2. Используя PXE
    В случае если ваше оборудование может использовать сетевую загрузку PXE, с начала оно попытается получить IP от DHCP (Dynamic Host Configuration protocol). Сервер dhcpcd используя сетевой адрес клиента (MAC) определяет его IP-адрес и имя файла загрузчика. Если запрос удовлетворён, PXE ждёт возможности реализовать второй шаг программы загрузки, используя Trivial File Transfer Protocol (TFTP). Это происходит путём соединения с сервером TFTP, который ранее удовлетворил запросу DHCP, и запросит имя файла отправляемого с сервера. Затем, на втором шаге загрузки, загружается ядро посредством NFS, по маршруту указанным DHCP, с сервера.
    Существует два возможных файла загрузчика PXE /usr/mdec/ в дистрибутиве base.tgz для NetBSD. pxeboot_ia32.bin подходит для большинства случаев, т. к. pxeboot_ia32_com0.bin заставляет клиента использовать первый последовательный порт (serial port) в качестве консоли. Файл для последовательного порта (serial port), может использоваться для встраиваемых систем (как продукция Soekris), которые используют только последовательную консоль. Используйте настройки 9600 8N1.
    Приблизительно следующее может быть использовано в /etc/dhcpd.conf:
    host pxehost {
      hardware ethernet 01:23:45:67:89:ab;       # MAC адрес для PXE клиента
      fixed-address 192.168.17.42;               # IP адрес для PXE клиента
      
      # stage 1: 
      filename "pxeboot_ia32.bin";               # Используемый файл /tftpboot (прим. см. отправляемый файл с сервера tftp)
      
      # stage 2:
      next-server 192.168.42.1;                  # IP для сервера NFS
      option root-path "/usr/tmp/pxestuff/root"; # путь для сервера NFS
    }
    Если у вас много систем для PXE, можете сделать «ярлык», что бы сгруппировать в /etc/dhcpd.conf:
    class "pxe-clients-ia32" {
            match if substring (option vendor-class-identifier, 0, 20)
                     = "PXEClient:Arch:00000";
            filename "pxeboot_ia32_com0.bin";
    }
  3. Используя GRUB
    GRUB, это загрузчик подходящий для разных типов ОС, и может с некоторыми из них использовать сетевую загрузку. Сам GRUB загружается с диска или сети с помощью PXE или NBI (прим. см. Network Bootable Image, оно же *.nbi) с помощью загрузчика (например Etherboot). Etherboot и GRUB поддерживают множество сетевых адаптеров (прим. см. Network Interface Card (или Controller) в отличии от возможностей сетевой загрузки NetBSD. Обратите внимание, необходимо использовать GRUB версии от 0.90 и выше. GRUB и Etherboot необходимы GCC и GNU Binutils 2.9.1 и выше. Соберите их для любой машины, не надо их собирать для NetBSD.
    Необходимо настроить окружение таким образом, что бы Etherboot загрузил необходимый образ GRUB, и настроить GRUB для загрузки ядра NetBSD. Необходимые шаги написаны ниже:
    1. Положите необходимый образ Etherboot EPROM (прим. см. электрически стираемое перепрограммируемое ПЗУ) в EPROM.
    2. Соберите GRUB 0.90. Вам нужно использовать с -enable-diskless и -enable-*подходящий сетевой адаптер
    3. Положите полученный образ GRUB stage2/nbgrub на tftp сервере.
    4. Настройте dhcpcd для клиента, может выглядеть так:
       option option-150 code 150 = text;
       group {
        subnet 192.168.0.0 netmask 255.255.255.0 {
          option log-servers 192.168.0.1;
          option domain-name-servers 192.168.0.1;
          # location of GRUB configuration file
          option option-150 "/tftpboot/grub.conf";
          # NFS root path
          option root-path "/home/dolecek/netbsd-root";
          # path of image EtherBoot should load and execute
          filename "/tftpboot/nbgrub";
        }
        host foobar { fixed-address foobar; hardware ethernet 00:c0:6c:76:17:46; }
       }
    5. Создайте файл с настройками для GRUB и положите его на сервер tftp, для dhcpcd в опции option-150. Пример конфигурации для NetBSD:
      # Раскомментируйте две следующие строки для использования последовательного терминала
      # serial --unit=0 --speed=57600
      # terminal --timeout=0 serial
      
      # Автоматически загрузится после 5 секунд
      timeout 5
      
      # По умолчанию, загрузка с первого устройства
      default 0
      
      # Переключать с первой записи на
      fallback 0
      
      # Загрузка NetBSD
      title NetBSD
      kernel --type=netbsd /tftpboot/netbsd
    6. GRUB не отправляет информацию для загрузки NetBSD. Следовательно, для автоматической загрузки, укажите корень ядру в явном виде:
      config netbsd root on ? type nfs
      Затем соберите ядро и положите на tftp сервер, как настроенное для конфигурации GRUB
    7. Если вы хотите использовать последовательную консоль, настройте GRUB и ядро для её использования. Что бы использовать GRUB последовательную консоль, раз комментируйте записи последовательный (serial) и терминал (terminal) в примере конфигурации GRUB. Для использования как последовательная консоль для NetBSD, добавьте опцию
      options "CONSDEVNAME=\"com\"",CONADDR=0x2f8,CONSPEED=57600
      В файл конфигурации ядра
    8. Должно получится!
  4. Используя дискету
    Ядро на дискете может быть настроено для монтирования корня по сети, добавьте в файл конфигурации ядра:
            config netbsd root on ? type nfs
        
    Если вы ещё не собирали ядро, посмотрите записи как его собирать
  5. Используя "dosboot.com" для DOS или Windows (не NT)
    Соберите специальную версию NetBSD загрузчика, программа DOS, называется dosboot.com. Она находится как в установленной системе /usr/mdec, так и в base.tgz. Что бы использовать, скопируйте dosboot.com и ядро на FAT (msdos) раздел и загрузитесь с DOS.
    1. Windows 95 или 98
      Нажмите F8, отображаемая строка "Loading Windows XX", войдите в меню загрузки. Отображаемые пункты загрузки не будут зависеть от вашей установки.
      Если надо избежать загрузки драйвера HIMEM.SYS и EMM386.SYS. Тогда выберите "Step-by-step confirmation" (прим. читай как «шаг за шагом») и отвечайте на вопросы n или ES.
      Если вас всё устраивает, при загрузке получите HIMEM.SYS, нажав "Command prompt only" (прим. читай как «только в командной строке»)
    2. DOS или Windows 3.1
      Удерживайте Shift при загрузке, что бы пропустить config.sys и autoexec.bat.
    В командной строке перейдите в каталог, где лежит "dosboot.com" и ядро. Введите dosboot для загрузки NetBSD или dosboot filename, если вы дали другое имя файлу
    Программа dosboot может работать с расширенной (дополнительной) памятью, как тоже предусмотрено драйвером HIMEM.SYS. К сожалению это приводит к ситуации, когда NetBSD запрашивает APM (прим. Advanced Power Management) из BIOS. Это не критично, если у вас нет APM BIOS или ваше ядро не использует его (отсутствует "apm0 at mainbus0"). Если вы используете APM, не загружайте HIMEM.SYS при использовании dosboot.
    Если вы хотите создать специальную версию dosboot.com, перейдите в директорию /usr/src/sys/arch/i386/stand/dosboot, отредактируйте Makefile с необходимыми настройками (последовательная консоль и т. п.) и запустите make
  6. С помощью загрузчика NT
    Загрузчик NT может быть использован для непосредственной загрузки NetBSD. Для дополнительной информации см . Adding NetBSD to the Windows NT boot menu section (прим. читай как добавление в меню загрузки Windows NT NetBSD ) в the NetBSD/i386 FAQ

Произведите настройку (в предлагаемом порядке):

  1. dhcpd
  2. tftpd (PXE)
  3. nfs
  4. client filesystem
  5. finishing up