歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> Kickstart無人值守安裝linux系統

Kickstart無人值守安裝linux系統

日期:2017/3/3 12:49:25   编辑:Linux技術

第1章 名詞介紹

1.1 pxe

PXE使用DHCP(動態主機配置協議)和TFTP(普通文件傳送協議)從網絡上查找並裝載引導程序。PXE環境從NIC(Network Interface Card)上的BIOS裝載。預引導服務使用PXE來發現設備是否存在為其指定的預引導服務工作,並向設備提供執行指派工作所需的文件。通過使用預引導服務,可以自動將映像放置到設備上,即使設備的硬盤為空。

1.2 pxelinux.0

主要作用是裝載執行指派的預引導工作所需的操作系統。pxelinux.0文件是syslinux這一開放源代碼項目的一部分的改進版本。雖然pxelinux.0主要是Linux加載器,但它也可以裝載其他操作系統。它的工作方式是使用位於TFTP服務器上的配置文件來提供引導指令。

1.3 vmlinuz

vmlinuz是Linux內核的鏡像文件,可以被引導程序加載,從而啟動Linux系統

1.4 initrd

initrd----boot loader initialized RAM disk(全稱),是一種啟動Linux系統的方式,當前流行的Linux版本一般都采用模塊化的內核,這種方式可以在不重新編譯構建內核的情形下增加功能模塊,但是如果你的Linux的root文件系統所在設備的驅動是一個模塊(沒有編譯進內核映象),就不能被引導程序(例如loadlin)直接加載,這時會用到initrd方式來啟動你的Linux系統這種方式包括兩個階段:1)在一個RAM disk上建立一個臨時的root文件系統,在這個RAM disk上包含著你需要的驅動模塊2)載入所需驅動模塊,掛載實際的root文件系統 ,啟動Linux

1.5 initrd.img

initrd.img就是RAM disk的映象

第2章 PXE+Kickstart工作流程

Kickstart是一種無人值守的安裝方式。它的工作原理是在安裝過程中記錄典型的需要人工干預填寫的各種參數,並生成一個名為ks.cfg的文件。如果在安裝過程中(不只局限於生成Kickstart安裝文件的機器)出現要填寫參數的情況,安裝程序首先會去查找Kickstart生成的文件,如果找到合適的參數,就采用所找到的參數;如果沒有找到合適的參數,便需要安裝者手工干預了。所以,如果Kickstart文件涵蓋了安裝過程中可能出現的所有需要填寫的參數,那麼安裝者完全可以只告訴安裝程序從何處取ks.cfg文件,然後就去忙自己的事情。等安裝完畢,安裝程序會根據ks.cfg中的設置重啟系統,並結束安裝。 PXE+Kickstart無人值守安裝操作系統完整過程如下:




1、PXE Client向DHCP發送請求 PXE Client從自己的PXE網卡啟動,通過PXE BootROM(自啟動芯片)會以UDP(簡單用戶數據報協議)發送一個廣播請求,向本網絡中的DHCP服務器索取IP。2、DHCP服務器提供信息 DHCP服務器收到客戶端的請求,驗證是否來至合法的PXE Client的請求,驗證通過它將給客戶端一個“提供”響應,這個“提供”響應中包含了為客戶端分配的IP地址、pxelinux啟動程序(TFTP)位置,以及配置文件所在位置。3、PXE客戶端請求下載啟動文件 客戶端收到服務器的“回應”後,會回應一個幀,以請求傳送啟動所需文件。這些啟動文件包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等文件。4、Boot Server響應客戶端請求並傳送文件 當服務器收到客戶端的請求後,他們之間之後將有更多的信息在客戶端與服務器之間作應答, 用以決定啟動參數。BootROM由TFTP通訊協議從Boot Server下載啟動安裝程序所必須的文件(pxelinux.0、pxelinux.cfg/default)。default文件下載完成後,會根據該文件中定義的引導順序,啟動Linux安裝程序的引導內核。5、請求下載自動應答文件 客戶端通過pxelinux.cfg/default文件成功的引導Linux安裝內核後,安裝程序首先必須確定你通過什麼安裝介質來安裝linux,如果是通過網絡安裝(NFS, FTP, HTTP),則會在這個時候初始化網絡,並定位安裝源位置。接著會讀取default文件中指定的自動應答文件ks.cfg所在位置,根據該位置請求下載該文件。6、客戶端安裝操作系統 將ks.cfg文件下載回來後,通過該文件找到OS Server,並按照該文件的配置請求下載安裝過程需要的軟件包。 OS Server和客戶端建立連接後,將開始傳輸軟件包,客戶端將開始安裝操作系統。安裝完成後,將提示重新引導計算機。

