用PXE引导安装SUSE
Contents
介绍
由于SUSE Linux分发总是最新的,所以它经常变更。然而,不用刻录新的CD或DVD光盘就能安装系统将更令人高兴,在此为您提供了从网络安装SuSE的最好方式。
PXE是在没有软驱、硬盘、CD-ROM的情况下引导计算机的一种方式,也就是BIOS将使用PXE协议从网络引导。当然,为了使PXE工作服务器需要配置OS,并且客户端需要使用特定的LAN网卡(NIC)的代码模块来运行PXE。多数的新主板都有板载LAN端口并在BIOS的镜像中已经包含了这个模块。如果您想从子板网卡(如ISA/PCI插槽上的网卡)引导,您需要在引导ROM(只有当网卡有ROM插槽时才可用)或在BIOS镜像中(当有合适的镜像工具才可用,AMIFLASH就是一个)安装相应模块。很少有操作系统支持PXE服务器配置--但是Windows 2000服务器和SUSE Linux却支持。
准备工作
为了成功的进行网络安装,您需要:
- 一个现存的SuSE Linux (提供dhcpd和tftpd服务),
- 一个可用的网络连接(推荐使用高带宽的),
- 一个支持PXE引导的可连网的需要安装的目标系统。
配置dhcpd和TFTP服务器
dhcpd配置
PXE引导是基于BOOTP服务器,为了启动自身的网络层将发送所有必需的信息,这可以通过从所周知的DCHPD服务器来实现,该安装包包含在SuSE的分发中。 下面是一个典型的配置(/etc/dhcpd.conf是缺省的配置文件):
host target_host { hardware ethernet xx:xx:xx:yy:yy:yy; fixed-address 192.168.1.10; server-name "192.168.1.1"; next-server 192.168.1.1; filename "/tftpboot/pxelinux.0"; }
注意以PXE引导需要添加两行,指定TFTP引导服务器IP(server-name)和包含PXE引导程序的文件名(filename)。 您需要按照下面方式重新启动DHCPd服务器:
# rcdhcpd restart
请注意:依赖于您使用的tftp服务器和是否它运行在改变根目录环境,"filename"也可以在被指定时使用相对路径。在openSUSE上的标准tftpd服务器或使用基于RedHat的服务器,"filename"应该为:
filename "pxelinux.0";
在ISC DHCP服务器版本3(迁移到openSUSE)中,可以配置DHCP服务器只响应引导请求,这种方式可以与另一个缺省的DHCP服务器并行运行。这个也许在DHCP服务器不能被配置提供引导服务器或引导文件名(这种情况也放有很多DSL路由器)的情况下很有用。PXE客户端将忽略不包含引导服务器或引导文件名的DHCP请求。 下面是本方案的完整的配置文件:
default-lease-time 600; max-lease-time 7200; ddns-update-style none; ddns-updates off; allow booting; option domain-name "my.domain"; option domain-name-servers my.dnsserver; option routers my.router; # 定义规则来识别来自于PXE和Etherboot客户端的DHCP请求。 class "pxe" { match if substring (option vendor-class-identifier, 0, 9) = "PXEClient"; } class "etherboot" { match if substring (option vendor-class-identifier, 0, 9) = "Etherboot"; } subnet 192.168.1.0 netmask 255.255.255.0 { option broadcast-address 192.168.1.255; pool { default-lease-time 180; # no long lease time required for booting max-lease-time 360; # booted system does its own dhcp request server-name "mybootserver"; next-server mybootserver.; # in case your local DNS only handles # unqualified domains keep trailing '.' filename "pxelinux.0"; allow members of "pxe"; allow members of "etherboot"; # allow etherboot, too range 192.168.1.201 192.168.1.211; } }
atftpd 配置
推荐使用atftp包,因为atftp是唯一的免费的符合RFC规范的TFTP服务器。一旦安装,您应该检查/etc/sysconfig/atftp中的每一项是否OK。下面是一个典型的配置:
ATFTPD_OPTIONS="--daemon --user tftp -v" ATFTPD_USE_INETD="no" ATFTPD_DIRECTORY="/srv/tftp"
在这个例子中,注意tftp根目录设置到了/srv/tftp。您需要按照下面的方式重新启动TFTP服务器:
# rcatftpd restart
请注意:RedHat企业版本的Linux中缺省的tftp服务器也工作的不错。它不需要进一步的配置,简单地使用下面的命令启动服务即可。
chkconfig tftp on
tftpd-hpa配置
tftpd-hpa是H. Peter Anvin编写的一个tftpd服务器,包含在"tftpd"的包中。在缺省的设置中,它被配置从xinetd启动并更改目录到/etc/xinetd.d/tftp中指定的目录,通常为/tftpboot。以无权限的用户运行的选项也可以被xinetd设置(也就是/etc/xinetd.d/tftp)。
建立PXE引导环境
获取所有的东西
在真正开始建立PXE环境之前,您必须安装syslinux包,这个包提供了一个非常有用的文件:
/usr/share/syslinux/pxelinux.0
如果您没安装syslinux,您可以在这下载这个小文件。
建立PXE引导
到此为止,您应该具备了建立PXE引导环境的所有东西。进入TFTP根目录(缺省的是/srv/tftp),按下面的命令创建相应的文件和目录:
# cd /srv/tftp # mkdir tftpboot # cd tftpboot # mkdir pxelinux.cfg
复制PXE引导文件到tftpboot目录下。
# cp /usr/share/syslinux/pxelinux.0 /srv/tftp/tftpboot
创建新的PXE配置文件,这个类似于syslinux.cfg文件的结构。
# vi /srv/tftp/tftpboot/pxelinux.cfg/default
这有一个简单的例子,您可按配置需求随便更改它。
default linux prompt 1 timeout 30 # Install Linux label linux kernel linux append initrd=initrd splash=silent showopts
请注意:如果您使用基于RedHat的服务器,您的缺省配置将需要一些以"append"开头的选项:
append root=/dev/ram0 load_ramdisk=1 initrd=initrd splash=silent showopts ramdisk_size=4096 init=linuxrc
这个配置文件引用了2个重要的文件:linux和initrd。您必须从网络上的SuSE安装仓库(或其它镜像)下载这两个文件。注意这两个文件依赖于您的硬件平台(i386或x86_64)。
- 针对i386的例子:
# cd /srv/tftp/tftpboot # wget http://download.opensuse.org/distribution/SL-OSS-factory/inst-source/boot/i386/loader/initrd # wget http://download.opensuse.org/distribution/SL-OSS-factory/inst-source/boot/i386/loader/linux
- 针对x86_64的例子:
# cd /srv/tftp/tftpboot # wget http://download.opensuse.org/distribution/SL-OSS-factory/inst-source/boot/x86_64/loader/initrd # wget http://download.opensuse.org/distribution/SL-OSS-factory/inst-source/boot/x86_64/loader/linux
请注意:如果您使用基于RedHat的服务器,您的tftp服务器的目录结构应该如下所示:
/tftpboot /tftpboot/pxelinux.0 /tftpboot/initrd.img /tftpboot/vmlinuz /tftpboot/pxelinux.cfg /tftpboot/pxelinux.cfg/default
从PXE引导
您应该确认您的目标主机已经配置好从网络引导并检查PXE是否已经启用。然后每件事都会按照我们想的运行...享受PXE并尽情玩吧!
陷阱/常见问题
PXELINUX启动非常慢
当PXELINUX加载时您也许会发现好像花了很长时间来显示类似于下面的行:
pxelinux.cfg/01-88-99-aa-bb-cc-dd pxelinux.cfg/C000025B pxelinux.cfg/C000025 pxelinux.cfg/C00002 pxelinux.cfg/C0000 pxelinux.cfg/C000 pxelinux.cfg/C00 pxelinux.cfg/C0 pxelinux.cfg/C pxelinux.cfg/default
您必须确认在/etc/dhcpd.conf的配置文件中有next-server来设置您tftp服务器的地址。您不必包含hostname,如例子中所示,只要下面一行即可:
next-server 192.168.77.254;
没有接受的选项
您也许会在/var/log/messages
看到一些如下的警告信息:
in.tftpd: tftp: client does not accept options
这个是正常的。PXELINUX好像不能接受所有的选项,但是这不影响引导。
当运行in.tftpd提示套接字错误
如果您看到了如下的错误:
in.tftpd: cannot bind to local socket: Address already in use
那么您也许在/etc/xinet.d/tftp文件中错误的配置了服务器的一些选项。请仔细的检查一下。
启动图形安装系统
在PXE加载的安装系统完成了加载驱动后,您将会看到一个消息说不能发现openSUSE的安装CD。单击OK。然后,您需要选择语言和键盘布局。
一旦进入主菜单,选择"Start Installation or System",然后"Start Instillation or Update"。 下一步选择安装的网络源。您需要指定一个网络仓库来安装。从Mirrors Released Version中选择一个合适的镜像。我选择了:
ftp://ftp.mirrorservice.org/sites/ftp.opensuse.org/pub/opensuse/distribution/10.2/repo/oss/
现在依赖于您的镜像类型来选择FTP或HTTP。选择合适的网卡并使用DHCP。接下来您将被要求指定服务器的地址。虽然需要一个IP地址,您也可以设置个主机名,如:
ftp.mirrorservice.org
下一步您将被要求输入服务器上的目录,如:
/sites/ftp.opensuse.org/pub/opensuse/distribution/10.2/repo/oss/
然后,从您的镜像中下载图形安装系统。您也许碰到"Installation system does not match your boot medium."忽略这个继续。在一段短暂的停顿后,完整的图形化的YaST应该会被加载。现在您就能够按通常的方法来安装系统。
解决问题
基于文件的YaST,而不是X服务器
如果您的计算机不是太慢而不能使用图形用户界面(GUI)的安装程序,那么您能够在X服务器上通过手动来指定想要使用的分辨率和色深。我的Latitude C400笔记本电脑上就可以设置,回到TFTP服务器,编辑pxelinux.cfg/default文件。在这行:
append initrd=initrd splash=silent showopts
添加正在的选项:
vga=xxx
xxx是Linux视频模式编号,您知道的您的监视器/显卡所工作的模式。如:
append initrd=initrd splash=silent showopts vga=773
您能够在这找到Linux视频模式编号列表。 重新用PXE引导,X服务器应该能正确地启动。
附加信息的链接
--
MightyBob 16:34, 1 April 2006 (UTC)