Я пытаюсь использовать pxe для загрузки centos 8 как бездисковой системы, однако, после сбоя загрузки после загрузки ядра и initrd.img, когда он пытается передать управление корневой файловой структуре. Я получаю следующую ошибку
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
теперь я видел другой пост об этом, но все, кроме одного, были о том, как исправить это на одной машине без загрузки pxe, за исключением того, который я не мог комментировать или добавлять из-за очков репутации или отсутствия таковых. однако я не верю, что поток был адекватным, я перечислю свою конфигурацию внизу, если кто-то может указать на возможную ошибку там, но в основном,
Я предполагаю, что путь / sysroot недействителен, потому что он может искать путь в исходной системе, которая была клонирована, поэтому как я могу отредактировать или изменить путь, который ищет файл initrd.img?
или это просто проблема сервера pxe, когда мой каталог, указанный в файле pxelinux.cfg / default, недоступен через nfs для клиента. на этом примечании, хотя он находится в списке etc / export, и брандмауэр разрешает tftp и nfs.
pxelinux.cfg / по умолчанию
default menu.c32
prompt 0
timeout 10
ONTIMEOUT local
menu title ########PXE BOOT MENU #############
lable 1
menu label ^1) Install cnetos 8
kernel root/boot/vmlinuz-4.18.0-193.e18.x86_64
append initrd=root/boot/initramfs-4.18.0-193.e18.x86_64.img root=nfs:192.10.100.10:/var/lib/tftpboot/root/ ip=dhcp ro net.ifnames=0 biosdevname=0
Также я использовал rsync для прошивки USB с работающей системой, а затем переместил содержимое в каталог tftpboot на сервере pxe. эта система все еще работает, поэтому я считаю, что с содержимым корневого каталога все в порядке, я просто не могу заставить клиент pxe увидеть и смонтировать его. помощь будет очень признательна.
Хорошо для других, это была основная проблема с моей настройкой, а также некоторые другие идеи, полученные при работе с centos 8 и 7. Неудачный корень коммутатора произошел из-за отсутствия IP-адреса от цели, который он имел из исходного dhcpd с сервера при запуске меню pxe. это произошло потому, что я использовал файл initramfs.img вместо файла initrd.img и файл vmlinuz из моей клонированной системы вместо файлов vmlinuz и initrd.img из каталога pxeboot в установочных файлах dvd.iso. Этот файл initrd нашел и установил nic с параметром dhcp, указанным в файле по умолчанию pxe.cfg. также я знаю, что это может быть очевидно для более опытных людей, но я видел много разных строк добавления во многих разных примерах. для новых пользователей это оставляет нас в темноте, поэтому ниже были мои открытия
#append for an install of centos 7 or 8
append initrd=/path/to/initrd/file/initrd.img ip=dhcp inst.repo=nfs:/sharedfilepath/ biosdevname=0 net.ifnames=0 rw
#notes: initrd path is relative to the file you pointed to in the dhcpd.conf file so it #could be tftpboot or a sub directory like centos8/pxelinux.0 in my case etc..
#inst.repo is an installation option if you are trying to boot an already configured system
#like I was then this is wrong you need to simple set the root argument like below
append initrd.img ip=dhcp root=nfs:servername(or ip):/path/to/root/of/image/ rw net.ifnames=0 biosdevname=0
#also if you are going to a headless setup you will need to include the serial console and #baud rate in the append
append initrd.img root=nfs:serverip:/path/to/image ro net.. bios.. console=ttys0,115200
Обычный способ создания корневой файловой системы NFS:
root=/dev/nfs nfsroot=192.10.100.10:/var/lib/tftpboot/root rw
Я не уверен, что используемый синтаксис вообще поддерживается.
Кроме того, то, доступен ли он только для чтения или для чтения-записи, зависит от распределения; все дистрибутивы требуют специальной настройки для корневой файловой системы NFS только для чтения, если они вообще ее поддерживают. Вероятно, вам следует начать с чтения и записи, пока все остальное не будет настроено и запущено.