使用PXE引導(dǎo)安裝CentOS7

一烛亦、PXE簡介

PXE(preboot execute environment,預(yù)啟動執(zhí)行環(huán)境)是由Intel公司開發(fā)的最新技術(shù)懂拾,工作于Client/Server的網(wǎng)絡(luò)模式煤禽,支持工作站通過網(wǎng)絡(luò)從遠(yuǎn)端服務(wù)器下載映像,并由此支持通過網(wǎng)絡(luò)啟動操作系統(tǒng)岖赋,在啟動過程中呜师,終端要求服務(wù)器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)協(xié)議下載一個啟動軟件包到本機內(nèi)存中執(zhí)行贾节,由這個啟動軟件包完成終端(客戶端)基本軟件設(shè)置汁汗,從而引導(dǎo)預(yù)先安裝在服務(wù)器中的終端操作系統(tǒng)衷畦。PXE可以引導(dǎo)多種操作系統(tǒng),如:Windows95/98/2000/windows2003/windows2008/winXP/win7/win8,linux系列系統(tǒng)等知牌。
注:摘自百度百科祈争。

PXE網(wǎng)絡(luò)結(jié)構(gòu)大致如圖:

PXE結(jié)構(gòu)

二、環(huán)境準(zhǔn)備

  1. 上傳CentOS7光盤鏡像(這里使用1511和1810演示)

  2. 安裝并配置好YUM軟件源

  3. 安裝所需軟件

    yum install -y yum dhcp xinetd tftp-server syslinux vsftpd
    
  4. 創(chuàng)建CentOS7系統(tǒng)鏡像文件存放目錄(可根據(jù)實際自定義),并復(fù)制對應(yīng)版本系統(tǒng)文件

    #創(chuàng)建對應(yīng)目錄
    mkdir -p /pxe/centos7-1511/
    mkdir -p /pxe/centos7-1511/
    #掛載對應(yīng)系統(tǒng)鏡像并復(fù)制到創(chuàng)建的目錄
    mkdir -p /mnt/centos7-1511/
    mkdir -p /mnt/centos7-1511/
    mount /pxe/CentOS-7-x86_64-DVD-1511.iso /mnt/centos7-1511/
    mount /pxe/CentOS-7-x86_64-DVD-1810.iso /mnt/centos7-1511/
    cp -R /mnt/centos7-1511/* /pxe/centos7-1511/
    cp -R /mnt/centos7-1810/* /pxe/centos7-1810/
    
  5. 關(guān)閉防火墻及SELinux(此處自行查閱資料)角寸。

注:這里使用vsftp來傳輸系統(tǒng)文件菩混,也可以使用http、nfs等方式扁藕,可根據(jù)實際情況選擇配置沮峡。
注:本文非PXE自動化部署,如需無人值守部署可使用ks.cfg文件實現(xiàn)亿柑,文末有參考配置邢疙。
注:這里使用centos7的1511和1810版本演示,如需添加更多版本如上配置即可望薄。

三疟游、軟件配置

  1. syslinux加載器設(shè)置
    vesamenu.c32menu.c32是syslinux所擁有眾多模塊中的兩個,它們的功能是制定啟動器使用什么模式的背景痕支。vesamenu.c32圖形模式言蛇,menu.c32文本模式许起。這里選擇menu.c32。同時還需要pxelinux.0文件,它對整個引導(dǎo)器的作用就如同內(nèi)核對系統(tǒng)的作用一般娇妓,它可以解釋default文件(配置引導(dǎo)菜單的文件)中的每個配置項刁品,并根據(jù)配置項做出不同的反應(yīng)辱姨,如等待的時間阅酪、啟動器背景、啟動菜單察绷、內(nèi)核引導(dǎo)等干签。
    將這兩個文件復(fù)制到tftp的訪問目錄中:

    cp /usr/share/syslinux/menu.c32  /var/lib/tftpboot/
    cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
    

    然后創(chuàng)建pxelinux.cfg目錄,pxelinux被執(zhí)行后拆撼,它會掃描該目錄下是否存在指定的配置文件容劳,若存在則引用被制定的配置文件。
    default文件存放于pxelinux.cfg目錄中闸度,pxelinux程序最后掃描的配置文件名就是default竭贩,所以經(jīng)常把啟動器配置項都寫入該文件中。
    建立目錄pxelinux.cfg并在此目錄下建立default文件:

    mkdir /var/lib/tftpboot/pxelinux.cfg
    #為方便后續(xù)區(qū)分莺禁,創(chuàng)建對應(yīng)文件夾以便后續(xù)存放啟動文件
    mkdir /var/lib/tftpboot/centos7-1511/
    mkdir /var/lib/tftpboot/centos7-1810/
    

    編輯引導(dǎo)菜單如下:
    vi /var/lib/tftpboot/pxelinux.cfg/default

    default menu.c32
    prompt 0
    timeout 300
    ONTIMEOUT local
     
    menu title ########## PXE Boot Menu ##########      
    
    label 1
    menu label ^1) Install CentOS 7 1511 x64
    kernel centos7-1511/vmlinuz
    append initrd=centos7-1511/initrd.img method=ftp://192.168.100.182/centos7-1511/ devfs=nomount
    
    label 2
    menu label ^2) Install CentOS 7 1810 x64 
    kernel centos7-1810/vmlinuz
    append initrd=centos7-1810/initrd.img method=ftp://192.168.100.182/centos7-1810/ devfs=nomount
    
    #無人值守安裝留量,需配置對應(yīng)ks.cfg文件
    label 3
    menu label ^3) Auto Install CentOS 7 1810 x64
    kernel centos7-1810/vmlinuz
    append initrd=centos7-1810/initrd.img ks=ftp://192.168.100.182/centos7-1810/ks.cfg
    
    label local
    menu label ^4) Boot from Local Disk
    menu default
    localboot 0xffff
    

    注:這里使用centos7的1511和1810版本演示,如需添加更多版本如上配置即可。
    復(fù)制對應(yīng)系統(tǒng)啟動文件到對應(yīng)目錄:

    cp /pxe/centos7-1511/images/pxeboot/initrd.img /var/lib/tftpboot/centos7-1511/
    cp /pxe/centos7-1511/images/pxeboot/vmlinuz /var/lib/tftpboot/centos7-1511/
    cp /pxe/centos7-1810/images/pxeboot/initrd.img /var/lib/tftpboot/centos7-1810/
    cp /pxe/centos7-1810/images/pxeboot/vmlinuz /var/lib/tftpboot/centos7-1810/
    

    此時/var/lib/tftpboot目錄結(jié)構(gòu)如下:

    /var/lib/tftpboot/
    ├── centos7-1511
    │   ├── initrd.img
    │   └── vmlinuz
    ├── centos7-1810
    │   ├── initrd.img
    │   └── vmlinuz
    ├── menu.c32
    ├── pxelinux.0
    └── pxelinux.cfg
        └── default
    
  2. dhcp服務(wù)配置
    編輯配置文件:vi /etc/dhcp/dhcpd.conf
    如下(ip地址等可根據(jù)實際情況修改):

ddns-update-style none;
ignore client-updates;
default-lease-time 259200;
max-lease-time 518400;
#響應(yīng)使用者查詢
allow booting;
#響應(yīng)激活查詢
allow bootp;
subnet 192.168.100.0 netmask 255.255.255.0 {
       #分配的ip地址池范圍
       range dynamic-bootp 192.168.100.100 192.168.100.200;
       #網(wǎng)關(guān)地址
       option routers 192.168.100.1;
       #子網(wǎng)掩碼
       option subnet-mask 255.255.255.0;
       #DNS
       option domain-name-servers 119.29.29.29,114.114.114.114;
       #本機ip地址
       next-server 192.168.100.182;
       #pxe啟動文件
       filename "pxelinux.0";
}
  1. tftp服務(wù)配置
    由于tftp是由xinetd管理的楼熄,修改/etc/xinetd.d/tftp配置文件如下:
service tftp
{
    socket_type     = dgram
    protocol        = udp
    wait            = yes
    user            = root
    server          = /usr/sbin/in.tftpd
    server_args     = -s /var/lib/tftpboot
    #啟用tftp
    disable         = no
    per_source      = 11
    cps         = 100 2
    flags           = IPv4
}
  1. vsftpd服務(wù)配置
    編輯配置文件/etc/vsftpd/vsftpd.conf如下:
#其他保持默認(rèn)忆绰,最后一行添加如下,路徑為上面系統(tǒng)鏡像目錄
anon_root=/pxe/
  1. 檢查并啟動服務(wù)
    systemctl start dhcpd xinetd tftp vsftpd
    注:若啟動失敗請檢查各服務(wù)配置后重試可岂。

  2. 客戶機從網(wǎng)絡(luò)啟動安裝系統(tǒng)
    客戶機開機BIOS選擇從網(wǎng)卡啟動即可引導(dǎo)安裝界面错敢,如圖:

    啟動菜單

    安裝界面

    安裝界面

附1:個人啟動停止腳本

個人為了方便管理PXE服務(wù)項,使用腳本批量啟動或停止服務(wù)缕粹,將腳本放置在/usr/bin/目錄則可以很方便地使用腳本稚茅。
如下是腳本pxe.sh內(nèi)容:

#!/bin/bash
# PXE Service

case $1 in
    start)
        echo -e "\033[32m ### Start PXE Service...\033[0m"
        systemctl start dhcpd && echo -e "\033[32m >>> Start DHCP Service Success!\033[0m"
        systemctl start xinetd && echo -e "\033[32m >>> Start Xinetd Service Success!\033[0m"
        systemctl start tftp && echo -e "\033[32m >>> Start TFTP Service Success!\033[0m"
        systemctl start vsftpd && echo -e "\033[32m >>> Start vsFTP Service Success!\033[0m"
        echo -e "\033[32m ### Start PXE Service Success!\033[0m"
    ;;
    stop)
        echo -e "\033[32m ### Stop PXE Service...\033[0m"
        systemctl stop dhcpd && echo -e "\033[32m >>> Stop DHCP Service Success!\033[0m"
        systemctl stop xinetd && echo -e "\033[32m >>> Stop Xinetd Service Success!\033[0m"
        systemctl stop tftp && echo -e "\033[32m >>> Stop TFTP Service Success!\033[0m"
        systemctl stop vsftpd && echo -e "\033[32m >>> Stop vsFTP Service Success!\033[0m"
        echo -e "\033[32m ### Stop PXE Service Success!\033[0m"
    ;;
    restart)
        echo -e "\033[32m ### Restart PXE Service...\033[0m"
        systemctl restart dhcpd && echo -e "\033[32m >>> Restart DHCP Service Success!\033[0m"
        systemctl restart xinetd && echo -e "\033[32m >>> Restart Xinetd Service Success!\033[0m"
        systemctl restart tftp && echo -e "\033[32m >>> Restart TFTP Service Success!\033[0m"
        systemctl restart vsftpd && echo -e "\033[32m >>> Restart vsFTP Service Success!\033[0m"
        echo -e "\033[32m ### Restart PXE Service Success!\033[0m"
    ;;
    enable)
        echo -e "\033[32m ### Enable PXE Service...\033[0m"
        systemctl enable dhcpd && echo -e "\033[32m >>> Enable DHCP Service Success!\033[0m"
        systemctl enable xinetd && echo -e "\033[32m >>> Enable Xinetd Service Success!\033[0m"
        systemctl enable tftp && echo -e "\033[32m >>> Enable TFTP Service Success!\033[0m"
        systemctl enable vsftpd && echo -e "\033[32m >>> Enable vsFTP Service Success!\033[0m"
        echo -e "\033[32m ### Enable PXE Service Success!\033[0m"
    ;;
    disable)
        echo -e "\033[32m ### Disable PXE Service...\033[0m"
        systemctl disable dhcpd && echo -e "\033[32m >>> Disable DHCP Service Success!\033[0m"
        systemctl disable xinetd && echo -e "\033[32m >>> Disable Xinetd Service Success!\033[0m"
        systemctl disable tftp && echo -e "\033[32m >>> Disable TFTP Service Success!\033[0m"
        systemctl disable vsftpd && echo -e "\033[32m >>> Disable vsFTP Service Success!\033[0m"
        echo -e "\033[32m ### Disable PXE Service Success!\033[0m"
    ;;
    *)
    echo "### The input value is invalid, please try again..." 
    ;;
esac

啟動服務(wù):pxe.sh start
停止服務(wù):pxe.sh stop
重啟服務(wù):pxe.sh restart
開機自啟:pxe.sh enable
取消自啟:pxe.sh disable
注:若使用http或nfs方式,則具體服務(wù)名稱根據(jù)實際情況更改平斩。

附2:個人無人值守配置文件ks.cfg

注:可使用Kickstart工具生成或復(fù)制修改root目錄下的anaconda-ks.cfg文件亚享。
注:以下url地址自行根據(jù)實際修改,該配置默認(rèn)刪除所有分區(qū)并重新最小化安裝,將此文件放到對應(yīng)系統(tǒng)鏡像文件根目錄下并對應(yīng)修改上文中引導(dǎo)菜單的網(wǎng)絡(luò)文件路徑绘面,此配置密碼為000000欺税。
安裝Kickstart工具:yum reinstall -y system-config-kickstart
如需X11需安裝:yum install -y xorg-x11-xauth wqy-zenhei-fonts*

#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$aq2UlNV/$5NBlTHhpgk6K3BEVHbsin0
# Use network installation
url --url="ftp://192.168.100.182/centos7-1810"
# System language
lang zh_CN.UTF-8
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use text mode install
text
# SELinux configuration
selinux --enforcing
# Do not configure the X Window System
skipx

# Firewall configuration
firewall --enabled --ssh
# Network information
network  --bootproto=dhcp --device=eth0 --ipv6=auto --activate 
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai --isUtc
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
autopart --type=lvm
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel

%packages
@^minimal
@core
chrony
kexec-tools
%end
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市飒货,隨后出現(xiàn)的幾起案子魄衅,更是在濱河造成了極大的恐慌峭竣,老刑警劉巖塘辅,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異皆撩,居然都是意外死亡扣墩,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進(jìn)店門扛吞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來呻惕,“玉大人,你說我怎么就攤上這事滥比⊙谴啵” “怎么了?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵盲泛,是天一觀的道長濒持。 經(jīng)常有香客問我,道長寺滚,這世上最難降的妖魔是什么柑营? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮村视,結(jié)果婚禮上官套,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好奶赔,可當(dāng)我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布惋嚎。 她就那樣靜靜地躺著,像睡著了一般站刑。 火紅的嫁衣襯著肌膚如雪瘸彤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天笛钝,我揣著相機與錄音质况,去河邊找鬼。 笑死玻靡,一個胖子當(dāng)著我的面吹牛结榄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播囤捻,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼臼朗,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蝎土?” 一聲冷哼從身側(cè)響起视哑,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎誊涯,沒想到半個月后挡毅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡暴构,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年跪呈,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片取逾。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡耗绿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出砾隅,到底是詐尸還是另有隱情误阻,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布晴埂,位于F島的核電站究反,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏邑时。R本人自食惡果不足惜奴紧,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望晶丘。 院中可真熱鬧黍氮,春花似錦唐含、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至专执,卻和暖如春淮捆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背本股。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工攀痊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拄显。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓苟径,卻偏偏與公主長得像,于是被迫代替她去往敵國和親躬审。 傳聞我的和親對象是個殘疾皇子棘街,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內(nèi)容