kickstart 无人值守安装

vim /root/anaconda-ks.cfg
vim /root/install.log

 

基于pxe(preboot execute environment)技术
pxe是intel公司的技术,工作server/client的网络模式,支持客户端从服务端下载软件,再使用tftp(trival  file tranfer protocol) 协议下载一个启动软件包到客户端内存中执行。


tftp 简单文件传输协议,提供简单的,不可靠的文件传输。基于UDP的69端口。

 

要求的技术和服务:

1。nfs服务器或者用http,ftp三种协议之一  (安装光盘目录文件)
2。tftp服务器 --共享启动软件包
3。dhcp服务器+DNS --客户端获取IP,网关,DNS指向,主机名,NIS域,NTP
4。kickstart程序生成的ks.cfg配置文件(此文件就定义了安装系统如何分区,如何格式化,root密码等等)   取一个安装名字,可以由客户端自动选择是否用此安装名安装

满足上面的1,2,3三点,就是安装服务器(类似尚观第一天安装系统的服务器)


客户端要求有支持pxe的网卡

 

--我们这里用物理机做服务器,虚拟机做客户端,并使用host-only网络,防止都在同一个网络造成dhcp获取混乱

 

1,搭建安装源 (光盘目录文件)

[root@li ~]# mount /share/iso/rhel-5.4-server-i386-dvd.iso /mnt/ -o loop

[root@li ~]# cp /mnt/* /yum/ -rf   --这里我把光盘文件拷贝到/yum目录,用哪个目录自己定义

[root@li ~]# vim /etc/exports
  /yum *(ro)  --加上这句把光盘文件共享

重启服务使之生效
[root@li ~]# /etc/init.d/portmap restart
[root@li ~]# /etc/init.d/nfs restart
或者
[root@li ~]# exportfs -arv

 


2,配置tftp服务器

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

service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -t -s -v /tftpboot  --启动参数改为-t -s -v man in.tftpd查看,注意顺序不要去改变,否则可能会造成不能引导
        disable                 = no  --yes改为no,表示服务能用
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}


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


[root@li ~]# netstat -ntlup |grep 69 
udp        0      0 0.0.0.0:69                  0.0.0.0:*                               3792/xinetd

 


3,配置pxe启动文件
[root@li ~]# yum install syslinux -y

[root@li ~]# cp /usr/lib/syslinux/pxelinux.0 /tftpboot/

[root@li ~]# cp /yum/isolinux/* /tftpboot/

[root@li ~]# mkdir /tftpboot/pxelinux.cfg

[root@li ~]# cp /yum/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default

 

[root@li ~]# vim /tftpboot/pxelinux.cfg/default   --修改这个配置文件,加上下面的三行


label linuxli  --label后面是无人值守安装的一个安装名称,自定义
  kernel vmlinuz
  append initrd=initrd.img ks=nfs:172.16.57.1:/yum/ks/ks.cfg --我们这里是用的nfs服务,所以定义ks文件的路径后面要写nfs:,这里的IP地址是服务器的IP地址,因为我这里用虚拟机的vmnet1安装,所以写的是物理机的vmnet1的IP。  最后写的是ks文件的路径

[root@li ~]# mkdir /yum/ks

 

4,搭建DHCP服务器

[root@li ~]# yum install dhcp -y

[root@li ~]# cp /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcpd.conf
--拷贝模版配置文件

[root@li ~]# vim /etc/dhcpd.conf   --vim修改配置文件

ddns-update-style interim;
ignore client-updates;


--下面这四行是手动加的
next-server 172.16.57.1;    --指定tftp服务IP
filename "/tftpboot/pxelinux.0"; --指定pxe文件
allow bootp;
allow booting;   


subnet 172.16.57.0 netmask 255.255.255.0 {    --网段改为自己分配的网段

# --- default gateway
        option routers                  172.16.57.1;  --客户端通过dhcp获取的网关
        option subnet-mask              255.255.255.0;

        option nis-domain               "domain.org";
        option domain-name              "domain.org";
        option domain-name-servers      172.16.57.1;  --客户端通过dhcp获取的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 172.16.57.50 172.16.57.100;  --分配的IP段改为自己的网段内
        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;
        }
}

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

 

