大家好,又见面了,我是你们的朋友全栈君。
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的配置文件是/etc/dhcpd.conf,配置文件的内容如下:
option space PXE;
option PXE.mtftp-ip code 1 = ip-address;
option PXE.mtftp-cport code 2 = unsigned integer 16;
option PXE.mtftp-sport code 3 = unsigned integer 16;
option PXE.mtftp-tmout code 4 = unsigned integer 8;
option PXE.mtftp-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).
option PXE.mtftp-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 “mydomain.org”;
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;
}
dhcpd.conf配置文件中几个关键部分说明如下:host q10{…}定义了笔记本Q10网卡的MAC地址与IP地址的对应关系,表明DHCP Server为Q10分配一个固定的IP:192.168.0.22;filename “”指定bootstrap的文件名;netx-server指定TFTP Server的地址。其它的配置请读者参考DHCP Server的手册。
配置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文件在dhcpd.conf中被指定为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,cbrom606.exe,awdflash.exe,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,并且可以安装Microsoft 网络上的文件与打印机共享(注意这里与NT下的PXE-PDK无盘不同),将网络登录设置为“Microsoft友好登录”,设定计算机工作组为pxedomain。
2、 复制实模式下驱动程序
将keyb.com、ndishlp.sys、net.exe、net.msg、protman.dos、protman.exe、protocol.ini、RTL8139.sys、rtsnd.dos、snapshot.exe复制到c:\Windows目录下,全部替代;将第一版的ndis.vxd复制到c:\Windows\System 目录下,这里可用提供的e98files.exe解压到Windows文件夹中。
如果不知道还需要复制什么文件,可以运行litenet中的instnic.exe看提示一一复制。
3、 运行litenet115安装程序setup.exe,出现“Step 0”界面,单击“Next”。
4、 关闭“license.txt”文本,单击“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安装文件所在路径(其实只需要输snapshot.exe所在目录就行,可能还需要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.com (解决作站运行到最后一步时,光标在左上角闪动几秒种后重启或起动到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复制一份以便可以恢复原来的状态
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 Image Editor”,按提示执行“下一步”直到“完成”,并出现3Com Boot Image Edito对话框。
2、将安装工作站litenet115生成的软盘插入服务器软驱,选择3Com Boot Image Editor窗口中Create a TCP/IP or PXE image file选项,在“image file name”栏中使用缺省路径并加入文件名win98.img:“C:\Program Files\3Com\DynamicAccess boot services\win98.img”,选中options中的Writeable和Pre-OS两个选项,点击”ok”按钮建立启动影像文件。
3、选择3Com Boot Image Editor窗口中的Create a PXE menu boot file选项,点击”add”图标进入Edit Entry对话框,在image file文本框中输入win98.img,然后点击”ok”按钮返回Create menu file对话框,在此对话框中点击”save”按钮进入Save menu file对话框,在文件名文本框中输入win98.pxe,点击“OK”,然后点击“Save”保存返回,退出3Com Boot Image Edito对话框。
4、运行开始菜单中“程序”——“3Com Boot Services”——“Bootptab Editor”,在出现的对话框中选择“PXE”、“Open an existing”单选按钮,并在下面的文本框中输入C:\Program Files\3Com\DynamicAccess boot services\Bootptab,确定后进入BOOTPTAB Editor窗口。在窗口中选择”Edit”菜单下的”Add Host”菜单项,进入Edit Host窗口。在“Name”中输入 “user01”,在“Node”中输入网卡的MAC地址如:00E04C500234,在“Image”文本框中输入win98.pxe。点击“确定”按钮返回BOOTPTAB Editor窗口。选择“File”菜单下的“Save”保存设置,然后关闭BOOTPTAB Editor窗口。
七、在服务器上运行Vicomsoft DHCP Server,并在Status View窗口中点击按钮使其启动服务(按钮状态为On),运行3Com TFTP Server并使其启动服务(状态为 Server started)。可以不运行3Com PXE Server。
八、关闭工作站,取掉工作站的硬盘、软驱、光驱。
重启进行工作站主板Bios设置,在STANDARD CMOS SETUP中,将硬盘设置为无,将软驱设置为1.44M(软驱设置为无会重启),在BIOS FEATURES SETUP中把Boot Up Floppy Seek(开机软驱寻道)设为Disable,有些主板还需要设置Boot First Lan(或者相似选项):Enable。
重新启动,按Shift+F10键出现PXE启动设置框,选择
Network Boot Protocol:PXE
Boot Order: Int 19h
Show Config Message: Disable (不出现提示信息,Enable为有提示信息)
按F4保存退出。
九、安装完成,工作站启动进入无盘Win98。
十、优缺点
优点:
1、不用安装winnt server4.0+service park 6或win2000 server,减少安装时间,如果使用正版,不用买昂贵的软件及服务协议;
2、没有cannot find or load required file krnl386.exe问题;
3、没有tnt系列显卡16色问题;
4、没有添加了文件和打印共享就出错的问题;
5、没有修改工作站时间死机问题;
6、没有无法正常关机与重启的问题;
缺点:
1、win98做服务器资源分配效率低,比如:
工作站启动时,服务器偶尔停顿;
工作站运行大型游戏如红警2、diablo2容易死机(不过还好,星际、帝国没问题);
工作站数量不能太多。
此缺点无法弥补,可能使用高配置的电脑做服务器会好一点点(期望值别太高哟)。
2、工作站用户权限设置功能弱,容易造成系统被破坏。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/148088.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...