PXE网络安装OS过程.docx
《PXE网络安装OS过程.docx》由会员分享,可在线阅读,更多相关《PXE网络安装OS过程.docx(16页珍藏版)》请在冰豆网上搜索。
![PXE网络安装OS过程.docx](https://file1.bdocx.com/fileroot1/2023-1/25/8ea63548-ad87-470c-bd0a-021c0553b3b0/8ea63548-ad87-470c-bd0a-021c0553b3b01.gif)
PXE网络安装OS过程
使用服务器PXE功能从网络安装操作系统
使用服务器PXE功能从网络安装操作系统
目的是方便集群服务器安装,减少人力及物力开销,压缩安装系统时间,目前多数服务器都支持PXE方式从服务器网卡进行引导,通过安装服务
器的DHCP功能分配ip地址,由tftp软件创建引导服务器安装的引导菜单,再调用nfs/ftp/http方式进行安装操作系统.
此文档是使用http方式进行安装服务器系统.编写此文档时安装服务器使用CenOS5.2x64位操作系统.配置好了yum源.其它操作系统类
似.安装步聚都是一样的.
PXEserver从网络安装操作系统需要以下几个步聚
1)安装DHCP服务
2)安装tftp服务
3)安装NFS/FTP/HTTP服务器(从中选其一)
1安装dhcp服务
[root@server1~]#yuminstalldhcp
Dhcpd配置文件是/etc/dhcpd.conf文件,可以用/usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample这个基本样例配置文件创建/etc/dhcp
.conf,根据你自己的需要修改你的子网和配置你的dhcp服务在你的网络上.此文档使用172.20.30.x子网,此文档中的配置文件内容如下:
#*****************************************
#/etc/dhcpd.confconfigurefilecontents
#*****************************************
ddnsupdatestyleinterim;
notauthoritative;
optiondomainname"";
optiondomainnameservers208.67.222.222,208.67.220.220;
optionsubnetmask255.255.255.0;
subnet172.20.30.0netmask255.255.255.0{
authoritative;
range172.20.30.10172.20.30.90;
optionrouters172.20.30.254;
allowunknownclients;
allowbooting
allowbootp
nextserver172.20.30.100;
filename"pxelinux.0";
}
2安装tftp服务
tftp服务是一个通过udp协议来传输数据的小型ftp,使用xinetd服务来调用tftp服务.监听tcp/udp的69端口.由xinetd来启动tftp服务.
编辑/etc/xinetd.d/tftp配置文件,设置选项中的disable为no即可,我的服务器上的tftp配置如下
#*****************************************
#tftpconfigurefile
#*****************************************
servicetftp
{
socket_type=dgram
protocol=udp
wait=yes
user=root
server=/usr/sbin/in.tftpd
server_args=s/tftpboot
disable=no
per_source=11
cps=1002
flags=IPv4
}
3创建网络安装源
我们能用三种方法用pxe网络引导时安装操作系统,三种方法分别是nfs,ftp或者http,我是用的http,从http安装操作系统,
3.1安装http服务
[root@server1~]#yuminstallhttp
3.2编辑http配置文件
编辑/etc/http/conf/httpd.conf
增加发行版本的iso源文件目录别名
在之间加入:
Alias/iso"/www/iso/www/"
然后在之后加入对iso源文件目录权限设置:
OptionsIndexesFollowSymLinks
AllowOverrideNone
Orderallow,deny
Allowfromall
3.3及创建安装源目录
mkdirp/www/iso/www/centos/5.2/x64
mkdirp/www/iso/www/centos/5.2/i386
3.4创建安装源
如果你有一个从互联网上下载下来的dvd或cd文件,你可以将dvd或cd文件的isomount到安装源目录上
我下载的是centos5.2的dvd64及32们版本,使用以下命令mount到安装源目录上:
mountoloop/home/opensoft/iso/centos/5.2/x64/centos.iso/www/iso/www/centos/5.2/x64
mountoloop/home/opensoft/iso/centos/5.2/i386/centos.iso/www/iso/www/centos/5.2/i386
4启动dhcp,tftp和http服务
[root@guorui~]#/etc/init.d/dhcpdrestart
[root@guorui~]#/etc/init.d/xinetdrestart
[root@guorui~]#/etc/init.d/httpdrestart
配置以上三个服务在重启后自动运行,运行以下命令
[root@guorui~]#chkconfiglevel345dhcpdon
[root@guorui~]#chkconfiglevel345httpdon
[root@guorui~]#chkconfig–level345xinetdon
tftpd服务是用xinetd来启动,所以只设置xinetd服务开机启动即可
5配置tftp网络启动文件
5.1创建/tftpboot/images上当用于当PXE启动安装程序时要找的启动文件目录
mkdirp/tftpboot/images
5.2拷贝/usr/lib/syslinux/pxelinux.0文件到/tftpboot/目录下
[root@guoruitftpboot]#cp/usr/lib/syslinux/pxelinux.0/tftpboot
5.3建立/tftpboot/images目录树并且拷贝vmlinuz和initrd.img文件从你的安装源目录(/images/pxeboot/vmlinuz和
/images/pxeboot/initrd.img
[root@guoruitftpboot]#mkdirpimages/centos/5.2/i386
[root@guoruitftpboot]#mkdirpimages/centos/5.2/x64
[root@guoruitftpboot]#cp/www/iso/www/centos/5.2/i386/images/pxeboot/vmlinuz
images/centos/5.2/i386/
[root@guoruitftpboot]#cp/www/iso/www/centos/5.2/i386/images/pxeboot/initrd.imgimages/centos/5.2/
i386/
[root@guoruitftpboot]#cp/www/iso/www/centos/5.2/x64/images/pxeboot/vmlinuzimages/centos/5.2/x64/
[root@guoruitftpboot]#cp/www/iso/www/centos/5.2/x64/images/pxeboot/initrd.img
images/centos/5.2/x64/
6创建PXE引导菜单
用以下步聚创建PXE引导菜单
6.1拷贝menu.c32文件从/usr/lib/syslinux/menu.c32到/tftpboot
[root@guorui~]#cp/usr/lib/syslinux/menu.c32/tftpboot
6.2建立/tftpboot/f目录
[root@guorui~]#mkdirp/tftpboot/f
6.3建立/tftpboot/f/default配置文件,以下是我的default配置文件
defaultmenu.c32
prompt0
timeout300
MENUTITLEPXEMenu
LABELCentoS5.2i386
MENULABELCentOS5.2i386
KERNELimages/centos/5.2/i386/vmlinuz
appendvga=normalinitrd=images/centos/5.2/i386/initrd.imgramdisk_size=32768\
method=ftp:
//172.20.30.100/iso/centos/5.2/i386/
LABELCentoS5.2x64
MENULABELCentOS5.2x64
KERNELimages/centos/5.2/x64/vmlinuz
appendvga=normalinitrd=images/centos/5.2/x64/initrd.imgramdisk_size=32768\
method=ftp:
//172.20.30.100/iso/centos/5.2/x64/
6.4tftp服务的文件树结构看起来应该像这个样子
[root@guorui~]#tree/tftpboot/
/tftpboot/
|images
| |centos
| |5.2
| | `i386
| | |initrd.img
| | `vmlinuz
| `5.2
| `x64
| |initrd.img
| `vmlinuz
|menu.c32
|pxelinux.0
`pxelinux.cfg
`default
8directories,7files
7到此为止就可以使用这台服务器来通过pxe方式安装操作系统了.
注意:
有的服务器的网卡不支持新的操作系统,如华硕RS100-X5/P12服务器,网卡型号MarvellYukon88E8056,些网卡就不支持CentOS5.2
操作系统.需要到下载驱动模块.
1.引言
一般情况下,我们都是利用软驱或光驱引导Linux后,再通过本地的光驱安装Linux。
但是,这种安装方法在以下的几种情况下就不能适用:
1.无软驱和光驱:
很多公司为了节省成本,计算机一般都不带光驱或软驱,这样就无法通过本地安装Linux;
2.非标准的软驱和光驱:
虽然笔记本都会配置光驱,但是并不一定都是标准的IDE设备,有些是通过USB接口,有些是通过1394接口(例如Samsung的Q10)。
在Linux安装时所引导的Linux内核一般都不会带这些接口的驱动,所以也无法通过本地安装Linux;
3.另外,在一些场合,如机房中,有大量的计算机需要同时安装Linux,如果通过光驱的方式一个个安装,不仅效率低,也不利于维护。
笔者在工作过程中,就遇到过第二种情况。
一台Samsung的Q10笔记本需要安装RedhatLinux8.0,但是通过光驱引导后发现,安装程序无法访问光盘。
针对这个问题,笔者经过查阅资料和摸索,找到了在Q10上安装Linux的方法。
在下面的讨论中,如不做特别声明,都将以Q10为例,介绍如何通过PXEBootrom来远程安装Linux。
回页首
2.基本原理
1)什么是PXE
PXE(Pre-bootExecutionEnvironment)是由Intel设计的协议,它可以使计算机通过网络启动。
协议分为client和server两端,PXEclient在网卡的ROM中,当计算机引导时,BIOS把PXEclient调入内存执行,并显示出命令菜单,经用户选择后,PXEclient将放置在远端的操作系统通过网络下载到本地运行。
PXE协议的成功运行需要解决以下两个问题:
1.既然是通过网络传输,那么计算机在启动时,它的IP地址由谁来配置;
2.通过什么协议下载Linux内核和根文件系统
对于第一个问题,可以通过DHCPServer解决,由DHCPserver来给PXEclient分配一个IP地址,DHCPServer是用来给DHCPClient动态分配IP地址的协议,不过由于这里是给PXEClient分配IP地址,所以在配置DHCPServer时,需要增加相应的PXE特有配置。
至于第二个问题,在PXEclient所在的ROM中,已经存在了TFTPClient。
PXEClient使用TFTPClient,通过TFTP协议到TFTPServer上下载所需的文件。
这样,PXE协议运行的条件就具备了,下面我们就来看看PXE协议的工作过程。
2)工作过程
在上图中,PXEclient是需要安装Linux的计算机,TFTPServer和DHCPServer运行在另外一台LinuxServer上。
Bootstrap文件、配置文件、Linux内核以及Linux根文件系统都放置在LinuxServer上TFTP服务器的根目录下。
PXEclient在工作过程中,需要三个二进制文件:
bootstrap、Linux内核和Linux根文件系统。
Bootstrap文件是可执行程序,它向用户提供简单的控制界面,并根据用户的选择,下载合适的Linux内核以及Linux根文件系统。
回页首
3.步骤
有了前面的背景知识,接下来就可以正式操作了,下面按照顺序给出了操作步骤:
1)配置DHCPServer
选用ISCdhcp-3.0,DHCPServer的配置文件是/etc/dhcpd.conf,配置文件的内容如下:
optionspacePXE;
optionPXE.mtftp-ipcode1=ip-address;
optionPXE.mtftp-cportcode2=unsignedinteger16;
optionPXE.mtftp-sportcode3=unsignedinteger16;
optionPXE.mtftp-tmoutcode4=unsignedinteger8;
optionPXE.mtftp-delaycode5=unsignedinteger8;
optionPXE.discovery-controlcode6=unsignedinteger8;
optionPXE.discovery-mcast-addrcode7=ip-address;
class"pxeclients"{
matchifsubstring(optionvendor-class-identifier,0,9)="PXEClient";
optionvendor-class-identifier"PXEClient";
vendor-option-spacePXE;
#Atleastoneofthevendor-specificPXEoptionsmustbesetin
#orderfortheclientbootROMstorealizethatweareaPXE-compliant
#server.WesettheMCASTIPaddressto0.0.0.0totellthebootROM
#thatwecan'tprovidemulticastTFTP(address0.0.0.0meansno
#address).
optionPXE.mtftp-ip0.0.0.0;
#ThisisthenameofthefilethebootROMsshoulddownload.
filename"pxelinux.0";
#Thisisthenameoftheservertheyshouldgetitfrom.
next-server192.168.0.1;
}
ddns-update-styleinterim;
ignoreclient-updates;
default-lease-time1200;
max-lease-time9200;
optionsubnet-mask255.255.255.0;
optionbroadcast-address192.168.0.255;
optionrouters192.168.0.254;
optiondomain-name-servers192.168.0.1,192.168.0.2;
optiondomain-name"mydomain.org";
subnet192.168.0.0netmask255.255.255.0{
range192.168.0.10192.168.0.100;
}
hostq10{
hardwareethernet00:
00:
F0:
6B:
38:
5B;
fixed-address192.168.0.22;
}
dhcpd.conf配置文件中几个关键部分说明如下:
hostq10{…}定义了笔记本Q10网卡的MAC地址与IP地址的对应关系,表明DHCPServer为Q10分配一个固定的IP:
192.168.0.22;filename""指定bootstrap的文件名;netx-server指定TFTPServer的地址。
其它的配置请读者参考DHCPServer的手册。
2)配置TFTPserver
选用tftp-hpa,TFTPServer的配置文件是/etc/xinetd.d/tftp,配置文件的内容如下:
servicetftp
{
socket_type=dgram
protocol=udp
wait=yes
user=root
server=/usr/sbin/in.tftpd
server_args=-unobody-s/tftpboot
disable=no
per_source=11
cps=1002
}
这里制定了/tftpboot为TFTPServer的根目录位置。
3)配置bootstrap
bootstrap文件在dhcpd.conf中被指定为pxelinux.0文件,放置在/tftpboot。
Linux内核以及Linux根文件系统也放置在/tftpboot。
pxelinux.0在执行过程中,要读配置文件,所有的配置文件都放在/tftpboot/pxelinux.cfg/目录下。
由于PXElinux具有为不同的PXEClient提供不同的Linux内核以及根文件系统的功能,所以要通过不同的配置文件名来区分出不同的PXEClient的需求。
比如一个PXEClient由DHCPServer分配的IP地址为192.168.0.22,那么相对应的配置文件名为/tftpboot/pxelinux.cfg/C0A80016(注:
C0A80016为IP地址192.168.0.22的十六进制表示)。
如果找不到,就按照顺序C0A80016->C0A8001->C0A800->C0A80->C0A8->C0A->C0->C->default查找配置文件。
/tftpboot/pxelinux.cft/C0A80001配置文件的具体内容如下:
DEFAULTin