Linux網路服務-----實驗---PXE和Kickstart的無人值守裝機

Mr.aaa發表於2020-02-10

目錄

一.PXE的原理

二.kickstart的原理

三.PXE與kickstart的結合使用自動裝機


一.PXE的原理

  • PXE(preboot execute environment,預啟動執行環境)是由Intel公司開發的最新技術,工作於Client/Server的網路模式,支援工作站通過網路從遠端伺服器下載映像,並由支援通過網路啟動作業系統,再啟動過程中,終端要求伺服器分配IP地址(DHCP協議),再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)協議下載一個啟動軟體包到本機記憶體中執行,由這個啟動軟體包完成終端基本軟體設定,從而引導預先安裝在伺服器中的終端作業系統。PXE可以引導多種作業系統,如:Windows95/98/2000/windows2003/windows2008/winXP/win7/win8/linux等。
  • PXE的工作流程:

 

 

二.kickstart的原理

  • Kickstart是一種無人值守的安裝方式。它的工作原理是在安裝過程中記錄人工干預填寫的各種引數,並生成一個名為ks.cfg的檔案。如果在自動安裝過程中出現要填寫引數的情況,安裝程式首先會去查詢ks.cfg檔案,如果找到合適的引數,就採用所找到的引數;如果沒有找到合適的引數,便會彈出對話方塊讓安裝者手工填寫。所以,如果ks.cfg檔案涵蓋了安裝過程中所有需要填寫的引數,那麼安裝者完全可以只告訴安裝程式從何處下載ks.cfg檔案,然後就去忙自己的事情。等安裝完畢,安裝程式會根據ks.cfg中的設定重啟/關閉系統,並結束安裝。

 

 

三.PXE與kickstart的結合使用自動裝機

  • 在有網路的情況下,安裝DHCP軟體包,TFTP軟體包,syslinux軟體包,ftp軟體包,kickstart軟體包
[root@localhost ~]# yum install dhcp* tftp-server syslinux vsftpd system-config-kickstart -y
  • 檢視軟體包的安裝情況
[root@localhost ~]# rpm -q dhcp
dhcp-4.2.5-77.el7.centos.x86_64
[root@localhost ~]# rpm -q tftp-server
tftp-server-5.2-22.el7.x86_64
[root@localhost ~]# rpm -q syslinux
syslinux-4.05-15.el7.x86_64
[root@localhost ~]# rpm -q vsftpd
vsftpd-3.0.2-25.el7.x86_64
[root@localhost ~]# rpm -q system-config-kickstart
system-config-kickstart-2.9.7-1.el7.noarch
[root@localhost ~]# 
  • 修改網路卡為僅主機模式,設定靜態IP地址
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO=static
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="7042365e-0b74-48e8-81ff-0c2eeb61def2"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.100.100
NETMASK=255.255.255.0
GATEWAY=192.168.100.1

