一、原理和概念:
1、PXE:
PXE 並不是一種安裝方式,而是一種引導的方式。進行 PXE 安裝的必要條件是要安裝的計算機中包含一個 PXE 支持的網卡(NIC),即網卡中必須要有 PXE Client。
PXE (Pre-boot Execution Environment)協議使計算機可以通過網絡啟動。協議分為 client 和 server 端,PXE client 在網卡的 ROM 中,當計算機引導時,BIOS 把 PXE client 調入內存執行,由 PXE client 將放置在遠端的文件通過網絡下載到本地運行。
運行 PXE 協議需要設置 DHCP 服務器 和 TFTP 服務器。DHCP 服務器用來給 PXE client(將要安裝系統的主機)分配一個 IP 地址,由於是給 PXE client 分配 IP 地址,所以在配置 DHCP 服務器時需要增加相應的 PXE 設置。此外,在 PXE client 的 ROM 中,已經存在了 TFTP Client。PXE Client 通過 TFTP 協議到 TFTP Server 上下載所需的文件。
2、KickStart:
KickStart是一種無人職守安裝方式。KickStart的工作原理是通過記錄典型的安裝過程中所需人工干預填寫的各種參數,並生成一個名為 ks.cfg的文件;在其后的安裝過程中(不只局限於生成KickStart安裝文件的機器)當出現要求填寫參數的情況時,安裝程序會首先去查找 KickStart生成的文件,當找到合適的參數時,就采用找到的參數,當沒有找到合適的參數時,才需要安裝者手工干預。
這樣,如果KickStart文件涵蓋了安裝過程中出現的所有需要填寫的參數時,安裝者完全可以只告訴安裝程序從何處取ks.cfg文件,然后去忙自己的事情。等安裝完畢,安裝程序會根據ks.cfg中設置的重啟選項來重啟系統,並結束安裝。
3、TFTP:
TFTP (Trivial File Transfer Protocol),中譯簡單文件傳輸協議或小型文件傳輸協議. 大家一定記得在2003年8月12日全球爆發沖擊波(Worm.Blaster)病毒,這種病毒會監聽端口69,模擬出一個TFTP服務器,並啟動一個攻 擊傳播線程,不斷地隨機生成攻擊地址,進行入侵。另外tftp被認為是一種不安全的協議而將其關閉,同時也是防火牆打擊的對象,這也是有道理的。tftp 在嵌入式linux還是有用武之地的。需要打開防火牆,允許tftp訪問網絡。
二、環境准備:
1、准備2台機器:
給server 設置一個和DHCP 定義相同網段的IP(如下),然后 client 端的網卡與server的PXE網卡在一個網段
[root@192 ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:a1:94:0e brd ff:ff:ff:ff:ff:ff inet 192.168.210.134/24 brd 192.168.210.255 scope global dynamic ens33 valid_lft 2583725sec preferred_lft 2583725sec inet6 fe80::d116:fe9b:ab71:9dc0/64 scope link valid_lft forever preferred_lft forever 3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:a1:94:18 brd ff:ff:ff:ff:ff:ff inet 10.20.0.10/24 brd 10.20.0.255 scope global ens37 valid_lft forever preferred_lft forever inet6 fe80::bad0:8718:b91:3c7c/64 scope link valid_lft forever preferred_lft forever
服務端: IP:192.168.210.134 網卡模式: ens33:192.168.210.134/24 ens37(PXE網卡): 10.20.0.10/24
客戶端: IP:10.20.0.11(隨機獲取 ) 網卡模式: 與服務端的網卡 ens37 能聯通
2、執行 PXE + KickStart安裝所需服務:
• DHCP 服務器用來給客戶機分配IP;
• TFTP 服務器用來存放PXE的相關文件,比如:系統引導文件;
• FTP 服務器用來存放系統安裝文件;
• KickStart 所生成的ks.cfg配置文件;
• 帶有一個 PXE 支持網卡的將安裝的主機;
三、實施過程:
1、搭建本地yum光盤源:(如果配置了網絡yum,這一步可以忽略)
1.1、/etc/yum.repos.d目錄下創建一個以.repo結尾的文件:
1 [root@192 ~]# mount /dev/sr0 /mnt/
1.2、在/etc/yum.repos.d目錄下,建立一個old目錄,將原有網絡源移到old目錄下:
[root@192 ~]# cd /etc/yum.repos.d/
[root@192 yum.repos.d]# ls
old
1.3、創建一個以.repo結尾的文件:
[root@192 ~]# vim /etc/yum.repos.d/cdrom.repo [cdrom] name=123 baseurl=file:///mnt enabled=1 gpgcheck=0
1.4、為server端安裝圖形化軟件包(不然在后期使用kickstart配置程序的時候顯示為亂碼):
yum groupinstall "帶 GUI 的服務器" -y
2、安裝FTP及TFTP服務:
2.1、安裝 FTP 服務以及開啟服務,設置為開機自動啟動:
[root@192 ~]# yum install vsftpd -y [root@192 ~]# systemctl start vsftpd [root@192 ~]# systemctl enable vsftpd
2.2、安裝 TFTP 服務:
[root@192 ~]# yum install tftp tftp-server xinetd -y
配置tftp服務器修改tftp配置文件,修改配置文件里面的13,14行,改成以下內容::
[root@192 ~]# vim /etc/xinetd.d/tftp 13 server_args = -s /tftpboot 14 disable = no
server_args = -s /tftpboot # 表示服務器默認的目錄是 /tftpboot
其中,server_args = -s /tftpboot是tftp服務器運行時的參數。-s /tftpboot表示服務器默認的目錄是 /tftpboot,當你執行put a.txt時,文件會被放到服務器的/tftpboot/a.txt,省去你敲put a /tftpboot/的麻煩。你也可以加其它服務器運行參數到這,具體可以執行man tftpd命令查閱。
-c :上傳文件時,服務器上沒有。就自動創建這個文件。
默認tftp客戶端,只能上傳tftp服務器已經有的文件。也就是只能傳上去並覆蓋服務器上的原文件。如果想上傳原來目錄中沒有的文件,需要修改tftp服務器的配置文件並重起服務。需要修改如下:
打開/etc/xinetd.d/tftp文件,在 server_args 增加-c參數,如下所示:
server_args = -s /tftpboot -c
接着啟動xinetd服務,然后查看服務端口是否打開。
[root@192 ~]# systemctl start xinetd
[root@192 ~]# systemctl enable xinetd
[root@192 ~]# lsof -i :69 #查看69端口正在被哪個進程使用 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME xinetd 3582 root 5u IPv4 21718 0t0 UDP *:tftp
[root@192 ~]# netstat -antup | grep 69 #這種方法,只能看到xinetd進程 udp 0 0 0.0.0.0:69 0.0.0.0:* 3582/xinetd
3、安裝dhcp,修改配置文件:
3.1、安裝dhcp服務:
[root@192 ~]# yum install dhcp -y
3.2、配置dchp服務
[root@192 ~]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf #生成配置文件 [root@192 ~]# cp: overwrite `/etc/dhcp/dhcpd.conf'? y
給DHCP服務器添加一張網卡,ip設置為10.20.0.10(只要是1個網段都行)
[root@192 ~]# ifconfig ens37 10.20.0.10/24
編輯dhcp.conf文件
[root@192 ~]#vi /etc/dhcp/dhcpd.conf #將配置文件,改成如下內容: subnet 10.20.0.0 netmask 255.255.255.0 { range 10.20.0.100 10.20.0.200; option domain-name-servers 10.20.0.1; option domain-name "internal.example.org"; option routers 10.20.0.1; option broadcast-address 10.20.0.255; default-lease-time 600; max-lease-time 7200; next-server 10.20.0.10; filename "pxelinux.0"; }
配置完,先不啟動DHCP ,等所有的軟件安裝好,最后來啟動。
4、配置使用PXE啟動所需的相關文件:
4.1、安裝軟件:
[root@192 ~]# yum -y install system-config-kickstart syslinux gdm
4.2、准備tftp需要共享出去的文件:
[root@192 ~]# umount /mnt/
[root@192 ~]# mount /dev/sr0 /var/ftp/pub/ [root@192 ~]# mkdir /tftpboot [root@192 ~]# mkdir /tftpboot/pxelinux.cfg [root@192 ~]# cp /usr/share/syslinux/pxelinux.0 /tftpboot/ #注,只有安裝了system-config-kickstart軟件包,才會有/usr/share/syslinux/目錄及目錄中的文件。 [root@192 ~]# cp /var/ftp/pub/images/pxeboot/initrd.img /tftpboot/ [root@192 ~]# cp /var/ftp/pub/images/pxeboot/vmlinuz /tftpboot/ [root@192 ~]# cp /var/ftp/pub/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default [root@192 ~]# chmod 644 /tftpboot/pxelinux.cfg/default
4.3、修改default,指定安裝操作系統的方式和ks.cfg文件路徑:
[root@192 ~]# vim /tftpboot/pxelinux.cfg/default 改:default 改為:default linux
#修改第1行,后面的linux意思是尋找下面61行的label linux 。如下:
然后修改下64行(即在后面添加inst.repo=ftp://10.20.0.10/pub inst.ks=ftp://10.20.0.10/ks.cfg)。第64行的意思是使安裝程序通過FTP服務器訪問kickstart文件。
以上有關default配置文件的修改就是通過ftp服務器方式來訪問kickstart文件。
其中第1行:default linux表示指定默認入口名稱;
第2行:prompt 1中prompt用來設置是否等待用戶選擇,1表示等待用戶控制;
第18、23、27、31行label linux表示定義的引導入口,表示系統的不同安裝方式,如第18行定義的入口表示圖形安裝。
配置文件修改完了,要開始自動安裝,安裝程序必須能訪問kickstart文件。
有多種方法可訪問kickstart文件,其中最常用的一種方法是通過網絡服務器進行,
例如:ftp服務器、WEB服務器或NFS服務器,這種方法非常易於部署,並且也使管理更改變得十分簡單。也可以通過USB磁盤、CD-ROM或本地硬盤。如果USB或CD-ROM中的kickstart文件非常便於訪問,只需將kickstart文件放置在用來開始安裝的引導介質中。而使用DHCP服務器和TFTP及PXE配置起來更為復雜。
使安裝程序指向kickstart文件的書寫格式如下:
ks=ftp://server/dir/file 如:ks=ftp://ftp服務器IP/ks.cfg
ks=http://server/dir/file 如:ks=http://http服務器IP/ks.cfg
ks=nfs:server:/dir/file 如:ks=nfs:nfs服務器IP:/var/ftp/pub/ks.cfg
ks=hd:device:/dir/file 如:ks=hd:sdb1:/kickstar-files/ks.cfg
ks=cdrom:/dir/file 如:ks=cdrom:/kickstart-files/ks.cfg
以上有關default配置文件的修改就是通過ftp服務器方式來訪問kickstart文件。
5、制作kickstart的無人值守安裝文件:
5.1、在創建配置文件之前,我們需要更改下yum源為本地源,否則下面在選擇軟件包安裝這一步不能選擇,提示被禁止
[root@192 yum.repos.d]# vim cdrom.repo [development] name=123 baseurl=file:///var/ftp/pub enabled=1 gpgcheck=0
[root@192 yum.repos.d]# yum clean all
[root@192 yum.repos.d]# yum makecache
5.2、安裝system-config-kickstart軟件包后,啟動kickstart配置界面:
[root@192 ~]# system-config-kickstart #執行system-config-kickstart彈出來界面。
設置后期無人執守安裝需要配置的參數:
注意:用xshell遠程連接,執行上面的命令可能無法彈出選擇框,需要這樣解決:
1. 在Xstart 里執行:
5.3、我們設置下默認安裝的語言,時區,根口令,然后勾選下面的安裝后重新引導。然后選擇安裝方法
5.4、我們配置ftp服務器的安裝方法。選擇執行新安裝。然后點擊引導裝載程序選項
5.5、配置grub相關選項
5.6、設置分區大小,注意有多塊硬盤的時候要選擇sda
5.7、配置網絡,默認沒有網絡設置(可以不設置),點擊添加網絡,設備名稱為eth0,網絡類型為dhcp
5.8、驗證,默認就可以了
5.9、防火牆和selinux根據自己需求選擇開啟或者禁用。我選擇關閉selinux。啟用防火牆
5.10、安裝圖形環境
5.11、自定義軟件包。默認可能沒有勾選桌面。根據自己需求勾選。 我們為了快速度演示安裝,不選擇安裝桌面。
5.12、安裝腳本:在"預安裝腳本","安裝后腳本"對話框中,可以分別添加在安裝前、安裝后自動動行的可執行語句。此項設置可以使服務器自動化配置變得更加容易。
例如:配置客戶機在完成安裝后自動設置YUM倉庫。
寫入以下腳本內容:
rm -rf /etc/yum.repos.d/* echo '[rhel-source] name=Red Hat Enterprise Linux $releasever - $basearch - Source baseurl=file:///mnt/ enabled=1 gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release' > /etc/yum.repos.d/rhel6.repo
5.13、到此所有關於安裝的配置已經配置完畢,保存:
點擊左上角的文件選擇保存,選擇下保存的路徑
5.14、復制ks.cfg文件到/var/ftp目錄下
[root@192 ~]#cp /root/ks.cfg /var/ftp 注:ks.cfg就是無人值守安裝時要用的Kickstart文件。 要對應:/tftpboot/pxelinux.cfg/default文件中設置過ks=ftp://10.20.0.10/ks.cfg
5.15、重啟下FTP服務
[root@192 ~]# systemctl restart vsftpd
建議關閉防火牆和selinux,
如果沒有關閉的話,tftp服務會有問題。
[root@xuegod63 ~]# getenforce
Disabled
設置防火牆:
#iptables -F
#service iptables save
5.16、啟動 dhcp 服務,設置為開機啟動
[root@192 ~]# systemctl start dhcpd [root@192 ~]# systemctl enable dhcpd Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service. [root@192 ~]#
5.17、修改client的BIOS啟動順序為網絡優先,加電后開始啟動,然后就開始自動裝機啦!!!