Kickstart/Anaconda實現自動化安裝原理探究

內容概要:

1.  系統安裝基本流程圖示
2.  Anaconda簡介
3.  Kickstart簡介
4.  引導並指定安裝方式
5.  kickstart文件中的主要項目及參數介紹
6.  kickstart配置文件示例
7.  RedHat 安裝光盤安裝樹介紹
8.  Anaconda/Kickstart系統安裝過程簡圖
9.  安裝樹中boot.img及stage.img解構圖析
10. 使用Kickstart進行安裝的方式列舉概述

   本文仍爲課程學習的總結筆記,書寫過程參看了大量官方文檔及網絡上相關資料,在此謝過各位無私奉獻的Linuxer們,也貼上自己的筆記供大家參考,本文重點關注原理性層面的東西,對試驗實際操作過程不過多贅述;

  水平有限,難免出現理解不透徹或是錯誤之處,望多指教;

  實驗環境: RedHat5.5

一.  系統安裝一般流程

  首先了解系統安裝一般流程:

 

二.  Anaconda簡介


簡介:
     Anaconda是Red Hat、CentOS、Fedora等Linux的安裝管理程序。它可以提供文本、圖形等安裝管理方式,並支持Kickstart等腳本提供自動安裝的功能。此外,其還支持許多啓動參數,熟悉這些參數可爲安裝帶來很多方便。該程序是把位於光盤或其他源上的數據包,根據設置安裝到主機上的一個程序;爲實現該定製安裝,其提供一個定製界面,可以實現交互式界面供用戶選擇配置(如選擇語言,鍵盤,時區等信息);

Anaconda支持的管理模式:
    Kickstart提供的自動化安裝
    對一個RedHat實施upgrade
    Rescuse模式對不能啓動的系統進行故障排除;
   
    要進入安裝步驟,需要先有一個引導程序引導啓動一個特殊的Linux安裝環境系統;引導有多種方式:
    1.  基於網絡方式的小型引導鏡像,需要提供小型的引導鏡像;
    2.  U盤引導,通過可引導存儲介質中的小型引導鏡像啓動安裝過程;
    3.  基於PXE的網絡安裝方式,要提供PXE的完整安裝環境;
    4.  其他bootloder引導(如GRUB)

可用的安裝方式:
    本地CDROM
    磁盤驅動器
    NFS映像
    FTP
    HTTP

    通過網絡方式安裝時:
    不論通過FTP、HTTP還是NFS方式共享安裝,可以將安裝光盤先拷貝到網絡服務器上保存爲iso鏡像,然後loop掛載到共享目錄或網頁目錄(當然,拷貝鏡像中的所有文件到指定位置或直接掛載到共享目錄也可),而通過NFS方式時,可以直接將光盤的iso文件放到共享目錄即可,安裝程序掛載共享目錄後可以自動識別鏡像;
   注:複製安裝光盤,並保存爲一個 iso 映像文件的方法:
   對於 DVD/CD:
   # dd if=/dev/cdrom  of=/location/of/disk/space/RHEL.iso  bs=32k
        注意拷貝時bs塊大小設置爲32k,我實驗時設爲1M,雖然減小了文件體積,但是安裝讀鏡像時會報錯。

 

三、 Kickstart簡介:

簡介
     kickstart是一個利用Anconda工具實現服務器自動化安裝的方法;通過生成的kickstart配置文件ks.cfg,服務器安裝可以實現從裸機到全功能服務的的非交互式(無人值守式)安裝配置;
ks.cfg是一個簡單的文本文件,文件包含Anconda在安裝系統及安裝後配置服務時所需要獲取的一些必要配置信息(如鍵盤設置,語言設置,分區設置等);Anconda直接從該文件中讀取必要的配置,只要該文件信息配置正確無誤且滿足所有系統需求,就不再需要同用戶進行交互獲取信息,從而實現安裝的自動化;但是配置中如果忽略任何必需的項目,安裝程序會提示用戶輸入相關的項目的選擇,就象用戶在典型的安裝過程中所遇到的一樣。一旦用戶進行了選擇,安裝會以非交互的方式(unattended)繼續。

使用kickstart優勢:
    1.  流線化自動化的安裝;
    2.  快速大量的裸機部署;
    3.  強制建立的一致性(軟件包,分區,配置,監控,安全性)
    4.  減少人爲的部署失誤