[root@localhost ~]# systemctl restart network
[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.100.100  netmask 255.255.255.0  broadcast 192.168.100.255
        inet6 fe80::b47a:19c8:ef97:42b7  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:31:94:e1  txqueuelen 1000  (Ethernet)
        RX packets 114637  bytes 169681992 (161.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 39564  bytes 2402137 (2.2 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

......

  • 配置DHCP服務

[root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆蓋"/etc/dhcp/dhcpd.conf"? y
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf

subnet 192.168.100.0 netmask 255.255.255.0 {
        range 192.168.100.10 192.168.100.15;
        option routers 192.168.100.100;
        option domain-name-servers 5.5.5.5;
        next-server 192.168.100.100;
        filename "pxelinux.0";
}
[root@localhost ~]# systemctl start dhcpd     //開啟服務,驗證引數是否正確
  • 配置TFTP服務
1.修改TFTP的主配置檔案
[root@localhost ~]# 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
2.將syslinux服務中pxelinux.0複製到tftp的站點/var/lib/tftpboot
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
[root@localhost ~]# ls /var/lib/tftpboot
pxelinux.0
[root@localhost ~]# 
  • 配置FTP服務
1.在FTP服務站點/var/ftp下,建立一個名為centos7的目錄,且將本機映象掛載到centos7中
[root@localhost ftp]# ls
centos7  pub
[root@localhost ftp]# mount /dev/sr0 centos7/
mount: /dev/sr0 防寫,將以只讀方式掛載
[root@localhost ftp]# df -hT
檔案系統       型別      容量  已用  可用 已用% 掛載點
/dev/sda2      xfs        10G  3.6G  6.5G   36% /
devtmpfs       devtmpfs  474M     0  474M    0% /dev
tmpfs          tmpfs     489M     0  489M    0% /dev/shm
tmpfs          tmpfs     489M  7.2M  481M    2% /run
tmpfs          tmpfs     489M     0  489M    0% /sys/fs/cgroup
/dev/sda1      xfs       4.0G  158M  3.9G    4% /boot
/dev/sda5      xfs       4.0G   37M  4.0G    1% /home
tmpfs          tmpfs      98M  4.0K   98M    1% /run/user/42
tmpfs          tmpfs      98M   20K   98M    1% /run/user/0
/dev/sr0       iso9660   4.3G  4.3G     0  100% /var/ftp/centos7
[root@localhost ftp]# 

2.將centos7中的映象檔案vmlinuz和initrd.img,放到tftp的站點/var/lib/tftpboot
[root@localhost ftp]# cp centos7/images/pxeboot/vmlinuz /var/lib/tftpboot/
[root@localhost ftp]# cp centos7/images/pxeboot/initrd.img /var/lib/tftpboot/
[root@localhost ftp]# ls /var/lib/tftpboot
initrd.img  pxelinux.0  vmlinuz
[root@localhost ftp]# 

3.在tftp服務的站點下,建立一個pxelinux.cfg的目錄,且編輯一個default的資料檔案
[root@localhost ftp]# cd /var/lib/tftpboot
[root@localhost tftpboot]# ls
initrd.img  pxelinux.0  vmlinuz
[root@localhost tftpboot]# mkdir pxelinux.cfg
[root@localhost tftpboot]# ls
initrd.img  pxelinux.0  pxelinux.cfg  vmlinuz
[root@localhost tftpboot]# cd pxelinux.cfg/
[root@localhost pxelinux.cfg]# vim default


default auto
prompt 1
label auto
        kernel vmlinuz
        append initrd=initrd.img method=ftp://192.168.100.100/centos7
label linux text
        kernel vmlinuz
        append text initrd=initrd.img method=ftp://192.168.100.100/centos7
label linux rescue
        kernel vmlinuz
        append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7
4.啟動服務驗證引數是否錯誤
[root@localhost pxelinux.cfg]# systemctl restart dhcpd
[root@localhost pxelinux.cfg]# systemctl start tftp
[root@localhost pxelinux.cfg]# systemctl start vsftpd
[root@localhost pxelinux.cfg]# 

  • 配置kickstart圖形介面的裝機引數

 

1.檢視檔案是否儲存
[root@localhost pxelinux.cfg]# ls /var/ftp
centos7  ks.cfg  pub
[root@localhost pxelinux.cfg]# 
2.在/var/ftp/ks.cfg中新增軟體包引數
[root@localhost ~]# vim anaconda-ks.cfg 
[root@localhost ~]# vim /var/ftp/ks.cfg 
%packages
@^gnome-desktop-environment
@base
@core
@desktop-debugging
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@networkmanager-submodules
@print-client
@x11
chrony
kexec-tools

%end
3.在tftp服務的站點/var/lib/tftpboot/pxelinux.cfg/default上新增引數
[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default 
default auto
prompt 1
label auto
        kernel vmlinuz
        append initrd=initrd.img method=ftp://192.168.100.100/centos7 ks=ftp://192.168.100.100/ks.cfg
label linux text
        kernel vmlinuz
        append text initrd=initrd.img method=ftp://192.168.100.100/centos7
label linux rescue
        kernel vmlinuz
        append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7
~                                                                               
  • 開啟所有服務,關閉防火牆和增強性功能
[root@localhost ~]# systemctl restart dhcpd
[root@localhost ~]# systemctl restart tftp
[root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# 

  • 建立硬體裝置

  • 開啟虛擬機器,自動裝機,選擇網路模式

  • 這裡要回車,之後就不用再管理了

注:測試機的硬體要符合,再kickstart的圖形介面的設定的引數,記憶體和硬碟最好都大一些,以免發生錯誤。另外,有個人實驗環境的不同,測試機可能會卡死,筆者換了三臺測試機才成功。

 

 

相關文章