В OS X (леопард, а не сервер), похоже, есть tftp и какой-то встроенный DHCP-сервер, которого, кажется, было бы достаточно для загрузки PXE, но я действительно не знаю, с чего начать. У меня также есть рабочие станции с Windows (XP и 7).
Я бы предпочел быстрые и грязные решения надежным, поскольку это всего лишь временная мера, пока я снова не запустил свой сервер debian. :-)
Я пытался установить Arch linux на настольный компьютер через свой ноутбук с macOS. Это немного сложно, но вы можете сделать это с помощью MacOS bootpd (комбинированный BOOTP и DHCP) и tftp-серверов.
Сначала загрузите iPXE образ сетевой загрузки для вашего дистрибутива, в моем случае ipxe.pxe в арочные релизы:
wget https://www.archlinux.org/static/netboot/ipxe.8da38b4a9310.pxe
Теперь подключите вашу систему macOS к клиентскому компьютеру, на котором вы хотите установить загрузку PXE. Я использовал кабель Ethernet от моего порта thunderbolt, который оставил WiFi моего ноутбука подключенным к Интернету.
Затем установите ручной IP-адрес в MacOS -> клиентский интерфейс. Выберите свой интерфейс в сетевых настройках и укажите IP-адрес вручную. 192.168.2.254
и при необходимости использовать подсеть 255.255.255.0
.
На этом этапе я включил Совместное использование Интернета в Системные настройки, который создает мостовой адаптер между Wi-Fi и Ethernet. Важно, чтобы клиентский компьютер уже был подключен, иначе /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
и добавьте свой статический IP-адрес и имя файла в кодировке base64 в конец <subnet> <array> <dict>
:
<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, и она должна найти ваш DHCP-сервер macOS (через bootpd), назначить IP-адрес, найти TFTP-сервер, передать и запустить образ сетевой загрузки! Успех!
Чтобы отключить серверы bootpd и tftp после того, как вы закончите:
launchctl unload -w /System/Library/LaunchDaemons/{bootps,tftp}.plist
IIRC, для создания среды загрузки PXE дома я использовал:
Кажется, что Tftpd32 также включает в себя DHCP-сервер, и я не помню точно, почему вместо этого использовал Small HTTP-сервер.