跳至內容跳至頁面導覽:上一頁 [access key p]/下一頁 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文件 / 部署指南 / 設定安裝伺服器 / 準備網路開機環境
適用範圍 SUSE Linux Enterprise Server 15 SP4

17 準備網路開機環境

本章介紹如何設定 DHCP 和 TFTP 伺服器,以提供所需的基礎架構來透過 PXE 開機。

可以透過開機前執行環境 (PXE) 安裝 SUSE® Linux Enterprise Server。用戶端硬體需支援透過 PXE 開機。網路需要提供 DHCP 伺服器和 TFTP 伺服器,以向用戶端提供所需的資料。本章將會引導您設定所需的伺服器。

PXE 只會將核心和 initrd 開機。可以使用此方法開機至安裝環境或線上系統。若要設定安裝來源,請參閱第 16 章 「設定網路安裝來源

本節內容會介紹各種複雜開機方式的組態任務。其中包含 DHCP、PXE 啟動、TFTP 和網路喚醒等現成的組態。

這些範例假設 DHCP、TFTP 和 NFS 伺服器都位於 IP 為 192.168.1.1 的同一部機器上。所有服務都可以位於不同的機器上,不會出現任何問題。請務必視需要變更 IP 位址。

17.1 設定 DHCP 伺服器

DHCP 伺服器為網路用戶端提供動態 (第 17.1.1 節 「動態位址指定」) 和靜態 IP 位址指定 (第 17.1.2 節 「指定靜態 IP 位址」)。它會通告伺服器、路由和網域。對於 TFTP 伺服器,DHCP 還提供核心和 initrd 檔案。需要載入哪些檔案取決於目標機器的架構,以及使用的是傳統 BIOS 還是 UEFI 開機方式。用戶端會在其 DHCP 要求中傳輸其架構類型。DHCP 伺服器根據此資訊確定必須下載哪些檔案用於開機。

警告
警告:PXE 和 AutoYaST 安裝失敗

從 SUSE Linux Enterprise 15.0 開始,某些特殊情況會導致 PXE 開機失敗以及 AutoYaST 安裝失敗。如需詳細資訊和解決方法,請參閱第 17.1.3 節 「PXE 和 AutoYaST 安裝失敗」

17.1.1 動態位址指定

以下範例顯示如何設定一個向用戶端動態指定 IP 位址,以及通告伺服器、路由器、網域和開機檔案的 DHCP 伺服器。

  1. root 身分登入代管 DHCP 伺服器的機器。

  2. 透過執行 systemctl enable dhcpd 啟用 DHCP 伺服器。

  3. 將以下幾行附加到 /etc/dhcpd.conf 下之 DHCP 伺服器組態檔案的子網路組態:

    # The following lines are optional
    option domain-name "my.lab";
    option domain-name-servers 192.168.1.1;
    option routers 192.168.1.1;
    option ntp-servers 192.168.1.1;
    ddns-update-style none;
    default-lease-time 3600;
    
    # The following lines are required
    option arch code 93 = unsigned integer 16; # RFC4578
    subnet 192.168.1.0 netmask 255.255.255.0 {
     next-server 192.168.1.1;
     range 192.168.1.100 192.168.1.199;
     default-lease-time 3600;
     max-lease-time 3600;
     if option arch = 00:07 or option arch = 00:09 {
       filename "/EFI/x86/grub.efi";
     }
     else if option arch = 00:0b {
       filename "/EFI/aarch64/bootaa64.efi";
     }
     else  {
       filename "/BIOS/x86/pxelinux.0";
     }
    }

    此組態範例在 IP 為 192.168.1.1 的伺服器上,使用包含 DHCP、DNS 和閘道的子網路 192.168.1.0/24。確定根據網路配置變更所有 IP 位址。如需更多 中可用選項的詳細資訊,請參閱 dhcpd.confdhcpd.conf man 頁面。

  4. 執行 systemctl restart dhcpd 重新啟動 DHCP 伺服器。

17.1.2 指定靜態 IP 位址

DHCP 伺服器還可以向網路用戶端指定靜態 IP 位址和主機名稱。一個使用案例是向伺服器指定靜態位址。另一個使用案例是僅限指定有靜態 IP 位址且不提供動態位址池的用戶端加入網路。

根據以下範例修改上述 DHCP 組態:

group {
 host test {
   hardware ethernet MAC_ADDRESS;
   fixed-address IP_ADDRESS;
   }
}