第3章 安裝

Kickstart的安裝方式有多種組合,Kickstart+DHCP+TFTP+HTTP/NFS/FTP等,不管是HTTP、NFS或者FTP,都是為了尋找到系統引導後需要安裝的包組等文件。下面的安裝方是Kickstart+DHCP+TFTP+HTTP

3.1 DHCP安裝配置

[root@m01 ~]# yum -y install dhcp[root@m01 ~]# vim /etc/dhcp/dhcpd.conf## DHCP Server Configuration file.# see /usr/share/doc/dhcp*/dhcpd.conf.sample# see 'man 5 dhcpd.conf'#subnet 10.0.0.0 netmask 255.255.255.0 { range 10.0.0.201 10.0.0.210; option subnet-mask 255.255.255.0; default-lease-time 21600; max-lease-time 43200; next-server 10.0.0.61; filename "/pxelinux.0";}~ ~ ~ ~ ~ ~ ~ "/etc/dhcp/dhcpd.conf" 13L, 360C 已寫入[root@m01 ~]# /etc/init.d/dhcpd start正在啟動 dhcpd: [確定][root@m01 ~]# netstat -lntup|grep dhcpudp 0 0 0.0.0.0:67 0.0.0.0:* 2040/dhcpd

3.1.1 解釋配置

/etc/dhcp/dhcpd.confrange 10.0.0.100 10.0.0.200; # 可分配的起始IP-結束IPoption subnet-mask 255.255.255.0; # 設定netmaskdefault-lease-time 21600; # 設置默認的IP租用期限max-lease-time 43200; # 設置最大的IP租用期限next-server 10.0.0.7; # 告知客戶端TFTP服務器的ipfilename "/pxelinux.0"; # 告知客戶端從TFTP根目錄下載pxelinux.0文件注意:1、如果機器數量過多的話,注意dhcp服務器的地址池,不要因為耗盡IP而導致dhcpd服務器沒有IP地址release的情況。2、本來軟件裝完後都要加入開機自啟動,但這個Kickstart系統就不能開機自啟動,而且用完後服務都要關閉,防止未來重啟服務器自動重裝系統了。

3.2 TFTP安裝配置

TFTP服務器提供文件使用簡單文件傳輸協議。TFTP協議通常用於啟動無盤工作站,下載配置文件到客戶端,並開始對操作系統的安裝。[root@m01 ~]# yum -y install tftp.server[root@m01 ~]# vim /etc/xinetd.d/tftp# default: off# description: The tftp server serves files using the trivial file transfer \# protocol. The tftp protocol is often used to boot diskless \# workstations, download configuration files to network-aware printers, \# and to start the installation process for some operating systems.service tftp{ socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot disable = no per_source = 11 cps = 100 2 flags = IPv4}~ ~ "/etc/xinetd.d/tftp" 18L, 517C 已寫入[root@m01 ~]# /etc/init.d/xinetd restart停止 xinetd: [確定]正在啟動 xinetd: [確定][root@m01 ~]# netstat -lntup|grep xinetdudp 0 0 0.0.0.0:69 0.0.0.0:* 2066/xinetd

3.2.1 配置解釋

server_args = -s /var/lib/tftpboot #指定boot啟動目錄,保持默認disable = yes #no改為yes

3.3 HTTP安裝配置

[root@m01 ~]# yum -y install httpd[root@m01 ~]# sed -i "277i ServerName 127.0.0.1:80" /etc/httpd/conf/httpd.conf[root@m01 ~]# /etc/init.d/httpd start正在啟動 httpd: [確定][root@m01 ~]# netstat -lntup|grep "httpd"tcp 0 0 :::80 :::* LISTEN 2085/httpd[root@m01 ~]# mkdir /var/www/html/CentOS-6.7[root@m01 ~]# mount /dev/cdrom /var/www/html/CentOS-6.7/mount: block device /dev/sr0 is write-protected, mounting read-only[root@m01 ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev/sda3 8.8G 1.5G 6.9G 18% /tmpfs 495M 0 495M 0% /dev/shm/dev/sda1 190M 36M 145M 20% /boot/dev/sr0 3.7G 3.7G 0 100% /var/www/html/CentOS-6.7[root@m01 conf]# cat nginx.confworker_processes 1;events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; #include set include extra/www.conf;}[root@m01 conf]# cat extra/www.confserver { listen 80; server_name www.ky.com; autoindex on; location / { root /var/www/html/; }}[root@m01 conf]# fuser -k 80/tcp#殺死因前面開啟httpd服務占用80的端口進程,然後就可以開啟nginx服務

