使用 cifs pxebooting Linux Mint(live CD)时,网络无法正确初始化,但可与 nfs 一起使用

dia*_*ler 9 networking ubuntu cifs pxe-boot linuxmint

我在 192.168.26.1 上有一个 TFTP/DHCP/NFS/SMB 服务器(Ubuntu 服务器 12.04 LTS)。我使用 pxelinux 来显示一个菜单,其中包含 Windows、Ubuntu 网络安装程序和 Linux Mint 17 MATE live CD 的启动和安装选项。让它像这样运行已经很讨厌了,我已经筋疲力尽了......

对于 Linux Mint,我提供了 2 个网络引导选项:NFS 和 CIFS。我让它与 NFS 完全兼容:用户可以在启动菜单中选择它,不久之后,它就会登陆 Linux Mint live CD 桌面。但是使用 CIFS,网络无法正确初始化。当 Linux Mint 启动时,网络会挂起 120 秒。然后,它继续引导到桌面,但 netnetwork-manager没有启动(也没有启动)。我怀疑可能是 DHCP 服务器没有响应的问题,但是,在 DHCP 服务器日志中,我可以看到 DHCP 请求和成功响应。

进入 Linux Mint 桌面后,ifconfig报告 DHCP 分配的 IP 地址,然后 ping 服务器即可。

我的 pxelinux 配置是(之后的所有内容APPEND都在一行中,我只是将其拆分以便在本网站上易于阅读):

NFS:

LABEL linuxmint17
    MENU LABEL Linux Mint 17
    KERNEL linux-mint-17/image/casper/vmlinuz
    APPEND 
        root=/dev/nfs boot=casper netboot=nfs
        nfsroot=192.168.26.1:/var/lib/tftpboot/linux-mint-17/image
        initrd=/linux-mint-17/image/casper/initrd.lz
Run Code Online (Sandbox Code Playgroud)

CIFS:

LABEL linuxmint17smb
    MENU LABEL Linux Mint 17 (SMB)
    KERNEL linux-mint-17/image/casper/vmlinuz
    APPEND
        root=/dev/cifs boot=casper netboot=cifs
        nfsroot=//192.168.26.1/tftpshare/linux-mint-17/image
        ip=dhcp
        initrd=/linux-mint-17/image/casper/initrd.lz
Run Code Online (Sandbox Code Playgroud)

请注意,我必须将ip=dhcp选项插入CIFS 菜单。如果我不这样做,初始化网络时启动过程会挂起 120 秒,但随后不会继续。如果我添加该行,它仍会挂起,但 120 秒后它会继续启动。

设置:

客户端和服务器虚拟机仅相互连接(内部网络)。网络中根本没有其他机器。

服务器在/var/lib/tftpboot/. Linux Mint ISO(未修改)安装在/var/lib/tftpboot/linux-mint-17/image. vmlinuz并且initrd/var/lib/tftpboot/linux-mint-17/image/casper. /var/lib/tftpboot/是 NFS 导出。有一个称为tftpshare映射到的 samba 共享/var/lib/tftpboot/(只读,允许所有人访问)。

配置文件

[tftpshare]
   comment = TFTP Root
   path = /var/lib/tftpboot
   browsable = yes
   guest ok = yes
   read only = no
   create mask = 0644
Run Code Online (Sandbox Code Playgroud)

配置文件

authoritative;
subnet 192.168.26.0 netmask 255.255.255.0 {
  range 192.168.26.10 192.168.26.40;
  next-server 192.168.26.1;
  filename "pxelinux.0";
}
Run Code Online (Sandbox Code Playgroud)

syslog成功启动到实时桌面环境后,客户端计算机出现了奇怪的 2 分钟间隔:

Jun 14 13:13:18 mint kernel: [   23.388873] intel_rapl: domain core energy ctr 0:0 not working, skip
Jun 14 13:13:18 mint kernel: [   23.528409] intel_rapl: domain uncore energy ctr 0:0 not working, skip
Jun 14 13:13:18 mint kernel: [   23.528453] intel_rapl: no valid rapl domains found in package 0
Jun 14 13:13:20 mint ntpdate[1198]: Can't find host ntp.ubuntu.com: Name or service not known (-2)
Jun 14 13:13:20 mint ntpdate[1198]: no servers can be used, exiting
Run Code Online (Sandbox Code Playgroud)

(2分钟没有任何条目,大致在120秒启动延迟发生的时间)

