您的位置:首页 > 运维架构 > Linux

PXE+KickStart+DHCP+NFS无人值守linux安装

2012-08-10 15:30 826 查看
原理有必要说明一下 (百度偷来的)

原理和概念:

1.1 什么是PXE

严格来说,PXE 并不是一种安装方式,而是一种引导的方式。进行 PXE 安装的必要条件是要安装的计算机中包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE (Pre-boot Execution Environment)协议使计算机可以通过网络启动。协议分为 client 和 server 端,PXE client 在网卡的 ROM 中,当计算机引导时,BIOS 把 PXE client 调入内存执行,由 PXE client 将放置在远端的文件通过网络下载到本地运行。运行 PXE 协议需要设置 DHCP 服务器和 TFTP 服务器。DHCP 服务器用来给 PXE client(将要安装系统的主机)分配一个 IP 地址,由于是给 PXE client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。此外,在 PXE client 的 ROM 中,已经存在了 TFTP Client。PXE Client 通过 TFTP 协议到 TFTP Server 上下载所需的文件。

1.2 什么是KickStart

KickStart是一种无人职守安装方式。KickStart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为ks.cfg的文件;在其后的安装过程中(不只局限于生成KickStart安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找KickStart生成的文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。这样,如果KickStart文件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中设置的重启选项来重启系统,并结束安装。

1.3 PXE + KickStart安装的条件

执行 PXE + KickStart安装需要的设备为:

• DHCP 服务器;

• TFTP 服务器;

• KickStart所生成的ks.cfg配置文件

• 一台存放系统安装文件的服务器,如 NFS、HTTP 或 FTP 服务器。

• 带有一个 PXE 支持网卡的将安装的主机;

工作过程图



安装步骤

环境:

OS:CentOS 5.5 x86_64

ip adress:192.168.20.20

两台VM:一台做Server,一台来装系统

(如果你的系统是CentOS 5.5 32位或者其它版本的Linux,请自行适合的修改)

1.mount CentOS DVD

mount /dev/cdrom /mnt [挂载光驱]

2.install tftp-server

yum -y install tftp-server.x86_64

vim /etc/xinetd.d/tftp

service tftp

{

socket_type             = dgram

protocol                = udp

wait                    = yes

user                    = root

server                  = /usr/sbin/in.tftpd

server_args             = -s /tftpboot

disable                 = no                  #[将'yes'改为'no']

per_source              = 11

cps                     = 100 2

flags                   = IPv4

}

service xinetd start [启动tftp服务]

3.configuration PXE

mkdir /tftpboot [如果没有这个文件夹就创建]

cp /usr/lib/syslinux/pxelinux.0 /tftpboot/

cp /mnt/images/pxeboot/initrd.img /tftpboot/

cp /mnt/images/pxeboot/vmlinuz /tftpboot/

cp /mnt/isolinux/*.msg /tftpboot/ [复制linux开机引导文件]

mkdir /tftpboot/pxelinux.cfg

cp /mnt/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default

4.install DHCP

yum -y install dhcp.x86_64

cp /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcpd.conf

vim /etc/dhcpd.conf

ignore client-updates;

next-server 192.168.20.20;     #[添加,next-server 是tftp server]

filename "/pxelinux.0";        #[添加]

subnet 192.168.20.0 netmask 255.255.255.0 {                 #[网段申明]

# --- default gateway

option routers                  192.168.20.254;     #[网关]

option subnet-mask              255.255.255.0;      #[子网俺码]

option nis-domain               "domain.org";

option domain-name              "domain.org";

option domain-name-servers      8.8.8.8;             #[DNS]

option time-offset              -18000; # Eastern Standard Time

#       option ntp-servers              192.168.1.1;

#       option netbios-name-servers     192.168.1.1;

# --- Selects point-to-point node (default is hybrid). Don't change this unless

# -- you understand Netbios very well

#       option netbios-node-type 2;

range dynamic-bootp 192.168.20.20 192.168.20.254;    #[ip pools]

default-lease-time 21600;

max-lease-time 43200;

# we want the nameserver to appear at a fixed address

#       host ns {

#               next-server marvin.redhat.com;

#               hardware ethernet 12:34:56:78:AB:CD;

#               fixed-address 207.175.42.254;

#       }      #[由于本次实验中DHCP Server只用于安装无人值守安装,这些都用不着,注释最后几行。实际环境中,视情况而定]

}

service dhcpd start

5.install NFS

yum -y install nfs-* [CentOS默认是安装的]

mkdir /tftpboot/ks [先在tftpboot目录下创建ks文件,一会存放ks.cfg时用]

vim /etc/exports

/mnt    *(ro)      #[添加这两个共享文件夹,'*'任何人可以访问,'(ro)'即read only]
/tftpboot/ks/    *(ro)

service portmap start [首先启动这个服务,这是nfs的依赖服务]

service nfs start

6.install KickStart

yum -y install system-config-kickstart.noarch [install kickstart]

yum -y groupinstall "X Window System" [如果GNOME环境,请执行本行及下行命令。如果你不希望安装GNOME环境,KickStart也可以不安装,直接复制我这的ks.cfg代码合适的修改便可。当然其它版本的linux的ks.cfg代码不一样]

yum -y groupinstall "GNOME Desktop Environment"

startx [进入desktop,kickstart必须在desktop环境下配置]

system-config-kickstart [start kickstart]

定制KickStart [下图只是例子,实际根据各自需求而定]





因为CentOS安装盘挂载在/mnt,所以这里的目录是/mnt





























记得最少安装一个包,不然在安装系统的时候,会弹出一个对话框,让你手动选择需要安装的包













下面是利用KickStart生成的ks.cfg,也可以直接在这里适当修改参数

lang en_US
# Installation logging level
logging --level=info
# Use NFS installation media
nfs --server=192.168.20.20 --dir=/mnt
# Network information
network --bootproto=dhcp --device=eth0 --onboot=on
# Reboot after installation
reboot
#Root password
rootpw --iscrypted $1$SjnCI7rG$4JhDvTrZ4Xo4fdpjOriBU/

# SELinux configuration
selinux --enforcing
# Do not configure the X Window System
skipx
# System timezone
timezone  Asia/Shanghai
# Install OS instead of upgrade
install
# Disk partitioning information
part swap --bytes-per-inode=4096 --fstype="swap" --size=2048
part /boot --bytes-per-inode=4096 --fstype="ext3" --size=100
part / --bytes-per-inode=4096 --fstype="ext3" --size=10240
part /data --bytes-per-inode=4096 --fstype="ext3" --grow --size=1

%packages
@editors


cp /root/ks.cfg /tftpboot/ks/

chmod 777 /tftpboot/pxelinux.cfg/default

vim /tftpboot/pxelinux.cfg/default

default ks       #[修改为'ks']

prompt 1

timeout 3

display boot.msg

F1 boot.msg

F2 options.msg

F3 general.msg

F4 param.msg

F5 rescue.msg

label linux

kernel vmlinuz

append initrd=initrd.img

label text

kernel vmlinuz

append initrd=initrd.img text

label ks

kernel vmlinuz

append ks=nfs:192.168.20.20:/tftpboot/ks/ks.cfg initrd=initrd.img   #[这里是ks的路径]
label local

localboot 1

label memtest86

kernel memtest

append -


7.closed Firewall and SElinux

setup









8.验证奇迹的时刻来啦

开启需要安装的电脑,倒杯COFFEE,看它自动安装喽。。。。

默认情况下不需要任何设置,如果电脑自动不能找到PXE启动或叫Network boot from XX开机启动模式,就手动选择吧。

一般临时选择是按Esc或F12或F11再或者其它,因电脑品牌而异。。

如果在boot里将设置PXE设置成第一启动选项,记得安装完系统后,改回硬盘启动,否则电脑会一直装系统,,,

9.总结

VM安装需注意几点:

关闭网卡自带的DHCP;

网卡模式用桥接;

最后贴几张PC安装时的图吧

















本文出自 “Wowking” 博客,请务必保留此出处http://wowking.blog.51cto.com/1638252/960338
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: