歡迎您光臨本站 註冊首頁

linux18-kickstart

←手機掃碼閱讀     火星人 @ 2014-03-08 , reply:0

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,搭建安裝源 (光碟目錄文件)

[[email protected] ~]# mount /share/iso/rhel-5.4-server-i386-dvd.iso /mnt/ -o loop

[[email protected] ~]# cp /mnt/* /yum/ -rf --這裡我把光碟文件拷貝到/yum目錄,用哪個目錄自己定義

[[email protected] ~]# vim /etc/exports
/yum *(ro) --加上這句把光碟文件共享

重啟服務使之生效
[[email protected] ~]# /etc/init.d/portmap restart
[[email protected] ~]# /etc/init.d/nfs restart
或者
[[email protected] ~]# exportfs -arv


2,配置tftp伺服器

[[email protected] ~]# 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
}


[[email protected] ~]# /etc/init.d/xinetd restart


[[email protected] ~]# netstat -ntlup |grep 69
udp 0 0 0.0.0.0:69 0.0.0.0:* 3792/xinetd


3,配置pxe啟動文件
[[email protected] ~]# yum install syslinux -y

[[email protected] ~]# cp /usr/lib/syslinux/pxelinux.0 /tftpboot/

[[email protected] ~]# cp /yum/isolinux/* /tftpboot/

[[email protected] ~]# mkdir /tftpboot/pxelinux.cfg

[[email protected] ~]# cp /yum/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default

[[email protected] ~]# 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文件的路徑

[[email protected] ~]# mkdir /yum/ks

4,搭建DHCP伺服器

[[email protected] ~]# yum install dhcp -y

[[email protected] ~]# cp /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcpd.conf

Empire CMS,phome.net


--拷貝模版配置文件

[[email protected] ~]# 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;
}
}

[[email protected] ~]# /etc/init.d/dhcpd restart

--做到這裡,就實現了安裝伺服器了(非自動安裝伺服器)

嘗試修改一個/tftpboot/boot.msg信息文件,然後創建一個新的虛擬機,使用vmnet1網段,打開嘗試安裝是否OK

Empire CMS,phome.net


5,搭建DNS自動分配主機名 --可選

[[email protected] ~]# yum install bind* -y

[[email protected] ~]# vim /var/named/chroot/etc/named.conf

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


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

[[email protected] ~]# 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


[[email protected] ~]# yum install system-config-kickstart --安裝kickstart的圖形配置工具


會看不到軟體包,那是yum程序由python程序所寫,本身做了限制,要去修改你的yum的配置文件,把server軟體包的那個組的名稱不要寫成server,改成base

[[email protected] ~]# 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


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

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


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

Empire CMS,phome.net


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/

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已經有650次圍觀

http://coctec.com/docs/linux/show-post-45755.html