无盘安装linux,PXE实现无人值守无盘批量安装CentOS 6

PXE(Pre-boot Execution

Environment)是由Intel设计的协议,它可以使计算机通过网络启动。协议分为client和server两端,PXE

client在网卡的ROM中,当计算机引导时,BIOS把PXE client调入内存执行,并显示出命令菜单,经用户选择后,PXE

client将放置在远端的操作系统通过网络下载到本地运行。

工作过程

第一步:PXE Client向DHCP发送请求

首先,将支持PXE的网络接口卡(NIC)的客户端的BIOS设置成为网络启动,通过PXE

BootROM(自启动芯片)会以UDP(简单用户数据报协议)发送一个广播请求,向网络中的DHCP服务器索取IP地址等信息。

第二步:DHCP服务器提供信息

DHCP服务器收到客户端的请求,验证是否来至合法的PXE

Client的请求,验证通过它将给客户端一个“提供”响应,这个“提供”响应中包含了为客户端分配的IP地址、pxelinux启动程序(TFTP)位置,以及配置文件所在位置。

第三步:PXE客户端请求下载启动文件

客户端收到服务器的“回应”后,会回应一个帧,以请求传送启动所需文件。这些启动文件包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img,boot.msg,vesamenu.c32等文件。

第四步:Boot Server响应客户端请求并传送文件

当服务器收到客户端的请求后,他们之间之后将有更多的信息在客户端与服务器之间作应答, 用以决定启动参数。BootROM 由 TFTP

通讯协议从Boot

Server下载启动安装程序所必须的文件(pxelinux.0、pxelinux.cfg/default,boot.msg,vesamenu.c32)文件下载完成后,会根据该文件中定义的引导顺序,启动Linux安装程序的引导内核。

第五步:请求下载自动应答文件

客户端通过pxelinux.cfg/default文件成功的引导Linux安装内核后,安装程序首先必须确定你通过什么安装介质来安装linux,如果是通过网络安装(NFS,

FTP,

HTTP),则会在这个时候初始化网络,并定位安装源位置。或许你会说,刚才PXE不是已经获取过IP地址了吗?为什么现在还需要一次?这是由于PXE获取的是安装用的内核以及安装程序等,而安装程序要获取的是安装系统所需的二进制包以及配置文件。由于它们需要的内容不同造成PXE模块和安装程序是相对独立的,PXE的网络配置并不能传递给安装程序。从而进行两次获取IP地址过程。

接着会读取该文件中指定的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。

第六步:客户端安装操作系统

将ks.cfg文件下载回来后,通过该文件找到OS

Server,并按照该文件的配置请求下载安装过程需要的软件包。

OS

Server和客户端建立连接后,将开始传输软件包,客户端将开始安装操作系统。安装完成后,将提示重新引导计算机。这个时候注意,在重新引导的过程中一定要将BIOS修改回从硬盘启动,不然的话又会重复的自动安装操作系统。

在上面介绍中PXE client是需要安装Linux的计算机,TFTP Server、DHCP Server和NFS

Server运行在另外一台Linux Server上。Bootstrap文件、配置文件、Linux内核都放置在Linux

Server上TFTP服务器的根目录下。而Linux根文件系统存放于NFS

Server的共享目录中。

PXE client在工作过程中,需要三个二进制文件:bootstrap、Linux

内核和Linux根文件系统。Bootstrap文件是可执行程序,它向用户提供简单的控制界面,并根据用户的选择,下载合适的Linux内核以及Linux根文件系统。

1.安装vsftp tftp dhcp

[root@bogon ~]# yum install vsftpd dhcp tftp tftp-server

system-config-kickstart

2.配置DHCP服务器

[root@bogon ~]# vim /etc/dhcp/dhcpd.conf

# DHCP Server Configuration file.

# see

/usr/share/doc/dhcp*/dhcpd.conf.sample

# see 'man 5

dhcpd.conf'

#

ddns-update-style interim;

ignore client-updates;

subnet 192.168.0.0 netmask 255.255.255.0 {

option

routers 192.168.0.1;

option

subnet-mask 255.255.255.0;

option

nis-domain "domain.org";

option

domain-name "domain.org";

option

domain-name-servers 192.168.0.1;

filename "pxelinux.0";

next-server 192.168.0.99;

option

time-offset -18000;

range

dynamic-bootp 192.168.0.100 192.168.0.254;

default-lease-time

21600;

max-lease-time

43200;

}

