1.3. 准备目标系统的引导

本节将介绍在复杂的引导方案中所需的配置任务。其中包含了 DHCP、PXE 引导、TFTP 和网络唤醒的“准备应用”配置示例。

1.3.1. 设置 DHCP 服务

在 SUSE Linux 上对 DHCP 服务器进行设置是通过手工编辑相应的配置文件来完成的。本节将介绍如何对一个现有的 DHCP 服务器配置进行扩展,以提供在 TFTP、PXE 和 WOL 环境中所需的数据。

1.3.1.1. DHCP 服务器的手工设置

除了向网络客户机提供自动地址分配外,所有 DHCP 服务器还需要就 TFTP 服务器 IP 地址和应由目标机器上的安装例程导入的文件发布通告。

  1. 以根用户登录到主管 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" specifiies 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 手册页。

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

host 语句引入了安装目标的主机名。要将主机名和 IP 地址与特定主机绑定,则必须了解系统的硬件(NAC)地址并指定它。请将本例中使用的所有变量替换为符合您环境的实际值。

在重启动 DHCP 服务器之后,它将向所指定的主机提供一个静态 IP,从而使您能够通过 SSH 连接到该系统。

1.3.2. 设置 TFTP 服务器

使用 YaST 设置 TFTP 服务器,或者在任何其它支持 xinetd 和 tftp 的 Linux 操作系统上手工完成。一旦目标系统成功引导并发出请求,FTP 服务器就会将引导映像发送到该目标系统。

1.3.2.1. 使用 YaST 设置 TFTP 服务器

  1. 以 root 用户登录。

  2. 启动 YaST+网络服务+TFTP 服务器,并安装请求的包。

  3. 单击启用以确保服务器启动并包含在引导例程中。之后您就无需为此再进行任何操作。xinetd 将在引导时启动。

  4. 单击打开防火墙中的端口以在您机器上运行的防火墙中打开相应的端口。如果您的服务器上未运行任何防火墙,则该选项不可用。

  5. 单击浏览以查找引导映像目录。

    默认目录 /tftpboot 是自动创建并选定的。

  6. 单击完成以应用设置并启动服务器。

1.3.2.2. TFTP 服务器的手工设置

  1. 以根用户登录,然后安装 tftp 包和 xinetd 包。

  2. 如果这两个包不可用,请创建 /srv/tftpboot 目录和 /srv/tftpboot/pxelinux.cfg 目录。

  3. 第 1.3.3 节 “PXE 引导” 中所述添加引导映像所需的相应文件。

  4. 修改位于 /etc/xinetd.d/ 下的 xinetd 的配置,以确保 tftp 服务器在引导时启动:

    1. 如果该配置文件不存在,请使用 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 /tftpboot 
              disable                = no 
      }
      
    3. 保存该文件,然后使用 rcxinetd restart 命令重启动 xinetd。

1.3.3. PXE 引导

