PXE安裝CentOS

1、PXE

一、pxe概念

PXE(preboot execute environment,預啓動執行環境)是由Intel公司開發的最新技術,工做於Client/Server的網絡模式,支持工做站經過網絡從遠端服務器下載映像,並由此支持經過網絡啓動操做系統,在啓動過程當中,終端要求服務器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)協議下載一個啓動軟件包到本機內存中執行,由這個啓動軟件包完成終端(客戶端)基本軟件設置,從而引導預先安裝在服務器中的終端操做系統。PXE能夠引導多種操做系統,如:Windows95/98/2000/windows2003/windows2008/winXP/win7/win8,linux系列系統等。html

二、pxe的工做原理

(1)Client向PXE Server上的DHCP發送IP地址請求消息,java

(2)DHCP檢測Client是否合法(主要是檢測Client的網卡MAC地址),若是合法則返回Client的IP地址,同時將啓動文件pxelinux.0的位置信息一併傳送給Clientlinux

(3)Client向PXE Server上的TFTP發送獲取pxelinux.0請求消息,TFTP接收到消息以後再向Client發送pxelinux.0大小信息,試探Client是否滿意,當TFTP收到Client發回的贊成大小信息以後,正式向Client發送pxelinux.0redis

(4)Client執行接收到的pxelinux.0文件vim

(5)Client向TFTP Server發送針對本機的配置信息文件(在 TFTP 服務的pxelinux.cfg目錄下),TFTP將配置文件發回Client,繼而Client根據配置文件執行後續操做。windows

(6)Client向TFTP發送Linux內核請求信息,TFTP接收到消息以後將內核文件發送給Clientcentos

(7)Client向TFTP發送根文件請求信息,TFTP接收到消息以後返回Linux根文件系統bash

(8)Client啓動Linux內核服務器

(9)Client下載安裝源文件,讀取自動化安裝腳本 timg.jpg網絡

三、PXE依賴的服務、軟件包及文件

(1)dhcp服務

若是不理解dhcp請查看http://merit.blog.51cto.com/10757694/1966078

(2)tftp服務

(a)tftp的安裝包

tftp 客戶端,tftp-server服務端

(b)端口號爲69/UDP

(c)配置爲文件

/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
        disable                 = yes   #此選項是否開啓tftp服務
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

(d)如何 CentOS 7如何啓動此服務?[root@localhost ~]# yum install -y tftp-server

方法一:

直接修改配置文件 2017-09-17_190343.png[root@localhost ~]# systemctl start tftp #啓動服務[root@localhost ~]# ss -unl #查看端口是否啓動 2017-09-17_190608.png

方法二:

直接啓動服務並設置開機自動啓動[root@localhost ~]# systemctl start tftp[root@localhost ~]# systemctl enable tftp

(3)syslinux包

(a)概念

syslinux是一個功能強大的引導加載程序,並且兼容各類介質。它的目的是簡化首次安裝Linux的時間,並創建修護或其它特殊用途的啓動盤。它的安裝很簡單,一旦安裝syslinux好以後,sysLinux啓動盤就能夠引導各類基於DOS的工具,以及MS-DOS/Windows或者任何其它操做系統。不只支持採用BIOS結構的主板,並且從6.0版也開始支持採用EFI結構的新型主板。 (b)文件介紹

後綴名 解釋
none or other Linux內核映像
.0 PXE 啓動引導程序(NBP)
.bin 「光盤引導扇區」
.bs 「磁盤引導扇區」
.bss 「磁盤引導扇區」,
.c32 COM32映像文件
.cbt COMBOOT映像文件
.com COMBOOT映像文件
.img 磁盤映像文件
.ima 軟盤映像文件

製做PXE常使用的文件menu.c3二、pxelinux.0。

(4)kickstart文件

若是不理解怎麼配置kickstart文件,請查看http://merit.blog.51cto.com/10757694/1966072

2、PXE自動化安裝CentOS 7

在進行操做以前確保iptables服務時關閉的,selinux是禁用的。

(a)配置yum源和ks文件 [root@localhost ~]# yum install -y vsftpd#安裝vsftpd服務 [root@localhost ~]# systemctl enable vsftpd #設置爲開機啓動 [root@localhost ~]# systemctl start vsftpd 啓動服務[root@localhost ~]# cd /var/ftp/pub/
[root@localhost ~]# mkdir centos/7 -pv #建立目錄[root@localhost ~]# mount /dev/sr0 centos/7 #掛載光盤[root@localhost pub]# rz 將ks文件上傳至當前目錄 具體的能夠參考http://merit.blog.51cto.com/10757694/1966072 2017-09-17_213759.png

(b)安裝syslinux包 [root@localhost ~]# yum install -y syslinux(c)按裝tftp服務,並將配置文件複製[root@localhost ~]# yum install -y tftp-server #安裝tftp服務包[root@localhost ~]# cd /var/lib/tftpboot/ 
[root@localhost tftpboot]# cp /usr/share/syslinux/{pxelinux.0,menu.c32} .#將pxelinux.0和menu.c32複製到當前目錄下[root@localhost tftpboot]# cp /media/cdrom/isolinux/{vmlinuz,initrd.img} .#將內核文件和虛擬文件系統複製到當前目錄下[root@localhost tftpboot]# mkdir pxelinux.cfg[root@localhost tftpboot]# cp /media/cdrom/isolinux/isolinux.cfg pxelinux.cfg/default#將isolinux.cfg文件複製到pxelinux.cfg目錄下並更名爲default[root@localhost tftpboot]# tree #目錄結構