host 陳述式指定安裝目標的主機名稱。若要結合特定主機的主機名稱和 IP 位址,必須指定用戶端的硬體 (MAC) 位址。請以符合您環境的實際值取代此範例中使用的所有變數,然後儲存變更並重新啟動 DHCP 伺服器。

17.1.3 PXE 和 AutoYaST 安裝失敗

從 SUSE Linux Enterprise 15.0 和 ISC DHCP 4.3.x 開始,某些特殊情況會導致 PXE 開機失敗以及 AutoYaST 安裝失敗。如果您的 DHCP 伺服器沒有可用的動態 IP 位址池,只允許在每個用戶端上使用預先定義的靜態位址,並且用戶端傳送 RFC 4361 用戶端識別碼,那麼,PXE/AutoYaST 安裝將無法正常進行。(僅允許指定給特定網路用戶端的位址且不提供動態位址池,會防止隨機機器加入網路。)

當某個新系統在 PXE 中啟動時,它會使用依據硬體類型以及網路介面 MAC 位址建構的用戶端識別碼,將一個要求傳送至 DHCP 伺服器和識別碼本身。這是一個 RFC 2132 用戶端 ID。然後,DHCP 伺服器提供指定的 IP 位址。接下來載入安裝核心,並傳送另一個 DHCP 要求,但此用戶端 ID 不同,它是以 RFC 4361 格式傳送。DHCP 伺服器不會將此 ID 識別為相同用戶端,而是尋找一個可用的動態 IP 位址,但此位址不可用,因此安裝停止。

解決方法是將用戶端設定為傳送 RFC 2132 用戶端 ID。若要在安裝期間傳送 RFC 2132 用戶端 ID,請使用 linuxrc 傳遞以下 ifcfg 指令:

ifcfg=eth0=dhcp,DHCLIENT_CLIENT_ID=01:03:52:54:00:02:c2:67,
DHCLIENT6_CLIENT_ID=00:03:52:54:00:02:c2:67

傳統上在乙太網路中使用的 RFC 2132 DHCPv4 用戶端 ID 是依據硬體類型 (01 表示乙太網路) 後接硬體位址 (MAC 位址) 建構的,例如:

01:52:54:00:02:c2:67

在識別到某部機器包含多個網路介面時,RFC 4361 DHCPv4 用戶端 ID 會嘗試糾正問題。新 DHCPv4 用戶端 ID 的格式與 DHCPv6 用戶端 ID 相同。此 ID 以 0xff 字首 (而不是硬體類型) 開頭,後接 DHCPv6 IAID (描述機器上介面的介面位址關聯 ID),再後接用於唯一識別該機器的 DHCPv6 唯一識別碼 (DUID)。

如果使用上述以硬體類型和硬體位址為基礎的 DUID,新的 RFC 4361 DHCPv4 用戶端 ID 將是:

  • 將 MAC 位址的最後幾個位元組用做 IAID:ff:00:02:c2:67:00:01:xx:xx:xx:xx:52:54:00:02:c2:67

  • 當 IAID 是簡單的遞增編號時:ff:00:00:00:01:00:01:xx:xx:xx:xx:52:54:00:02:c2:67

DUID 鏈結層時間戳記 (DUID-LLT) 中的 xx:xx:xx:xx 欄位是建立時間戳記。DUID 鏈結層 (DUID-LL) (00:03:00:01:$MAC) 沒有時間戳記。

如需有關使用 linuxrc 的詳細資訊,請參閱《AutoYaST Guide》(AutoYaST 指南)。另請參閱 man 4 initrd,以及 man 5 wicked-configwicked duid --helpwicked iaid --help 中有關選項 dhcp4 "create-cid"dhcp6 "default-duid" 的文件。

17.2 設定 TFTP 伺服器

以下程序描述如何準備伺服器,以便能夠使用透過 TFTP 輸出的檔案,將採用 UEFI 和 BIOS 的用戶端機器遠端開機。

17.2.1 安裝 TFTP 伺服器

若要安裝 TFTP 伺服器,請執行以下程序:

  1. 安裝 tftp 套件。

    > sudo zypper in tftp
  2. 檢查 tftpd/etc/sysconfig/tftp 中的 組態,並視需要新增或變更選項。如需更多詳細資料,請參閱 man 8 tftpd。不需要變更組態,TFTP 精靈也可正常運作。檔案的預設根目錄為 /srv/tftpboot

  3. 確定 tftpd 在開機時已啟動,並重新啟動它以讀取新組態。

    > sudo systemctl enable tftp.socket
    > sudo systemctl restart tftp.socket

