Bra*_*tex 5 initramfs pxe-boot
(这是我的第一篇文章,所以希望我的格式正确)。我已经添加了尽可能多的信息,但又不至于太长:太长了。
我的基本问题是,在尝试对 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)
Run Code Online (Sandbox Code Playgroud)
然后它超时并说
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
Run Code Online (Sandbox Code Playgroud)
当我将(任何)initramfs-3.10.*.img 从 /boot/ 复制到 PXE 映像位置时,会发生上述错误。
如果我尝试从 dracut 生成新的 initramfs 映像文件,它也会引发上述错误。
dracut initramfsnew.img
Run Code Online (Sandbox Code Playgroud)
可能是我不知道如何生成正确的 initramfs,或者我真的不理解 initrd.img 和 initramfs 函数。我认为发生超时是因为在启动过程的该阶段尚未加载 NFS 驱动程序,因此客户端无法正确挂载 NFS 共享。我认为这是因为我已将完全相同的 PXE 客户端启动到其本地操作系统并手动安装 NFS 共享,并且它 100% 工作,因此 NFS 共享处于活动状态并且可以工作。我相信我对 initrd.img 和 initramfs*.img 的工作原理有错误的理解。
如果我从 CentOS 镜像站点下载 initrd.img,则完成 90%,然后错误变为
No /sbin/init trying fallback
Run Code Online (Sandbox Code Playgroud)
我现在处于一个(没有更好的术语,半加载的)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
Run Code Online (Sandbox Code Playgroud)
我尝试过上述的变体,例如用 initramfs3.10*.img 替换 initrd.img (位于服务器的 /boot/ 中的各种版本),并尝试添加参数,例如
ip=dhcp
Run Code Online (Sandbox Code Playgroud)
因为 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";
}
Run Code Online (Sandbox Code Playgroud)
这可能与 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
Run Code Online (Sandbox Code Playgroud)
来源塞瓦
如果确实需要,您可以轻松地将其更改为 NFS
| 归档时间: |
|
| 查看次数: |
4781 次 |
| 最近记录: |