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
Empire CMS,phome.net |
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
Empire CMS,phome.net |
[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
Empire CMS,phome.net |
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 英特爾 EM64T
# System authorization information
auth --useshadow --enablemd5
Empire CMS,phome.net |
# 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
Empire CMS,phome.net |
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規則文件就可以了
===============================
補充三:嘗試實現另外兩種架構
Empire CMS,phome.net |
在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
Empire CMS,phome.net |
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/
Empire CMS,phome.net |
#安裝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文件到對應的目錄
本文出自 「linuxart」 博客,請務必保留此出處http://linuxart.blog.51cto.com/686203/843972
[火星人 ] linux18-kickstart已經有877次圍觀