使用Kickstart方法安裝的過程:
    1.  創建一個kickstart文件
    2.  創建有kickstart文件的引導介質或者使這個文件在網絡上可用;
    3.  籌備一個安裝樹
    4.  開始ks安裝:anconda自身啓動 -->選取ks安裝模式--> 從ks文件讀取配置 --> 最後安裝

創建kickstart配置文件的方式:
   1.  文本編輯器編輯生成:vim
   2. 用圖形化界面配置:system-config-kickstat(需要安裝system-config-kickstart.noarch包)
   
注:圖形化界面配置時,磁盤選項無法創建配置LVM(邏輯卷);
      文件生成後,推薦使用ksvalidator命令檢查配置文件語法及完整性錯誤;
       [root@bogon ~]# ksvalidator ks.cfg
        not enough arguments for format string

圖形化界面配置示例:

 

四.  引導並指定安裝方式:

  系統引導界面:

  系統引導後,會顯示boot:命令提示符;如上,界面上會有各種模式操作提示;
  注:用戶交互的文本安裝方式中不能進行LVM的自定義配置,只能查看、接受默認設置;


  在boot:命令行裏有用的幾個項:
  lowres
    :強制GUI安裝時分辨率調低爲640*480
  noipv6
     :安裝過程不支持ipv6網絡
  noprobe
    :不去自動檢測硬件,而是提示用戶;
  dd=
    :通過網絡加載設備驅動
  ks=
     :指定kickstart文件的放置位置;
另外還有ip、netmask、gateway、dns、vnc等選項;

   用ks選項被指定時kickstart文件位置時,Anaconda進入Kickstart安裝模式;
安裝時獲取kickstart文件的方式:

(1) boot:linux ks

    ks命令單獨使用時,系統會嘗試通過dhcp服務器配置網卡,並且從DHCP會話中獲取kickstart配置文件的位置;
    在dhcp服務器dhcp配置文件中有kickstart文件位置說明,next-server關鍵字指向共享文件的NFS主機,用filename關鍵字指向主機上的文件路徑;如果沒有filename關鍵字,則嘗試在next-server關鍵字指向主機的/kickstart文件夾中找kickstart文件;
 
   下面是dhcp.conf文件中kickstart配置字段示例:

  1. # The following lines are examples of kickstart directives. 
  2.         filename "/data/ks/ks.cfg"
  3.         next-server 192.168.1.10; 
  4. # 注:上面部分需要寫在subnet子段中;
  5.  

(2) boot:linux ks=url
     基於網絡的文件服務器(網絡服務器),獲取配置文件,支持HTTP、FTP、NFS方式獲取文件;例:
    ks=ftp://192.168.0.254/pub/kistart/ks.cfg
    ks=http:// 192.168.0.254/pub/kistart/ks.cfg
    ks=nfs:ip_addr:/path/to/ks.cfg

(3) boot:linux ks=hd:device/path/to/your/kickstart_file
     基於本地的安裝方式,需要依次指定設備名,路徑,文件名等;例如:   
   文件在光盤中:ks=cdrom:/ks.cfg
   文件在軟盤中:    ks=floppy:/filedirectory/ks.cfg
   文件在硬盤中:ks=hd:/sdb1/myfile/ks.cfg
   文件也可被打包進initrd根文件系統中:ks=file:/ks.cfg

kickstart文件結構介紹:
  1.  命令部分:配置系統的屬性及安裝中的各種必要設置信息
  2.  %packages部分:設定需要安裝的軟件包及包組,Anaconda會自動解決依賴關係
  3.  腳本部分:用於定製系統,分爲%pre部分在安裝前運行,%post在安裝後運行
    %pre 部分腳本作爲一個bash shell腳本執行,在Kickstart文件解析後執行;
    %post 解析器默認爲bash,可以自定義,缺省爲chroot狀態,也可指定非chroot狀態;

五.  Kickstart文件中的主要項目及參數介紹:


    每個項目都由關鍵字來識別;關鍵字可跟一個或多個參數;如果某選項後面跟隨了一個等號(=),它後面就必須指定一個值。

install   (可選)
    明確指定系統次次進行的是全新安裝系統;是默認項;