17.2.2 安裝開機所需的檔案

SUSE Linux Enterprise Server 提供在 BIOS 或 UEFI 機器上透過 PXE 開機所需的檔案。支援以下硬體架構:

  • AMD64/Intel 64

  • AArch64

  • POWER

  • IBM Z

從特定硬體架構開機所需的檔案已包含在某個 RPM 套件中。請在執行 TFTP 伺服器的機器上安裝此套件:

> sudo zypper in tftpboot-installation-SLE-OS_VERSION-ARCHITECTURE

請以 SUSE Linux Enterprise Server 安裝版本號碼 (例如 SLE-15-SP3-x86_64) 取代 OS_VERSION,並以系統架構 (例如 x86_64) 取代 ARCHITECTURE。因此,產生的文字如下所示:tftpboot-installation-SLE-15-SP3-x86_64。執行 zypper se tftpboot 來搜尋所有可用版本和架構。

檔案將安裝在 /srv/tftpboot/SLE-OS_VERSION-ARCHITECTURE 中。您也可以將 SUSE Linux Enterprise Server 的其他版本和架構的相應檔案複製到 /srv/tftpboot 目錄。

提示
提示:針對不同的架構進行處理

用戶端和伺服器硬體架構可能不同。例如,您可以透過安裝 tftpboot-installation-SLE-15-SP3-aarch64 套件執行 AMD64/Intel 64 TFTP 伺服器,並為 AArch64 用戶端機器提供可開機環境。

注意
注意:現有的 /srv/tftpboot/ 目錄

如果您的機器上已存在目錄 /srv/tftpboot/,則所有檔案將會安裝到 /usr/share/tftpboot-installation/。如果您正在從舊版 SLES 升級 PXE 伺服器,則會採用這種安裝方式。

若要修復此問題,請將 /usr/share/tftpboot-installation/ 中的檔案手動複製到 /srv/tftpboot/。或者,移除 /srv/tftpboot/ 並重新安裝 tftpboot-installation-SLE-OS_VERSION-ARCHITECTURE 套件。

17.2.3 設定 PXELINUX

在編輯器中開啟檔案 /srv/tftpboot/SLE-OS_VERSION-ARCHITECTURE/net/pxelinux.cfg/default。依據第 16 章 「設定網路安裝來源中所述的設定取代 install 參數的路徑。另外,請以 TFTP 伺服器的 IP 位址取代 TFTP_SERVER。如需 PXELINUX 組態選項的綜覽,請參閱第 17.3 節 「PXELINUX 組態選項」

default linux

# install
label linux
  ipappend 2
  kernel boot/ARCHITECTURE/loader/linux
  append initrd=boot/ARCHITECTURE/loader/initrd instsys=tftp://TFTP_SERVER/SLE-OS_VERSION-ARCHITECTURE/boot/ARCHITECTURE/root install=PROTOCOL://SERVER_IP:/PATH

display  message
implicit 1
prompt  1
timeout  50

如需 append 行中所用開機參數的詳細資料,請參閱第 7.3 節 「重要開機參數清單」

如有需要,請編輯 /srv/tftpboot/SLE-OS_VERSION-ARCHITECTURE/net/pxelinux.cfg/message,以在開機功能表中顯示訊息。

17.2.4 使用 GRUB2 為 EFI 準備 PXE 開機

通常不需要修改 GRUB2 組態檔案,但預設設定不包含安裝系統的網路資源。若要透過網路執行完整的 SUSE Linux Enterprise Server 安裝,需要在 /srv/tftpboot/SLE-OS_VERSION-ARCHITECTURE/EFI/BOOT/grub.cfg 檔案的 linuxefi 指令中指定 install 參數。如需 install 參數的更多資訊,請參閱第 7.3.3 節 「指定安裝來源」

17.3 PXELINUX 組態選項

此處列出的選項為 PXELINUX 組態檔案中所有可用選項的子集合。

APPEND OPTIONS

將一或多個選項新增至核心指令行。這些新增選項是用於自動和手動開機。新增選項會加在每個核心指令行的開頭位置,通常您只要明確輸入核心選項,便可覆寫這些選項。

APPEND -

不附加任何選項。在 LABEL 區段中做為引數且包含單一連字號的 APPEND,可以用來覆寫全域的 APPEND

DEFAULT KERNEL_OPTIONS...

