由ITAA gotolab 作
本文介绍了在不需要光驱和软驱的情况下,如何通过PXE协议快速安装Linux的原理和步骤,这对于提高安装Linux的效率非常有帮助;同时,PXE协议也可以作为无盘linux技术,用于引导远程的Linux启动.
1. 引言
一般情况下,我们都是利用软驱或光驱引导Linux后,再通过本地的光驱安装Linux.但是,这种安装方法在以下的几种情况下就不能适用:
- 无软驱和光驱:很多公司为了节省成本,计算机一般都不带光驱或软驱,这样就无法通过本地安装Linux;
- 非标准的软驱和光驱:虽然笔记本都会配置光驱,但是并不一定都是标准的IDE设备,有些是通过USB接口,有些是通过1394接口(例如Samsung的Q10).在Linux安装时所引导的Linux内核一般都不会带这些接口的驱动,也无法通过本地安装Linux;
- 另外,在一些场合,如机房中,有大量的计算机需要同时安装Linux,如果通过光驱的方式一个个安装,不仅效率低,也不利于维护.
笔者在工作过程中,就遇到过第二种情况.一台Samsung的Q10笔记本需要安装Redhat Linux 8.0,但是通过光驱引导后发现,安装程序无法访问光盘.针对这个问题,笔者经过查阅资料和摸索,找到了在Q10上安装Linux的方法.在下面的讨论中,如不做特别声明,都将以Q10为例,介绍如何通过PXE Bootrom来远程安装Linux.
2. 基本原理
1) 什么是PXE
PXE(Pre-boot Execution Environment)是由英特尔设计的协议,它可以使计算机通过网络启动.协议分为client和server两端,PXE client在网卡的ROM中,当计算机引导时,BIOS把PXE client调入内存执行,并显示出命令菜单,经用户选择后,PXE client将放置在远端的操作系统通过网络下载到本地运行.
拥有帝国一切,皆有可能。欢迎访问phome.netPXE协议的成功运行需要解决以下两个问题:
- 既然是通过网络传输,那么计算机在启动时,它的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协议的工作过程.
2) 工作过程
在上图中,PXE client是需要安装Linux的计算机,TFTP Server和DHCP Server运行在另外一台Linux Server上.Bootstrap文件、配置文件、Linux内核以及Linux根文件系统都放置在Linux Server上TFTP服务器的根目录下.
PXE client在工作过程中,需要三个二进制文件:bootstrap、Linux 内核和Linux根文件系统.Bootstrap文件是可执行程序,它向用户提供简单的控制界面,并根据用户的选择,下载合适的Linux内核以及Linux根文件系统.
拥有帝国一切,皆有可能。欢迎访问phome.net
3. 步骤
有了前面的背景知识,接下来就可以正式操作了,下面按照顺序给出了操作步骤:
1) 配置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;
}
拥有帝国一切,皆有可能。欢迎访问phome.net |
|