天天看點

Anaconda Kickstart

linux安裝大緻可以分為2個階段

第一階段:anaconda 階段

此階段是linux的預安裝環境,提供linux安裝選項的一個接口,可以将它比作是window中的PE環境

第二階段:install 階段

該階段系統會按照anaconda 階段設定的參數自動安裝

anaconda有兩種模式:

互動式 :和普通安裝一樣,按照提示選擇選項一步步的安裝

非互動式:通過讀取kickstart檔案的配置,進行自動安裝

而在安裝linux過程中,擷取ks.cfg檔案的方式有多種,如直接在cdrom中擷取,常見的形式還有http,ftp,nfs等方式

cdrom和硬碟:

ks=cdrom:/dir/ks.cfg

ks=hd:/dir/ks.cfg

http和ftp:

ks=http://domain.com/dir/ks.cfg

ks=ftp://domain.com/dir/ks.cfg

NFS:

ks=nfs:domain.com:/dir/ks.cfg

在使用ks.cfg之前,需要先引導啟動環境,引導方式有cdrom、usb、PXE等。在引導進入anaconda後,即可通過讀取ks.cfg來進行系統的自動安裝 ks.cfg檔案會在安裝linux後,根據使用者的安裝選項自動生成在root家目錄,即anaconda_ks.cfg ks.cfg檔案組成大緻分為3段

1.指令段:

鍵盤類型,語言,安裝方式等系統的配置,有必選項和可選項,如果缺少某項必選項,安裝時會中斷并提示使用者選擇此項的選項

2.軟體包段:

%packages

@groupname         #指定安裝的包組

package_name            #指定安裝的包

-package_name         #指定不安裝的包

3.腳本段(可選):

%pre :預安裝腳本        (由于隻依賴于啟動鏡像,支援的指令很少)

%post:後安裝腳本 (基本支援所有指令)

[root@rhel6 ~]# cat /var/ftp/pub/ks.cfg

###################################################################### 

##############        1 Main Begin 

##############      1.1 Text,Key,Keyboard,Lang,Net Begin 

# platform=x86, AMD64, 或 Intel EM64T # 通過文本界面進行安裝

text  

# 安裝/更新

install  

# 如果是RHEL5的系統,會要求輸入key,這裡配置為跳過,如果不配置安裝時會停在那裡要求使用者輸入key

key --skip 

# 安裝方式(cdrom/hdisk/http/ftp/nfs),指定安裝源的路徑

nfs --server=192.168.0.90 --dir=/var/ftp/pub  

lang en_US.UTF-8  

keyboard us  

# 通過DHCP擷取IP位址

network --bootproto dhcp  

##############      1.1 Text,Key,Keyborad,Lang,Net End 

##############      1.2 Partition Begin 

# Partition 10000M

%include /tmp/partitioning  

##############      1.2 Partition End    

##############      1.3 Timezone,X,passwd,security,bootloader Begin 

timezone --utc Asia/Shanghai  

graphical 

# 設定root使用者的密碼

rootpw redhat   

# 禁用防火牆 

firewall --disabled  

authconfig --useshadow  --passalgo=md5  

# 激活SELINUX

selinux --enforcing  

# 首次引導時,禁用設定代理  

firstboot --disable 

# 安裝Grub到MBR 

bootloader --location=mbr  

# 安裝完成後重新開機  

reboot  

##############      1.3 Timezone,X,passwd,security,bootloader End 

##############      1 Main End 

##############      2 Packages Begin     

%packages  

# 安裝軟體包組 

@Base  

@Core  

@basic-desktop  

@desktop-debugging  

@desktop-platform  

@fonts  

@general-desktop  

@graphical-admin-tools  

@input-methods  

@legacy-x  

@remote-desktop-clients  

@x11  

# 安裝軟體包 

coreutils  

elfutils  

elfutils-libelf  

elinks  

enscript  

firefox  

gcc  

gimp  

gimp-data-extras  

gimp-print-plugin  

gnome-icon-theme  

gstreamer  

gstreamer-tools  

libIDL  

libcap  

libgsf  

libraw1394  

mutt  

nautilus-cd-burner  

ntp  

openmotif  

openssh  

openssh-clients  

openssh-server  

pyorbit  

samba-client  

samba-common  

startup-notification  

ttmkfdir  

vim-enhanced  

vnc  

%end  

##############      2 Packages End 

##############      3 Post Begin  

##############             Network Begin  

######################################################################  

%post  

# 固定安裝後系統的IP位址 

cat > /etc/sysconfig/network-scripts/ifcfg-eth0 << EOF  

DEVICE=eth0  

BOOTPROTO=none  

ONBOOT=yes  

NETMASK=255.255.255.0  

IPADDR=XXX  

GATEWAY=192.168.0.90  

TYPE=Ethernet  

USERCTL=no  

IPV6INIT=no  

PEERDNS=yes  

EOF  

# 提取IP位址  

v_ip=`ifconfig  eth0 | head -n 2 | tail -n 1 | cut -d ':' -f 2 | cut -d ' ' -f 1`  

# 替換ifcfg-eth0檔案中IPADDR的xxx為$v_ip 

perl -pi -e "s,XXX,$v_ip," /etc/sysconfig/network-scripts/ifcfg-eth0  

##############             Network End  

##############      3 Post End  

%pre 

echo "Starting PRE" > /dev/tty2 

# 以下兩行在push 64位系統的時候是必須的(Bug) 

cd /mnt/ 

ln -s Source/Packages ./ 

v_pci0=$(udevinfo -ap /sys/class/net/eth0 | grep 'ID==' | head -n 1) 

v_driver0=$(udevinfo -ap /sys/class/net/eth0 | grep 'DRIVER==' | head -n 1) 

v_mac0=$(ifconfig eth0 | grep HWaddr | cut -d ' ' -f 11) 

v_ip_short=$(grep $v_mac0 /mnt/stage2/workstation.list | cut -d '-' -f 1) 

v_ip=192.168.0.$v_ip_short 

if [ ! -z $v_ip_short ] 

then 

 ifconfig eth0 $v_ip 

fi 

# partitions 

if 

        grep -q hda /proc/partitions 

        disktype=hda 

else 

        disktype=sda                                         

# 設定分區 

cat >>  /tmp/partitioning <<EOF 

# 清除主引導記錄MBR 

zerombr yes 

# 清除所有的分區 

clearpart --all 

# 設定/boot分區為50MB,檔案系統格式為ext4 

part /boot --fstype=ext4 --size=50 

# 設定swqp分區為512MB 

part swap --size=512 

# 建立8GB的PV 

part pv.Lrhel6 --size=8000 

# 建立 VG 

volgroup Lrhel6 --pesize=32768 pv.Lrhel6 

# 建立 LV ,并挂載到根分區中 

logvol / --vgname=Lrhel6 --size=7000 --name=root 

EOF 

%end 

      本文轉自Vnimos51CTO部落格,原文連結:http://blog.51cto.com/vnimos/1091631,如需轉載請自行聯系原作者

下一篇: Xwindow System

繼續閱讀