CentOS 6.4下PXE+Kickstart无人值守安装操作系统

CentOS 6.4PXE+Kickstart无人值守安装操作系统

CentOS 6.4PXE+Kickstart无人值守安装操作系统 - David_Tang - 博客园

http://www.cnblogs.com/mchina/p/centos-pxe-kickstart-auto-install-os.html

 

一、简介

1.1 什么是PXE

PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTPtrivial file transfer protocol)或MTFTP(multicast trivial file transferprotocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。

严格来说,PXE 并不是一种安装方式,而是一种引导方式。进行 PXE 安装的必要条件是在要安装的计算机中必须包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE ClientPXE 协议可以使计算机通过网络启动。此协议分为 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,那么它就可以通过 TFTP 协议到 TFTP Server 上下载所需的文件了。

PXE的工作过程:

1. PXE Client 从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP

2. DHCP 服务器返回分配给客户机的IP 以及PXE文件的放置位置(该文件一般是放在一台TFTP服务器上)

3. PXE Client 向本网络中的TFTP服务器索取pxelinux.0 文件;

4. PXE Client 取得pxelinux.0 文件后之执行该文件;

5. 根据pxelinux.0 的执行结果,通过TFTP服务器加载内核和文件系统

6. 进入安装画面, 此时可以通过选择HTTPFTPNFS 方式之一进行安装;

详细工作流程,请参考下面这幅图:

yuanli

1.2 什么是Kickstart

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

PXE+Kickstart 无人值守安装操作系统完整过程如下:

kickstart

二、系统环境

实验环境:VMware Workstation 10

系统平台:CentOS release 6.4 (最小化安装)

网络模式:NAT模式(共享主机的IP地址)

DHCP / TFTP IP192.168.111.130

HTTP / FTP / NFS IP192.168.111.130

防火墙已关闭/iptables:Firewall is not running.

SELINUX=disabled

三、准备工作

生成ks.cfg 文件需要system-config-kickstart 工具,而此工具依赖于X Windows,所以我们需要安装X Windows Desktop 并重启系统,操作如下:

# yum groupinstall "X WindowSystem"

# yum groupinstall Desktop

# reboot

四、配置HTTP安装方式

系统的安装方式可以选择HTTPFTP NFS,我们这里介绍HTTP方式的安装,其他两种方式的安装,大家可以自行百度。

4.1 安装并配置HTTP

# yum install httpd �Cy

# rpm -qa|grep httpd 

2

开启服务并设置开机启动

# /etc/init.d/httpd start

# chkconfig --level 35 httpd on

4.2 加载ISO镜像

在虚拟机中设置加载ISO镜像。

18

iso文件挂载至/mnt/cdrom.

3

4.3 复制光盘全部内容至http 的根目录/var/www/html/

# cp -r /mnt/cdrom/ /var/www/html/

HTTP部分设置完毕。

五、配置TFTP

5.1 安装tftp-server

# yum install tftp-server �Cy

5.2 启用tftp 服务

# vi /etc/xinetd.d/tftp

复制代码

service tftp

{

        socket_type             = dgram

        protocol                = udp

        wait                    = yes

        user                    = root

        server                  = /usr/sbin/in.tftpd

        server_args             = -s /var/lib/tftpboot

        disable                = no

        per_source              = 11

        cps                     = 1002

        flags                   = IPv4

}

复制代码

disable 设置为no

5.3 启动tftp服务

因为tftp服务是挂载在超级进程xinetd 下的,所以通过启动xinetd 来启动tftp服务。

# /etc/init.d/xinetd restart

4

设置开机启动xinetd

# chkconfig xinetd on

六、配置支持PXE的启动程序

6.1 复制pxelinux.0 文件至/var/lib/tftpboot/ 文件夹中

先要安装syslinux

#yuminstall syslinux -y

# cp /usr/share/syslinux/pxelinux.0/var/lib/tftpboot/

说明:syslinux是一个功能强大的引导加载程序,而且兼容各种介质。更加确切地说:SYSLINUX是一个小型的Linux操作系统,它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。

6.2 复制iso 镜像中的/image/pxeboot/initrd.img vmlinux /var/lib/tftpboot/ 文件夹中

# cp/var/www/html/cdrom/images/pxeboot/{initrd.img,vmlinuz} /var/lib/tftpboot/

6.3 复制iso 镜像中的/isolinux/*.msg /var/lib/tftpboot/ 文件夹中

# cp /var/www/html/cdrom/isolinux/*.msg/var/lib/tftpboot/

6.4 /var/lib/tftpboot/ 中新建一个pxelinux.cfg目录

# mkdir /var/lib/tftpboot/pxelinux.cfg

6.5 iso 镜像中的/isolinux 目录中的isolinux.cfg复制到pxelinux.cfg目录中,同时更改文件名称为default

# cp/var/www/html/cdrom/isolinux/isolinux.cfg/var/lib/tftpboot/pxelinux.cfg/default

6.6 修改default文件

#vi /var/lib/tftpboot/pxelinux.cfg/default

复制代码

default ks #默认启动的是 'label ks' 中标记的启动内核

prompt 1         #显示 'boot: ' 提示符。为 '0' 时则不提示,将会直接启动 'default' 参数中指定的内容。

timeout 6#在用户输入之前的超时时间,单位为 1/10 秒。

displayboot.msg  #显示某个文件的内容,注意文件的路径。默认是在/var/lib/tftpboot/ 目录下。也可以指定位类似 '/install/boot.msg'这样的,路径+文件名。

F1 boot.msg #按下 'F1' 这样的键后显示的文件。

F2 options.msg

F3 general.msg

F4 param.msg

F5 rescue.msg

label linux       #'label' 指定你在 'boot:' 提示符下输入的关键字,比如boot:linux[ENTER],这个会启动'label linux' 下标记的kernel 和initrd.img 文件。

  kernel vmlinuz  #kernel 参数指定要启动的内核。

  append initrd=initrd.img #append 指定追加给内核的参数,能够在grub 里使用的追加给内核的参数,在这里也都可以使用。

label text

  kernel vmlinuz

  append initrd=initrd.img text

label ks

  kernel vmlinuz

  append ks=http://192.168.111.130/ks.cfginitrd=initrd.img    #告诉系统,从哪里获取ks.cfg文件

label local

  localboot 1

label memtest86

  kernel memtest

  append -

复制代码

 

注:要把注释全去掉

 

七、配置DHCP

7.1 安装DHCP服务

# yum -y install dhcp

7.2 复制配置模板文件到DHCP的配置目录中

# cp -f /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf

7.3 修改/etc/dhcp/dhcpd.conf 配置文件,内容如下:

复制代码

ddns-update-styleinterim;

ignoreclient-updates;

filename"pxelinux.0"; #pxelinux 启动文件位置;

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

 

subnet 192.168.111.0 netmask 255.255.255.0 {

 

        option routers                  192.168.111.130;

        option subnet-mask              255.255.255.0;

 

        range dynamic-bootp 192.168.111.100 192.168.111.200;

        default-lease-time 21600;

        max-lease-time 43200;

}

复制代码

 

注:要把注释全去掉

 

7.4 启动DHCP服务

# /etc/init.d/dhcpd start

5

八、生成ks.cfg 文件

8.1 安装Kickstart

# yum install system-config-kickstart

8.2 在桌面环境下配置Kickstart

启动X Windows 环境

# startx

配置Kickstart

# system-config-kickstart

A. 设置语言,键盘,时区,Root密码,安装完毕后重启等。

6

B. 设置安装方式,这篇文章介绍的是HTTP方式的安装,故选择HTTP

http://images.cnitblog.com/i/370046/201406/181628036291619.jpg

C. 安装MBR

8

D. 设置分区

9

E. 分区总览

10

F. 配置网络

11

G. 认证配置

12

H. SELinux 和防火墙配置

13

I. 图形环境配置

14

J. 软件包安装选择

15

K. 预览

spacer.gif

16

L. 生成ks.cfg 文件,保存在/var/www/html/ 文件夹下

17

我们可以打开/var/www/html/ks.cfg文件进行查看并做修改。

复制代码

platform=x86,AMD64, or Intel EM64T

#version=DEVEL

# Firewallconfiguration

firewall--disabled

# Install OSinstead of upgrade

install

# Use networkinstallation

url--url=http://192.168.111.130/cdrom/ #这个选项告诉安装程序:到服务器192.168.111.130 的HTTP根目录下的cdrom 文件夹下寻找安装介质

# Root password

rootpw --iscrypted$1$vsvtP./e$6PVMNfJd.shq2LgFJjYfA1

# Systemauthorization information

auth  --useshadow --enablemd5

# Use graphicalinstall

graphical

firstboot--disable

# System keyboard

keyboard us

# System language

lang en_US

# SELinuxconfiguration

selinux --disabled

# Installationlogging level

logging--level=info

# Reboot afterinstallation

reboot

# System timezone

timezone  --isUtc Asia/Shanghai

# Networkinformation

network  --bootproto=dhcp --device=eth0 --onboot=on

# Systembootloader configuration

key --skip

bootloader--append="rhgb quiet" --location=mbr --driveorder=sda

# Clear the MasterBoot Record

zerombr

# Partitionclearing information

clearpart --all--initlabel

# Diskpartitioning information

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

part swap--fstype="swap" --size=1024

part /home--fstype="ext4" --size=2048

 

%packages

@base

 

%end

复制代码

说明:key --skip 如果是红帽系统,此选项可以跳过输入序列号过程;如果是CentOS 系列,则可以不保留此项内容;

reboot 此选项必须存在,也必须文中设定位置,不然kickstart显示一条消息,并等待用户按任意键后才重新引导;

clearpart --all --initlabel 此条命令必须添加,不然系统会让用户手动选择是否清除所有数据,这就需要人为干预了,从而导致自动化过程失败;

九、测试安装

自动化安装系统配置完毕,下面启动一台新的机器进行测试,网络连接模式选择NAT模式。

19

新建虚拟机,选择自定义(高级)

20

选择稍后安装操作系统

21

选择客户机操作系统类型

22

命名虚拟机

23

设置此虚拟机的内存

24

设置网络类型

25

选择I/O控制器类型

26

选择磁盘类型

27

选择磁盘

28

指定磁盘大小,ks.cfg 文件中,我们定义了/ 大小为8GBswap 分区为1GB/home 分区为2GB,所以这里的磁盘大小至少要为12GB

而且,一定要勾选上立即分配所有磁盘空间,不然在后来安装的时候将提示没有磁盘空间。

29

指定磁盘文件

30

虚拟机总览

31

正在创建磁盘,过程会很慢,虚拟机需要产生一个20GB的文件。

32

启动虚拟机,选择从网卡启动,DHCP 服务器正在给客户机分配IP地址。

35

开始下载vmlinuz initrd.img

33

安装过程...

34

安装过程...

36

安装过程...

37

安装完毕,重启后,显示登录界面

38

登录系统查看,磁盘分区和我们在ks.cfg 文件中设定的一样。

39

PXE+Kickstart 无人值守安装操作系统环境搭建完毕。

 

 

九、自己配置虚拟机

9.1网卡:

spacer.gif

9.2 ks.cfg配置文件

[root@hchtest3 html]# cat 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="http://10.72.16.93/cdrom"

# Root password

rootpw --iscrypted$1$CRUpC6HE$.gHjNDJpRoqlqu.U3xVIP.

# System authorization information

auth --useshadow  --passalgo=sha512

# Use graphical install

graphical

firstboot --disable

# System keyboard

keyboard us

# System language

lang en_US

# SELinux configuration

selinux --disabled

# 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

key --skip

bootloader --location=mbr

# Clear the Master Boot Record

zerombr

# Partition clearing information

clearpart --all --initlabel

# Disk partitioning information

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

part swap --fstype="swap"--size=4096

part /home --fstype="ext4"--size=2048

 

%packages

@basic-desktop

@x11

 

%end

 

 

9.3修改ks.cfg,配置支持lvm逻辑卷:

LVM管理磁盘有很多好处,比如磁盘空间的动态调整,将多个磁盘当成一个分区使用,但system-config-kickstart工具不支持LVM逻辑卷的分区设置,因此只能生成后手动修改,ks.cfg逻辑卷的语法如下:

 

#Disk partitioninginformation

part pv.

volgroup name partition

logvol--vgname=<volume_group_name> --size= --name=

 

注意:上面提到的选项是有先后顺序的。物理卷将先被创建,然后是卷组和逻辑卷。

如我的目标磁盘如下:

 

[root@test ~]# df -h

文件系统             容量  已用  可用已用%% 挂载点

/dev/mapper/vg_root-lv_root

20G  2.0G  17G  11% /

tmpfs                 499M     0 499M   0% /dev/shm

/dev/sda1             291M   33M 244M  12% /boot

/dev/mapper/vg_root-lv_home

40G  176M  38G   1% /home

/dev/mapper/vg_root-lv_var

9.9G  198M 9.2G   3% /var

 

则配置ks.cfg文件内容如下:

 

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

……以上省略……

# Partition clearinginformation

clearpart --all --initlabel

# Disk partitioninginformation

part /boot --asprimary--fstype="ext4" --size=300      ##启动分区必须是主分区

part swap--fstype="swap" --size=2048                ##SWAP分区

part pv.01 --size=1 --grow                           ##剩余空间建立物理卷

volgroup vg_root  pv.01                           ##建立卷组

logvol / --vgname=vg_root--size=20480 --name=lv_root   ##建立根逻辑卷

logvol /var--vgname=vg_root  --size=10240--name=lv_var  ##建立var目录逻辑卷

logvol /home --vgname=vg_root--size=40960  --name=lv_home  ##建立家目录逻辑卷

##以上空间大小根据实际需要和磁盘空间情况进行调整

%packages

@base

@chinese-support

@console-internet

@core

……以下省略……

 

6、安装后执行脚本写法:

比如我内网服务器不能上网,我将所有yum源更改为此ftp服务器,则ks.cfg文件如下:

 

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

……以上省略……

%post --interpreter=/bin/bash

rm -rf /etc/yum.repos.d/*

echo '[centos6]

name=centos6

baseurl=ftp://192.168.18.20/pub/centos6/

enabled=1

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6'> /etc/yum.repos.d/centos6.repo

##此处脚本还可以统一放在ftp服务器上,用命令先下载后在本地执行,如下面几行:

#mkdir /var/scripts

#wgetftp://192.168.18.20/pub/scripts/* -O /var/scripts ##将所有脚本下载在本地

#chmod +x /var/scripts/* -R##赋予全部脚本执行权限

#/var/scripts/xxx1.sh

#/var/scripts/xxx2.sh

%end

……以下省略……

 

要实现其他功能,方法一样。

 

Linux全自动PXE无人值守安装服务器配置 |旺旺知识库

http://www.toxingwang.com/linux-unix/linux-admin/739.html

 

配置ks.cfg文件:

在弹出的界面中,基础配置修改如下红框标准的地方: 

1
安装方法: 

2
启动选项保存默认:3
分区信息,具体分区留待后面单独介绍: 

4
网络配置: 

5
防火墙配置保存默认,SeLinux可以不关闭,其能为http、ftp等应用带来跟高的安全性,参考6
显示配置保存默认安装包选择根据实际情况配置,一般为了安全和简洁,最小化安装即可: 7
安装后脚本,可以编写一些shell脚本,完成服务器的初始化操作,如添加yum源、重命名主机,完成基本安全配置,加入统一认证中心等。如下面的示例为更改安装后的yum源为内部ftp地址:

spacer.gif

完成后点击“file”按钮保存至ftp根目录/var/ftp/ks.cfg

 

配置装机后的服务启动,和参数修改如下:

centos6.6 Kickstart无人值守安装(三):配置篇B - vasks_ffei的个人空间 - 开源中国社区

http://my.oschina.net/VASKS/blog/390322

 

 

参考链接:

CentOS配置PXE启动 tftp+DHCP 批量安装系统 | 千思网

http://www.qiansw.com/centos-pxe-tftp-dhcpd.html

 


你可能感兴趣的:(linux)