Linux无盘启动 – 在ramdisk启动过程中,NFS共享没有挂载

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

我的基本问题是,当尝试对NFS服务器(CentOS 6.7或CentOS 7)进行PXE无盘启动时,我遇到了困难。 我尝试了各种各样的东西,似乎无法复制我最初与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映像位置。

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

 dracut initramfsnew.img 

这可能是我不知道如何生成一个合适的initramfs,或者我真的不理解initrd.img和initramfs函数。 我相信超时正在发生,因为在启动过程的这个阶段NFS驱动程序尚未加载,因此客户端无法正确安装NFS共享。 我认为这是因为我已经启动完全相同的PXE客户端到本地操作系统,并手动挂载NFS共享,并且它工作100%,所以NFS共享是活动的,并且工作。 我相信我对initrd.img和initramfs * .img的工作原理有错误的理解。

如果我从一个CentOS镜像站点下载initrd.img,我得到90%的path,然后错误改变

 No /sbin/init trying fallback 

我现在在一个(为了一个更好的术语,半加载)shell,给我的NFS共享的基本导航。 我可以到/ home / disklessuser /甚至写入NFS或从NFS读取新文件(在服务器和客户机上testing简单的“touch”命令)。 什么似乎缺less,主要是在这种情况下的login选项,以及目录的适当边界(即我似乎在启动此时以root身份login)。

基本configuration是相当标准的AFAIK:

/var/lib/tftpboot/pxelinux.cfg/default包含(我省略了我知道的那些工作 – 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 

我已经尝试过上述的变体,比如用initramfs3.10 * .img(位于服务器的/ boot /中的各种版本)replaceinitrd.img,并尝试添加参数

 ip=dhcp 

因为dracut文档build议这将告诉它从DHCP而不是PXE菜单获取nfsrootpath。

我目前有我的DHCPconfiguration如下:

 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做些什么。 我认为这两者并没有什么不同,但是如何产生一个新的应该(希望)包括基本的networking驱动程序,以允许NFS挂载?

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

您可以使用HTML而不是NFS来启动CentOS-7.0-1406-x86_64-DVD.iso

 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