cdrom  (可選)
    以本地CD-ROM爲源安裝系統;

harddrive  (可選)
    以硬盤分區中包含的鏡像爲源(安裝樹)安裝新系統;當以該種方式安裝系統時,即使指定clearpart --all項,源所在分區也不會被重新抹去;
    --partition=    指定分區
    --dir=        指定包含鏡像的目錄
    例:
    harddrive  --partition=/dev/sdb2  --dir=/data/iso

nfs   (可選)
    指定從NFS服務器上獲取安裝樹;
    --server=    指定NFS服務器,主機名稱或IP
    --dir=        包含安裝樹的目錄
    --opts=        可以指定掛載NFS的目錄時的掛載選項
    例:
    nfs  --server=192.168.1.254  --dir=/data/iso

url   (可選)
    指定通過FTP或HTTP從網絡獲取安裝樹;
    --url    指定資源位置
    例:
    url  --url  ftp://<username>:<password>@install.example.com/iso
    url  --url  http://install.example.com/iso

bootloader (必需)

    設定boot loader安裝選項;
    --append=        可以指定內核參數
    --driveorder=    設定設備BIOS中的開機設備啓動順序
    --location=        設定引導記錄的位置; mbr:默認值;partition:將boot loader安裝於包含kernel的分區超級快中;none:不安裝boot loder。
    示例:
    bootloader  --location=mbr  --append=“rhgb quiet” --driveorder=sda,sdb
   
clearpart (可選)
    在建立新分區前清空系統上原有的分區表,默認不刪除分區;
    --all      擦除系統上原有所有分區;
    --drives    刪除指定驅動器上的分區
    --initlabel    初始化磁盤卷標爲系統架構的默認卷標
    --linux        擦除所有的linux分區
    --none(default)不移除任何分區
   例:
   clearpart  --drives=hda,hdb --all  --initlabel

zerombr  (可選)
    清除mbr信息,會同時清空系統用原有分區表

drivedisk (可選)
    如果使用特殊存儲方式時,需要指定驅動程序盤位置以便加載存儲驅動;
   1.  將驅動盤拷貝到本地硬盤某分區根目錄:
     drivedisk <partition> [ --type=<fstype> ]
   2.  也可以指定一個網絡位置加載驅動程序盤
     drivedisk  --source=ftp://path/to/drive.img
     drivedisk  --source=http://path/to/drive.img
     drivedisk  --source=nfs:host://path/to/drive.img

firewall (可選)
    配置系統防火牆選項;
    firewall –enable|--disable  [ --trust ] <device> [ --port= ]
    --enable        拒絕外部發起的任何主動連接;
    --disable        不配置任何iptables防禦規則;
    --trust        指定完全信任網卡設備;
    --port        使用port:protocol格式指定可以通過防火牆的服務;
    示例:
    firewall --enable --trust eth0  --trust eth1  --port=80:tcp

selinux (可選)
    設置系統selinux狀態;默認爲啓用並處於enforcing模式;
    selinux [ --disabled|–enforcing|--premissive ]

reboot (可選)
    在系統成功安裝完成後默認自動重啓系統(kickstart方法時);在收到你敢裝系統完成後,會提示按任意鍵進行重啓;
    在本文件中沒有明確指明其他方法時就默認完成方式爲reboot;
    使用 reboot 選項可能會導致安裝的死循環,這依賴於安裝介質和方法。需要特別注意;

halt  (可選)
    在系統成功安裝完成後關機;默認爲reboot;
    其他選項還有shutdown、poweroff,需要使用請自行參考官方文檔。

graphical (可選)
    默認值,在圖形模式下進行kickstart方式安裝;

text (可選)
    以文本方式進行kickstart安裝;默認爲圖形界面

key  (可選)
    設置一個安裝碼(installration number),用於獲取redhat官方的支持服務;
    --skip    跳過key設置,不進行設置;如果不設置可能跳轉到交互模式讓用戶選取動作;

keyboard (必需)

    設置鍵盤類型;一般設置爲us;

lang (必需)

    設置安裝過程使用的語言及系統的缺省語言;文本模式安裝時可能不支持某些語言(中、韓...),所以可能仍以默認的英文方式安裝;默認en_us,裝中文時,需要後期%packages部分裝上中文
