如何通过PXE远程安装linux

转载 2008年04月28日 07:19:00
操作步骤
 
1 安装tftp和dhcp服务器
# rpm -ivh tftp-server-0.39-0.EL3.1.c0.i386.rpm
# rpm -ivh dhcp-3.0.1-10_EL3.i386.rpm
 
2 配置tftp和dhcp服务器
# vi /etc/xinetd.d/tftp
=============+==========+===========+============+============
service tftp
{
        disable = no
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -u nobody -s /tftpboot
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}
=============+==========+===========+============+============
 
# cp /usr/share/doc/dhcp-3.0.1/dhcpd.conf.sample /etc/dhcpd.conf
# vi /etc/dhcpd.conf
=============+==========+===========+============+============
option domain-name "systeng.net";
default-lease-time 6000;
max-lease-time 11400;
authourtative;
ddns-update-style ad-hoc;
log-facility local7;
 
subnet 192.168.10.0 netmask 255.255.255.0{
range 192.168.10.150 192.168.10.155;
option domain-name-servers 202.99.160.68;
option domain-name "systeng.net";
option netbios-name-servers 192.168.10.1;
option routers 192.168.10.1;
option broadcast-address 192.168.10.255;
default-lease-time 6000;
max-lease-time 11400;
filename "/pxelinux.0";
}
=============+==========+===========+============+============
 
3 配置支持PXE
# mkdir /tftpboot
# cp /usr/lib/syslinux/pxelinux.0 /tftpboot
把LINUX第一张安装光盘上/image/pxeboot/initr.img和vmlinux 以及isolinux/*.msg考到/tftpboot目录下
# cd /tftpboot
# mkdir pxelinux.cfg
# vi default
=============+==========+===========+============+============
default
prompt 1
timeout 30
display boot.msg
F1 boot.msg
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
F7 snake.msg
label local
  localboot 0
label linux
  kernel vmlinuz
  append initrd=initrd.img devfs=nomount ramdisk_size=9216
label text
  kernel vmlinuz
  append initrd=initrd.img text devfs=nomount ramdisk_size=9216
label expert
  kernel vmlinuz
  append expert initrd=initrd.img devfs=nomount ramdisk_size=9216
label ks
  kernel vmlinuz
  append ks initrd=initrd.img devfs=nomount ramdisk_size=9216
label nofb
  kernel vmlinuz
  append initrd=initrd.img devfs=nomount nofb ramdisk_size=9216
label lowres
  kernel vmlinuz
  append initrd=initrd.img lowres devfs=nomount ramdisk_size=9216
kernel vmlinuz
=============+==========+===========+============+============
 
4 配置NFS服务
# vi /etc/exports
/home/iso/      192.168.10.0/24(ro,sync)
# mkdir /home/iso
拷贝安装LINUX的ISO文件到这个目录
 
5 需要开启的系统服务
/dhcpd/network/nfs/portmap/syslog/tftp/xinetd/
 
6 硬件需求
网卡上需要添加PXE远程启动芯片
 
 
 
附: 如何远程安装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
# 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!
 
结束语
 
虽然以上的讨论是针对Samsung Q10笔记本,但是工作原理和安装方法对于其它类型的计算机也是适用的,不过要记住,计算机的网卡中必须要有BootROM–PXE Client。同时,PXE协议也可作为无盘Linux技术,用于引导放置在远程的Linux。实际上,只要根据需要,在Pxelinux的配置文件的 APPEND选项中,为Linux内核传进需要mount的文件系统的位置参数即可。
 
关于作者
 
汤凯,解放军理工大学指挥自动教研室讲师。

如何一次通过软考?

通过本课程期望学员能够快速了解软考这门考试,对人事部最新软考政策改革有所了解。解读2017年软考中高项考情变化,2018年软考趋势展望。最后给期望备考软考中高项学员一些备考建议,选择题&案例题&论文讨论和答题技巧,让大家学有所获,不虚此行!
  • 2018年03月23日 08:49

PXE网络安装Linux操作系统原理与详细过程

在工作中经常会遇到这样的情况:想要安装Linux但是计算机不带光驱或软驱,或者是笔记本配置的非标准的软驱和光驱,如1394接口,USB接口等,在Linux安装时所引导的Linux内核一般都不会带这些接...
  • yincg
  • yincg
  • 2017-04-24 13:21:36
  • 2026

Windows系统远程安装服务及PXE技术

http://apps.hi.baidu.com/share/detail/21392979 摘 要:现今各学校的电子阅览室和计算机机房都拥有几十甚至上百台计算机,在不为大多数计算机配备光驱和软...
  • STK_tianwen
  • STK_tianwen
  • 2011-05-03 23:08:00
  • 1663

linux远程安装系统

  • 2009年04月22日 12:55
  • 33KB
  • 下载

pxe网络安装操作系统 原理与详细过程

摘要:在实际工作中,我们经常会遇到这样的情况:想要安装Linux但是计算机不带光驱或软驱,或者是笔记本配置的非标准的软驱和光驱,如1394接口,USB接口等,在Linux安装时所引导的Linux内核一...
  • trochiluses
  • trochiluses
  • 2013-09-16 17:23:05
  • 10113

Linux下搭建PXE服务器安装Linux系统

PXE服务器安装与配置 原理: PXE是在没有软驱、硬盘、CD-ROM的情况下引导计算机的一种方式,也就是BIOS将使用PXE协议从网络引导。 DHCP服务器:用来动态分配IP地址(同时分配子网掩码、...
  • scottly1
  • scottly1
  • 2014-05-16 22:08:22
  • 7793

通过PXE+NFS远程安装FreeBSD

【原创之Only FreeBSD】通过PXE+NFS远程安装FreeBSD
  • cnbird2008
  • cnbird2008
  • 2010-11-08 15:15:00
  • 1273

pxe无人值守安装linux机器笔记

最近做一些集群的测试的工作,做服务器测试最根本就是要安装系统,曾经我们用十几个光驱并行安装光驱的日子过去了,自从有了pxe一两天搭建好一个集群不是梦!当然做多了集群的搭建工作最多的感受就是,其实运维工...
  • wangyaninglm
  • wangyaninglm
  • 2016-09-23 00:05:35
  • 1426

PXE远程启动过程分析

基本原理   1) 什么是PXE   PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动。协议分为client和server...
  • miss_acha
  • miss_acha
  • 2015-12-21 17:00:20
  • 4941

PXE实现批量安装部署(win与linux系统)

1、PXE简介 PXE(preboot execute environment)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,...
  • nanqing
  • nanqing
  • 2016-06-29 17:10:34
  • 10655
收藏助手
不良信息举报
您举报文章:如何通过PXE远程安装linux
举报原因:
原因补充:

(最多只允许输入30个字)