Природа pxebooting
Есть вопрос касательно загрузки pxe в freebsd. Давайте предположим следующее.
- Компьютер A = сервер dhcpd/tftp/console
- Машина B = нет ОС (о том, чтобы получить один по PXE)
После загрузки pxe-машины B я ожидаю, что у машины B будет возможность доступа к сети.
Сегодня я столкнулся с чем-то действительно интересным. Я загрузил pxe Machine B, но когда я набрал "ifconfig -a", я нашел только loopback. Что невозможно, должен быть хотя бы один интерфейс, тот самый интерфейс, который использовался машиной B для загрузки с машины А.
Кто-нибудь может дать мне некоторое представление о том, почему это происходит?
Спасибо
1 ответ
Процесс загрузки / установки PXE состоит из нескольких этапов. На первом этапе микропрограмма, содержащаяся в вашей карте NIC, обеспечивает услуги стандартизированного сетевого драйвера PXE (UNDI). Этот драйвер обрабатывает первые передачи TFTP как:
- NBP (программа сетевой загрузки), т.е. pxelinux.0
- ядро т.е. в мире Linux vmlinuz
- initrd, т.е. в мире Linux initrd.gz
NBP после TFTP-передачи файлов ядра и initrd передает управление ядру, которое монтирует initrd.
На этом этапе (второй этап) работающее ядро больше не будет использовать драйвер PXE UNDI и начинает использовать свои собственные сетевые драйверы. Здесь вы можете очень хорошо увидеть, что переданный initrd "не включает в себя соответствующий драйвер NIC", а затем на консоли, если вы введете ifconfig, вы увидите только петлю 127.0.0.1
Как вы можете видеть, в то время как драйвер сетевой карты PXE может передавать начальные загрузочные компоненты, загруженная ОС может не включать необходимые драйверы сетевой карты для продолжения нормальной работы.
В моем примере упоминался Linux, но загрузка любого варианта BSD также включает в себя начальные передачи PXE, обрабатываемые драйвером UNDI, и следующее загруженное ядро с использованием его собственных сетевых драйверов (если доступно).