支持組件;
    例:
    lang en_US
 
timezone (可選)
    設置系統的時區;
    timezone  [ --utc ]  <timezone>
    例:
    timezone  --utc  Asia/Shanghai

auth/authconfig  (必需)
    設置系統的認證方式;默認爲加密但不隱藏(shadow);
    --enablemd5    使用MD5加密方式
    --useshadow或—enableshadow    使用隱藏密碼;
    --enablenis=     使用NIS認證方式
    --nisdomain=    NIS域
    --nisserver=       NIS服務器
    還可以設置LDAP、SMB及Kerberos 5認證方式,詳細請參考官方文檔;
    例:
    authconfig  --useshadow  --enablemd5

rootpw (必需)
    設置系統root賬號的密碼;
    rootpw [ --iscrypted ]  <passwd>
    --iscrypted    表示設置的密碼爲加密過的串;
    例:
    rootpw  pa4word
    rootpw --iscrypted  $1$RPYyxobb$/LtxMNLJC7euEARg2Vu2s1

network (可選)
    配置網絡信息;在網絡安裝(NFS/HTTP/FTP)時必須指定;
    --bootproto=dhcp|bootp|static    指定ip獲取方式,默認爲dhcp/bootp;
    --device=    設置安裝時激活來進行系統安裝的網卡設備;該參數只在kickstart文件爲本地文件時有效;若kickstart配置文件在網絡上,安裝程序會先初始化網卡然後去尋找kickstart文件;
    --ip=    ip設置
    --gateway=   網關
    --nameserver=  DNS設置
    --nodns         不設置DNS
    --netmask=   掩碼
    --hostname= 設置安裝後主機名稱
    --onboot=    設置是否在系統啓動時激活網卡
    --class=        設置DHCP的class值
    --noipv4        禁用該設備的ipv4功能
    --noipv6        禁用該設備的ipv6功能
    如將網絡模式設置爲靜態模式,則必須在一行內寫上ip,netmask、dns、gateway等信息;
    例:
    network –bootproto=static –ip=1.1.1.1 --metmask=255.0.0.0 --gateway=1.1.1.254 --nameserver=1.1.1.2
    netmask --bootproto=dhcp  --device=eth0

skipx (可選)
    如果該項存在,就不對系統的X進行設置;

xconfig (可選)
    配置X window ;如果不給出選項,在安裝過程中需要手動調整設置;當然不安裝X時不應該添加該項;
   --driver            爲顯卡設置X驅動
   --videoram=    設置顯卡的RAM大小
   --defaultdesktop=    設置GNOME/KDE作爲默認桌面;假定這兩個桌面環境在%packages例已經安裝
   --startxonboot   使用圖形界面登錄系統
   --resolution=     設置圖形界面的分辨率;可用值有640*480、800*600、1024*768等;確保設置指適合於顯示卡及顯示器;
   --depth=           設置顯示色深;可用值有8/16/24/32;確保設置值適合於顯示設備;
    例:
    xconfig    --startxonboot  --resolution=800*600 --depth=16

services (可選)
    設置禁用或允許列出的服務;
    --disabled 設置服務爲禁用
    --enabled  啓動服務
    例:
    services --disabled autid,cups,smartd,nfslock  服務之間用逗號隔開,不能有空格
   
iscsi(可選)
    指定額外的ISCSI設備;
    issci --ipaddr= ipaddr  [options].
      --target
      --port=
      --user=
      --password=

