首頁 > 軟體

引導映象實現CentOS半自動化安裝

2020-06-16 18:01:20

本實驗在生產環境中現在已經用不到了,因為已經有更高階的自動化安裝軟體來取代了本次實驗,所以只是為了能從低層更了解Linux的安裝,從而做了本次《引導映象實現CentOS半自動化安裝》實驗,加深與理解當前所學的知識。

先看一下拓撲圖吧!

簡單的解釋一下拓撲圖,先在伺服器端開啟http服務,在http預設目錄下建立兩個目錄分別是ks、x86_64,並把光碟映象掛載至/var/www/html/x86_64目錄下,把已經製作好的ks.cfg檔案複製至/var/www/html/ks目錄中;在伺服器端製作isolinux用於引導啟動用戶端(其實就是把光碟映象中的isolinux目錄給抽取出來,並重新用命令生成一個iso的檔案)。在用戶端在掛載isolinux,通過區域網進行安裝CentOS 6.6 x86_64.

(1) 首先製作ks.cfg檔案

在CentOS 6安裝完成後會在/root下生成一個anaconda-ks.cfg檔案,這個是由CentOS 6安裝程式anaconda根據你在系統安裝過程中所有的鍵盤型別、語言、時區、分割區、程式包的選擇而生成的一個檔案。

如果我們要製作一個anaconda-ks.cfg檔案,可以參考這個檔案在些基礎上進行修改,可以使用system-config-kickstart程式生成相關的檔案。

安裝system-config-kickstart程式

1 [root@node-2 ~]# yum install -ysystem-config-kickstart

啟動system-config-kickstart程式

使用xshell 4遠端連線終端啟動system-config-kickstart,建議安裝XmanagerEnterprise 4軟體,這樣可以在本地終端中開啟Linux系統中的軟體。在命令列中輸入system-config-kickstart命令即可。

修改完之後在File選單中選擇Save儲存,在最上面輸入ks.cfg名字,選擇儲存位置,點選Save按鈕即可。

檢視剛剛生成的檔案並進行新增一些內容,因為有些命令是需要手動新增的,相關的請參考REHL官方的資料。

[root@node-2 ~]# cat /var/www/html/ks/ks.cfg
#platform=x86, AMD64, or IntelEM64T
#version=DEVEL
# Firewall configuration
firewall --disabled                  #安裝後重新啟動初始化系統時選擇關防火牆
# Install OS instead of upgrade
install                        #安裝型別選擇為安裝
# Use network installation
url --url="http://172.16.9.21/x86_64/"        #通過網路安裝,使用的Http服務
repo --name="CentOS"--baseurl=http://172.16.9.21/x86_64/ --cost=100
#repo --name="FedoraEPEL" --baseurl=http://172.16.0.1/fedora-epel/6/x86_64/ --cost=1000
# Root password
rootpw --iscrypted $1$jLn8z9P1$ff07gV9CfXmz1Q0NEOmAw/  #管理員root的密碼,使用加密存放
# System authorizationinformation
auth  --useshadow --passalgo=sha512          #認證方法,使用的sha512的加密方式
# Use graphical install
graphical                        #使用圖形介面進行安裝
firstboot --disable
# System keyboard
keyboard us                      #選擇的鍵盤型別為us
# System language
lang en_US                        #語言為英文
# SELinux configuration
selinux --disabled                    #關閉selinux
# Do not configure the X WindowSystem
skipx                          #忽略X Window System的設定
# Installation logging level
logging --level=info                  #啟動的紀錄檔級別
# Reboot after installation
reboot                          #安裝完之後重新啟動系統
# System timezone
timezone  Asia/Shanghai                  #系統時區為亞洲/上海
# Network information
#network  --bootproto=dhcp --device=eth0 --onboot=on
# System bootloaderconfiguration              #表示傳遞能核心的引數
bootloader--append="crashkernel=auto crashkernel=auto rhgb quiet"--location=mbr --driveorder="sda"
# Partition clearinginformation
clearpart --all  #以下都是對磁碟進行分割區操作的,這裡使用的LVM
zerombr      #磁碟沒有分割區,對磁碟進行分割區
part /boot --fstype=ext4--size=200
part pv.008002 --size=61440
 
