4.3 準備啟動目標系統

本節內容會介紹各種複雜開機方式的組態工作。 其中包含 DHCP、PXE 啟動、TFTP 和網路喚醒等準備應用的組態。

4.3.1 設定 DHCP 伺服器

有兩種方法可設定 DHCP 伺服器。 YaST 為 SUSE Linux Enterprise Server 9 和更新版本提供圖形介面,來處理這項工作。至於其他任何 SUSE Linux 產品的使用者和非 SUSE Linux 使用者,則應該手動編輯組態檔案,或使用作業系統廠商所提供的前端工具。

重要:下面幾節內容僅包含使 DHCP 伺服器可進行 PXE 開機時所需要的組態變更。 如需有關 DHCP 設定的詳細資訊,請另外參閱作業系統供應商的手冊。

使用 YaST 設定 DHCP 伺服器

若要對網路用戶端宣告 TFTP 伺服器的位置,並指定安裝目標應使用的開機影像檔案,請在您的 DHCP 伺服器組態中新增兩個宣告。

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

  2. 啟動YaST > 網路服務 > DHCP 伺服器

  3. 完成基本 DHCP 伺服器設定的設定精靈。

  4. 選取進階設定,並在出現即將離開啟動對話方塊的警告時,選取

  5. 設定的宣告對話方塊中,選取新系統所在位置的子網路,並按一下編輯

  6. 子網路組態對話方塊中,選取新增將新選項新增到子網路的組態中。

  7. 選取 filename,並輸入 pxelinux.0 做為值。

  8. 新增另一個選項 (next-server),將它的值設為 TFTP 伺服器的位址。

  9. 選取確定完成以完成 DHCP 伺服器組態。

若要將 DHCP 設定成為特定主機提供靜態 IP 位址,請進入 DHCP 伺服器組態模組 (步驟 4) 的進階設定,並新增主機類型的新宣告。在這個主機宣告中新增 hardwarefixed-address 選項,並提供適當的值。

手動設定 DHCP 伺服器

除了提供您網路用戶端自動位址配置,DHCP 伺服器需要執行的所有工作就是宣告 TFTP 伺服器的 IP 位址,以及宣告目標機器上安裝常式應使用的檔案。

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

  2. 將下面幾行附加到 /etc/dhcpd.conf 下的 DHCP 伺服器組態檔案:

    group { 
      # PXE related stuff 
      # 
      # "next server" defines the tftp server that will be used 
      next server ip_tftp_server: 
      #
      # "filename" specifies the pxelinux image on the tftp server
      # the server runs in chroot under /srv/tftpboot 
      filename  "pxelinux.0";
    }

    ip_of_the_tftp_server 取代成 TFTP 伺服器的實際 IP 位置。 如需更多 dhcpd.conf 中可用選項的詳細資訊,請參閱 dhcpd.conf man 頁面。

  3. 執行 rcdhcpd restart 重新啟動 DHCP 伺服器。

如果您計畫使用 SSH 來遠端控制 PXE 和網路喚醒功能安裝,請明確指定 DHCP 應提供給安裝目標的 IP 位址。 若要完成這項工作,請根據以下範例修改上述 DHCP 組態:

 
group { 
  # PXE related stuff 
  # 
  # "next server" defines the tftp server that will be used 
  next server ip_tftp_server:
  # 
  # "filename" specifies the pxelinux image on the tftp server 
  # the server runs in chroot under /srv/tftpboot
  filename "pxelinux.0";
  host test { hardware ethernet mac_address; 
              fixed-address some_ip_address; }
       }

這項主機陳述式將引入安裝目標的主機名稱。 若要結合特定主機的主機名稱和 IP 位址,您必須了解並指定系統的硬體 (MAC) 位址。 將此範例中的所有變數取代成符合您環境的實際值。

重新啟動 DHCP 伺服器之後,它將向所指定的主機提供一個靜態 IP,從而使您能夠透過 SSH 連線到該系統。

4.3.2 設定 TFTP 伺服器

請使用 YaST 在 SUSE Linux Enterprise Server 和 SUSE Linux Enterprise 上設定 TFTP 伺服器,或以手動方式在任何支援 xinetd 和 tftp 的 Linux 作業系統上設定 TFTP 伺服器。每當目標系統開機時,TFTP 伺服器即會傳送開機影像至目標系統,並傳送對目標系統的要求。

