本地无 光 , 软驱 如何通过PXE的方式远程安装linux

如何远程安装Linux
作者:汤凯;;;;本文选自:IBM;DW中国;;2002年12月06日

一般情况下,我们都是利用软驱或光驱引导Linux后,再通过本地的光驱安装Linux 。但是,这种安装方法在以下的几种情况下就不能适用:;

·;无软驱和光驱:很多公司为了节省成本,计算机一般都不带光驱或软驱,这样就无法通过本地安装Linux;;

·;非标准的软驱和光驱:虽然笔记本都会配置光驱,但是并不一定都是标准的IDE设备,有些是通过USB接口,有些是通过1394接口(例如Samsung的Q10) 。在Linux安装时所引导的Linux内核一般都不会带这些接口的驱动,所以也无法通过本地安装Linux;;

另外,在一些场合,如机房中,有大量的计算机需要同时安装Linux,如果通过光驱的方式一个个安装,不仅效率低,也不利于维护 。;

笔者在工作过程中,就遇到过第二种情况 。一台Samsung的Q10笔记本需要安装Redhat;Linux;8.0,但是通过光驱引导后发现,安装程序无法访问光盘 。针对这个问题,笔者经过查阅资料和摸索,找到了在Q10上安装Linux的方法 。在下面的讨论中,如不做特别声明,都将以Q10为例,介绍如何通过PXE;Bootrom来远程安装Linux 。;


基本原理


什么是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的配置文件是/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

推荐阅读