Kickstart實現自動安裝centos6和7

一直想嘗試下pxe自動安裝centos6和centos7,最近幾天作了下實驗,雖然實踐的過程當中碰到許多問題,但收穫仍是有的,把碰到的問題和收穫分享下。html

pxe自動安裝須要三個服務,分別爲dhcp、tftp、nginx,這三個服務我都使用centos6.6安裝了。其中nginx也可使用apache等其它web服務器,也可使用nfs服務器,因爲本人對nginx比較熟悉,就用nginx了。centos6和7的下載地址爲:http://archive.kernel.org/centos-vault/。linux

仍是先看效果圖,最終使用pxe自動安裝cento6和centos7的截圖以下:nginx

服務器上的三個服務:web

centos6自動安裝的截圖:apache

centos7自動安裝的截圖:centos

下面說下安裝的過程:安全

1: nginx的安裝就不說了,配置貼下,我是root到/var/www/html目錄。bash

location / {
            root   /var/www/html/;
            index  index.html index.htm;
        }

/var/www/html須要放置的kickstart的配置和centos的安裝鏡像包,如圖,後面講配置的話會有說明:服務器

2: 安裝dhcp服務器,直接使用yum install dhcp -y安裝便可。dhcp的配置以下,dhcp上有個pxelinux.0須要等安裝tftp的時候再說,另外的就是一些dhcp的配置:網絡

ddns-update-style interim;
ignore client-updates;
allow booting;
allow bootp;

class "pxeclients"{
match if substring(option vendor-class-identifier,0,9) = "PXEClient";
filename "pxelinux.0"; //tftp上須要有pxelinux.0的文件
next-server 172.16.0.3;  //這個爲提供自動安裝服務的ip
}

subnet 172.16.0.0 netmask 255.255.255.0 {  //一個子網
option routers 172.16.0.1;
option subnet-mask 255.255.255.0;
option time-offset -18000;
range dynamic-bootp 172.16.0.10 172.16.0.11; //可分配的ip
default-lease-time 216000;
max-lease-time 432000;
}

 

3: 安裝tftp服務器,tftp服務器由xinetd管理,直接使用yum install tftp-server -y安裝便可。安裝完後修改/etc/xinetd.d/tftp配置以下:

service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /usr/local/tftp/tftpboot  //tftp的根目錄,須要放pxelinux.0等
        disable                 = no     //改成no,則啓動xinetd的時候就會啓動tftp服務器
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

接下來得安裝yum instll syslinux-tftpboot -y,這個用來引導加載的,pxe自動安裝須要用syslinux來引導。安裝完後使用:

cp /usr/share/syslinux/pxelinux.0 /usr/share/syslinux/vesamenu.c32 /usr/local/tftp/tftpboot/把pxelinux.0和vesamenu.c32拷貝到tftp的根目錄下。dhcp獲取到ip地址也會獲取到pxelinux.0這個引導的文件名,用它來作引導以作下一步的安裝。

4: 使用yum install system-config-kickstart -y安裝一下kickstart,kickstart不用開啓服務,不知道爲何不須要開啓服務,但安裝下才能支持kickstart自動安裝。到這裏服務基本已經安裝好了,如下講下配置,須要配置把這些服務串在一塊兒。

5: pxe的啓動配置爲:/usr/local/tftp/tftpboot/pxelinux.cfg/default(pxelinux.cfg須要本身建立),這個配置比較簡單,最重要的是指明kickstart經過http去獲取下來,這邊使用到nginx服務器,配置以下:

default vesamenu.c32
prompt 1
timeout 100 //表明10s後啓動安裝

menu background splash.jpg
menu title Welcome to Install System 
label Auto_CentOS
menu label Auto Install CentOS6
kernel centos/vmlinuz
append initrd=centos/initrd.img ks=http://172.16.0.3/ks.cfg #指明ks.cfg去哪裏獲取

label Auto_CentOS7
menu label Auto Install CentOS7
kernel centos7/vmlinuz
append initrd=centos7/initrd.img inst.ks=http://172.16.0.3/ks7.cfg devfs=nomount inst.repo=http://172.16.0.3/centosimage7/ nomodeset inst.stage2=http://172.16.0.3/centosimage7/
#centos7的自動安裝和centos6的安裝有點區別,須要inst.ks和inst.repo。

label rescue
menu label Resuce
menu default
kernel centos/vmlinuz
append initrd=centos/initrd.img

爲何要加prompt 1和menu default是爲安全,prompt 1會把安裝停留在boot,按回車會到另外救援模式,預防別的機器從網絡啓動把磁盤給格式化了。

還有一個配置須要注意,就是kernel centos/vmliuz這個文件去哪裏讀取呢?這個就須要把即將要使用的centos6和centos7的鏡像mount到/var/www/html下,我這裏使用的是最小化的版本,掛載命令以下:

mount -o loop /usr/local/src/CentOS-6.6-x86_64-minimal.iso /var/www/html/centosimage
mount -o loop /usr/local/src/CentOS-7-x86_64-Minimal-1511.iso /var/www/html/centosimage7

掛載後把vmlinuz和initrd.img拷貝到tftp的目錄下,命令以下(centos和centos7的目錄須要自建):

cp /var/www/html/centosimage/isolinux/vmlinuz /var/www/html/centosimage/isolinux/initrd.img /usr/local/tftp/tftpboot/centos/
cp /var/www/html/centosimage7/isolinux/vmlinuz /var/www/html/centosimage7/isolinux/initrd.img /usr/local/tftp/tftpboot/centos7/

6: kickstart的配置,這個配置也是kickstart自動安裝的配置核心了,因爲pxe是去讀取http://172.16.0.3/ks.cfg和http://172.16.0.3/ks7.cfg,所以這兩個文件得在/var/www/html下。

其中/var/www/html/ks.cfg的配置以下,日常手動安裝須要設置密碼,鍵盤模式,語言,時區,磁盤分區都在配置中可看到:

firewall --disabled
install
rootpw 123456 #密碼這裏就簡單設置了,通常須要md5後的密碼配置在這裏。
auth  --useshadow  --passalgo=sha512
url --url http://172.16.0.3/centosimage #這裏使用http去獲取一些安裝包,前面咱們已經掛載到/var/www/html下,可直接獲取
#graphical
text 
firstboot --disable
keyboard us
lang zh_CN
selinux --disabled
logging --level=info
reboot
timezone  Africa/Abidjan
network  --bootproto=dhcp --device=eth0 --onboot=on
bootloader --location=mbr
zerombr
clearpart --all --initlabel #格式化磁盤
part / --asprimary --fstype="ext4" --size=2000 #/分配2G,默認使用M爲單位。
part /boot --fstype="ext4" --size=200
part swap --fstype="swap" --size=512
part /data --fstype="ext4" --grow --size=1 #--grow表明剩下的空間所有給/data,這裏的--size=1好像沒什麼用

 

另外centos7的配置文件也差很少,/var/www/html/ks7.cfg的配置以下:

firewall --disabled
install
rootpw 123456
auth  --useshadow  --passalgo=sha512
#graphical
text
firstboot --disable
keyboard us
lang zh_CN
selinux --disabled
logging --level=debug
zerombr
reboot
timezone  Africa/Abidjan
network  --bootproto=dhcp --device=enp0s8 --onboot=on --noipv6
bootloader --location=mbr
clearpart --all --initlabel
part / --asprimary --fstype="ext4" --size=5000
part /boot --fstype="ext4" --size=200
part swap --fstype="swap" --size=512
part /data --fstype="ext4" --grow --size=1
url --url http://172.16.0.3/centosimage7

%packages
%end #這個得有,否則在安裝centos7的時候會被中斷。我使用的mini的包,就不用指定,只有base的。

 

軟件安裝和配置完就啓動服務,啓動三個服務的命令以下:

/etc/init.d/dhcpd restart

/etc/init.d/xinetd restart

/usr/local/nginx/sbin/nginx 

 

服務啓動完成後,使用virtual box新建個虛擬機,而後添加一個磁盤,使用網絡啓動便可自動安裝。

安裝完後使用磁盤啓動就能夠看到系統了,內存得稍微放大點,否則安裝會不成功,1G內存對於cento6和centos7的安裝夠的。下面講下實驗過程當中遇到的問題。

 

問題1,安裝centos6的時候總是提示硬件不支持,要敲個回車才能繼續安裝。

後來找到緣由了,是由於一開始使用的是centos6.3,多是centos6.3的內核有點老,致使有些硬件不支持,後來換成使用centos6.6的iso就行了。注意:是這兩個文件/usr/local/tftp/tftpboot/centos/vmlinuz和/usr/local/tftp/tftpboot/centos/initrd.img,這兩個文件必定要用centos6.6裏面的。centos6.6裏面的vmlinuz和initrd.img也可用來安裝centos6.3的,我試過沒問題,也就是/var/www/html/centosimage/裏面的能夠是centos6.3版本的。

 

問題2,安裝centos7的時候報了個磁盤不夠用的狀況,一開始ks7.cfg根盤的配置是part / --asprimary --fstype="ext4" --size=1000。如圖:

報錯是比較明顯的,因爲centos7安裝比較大,須要1861M的空間的,一開始我設置的1000M,還一直定位不出問題,改了不少配置,後續纔想起根分區設置的1G不夠用。

 

Kickstart自動安裝Centos七、Centos6教程地址:https://edu.51cto.com/sd/50426

相關文章
相關標籤/搜索