Pxe+kickstart制动安装系统

所需环境 pxe+kickstart+dhcp+tftp+vsftpwwwnfsnfs+vsftp

由于本人在redhat6上环境中实验可能于rehat5有所不同,重要不同的地方我都有标注

一.概念

Pxe

   Pxe是一种引导的方式,安装pxe要求网卡的支持,pxe分为S,C端,C端将pxe的安装在网卡的rom中,当计算机引导时,biospxe调入内存执行,C端将放置S端的文件通过(tftp)下载到本地运行,这时想两主机互通就必须要有IP地址 就需要dhcp来对C端分配IP地址。所以pxe要基于(ptftp+dhcp)。

Kickstart

     Kickstart是一种无人值守的安装方式,kickstart通过记录典型的安装过程所需要人工干预填写的各种参数,生成一个模板文件ks.cfg(可任意取名)当在制动装机的时候,会按ks.cfg的参数来安装,没有所需参数时要手工干预。

二.部署过程

1.先安装好所需的服务

#yum install *tftp*

#yum install *kickstart*

#yum install *dhcp*

#yum install *nfs*

2.dhcp配置文件

原先是什么内容也没有,可以cat 样板文件到配置文件

#cat /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample |tee /etc/dhcp/dhcpd.conf

redhat5dhcp.d/etc下)根据自己所需进行修改

#netstat -nulp | grep dhcpd 

udp      0     0 0.0.0.0:67          0.0.0.0:*      29927/dhcpd                            

说明开启了dhcp

查看下dhcpd的配置文件

#cat /etc/dhcp/dhcpd.conf

# dhcpd.conf

# option definitions common to all supported networks...

option domain-name "lin.com";      域名

#option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;  默认租凭时间

max-lease-time 7200;  最长租凭时间

# Use this to enble / disable dynamic dns updates globally.

ddns-update-style none;

作用:定义所支持的dns动态更新类型。

none :表示不支持动态更新。

interim :表示DNS互动更新模式。

ad-hoc :表示特殊的DNS更新模式。

# If this DHCP server is the official DHCP server for the local

# network, the authoritative directive should be uncommented.

authoritative;  设置为高优先级的dhcp服务器

next-server 192.168.50.4; 引导文件的主机地址

# Use this to send dhcp log messages to a different log file (you also

# have to hack syslog.conf to complete the redirection).

log-facility local7;  设置日志的路径

dhcp服务器的地址池:(dhcp服务器的ip要在这范围内)

subnet 192.168.50.0 netmask 255.255.255.0 {  

  range 192.168.50.250 192.168.50.240;

  dhcp服务器服务器的分配的地址池

  option domain-name-servers 192.168.50.4;

   dhcp服务器的地址

  option domain-name "lin.com";

  dhcp服务器的域名

  option routers 192.168.50.254;

  dhcp发配下去的的网关

  option broadcast-address 192.168.50.255;

   广播地址

  default-lease-time 600;

  max-lease-time 7200;

  filename "/pxelinux.0";指定客户端启动要载入的初始启动文件

}

3.tftp的配置

配置文件:/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

        per_source              = 11

        cps                     = 100 2

        flags                   = IPv4

}

#netstat -nulp |grep 69

udp      0     0 0.0.0.0:69        0.0.0.0:*    9650/xinetd 

说明tftp已经开启  

iso挂载在/mnt 或者直接把ios复制在/mnt下 不要每次都去挂载,这里我是把 ios复制在/mnt

#cd /tftpboot

#cp -rv /mnt/iso5/isolinux/*  

#mkdir pxelinux.cfg

#cp ioslinux.cfg  ./pxelinux.cfg/default

#cp /usr/share/syslinux/pxelinux.0  ./

Kickstart的使用

打开xmanager的被动模式

#export DISPLAY=192.168.50.5:0

#system-config-kickstart

设置安装选项

保存

生成一个ks.cfg文件

#cat ks.cfg

#platform=x86, AMD64, or Intel EM64T

#version=DEVEL

# Firewall configuration

firewall --disabled

# Install OS instead of upgrade

install

# Use NFS installation media

nfs --server=192.168.50.4 --dir=/mnt/iso5

# Root password

rootpw --iscrypted $1$/zcqnuN1$dtOz0N9i5DEHsUgn8AdKm/

# Network information

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

# System authorization information

auth  --useshadow  --passalgo=md5

# Use graphical install

graphical

# Run the Setup Agent on first boot

firstboot --enable

# System keyboard

keyboard us

# System language

lang zh_CN

# SELinux configuration

selinux --disabled

# Installation logging level

logging --level=info

# Reboot after installation

reboot

# System timezone

timezone  Asia/Shanghai

# System bootloader configuration

bootloader --location=mbr

# Clear the Master Boot Record

zerombr

# Partition clearing information

clearpart --all --initlabel 

# Disk partitioning information

part /boot --asprimary --fstype="ext3" --size=100

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

part / --asprimary --fstype="ext3" --grow --size=1

在自动安装过程中,有遇到手工干预,调试这个文件,实现全自动。

三.nfs的配置

因为我这里是在rehat6上,所以portmapnfs已经结合,跟rehat5不一样的启动nfs就自动启动portmap

#cat /etc/export 

/mnt/iso5  192.168.50.0/24(ro,sync)

/tftpboot  192.168.50.0/24(ro,sync)

# showmount -e 127.0.0.1

Export list for 127.0.0.1:

/tftpboot 192.168.50.0/24

/mnt/iso5 192.168.50.0/24

#service nfs restart

四.在修改下启动文件

#cat /tftp/pxelinux.cfg/default

default linux  默认启动 下面的label linux

prompt 1   显示boot提示符,如果改成。直接启动default

timeout 10   超时10s

display boot.msg  显示某个文件内容 默认路径是/tftpboot

F1 boot.msg

F2 options.msg

F3 general.msg

F4 param.msg

F5 rescue.msg

label linux

  kernel vmlinuz  指定启动内核 默认路径/tftpboot

  append ks=nfs:192.168.50.4:/tftpboot/ks.cfg initrd=initrd.img

  append指定追加给内核的参数,ks指定kickstart文件的位置

  Initrd 指定initrd.img文件,默认路径是/tftpboot

  (什么是initrd.img文件这里简单解释下:系统内核 vmlinuz 被加载到内存后开始提供底层支持,在内核的支持下启动各种模块,服务等被加载运行。但是如果你的硬盘是scsi接口而内核又不支持这种接口,你就要重新编译内核文件代替原来的vmlinuz。这样就很麻烦,这里就用到了ininrd.imgininrd就是initialized ram disk,是ram disk 的映像文件,内核加载这个文件,来加载各种模块,然后在去加载真正的root分区。

label text

  kernel vmlinuz

  append   initrd=initrd.img

label ks

  kernel vmlinuz

  append ks initrd=initrd.img  ks=nfs:19.168.50.4:/tftpboot/ks.cfg

label local

  localboot 1

label memtest86

  kernel memtest

  append -

确保以上服务都开启就可以开始测试了,使用httpftp思想都是一样。