part/partition  (install模式必須)
    建立新分區;
    part  <mntpoint>|swap|pv.id|rdid.id  options
    mntpoint:掛載點,是在創建普通分區時指定新分區掛載位置的項;掛載點需要格式正確
    swap: 創建swap分區;
    raid.id:  表示創建的分區類型爲raid型;必須用id號進行唯一區別;
    pv.id:  表示所創建的分區類型爲LVM型;必須用唯一id號進行區別;
    --size=  設置分區的最小值,默認單位爲M,但是不能寫單位;
    --grow  讓分區自動增長利用可用的磁盤空間,或是增長到設置的maxsize值;
    --maxsize 設置分區自動增長(grow)時的最大容量值,以M爲單位,但不能寫單位;
    --onpart=/--usepart=     設置使用原有的分區;
    --noformat    設置不格式化指定的分區,在跟—onpart一同使用時,可以避免刪除原有分區上的數據,在新安裝的系統中保留使用數據;
    --asprimary    強制制定該分區爲主分區;若指定失敗,分區會失敗,導致安裝停止;
    --fstype=    新增普通分區時指定分區的類型,可以爲ext2、ext3、ext4、swap、vfat及hfs;
    --ondisk=/--ondrive=     設定該分區創建在一個具體的磁盤上;
    --start   指定分區以磁盤上那個磁道開始;需要跟--ondisk參數一塊使用;
    --end    指定分區以磁盤上那個磁道結束;需要跟上述兩個參數一起使用;
    --recommended:讓系統自行決定分區的大小;在創建swap分區時,若RAM<2G,則分區大小爲2*RAM;若RAM>=2G時,分區大小爲RAM+2G;
    --bytes-pre-inode=    指定分區格式化時inode的大小;默認值爲4096
    --fsoptions=    指定創建fstab文件時該分區掛載參數項;
    例:
    part  /boot  --fstype=“ext3” --size=100
    part  swap  --fstype=“swap” –size=512 
    part  /  --bytes-pre-inode=4096  --fstype=“ext4”--size=10000
    part  /data    --onpart=/dev/sdb1  --noformat
    part  raid.100  --size=2000
    part  pv.100     --size=1000

raid  (可選)
    設置RAID。
    raid 掛載點  --level=<level>  --device=<mddevices_name>  <raid組成分區>
    掛載點:    選取根/時,注意儘量避免/boot在RAID內,除非爲RAID1;
    --level=     設置RAID級別
    --device=  RAID設備名稱,如md0,md1...
    --byte-pre-inode=    設置該RAID分區上inode大小;若分區文件系統類型不支持該參數,會靜默忽略參數;
    --spares=  設置RAID的熱備盤
    --fstype=  設置文件系統類型
    --fsoptions=  設置掛載該文件系統時自定義的一些參數,參數寫入fstab文件;
    --useexisting  使用現有的RAID設備並且重新格式化原設備
    --noformat     在使用現有的RAID設備時不格式化原有RAID設備
    例:完整創建一個RAID1設備示例;
    part  raid.10  --size=1000  --ondisk=/dev/sdb
    part  raid.11  --size=1000  --ondisk=/dev/sdc
    raid  /data  --level=1  --device=md0  raid.10  raid.11

volgroup  (可選)
    創建一個LVM卷組VG;
    volgroup  vg_name  partition  [options]
    --useexiting   使用現有的VG並且重新格式化
    --noformat    使用現有的VG時不做格式化
    --pesize          設置PE(physical extents)塊大小
    例:
    part pv.11  --size=2000
    volgroup  myvg  pv.11

logvol  (可選)
    創建一個LVM邏輯卷LV;
    logvel  mnt_point  --vgname=vg_name  --size=lv_size  --name=lv_name  [options]
    --useexiting  使用現有的LV並且重新格式化
    --noformat   使用現有的LV時不做格式化
    --fstype=      指定RAID分區類型
    --fsoptions=  設置掛載該文件系統時自定義的一些參數,參數寫入fstab文件;
    --byte-pre-inode=    設置該RAID分區上inode大小;
    --precent=    設定LV大小爲VG可用空間的比例;
    例:
    part pv.20  --size=5000
    volgroup  mvvg  pv.20
    logvol    /data  --vgname=myvg  --size=3000  --name=mydata

