pxe-boot – Linux无盘启动 – 在ramdisk启动期间不挂载NFS共享

前端之家收集整理的这篇文章主要介绍了pxe-boot – 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

当我将/ boot /中的initramfs-3.10.*.img(任何一个)复制到PXE映像位置时,会发生上述错误.

如果我尝试从dracut生成新的initramfs图像文件,它也会抛出上述错误.

dracut initramfsnew.img

可能是我要么不知道如何生成正确的initramfs,要么我真的不理解initrd.img和initramfs函数.我相信超时正在发生,因为NFS驱动程序尚未在引导过程的那个阶段加载,因此客户端无法正确挂载NFS共享.我认为这是因为我已经将完全相同的PXE客户端启动到其本地操作系统并手动挂载NFS共享并且它可以100%工作,因此NFS共享处于活动状态,并且可以工作.我相信我对initrd.img和initramfs * .img的工作方式有错误的理解.

如果我从CentOS镜像站点下载initrd.img,我会在那里获得90%的错误然后错误更改为

No /sbin/init trying fallback

我现在处于一个(因为想要一个更好的术语,半载)shell,它给了我NFS共享的基本导航.我可以转到/ home / disklessuser /甚至写入NFS或从NFS读取新文件(在服务器和客户端上测试简单的’touch’命令).看起来似乎缺少的是这个实例中的登录选项,以及目录的正确边界(即,我似乎在启动的这一点上以root用户身份登录).

基本配置是非常标准的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替换initrd.img(位于服务器的/ boot /中的各种版本),并尝试添加

ip=dhcp

因为dracut文档建议这将告诉它从DHCP而不是PXE菜单获取nfsroot路径.

我目前已将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";
}

可能这与PXE菜单中规定的NFS共享相冲突?

无论如何,我会感谢任何指导 – 也许对我来说最有针对性的是如何处理initrd或initramfs.我认为两者并没有太大的不同,但是如何产生一个新的应该(希望)包括允许NFS挂载的基本网络驱动程序?

其次,当我使用存储在/ os / x86_64 / isolinux下的CentOS镜像目录中的initrd.img时,当我接近解决方案时,为什么/ 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

猜你在找的Linux相关文章