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文件到对应的目录
================================
尝试写脚本实现一次性的双系统无人值守安装
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。