volgroup vg0 --pesize=8192pv.008002
logvol / --fstype=ext4--name=root --vgname=vg0 --size=20480
logvol swap --name=swap--vgname=vg0 --size=2048
logvol /usr --fstype=ext4--name=usr --vgname=vg0 --size=10240
logvol /var --fstype=ext4--name=var --vgname=vg0 --size=20480
 
%post                #安裝完之後需要執行的指令碼
 
%end                #指令碼結束符
%packages              #在安裝過程中需要安裝的程式包及程式包組
@base
@basic-desktop
@chinese-support
@client-mgmt-tools
@core
@desktop-platform
@fonts
@general-desktop
@graphical-admin-tools
@legacy-x
@network-file-system-client
@perl-runtime
@remote-desktop-clients
@x11
-ibus-table-cangjie
-ibus-table-erbi
-ibus-table-wubi
 
%end        #程式包及程式包組結束符

(2) 安裝http服務與啟動
12345 [root@node-2 ~]# yum installhttpd -y          #安裝httpd服務
[root@node-2 ~]# service httpdstart            #啟動http服務
Starting httpd:                                          [  OK  ]
[root@node-2 ~]# netstat-ntlp|grep 80      #檢視啟動狀態,http的埠為tcp的80埠
tcp        0    0 :::80                      :::*                        LISTEN      2008/httpd

(3) 掛載光碟映象
  把光碟映象放入光碟機,如果使用的是虛擬機器把光碟檔案新增至虛擬機器的光碟機,並選擇啟用。
1234 [root@node-2 ~]# mkdir /var/www/html/{ks,x86_64}      #建立ks,x86_64目錄
[root@node-2 ~]# mount -r/dev/dvd /var/www/html/x86_64/  #以唯讀方式掛載光碟映象至/var/www/html/x86_64/
[root@node-2 ~]# mount|tail -1                #檢視掛載情況
/dev/sr0 on/var/www/html/x86_64 type iso9660 (ro)

(4) 複製ks.cfg檔案至/var/www/html/ks目錄下
123 [root@node-2 ~]# cp/root/ks.cfg /var/www/html/ks/
[root@node-2 ~]# ls/var/www/html/ks/
ks.cfg

(5)製作isolinux啟動引導
在/tmp/建立一個cdrom目錄,把光碟映象中isolinux複製到/tmp/cdrom目錄中,並使用mkisofs命令生成iso檔案。
1234567 [root@node-2 ~]# cd /tmp/                      #切換著/tmp目錄
[root@node-2 tmp]# cp -r/var/www/html/x86_64/isolinux/ /tmp/cdrom/ #複製isolinux到/tmp/cdrom目錄
[root@node-2 tmp]# ls cdrom/                #檢視複製結果
isolinux
[root@node-2 tmp]# mkisofs -R-J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "Centos6.6 X86_64 boot disk" -b isolinux/isolinux.bin -c isolinux/boot.cat -o/root/boot.iso cdrom/    #製作boot.iso檔案
[root@node-2 tmp]# ll/root/boot.iso    #檢視iso檔案製作情況
-rw-r--r-- 1 root root 39866368Apr 17 13:39 /root/boot.iso

(6)把製作好的boot.iso檔案下載到原生的電腦下,可能通過Xshell 4自帶的Xftp進行拖動把boot.iso放至於桌面上。
(7)新建一個虛擬機器,磁碟空間大小為120G,把boot.iso載入至虛擬機器光碟機中,選擇“啟動時連線”,開啟剛才新建的虛擬機器,按F2進入BIOS,移動至Boot選項修改第一啟動項為CD-ROM Driver,按F10儲存並退出,將會重新啟動虛擬機器。
(8)在出現CentOS安裝選擇介面時,如下圖所示。