3.3.1 配置解釋

sed -i "277i ServerName 127.0.0.1:80" /etc/httpd/conf/httpd.confServerName指定Nginx用於識別自身的名字和端口號。通常這個值是自動指定的,但是我們推薦你顯式的指定它以防止啟動時出錯。如果你為你的主機指定了一個無效的DNS名,server-generated重定向將不能工作。mount /dev/cdrom /var/www/html/CentOS-6.7/將CentOS-6.7鏡像文件掛載到http服務下[root@m01 conf]# cat extra/www.confserver { listen 80; server_name www.ky.com; #域名設置 autoindex on; #不找首頁文件,展示目錄結構 location / { root /var/www/html/; #顯示網頁內容的文件目錄路徑 }}訪問浏覽器10.0.0.61/CentOS-6.7/查看配置是否正確




3.4 syslinux安裝配置

syslinux是一個功能強大的引導加載程序,而且兼容各種介質。SYSLINUX是一個小型的Linux操作系統,它的目的是簡化首次安裝Linux的時間,並建立修護或其它特殊用途的啟動盤。如果沒有找到pxelinux.0這個文件,可以安裝一下。[root@m01 conf]# yum -y install syslinux[root@m01 conf]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/[root@m01 conf]# cp -a /var/www/html/CentOS-6.7/isolinux/* /var/lib/tftpboot/[root@m01 conf]# mkdir -p /var/lib/tftpboot/pxelinux.cfg[root@m01 conf]# cp /var/www/html/CentOS-6.7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

3.4.1 編輯default文件

[root@m01 conf]# cat /var/lib/tftpboot/pxelinux.cfg/default default ksprompt 0 label ks kernel vmlinuz append initrd=initrd.img ks=http://10.0.0.61/ks_config/CentOS-6.7-ks.cfg ksdevice=eth0

3.4.2 解釋配置

cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/#將sysliunx的pxelinux.0文件拷貝到tftp啟動目錄下cp -a /var/www/html/CentOS-6.7/isolinux/* /var/lib/tftpboot/#將/var/www/html/CentOS-6.7/isolinux/*下的所有系統引導安裝的文件拷貝到tftp啟動目錄下mkdir -p /var/lib/tftpboot/pxelinux.cfgcp /var/www/html/CentOS-6.7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default#將isolinux.cfg文件拷貝到tftp啟動目錄下的pxelinux.cfg目錄下並改名為default

3.4.3 說明

[root@m01 conf]# cat /var/www/html/CentOS-6.7/isolinux/isolinux.cfgdefault vesamenu.c32# 默認加載一個菜單#prompt 1# 開啟會顯示命令行'boot: '提示符。prompt值為0時則不提示,將會直接啟動'default'參數中指定的內容timeout 600# timeout時間是引導時等待用戶手動選擇的時間,設為1可直接引導,單位為1/10秒 display boot.msg#菜單背景圖片、標題、顏色 menu background splash.jpgmenu title Welcome to CentOS 6.7!menu color border 0 #ffffffff #00000000menu color sel 7 #ffffffff #ff000000menu color title 0 #ffffffff #00000000menu color tabmsg 0 #ffffffff #00000000menu color unsel 0 #ffffffff #00000000menu color hotsel 0 #ff000000 #ffffffffmenu color hotkey 7 #ffffffff #ff000000menu color scrollbar 0 #ffffffff #00000000 label linux# label指定在boot:提示符下輸入的關鍵字,比如boot:linux[ENTER],這個會啟動label linux下標記的kernel和initrd.img文件 menu label ^Install or upgrade an existing system menu default# 一個標簽就是前面圖片的一行選項 kernel vmlinuz# 指定要啟動的內核。同樣要注意路徑,默認是/tftpboot目錄 append initrd=initrd.img# 指定追加給內核的參數,initrd.img是一個最小的linux系統label vesa menu label Install system with ^basic video driver kernel vmlinuz append initrd=initrd.img nomodesetlabel rescue menu label ^Rescue installed system kernel vmlinuz append initrd=initrd.img rescuelabel local menu label Boot from ^local drive localboot 0xfffflabel memtest86 menu label ^Memory test kernel memtest append -這個文件就是實現下圖這個界面的功能



[root@m01 conf]# cat /var/lib/tftpboot/pxelinux.cfg/default default ksprompt 0 label ks kernel vmlinuz append initrd=initrd.img ks=http://10.0.0.61/ks_config/CentOS-6.7-ks.cfg ksdevice=eth0 # 告訴安裝程序ks.cfg文件在哪裡,ksdevice=eth0代表當客戶端有多塊網卡的時候,設置從eth0安裝

