首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux无盘引导- NFS共享在ramdisk引导期间不挂载

Linux无盘引导- NFS共享在ramdisk引导期间不挂载
EN

Server Fault用户
提问于 2016-03-15 09:32:54
回答 1查看 4.4K关注 0票数 5

(这是我的第一篇文章,希望我能正确地格式化它)。我已经添加了尽可能多的信息,而不是TL:博士。

我的基本问题是,在尝试对NFS服务器(CentOS 6.7或CentOS 7)进行PXE无盘引导时,我碰到了一些问题。我尝试过各种各样的东西,但我似乎无法复制我最初使用CentOS7服务器和客户端所取得的成功。每次我跟着我的笔记走,我就一事无成。

我得到的最常见的错误(取决于我使用的initrd.img文件或initramfs*.img )是

代码语言:javascript
复制
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)

然后它超时,然后说

代码语言:javascript
复制
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映像位置时,会发生上述错误。

如果我试图从dracut生成一个新的initramfs图像文件,它也会引发上述错误。

代码语言:javascript
复制
dracut initramfsnew.img

可能是我不知道如何生成适当的initramfs,或者我真的不了解initrd.img和initramfs函数。我认为之所以会出现超时,是因为NFS驱动程序还没有在引导过程的那个阶段加载,因此客户机无法正确地挂载NFS共享。我认为这是因为我已经将完全相同的PXE客户端引导到它的本地操作系统中,并手动挂载NFS共享,并且它工作了100%,所以NFS共享是活动的,并且可以工作。我相信我对initrd.img和initramfs*.img的工作原理有错误的理解。

如果我从一个initrd.img镜像站点下载CentOS,我可以得到90%的路径,然后错误将更改为

代码语言:javascript
复制
No /sbin/init trying fallback

我现在处于一个(因为缺少一个更好的、半加载的) shell,它为我提供了NFS共享的基本导航。我可以访问/home/disklessuser/甚至写入NFS或从NFS读取新文件(服务器和客户端都测试了简单的“触摸”命令)。似乎缺少的主要是这个实例中的登录选项,以及目录的适当边界(即,在引导过程的此时,我似乎以root身份登录)。

基本配置是相当标准的AFAIK:

/var/lib/tftpboot/pxelinux.cfg/default包含(我省略了已知的工作位- PXE工作并指向正确的映像等):

代码语言:javascript
复制
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 (位于服务器的/boot/中的各种版本)替换initramfs3.10*.img,并尝试添加以下参数

代码语言:javascript
复制
ip=dhcp

因为dracut文档表明,这将告诉它从DHCP而不是PXE菜单中获取nfsroot路径。

目前,我的DHCP配置如下:

代码语言:javascript
复制
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";
}

这可能与PXE菜单中规定的NFS份额相冲突吗?

无论如何,我希望得到任何指导--也许对我来说,最有针对性的是如何处理initrd或initramfs。我猜想两者并没有太大的不同,但是如何生成一个应该(希望)包含基本网络驱动程序以允许NFS装入的新驱动程序呢?

其次,当我使用存储在/os/x86_64/isolinux下的initrd.img镜像目录时,为什么/sbin/init会丢失?

EN

回答 1

Server Fault用户

发布于 2019-04-28 16:56:55

根据您的信息,很难确定是什么导致了超时。以下几点建议:

  • 在禁用selinux的情况下启动系统,使用rd.brak输入initrd预引导。
  • 检查导致超时的原因。验证网络驱动程序是否已加载,dhcp分配是否有效。查看手动nfs挂载是否成功。尝试手动启动dev- the设备。
  • 根据各种文档(例如http://www.iram.fr/~blanchet/tutorials/diskless-centos-7.pdf )验证您的步骤
  • 试着充分理解启动过程和创建initramfs文件。

关于启动实例的几句话:

  • vmlinux/vmlinuz只包含带有驱动程序的内核映像。
  • initramfs包含一个基本根文件系统,它被完全加载到ram中。
  • 通常(在桌面和服务器系统上),initramfs的职责是准备内核(例如加载相关的内核驱动程序),挂载根文件系统(通常在rd.break之后真正的根fs将在rd.break中),然后将引导传递给真正的根文件系统。
  • 在这种情况下,我假设在准备内核时出了问题,似乎缺少了一些东西,或者在initramfs中找不到。最终,nfs驱动模块。
票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/763806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档