Я настраиваю сервер CentOS 7.2, чтобы клиенты могли загружать бездисковый образ CentOS 7.2. Я сделал это с CentOS 6.6, и он отлично работает на нескольких серверах и клиентах на протяжении многих лет. Используя те же параметры конфигурации.
/var/lib/tftpboot/pxelinux.cfg/default содержит:
default menu.c32 prompt 0 timeout 100 TOTALTIMEOUT 300 ONTIMEOUT CentOS MENU TITLE Linux 7.2 PXE Boot Menu LABEL CentOS MENU LABEL CentOS 7.2 x86_64 em1 KERNEL images/centos/x86_64/7.2/vmlinuz-3.10.0-327.el7.x86_64 APPEND initrd=images/centos/x86_64/7.2/diskless_initrd.img ip=dhcp nfs=10.0.0.1:/diskless/centos/7.2/root rw quietWhen PXE booting the client it gets quite far, but stops at:
Starting Switch Root... Failed to switch root: Specified switch root path /sysroot does not seem to be an OS tree. os-release file is missing. initrd-switch-root.service: main process exited, code=exited, status=1/FAILURE
Это помещает меня в аварийную оболочку, и если я смотрю на / sysroot, это пустой каталог!
Я сохранил diskless_initrd.img с помощью
dracut -f diskless_initrd.img `uname -r`
и копируя его в указанное место. Я также пробовал "dracut -d nfs -d network", который некоторые предлагали.
Я не понимаю, почему это работает с моим сервером CentOS 6.6, но не здесь, в 7.2.
Я вернулся к этому вопросу через много месяцев и обнаружил, чего мне не хватало - активного межсетевого экрана. Похоже, что функции PXE / TFTP BOOT могут нормально передавать образы vmlinuz и initrd без выполнения правил брандмауэра, но когда пришло время NFS передать корневую файловую систему клиенту, это было невозможно.
В Red Hat 7.3 я сначала скопировал файл / etc / sysconfig / iptables с моего сервера CentOS 6.6 (с которого клиент мог загружаться и смонтировать "бездисковую" файловую систему), а затем выполнил:
systemctl включить firewalld
systemctl запускает firewalld
Теперь клиент успешно смонтировал удаленную файловую систему и перешел к приглашению входа в систему Linux.
Теперь выясним, какие части файла iptables мне действительно нужны в данном случае.
Вы все еще работаете над этим? У меня была такая же проблема с RHEL / Centos 7.x. Никогда не было этой проблемы на 5.x или 6.x. Я пробовал как устаревший, так и режим UEFI с тем же результатом.
Я нашел проблему в своем процессе. На самом деле две вещи.
Я забыл очистить / etc / sysconfig / network-scripts в моей файловой системе rsync. Он по-прежнему содержал сценарии из исходной файловой системы.
У нас есть несколько сетевых карт на наших бездисковых клиентах. Нам не хватало некоторых параметров загрузки в конфигурациях сетевой загрузки, например:
APPEND initrd=images/centos/x86_64/7.2/diskless_initrd.img ip=bond1:dhcp root=nfs:10.0.0.1:/diskless/centos/7.2/root bond=bond1:eth4,eth5:mode=1 biosdevname=0 net.ifnames=0 rw quiet
В вашем случае вы можете не использовать связанные сетевые устройства, но вам все равно может потребоваться указать имя устройства сетевой карты, на которой ваш бездисковый клиент получает файловую систему, например, так ...
APPEND initrd=images/centos/x86_64/7.2/diskless_initrd.img ip=eth3:dhcp root=nfs:10.0.0.1:/diskless/centos/7.2/root biosdevname=0 net.ifnames=0 rw quiet