搭建無人執守安裝服務pxe

•搭建無人執守安裝服務器服務器常見概念

原理流程圖
備註:安裝的時候,上面所有的服務安裝在一臺服務器既可。

原理和概念:
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中設置的重啓選項來重啓系統,並結束安裝。

設置BIOS引導順序爲: 硬盤,網絡

模式: C/S 模式

安裝pxe系統的服務器,可選擇圖形化界面進行安裝
操作系統選擇字符安裝的需要安裝一個xstart在自己的電腦上,主要用於生成ks文件

本次選擇CentOs 7 圖形化安裝,爲了方便後續的操作

安裝服務

1.安裝ftp,以及開啓服務,設置爲開機自啓動。

[root@localhost ~]# yum -y install vsftpd
[root@localhost ~]# systemctl start vsftpd
[root@localhost ~]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.

2.安裝TFTP,修改TFTP配置文件及啓動服務
[root@localhost ~]# yum -y install tftp tftp-server xinetd

修改配置

[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 /tftpboot
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

修改配置文件裏面的13,14行。改成以下內容:
在這裏插入圖片描述
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

TFTP (Trivial File Transfer Protocol),中譯簡單文件傳輸協議或小型文件傳輸協議. 大家一定記得在2003年8月12日全球爆發衝擊波(Worm.Blaster)病毒,這種病毒會監聽端口69,模擬出一個TFTP服務器,並啓動一個攻 擊傳播線程,不斷地隨機生成攻擊地址,進行入侵。另外tftp被認爲是一種不安全的協議而將其關閉,同時也是防火牆打擊的對象,這也是有道理的。tftp 在嵌入式linux還是有用武之地的。需要打開防火牆,允許tftp訪問網絡。
接着重新啓動xinetd服務,然後查看服務端口是否打開。

[root@localhost ~]# systemctl start xinetd
[root@localhost ~]# lsof -i:69      #查看69端口正在被哪個進程使用
COMMAND   PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
xinetd  57738 root    5u  IPv4 1524620      0t0  UDP *:tftp 
[root@localhost ~]# netstat -anltpu |grep 69    #這樣也可以
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      6929/master         
tcp6       0      0 ::1:25                  :::*                    LISTEN      6929/master         
udp        0      0 0.0.0.0:69              0.0.0.0:*                           57738/xinetd     

3.安裝dhcp,修改配置文件及開啓服務:

[root@localhost ~]# yum -y install dhcp

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

給DHCP服務器添加一張VMNET4網卡,ip設置爲10.10.1.10(只要是1網段都行)

[root@localhost ~]# ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.10.100.178  netmask 255.255.255.0  broadcast 10.10.100.255
        inet6 fe80::856b:e1f9:8d48:4fe4  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:e8:11:9d  txqueuelen 1000  (Ethernet)
        RX packets 36770  bytes 13747465 (13.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 7712  bytes 724312 (707.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens34: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:0c:29:e8:11:a7  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@localhost ~]# ifconfig ens34 10.10.1.10/24      #給新網卡配置一個IP
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf   #修改DHCP配置
subnet 10.10.1.0 netmask 255.255.255.0 {                    #網段,子網掩碼
  range 10.10.1.100 10.10.1.200;                        #地址池,分配的網段
  option domain-name-servers 10.10.1.1;           #DNS
  option domain-name "internal.example.org";          #域名
  option routers 10.10.1.1;                                   #網關
  option broadcast-address 10.10.1.255;              #廣播地址
  default-lease-time 600;                    #IP租賃時間
  max-lease-time 7200;                    #IP最大租賃時間,單位是秒
next-server 10.10.1.10;                    #下一條,網關出口
  filename "pxelinux.0";

}

配置完,先不啓動DHCP ,等所有的軟件安裝好,最後來啓動。

配置使用PXE啓動所需的相關文件

安裝軟件

[root@localhost ~]# yum -y install system-config-kickstart  syslinux

準備tftp需要共享出去的文件
[root@localhost ~]# mount /dev/cdrom /media/
mount: /dev/sr0 寫保護,將以只讀方式掛載
[root@localhost ~]# mkdir /tftpboot
[root@localhost ~]# mkdir /tftpboot/pxelinux.cfg
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /tftpboot/    #注,只有安裝了system-config-kickstart軟件包,纔會有/usr/share/syslinux/目錄及目錄中的文件。
[root@localhost ~]# cp /media/images/pxeboot/initrd.img /tftpboot/
[root@localhost ~]# cp /media/images/pxeboot/vmlinuz /tftpboot/
[root@localhost ~]# cp /media/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
[root@localhost ~]# chmod 644 /tftpboot/pxelinux.cfg/default 

修改default,指定安裝操作系統的方式和ks.cfg文件路徑

[root@localhost ~]# vim /tftpboot/pxelinux.cfg/default
default vesamenu.c32   
改成
default linux

label linux
  menu label ^Install CentOS 7
  kernel vmlinuz
  append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet
改成
label linux
  menu label ^Install CentOS 7
  kernel vmlinuz
  append initrd=initrd.img inst.repo=ftp://10.10.1.10/pub inst.ks=ftp://10.10.1.10/ks.cfg

意思是使安裝程序通過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文件。

接下來製作kickstart的無人值守安裝文件。

需要將本地的光盤掛載到服務器上,要用本地的yum源

[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# mount /dev/cdrom /var/ftp/pub/
mount: /dev/sr0 寫保護,將以只讀方式掛載
[root@localhost yum.repos.d]# ls
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo
[root@localhost yum.repos.d]# mkdir bak
[root@localhost yum.repos.d]# mv *.repo bak/
[root@localhost yum.repos.d]# ls
bak
[root@localhost yum.repos.d]# vim centos.repo
[devement]
name=centos7-dvd
baseurl=file:///var/ftp/pub
enabled=1
gpgcheck=0
[root@localhost yum.repos.d]# yum makecache
已加載插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
develment                                                                                            | 3.6 kB  00:00:00     
(1/4): develment/group_gz                                                                            | 166 kB  00:00:00     
(2/4): develment/filelists_db                                                                        | 3.2 MB  00:00:00     
(3/4): develment/primary_db                                                                          | 3.1 MB  00:00:00     
(4/4): develment/other_db                                                                            | 1.3 MB  00:00:00     
元數據緩存已建立
[root@localhost yum.repos.d]# yum install -y gdm

在圖形化界面執行下面的命令
[root@localhost ~]# system-config-kickstart     ##執行system-config-kickstart彈出來界面

在這裏插入圖片描述
在字符界面執行會報錯,或者在電腦上安裝一個xstart來執行這條命令也可以正常彈出該圖形配置界面

[root@localhost yum.repos.d]# system-config-kickstart
Could not open display because no X server is running.
Try running 'system-config-kickstart --help' for a list of options.

無人執守安裝需要配置的參數
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
/boot分區大小給300M----500M就可以
在這裏插入圖片描述
swap分區正常給2G也足夠了,如果2G夠用,那就要考慮增加內存了
在這裏插入圖片描述
根分區,可以把剩下的全部分給根分區
在這裏插入圖片描述
網絡這塊不用動,默認就可以,這裏可以配置靜態IP,可以配置DHCP, 默認就是DHCP,所不用修改,直接下一步
在這裏插入圖片描述
驗證這塊,也不用修改,默認既可
在這裏插入圖片描述
防火牆與selinux先關閉
在這裏插入圖片描述
顯示,把圖形化安裝勾選去掉
在這裏插入圖片描述
選擇軟件包,出現了一個問題

在這裏插入圖片描述
出現這個問題的幾個原因
一,本地光盤沒有掛載,重新掛載一下

[root@localhost ~]# mount /dev/cdrom /var/ftp/pub/
mount: /dev/sr0 寫保護,將以只讀方式掛載

二,防火牆和selinux暫時關閉,

[root@localhost ~]# systemctl disable firewalld    #永久停止
[root@localhost ~]# systemctl stop  firewalld      #停止firewalld服務
[root@localhost ~]# systemctl status firewalld    #查看firewalld狀態
[root@localhost ~]# sestatus           #查看selinux狀態
[root@localhost ~]# setenforce 0    #臨時關閉
[root@localhost ~]# vim /etc/selinux/config    #永久關閉
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 
[root@localhost yum.repos.d]# sestatus 
SELinux status:                 disabled

三,本地yum源配置的有問題,檢查yum源的配置

[root@localhost yum.repos.d]# cat centos.repo 
[development]     -------------->此處修改爲[development]
name=centos7-dvd
baseurl=file:///var/ftp/pub
enabled=1
gpgcheck=0
修改文件後,卸載命令system-config-kickstart並重新安裝
[root@localhost yum.repos.d]# yum remove -y system-config-kickstart
[root@localhost yum.repos.d]# yum clean all
[root@localhost yum.repos.d]# yum makecache
[root@localhost yum.repos.d]# yum install -y system-config-kickstart

安裝完之後,重新執行命令

[root@localhost ~]# system-config-kickstart

之前填寫的需要重新填寫,這裏就直接到軟件包選擇

在這裏插入圖片描述
在這裏插入圖片描述
安裝系統選擇上面的就可以,其他的根據需求選擇
在這裏插入圖片描述
安裝系統前執行的腳本
在這裏插入圖片描述
安裝系統後執行的腳本
在這裏插入圖片描述
在這裏插入圖片描述

查看保存的文件

[root@localhost ~]# ll
總用量 12
-rw-------. 1 root root 1703 10月 18 11:15 anaconda-ks.cfg   #記錄手動安裝系統的參數
-rw-r--r--. 1 root root 1751 10月 18 11:16 initial-setup-ks.cfg
-rw-r--r--  1 root root  699 10月 18 14:20 ks.cfg
drwxr-xr-x. 2 root root    6 10月 18 11:16 公共
drwxr-xr-x. 2 root root    6 10月 18 11:16 模板
drwxr-xr-x. 2 root root    6 10月 18 11:16 視頻
drwxr-xr-x. 2 root root    6 10月 18 11:16 圖片
drwxr-xr-x. 2 root root    6 10月 18 11:16 文檔
drwxr-xr-x. 2 root root    6 10月 18 11:16 下載
drwxr-xr-x. 2 root root    6 10月 18 11:16 音樂
drwxr-xr-x. 2 root root    6 10月 18 11:16 桌面

在這裏插入圖片描述

[root@localhost ~]# cat ks.cfg 
#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$TajW86Qg$7BjfMaQ1A7d3VSmREabFl/
# Use network installation
url --url="ftp://10.10.1.10/pub"
# System language
lang en_US
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use graphical install
graphical
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx

# Firewall configuration
firewall --disabled
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --fstype="xfs" --size=300
part swap --fstype="xfs" --size=2048
part / --fstype="xfs" --grow --size=1

%packages
@additional-devel
@base
@compat-libraries
@development
@platform-devel

%end

這個生成的文件下次可以直接拿來用,root密碼爲toor

[root@localhost pub]# pwd
/var/ftp/pub
[root@localhost pub]# ll
總用量 686
-rw-rw-r-- 1 root root     14 11月 26 2018 CentOS_BuildTag
drwxr-xr-x 3 root root   2048 11月 26 2018 EFI
-rw-rw-r-- 1 root root    227 8月  30 2017 EULA
-rw-rw-r-- 1 root root  18009 12月 10 2015 GPL
drwxr-xr-x 3 root root   2048 11月 26 2018 images
drwxr-xr-x 2 root root   2048 11月 26 2018 isolinux
drwxr-xr-x 2 root root   2048 11月 26 2018 LiveOS
drwxrwxr-x 2 root root 663552 11月 26 2018 Packages
drwxrwxr-x 2 root root   4096 11月 26 2018 repodata
-rw-rw-r-- 1 root root   1690 12月 10 2015 RPM-GPG-KEY-CentOS-7
-rw-rw-r-- 1 root root   1690 12月 10 2015 RPM-GPG-KEY-CentOS-Testing-7
-r--r--r-- 1 root root   2883 11月 26 2018 TRANS.TBL
[root@localhost pub]# cp /root/ks.cfg /var/ftp/

重啓vsftpd服務,啓動DHCP

[root@localhost pub]# systemctl restart vsftpd
[root@localhost pub]# systemctl start dhcpd

接下來安裝系統

創建一臺機器,不選擇光盤,有網絡啓動
注意:需要選擇同網段的網卡
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
這些都會自動安裝,不需要人工干預
在這裏插入圖片描述
安裝包有點多,安裝時間比較長。耐心等待

安裝成功,登錄,查看ip,第一個獲取所以是101
在這裏插入圖片描述
查看存儲大小,是否跟當初配置的一樣
總磁盤大小200G
/boot 300M
swap 2G
剩下的全部分給根分區
在這裏插入圖片描述

到這裏pxe就安裝完成

擴展:Cobbler比Kickstart更爲簡單和智能的自動化安裝系統的工具
Cobbler 可以用來快速建立 Linux 網絡安裝環境,它已將 Linux 網絡安裝的技術門檻,從大專以上文化水平,成功降低到初中以下,連補鞋匠都能學會。
網絡安裝服務器套件 Cobbler(補鞋匠)從前,我們一直在做裝機民工這份很有前途的職業。自打若干年前 Red Hat 推出了 Kickstart,此後我們頓覺身價倍增。不再需要刻了光盤一臺一臺地安裝 Linux,只要搞定 PXE、DHCP、TFTP,還有那滿屏眼花繚亂不知所云的 Kickstart 腳本,我們就可以像哈里波特一樣,輕點魔棒,瞬間安裝上百臺服務器。這一堆花裏胡哨的東西可不是一般人都能整明白的,沒有大專以上學歷,通不過英語四級,根本別想玩轉。總而言之,這是一份多麼有前途,多麼有技術含量的工作啊。很不幸,Red Hat 最新(Cobbler項目最初在2008年左右發佈)發佈了網絡安裝服務器套件 Cobbler(補鞋匠),它已將 Linux 網絡安裝的技術門檻,從大專以上文化水平,成功降低到初中以下,連補鞋匠都能學會。對於我們這些在裝機領域浸淫多年,經驗豐富,老驥伏櫪,志在千里的民工兄弟們來說,不啻爲一個晴天霹靂。

http://www.osyunwei.com/archives/7606.html

http://os.51cto.com/art/201109/288604.htm

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章