此時按ESC鍵,因為我們只有一個引導啟動,並沒有安裝程式所需要的程式包,我們想通過手動指定ks.cfg檔案和利用http服務實現遠端的安裝CentOS 6 x86_64。
  將進入boot的命令提示字元,輸入linux ip=172.16.9.34 netmask=255.255.0.0 gateway=172.16.0.1ks=http://172.16.9.21:80/ks/ks.cfg,輸入完成後回車,開始載入isolinux中微核心vmlinux和initrd.img檔案,開始CentOS的自動安裝。

提示:
 在boot的命令列提示符中輸入的linux表示使用圖形化安裝CentOS,需要有大於512M的記憶體;
 ip、netmask、gateway是用於指定本地網絡卡的IP地址、掩碼、閘道器的,
 ks表示用於指定ks.cfg檔案所在位置,可以使用http,ftp,nfs,https,DVD Driver,使用的不同服務後面接的地址可能會有所不同的:
        DVD drive          ks=cdrom:/path/to/kickstart_file
        HTTP Server        ks=http://server_ip:port/path/to/kickstart_file
        HTTPS Server        ks=https://server_ip:port/path/to/kickstart_file
        FTP Server          ks=ftp://server_ip:port/path/to/kickstart_file
        NFS Server          ks=nfs:server_ip:/path/to/kickstart_file
 
安裝Centos進階:
  通過上面的安裝你發現我們每次都要指定IP址址,子網掩碼,閘道器及ks.cfg檔案的路徑,我們能不能把ks.cfg檔案製作進isolinux引導啟動中,假設所在的網路環境中已經有一個DHCP伺服器能讓其主機自動獲取IP地址,這樣我們只需要把isolinux製作的光碟放進光碟機中,??後就是等待等待,Centos 6 x86_64已經安裝完了。簡單的畫一個圖:

 我們只需要在上面的基礎上加以修改就能實現的,做如下修改;
(1)把ks.cfg檔案複製至/tmp/cdrom/目錄下
123 [root@node-2 tmp]# cp/var/www/html/ks/ks.cfg /tmp/cdrom/ks.cfg
[root@node-2 tmp]# ls/tmp/cdrom/
isolinux  ks.cfg

(2)修改ks.cfg檔案中開啟網絡卡的DHCP服務,讓其能自動獲取IP地址新增以下一行:
12 # Network information
network  --bootproto=dhcp --device=eth0 --onboot=on  #在上面的ks.cfg檔案中把前面的“#”取消即可;

(3)切換至/tmp/cdrom/isolinux/目錄,對isolinux.cfg檔案進行修改
[root@node-2 ~]# cd/tmp/cdrom/isolinux/            #切換至/tmp/cdrom/isolinux/目錄
[root@node-2 isolinux]#chmod  u+w *              #對所有的檔案新增修改的許可權
[root@node-2 isolinux]# vimisolinux.cfg            #編譯isolinux.cfg檔案,在append後面加上ks=cdrom:/ks.cfg
label linux
  menu label ^Install or upgrade an existingsystem
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=cdrom:/ks.cfg
(4)重新製作isolinux引導映象
12 [root@node-2 isolinux]# cd /tmp              #切換至/tmp目錄
[root@node-2 tmp]# mkisofs -R-J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "Centos6.6 X86_64 boot disk" -b isolinux/isolinux.bin -c isolinux/boot.cat -o/root/boot.iso cdrom/

(5)把/root/boot.iso下載至本地桌面上,重新啟動用於安裝系統的虛擬機器,選擇“Install or upgrade an existing system”標籤,進行自動化的安裝CentOS6.6 x86_64.

提示:還可以把ks.cfg檔案在製作isolinux引導啟動映象時指定為http服務中的ks/ks.cfg檔案,你還可以把ks.cfg檔案直接做到發行版的光碟中,根據你的需求來實現自動化的安裝。
 
小結:
此實驗在生產環境中已經沒有使用,只是為了理解CentOS的安裝流程,從而通過自己手動製作isolinux來引導啟動,通過http服務來提供CentOS安裝映象及ks.cfg檔案,從而實現一個半自動化的安裝CentOS系統,為以後的更好的理解全自動化安裝CentOS,做下前期的安裝流程熟悉。

本文永久更新連結地址http://www.linuxidc.com/Linux/2015-04/116772.htm


IT145.com E-mail:sddin#qq.com