Бездисковая загрузка Linux - общий ресурс NFS не монтируется во время загрузки ramdisk

(Это мой первый пост, поэтому, надеюсь, я правильно его форматирую). Я добавил как можно больше информации, не будучи TL: DR.

Моя основная проблема заключается в том, что я натолкнулся на стены при попытке выполнить бездисковую загрузку PXE на сервер NFS (CentOS 6.7 или CentOS 7). Я пробовал разные вещи и, похоже, не могу повторить успех, который у меня изначально был с сервером и клиентом CentOS7. Каждый раз, когда я слежу за своими записями, я ни к чему не прихожу.

Наиболее частые ошибки, которые я получаю (в зависимости от того, какой файл initrd.img или initramfs * .img я использую):

A ticker of *** that shows a text-based progress bar and the message

A start job is running for dev-nfs.device (xx s / 1min 30s)

Затем время истекает и отображается сообщение

Timed out waiting for device dev-nfs.device
Dependency failed for File System Check on /dev/nfs
Dependency failed for /sysroot
Dependency failed for Initrd Root File System
Dependency failed for Reload Configuration from the Real Root

Приведенная выше ошибка возникает при копировании (любой из) initramfs-3.10. *. img из / boot / в расположение образа PXE.

Если я попытаюсь сгенерировать новый файл образа initramfs из dracut, он также выдаст указанную выше ошибку.

dracut initramfsnew.img

Возможно, я либо не знаю, как создать правильный initramfs, или я действительно не понимаю функций initrd.img и initramfs. Я считаю, что тайм-аут происходит потому, что драйверы NFS еще не загружены на этом этапе процесса загрузки, поэтому клиент не может правильно смонтировать общий ресурс NFS. Я думаю, это потому, что я загрузил тот же самый клиент PXE в его локальную ОС и вручную смонтировал общий ресурс NFS, и он работает на 100%, поэтому общий ресурс NFS активен, и работает. Я считаю, что я неправильно понимаю, как работают initrd.img и initramfs * .img.

Если я загружаю initrd.img с зеркала CentOS, я получаю 90% пути, а затем ошибка меняется на

No /sbin/init trying fallback

Сейчас я нахожусь в оболочке (желательно наполовину загруженной), которая дает мне базовую навигацию по общему ресурсу NFS. Я могу перейти в / home / disklessuser / и даже записать в NFS или прочитать новые файлы из NFS (проверенные простые команды «касания» как на сервере, так и на клиенте). В первую очередь, кажется, не хватает опции входа в систему в этом случае, а также правильной границы для каталогов (то есть я, кажется, вошел в систему как root на этом этапе загрузки).

Основные конфигурация довольно стандартная AFAIK:

/var/lib/tftpboot/pxelinux.cfg/default содержит (I ' я не учел те биты, которые, как я знаю, работают - PXE работает и указывает на правое изображение и т. д.):

menu label ^1) CentOS 7
  kernel /images/centos7/vmlinuz
  append root=/dev/nfs initrd=/images/centos7/initrd.img nfsroot=10.10.10.10:/srv/nfs/diskless/images/centos7/root rw selinux=0

Я пробовал варианты вышеперечисленного, например, заменяя initrd.img на initramfs3.10 * .img (различные версии расположен на сервере / boot /) и пытались добавить такие параметры, как

ip=dhcp

, потому что документация dracut предполагает, что это укажет ему получить путь nfsroot от DHCP, а не из меню PXE.

В настоящее время я настроил свой DHCP так:

subnet 10.10.10.0 netmask 255.255.255.0 {
   option broadcast-address 10.10.10.255;
   option routers 10.10.10.1;
   range 10.10.10.100 10.10.10.150;

   next-server 10.10.10.10;
   option root-path "10.10.10.10:/var/lib/tftpboot";
   filename "pxelinux.0";
}

Возможно, это противоречит общему ресурсу NFS, указанному в меню PXE?

В любом случае, я был бы признателен за любые рекомендации - возможно, наиболее подходящим для меня является то, что делать с initrd или initramfs. Я полагаю, что нет особой разницы между ними, но как создать новый, который (надеюсь) должен включать в себя базовые сетевые драйверы, позволяющие монтировать NFS?

Во-вторых, почему отсутствует / sbin / init, когда я почти не могу найти решение, когда я использую initrd.img, хранящийся в зеркальном каталоге CentOS в / os / x86_64 / isolinux?

4
задан 15 March 2016 в 11:32
2 ответа

вы можете загрузить CentOS-7.0-1406-x86_64-DVD.iso с HTML вместо NFS с

kernel   = /NWA_PXE/$HEAD_DIR$/images/pxeboot/vmlinuz 
append   = initrd=/NWA_PXE/$HEAD_DIR$/images/pxeboot/initrd.img root=live:http://$IP_BSRV$/$HEAD_DIR$/LiveOS/squashfs.img ksdevice=bootif repo=http://$IP_BSRV$/$HEAD_DIR$/ 
ipappend = 2

источником Serva

вы можете легко изменить его на NFS, если это действительно необходимо

.
0
ответ дан 3 December 2019 в 04:20

На основании вашей информации трудно сказать, что именно вызывает тайм-аут. Несколько советов, которые стоит попробовать:

  • Загрузите систему с отключенным selinux, используя rd.brak для входа в предварительную загрузку initrd.
  • Проверьте, что вызывает тайм-аут. Убедитесь, что сетевой драйвер загружен, и сработало ли назначение DHCP. Посмотрите, удастся ли выполнить монтирование nfs вручную. Попробуйте вручную запустить dev-nfs.device.
  • Сравните ваши действия с различными документами, например http://www.iram.fr/~blanchet/tutorials/diskless-centos-7.pdf
  • Попытайтесь полностью понять процесс загрузки и создания файлов initramfs.

Несколько слов о загрузке экземпляра:

  • vmlinux / vmlinuz содержит только образ ядра с драйверами
  • initramfs содержит базовую корневую файловую систему, которая полностью загружен в оперативную память
  • Обычно (в настольных и серверных системах) обязанности initramfs включают подготовку ядра (например, загрузку соответствующих драйверов ядра), монтирование корневой файловой системы (rhel 7 обычно настоящая корневая файловая система будет в / sysroot после rd.break), а затем передать загрузку реальной корневой файловой системе.
  • В этом случае я предполагаю, что при подготовке ядра что-то пошло не так,похоже, что что-то отсутствует или не может быть найдено внутри initramfs. в конечном итоге модули драйвера nfs.
0
ответ дан 3 December 2019 в 04:20

Теги

Похожие вопросы