設定預設的核心指令行。當 PXELINUX 是自動啟動,則該選項的作用相當於在啟動提示處輸入了在 DEFAULT 後輸入的所有內容 (表示自動啟動的 auto 選項除外,它是自動新增的)。

如果組態檔案不存在或其中未定義 DEFAULT 項目,則預設使用不帶任何選項的核心名稱linux

IFAPPEND 旗標

根據旗標值將特定選項新增至核心指令行。IFAPPEND 選項僅適用於 PXELINUX。旗標需要一個值,如表格 17.1 「透過 IFAPPEND 產生和新增的核心指令行選項」 中所述。

表 17.1︰ 透過 IFAPPEND 產生和新增的核心指令行選項

引數

產生的核心指令行/描述

1

ip=CLIENT_IP:BOOT_SERVER_IP:GW_IP:NETMASK

預留位置根據 DHCP/BOOTP 或 PXE 開機伺服器中的輸入加以取代。

請注意,此選項並非在已開機系統中執行 DHCP 用戶端的替代項。如果不進行定期更新,PXE BIOS 取得的租用將會過期,使得該 IP 位址可供 DHCP 伺服器重複使用。

2

BOOTIF=MAC_ADDRESS_OF_BOOT_INTERFACE

當安裝伺服器在收到 DHCP 伺服器的回覆前逐個查探 LAN 介面時,此選項可用於避免逾時。使用此選項可讓 initrd 程式決定系統是從哪個介面開機的。linuxrc 會讀取此選項並使用此網路介面。

4

SYSUUID=SYSTEM_UUID

新增採用小寫十六進位的 UUID,請參閱 /usr/share/doc/packages/syslinux/pxelinux.txt

LABEL LABEL KERNEL IMAGE APPEND OPTIONS...

指示如果輸入了 LABEL 做為要開機的核心,則 PXELINUX 應改為將 IMAGE 開機,並且應使用指定的 APPEND 選項。這些值會取代檔案的 global 區段中第一條 LABEL 指令前面指定的值。IMAGE 的預設值與 LABEL 的相同,如果未指定 APPEND,則預設會使用 global 項目 (如果有)。您最多可輸入 128 個 LABEL 項目。

PXELINUX 使用以下語法:

label MYLABEL
  kernel MYKERNEL
  append MYOPTIONS

系統會將標籤當成檔案名稱一樣截斷,截斷後,它們必須是唯一的。舉例來說,v2.6.30v2.6.31 這兩個標籤在 PXELINUX 中將無法區分,因為它們都會截斷成相同的 DOS 檔案名稱。

該核心不必是 Linux 核心。它也可以是開機磁區或 COMBOOT 檔案。

LOCALBOOT TYPE

在 PXELINUX 上,指定 LOCALBOOT 0 而不指定 KERNEL 選項,表示要呼叫此特定標籤;而且最後要使用本地磁碟開機,而不使用核心開機。

引數

描述

0

執行正常開機

4

使用仍常駐在記憶體中的「通用網路驅動程式介面」(Universal Network Driver Interface, UNDI) 執行本地開機。

5

使用仍常駐在記憶體中完整的 PXE 堆疊 (包括 UNDI 驅動程式) 執行本地開機。

其他所有值都未定義。如果您對 UNDI 或 PXE 堆疊不甚瞭解,請指定 0

TIMEOUT TIME-OUT

指示在開機提示等待自動開機的時間長度,單位為 1/10 秒。若使用者在鍵盤上按下任何一個鍵,就會取消逾時,前提是假設使用者會完成已開始的指令。如果逾時時間設為 0,則會完全停用逾時功能 (此設定值亦為預設值)。可能的最大逾時值為 35996 (小於一小時)。

PROMPT flag_val

如果 flag_val 為 0,只有在按下 ShiftAlt,或者已設定 Caps LockScroll Lock 時才會顯示開機提示 (此設定值為預設值)。如果 flag_val 為 1,則永遠會顯示開機提示。

F2  FILENAME
F1  FILENAME
..etc..
F9  FILENAME
F10 FILENAME

可在開機提示下按下功能鍵時,於螢幕畫面上顯示指定的檔案。這可用來執行開機前線上說明 (可能是針對核心指令行選項)。如果是使用較早版本的反向相容,F10 也可以當作 F0 輸入。請注意,目前還無法將檔案名稱繫結至 F11F12

17.4 為 PXE 開機準備目標系統

