什么是PXE PXE无盘站的启动原理简介:
PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动。协议分为client和server两端,PXE client在网卡的ROM中,当计算机引导时,BIOS把PXE client调入内存执行,并显示出命令菜单,经用户选择后,PXE client将放置在远端的操作系统通过网络下载到本地运行。
PXE协议的成功运行需要解决以下两个问题:
既然是通过网络传输,那么计算机在启动时,它的IP地址由谁来配置;
通过什么协议下载Linux内核和根文件系统
对于第一个问题,可以通过DHCP Server解决,由DHCP server来给PXE client分配一个IP地址,DHCP Server是用来给DHCP Client动态分配IP地址的协议,不过由于这里是给PXE Client分配IP地址,所以在配置DHCP Server时,需要增加相应的PXE特有配置。
至于第二个问题,在PXE client所在的ROM中,已经存在了TFTP Client。PXE Client使用TFTP Client,通过TFTP协议到TFTP Server上下载所需的文件。
这样,PXE协议运行的条件就具备了,下面我们就来看看PXE协议的工作过程。
工作过程
在上图中,PXE client是需要安装Linux的计算机,TFTP Server和DHCP Server运行在另外一台Linux Server上。Bootstrap文件、配置文件、Linux内核以及Linux根文件系统都放置在Linux Server上TFTP服务器的根目录下。
PXE client在工作过程中,需要三个二进制文件:bootstrap、Linux 内核和Linux根文件系统。Bootstrap文件是可执行程序,它向用户提供简单的控制界面,并根据用户的选择,下载合适的Linux内核以及Linux根文件系统。
步骤
有了前面的背景知识,接下来就可以正式操作了,下面按照顺序给出了操作步骤:
配置DHCP Server
选用ISC dhcp-3.0,DHCP Server的配置文件是/f,配置文件的内容如下:
option space PXE;
ftp-ip code 1 = ip-address;
ftp-cport code 2 = unsigned integer 16;
ftp-sport code 3 = unsigned integer 16;
ftp-tmout code 4 = unsigned integer 8;
ftp-delay code 5 = unsigned integer 8;
option PXE.discovery-control code 6 = unsigned integer 8;
option PXE.discovery-mcast-addr code 7 = ip-address;
class "pxeclients" {
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
option vendor-class-identifier "PXEClient";
vendor-option-space PXE;
# At least one of the vendor-specific PXE options must be set in
# order for the client boot ROMs to realize that we are a PXE-compliant
# server. We set the MCAST IP address to 0.0.0.0 to tell the boot ROM
# that we can't provide multicast TFTP (address 0.0.0.0 means no
# address).
ftp-ip 0.0.0.0;
# This is the name of the file the boot ROMs should download.
filename "pxelinux.0";
# This is the name of the server they should get it from.
next-server 192.168.0.1;
}
ddns-update-style interim;
ignore client-updates;
default-lease-time 1200;
max-lease-time 9200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option routers 192.168.0.254;
option domain-name-servers 192.168.0.1,192.168.0.2;
option domain-name "";
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.10 192.168.0.100;
}
host q10 {
hardware ethernet 00:00:F0:6B:38:5B;
fixed-address 192.168.0.22;
}
配置TFTP server
选用tftp-hpa,TFTP Server的配置文件是/etc/xinetd.d/tftp,配置文件的内容如下:
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -u nobody -s /tftpboot
disable = no
per_source = 11
cps = 100 2
}
这里制定了/tftpboot为TFTP Server的根目录位置。
配置bootstrap
bootstrap文件在f中被指定为pxelinux.0文件,放置在/tftpboot。Linux内核以及Linux根文件系统也放置在/tftpboot。pxelinux.0在执行过程中,要读配置文件,所有的配置文件都放在/tftpboot/pxelinux.cfg/目录下。由于PXElinux具有为不同的PXE Client提供不同的Linux内核以及根文件系统的功能,所以要通过不同的配置文件名来区分出不同的PXE Client的需求。比如一个PXE Client由DHCP Server分配的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配置文件的具体内容如下:
DEFAULT install
PROMPT 1
LABEL install
KERNEL vmlinuz
APPEND initrd=initrd.img devfs=nomount ramdisk_size=16384
此配置文件指定了Linux内核以及根文件系统的名称,并给内核传递了一些参数,其中ramdisk_size参数要非常注意,它指定Linux内核启动后建立ramdisk的大小,如果设置太小,Linux的安装过程就可能无法进行。
制作Linux内核/根文件系统
因为需
要通过网络安装,所有选择Redhat Linux 8.0安装盘(disk #1)中E:\images\bootnet.img(光驱的盘符为E:)。bootnet.img包括Linux内核、Linux根文件系统(有安装程序在内)。用bootnet.img制作一张引导软盘,方法在DOS命令行运行E:\dosutils\rawrite E:\images\bootnet.img,根据提示制作。制作完毕后,将引导软盘中的vmlinuz(Linux内核)和initrd.img(Linux根文件系统)拷贝到Linux Server的/tftpboot下。
启动DHCP Server/TFTP Server
在Linux Server上,运行service dhcpd start和service xinetd restart。
启动Q10
Q10加电后,在出现Samsung公司徽标时,在左下角会提示用户按F12进入网络引导。按F12后,Q10进入网络引导过程。首先通过DHCP Server获得了IP地址,然后下载并执行bootstrap文件pxelinux.0;在执行中,读入配置文件/tftpboot/pxelinux.cfg/C0A80016。此时屏幕上出现boot:,敲入install,就进入了Redhat Linux 8.0的网络安装界面,一切OK!
计算机的网卡中必须要有BootROM--PXE Client。同时,PXE协议也可作为无盘Linux技术,用于引导放置在远程的Linux。实际上,只要根据需要,在Pxelinux的配置文件的APPEND选项中,为Linux内核传进需要mount的文件系统的位置参数即可。
PXE无盘站的启动原理简介:
当客户机启动后,通过网卡bootrom程序广播一个引导请求帧,包含客户机的网卡号如:00E04C500234。 服务器接到请求帧便调用BOOTP(boot protocol/启动协议)或者DHCP( Dynamic Host Configuration Protocol/动态主机配置协议),分配给工作站端的机器名字、IP地址、服务器端的IP地址、以及启动时的映像文件等。工作站分配到IP地址后,利用服务器提供的TFTP ( Trivial File Transfer Protocol/小文件传输协议),接收到完整的启动文件后,就开始执行文件中的启动程序,将执行点转向启动块的入口,启动工作站。接着是不同的OS有不同的引导方式了,要启动无盘win98,需要往服务器上上传win98文件,并制作启动影像文件,工作站才能读取win98的启动影像文件,进一步读取win98安装目录,启动win98。
二、安装PXE无盘站所需的软件:
根据以上的原理解释,我们知道启动无盘win98需要网卡PXE bootrom程序(写入主板bios,如果网卡已有PXE bootrom则不需要),DHCP服务器软件,PXE服务软件,TFTP服务软件,工作站上传工具,当然,还要有WIN98操作系统软件。
我筛选的软件:8139网卡写入主板的bootrom程序8139pxe.lom,,,Vicomsoft DHCP Server,3COM Dabs101(包含TFTP服务与PXE服务等),litenet115上传工具,Win98se操作系统,litenet所需英文win98软件包(如果有英文win98则忽略)。
三、安装PXE无盘站所需的硬件:
如果只是做实验,硬件只
需要两台普通的能装WIN98的PC电脑(含网卡并联网)。
我的试验环境:
服务器:k6-2-350, 128m,硬盘46G Ibm 7200转,8139网卡
工作站(一台):C333, 主板via691(Award Bios),64m,tnt2 m64/16m显卡, 4235声卡,8139网卡
联网方式:双绞线直连
四、服务器端软件安装及配置
1、普通方式安装WIN98操作系统(如果已经是,忽略这一步),安装好网卡驱动程序、协议及服务(协议可以安装IPX/SPX兼容协议,NETBEUI,TCP/IP,Microsoft 网络上的文件与打印机共享)。
2、在“TCP/IP属性”中,指定IP地址,例如:
IP地址:192.168.0.1
子网掩码:255.255.255.0
默认网关:192.168.0.1
3、假定计算机名称为:pxeserver,工作组名为pxedomain。
4、安装3Com Dabs,序列码为:0111151111111111,安装类型:SERVER ,可使用缺省路径即C:\Program Files\3Com\DynamicAccess boot services。
运行开始菜单中“程序”——3Com Boot Services中的PXE Server,如果在打开3COM PXE对话框时出
现警告框,请点击“是”跳过。在3COM PXE Server对话框的Options标签中去掉“Proxy DHCP”前面的勾,在“File”菜单中的“Open Boot File”选中C:\Program Files\3Com\DynamicAccess boot services中的Bootptab,然后点击“打开(O)”按钮退出。
5、安装Vicomsoft DHCP Server并运行,在菜单中的“Network”下的“DHCP Setup”中的“Boot Server IP”设定为192.168.0.1,“Boot File”设定为C:\Program Files\3Com\DynamicAccess boot services\win98.pxe (3Com Dabs中的启动文件路径,win98.pxe的制作方法见下文),在菜单中的“Ports”下的“New Port”中把“Ip Address”由缺省的192.168.181.254改为192.168.0.1,在“Router Address”中填入“192.168.0.1”(此为工作站网关),点OK确定退出。如果需要用sygate之类的软件共享上网,还需要在菜单中的“Edit”下的“Preferences”中的“Network”选项中设定“DNS Addresses”为192.168.0.1,“Default Domain Name”设定为pxedomain。
6、在服务器上建立一个文件夹“pxeboot”并设为完全共享,在PXEBOOT文件夹下,为各用户建立个人目录并完全共享,例如:user01、user02、user03……
五、工作站软件安装上传及设置
1、 在有盘工作站上正常安装Win98并安装好需要的应用软件,假定为缺省安装路径c:\windows,安装好网卡驱动程序、协议及服务,协议可以安装IPX/SPX兼容协议,NETBEUI,TCP/IP,并且可以安装M
icrosoft 网络上的文件与打印机共享(注意这里与NT下的PXE-PDK无盘不同),将网络登录设置为“Microsoft友好登录”,设定计算机工作组为pxedomain。
2、 复制实模式下驱动程序
将keyb、ndishlp.sys、、net.msg、protman.dos、、protocol.ini、RTL8139.sys、rtsnd.dos、复制到c:\W
indows目录下,全部替代;将第一版的ndis.vxd复制到c:\Windows\System 目录下,这里可用提供的解压到Windows文件夹中。
如果不知道还需要复制什么文件,可以运行litenet中的看提示一一复制。
3、 运行litenet115安装程序,出现“Step 0”界面,单击“Next”。
4、 关闭“”文本,单击“Yes”按钮,出现“Step 1”界面,在“NetBIOS Server Name”文本框中输入服务器名,如pxeserver。在“NetBIOS Share Name”文本框中输入共享目录名,如pxeboot,单击“Next”。
出现“Comfirm”对话框,要求驱动网卡实模式,单击“Yes”,出现“Real Mode Net”对话框,在“Nic Type”选择框中选取“RTL8139”,单击“Install”,而后单击“Finish”。
5、 出现“Step 2”界面,单击“Next”, 出现“Step 3”界面,提示Windows目录、System目录、TEMP目录位置,若无误则单击“Next”。
6、 出现“Step 4”界面,在“Location of MS Windows files”文本框中,输入英文版的Win98安装文件所在路径(其实只需要输所在目录就行,可能还需要base4.cab,如果已经拷贝了e98files到c:\windows,则只需输入c:\windows即可),单击“Next”。
7、 出现“Step 5”界面,按默认值设置,单击“Next”。 出现“Comfirm”对话框,单击“OK”,出现另一对话框,选择“No”,使工作站自动登录,再次出现对话框,提示计算机是否重启,选择“Yes”。
8、 重启出现“Step 6”界面,放入一张质量较好的软盘,用于制作启动映象盘,单击“Next”,出现格式化对话框,将其全面格式化,并可选中“复制系统文件”。
9、 出现“Step 7”界面,制作引导软盘,单击“Next”,复制相关文件。
10、 出现“Step 8”界面,系统提示安装Litenet实用工具,按默认值设置,单击“Next”,再三次单击“Yes”。
11、 出现“Step 9”界面,单击“Next”,再单击“OK”,出现“Synchroniaer”界面,选择“From Local Driver”,如果是第一次上传,单击“Complete Copy”(完全上传),开始上传文件。
上传完成后,系统自动检测WIN98SE,若为SE则提示你替换NDIS.VXD或运行FTuner进行PATCH,此处有个选项说是否建立虚拟盘,可以去掉前面的勾以节省工作站内存。
12、 出现“Step 10”,单击“Finish”完成。
13、 上传文件后,在服务器端作以下改动:
1) 拷贝服务器或工作站中c:\windows\system\sysdm.cpl到共享文件夹中的windows\system中如D:\pxeboot\windows\system中(解决工作站打不开控制面板的系统属性问题);
2) 进入PXEBOOT\WINDOWS文件夹,将3COM DABS安装目录中的FREEMEE.COM拷贝到此目录下,
到并打开USERCMD.BAT做如下修改:
将QRESTALL
命令前的rem去掉(可不改),并在其下添加以下一行:
c:\windows\freemem (解决作站运行到最后一步时,光标在左上角闪动几秒种后重启或起动到win98的蓝界面, 出现鼠标后定住或重启的问题)
在WIN.COM命令之前插入以下面这条语句:
QVMEM S: %SERVER% %USERNAME% (设定虚拟盘符)
3) 到并打开SYSTEM.INI,在[386Enh]小节添加以下三条语句:
PagingDrive=S (S为前面用QVMEM映射的虚拟盘符)
MinPagingFileSize=65535
MaxPagingFileSize=65535
这样无盘WIN98就可以使用虚拟内存了。如果工作站运行游戏或其它软件出现内存不足提示,可以适当把值设大!
4)为了屏蔽启动信息:
在Pxeboot\windows\Usercmd.bat第一行加入ctty con(生成软盘中的autoexec.bat也要做相应修改,见下文)
14、修改生成软盘中的文件:
1) 如果不能同时启动多台工作站,有的工作站启动的时候死机,将RANDELAY.EXE文件复制到A:\WINBOOT 目录下,在A:\WINBOOT\STARTNET.BAT中的QUALCNX命令前加入RANDELAY 5 60。
2)为了屏蔽启动信息:
修改autoexec.bat,加入:
@echo off
cls
ctty nul
...
...
15、 在服务器端“PXEBOOT\Windows”目录下,到Netnames.db文件并打开它,删除其所有信息,输入机号及网卡地址,例如:
user01 00E04C500234
user02 00E04C500235
…… ……
若不知道网卡地址,Litenet可自动添加网卡记录到Netnames.db文件中。其方法为:在工作站启动出现:
Enter the name for this computer (Hardware Address 00E04C500234):
时,输入机号,例如:user01。系统提示:
Confirm that Hardware address 00E04C500234 is assicpned the name user01(Y/N) Y
系统提示重启计算机,注意此时只能修改一台,不然会出现文件共享出错。
16、给工作站加入PXE bootrom启动代码,如果网卡有PXE启动芯片则跳过这一步,如果没有,重新启动计算机并切换到MS-DOS方式:
1)读出BIOS文件
AWDFLASH /sy a b.bin
保存为b.bin,有不到源文件的提示属于正常现象。
把b.bin复制一份以便可以恢复原来的状态
linux完全安装2)写8139pxe.lom到b.bin里面
CBROM606 b.bin /pci 8139pxe.lom
8139pxe.lom大小为52k,是专用写入主板Bios的,不要错把写入网卡的写入bios!
3)把b.bin写入主板BIOS
AWDFLASH b.bin /py /sn /r
4)OK!
不成功的原因可能有以下几个:
1)BIOS容量不够用
CBROM b.bin /d
REMAIN COMPRESS CODE SPACE一行,看是否够64KB不够的话可以用CBROM删除一些LOGO之类的东西.
2)bios类型是AMI的或不是标准AWDARD的,比如华硕和皇朝的一些主板就都不行,但是可以用其它工具,这里不一一介绍了。
六、建立并配置WIN98无盘启动影像文件
1、运行服务器上开始菜单的“程序”——“3Com Boot Services”——“Boot Im
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论