Jun 14 13:15:19 mint dbus[864]: [system] Activating service name='org.freedesktop.ConsoleKit' (using servicehelper)
Jun 14 13:15:19 mint dbus[864]: [system] Activating service name='org.freedesktop.PolicyKit1' (using servicehelper)
Jun 14 13:15:19 mint acpid: starting up with netlink and the input layer
Jun 14 13:15:19 mint acpid: 9 rules loaded
Jun 14 13:15:19 mint acpid: waiting for events: event logging is off
Run Code Online (Sandbox Code Playgroud)

这就是使用 CIFS 时在两种情况下都会发生的情况:

挂起

在服务器上:

...
Jun 14 13:12:52 ubuntu-netboot in.tftpd[2722]: RRQ from 192.168.26.13 filename /linux-mint-17/image/casper/initrd.lz
Jun 14 13:13:14 ubuntu-netboot dhcpd: DHCPDISCOVER from 08:00:27:1c:c5:43 via eth1
Jun 14 13:13:14 ubuntu-netboot dhcpd: DHCPOFFER on 192.168.26.14 to 08:00:27:1c:c5:43 via eth1
Jun 14 13:13:14 ubuntu-netboot dhcpd: DHCPREQUEST for 192.168.26.14 (192.168.26.1) from 08:00:27:1c:c5:43 via eth1
Jun 14 13:13:14 ubuntu-netboot dhcpd: DHCPACK on 192.168.26.14 to 08:00:27:1c:c5:43 via eth1
Run Code Online (Sandbox Code Playgroud)

根据 ,在成功启动到桌面的情况下分配给客户端的 IPifconfig确实是...14.

这是没有的情况ip=dhcp

nodhcp1 nodhcp2

这是ip=dhcp, 在桌面显示之前发生的情况:

成功

我很感激任何想法。如果任何其他日志(哪些?)有帮助,我可以提供它们。

Pat*_*Pat 3

这个问题已经被Serva解决了(我是Serva开发相关的)

完整的内核和附加行以及使用 CIFS PXE 引导当前 Ubuntu/Mint live 版本所需的附加 initrd.gz 可以在此处找到

基本上,问题是 Casper 错误(据我所知以前从未报告/修复),在 CIFS netmount 的情况下,忘记导出内核参数,该参数稍后会影响网络配置脚本,最终导致重新创建文件 /etc/network 时出现延迟和错误/接口。

如果我们看到 Serva 的 Ubuntu/Mint“append”行

append   = showmounts toram root=/dev/cifs initrd=NWA_PXE/$HEAD_DIR$/casper/initrd.lz,NWA_PXE/$HEAD_DIR$/casper/INITRD_N11.GZ boot=casper netboot=cifs nfsroot=//$IP_BSRV$/NWA_PXE_SHARE/$HEAD_DIR$ NFSOPTS=-ouser=serva,pass=avres,ro ip=dhcp ro
Run Code Online (Sandbox Code Playgroud)

我们发现嵌入的“initrd”变量由2个“连续加载”的initrd文件(initrd.lz和INITRD_N11.GZ)组成

initrd=NWA_PXE/$HEAD_DIR$/casper/initrd.lz,NWA_PXE/$HEAD_DIR$/casper/INITRD_N11.GZ 
Run Code Online (Sandbox Code Playgroud)

第一个 (initrd.lz) 是 Ubuntu/Mint 附带的,而第二个 (INITRD_N11.GZ) 是一个小型 8K(最初由 Serva 开发)自定义 initrd,包括修补的组件。这种方法避免了重新创建大的原始 initrd.lz (20 MB) 的需要。INITRD_N11.GZ 可以从 Serva 的网站免费下载(请不要在此处发布直接链接)

如果我们继续分析“append”行,我们会发现需要添加 CIFS 安装选项(OP 忘记了此步骤),在这种情况下,这些选项由某种误导性变量“NFSOPTS”携带

NFSOPTS=-ouser=serva,pass=avres,ro
Run Code Online (Sandbox Code Playgroud)

在此示例中,SMB 共享有一个 user=serva,密码=avres,它将被安装为“只读”,当然用户/密码参数必须进行相应的编辑。

TFTP 路径和 CIFS 定位器是 Serva 存储库结构所需的;当 PXE 服务器不是 Serva 时,必须相应地编辑这些参数。

如果你们以 PXE 方式从 CIFS 共享的 Ubuntu/Mint Live 版本启动,则不会出现与网络相关的延迟,并且互联网/网络将在启动后立即工作

编辑:

Bug 已报告给Ubuntu Launchpad并得到确认