無人值守自動化安裝系統

十五十六發表於2018-09-23

系統安裝過程

開機系統bios自檢,然後通過bootloader載入isolinux相當於吧光碟當作根檔案系統掛在起來,載入的過程中會需要initrd機制,在記憶體中掛在一個臨時根檔案系統,把根檔案系統需要的驅動載入出來,之後再把真正的根檔案系統掛載上來。然後執行anaconda程式。

Anaconda

簡介

Anaconda是Red Hat Enterprise Linux、CentOS、Fedora等作業系統的安裝管理程式。它以Python及C語言寫成,以圖形的PyGTK和文字的python-newt介面寫成。它可以用來自動安裝配置,使使用者能夠以最小的監督執行。 Anaconda安裝管理程式應用在RHEL,Fedora和其他一些專案,Anaconda提供純文字模式和GUI模式,使用者可以安裝在各種各樣的系統

Anaconda工作過程

安裝前配置階段

  • 安裝過程使用的語言;
  • 鍵盤型別
  • 安裝目標儲存裝置
  • Basic Storage:本地磁碟
  • Special Storage: iSCSI
  • 設定主機名
  • 配置網路介面
  • 時區
  • 管理員密碼
  • 設定分割槽方式及MBR的安裝位置;
  • 建立一個普通使用者;
  • 選定要安裝的程式包;

安裝階段

  • 在目標磁碟建立分割槽並執行格式化;
  • 將選定的程式包安裝至目標位置;
  • 安裝bootloader;

首次啟動

  • iptables
  • selinux
  • core dump

Anaconda的配置方式

  • 互動式配置方式:開機頁面之後手動安裝
  • 自動化安裝:在kickstart檔案中吧配置項都設定好,讓anaconda讀取kickstart配置檔案自動化安裝

安裝引導選項

系統安裝選單頁面的時候,按下鍵盤ESC即可進入文字頁面輸入命令

boot:
  • text:文字安裝方式
  • method:手動指定使用的安裝方法
與網路相關的引導選項:
  • ip=IPADDR
  • netmask=MASK
  • gateway=GW
  • dns=DNS_SERVER_IP
遠端訪問功能相關的引導選項
  • vnc
  • vncpassword=‘PASSWORD’
啟動緊急救援模式:
  • rescue
裝載額外驅動:
  • dd
ks:指明kickstart檔案的位置;

ks=

  • DVD drive: ks=cdrom:/PATH/TO/KICKSTART_FILE
  • Hard Drive: ks=hd:/DEVICE/PATH/TO/KICKSTART_FILE
  • HTTP Server: ks=http://HOST[:PORT]/PATH/TO/KICKSTART_FILE
  • FTP Server: ks=ftp://HOST[:PORT]/PATH/TO/KICKSTART_FILEftp
  • HTTPS Server: ks=https://HOST[:PORT]/PATH/TO/KICKSTART_FILE

ks示例檔案

firewall --disabled  #關閉防火牆
install    #安裝作業系統
url --url="https://mirrors.aliyun.com/centos/6/os/x86_64/"  #採用網路源安裝
rootpw --iscrypted $1$.EaLyDeQ$FujxZcce.b3ZpI1MI9JWR0  #加密後的root密碼
auth  --useshadow  --passalgo=sha512  #認證方式,預設
graphical  #圖形化介面安裝
keyboard us  #鍵盤佈局
lang en_US  #系統預設語言
selinux --disabled #關閉selinux
skipx
logging --level=info  #安裝過程日誌等級
reboot  #安裝結束後重啟
timezone  Asia/Shanghai  #設定時區
network  --bootproto=static --device=eth0 --gateway=192.168.253.2 --ip=192.168.253.181 --nameserver=192.168.253.2 --netmask=255.255.255.0 --onboot=on  #網路相關設定
bootloader --location=mbr  #bootloader安裝在mbr上
zerombr
clearpart --all --initlabel 
#分割槽資訊
part /boot --fstype="ext4" --size=150
part swap --fstype="swap" --size=2048
part / --fstype="ext4" --grow --size=1
#需要安裝的包
%packages
@base
@development
%end

kickstart檔案格式

命令段:指定各種安裝前配置選項,如鍵盤型別等;

  • authconfig:認證方式配置 (預設,一般不改動)
示例:
authconfig --enableshadow --passalgo=sha512
  • bootloader:定義bootloader的安裝位置及相關配置
示例: 
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"

#--location=mbr --driveorder=sda:bootloader優先裝在sda磁碟的mbr上。
#crashkernel=auto rhgb quiet:表示核心一旦崩潰,auto自動處理一般是核心轉儲,quiet安靜模式,不輸出
#rhgb:紅帽自帶的引數
  • keyboard:設定鍵盤型別
例子:
 keyboard us
  • lang:語言型別
例子:設定語言英文
lang en_US.UTF-8  
  • part:分割槽佈局;
標準分割槽例子:part /boot --fstype=ext4 --size=500
lvm例子: part pv.008002 --size=51200
  • rootpw:管理員密碼
例子:
rootpw --iscrypted STRING
  • timezone:時區
例子:
timezone Asia/Shanghai
  • network:配置網路介面
例子: 
network --onboot yes --device eth0 --bootproto dhcp --noipv6
  • firewall:防火牆
例子:
firewall --disabled
  • selinux:SELinux
例子:
selinux --disabled
  • repo:指明安裝時使用的repository;
例子repo --name="CentOS" --baseurl=cdrom:sr0 --cost=100
  • install OR upgrade:安裝或升級;
  • text:安裝介面型別,text為tui,預設為GUI
  • halt、poweroff或reboot:安裝完成之後的行為;
  • url: 指明安裝的網路源地址