图pxe1

a4c26d1e5885305701be709a3d33442f.png 简单说明

next-server 192.168.0.99; #TFTP Server的IP地址

filename "pxelinux.0"; #pxelinux启动文件位置 tftp 的默认目录是 /tftpboot,所以文件的绝对路径就是:

/tftpboot/pxelinux.0";

[root@bogon ~]# vim /etc/sysconfig/dhcpd

# Command line options here

DHCPDARGS="eth0"

3.配置tftp

tftp 服务由xinetd服务管理。编辑 '''/etc/xinetd.d/tftp''' 文件,将 '''disable =

yes''' 改为:disable = no。

[root@bogon ~]# vim /etc/xinetd.d/tftp

# default: off

# description: The tftp server serves files using the trivial file

transfer \

# protocol. The

tftp protocol is often used to boot diskless \

# workstations, download configuration files to

network-aware printers, \

# and to start the installation process for some

operating systems.

service tftp

{

socket_type =

dgram

protocol =

udp

wait =

yes

user =

root

server =

/usr/sbin/in.tftpd

server_args = -s

/tftpboot

disable =

no

per_source =

11

cps = 100

2

flags =

IPv4

}

图pxe2

a4c26d1e5885305701be709a3d33442f.png 注意的的是server_args= -s

/tftpboot这一行,它的含义是将/tftpboot作为root目录,这样在dhcpd.conf中的filename一行就应该写bootstrap的相对路径:

filename “pxelinux.0”.如果你去掉了-s这个参数,那幺就要在filename一行指出bootstrap的绝对路径:

filename “/tftpboot/pxelinux.0”.

挂载光盘,提取光盘镜像里的文件

[root@bogon ~]# mount /dev/cdrom /mnt

[root@bogon ~]# mkdir -pv /tftpboot/pxelinux.cfg

[root@bogon ~]# cp /usr/share/syslinux/pxelinux.0

/tftpboot/

[root@bogon ~]# cp /mnt/images/pxeboot/vmlinuz

/tftpboot/

[root@bogon ~]# cp /mnt/images/pxeboot/initrd.img

/tftpboot/

[root@bogon ~]# cp /mnt/images/pxeboot/boot.msg

/tftpboot/

[root@bogon ~]# cp /mnt/images/pxeboot/vesamenu.c32

/tftpboot/

[root@bogon ~]# cp /mnt/isolinux/isolinux.cfg

/tftpboot/pxelinux.cfg/default

[root@bogon ~]# vim /tftpboot/pxelinux.cfg/default

timeout 6

label linux

menu label ^Install or upgrade

an existing system

menu default

kernel vmlinuz

append

ks=ftp://192.168.0.99/pub/ks.cfg ksdevice=eth0

initrd=initrd.img

图pxe3

a4c26d1e5885305701be709a3d33442f.png 4.配置ftp

ftp默认的配置已经足够使用, 允许匿名访问 ftp主目录在/var/ftp/pub

只需要将系统盘里的安装文件都复制到默认目录就可以了

[root@bogon ~]# cp -r /mnt/ /var/ftp/pub/

5.配置kickstart

需要在图形界面下配置kickstart,通常,我们在安装操作系统的过程需要大量的人机交互过程,为了减少交互过程提高安装效率 Linux

支持一个称为 kickstart

的功能。使用这种方法,只需事先定义好一个Kickstart自动应答配置文件(通常存放在安装服务器上),并让安装程序知道该配置文件的位置,在安装过程中安装程序就可以自己从该文件中读取安装配置,这样就避免了繁琐的人机交互,实现无人值守的自动化安装。

[root@bogon ~]# system-config-kickstart

下面是我的配置文件, 其实你完全可以直接拿来使用,更改为你的ftp服务器ip即可

root 密码是123456

[root@bogon ~]# vim /var/ftp/pub/ks.cfg

#platform=x86, AMD64, or Intel EM64T

#version=DEVEL

# Firewall configuration

firewall --disabled

# Install OS instead of upgrade

