首先说一下kickstart 

下面这篇文章是本人在centos 6.3 和rhel5.5 做测试是做的笔记 

 

kickstart 即踢一脚安装,也就是无人职守安装

 

1.anaconda 来负责 kickstart ,anaconda 是用python语言写的

linux的安装一般都是由anaconda这个程序负责的.在用光盘安装的时候其实也是用的这个程序,我们的配置过程就是生成ks文件的过程,然后再由anaconda按照ks文件安装系统

 

2. 进入用户root目录,,下面有个 anaconda-ks.cfg 

 

下面简析一个ks文件 

[root@localhost ~]# vi anaconda-ks.cfg 

# Kickstart file automatically generated by anaconda.

  在这里 可以加上text 用文本安装

  在这里  可以加上 reboot 安装完后重启

 

#version=DEVEL

install                        选择安装模式 也有update

cdrom               安装方式从光盘安装   也可以这样 nfs --server=192.168.1.1 --dir=/var/rhel4u2       使用nfs ,路径从根开始 

 

 如果是 rhel  在这里可以加上 key --skip

 

lang en_US.UTF-8    可以加几个语言,默认尽量要英文

keyboard us

network --onboot no --device eth0 --bootproto dhcp --noipv6     网络配置

rootpw  --iscrypted $6$IyaoXoHeN6KyBrUv$/0/YN16.erIamvS326Ho6rhSarkn5d90Ht6.HASCeyNG09aSXksDbsyCylMse9aNGE7gp1TV3k8cGaNDAdcrn1  //root密码 md5加密过

firewall --service=ssh           防火墙状态

authconfig --enableshadow --passalgo=sha512

selinux --enforcing        selinux状态

timezone --utc America/New_York        时区 要选择上海

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

# The following is the partition information you requested

# Note that any partitions you deleted are not expressed

# here so unless you clear all partitions first, this is

# not guaranteed to work

 

 

#clearpart --none       关于分区的操作 注释取消才可以用  

 

#part /boot --fstype=ext4 --onpart=sda1 --noformat   注释取消才可以用                   

#part / --fstype=ext4 --onpart=sda2        注释取消才可以用 

#part None --fstype=ext4 --onpart=sda3 --noformat           注释取消才可以用 

 

#part swap --onpart=sda5 --noformat                       注释取消才可以用 

 

 

 

repo --name="CentOS"  --baseurl=cdrom:sr0 --cost=100

 

%packages

@base                         @说明是一组包   单个包会放后面

@console-internet

@core

@debugging

@directory-client

@hardware-monitoring

@java-platform

@large-systems

@network-file-system-client

@performance

@perl-runtime

@server-platform

@server-policy

pax

oddjob

sgpio

certmonger

pam_krb5

krb5-workstation

perl-DBD-SQLite

%end

 

可以加个 %pre在光盘或微型引导系统时要执行的脚本

 

有的后面会有 %post 后面写安装完后执行的脚本

譬如说想 关掉cups服务   

chkconfig cups off

useradd jiangwei 

  还可以加很多脚本

 

 

kickstart安装rhel5系统

0.配置好本地yum 源             这是使用kickstart生成ks文件必须的

 

1.系统上得安装了kickstart

如果没有的话  安装system-config-kickstart

 

2.配置installtree  可以使用nfs ftp 或http 

  例如:nfs安装树

mount /dev/cdrom /media/cdrom 

cp -rf /media/cdrom/* /var/ftp/pub/rhel5

然后将ftp目录共享出去

vi exports

/var/ftp  *(rw,sync)

service nfs restart

 

3. 在图形界面下,system-config-kickstart  生成ks文件 

注意default language要用英文

选择remove all existing partions 否则可能出现磁盘不够用提示

网络要尽量配上ip

若是rhel 记得加上 key --skip 

分区操作前的注释要去掉

 

4.然后在一台新的机器上用rhel5光盘引导启动,

boot 后输入   linux ks=nfs:10.10.10.244:/var/ftp/pub/ks.cfg

 

 

 

 

或是使用ftp  

   kickstart 生成的时候 

ftp server :10.10.10.244

ftp directory : /pub/rhel5

 

   服务端安装上 vsftpd   

 

 启动的时候

 linux ks=ftp://10.10.10.244/ks.cfg 

 

 

 

 

当使用kickstart + pxe无人职守安装的时候, 配置好pxe,然后编辑default文件指定ks的位置即可

 

 

如果可以实现自动安装说明kickstart配置是没有问题的

 

 

 

 

 

接下来说一下pxe启动, pxe启动和kickstart联合起来可以实现真正的自动安装

 

 

 

pxe 的制作

 

 

 

1.安装dhcp 服务器

安装上dhcp包

 

vi /etc/dhcp/dhcpd.conf 

 

next-server 10.10.10.231;          //添加的 pxe服务器ip

filename "/pxelinux.0"; //添加的  pxe服务器 /pxelinux.0 的路径 

 

subnet 10.10.10.0 netmask 255.255.255.0 {

  range 10.10.10.200 10.10.10.254;

  option routers 10.10.10.1;

  option subnet-mask 255.255.255.0;

  default-lease-time 600;

  max-lease-time 7200;

}

 

 

2.安装tftp server       并建立pxe启动

 安装上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 /tftpboot    #改成自己定的路径

        disable                 = no   #这里改成no

        per_source              = 11

        cps                     = 100 2

        flags                   = IPv4

}

复制启动文件

#mkdir /tftpboot

cp /usr/lib/syslinux/pxelinux.0 /tftpboot/ #如果没有这个先安装 syslinux(光盘里有)

 

将光盘镜像里的相关组件拷到相应的目录里

# cp /dev/cdrom/p_w_picpaths/pxeboot/{vmlinuz,initrd.img} /tftpboot/

接下来创建/tftpboot/pxelinux.cfg/ 目录,该目录用于存放客户端的配置文件。

# mkdir /tftpboot/pxelinux.cfg

将光盘中的 '''isolinux/isolinux.cfg''' 文件复制为 '''/tftpboot/pxelinux.cfg/default'''

cp /dev/cdrom/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default

 

编辑default文件

#vim /tftpboot/pxelinux.cfg/default 

 

下面是对 default文件简单的说明

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

default linux 

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

prompt 1

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

timeout 60

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

display boot.msg

F1 boot.msg #按下 'F1' 这样的键后显示的文件。注意路径。默认是 /tftpboot。注:syslinux 官方网站上说目前只能使用 F1-F10。

F2 options.msg

F3 general.msg

F4 param.msg

F5 rescue.msg

# 'label' 指定你在 'boot:' 提示符下输入的关键字。

# 比如:

# boot: linux[ENTER]

# 这个会启动 'label linux' 下标记的 kernel 和 initrd.img 文件。

# 这里还定义了其它几个关键字:

# boot: text

# boot: ks

# kernel 参数指定要启动的内核。同样要注意路径,默认是 /tftpboot 目录。

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

# 使用 kickstart 安装。

# 可以在 ks 参数后直接指定 kickstart 文件的位置。

 

下面是一个典型的配置好的default文件

default linux             //默认启动的是linux内核

 

label linux                       //linux的内容     

kernel vmlinuz                   //内核文件路径 /tftpboot路径下

append ks=nfs:192.168.175.1:/mnt/install/ks.cfg initrd=initrd.img   //append 指定追加给内核的参数, 这里指定了ks文件的路径  还有initrd的路径              ks文件里配置里有安装配置和安装树的地址

 

label text

kernel vmlinuz

append initrd=initrd.img text

label ks

kernel vmlinuz

append ks initrd=initrd.img

… …

 

到此 pxe启动 制作完成