Назад | Перейти на главную страницу

Загрузка PXE - сервер Linux и клиент OpenBSD

У меня здесь старая машина, которую я пытаюсь настроить как бездисковый клиент под управлением OpenBSD, загружаясь с моей машины Fedora 10.

Я установил tftp и dhcp, и оба кажутся правильными, но клиент просто теряет время ожидания, пытаясь загрузить pxeboot.

# /etc/xinetd.d/tftp 
service tftp
{
    disable = no
    socket_type     = dgram
    protocol        = udp
    wait            = yes
    user            = root
    server          = /usr/sbin/in.tftpd
    server_args     = -s /tftpboot -vv
    per_source      = 11
    cps         = 100 2
    flags           = IPv4
}

[root@blueblock ~]# ls -la /tftpboot/
total 12100
drwxrwxrwx  2 root root    4096 2009-07-25 03:12 .
drwxr-xr-x 26 root root    4096 2009-07-25 02:41 ..
-rwxrwxrwx  1 root root 6696212 2009-02-28 22:41 bsd
-rw-r--r--  1 root root 5592688 2009-02-28 22:41 bsd.rd
-rwxrwxrwx  1 root root   53276 2009-02-28 22:41 pxeboot

# /etc/dhcpd.conf
host longshot {
  hardware ethernet 00:0b:db:07:83:35;
  fixed-address 10.0.2.21;
  next-server 10.0.2.5;
  option root-path "/tftpboot/";
  filename "pxeboot";
}

Я могу подключиться к tftp-серверу с других машин в сети и успешно получить файл pxeboot.

Клиент получает правильные настройки IP-адреса, и я вижу, что он подключается к серверу tftp.

Jul 25 04:11:51 localhost dhcpd: DHCPDISCOVER from 00:0b:db:07:83:35 via eth0
Jul 25 04:11:51 localhost dhcpd: DHCPOFFER on 10.0.2.21 to 00:0b:db:07:83:35 via eth0
Jul 25 04:11:53 localhost dhcpd: DHCPREQUEST for 10.0.2.21 (10.0.2.5) from 00:0b:db:07:83:35 via eth0
Jul 25 04:11:53 localhost dhcpd: DHCPACK on 10.0.2.21 to 00:0b:db:07:83:35 via eth0
Jul 25 04:11:53 localhost in.tftpd[1457]: RRQ from 10.0.2.21 filename pxeboot
Jul 25 04:11:53 localhost in.tftpd[1457]: tftp: client does not accept options
Jul 25 04:11:53 localhost in.tftpd[1458]: RRQ from 10.0.2.21 filename pxeboot

Есть ли здесь что-то простое? Или я могу еще что-нибудь сделать, чтобы попытаться диагностировать проблему.


Редактировать: Я поместил файлы pxeboot и bsd на имеющуюся у меня машину openbsd, изменил следующий сервер на ipaddress этой машины, включил его tftp-сервер, и клиент загрузился в первый раз.

Первое, что я заметил, это то, что вы используете "-s / tftpboot" в xinetd.conf и добавляете параметр dhcpd.conf "root-path". Установка опции «-s» для tftpd означает, что это каталог «/», как видно для tftp-клиента. Таким образом, ваш dhcpd.conf должен содержать только "filname / pxeboot", без параметра root-path.

Из "man tftpd":

-s

Change root directory on startup. This means the remote host does not need 
to pass along the directory as part of the transfer, and may add security.
When -s is specified, exactly one directory should be specified on the command
line. The use of this option is recommended for security as well as compatibility
with some boot ROMs which cannot be easily made to include a directory name 
in its request.

Катриэль уже дала ответ, который я бы дал, так что вместо этого я дам более общий совет ...

ПРИМЕЧАНИЕ: это не отвечает на ваш исходный вопрос (чтобы клиент pxe загрузился вообще), он касается того, что делать ПОСЛЕ решения этой проблемы.

я настоятельно рекомендую использовать gpxelinux.0 из syslinux вместо используемой вами программы pxeboot (которая, вероятно, в любом случае является старой версией программы syslinux pxelinux).

не обманывайте себя названием, gpxelinux.0 - это стандартная программа начальной загрузки PXE, которую можно использовать для загрузки любой операционной системы. Я использую его для загрузки Linux, Windows, clonezilla и различных образов дискет и компакт-дисков (в основном образы MS-DOS / Freedos с некоторым обновлением прошивки на дискете, что лучше всего для записи обновления на компакт-диск или дискету и его ношения с собой. к каждой машине).

Одним из основных преимуществ gpxelinux.0 перед другими загрузочными программами pxe является то, что он понимает не только протокол tftp, поэтому вы можете заставить его получать ядра, initramfs и другие сжатые файловые системы и все остальное по http или ftp, а не tftp. это НАМНОГО быстрее и, по моему опыту, НАМНОГО надежнее. вам по-прежнему нужен tftp-сервер, потому что фактический файл gpxelinux.0 и его файл cfg по умолчанию по-прежнему должны обслуживаться tftp.

он также включает удобный параметр командной строки, позволяющий вручную переопределить параметры загрузки (аналогично тому, что вы можете сделать с помощью grub).

просто переключение на http для загрузочных образов почти устранило проблемы с загрузкой по сети, которые у меня были (все, кроме некоторых незначительных деталей конфигурации, таких как путь / имя файла)

Я строю netkit tftp сервер, и это сработало впервые с моим файлом pxeboot.

Этот tftp-сервер упакован как tftpd на debian / ubuntu, но, похоже, не упакован для Fedora, которая использует сервер tftp-hpa.


Это рабочая конфигурация, которую я использовал для загрузки системы.

#/etc/xinetd.d/tftp
service tftp
{
        disable = no
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/local/sbin/in.tftpd
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

#/etc/dhcpd.conf
host longshot {
  hardware ethernet 00:0b:db:07:83:35;
  fixed-address 10.0.2.21;
  next-server 10.0.2.5;
  filename "pxeboot";
}

Поскольку это был бездисковый клиент, мне потребовались параметры загрузки и rarpd, чтобы ядро ​​могло использовать файловую систему через nfs. Это не требуется для загрузки ядра RAM-диска (bsd.rd).

#/etc/bootparams 
longshot root=10.0.2.5:/export/longshot/root swap=10.0.2.5:/export/longshot/swap
10.0.2.21 root=10.0.2.5:/export/longshot/root swap=10.0.2.5:/export/longshot/swap

#/etc/sysconfig/rarpd 
OPTIONS="-e"
INTERFACE="eth0"

# /etc/ethers 
00:0b:db:07:83:35   10.0.2.21

# /etc/exports
/export/longshot 10.0.2.0/255.255.255.0(rw,no_root_squash,sync)

Взгляните на как Я писал несколько лет назад. Хотя в нем не описывается загрузка BSD, он довольно подробно описывает весь процесс. Возможно, это поможет вам выяснить, что пошло не так.

Первое, что я бы попробовал, это tcpdump трафик tftp, чтобы узнать, действительно ли передача завершается успешно; если да, то предположительно клиенту не нравится pxeboot файл - либо он поврежден, неправильная архитектура, либо не подходит.

каково содержимое /tftpboot/pxeboot/pxeboot.cfg/default или аналогичного? он должен содержать информацию о ядре и initrd.img, а иногда даже о сетевой карте, которую вы используете