install

# Use network installation

url --url="ftp://192.168.0.99/pub"

# Root password

rootpw --iscrypted

$1$TpZ7Gjrt$LtO3xcH4OFR7Fq2QqwJGO/

# System authorization information

auth --useshadow --passalgo=sha512

# Use text mode install

text

firstboot --disable

# System keyboard

keyboard us

# System language

lang en_US

# SELinux configuration

selinux --enforcing

# Installation logging level

logging --level=info

# Reboot after installation

reboot

# System timezone

timezone Asia/Shanghai

# Network information

network --bootproto=dhcp

--device=eth0 --onboot=on

# System bootloader configuration

bootloader --location=mbr

# Partition clearing information

clearpart --all --initlabel

# Disk partitioning information

part /boot --fstype="ext4" --size=200

part swap --fstype="swap" --size=2048

part / --fstype="ext4" --size=10240

%packages

@basic-desktop

%end

图pxe4

a4c26d1e5885305701be709a3d33442f.png 6.配置固定ip, 一定要和dhcp配置的在同一个域, 不然dhcp会启动错误的。

ip 192.168.0.99 netmask

255.255.255.0

图pxe5

a4c26d1e5885305701be709a3d33442f.png 7.关闭防火墙, 关闭Selinux

[root@bogon ~]# service iptables stop

[root@bogon ~]# setenforce 0

8.启动服务

[root@bogon ~]# /etc/init.d/dhcpd restart

[root@bogon ~]# /etc/init.d/vsftpd restart

[root@bogon ~]# /etc/init.d/xinetd restart

9.测试

客户机只需设置BIOS从网络启动即可,开机后可以看到它将按预计引导进入安装画面,此时和用光驱从本地安装的画面是一样的.

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png 2013-5-3 19:57 上传

下载附件 (177.43

KB)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1 无盘工作站及其原理 1.1 无盘工作站 无盘工作站是没有硬盘的计算机终端。它本身不含有硬存储设备,机器引导时需要借助网络上的服务器来传输操作系统启动文件到本地内存,才可以完成启动。因此,无盘工作站必须具有CPU、主板、内存、网卡和远程启动设备。远程启动设备主要以芯片的形式固化或接插在网卡上,在系统启动时负责连接服务器,获取IP地址,指导服务器上的操作系统启动文件到本地内存的传输。目前,远程启动芯片主要有RPL和PXE两种,后者为前者的升级版,目前正在被广泛使用。 1.2 PXE芯片启动原理 PXE芯片在远程启动时,首先要进行一个DHCP会话过程来获取一个IP地址和相关信息,以便进行后续的文件传送;IP地址获取成功后,PXE芯片触发TFTP会话过程,根据DHCP过程获取的相关信息向服务器请求启动文件,服务器接到请求后,根据本地策略,发送相应的启动文件,工作站接收到启动文件后,开始本地启动过程。 以上是PXE芯片无盘工作站启动过程的简单描述,DHCP协议的相关内容可参考RFC2131标准化文档,TFTP协议的相关内容可参考RFC1350标准化文档。 对于Linux操作系统来说,PXE所需要下载的启动文件是配置文件和内核文件。其中,配置文件在DHCP应答报文中包含,通过TFTP会话过程获取;内核文件的名称和位置在配置文件中给出,同样需要通过TFTP会话过程获取;内核文件获取成功后,系统开始进行本地启动,当启动过程进行到需要装载文件系统时,PXE会根据配置文件,向服务器请求连接根文件系统(该文件系统为NFS网络根文件系统)所对应的服务器目录,若成功,则启动结束。下页图1-1给出了这一过程的交互模型。 Linux无盘工作站的详细启动流程如下: Step 1 工作站加电,PXE芯片进行自检; Step 2 准备启动PXE芯片发送DHCP请求; Step 3 服务器收到工作站送出的请求,发送DHCP应答,内容包括客户端的IP地址,预设网关,DNS服务器及开机映象文件(配置文件和内核)位置; Step 4 工作站上的PXE芯片根据配置文件位置,开始TFTP会话请求下载该文件; Step 5 加载映象文件,开始本地启动,挂载NFS网络根文件系统; Step 6 出现Login行,启动成功。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值