--做到这里,就实现了安装服务器了(非自动安装服务器)

尝试修改一个/tftpboot/boot.msg信息文件,然后创建一个新的虚拟机,使用vmnet1网段,打开尝试安装是否OK

 

 


5,搭建DNS自动分配主机名   --可选

[root@li ~]# yum install bind* -y

[root@li ~]# vim /var/named/chroot/etc/named.conf

options {
        directory "/var/named";
};


zone "cluster.com" IN {
        type master;
        file "data/master.cluster.com.zone";
};

 

[root@li ~]# vim /var/named/chroot/var/named/data/master.cluster.com.zone

$TTL 86400
@       IN      SOA     sdfasfdsa.      root.   (
                        2011041601
                        120
                        240
                        360
                        86400   )
        IN      NS      sfdsad.cluster.com.
$GENERATE 1-254 station$        IN      A       172.16.57.$   


/etc/init.d/named restart

 

--验证station1-254.cluster.com对应172.16.57.1-254就可以了,在这里不需要配置反向

 


6,配置kickstart

可以去参考一下/root/anaconda-ks.cfg


[root@li ~]# yum install system-config-kickstart   --安装kickstart的图形配置工具


会看不到软件包,那是因为yum程序由python程序所写,本身做了限制,要去修改你的yum的配置文件,把server软件包的那个组的名称不要写成server,改成base

[root@li ~]# vim /etc/yum.repos.d/local.repo

[base]  --这里改为base,就可以在system-config-kickstart图形看到图形软件包列表了
name=server
baseurl=file:///yum/Server
enabled=1
gpgcheck=0


最后把配置完的信息保存到/yum/ks/ks.cfg,与前面的对应

 

# vim /yum/ks/ks.cfg

#platform=x86, AMD64, or Intel EM64T
# System authorization information
auth  --useshadow  --enablemd5
key --skip   --加上这一句,表示跳过安装码
# System bootloader configuration
bootloader --append="rhgb quiet" --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Use text mode install
text
# Firewall configuration
firewall --disabled
# Run the Setup Agent on first boot
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# Installation logging level
logging --level=info
# Use NFS installation media
nfs --server=172.16.57.1 --dir=/share/yum
# Network information
network --bootproto=dhcp --device=eth0 --onboot=on
# Reboot after installation
reboot
#Root password
rootpw --iscrypted $1$AEjjFMas$R9pxtD1wyv9bfU32Icec3/

# SELinux configuration
selinux --disabled
# System timezone
timezone --isUtc Asia/Shanghai
# Install OS instead of upgrade
install
# X Window System configuration information
xconfig  --defaultdesktop=GNOME --depth=32 --resolution=800x600 --startxonboot
# Disk partitioning information
part /boot --asprimary --bytes-per-inode=4096 --fstype="ext3" --size=100
part / --asprimary --bytes-per-inode=4096 --fstype="ext3" --size=10000
part swap --asprimary --bytes-per-inode=4096 --fstype="swap" --size=512
%post
touch /root/123


%packages
@base-x
@base
@gnome-desktop
@development-libs
@admin-tools
@chinese-support
@gnome-software-development
@development-tools
@x-software-development
@office
@text-internet
@graphical-internet
@authoring-and-publishing
@editors
@engineering-and-scientific

 

7,用虚拟机安装