.
├── initrd.img
├── menu.c32
├── pxelinux.0
├── pxelinux.cfg
│   └── default
└── vmlinuz

1 directory, 5 files

[root@localhost tftpboot]# vim pxelinux.cfg/default編輯default配置文件

default menu.c32
timeout 600

menu title CentOS 7 PXE Install

label desktop
  menu label ^desktop
  kernel vmlinuz
  append initrd=initrd.img ks=ftp://192.168.4.51/pub/ks7.cfg

menu end

(d)新建一臺虛擬機,測試

3、PXE自動化CentOS 6

(1)準備yum源和ks6.cfg[root@centos6~]#yum install -y httpd#安裝httpd服務[root@centos6/var/www/html]#mkdir centos/6 -pv[root@centos6/var/www/html]#mkdir ksdir/[root@centos6/var/www/html]#mount /dev/sr0 centos/6/#掛載光盤[root@centos6/var/www/html]#cp ks6.cfg ksdir/` #複製ks文件並修改

#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use ftp/http installation media
url --url=ftp://192.168.4.137/centos/6
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8

# Network information
network  --bootproto=dhcp --device=ens33 --onboot=on --ipv6=auto 
network  --hostname=localhost.localdomain

# Root password
# System services
services --disabled="chronyd"
# System timezone
timezone Asia/Shanghai
# X Window System configuration information
xconfig  --startxonboot
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
zerombr
# Partition clearing information
clearpart --all
part /boot --fstype="xfs" --ondisk=sda --size=1024
part swap --fstype="swap" --ondisk=sda --size=2048
part / --fstype="xfs" --ondisk=sda --size=50000
part /app --fstype="xfs" --ondisk=sda --size=50000

%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
kexec-tools
autofs
lftp
dhcp
vsftpd

%end


%post
#Create repo
mkdir /media/cdrom
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
cat > /etc/yum.repos.d/base <<EOF
[base]
name=centos 6
baseurl=file:///media/cdrom
gpgcheck=0
enabled=1
EOF

cat >> /etc/fstab << EOF
/dev/sr0        /media/cdrom    iso9660 defaults 0 0

cat >> /root/.bashrc << EOF
alias cdnet="cd /etc/sysconfig/network-scripts/"
EOF

cat >> /etc/profile.d/env.sh
export PS1='\[\e[31m\][\u@\h\w]\$\[\e[0m\]'
EOF


%end

[root@centos6/var/www/html]#service httpd start #啓動http服務 (2)安裝syslinux-nonlinux包[root@centos6/var/www/html]#yum install -y syslinux-nonlinux(3)安裝tfpt服務並複製文件[root@centos6/var/www/html]#cd /var/lib/tftpboot/[root@centos6/var/lib/tftpboot]#cp /usr/share/syslinux/{pxelinux.0,menu.c32} .#將菜單須要的文件複製到當前目錄[root@centos6/var/lib/tftpboot]#cp /media/cdrom/isolinux/{vmlinuz,initrd.img} .#複製內核文件和虛擬文件系統到當前目錄下[root@centos6/var/lib/tftpboot]#mkdir pxelinux.cfg[root@centos6/var/lib/tftpboot]#cp /media/cdrom/isolinux/isolinux.cfg pxelinux.cfg/default#複製菜單顯示內容文件[root@centos6/var/lib/tftpboot]#vim pxelinux.cfg/default #修改default文件 default menu.c32 #prompt 1 timeout 600

menu title  PXE Install CentOS 6

label desktop
  menu label ^desktop
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=http://192.168.4.137/ksdir/ks6.cfg
menu end

(4)安裝dhcp服務並配置 [root@centos6~]#yum install -y dhcpd[root@centos6~]#cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.con[root@centos6~]#vim /etc/dhcp/dhcpd.conf 2017-09-17_223216.png[root@centos6~]#service dhcpd start #啓動http服務 (5)新建一臺虛擬機,查看是否能夠成功

4、如何使用PXE能支持CentOS 6和CentOS 7的安裝 (a)前幾步驟都和上述安裝過程相似 (b)修改配置文件 `[root@centos6~]#vim /var/lib/tftpboot/pxelinux.cfg/default

default menu.c32
timeout 600
menu title CentOS Linux  PXE Install

label centos7
  menu label Auto Install CentOS Linux ^7
  kernel centos7/vmlinuz
  append initrd=centos7/initrd.img ks=http://192.168.4.135/ksdir/ks7-1.cfg

label centos6
  menu label Auto Install CentOS Linux ^6
  kernel centos6/vmlinuz
  append initrd=centos6/initrd.img ks=http://192.168.4.135/ksdir/ks6-1.cfg

label manual7
  menu label ^Manual Install CentOS Linux 7
  kernel centos7/vmlinuz
  append initrd=centos7/initrd.img inst.repo=http://192.168.4.135/centos/7

label manual6
  menu label Manual ^Install CentOS Linux 6
  kernel centos6/vmlinuz
  append initrd=centos6/initrd.img inst.repo=http://192.168.4.135/centos/6

menu end

(c)新建虛擬機測試

相關文章
相關標籤/搜索