六.  kickstart配置文件示例

  1. ########################################################################## 
  2. # 
  3. # kickstart install script  
  4. # RHEL version 5 
  5. # Platform=x86, AMD64, or Intel EM64T 
  6. # 
  7. ########################################################################## 
  8.  
  9. # Install OS instead of upgrade 
  10. install 
  11.  
  12. # Use text mode install 
  13. text 
  14. # Installation Number configuration 
  15. key --skip 
  16. # Local installation Use CDROM installation media  
  17. cdrom 
  18. # Network installation via FTP of HTTP 
  19. #url --url ftp://<username>:<password>@install.example.com/pub/RH 
  20. #url --url http://install.example.com/pub/RH 
  21. # Network installation via NFS 
  22. #nfs --server=nfsserver.example.com  --dir=/pub/install-tree 
  23. # Local installation Use HD source 
  24. #harddrive --partition /dev/sda2 --dir=/data/iso 
  25. # If you use harddrive, you must use ISO p_w_picpaths, not a tree 
  26. # Note that even if though we clearpart --all, the install 
  27. # partition will remain, which can be quite useful. 
  28.  
  29.  
  30. # System authorization information 
  31. auth  --useshadow  --enablemd5 
  32. #Root password 
  33. rootpw --iscrypted $1$1P72E10M$b47abC13/yUSzV9uvCoML0 
  34. #rootpw  redhat 
  35.  
  36. # System bootloader configuration 
  37. bootloader --append="rhgb quiet" --location=mbr 
  38. # Clear the Master Boot Record 
  39. zerombr 
  40. # Partition clearing information 
  41. clearpart --all --initlabel 
  42.  
  43. # Run the Setup Agent on first boot 
  44. firstboot --disable 
  45. # System keyboard 
  46. keyboard us 
  47. # System language 
  48. lang en_US 
  49. # System timezone 
  50. timezone --isUtc Asia/Shanghai 
  51.  
  52. # Installation logging level 
  53. logging --level=info 
  54.  
  55. # Network information 
  56. network --bootproto=dhcp --device=eth0 --onboot=on 
  57.  
  58.  
  59. # Firewall configuration 
  60. firewall --enabled --ssh  --trust=eth0 
  61. # SELinux configuration 
  62. selinux --enforcing 
  63.  
  64. # X Window System configuration information 
  65. xconfig  --defaultdesktop=GNOME --depth=16 --resolution=800x600 --startxonboot 
  66. # Do not configure X 
  67. #skipx 
  68. # Reboot after installation 
  69. reboot 
  70.  
  71. # Disk partitioning information 
  72. part /boot --bytes-per-inode=4096 --fstype="ext3" --size=100 
  73. part / --asprimary --bytes-per-inode=4096 --fstype="ext3" --size=10240 
  74. part pv.100 --size=4096  --grow 
  75. volgroup myvg --pesize=32768 pv.100 
  76. logvol /data --fstype="ext3" --name=mydata --vgname=myvg --size=1024 --grow --maxsize=2048 
  77.  
  78. # This packages is for RedHat5.5 
  79. %packages 
  80. @base 
  81. @gnome-desktop 
  82. @development-libs 
  83. @admin-tools 
  84. @base-x 
  85. @development-tools 
  86. @sound-and-video 
  87. @chinese-support 
  88. @gnome-software-development 
  89. @x-software-development 
  90. @openfabrics-enterprise-distribution 
  91. @printing 
  92. @server-cfg 
  93. @legacy-software-support 
  94. @mail-server 
  95. @system-tools 
  96. @graphical-internet 
  97. @editors 
  98. @text-internet 
  99. @graphics 
  100. @dialup 
  101. @java 
  102. @office 
  103.  
  104. %post --interpreter=/bin/bash 
  105. # Let's log post-install 
  106. # Create two user 
  107. /usr/sbin/useradd florian 
  108. /usr/sbin/useradd douglas 
  109. /bin/echo "florian" | /usr/bin/passwd --stdin florian 
  110. /bin/echo "douglas" | /usr/bin/passwd --stdin douglas 
  111. # Print message onboot: We are the fighter... 
  112. /bin/echo "We are the fighter......Mr.Li" > /etc/issue 
  113.  
  114. ) 2>&1 >> /root/post-install.log 
  115.  

 

七.  RedHat 安裝光盤安裝樹介紹:


    光盤中包含文件夾isolinux、p_w_picpaths、Cluster、ClusterStorage、Server、VT六個文件夾;包含隱藏文件.discinfo及.treeinfo和一些普通文件如TRANS.TBL等;
    isolinux文件夾中有開機引導系統的安裝內核(vmlinuz)及RAM 鏡像(initrd.img),在引導力系統時會加載入內存,給系統的安裝提供一個Linux安裝引導平臺;文件夾中還有在不同模式下顯示信息的.msg文件;splash.lss是特殊格式的引導過程背景圖片(640*320,16位色,ppm格式);
    p_w_picpaths文件夾中包含有各種引導鏡像;有用於製作微型啓動光盤的boot.iso;有可放置於USB或其他大容量可引導介質的VFAT分區上,製作引導工具的鏡像diskboot.img;
