initrd, построенный с помощью NFS-модуля, не может монтировать NFS-корневой

Я создаю пользовательский initrd, чтобы загружать бездисковые узлы с корнем tmpfs, а не с корня NFS (скрипт в initrd копирует содержимое корневого устройства в файловую систему tmpfs, а затем изменяет значение NEWROOT ). Все было хорошо и хорошо в моей тестовой среде, я сгенерировал пользовательский initrd, загрузил его / монтировал из него как tmpfs, но имел все файлы, предоставленные NFS root, отличные вещи.

Затем я начал двигаться к реальной среде, и когда initrd загружается, он задыхается, пытаясь смонтировать корень NFS (который по-прежнему является нормальной загрузкой NFS в этой точке), жалуясь на mount.nfs4: No such device .

Я создаю initrd, используя:

 dracut -v -m "nfs network base" --include rd.live.overlay/ / initrd-tmpfs.img 

Я подтвердил, что initrd-tmpfs.img загружается (на основе ранней части загрузки PXE, где он перечисляет initrd его загрузку).

Когда initrd выходит из строя, он попадает в аварийную оболочку и имеет несколько интересных вещей:

ip addr show перечисляет мой IP-адрес из DHCP, и я могу выполнить ping-сервер NFS

echo $netroot перечисляет параметры загрузки NFS nfs4:[Server IP]:[root location]:[nfs options]

mount -t nfs4 [Server IP]:[root location] /sysroot results: mount.nfs4: No such device (очень знакомого)

Результаты modprobe nfs : modprobe:FATAL: Module nfs not found явно проблемой

grep nfs /usr/lib/dracut/modules.txt соответствует

grep nfs /usr/lib/modules/[kernel version]/modules.order несколько раз упоминается: kernel/fs/nfs.ko | kernel/fs/nfsv3.ko | kernel/fs/nfsv4.ko kernel/fs/nfs.ko | kernel/fs/nfsv3.ko | kernel/fs/nfsv4.ko kernel/fs/nfs.ko | kernel/fs/nfsv3.ko | kernel/fs/nfsv4.ko однако ни один из них не существует

Окружающая среда: RHEL 7


Похоже, мой вопрос ответил сам, когда я закончил писать, я отправлю ответ

Последний шаг отладки, который я сделал, заставил меня войти, поэтому я решил, что отправлю ответ ради других. grep nfs /usr/lib/modules/[kernel version]/modules.order сопоставленное kernel/fs/nfs.ko | kernel/fs/nfsv3.ko | kernel/fs/nfsv4.ko kernel/fs/nfs.ko | kernel/fs/nfsv3.ko | kernel/fs/nfsv4.ko kernel/fs/nfs.ko | kernel/fs/nfsv3.ko | kernel/fs/nfsv4.ko , но их не было.

Ну *.ko представляет драйвер ядра, а initrd имеет опцию --add-drivers , поэтому

 dracut -v -m "nfs network base" --include rd.live.overlay/ / initrd-tmpfs.img 

стали:

 dracut -v -m "nfs network base" --add-drivers "nfs nfsv4" \ --include rd.live.overlay/ / initrd-tmpfs.img 

Тогда lsinitrd | grep nfs lsinitrd | grep nfs перечисленные nfs.ko и nfsv4.ko , корневое устройство стало nfsv4.ko , скопированным и счастливым, на сервере NFS загружен бездисковый сервер, имеющий каталог tmpfs / , отличный материал для бездискового кластера HA.

Разница между драйверами между моей тестовой средой и мишенью была бы результатом /etc/dracut.conf или /etc/dracut.conf.d/ , который может указывать драйверы, которые будут включены, но я не слишком много смотрел на них (Я бы скорее указал драйверы при запуске команды ради моего здравомыслия).