在 Preboot Execution Environment (PXE) Specification(ftp://download.intel.com/labs/manage/wfm/download/pxespec.pdf) 中可获取一些技术背景信息以及 PXE 的完整规范。

  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=e100

    通过此条目,Intel 100MBit/s 网卡的内核模块将装载到 PXE 客户端中。此条目取决于客户端的硬件,必须根据具体硬件采用不同的值。如果是 Broadcom GigaBit 网卡,则该条目应为 insmod=bcm5700

    netdevice=eth0

    此条目定义了必须用于网络安装的客户端网络接口。它只在客户端配备了多块网卡的情况下才需要,且必须根据具体情况采用相应的值。如果客户端安装了一块网卡,则该条目可以省略。

    install=nfs://ip_instserver/path_instsource/CD1

    该条目定义了用于客户机安装的 NFS 服务器和安装源。请将 ip_instserver 替换为安装服务器的实际 IP 地址。path_instsource 应替换为安装源的实际路径。对于 HTTP、FTP 或 SMB 源,除了应将协议前缀分别替换为 httpftpsmb,其它地方都是相似的。

    [Important]重要

    如果需要向安装例程指定其它引导选项,如 SSH 或 VNC 引导参数,请将它们追加到 install 条目中。在 第 1.4 节 “引导用于安装的目标系统” 提供了参数的概述和一些例子。

    以下是一个 /srv/tftpboot/pxelinux.cfg/default 文件示例。请根据自己的网络设置调整协议前缀,并通过向 install 条目添加 vncvncpassword 选项,或者添加 sshsshpassword 选项来指定要用于连接到安装程序的首选方法。由 \ 分隔的多个行必须分别作为一个连续的行输入,其中不能有换行符,也不能有 \

    default linux 
            
    # default 
    label linux 
      kernel linux 
    	    append initrd=initrd ramdisk_size=65536 insmod=e100 \
    	    install=nfs://ip_instserver/path_instsource/product 
    	    
    # 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
    
    # apic 
    label apic 
      kernel linux 
      append initrd=initrd ramdisk_size=65536 apic insmod=e100 \
      install=nfs://ip_instserver/path_instsource/product
    
    # 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 包中。

1.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
      

标签的数据报处理如同文件名一样,且在数据报处理之后,它们必定是唯一的。例如,“v2.1.30” 和 “v2.1.31” 这两个标签在 PXELINUX 下是无法区分的,因为它们在数据报处理之后成为同一个 DOS 文件名。

kernel 不必是 Linux 内核,它可以是引导扇区或 COMBOOT 文件。

APPEND -

表示不追加任何内容在 LABEL 段中,用一个连字符作为参数的 APPEND 可用于覆盖全局 APPEND

LOCALBOOT type

在 PXELINUX 上,指定 LOCALBOOT 0 取代 KERNEL 选项表示调用该特定标签,这样就会从本地磁盘引导而不是从内核引导。

自变量

说明

0

执行正常引导

4

在“通用网络驱动程序接口”(UNDI)驱动程序仍然驻留在内存中的情况下执行本地引导

5

在整个 PXE 堆栈(包括 UNDI 驱动程序)仍然驻留于内存中的情况下执行本地引导

不定义所有其它的值。如果对 UNDI 或 PXE 堆栈不甚了解,请指定 0

TIMEOUT time-out

表示在自动引导之前在引导提示符下等待的时间(以 1/10 秒为单位)。一旦用户按了键盘上的任意键,超时将立即取消(假设从用户完成命令开始)。如果超时值为零,则将完全禁用超时(这也是默认值)。

允许的最大超时值为 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 绑定。

1.3.5. 准备目标系统的 PXE 引导

请将 PXE 选项包含在 BIOS 引导序列中来为系统 BIOS 的 PXE 引导作准备。

[Warning]警告

在 BIOS 中,不要将 PXE 选项置于硬盘引导选项的前面。否则,在每次引导该系统时,它都会尝试重安装自己。

1.3.6. 准备目标系统的网络唤醒

网络唤醒(WOL)要求在安装之前启用相应的 BIOS 选项。此外,请记下目标系统的 MAC 地址。该数据是启动网络唤醒所需要的。

1.3.7. 网络唤醒

“网络唤醒”允许通过一个发送时包含机器 MAC 地址的特定网络包来打开该机器的电源。由于全球的每台机器都有一个唯一的 MAC 标识,所以无需担心会意外地错开机器的电源。

[Important]重要

如果控制机器与要唤醒的安装目标不在同一网段,请将要发送的 WOL 请求配置为多点广播,或远程控制该网段上的某台机器充当这些请求的发送方。

1.3.8. 手工进行网络唤醒

  1. 以 root 用户登录。

  2. 启动 YaST+软件管理,然后安装包 netdiag

  3. 打开一个终端,然后以根用户输入以下命令来唤醒目标机器:

    ether-wake mac_of_target

    请将 mac_of_target 替换为目标机器的实际 MAC 地址。