Linux下批次部署安裝--PXE
以下操作以CentOS6系列為例,以 VMware 作為虛擬機器管理器進行實驗。
一、安裝系統
1、個人 pc 如何安裝一個Linux作業系統使用呢?
Linux作業系統的安裝過程大致如下:
以本地映象為例,POST加點自檢,載入映象檔案中的核心和臨時根檔案系統,最後會啟動anaconda的安裝程式,此程式是互動式的,幫助使用者來選擇安裝前的一些操作,完成這一步操作之後,進入真正的安裝包軟體,完成系統的安裝。
# 如何載入記憶體和根檔案系統呢?
# 大致過程是:執行光碟中 isolinux 目錄下的 isolinux.bin 二進位制程式,它會載入此目錄下的
# vmlinuz 和 initrd.img 檔案實現核心和臨時根檔案系統的載入。
#
# 載入完核心和臨時根檔案系統後,會執行 isolinux.cfg 指令碼,此指令碼的作用是顯示安裝選單,
# 同時會將 splash.jpg 格式的圖片作為背景顯示,如圖 1-1
#
# boot.cat檔案是提供 boot: 提示符,來設定相關引數,Tab 可補全相關引數,如圖 1-2。此功能
# 等價於 圖 1-1 在相應選單下按 Tab 後新增相關引數
#
# 下面是光碟中 isolinux 目錄下的的相關檔案
#
[root@server ~]# ll /media/cdrom/isolinux/
total 37142
-r--r--r-- 1 root root 2048 Nov 29 2013 boot.cat
-r--r--r-- 2 root root 84 Nov 29 2013 boot.msg
-r--r--r-- 2 root root 334 Nov 28 2013 grub.conf
-r--r--r-- 2 root root 33392971 Nov 28 2013 initrd.img
-r--r--r-- 2 root root 24576 Nov 29 2013 isolinux.bin
-r--r--r-- 2 root root 936 Nov 29 2013 isolinux.cfg
-r--r--r-- 2 root root 165080 Nov 29 2013 memtest
-r--r--r-- 2 root root 151230 Nov 29 2013 splash.jpg
-r--r--r-- 1 root root 2215 Nov 29 2013 TRANS.TBL
-r--r--r-- 2 root root 162860 Nov 29 2013 vesamenu.c32
-r-xr-xr-x 4 root root 4128368 Nov 29 2013 vmlinuz
圖1-1 安裝選單
圖 1-2 手動新增引數安裝
# 對於圖 1-2 的引數常用的有:
# ip netmask gateway 指定 ip 地址,掩碼,網管
# 例如:ip 172.16.10.44 netmask 255.255.0.0 gateway 172.16.0.1
# repo 指定安裝包的位置
# ks 指定 kickstat 檔案的位置。
# 例如:repo=# ks=cdrom:/isolinux/ks.cfg
#
# 我們為什麼要設定這些引數呢?
# 原因是:本地沒有軟體倉庫,和實現自動安裝。
#
# 詳細的配置引數可參考 對應版本的 Installation_Guide 檔案
由於篇幅限制,對於具體的安裝過程這裡不在一一介紹。
二、如何實現無人值守安裝(kickstart)?
個人在安裝一次的Linux作業系統時,可以利用本地映象互動式安裝。現在出現了 5 臺需要安裝作業系統,像一臺機器那樣安裝,可能就不是那麼高效了。這裡需要藉助自制光碟映象了來實現無人值守(非互動式安裝)。
1、無人值守安裝(kickstart)
無人值守安裝時如何辦到的呢 ??是向 anaconda 安裝程式提供一個 .cfg 的檔案,檔案裡面定義和設定好了安裝前的操作,例如:鍵盤型別,時區,管理員密碼,分割槽資訊,語言,安裝的包的名稱等相關資訊。
# 選擇硬體平臺
# platform=x86, AMD64, or Intel EM64T
# 防火牆設定 --disabled 禁用 --enabled 啟用
firewall --disabled
# 安裝後升級系統 安裝:install 升級:upgrade
install
# 使用網路安裝,如果使用網路安裝,url 是必須的,
url --url="
# 指定網路軟體倉庫的位置
repo --name="CentOS" --baseurl=ftp://172.16.10.9/pub/cdrom --cost=100
# 設定 root 密碼
rootpw --iscrypted $1$FUS6GrNf$dArNmVbJWOo4EAKCmgdEK/
# 系統認證資訊
auth --useshadow --passalgo=sha512
# 圖形化安裝
graphical
# 鍵盤型別
keyboard us
# 系統語言
lang en_US
# SELinux 設定
selinux --disabled
# 系統安裝收 Reboot
reboot
# 設定時區
timezone Asia/Shanghai
# 網路卡配置
network --bootproto=dhcp --device=eth0 --onboot=on
# 載入核心是的引數
bootloader --append="crashkernel=auto crashkernel=auto rhgb rhgb quiet quiet" --location=mbr --driveorder="sda"
# 清除 MBR 記錄
zerombr
# 清除快取資訊
clearpart --all --initlabel
# 分割槽資訊
part /boot --fstype=ext4 --size=200
# 設定邏輯卷分割槽,這個比較重要,因為圖形配置時,不支援邏輯卷
part pv.008002 --size=61440
volgroup vg0 --pesize=8192 pv.008002
logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480
logvol swap --name=swap --vgname=vg0 --size=2048
logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=10240
logvol /var --fstype=ext4 --name=var --vgname=vg0 --size=20480
# 安裝前執行的指令碼
%pre
# set welcom info
echo "Welcom!! Install CentOS 6.5 "
%end
# 安裝後要執行的指令碼
%post
# set hosts
echo '172.16.0.1 server.example.com server' >> /etc/hosts
%end
# 安裝包組合包
%packages
@base
lftp
%end
配置檔案格式和引數比較多,配置起來有難度。所以出現圖形化的管理工具。使用 yum install system-config-kickstart 安裝此管理工具。使用 system-config-kickstart 命令啟動圖形化管理工具進行配置。但是,圖形化管理工具在分割槽是不支援邏輯卷,所以在配置檔案裡,這些配置引數應該熟悉。
# ksvalidator ks.cfg 使用這個工具來檢查是否有語法錯誤
# 一般如果使用圖形化工具配置不需要進行語法檢查
2、製作引導映象
在安裝系統到開始安裝軟體包之前,只需要映象中 isolinux 目錄中的檔案,所以,我們結合 kickstart檔案製作光碟映象。
具體做法:
1、將安裝光碟 isolinux 目錄複製出來,修改許可權
# cp /media/cdrom/isolinux /tmp -R
# chmod 755 /tmp/isolinux -R
2、將制好的 .cfg 檔案複製到isolinux目錄下
# cp /roo/ks.cfg /tmp/isolinux/
3、修改 isolinux 目錄下 isolinux.cfg 檔案的以下內容
label linux
menu label ^Install or upgrade an existing system
menu default
kernel vmlinuz
append initrd=initrd.img
# 找到以上內容,在 append initrd=initrd.img 新增:
# ip 172.16.10.99 netmask 255.255.0.0 gateway 172.16.0.1 ks=cdrom:/isolinux/ks.cfg
# 這裡需要注意的是,這裡的軟體包是遠端提供必須存在且能找到,就是在ks.cfg 檔案
# 中的 url 和 repo 設定要正確。
4、製作iso映象
# mkisofs 引數的具體含義,可參照:http://wiki.osdev.org/Mkisofs
# mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.5 x86_64 boot" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso /tmp/isolinux
至此,我們可以實現無人值守安裝。方法是:將製作好的映象檔案 boot.iso 複製到 5 臺機器上,將它作為安裝映象,即可實現無人值守安裝。
三、如何實現批次自動安裝(PXE)?
現在需要安裝的 50 臺機器,如果用自制 iso 映象那樣安裝的話,效率不是特別那麼高效。這裡需要藉助於 PXE 機制了。
PXE(preboot execute environment,預啟動執行環境)的工作原理是讓安裝的機器獲得一個 ip 地址,然後到指定的伺服器上利用 TFTP 協議下載一個 pxelinux.0 的檔案,作用等價於光碟中 isolinux.bin。來實現再結合 kickstart 檔案實現批次自動安裝。
1、DHCP服務
DHCP(Dynamic Host Configration Protocol 動態主機配置協議),是一種 C/S 服務架構。作用是讓客戶端享服務端租約一個 IP 地址。使用UDP 協議傳輸,服務端監聽的埠號是 67,客戶端監聽的埠號是 68。
為什麼有了DHCP伺服器以後,我們的客戶端就可以獲取地址呢?獲取地址過程如下:
# 第一步:在網路卡的裡面有一個BIOSRom的晶片,在開機時會向區域網裡發出 DHCP DICOVER 廣播請求,索取IP地址
# 第二步:DHCP 服務端收到客戶端的廣播請求會發出一個DHCP OFFER的廣播資料包,分配ip地址
# 第三步:客戶端在接收到報文後,會在向服務端發出 DHCP REQUEST 的廣播報文。來確定此ip地址是否可以使用,以免衝突
# 第四步:服務端在接受到此報文後會發出一個 DHCP ACK的確認報文,此時客戶端就可以租約使用這個ip地址了
安裝:使用 yum install dhcp -y 即可安裝
啟動、關閉:/etc/init.d/dhcpd start|stop 啟動時配置檔案有錯誤會報錯
開機自啟動:chkconfig dhcpd on
DHCP
2、TFTP 服務
TFTP(Trivial File Transfer Protocol 簡單檔案傳輸協議),實際上是一個簡單的檔案伺服器,提供檔案下載服務,一般是檔案數目較少時使用。也是一種 C/S 架構,伺服器工作於 UDP 的69 埠。
安裝:yum install tftp-server tftp -y
此服務是由超級程式 xinetd 來控制,實現“隨叫隨到”的狀態。 服務的開啟在 /etc/xinetd.d/tftp 檔案設定
# disable = no 開啟此功能
# 在這裡我們也可以找到預設的釋出路徑是:/var/lib/tftpboot
啟動,關閉:/etc/init.d/xinetd start|stop
開機自啟動:chkconfig tftp on
3、實現 PXE 的配置
實驗拓撲圖如下:
大 致過程是:安裝的機器向 DHCP 伺服器租約一個 IP 地址,然後得到 TFTP 伺服器的地址,到 TFTP 伺服器上去下載 pxelinux.0 檔案載入核心和臨時根檔案系統等,此時還會下載一個 default 的檔案,裡面指定了 kickstart 釋出的方式,找到對應的伺服器下載得到 kickstart 檔案實現自動化安裝。在 kickstart 檔案裡指定 repo 的位置,來實現安裝時軟體包的下載。
第一步:配置dhcpx資訊
# vim /etc/dhcp/dhcpd.conf
option domain-name "example.com"; # 域名
option domain-name-servers 172.16.0.1; # DNS伺服器名稱
default-lease-time 600; # 租約時間
max-lease-time 7200; # 最大租約時間
log-facility local7;
subnet 172.16.0.0 netmask 255.255.0.0 {
range 172.16.10.14 172.16.10.99; #地址池
option routers 172.16.0.1; # 閘道器
next-server 172.16.10.9; # tftp 伺服器地址
filename "pxelinux.0"; # 下載檔名
}
# 其他引數 host,hardware,class等,這裡不再詳述。
# 配置完成後啟動服務
# /etc/init.d/dhcp start
第二步:提供下載檔案
# 光碟掛載點是 /media/cdrom
# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
# cp /media/cdrom/images/pxeboot/{initrd.img,vmlinuz} /var/lib/tftpboot
# cp /media/cdrom/isolinux/{vesamenu.c32,splash.jpg} /var/lib/tftpboot
# mkdir /var/lib/tftpboot/pxelinux.cfg
# cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
# pxelinux.0 是由安裝包 syslinux 提供的,複製前確保已安裝
# 配置完成後啟動服務
# /etc/init.d/xinetd start
第三步:提供安裝源 和 提供ks.cfg檔案
# yum 源基於 ftp 實現
# yum install vsftpd -y
# mkdir /var/ftp/pub/cdrom -p
# mount --bind /media/cdrom /var/ftp/pub/cdrom
# /etc/init.d/vsftpd start
# chkconfig vsftpd on
# 製作 kickstart 檔案
# 可由 system-config-kickstart 生成。例如:ks.cfg
# 將 ks.cfg 檔案複製到 /var/ftp 目錄下。
如何配置PXE可參照:
補充說明:
1、還需要修改 /var/lib/tftpboot/pxelinux.cfg/default 檔案:
label linux
menu label ^Install or upgrade an existing system
menu defaul
kernel vmlinuz
append initrd=initrd.img ks=ftp://172.16.10.9/ks.cfg # 新增 ks 檔案的位置
# ks.cfg 檔案中的 yum 源一定保證有並且可以正確找到。
2、需要關閉防火牆
# /etc/init.d/iptables stop
至此,就可實現批次安裝。但是,如果安裝的數量較多,網路頻寬會有很大的壓力,此時要藉助於cobbler,puppet工具來實現了。
總結:本文主要介紹了 PXE 服務的原理和搭建過程。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9034054/viewspace-2052803/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- pxe基礎的批次化裝機
- Linux安裝部署Linux
- Elasticsearch 在Linux下的安裝部署和配置ElasticsearchLinux
- Linux 環境下如何安裝部署 RocketMQ 教程LinuxMQ
- yapi 在linux環境下的安裝部署APILinux
- Linux環境下MySQL安裝部署操作步驟LinuxMySql
- Linux——PXE高效批量網路裝機Linux
- windows下安裝部署 hadoopWindowsHadoop
- linux下安裝snap安裝工具Linux
- Linux 中 Docker 的部署安裝LinuxDocker
- PXE+Kickstart無人值守安裝安裝Centos7.9CentOS
- linux 下安裝 jdkLinuxJDK
- linux下安裝dockerLinuxDocker
- linux下nginx安裝LinuxNginx
- Linux下安裝OpenCVLinuxOpenCV
- Linux下安裝nginxLinuxNginx
- linux下安裝elasticsearchLinuxElasticsearch
- Linux 下安裝 RedisLinuxRedis
- Linux下安裝RedisLinuxRedis
- InfluxDB Linux 下安裝Linux
- mysql linux下安裝MySqlLinux
- Linux下安裝RabbitMQLinuxMQ
- Linux下安裝pymysqlLinuxMySql
- Linux下安裝jiebaLinuxJieba
- Linux下安裝GensimLinux
- Linux下SuperLU安裝Linux
- Linux下安裝GitLinuxGit
- linux下安裝pythonLinuxPython
- Linux 下安裝 ComposerLinux
- Linux下expect安裝Linux
- PXE遠端CentOS安裝anaconda報錯CentOS
- docker下安裝部署jenkins(一)DockerJenkins
- Docker Linux快速安裝及Nginx部署DockerLinuxNginx
- SonarQube系列一、Linux安裝與部署Linux
- 通過 PXE 自動化安裝 Ubuntu ServerUbuntuServer
- PXE實現系統自動化安裝
- Maven的安裝/2.2 Linux下的安裝MavenLinux
- Linux下安裝java及配置(yum安裝)LinuxJava
- Linux下安裝使用MySQLLinuxMySql