AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 45463
Accepted
theotherreceive
theotherreceive
Asked: 2009-07-25 19:13:16 +0800 CST2009-07-25 19:13:16 +0800 CST 2009-07-25 19:13:16 +0800 CST

PXE Boot - Linux 服务器和 OpenBSD 客户端

  • 772

我这里有一台旧机器,我正在尝试设置为运行 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 机器上,并将 next-server 更改为这台机器的 ipaddress,启用它的 tftp 服务器,并且客户端第一次启动。

linux dhcp pxe-boot openbsd tftp
  • 6 6 个回答
  • 12702 Views

6 个回答

  • Voted
  1. katriel
    2009-07-25T23:58:02+08:002009-07-25T23:58:02+08:00

    我发现的第一件事是您在 xinetd.conf 中使用“-s /tftpboot”并添加了 dhcpd.conf“root-path”选项。为 tftpd 设置“-s”选项意味着这是 tftp 客户端所见的“/”目录。所以你的 dhcpd.conf 应该只有“filname /pxeboot”,没有根路径选项。

    来自“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.
    
    • 6
  2. cas
    2009-07-26T00:22:58+08:002009-07-26T00:22:58+08:00

    katriel 已经给出了我会给出的答案,所以我会给出一些更通用的建议......

    注意:这并不能回答您最初的问题(让 pxe 客户端完全启动),它解决了问题解决后要做什么。

    我强烈建议使用syslinux项目中的 gpxelinux.0,而不是您正在使用的 pxeboot 程序(无论如何,这可能是 syslinux 的 pxelinux 程序的旧版本)。

    不要被名字所迷惑,gpxelinux.0 是一个通用的 PXE 引导程序,可用于引导任何操作系统。我用它来启动 linux、windows、clonezilla 和各种软盘和 CD 映像(主要是 MS-DOS/Freedos 映像,软盘上带有一些固件更新——这比将更新刻录到 CD 或软盘并随身携带要好得多到每台机器)。

    gpxelinux.0 与其他 pxe 引导程序相比的主要优势之一是它不仅仅理解 tftp 协议,因此您可以让它通过 http 或 ftp 而不是 tftp 获取内核、initramfs 和其他压缩文件系统以及其他任何东西。这速度快了很多,而且根据我的经验,更可靠。你仍然需要一个 tftp 服务器,因为实际的 gpxelinux.0 文件和它的默认 cfg 文件仍然必须由 tftp 提供服务。

    它还包括一个方便的命令行选项,允许您手动覆盖引导选项(类似于您可以使用 grub 执行的操作)。

    只是切换到 http 启动映像几乎消除了我遇到的网络启动问题(除了一些小的配置细节,如路径/文件名)

    • 2
  3. womble
    2009-07-25T19:20:03+08:002009-07-25T19:20:03+08:00

    我要尝试的第一件事是tcpdumptftp 流量,看看传输是否真的成功完成;如果是,那么可能是客户端不喜欢该pxeboot文件——要么它已损坏,要么架构错误,要么不合适。

    • 1
  4. Niels Basjes
    2009-07-25T22:15:20+08:002009-07-25T22:15:20+08:00

    看看我几年前写的howto 。虽然它没有描述引导 BSD,但它确实非常详细地描述了整个过程。也许这可以帮助您找出问题所在。

    • 1
  5. Best Answer
    theotherreceive
    2009-07-26T11:23:56+08:002009-07-26T11:23:56+08:00

    我构建了netkit tftp 服务器,这是第一次使用我的 pxeboot 文件。

    这个 tftp 服务器tftpd在 debian/ubuntu 上打包,但似乎没有为使用 tftp-hpa 服务器的 fedora 打包。


    这是我用来启动系统的工作配置。

    #/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";
    }
    

    由于这是一个无盘客户端,我需要 bootparams 和 rarpd 以便内核可以通过 nfs 使用文件系统。这不是引导 ramdisk 内核 (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)
    
    • 1
  6. stuart Brand
    2009-07-25T21:08:18+08:002009-07-25T21:08:18+08:00

    /tftpboot/pxeboot/pxeboot.cfg/default 或等效的内容是什么?这需要包含有关内核和 initrd.img 的信息,有时甚至是您正在使用的网卡

    • 0

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve