Ubuntu

使用 cifs 進行 pxebooting Linux Mint (live CD) 時,網路無法正確初始化,但可以使用 nfs

  • June 19, 2014

我在 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

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

請注意,我必須將ip=dhcp選項插入 CIFS 菜單。如果我不這樣做,初始化網路時啟動過程會掛起 120 秒,但隨後不會繼續。如果我添加該行,它仍然掛起,但 120 秒後它繼續啟動。

設置:

客戶端和伺服器虛擬機僅相互連接(內部網路)。網路中根本沒有其他機器。

伺服器有所有的 pxe 引導文件在/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

dhcpd.conf

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";
}

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

(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

這是使用 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

在成功啟動到桌面的情況下,分配給客戶端的 IPifconfig確實是...14.

這就是沒有:ip=dhcp

nodhcp1 nodhcp2

ip=dhcp這是, 在桌面顯示之前發生的情況:

成功

我很感謝任何想法。如果任何其他日誌(哪個?)會有所幫助,我可以提供它們。

這個問題已經被Serva解決了(我是Serva開發相關的)

可以在此處找到完整的核心和附加行以及 PXE 使用 CIFS 引導目前 Ubuntu/Mint 實時版本所需的額外 initrd.gz

基本上問題是一個 Casper 錯誤(AFAIK 以前從未報告/修復過),在 CIFS 網路掛載的情況下忘記導出核心參數,該參數稍後會影響網路配置腳本,最終會重新創建文件 /etc/network 的延遲和錯誤/介面。

如果我們看到 Serva 的 Ubuntu/Mint “追加”行

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

我們發現嵌入的“initrd”變數由 2 個“連續載入”的 initrd 文件(initrd.lz 和 INITRD_N11.GZ)組成

initrd=NWA_PXE/$HEAD_DIR$/casper/initrd.lz,NWA_PXE/$HEAD_DIR$/casper/INITRD_N11.GZ 

第一個 (initrd.lz) 是 Ubuntu/Mint 附帶的,而第二個 (INITRD_N11.GZ) 是一個微型 8K(最初由 Serva 開發)自定義 initrd,包括已修補的組件。這種方法避免了重新創建大的原始 initrd.lz (20 MB) 的需要。INITRD_N11.GZ 可以從 Serva 網站免費下載(請不要在此處發布直接連結)

如果我們繼續分析“附加”行,我們會看到需要添加 CIFS 安裝選項(OP 忘記了這一步),在這種情況下,這些選項由某種誤導性變數“NFSOPTS”攜帶

NFSOPTS=-ouser=serva,pass=avres,ro

在此範例中,SMB 共享有一個 user=serva 和 password=avres,它將被安裝為“只讀”,當然使用者/密碼參數必須相應地進行編輯。

TFTP 路徑和 CIFS 定位器是 Serva 儲存庫結構所需的;當 PXE 伺服器不是 Serva 時,必須相應地編輯這些參數。

如果你們 PXE 以這種方式從 CIFS 共享啟動 Ubuntu/Mint Live 版本,則不會出現與網路相關的延遲,並且 Internet/網路將在啟動後立即工作

編輯:

錯誤已報告給Ubuntu Launchpad並確認

引用自:https://serverfault.com/questions/605135