适用于 Windows 或 OS X 的免费 PXE 启动服务器

适用于 Windows 或 OS X 的免费 PXE 启动服务器

OS X(leopard,不是 server)似乎内置了 tftp 和某种 dhcp 服务器,这似乎足以实现 PXE 启动,但我真的不知道从哪里开始。我也有 Windows(XP 和 7)工作站可用。

我更喜欢快速而粗糙的解决方案而不是强大的解决方案,因为这只是一个临时措施,直到我的 debian 服务器再次运行。:-)

答案1

IIRC,为了在家里构建 PXE 启动环境,我使用了:

看来 Tftpd32 也包含 DHCP 服务器,我不记得为什么我使用小型 HTTP 服务器。

答案2

我试图通过我的 macOS 笔记本电脑在台式电脑上安装 Arch Linux。这有点复杂,但你可以使用 macOS 的 bootpd(结合 BOOTP 和 DHCP)和 tftp 服务器来完成。

首先下载远程控制适用于你的发行版的网络启动映像,在我的例子中是 ipxe.pxearch 版本

wget https://www.archlinux.org/static/netboot/ipxe.8da38b4a9310.pxe

现在将您的 macOS 系统连接到您希望进行 PXE 引导安装的客户端计算机。我使用了来自雷电端口的以太网电缆,这使我的笔记本电脑的 WiFi 连接到互联网。

接下来,在 macOS -> 客户端界面上设置手动 IP 地址。在网络偏好设置中选择您的界面并指定手动 IP 地址192.168.2.254,如果需要,请使用子网255.255.255.0

在此阶段,我启用了网络共享系统偏好设置,这将在 WiFi 和以太网之间创建桥接适配器。客户端计算机必须已连接,否则/etc/bootpd.plist将无法正确创建配置文件。

现在将您的网络启动映像复制到 tftp 服务器根目录。默认情况下,这是 root 拥有的目录,具有完全读取权限/private/tftpboot。将您的网络启动映像复制到该目录中:

sudo cp ipxe.8da38b4a9310.pxe /private/tftpboot

接下来,您必须修改 bootpd 服务器配置文件以指向您的网络启动映像和 tftp 服务器。首先,您需要将网络启动映像的文件名编码为 base64,具体操作如下:

printf %s00 `echo -n ipxe.8da38b4a9310.pxe | xxd -p` | xxd -r -p | openssl base64

现在打开你的 bootpd 服务器配置文件

sudo nano /etc/bootpd.plist

<subnet> <array> <dict>并将您的静态 IP 和 base64 编码的文件名添加到:底部

<key>dhcp_option_66</key>
<string>192.168.2.254</string>
<key>dhcp_option_67</key>
<data>aXB4ZS44ZGEzOGI0YTkzMTAucHhlAA==</data>

bootpd.plist现在的样子如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Subnets</key>
    <array>
        <dict>
            <key>_creator</key>
            <string>com.apple.NetworkSharing</string>
            <key>allocate</key>
            <true/>
            <key>dhcp_domain_name_server</key>
            <array>
                <string>192.168.2.1</string>
            </array>
            <key>dhcp_router</key>
            <string>192.168.2.1</string>
            <key>interface</key>
            <string>bridge100</string>
            <key>lease_max</key>
            <integer>86400</integer>
            <key>lease_min</key>
            <integer>86400</integer>
            <key>name</key>
            <string>192.168.2/24</string>
            <key>net_address</key>
            <string>192.168.2.0</string>
            <key>net_mask</key>
            <string>255.255.255.0</string>
            <key>net_range</key>
            <array>
                <string>192.168.2.2</string>
                <string>192.168.2.254</string>
            </array>
            <key>dhcp_option_66</key>
            <string>192.168.2.254</string>
            <key>dhcp_option_67</key>
            <data>aXB4ZS44ZGEzOGI0YTkzMTAucHhlAA==</data>
        </dict>
    </array>
    <key>bootp_enabled</key>
    <false/>
    <key>detect_other_dhcp_server</key>
    <array>
        <string>bridge100</string>
    </array>
    <key>dhcp_enabled</key>
    <array>
        <string>bridge100</string>
    </array>
    <key>dhcp_ignore_client_identifier</key>
    <true/>
    <key>ignore_allow_deny</key>
    <array>
        <string>bridge100</string>
    </array>
    <key>use_server_config_for_dhcp_options</key>
    <false/>
</dict>
</plist>

现在通过运行以下命令重新启动/启用 macOS bootpd 和 tftp 服务器:

sudo launchctl unload -w /System/Library/LaunchDaemons/{bootps,tftp}.plist
sudo launchctl load -w /System/Library/LaunchDaemons/{bootps,tftp}.plist

现在您应该通过本地连接并下载网络启动映像来测试您的 tftp 服务器:

tftp localhost
tftp> get ipxe.8da38b4a9310.pxe
Received 343580 bytes in 0.1 seconds
tftp> quit

现在启动启用了 PXE 的客户端系统,它应该会找到您的 macOS DHCP 服务器(通过 bootpd),分配 IP 地址,找到 TFTP 服务器,传输并运行网络启动映像!成功!

完成后禁用 bootpd 和 tftp 服务器:

launchctl unload -w /System/Library/LaunchDaemons/{bootps,tftp}.plist

相关内容