也有用於製作PXE安裝方式引導介質的pxeboot文件夾;及XEN所需的xen文件夾;
    Server、VT、Cluster、ClusterStorage四個文件夾包含安裝所需的所有RPM包;Server文件夾中包含基礎軟件包,VT包含xen相關的軟件包;Cluster、ClusterStorage是集羣及集羣存儲相關的軟件包;根據這四個包可以配置本地的yum源;
    TRANS.TBL文件記錄當前目錄的列表,用mkisofs的-T參數重新生成,主要是爲了長文件名稱
    .discinfo 是安裝介質的識別信息;
    .treeinfo 文件記錄不同安裝方式安裝程序所在的目錄結構,如:PXE方式時,內核kernel=p_w_picpaths/pxeboot/vmlinuz;根文件系統initrd=p_w_picpaths/pxeboot/initrd.img
    stage2.img、minstg2.img是引導後第二階段安裝需要用到的鏡像文件(這兩個鏡像文件功能及結構在後面描述),若定製LiveCD,則需要修改;
    repodata 是精確描述一個RPM包的詳細信息,如依賴關係,包含文件,校驗碼信息等;
    comps.xml是一個xml格式的數據文件,將各個RPM包按照一定的原則組織成若干組,安裝時可以按照信息直接安裝一組軟件包;
    (stage2.img映像文件中的主要部分是安裝程序anaconda,它的主執行體是/usr/bin下的anaconda,由其調用的大量例程分佈在/usr/lib/anaconda下,而安裝過程中要用到的資源文件分佈在/usr/share/anaconda下。
    當boot.img所代表的啓動介質被系統引導之後,在內存中就建立了一個完整的Linux系統(包括Linux內核和一個內存虛擬文件系統),之後便執行文件系統中存在的loader命令,從適當的介質中執行安裝程序(例:安裝介質是CD-ROM,就解析CD-ROM上的stage2.img,並從中執行安裝程序),即執行anaconda,完成Linux系統的安裝任務
    詳細可參看:(Linux發行版製作指南)
http://leozhao.livejournal.com/3128.html

 

八.  Anaconda/Kickstart系統安裝過程圖示:

 

 

九.  boot.img、stage2.img結構示意:

 注:現在新版本的兩個鏡像略有出入,依實際爲準(圖後附查看img方法);

 

 

loop方式掛載特殊格式的img鏡像方法:

  1. [root@bogon p_w_picpaths]# ls 
  2. boot.iso  diskboot.img  minstg2.img  pxeboot  README  stage2.img  TRANS.TBL  xen 
  3. [root@bogon p_w_picpaths]# file stage2.img  
  4. stage2.img: Squashfs filesystem, little endian, version 3.0, 0 bytes, 8969 inodes, blocksize: 65536 bytes, created: Mon Mar 22 19:56:50 2010 
  5. #從上面看出img文件格式爲squashfs,所以在下面掛載時明確指定該格式,否則會報錯;
  6. [root@bogon p_w_picpaths]# mkdir ../img 
  7. [root@bogon p_w_picpaths]# mount -o loop -t squashfs stage2.img ../img/ 
  8. [root@bogon p_w_picpaths]# ls ../img 
  9. etc  lib  modules  proc  usr  var 
  10. [root@bogon p_w_picpaths]# 
  11.  

 

十.  使用Kickstart進行安裝的多種方式列舉

(過程不再贅述,對於一些重要的實驗在後期會附上HOW-TO):

  1.   kickstart放置於鏡像中,重新制作ISO並刻盤,從光盤實現引導,自動配置並提供安裝樹安裝;
  2.   kickstart可放置於網絡上,用FTP/HTTP/NFS提供出來;用光盤引導及提供安裝樹;
  3.   用FTP/HTTP/NFS提供kickstart及安裝樹,用光盤或其他可引導的大象存儲設備引導;
  4.   搭建PXE純網絡的架構,實現引導,kickstart,及安裝樹的提供完全自動化;

 

參考:

  Red_Hat_Enterprise_Linux-5-Installation_Guide-en-US

  http://leozhao.livejournal.com/3128.html
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章