linux自动化之kickstart

--



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 -vman 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的指向


--注意:网关和DNS指向要指向一个存在的机器的IP,如果指向的不存在的IP,则在安装时获取IP和主机名那步会很慢



       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

touch /root/Desktop/123

touch /tmp/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段写错

4, 防火墙


三,安装后可能没有图形显示:

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



四,安装时在获取主机名和IP那一步如果要等很久,甚至过不去

1,可能是dhcpd.conf里指的网关和DNS的指向是根本就不存在的一个IP,改成一个存在的IP(只要存在这个IP就可以,不需要DNS服务器)




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


补充一:



实现安装时连安装名都不用输入:

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/xinetd  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文件到对应的目录




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


尝试写脚本实现一次性的双系统无人值守安装




linux自动化之kickstart,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。