使用 YaST 設定 TFTP 伺服器

  1. root 的身分登入。

  2. 啟動YaST > 網路服務 > TFTP 伺服器,並安裝所需套件。

  3. 按一下啟用,確定伺服器已經啟動,並已包含至開機常式。 為安全起見,xinetd 在開機時啟動 tftpd 時,您不需執行任何動作。

  4. 按一下開啟防火牆中的連接埠,開啟在您機器上運作中防火牆的適當連接埠。 如果您的伺服器上沒有執行任何防火牆,就無法使用此選項。

  5. 按一下瀏覽,瀏覽開機影像目錄。 這時系統會建立預設目錄為 /tftpboot,而且會自動選取。

  6. 按一下完成便可套用您的設定,並啟動伺服器。

手動設定 TFTP 伺服器

  1. root 身分登入,並安裝 tftpxinetd 套件。

  2. 若無法安裝,請建立 /srv/tftpboot/srv/tftpboot/pxelinux.cfg 目錄。

  3. 接著,請加入開機影像需要的正確檔案,詳細步驟說明請參閱節 4.3.3, 使用 PXE 開機

  4. 修改位於 /etc/xinetd.d/ 下的 xinetd 組態,以確保開機時會啟動 TFTP 伺服器:

    1. 如果 xinetd 不存在,請使用 touch tftp,在此目錄下建立一個名為 tftp 的檔案。 接著執行 chmod 755 tftp

    2. 開啟檔案 tftp,並新增以下內容:

      service tftp 
      { 
              socket_type            = dgram
              protocol               = udp 
              wait                   = yes 
              user                   = root 
              server                 = /usr/sbin/in.tftpd 
              server_args            = -s /srv/tftpboot 
              disable                = no 
      }
      
    3. 儲存檔案,並使用 rcxinetd restart 重新啟動 xinetd。

4.3.3 使用 PXE 開機