程式包段: 指明要安裝程式包,以及包組,也包括不安裝的程式包;

%packages : 程式包段
@group_name : 指定安裝包組
package : 安裝某包
-package : 指定不安裝某包不一定真的不安裝,因為依賴關係也可能被安裝上去
%end 表示結束

指令碼段:

%pre:安裝前指令碼 ,執行環境是執行安裝介質上的微型Linux系統環境;
%post:安裝後指令碼 ,執行環境是安裝完成的系統;

KS檔案製作

一般製作有兩種方法

  • 手動編寫
  • 利用程式生成

主要介紹這種system-config-kickstart生成ks檔案的方法,需要使用linux的圖形化桌面環境,需要注意一點,如果用CentOS6生成CentOS7的ks檔案可能會出問題。

#這裡預設已經在圖形化桌面環境中了
第一步:安裝system-config-kickstart程式
yum install system-config-kickstart -y
第二步:命令列開啟輸入system-config-kickstart

第三步:配置

基礎配置
在這裡插入圖片描述
安裝方法配置
這裡使用光碟
在這裡插入圖片描述

bootloader選項
在這裡插入圖片描述

分割槽配置
這裡的分了3個分割槽
1./boot 檔案系統ext4 150mb
2.swap交換分割槽 檔案系統ext4 2048mb
3./ 檔案系統ext4 餘下所有空間

在這裡插入圖片描述

網路配置
在這裡插入圖片描述

認證方法
在這裡插入圖片描述

防火牆配置
在這裡插入圖片描述

使用圖形化介面安裝
在這裡插入圖片描述

程式包選擇
選擇要安裝的程式包
在這裡插入圖片描述

後面是安裝前執行的指令碼與安裝後執行的指令碼

第四步:儲存
在這裡插入圖片描述
儲存在了root目錄下
在這裡插入圖片描述

[root@localhost ~]# cat /root/ks.cfg 
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use CDROM installation media
cdrom
# Root password
rootpw --iscrypted $1$YVbYBc7a$.jggXcp4crZtutzwm9f4E.
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use graphical install
graphical
# System keyboard
keyboard us
# System language
lang en_US
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
# Installation logging level
logging --level=info
# Reboot after installation
reboot
# System timezone
timezone  Asia/Shanghai
# Network information
network  --bootproto=static --device=eth0 --gateway=192.168.253.2 --ip=192.168.253.180 --nameserver=192.168.253.2 --netmask=255.255.255.0 --onboot=on
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel 
# Disk partitioning information
part /boot --fstype="ext4" --size=150
part swap --fstype="swap" --size=2048
part / --fstype="ext4" --grow --size=1

檢查語法錯誤
ksvalidator /root/ks.cfg

這裡使用http方式獲取ks檔案

 yum install httpd -y  #安裝httpd
 cp /root/ks.cfg /var/www/html/ks.cfg  #複製ks檔案到站點目錄
 /etc/init.d/httpd start  #啟動httpd服務

在這裡插入圖片描述

啟動新的虛擬機器
在這裡插入圖片描述
在這裡按下ESC進入命令列
在這裡插入圖片描述
命令列啟動指定ks檔案,就可以自動安裝了。
在這裡插入圖片描述
然後回車就可以自動化安裝了

自定義CentOS6映象檔案

第一步:建立myboot目錄
mkdir -pv /root/myboot

第二步:複製光碟的isolinux目錄
#如果沒有掛載光碟需要先掛載一下光碟
#mount -r /dev/cdrom /media
cp -r /media/isolinux/ /root/myboot/

修改檔案/root/myboot/isolinux/isolinux.cfg

[root@localhost ~]# cat /root/myboot/isolinux/isolinux.cfg 
default vesamenu.c32
#prompt 1
timeout 600

display boot.msg

menu background splash.jpg
menu title Welcome to CentOS 6.9!
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000

label linux
  menu label ^Install or upgrade an existing system
  menu default
  kernel vmlinuz
  append initrd=initrd.img ip=192.168.253.181 netmask=255.255.255.0 gateway=192.168.253.2 ks=cdrom:/ks.cfg

第三步:放置ks檔案到myboot目錄

[root@localhost ~]# cat /root/myboot/ks.cfg 
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use network installation
url --url="https://mirrors.aliyun.com/centos/6/os/x86_64/"
# Root password
rootpw --iscrypted $1$.EaLyDeQ$FujxZcce.b3ZpI1MI9JWR0
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use graphical install
graphical
# System keyboard
keyboard us
# System language
lang en_US
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
# Installation logging level
logging --level=info
# Reboot after installation
reboot
# System timezone
timezone  Asia/Shanghai
# Network information
network  --bootproto=static --device=eth0 --gateway=192.168.253.2 --ip=192.168.253.181 --nameserver=192.168.253.2 --netmask=255.255.255.0 --onboot=on
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel 
# Disk partitioning information
part /boot --fstype="ext4" --size=150
part swap --fstype="swap" --size=2048
part / --fstype="ext4" --grow --size=1

%packages
@base
@development

%end

第四步:安裝mkisofs命令
yum install mkisofs -y

第五步:執行命令
mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V “CentOS 6 x86_64 boot” -c isolinux/boot.cat -b isolinux/isolinux.bin -o /root/boot.iso myboot/

在這裡插入圖片描述
這個檔案就是映象檔案,上傳到window然後匯入虛擬機器即可。

匯入虛擬機器之後
在這裡插入圖片描述
回車就可以了自動化安裝了

相關文章