您没有来错地!为了更好的发展,黑基网已于9月19日正式更名为【安基网】,域名更换为www.safebase.cn,请卸载旧的APP并安装新的APP,给您带来不便,敬请理解!谢谢

黑基Web安全攻防班
安基网 首页 IT技术 网络管理 查看内容

PXE网络安装实战

2005-7-4 15:05| 投稿: Linux

摘要:    在实际工作中,我们经常会遇到这样的情况:想要安装Linux但是计算机不带光驱或软驱,或者是笔记本配置的非标准的软驱和光驱,如1394接口,USB接口等,在Linux安装时所引...
   在实际工作中,我们经常会遇到这样的情况:想要安装Linux但是计算机不带光驱或软驱,或者是笔记本配置的非标准的软驱和光驱,如1394接口,USB接口等,在Linux安装时所引导的Linux内核一般都不会带这些接口的驱动,所以也无法通过本地安装Linux,此外,在一些场合,如机房,IT实验室,工厂生产线,有大量的计算机需要同时安装Linux,如果通过光驱的方式一个个安装,不仅效率低,也不利于维护。这是时候你就需要PXE的强大功能了。本文将就PXE的基本原理和工作方式进行简要介绍,重点通过实际操作来演示如何通过网络安装RedHat和FreeBSD这两个系统以及引申出来的其它功能 基本原理 PXE是什么 PXE(Pre-boot Execution Environment)是由Intel设计,可以使计算机通过网络启动的协议。协议分为client和server两端,PXE client在网卡的ROM中,当计算机启动时,BIOS把PXE client调入内存执行,并显示出命令菜单,经用户选择后,PXE client将放置在远端的操作系统通过网络下载到本地运行。 PXE是怎样工作的 图一 图二 图1是网络安装RedHat的过程,图2是网络安装FreeBSD的过程 从上图我们可以看到,无论安装什幺类型的操作系统,PXE的安装过程大致可以描述为以下几个步骤: 1. 客户机从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP 2. DHCP服务器返回分给客户机IP以及bootstrap文件的放置位置(该文件一般是放在一台TFTP服务器上) 3. 客户机向本网络中的TFTP服务器索取bootstrap文件 4. 客户机取得bootstrap文件后之执行该文件 5. 根据bootstrap的执行结果,通过TFTP服务器加载内核和文件系统 6. 进入安装画面, 此时可以通过选择FTP,HTTP,NFS方式之一进行安装 从这里我们不难得到实现PXE网络安装必需的4个要素 1. 客户机的网卡必须为PXE网卡 2. 网络中必须要有DHCP和TFTP服务器,当然这两个服务器可以是同一台物理主机 3. 所安装的操作系统必须支持网络安装,即必须提供自己的bootstrap 4. 必须要有FTP,HTTP,NFS至少一个服务器,当然也可以和DHCP和TFTP服务器同为一台物理主机 实际演练 了解了PXE的原理以及工作过程后,下面我们来实际操作,通过实现PXE网络安装必需的4个要素,来演示一遍安装的全过程.本例使用RedHat9作为服务器的操作系统. PXE网卡 现在市面上的的网卡,不论是板载或是PCI网卡基本上都支持PXE,所以第一个要素不成问题. DHCP和TFTP服务器 为了简便起见,我们将DHCP和TFTP服务运行在同一台物理主机上. 配置DHCP服务器 DHCP服务的配置文件是/etc/dhcpd.conf,但是RedHat9 默认安装没有生成该文件,我们可以将/usr/share/doc/dhcp-3.0pl2/dhcpd.conf.sample拷贝到/etc下并改名为dhcpd.conf进行配置: ddns-update-style interim; ignore client-updates; subnet 192.168.0.0 netmask 255.255.255.0 { # --- default gateway        option routers                  192.168.0.1;        option subnet-mask              255.255.255.0;        option nis-domain               "domain.org";        option domain-name              "domain.org";        option domain-name-servers      192.168.1.1;        option time-offset              -18000; # Eastern Standard Time #       option ntp-servers              192.168.1.1; #       option netbios-name-servers     192.168.1.1; # --- Selects point-to-point node (default is hybrid). Don't change this unless # -- you understand Netbios very well #       option netbios-node-type 2;        range dynamic-bootp 192.168.0.128 192.168.0.254;        default-lease-time 21600;        max-lease-time 43200;        # we want the nameserver to appear at a fixed address        host ns { #      next-server marvin.redhat.com; hardware ethernet 00:E0:81:61:16:60; fixed-address 192.168.0.105; filename “/tftpboot/pxelinux.0”; #      filename "/tftpboot/pxeboot"; option root-path "192.168.0.1:/FreeBSD";        } } 红色部分是修改过的部分,我一一解说其作用 next-server marvin.redhat.com 这是指明TFTP服务器的IP或者是主机名,如果你的TFTP和DHCP是同一台物理主机,那就可以注释掉该行,本例中便注释掉了该行 hardware ethernet 00:E0:81:61:16:60 fixed-address 192.168.0.105 如果你希望对某一台客户机指定一个固定的IP,那幺你就需要将该客户机的MAC地址与你希望它得到的IP写在这里,本例我们将一台MAC地址为00:E0:81:61:16:60的主机指定了一个固定IP: 192.168.0.105 filename 这一个选项很重要,它的作用是指明bootstrap所在的位置,一般是指向一个TFTP服务器的某个目录下 option root-path 该选项在用来定义根文件系统的路径,一般是一个NFS方式。本例主要是针对安装FreeBSD而设置 配置TFTP服务器 TFTP服务的配置文件是/etc/xinetd.d/tftp,RedHat9 默认安装已经生成了该文件 service tftp { disable = no socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /tftpboot per_source = 11 cps = 100 2 flags = IPv4 } 这个文件基本上不用改动,但是需要注意的的是server_args= -s /tftpboot这一行,它的含义是将/tftpboot作为root目录,这样在dhcpd.conf中的filename一行就应该写bootstrap的相对路径: filename “/pxelinux.0”,这是出于安全方面考虑的.如果你去掉了-s这个参数,那幺就要在filename一行指出bootstrap的绝对路径: filename “/tftpboot/pxelinux.0”.为了和本例的dhcpd.conf相一致,我们去掉-s变为 service tftp { disable = no socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = /tftpboot per_source = 11 cps = 100 2 flags = IPv4 } Bootstrap 对于支持网络安装的操作系统,Bootstrap基本上都可以从安装源文件上找到,对于本例来说,RedHat的bootstrap就是/usr/lib/syslinux/pxelinux.0,FreeBSD的bootstrap就是/boot/pxeboot,我们把它们都拷贝到/tftpboot下. NFS服务器 要实现FreeBSD的安装还缺少一个NFS服务器,即dhcpd.conf所提到的root-path选项,我们不妨也将它和DHCP,TFTP运行在同一个物理主机上,它的配置文件很简单,就是/etc/exports: /FreeBSD   *(rw) 到这里,四个要素已经全部实现,我们开始着手进行最后的配置. 配置RedHat 把RedHat第一张安装光盘上images/pxeboot目录下的initr.img和vmlinux也考到/tftpboot/目录下。在/tftpboot创建pxelinux.cfg目录,用于放syslinux的配制文件。Sysconfig的配制文件有现成的可用,在RedHat第一张安装光盘isolinux/下有一个isolinux.cfg文件,把它拷贝到/tftpboot/pxelinux.cfg/目录下并改名为default.下面为修改后的default文件: default linux prompt 1 timeout 30 label linux kernel vmlinuz append initrd=initrd.img 这个Default 文件很容易看懂,就是告诉启动后使用那个内核引导 配置FreeBSD 以FreeBSD5.2为例,将5.2-RELEASE-i386-disc1.iso挂接在/FreeBSD下: mount –o loop 5.2-RELEASE-i386-disc1.iso /FreeBSD 开始安装 服务器方面 首先通过setup命令设置服务器自身的IP为192.168.0.1,然后依此启动DHCP,TFTP,NFS服务器: # cd /etc/rc.d/init.d # ./dhcpd restart (如果安装RedHat,先要将dhcpd.conf中的filename "/tftpboot/pxeboot" 注释掉(加字符#),再把filename "/tftpboot/pxelinux.0" 去掉注释(去掉字符#),安装FreeBSD则刚好相反) #./xinetd restart #./nfs restart 关闭防火墙 #./iptables stop 客户机方面 客户机只需设置BIOS从网络启动即可,开机后可以看到它将按预计引导进入安装画面,此时和用光驱从本地安装的画面是一样的.接下来就可以根据安装手册完成安装,这里就不再叙述 引申 PXE除了用于网络安装以外,也可以直接从网络引导内核到内存中执行,实现无盘系统.我们结合上面的配置举两个实际的例子来说明. 例一: 如果你管理的机房或者实验室的linux系统有了故障,需要进入到rescue模式去修复.若是一台一台去从光驱或软盘引导进入就太麻烦了,我们可以采用PXE来一劳永逸.具体做法是:在/var/www/html下建立RedHat/base目录,并且拷贝第一张安装盘上的/RedHat/base/netstag2.img到/var/www/html/RedHat/base目录里.这样客户机网络引导进入安装画面时候,只需输入linux rescue,然后在选择rescue img位置时选择http,输入服务器的ip,路径一栏输入/,回车后就可以顺利进入安全模式。 例二: 大部分主板测试部门都会采用memtest86这个软件去测试内存,一般地做法是将程序写到软盘里,从软盘启动执行,这样一来,即要占用大量的软驱而且大大缩短了软盘的寿命,成本会增加.我们可以采用PXE方式直接从网络引导这个程序到内存执行,速度又快又可以避免设备的消耗.具体做法是修改default的内容为 default linux prompt 1 timeout 600 label linux kernel vmlinuz append initrd=initrd.img label mem kernel mem86.bin append root=/dev/ram0 rw mem86.bin是memtest86的主程序,将它放置到/tftpboot下,客户机从PXE引导进入安装画面时只需输入mem,就可以直接通过tftp将mem86.bin解压到ramdisk并自动运行. 小结 PXE使得我们本来繁琐的重复性工作得到了简化,大大节省了人力物力以及时间,这对于力求降低成本的工厂有着重大的意义,对于个人而言,无疑也加深了对网络安装的更深一步认识. 作者 雷凯 上海Mitac环达计算机公司软件处  email:tigerleihm@yahoo.com.cn

小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册黑基账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!



免责声明:本文由投稿者转载自互联网,版权归原作者所有,文中所述不代表本站观点,若有侵权或转载等不当之处请联系我们处理,让我们一起为维护良好的互联网秩序而努力!联系方式见网站首页右下角。


鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

最新

返回顶部