如需取得一些技術背景資訊和 PXE 的完整規格,請參閱「開機前執行環境 (Preboot Execution Environment, PXE) 規格」 (http://www.pix.net/software/pxeboot/archive/pxespec.pdf)。

  1. 輸入以下指令,以變更安裝儲存區的目錄,並將 linuxinitrdmessagememtest 檔案複製到 /srv/tftpboot 目錄:

    cp -a boot/loader/linux boot/loader/initrd 
          boot/loader/message boot/loader/memtest /srv/tftpboot
  2. 請使用 YaST 直接從您的安裝 CD 或 DVD 安裝 syslinux 套件。

  3. 輸入以下指令,將 /usr/share/syslinux/pxelinux.0 檔案複製到 /srv/tftpboot 目錄:

    cp -a /usr/share/syslinux/pxelinux.0 /srv/tftpboot
         
  4. 輸入以下指令,切換至安裝儲存區的目錄,並將 isolinux.cfg 檔案複製到 /srv/tftpboot/pxelinux.cfg/default

    cp -a boot/loader/isolinux.cfg /srv/tftpboot/pxelinux.cfg/default
         
  5. 編輯 /srv/tftpboot/pxelinux.cfg/default 檔案,並移除開頭為 gfxbootreadinfoframebuffer 等行文字。

  6. 接著,在預設的 failsafeapic 標籤附加行中,插入下面項目:

    insmod=kernel module

    插入這個項目之後,便可輸入 PXE 用戶端上支援網路安裝所需的網路核心模組。 以網路設備適當的模組名稱取代 kernel module

    netdevice=interface

    這個項目可定義網路安裝時必須使用的用戶端網路介面。 只有當用戶端配有數張網路卡時才必須插入這個項目,而且必須視情況修改項目內容。 如果只有使用一張網路卡,就可以省略這個項目。

    install=nfs://ip_instserver/path_instsource/CD1

    這個項目可定義用戶端安裝時所適用的 NFS 伺服器和安裝來源。 將 ip_instserver 取代成安裝伺服器的實際 IP 位址;而 path_instsource 應該要取代成安裝來源的實際路徑。 HTTP、FTP 或 SMB 來源皆以類似方法指定位址,除了其通訊協定字首 httpftpsmb 等差異。

    重要:如果您需要傳送其他開機選項給安裝來源,例如 SSH 或 VNC 開機參數,那麼請將這些參數附加到 install 項目。您可以參考 節 4.4, 啟動要安裝的目標系統,以取得參數概觀和一些範例。.

    以下將介紹 /srv/tftpboot/pxelinux.cfg/default 範例檔案。 調整安裝來源的通訊協定字首以符合您的網路設定,接著將 vncvncpasswordusesshsshpassword 選項新增到 install 輸入內容,以指定連接到安裝程式的方式。這幾行內容會以 \ 分隔,而且應該是連續一行,中間不可間斷,也不能使用 \

    default linux 
            
    # default 
    label linux 
      kernel linux 
    	    append initrd=initrd ramdisk_size=65536 insmod=e100 \
    	    install=nfs://ip_instserver/path_instsource/product/CD1 
    	    
    # failsafe 
    label failsafe 
      kernel linux 
      append initrd=initrd ramdisk_size=65536 ide=nodma apm=off acpi=off \
      insmod=e100 install=nfs://ip_instserver/path_instsource/product/CD1
    
    # apic 
    label apic 
      kernel linux 
      append initrd=initrd ramdisk_size=65536 apic insmod=e100 \
      install=nfs://ip_instserver/path_instsource/product/CD1
    
    # manual 
    label manual 
      kernel linux 
      append initrd=initrd ramdisk_size=65536 manual=1 
    
    # rescue 
    label rescue 
      kernel linux 
      append initrd=initrd ramdisk_size=65536 rescue=1 
    
    #  memory test 
    label memtest 
      kernel memtest 
    
    # hard disk 
    label harddisk 
      kernel 
      linux append SLX=0x202 
    
    implicit     0 
    display      message
    prompt       1 
    timeout      100
    

    ip_instserverpath_instsource 取代成在您設定中所使用的值。

    下節內容可作為此設定中所使用的 PXELINUX 選項的簡短參考。 如需更多可用選項的資訊,請參閱 /usr/share/doc/packages/syslinux/ 中的 syslinux 套件說明文件。

4.3.4 PXELINUX 組態選項

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

DEFAULT kernel options...

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

如果目前沒有任何組態檔案,或是組態檔案中沒有任何 DEFAULT 項目,那麼預設值會是不包含任何選項的核心名稱 linux

APPEND options...

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

LABEL label KERNEL image APPEND options...

指示是否要將輸入的 label 當作開機核心,或是 PXELINUX 應該要開機 image;以及是否要使用指定 APPEND 選項,而不是使用該檔案全域區段中的指定選項 (在第一個 LABEL 指令前)。 image 的預設值與 label 相同,而且如果沒有指定 APPEND,就會預設使用全域項目 (如果有的話)。 您最多可輸入 128 個 LABEL 項目。

請注意,GRUB 將使用以下語法:

title mytitle 
  kernel my_kernel my_kernel_options 
  initrd myinitrd

PXELINUX 使用以下語法:

label mylabel 
  kernel mykernel 
  append myoptions
      

標籤會像檔名一樣進行拆分 (Mangle),因此它們在拆分之後一定會是唯一專屬名稱。 舉例來說,v2.1.30v2.1.31 這兩個標籤在 PXELINUX 中將無法辨識,因為它們都會拆分成相同的 DOS 檔案名稱。

這時的核心不一定要是 Linux 核心,它可以是開機磁區或 COMBOOT AE案。

APPEND -

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

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

4.3.5 準備用於 PXE 啟動的目標系統

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

警告: BIOS 開機順序

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

4.3.6 準備用於網路喚醒功能的目標系統

您需要使用適當的 BIOS 選項才可在安裝前啟用網路喚醒 (WOL) 功能。 另外,請記下目標系統的 MAC 位址。 啟動網路喚醒功能時將會用到此資料。

4.3.7 區域網路喚醒

「網路喚醒功能」可藉由包含機器 MAC 位址的特定網路封包來開啟機器。 因為世界上的每台機器都有一個獨一無二的 MAC 識別碼,所以您不必擔心會不小心開啟錯誤的機器。

重要: 跨越不同網路區段的網路喚醒功能

如果控制機器與喚醒安裝目標的位置不在同一個網路區段,請將要傳送的 WOL 要求設定為多重廣播,或者遠端控制網路區段上傳送這些要求的機器。

SUSE Linux Enterprise Server 9 和更新版本的使用者可以使用名稱為 WOL 的 YaST 模組輕鬆設定網路喚醒功能。其他 SUSE Linux 版本作業系統的使用者則可以使用指令行工具。

4.3.8 使用 YaST 設定網路喚醒功能

  1. root 的身分登入。

  2. 啟動YaST > 網路服務 > WOL

  3. 按一下新增,並輸入目標系統的主機名稱和 MAC 位址。

  4. 若要開啟此機器,請選取適當的項目,並按一下喚醒

4.3.9 網路喚醒功能

  1. root 的身分登入。

  2. 啟動YaST > 軟體管理,然後安裝 netdiag 套件。

  3. 開啟終端機,並以 root 身分輸入以下指令來喚醒目標:

    ether-wake  mac_of_target

    mac_of_target 取代成目標的實際 MAC 位址。