3.5 創建ks.cfg文件

通常,我們在安裝操作系統的過程中,需要大量的和服務器交互操作,為了減少這個交互過程,kickstart就誕生了。使用這種kickstart,只需事先定義好一個Kickstart自動應答配置文件ks.cfg(通常存放在安裝服務器上),並讓安裝程序知道該配置文件的位置,在安裝過程中安裝程序就可以自己從該文件中讀取安裝配置,這樣就避免了在安裝過程中多次的人機交互,從而實現無人值守的自動化安裝。生成kickstart配置文件的三種方法:方法1、每安裝好一台Centos機器,Centos安裝程序都會創建一個kickstart配置文件,記錄你的真實安裝配置。如果你希望實現和某系統類似的安裝,可以基於該系統的kickstart配置文件來生成你自己的kickstart配置文件。(生成的文件名字叫anaconda-ks.cfg位於/root/anaconda-ks.cfg)方法2、Centos提供了一個圖形化的kickstart配置工具。在任何一個安裝好的Linux系統上運行該工具,就可以很容易地創建你自己的kickstart配置文件。kickstart配置工具命令為redhat-config-kickstart(RHEL3)或system-config-kickstart(RHEL4,RHEL5).網上有很多用CentOS桌面版生成ks文件的文章,如果有現成的系統就沒什麼可說。但沒有現成的,也沒有必要去用桌面版,命令行也很簡單。方法3、閱讀kickstart配置文件的手冊。用任何一個文本編輯器都可以創建你自己的kickstart配置文件。

3.5.1 編寫ks.cfg文件

[root@m01 ~]# grub-crypt#生成一個密碼Password:Retype password:$6$PqVOBDIH4wHJ.JyH$6/xoqOGnm3DnEJyyXgWxCdmscsWrGKbTmMYYE/lgVgzIep999j8z9s7Ci5V5TG16TALy/Grtk6Vh/jj2WLnEn1[root@m01 ~]# cat /var/www/html/ks_config/CentOS-6.7-ks.cfg# Kickstart Configurator for CentOS 6.7 by kyinstall#告知安裝程序,這是一次全新安裝,而不是升級upgradeurl --url="http://10.0.0.61/CentOS-6.7/"#指定系統安裝的包組等的路徑text#文本模式安裝lang en_US.UTF-8#安裝使用的語言keyboard us#設置系統鍵盤類型zerombr#清楚mbr引導信息bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"# --location=,指定引導記錄被寫入的位置.有效的值如下:mbr(缺省),partition(在包含內核的分區的第一個扇區安裝引導裝載程序)或none(不安裝引導裝載程序;--driveorder,指定在BIOS引導順序中居首的驅動器;--append=,指定內核參數.要指定多個參數,使用空格分隔它們network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS6#指定ip地址為dhcp分發,網卡eth0啟動,是否在引導時啟用該設備,禁用此設備的IPv6安裝的系統的主機名timezone --utc Asia/Shanghai#設置系統時區authconfig --enableshadow --passalgo=sha512#系統認證信息,設置密碼加密方式為sha512 啟用shadow文件rootpw --iscrypted $6$X20eRtuZhkHznTb4$dK0BJByOSAWSDD8jccLVFz0CscijS9ldMWwpoCw/ZEjYw2BTQYGWlgKsn945fFTjRC658UXjuocwJbAjVI5D6/#root密碼clearpart --all –initlabel#清空分區part /boot --fstype=ext4 --asprimary --size=200part swap --size=800part / --fstype=ext4 --grow --asprimary --size=200#--fstype=,為分區設置文件系統類型.有效的類型,--asprimary,強迫把分區分配為主分區,否則提示分區失敗,--size=,以MB為單位的分區最小值.在此處指定一個整數值,如500.不要在數字後面加MBfirstboot –disable#負責協助配置redhat一些重要的信息selinux --disabledfirewall –disabled#關閉selinux、防火牆logging --level=info#設置日志級別reboot#設定安裝完成後重啟,此選項必須存在,不然kickstart顯示一條消息,並等待用戶按任意鍵後才重新引導,也可以選擇halt關機%packages@base@compat-libraries@debugging@development#要安裝的包組treenmapsysstatlrzsztelnet#要安裝的軟件%end

第4章 無人值守安裝系統

新建一個虛擬機開啟,即可開始無人值守安裝linux系統,以下是安裝過程中的一些截圖




說明:文章參考老男孩教育張耀導師寫的博客,做完測試後,根據自己的理解改寫,謝謝張耀導師的博文!其中有不對的地方歡迎大家指教。


Copyright © Linux教程網 All Rights Reserved