請在 BIOS 開機順序中包含 PXE 選項,以便準備 PXE 開機的系統 BIOS。

警告
警告:BIOS 開機順序

在 BIOS 中,請勿將 PXE 選項置於硬碟開機參數之前。否則,此系統會在您每次開機時嘗試重新安裝系統。

17.5 使用網路喚醒進行遠端喚醒

網路喚醒 (WOL) 是一種乙太網路標準,可透過網路向某部電腦傳送喚醒訊號,以從遠端將其喚醒。此訊號稱為魔術封包。請在要啟用遠端喚醒的用戶端機器上,以及要用於傳送喚醒訊號的每部機器上安裝 WOL。透過 UDP 連接埠 9 將魔術封包廣播到用戶端機器上網路介面的 MAC 位址。

當電腦關機時,它們通常不會徹底關閉,而是保持在低電量模式。如果網路介面支援 WOL,則會在機器處於關閉狀態時監聽魔術封包喚醒訊號。您可以手動方式傳送魔術封包,或者在傳送方機器上的 cron 工作中排程喚醒。

17.5.1 先決條件

WOL 與支援 WOL 的有線和無線乙太網路卡均可配合使用。

您可能需要在系統 BIOS/UEFI 中啟用 WOL。

檢查用於 PXE 開機的 BIOS/UEFI 設定,並確定已停用該設定,以防止意外重新安裝。

調整防火牆,以允許在 UDP 連接埠 9 上傳輸流量。

17.5.2 驗證有線乙太網路支援

執行以下指令,以確定有線乙太網路介面是否支援 WOL:

> sudo ethtool eth0 | grep -i wake-on
Supports Wake-on: pumbg
Wake-on: g

範例輸出顯示 eth0 支援 WOL,這可依據 Supports Wake-on 行中的 g 旗標確定。Wake-on: g 表示 WOL 已啟用,因此此介面已準備好接收喚醒訊號。如果 WOL 未啟用,請使用以下指令將其啟用:

> sudo ethtool -s eth0 wol g

17.5.3 驗證無線介面支援

透過 WiFi 網路喚醒 (或 WoWLAN) 需要使用支援 WoWLAN 的無線網路介面。使用 iw 指令可測試該功能,該指令由 iw 套件提供:

> sudo zypper in iw

確定您的裝置名稱:

> sudo iw dev
phy#0
        Interface wlan2
                ifindex 3
                wdev 0x1
                addr 9c:ef:d5:fe:01:7c
                ssid accesspoint
                type managed
                channel 11 (2462 MHz), width: 20 MHz, center1: 2462 MHz
                txpower 20.00 dBm

在此範例中,用於查詢 WoWLAN 支援的裝置名稱是 phy#0。此範例顯示此裝置不支援該功能:

> sudo iw phy#0 wowlan show
command failed: Operation not supported (-95)

此範例顯示一個介面支援 WoWLAN,但未處於啟用狀態:

> sudo iw phy#0 wowlan show
WoWLAN is disabled

將其啟用:

> sudo iw phy#0 wowlan enable magic-packet
WoWLAN is enabled:
* wake up on magic packet

17.5.4 安裝和測試 WOL

若要使用 WOL,請在用戶端和傳送方機器上安裝 wol 套件:

> sudo zypper in wol

在用戶端機器上安裝 wol-udev-rules。此套件會安裝一條 udev 規則,該規則會在系統啟動時自動啟用 WOL。

獲取用戶端機器上網路介面的 MAC 位址:

> sudo ip addr show eth0|grep ether
link/ether 7c:ef:a5:fe:06:7c brd ff:ff:ff:ff:ff:ff

在範例輸出中,7c:ef:a5:fe:06:7c 是 MAC 位址。

將用戶端機器關機,並從同一子網路中的另一部電腦向其傳送喚醒訊號:

> wol 7c:ef:a5:fe:06:7c

如果您的目標機器與第二部裝置位於同一網路中,但在不同的子網路中,請指定目標機器的廣播位址:

> wol -i 192.168.0.63 7c:ef:a5:fe:06:7c

由於 WOL 相依於廣播網域,因此儘管傳送方機器可以在不同的網路區段中,但兩部機器必須位於同一網路中。

可以從不同的網路傳送魔術封包。一種方法是使用連接埠轉遞 (如果您的路由器支援連接埠轉遞至廣播位址)。更安全的方法是透過 SSH 連接至您網路內的某部主機,然後從該主機傳送魔術封包。