创建一个虚拟机,
注意:
1,磁盘大小不要小于ks.cfg文件里定义的分区总大小
2,网卡要选对连接网络(我前面都是用vmnet1做的,所以这里把网卡选成vmnet1

 


====================================

 

 

-----------------------------------

实验过程中错误总结:

一,报磁盘空间不足的错
 1,虚拟机分配的磁盘大小可能小于ks.cfg定的分区总大小
 2,df -h查看一下安装虚拟机路径的物理空间是否足够
 3,虚拟机如果scsi硬盘,注意要使用LSI logcial ,不要使用buslogic

二,安装时tftp  time out
 1,验证tftp的安装步骤
 2,可能dhcpd.conf里手动增加的四句话写错
 3,IP段写错

三,安装后可能没有图形显示:
 1,图形包没有安装完全,gnome图形需要同时安装gnome桌面环境和x windows这两个软件包组才行

 

===========================================================

补充一:


实现安装时连安装名都不用输入:
vim /tftpboot/pxelinux.cfg/default --前三行去修改

default linuxli   --把这里改成你要安装的名字
prompt 1
timeout 3 --时间改小

/etc/init.d/xinetd restart

===============================

补充二:

实现教学式的安装服务器(也就是来尚观教安装系统时的服务器)
这种服务器就是tftp+dhcp+nfs   不要ks.cfg规则文件就可以了

===============================

补充三:尝试实现另外两种架构
tftp+dhcp+http
ks=http://172.16.57.1/ks/ks.cfg --http的写法: 家目录为yum,只写相对路径

在ks.cfg里的url那句应该为:
url --url=http://172.16.57.1


tftp+dhcp+ftp
ks=ftp://172.16.57.1/ks/ks.cfg --ftp的写法:  如果家目录为yum,则只写它目录下的/ks/ks.cfg

在ks.cfg里的url那句应该为:
url --url=ftp://172.16.57.1

====================================================

 

题目:

安装完后,自动运行一个初始化脚本,自动配置服务器的主机名(三步),yum,httpd(安装eyeos),等都自动配置好,并自动安装ntfs支持和xlock

 

rpm 版lamp (无mysql)  + 安装 eyeos


yum install http* -y
yum install php* -y

service httpd  restart

/share/soft/lamp/php_source/eyeOS/eyeOS_1.8.6.2.tar.gz

tar xvf /share/soft/lamp/php_source/eyeOS/eyeOS_1.8.6.2.tar.gz -C /share/www/    --解压到网站家目录

 

安装访问的路径:
http://10.1.1.35/eyeOS/index.php


========================================


答案:

把10.1.1.35的httpd服务器打开


vim /share/www/auto.sh    --此脚本放在35的httpd服务器的家目录下

#!/bin/bash

#配置主机名
head=`ifconfig eth0 | grep Bcast |awk -F. '{print $4}'|awk '{print $1}'`

hostname station$head.cluster.com
echo "10.1.1.$head      station$head.cluster.com" >> /etc/hosts

sed -i '3d' /etc/sysconfig/network
echo "HOSTNAME=station$head.cluster.com" >> /etc/sysconfig/network


#配置yum,可以通过35的软件仓库安装软件
echo "[server]" > /etc/yum.repos.d/rhel-debuginfo.repo
echo "name=server" >> /etc/yum.repos.d/rhel-debuginfo.repo
echo "baseurl=ftp://10.1.1.35/Server" >> /etc/yum.repos.d/rhel-debuginfo.repo
echo "enabled=1" >> /etc/yum.repos.d/rhel-debuginfo.repo
echo "gpgcheck=0" >> /etc/yum.repos.d/rhel-debuginfo.repo

echo "[cluster]" >> /etc/yum.repos.d/rhel-debuginfo.repo
echo "name=cluster" >> /etc/yum.repos.d/rhel-debuginfo.repo
echo "baseurl=ftp://10.1.1.35/Cluster" >> /etc/yum.repos.d/rhel-debuginfo.repo
echo "enabled=1" >> /etc/yum.repos.d/rhel-debuginfo.repo
echo "gpgcheck=0" >> /etc/yum.repos.d/rhel-debuginfo.repo


echo "[clusterstorage]" >> /etc/yum.repos.d/rhel-debuginfo.repo
echo "name=clusterstorage" >> /etc/yum.repos.d/rhel-debuginfo.repo
echo "baseurl=ftp://10.1.1.35/ClusterStorage" >> /etc/yum.repos.d/rhel-debuginfo.repo
echo "enabled=1" >> /etc/yum.repos.d/rhel-debuginfo.repo
echo "gpgcheck=0" >> /etc/yum.repos.d/rhel-debuginfo.repo

 

echo "[VT]" >> /etc/yum.repos.d/rhel-debuginfo.repo
echo "name=vt" >> /etc/yum.repos.d/rhel-debuginfo.repo
echo "baseurl=ftp://10.1.1.35/VT" >> /etc/yum.repos.d/rhel-debuginfo.repo
echo "enabled=1" >> /etc/yum.repos.d/rhel-debuginfo.repo
echo "gpgcheck=0" >> /etc/yum.repos.d/rhel-debuginfo.repo

 

#安装rpm版lamp,并安装eyeOS
yum install httpd* -y > /dev/null 2>&1
yum install php* -y > /dev/null 2>&1

service httpd  restart > /dev/null 2>&1

service portmap restart > /dev/null 2>&1
mount 10.1.1.35:/share/soft/ /mnt

tar xf /mnt/lamp/php_source/eyeOS/eyeOS_1.8.6.2.tar.gz -C /var/www/html/ 


#安装ntfs支持
tar xf /mnt/soft/ntfs/fuse-2.7.4.tar.gz -C /usr/src/
tar xf /mnt/soft/ntfs/ntfs-3g-2009.4.4.tgz -C /usr/src/
cd /usr/src/fuse-2.7.4/
./configure > /dev/null 2>&1
make > /dev/null 2>&1
make install > /dev/null 2>&1
modprobe fuse
echo "modprobe fuse" >> /etc/rc.local
cd ../ntfs-3g-2009.4.4/
./configure > /dev/null 2>&1
make > /dev/null 2>&1
make install > /dev/null 2>&1


#安装xlockmore
tar xf /mnt/xlockmore-5.29.1.tar.bz2 -C /usr/src
cd /usr/src/xlockmore-5.29.1/
./configure --enable-allow-root --enable-syslog --without-gtk2 --without-gtk > /dev/null 2>&1
make > /dev/null 2>&1
make install > /dev/null 2>&1


#最后umount挂载
umount /mnt

 


在kickstart自动安装服务器里加上下面几句:

%post
cd /root
wget http://10.1.1.35/auto.sh  >/dev/null 2>&1
sh /root/auto.sh


===================================

自动安装完系统后,自动搭建好编译版lamp,并安装phpmyadmin

 

 

 

=============================================================


在rhel5上搭建rhel6的安装服务器


光盘iso路径
/share/soft/iso/rhel-server-6.0-i386-dvd.iso


--在上面成功的基础上,我再做一个本地rhel6的安装服务器
#mkdir /rhel6
#mount /share/soft/iso/rhel-server-6.0-i386-dvd.iso /mnt/ -o loop
#cp /mnt/*  /rhel6  -rf


#vim /etc/exports
/rhel6          *(ro)  --再加上这一句,把它共享

# /etc/init.d/nfs restart
# /etc/init.d/portmap restart


# vim /etc/xinetd.d/tftp
 server_args             = -t -s -v /tftpboot6 --把这里改一个目录,用于存放rhel6的引导相关文件

# mkdir /tftpboot6    --建立此目录

# /etc/init.d/tftp  restart


# cp /usr/lib/syslinux/pxelinux.0 /tftpboot6/ --我这里拷的是rhel5的pxelinux.0文件,经我测试也是可以引导rhel6的。
--如果要用rhel6的pxelinux.0文件,则需要去一台rhel6安装再拷过来。在我的/share/soft/tftpboot6/的目录共享里有


# cp /rhel6/isolinux/* /tftpboot6
# mkdir /tftpboot6/pxelinux.cfg/
# cp /rhel6/isolinux/isolinux.cfg /tftpboot6/pxelinux.cfg/default

# vim /tftpboot6/pxelinux.cfg/default

default linux  --第一句改为默认安装linux这个标签
prompt 1 --改为打开注释,表示在安装默认的系统前会让用户确认
timeout 600


# /etc/init.d/xinetd restart --重启超级守护进程


DHCP服务和上面做rhel5的安装服务器时一样,并把dhcpd服务启起来
然后使用一台新的虚拟机去安装rhel6测试

 

========================


补充:如果要做rhel6的kickstart应该如何做?


# vim /tftpboot6/pxelinux.cfg/default
label linux
  menu label ^Install or upgrade an existing system
  menu default
  kernel vmlinuz
  append initrd=initrd.img  ks=nfs:172.16.57.1:/yum/ks/ks.cfg
--如果要使用kickstart,要在initrd.img后加上ks=nfs:172.16.57.1:/yum/ks/ks.cfg
--然后使用system-config-kickstart(最好是在rhel6上产生)来创建ks.cfg文件到对应的目录