6-2pxe应用入门

回顾:
dhcp包有两个:dhcpd和dhcrelay
dhcpd的配置文件:/etc/dhcp/dhcpd.conf
option routers GW;
option domain-name-servers IP,IP,IP;
default-lease-time;
max-lease-time;html

subnet NET netmask MASK {
    range ;
    ...
}
host HOST_ID {
    hardware ethernet MAC;
    fixed-address IP;
}

分配信息库:
    /var/lib/dhcp/dhcpd.leases~
客户端命令:dhclient
    -d:运行在前台;
其余配置选项:
    filename:指明引导文件名称;能够理解为bootloader文件
    next-server:指明引导所在的服务主机的IP地址;这个server通常为tftp server
    示例:
    filename "pxelinux.0";
    next-server 172.18.100.6;
        tftp:trivial ftp琐碎简单ftp 使用udp协议

pxe:
PXE:preboot excution environment,Intel牵头
流程:
没有安装操做系统的主机可以完成基于网络引导的安装或者启动操做
一、客户端的网卡必须支持网络引导机制,而且调整为第一启动引导设备
二、主机唤醒以后,开始加载网络引导应用时,网卡会在本地局域网络中广播一个rarp协议,得到一个IP地址,同时还会得到要加载的文件名称和文件serverIP
二、文件会在内存中展开,基于此文件去加载一个内核文件(也是从server获取),内核还须要依赖于initrd这样的虚根来完成对真实根所在的设备的驱动的加载,内核文件一般是专为系统安装所设定的,所以若是给它配置了网络属性的话,接着这个内核文件还须要基于网络把本身扮演成某种协议的客户端,去启动能加载安装程序的程序包,在本地完成安装并启动应用程序,而此程序在另外一个基于http、ftp、nfs提供的yum仓库服务器上,读取kickstart文件,基于kickstart解决依赖关系,基于基础镜像仓库完成后续的全部安装过程。
网络引导安装会依赖于一个基础镜像仓库(能够理解为一个yum仓库)linux

CentOS:
    dhcp(ip/netmask,gw,dns;filename,next-server)
    tftp server(bootloader,kernel,initrd)
    yum repository(ftp,http,nfs)

    kickstart文件:自动完成操做

tftp server:
    centos6:
        chkconfig tftp on
        service xinetd restart
    centos7:
        systemctl start tftp.socket
        systemctl enable tftp.socket---设置为开机自动启动
    默认的文件根目录:/var/lib/tftpboot/

配置PXE环境:
CentOS 7:
yum -y install syslinuxredis

cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
    cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot
    cp /usr/share/syslinux/{chain.c32,mboot.c32,menu.c32,memdisk} /var/lib/tftpboot

    mkdir /var/lib/tftpboot/pxelinux.cfg/

    vim /var/lib/tftpboot/pxelinux.cfg/default
    default menu.c32---以菜单方式显示安装界面或者引导界面
    prompt 5---菜单界面显示给用户5秒钟
    timeout 30---菜单界面显示超时,若是不选择就超时
    MENU TITLE CentOS 7 PXE Menu---MENU TITLE是固定的,后边的字符串能够随便写,指定一个菜单项

    LABEL linux---标签
    MENU LABEL Install CentOS 7 x86_64---菜单中显示的是什么install后边的字符串随便写,这是菜单某一个条目的标题
    KERNEL vmlinuz---这个菜单项的内核
    APPEND initrd=initrd.img---向内核附加的参数 inst.repo=http://192.168.10.9/centos/7/x86_64
    LABEL linux_autoinst---标签
    MENU LABEL Install CentOS 7 x86_64 auto---菜单中显示的是什么install后边的字符串随便写,这是菜单某一个条目的标题
    KERNEL vmlinuz---这个菜单项的内核
    APPEND initrd=initrd.img---向内核附加的参数 inst.repo=http://192.168.10.9/centos/7/x86_64 ks=http://192.168.10.9/kickstarts/centos7.cfg---kickstart文件

CentOS 6:
    yum -y install syslinux

    cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
    cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot
    cp /media/cdrom/isolinux/{boot.msg,vesamenu.c32,splash.png} /var/lib/tftpboot

    mkdir /var/lib/tftpboot/pxelinux.cfg/
    cp /media/cdrom/isolinux/isolinux.cfg  /var/lib/tftpboot/pxelinux.cfg/default---编辑这个文件不须要指定inst.repo,只须要指定ks文件便可

    内容以下所示:
    display boot.msg

    menu background splash.jpg
    menu title Welcom to CentOS 6.7!
    menu color border 0 #ffffffff #00000000
    menu color sel 7 #ffffffff #ff000000
    menu color title 0 #ffffffff #00000000
    menu color tabmsg 0 #fffffff #00000000
    menu color unsel 0 #ffffffff #00000000
    menu color hotsel 0 #ff000000 #00000000
    menu color hotkey 7 #ffffffff #ff000000
    menu color scrollbar 0 #ffffffff #00000000

    label zutoinst
        menu label ^Auto Install CentOS---^表示ctrl,表示一个控制符,表示按A快速定位
        menu default
        kernel vmlinuz
        append initrd=initrd.img
    label linux
        menu label ^Install or upgrade an existing system
        kernel vmlinuz
        append initrd=initrd.img
    label vesa
        menu lebel Install system with ^basic video driver
        kernel vmlinuz
        append initrd=initrd.img nomodeset---不作模式设定,启动时使用600×480的基本显卡驱动
    label rescue
        menu label ^Rescue installed system
        kernel vmlinuz
        append initrd=initrd.img rescue
    label local
        menu label Boot from ^local drive
        localboot 0xffff
    label memtest86
        menu label ^Memory test
        kernel memtest
        append ~

下面演示tftpserver---文件路径在/var/lib/tftpboot/
yum -y install tftp tftp-server---同时安装客户端和服务端
systemctl start tftp.socket
systemctl enable tftp.socket
ss -unl---udp协议的69端口
而后就能够使用客户端链接上去了

而后把这台server配置成dhcp服务器,
vim /etc/dhcp/dhcpd.conf
option domain-name "magedu.com";
option routers 192.168.10.9;
option domain-name-servers 172.18.0.1;vim

default-lease-time 43200;
max-lease-time 86400;centos

log-facility local7;服务器

subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.101 192.168.10.120;
filename "pxelinux.0";
next -server 192.168.10.9;
}
配置完成后
systemctl restart dhcpd.service
ss -unl---67端口

而后建立一个仓库:经过http协议来访问
mkdir -pv /var/www/html/centos/7/x86_64
mount -r /dev/cdrom /var/ww/html/centos/7/x86_64---把cdrom中的文件挂载到http server中,看成yum仓库
systemctl start httpd.service
而后建立一个kickstart文件
mkdir -pv /var/www/html/kickstarts
vim /var/www/html/kickstarts/centos7.cfg
install
xconfig --startxonboot
keyboard --vckeymap=cn --xlayouts='cn'
reboot
rootpw --iscrypted $HDHf2v4i$LMo.xGHfxQDOf8e043C.g/
timezone Asia/Shanghai
url --url="http://192.168.10.9/centos/7/x86_64"
lang zh_CN
user --groups=wheel --name=mageedu --password=$6$1eWr0etY$DfLZgqu... --isrypted --gecos="MageEdu"
firewall --disabled
network --bootproto=dhcp --device=eth0
auth --useshadow --passalgo=sha512
text
firstboot --disable
selinux --permissive
ignoredisk --only-use=sda
bootloader --location=mbr --boot-drive=sda
zerombr
clearpart --all --initlabel
part /boot --asprimary --fstype="xfs" --size=512
part swap --fstype="swap" --size=2048
part /usr --fstype="xfs" --size=20480
part / --fstype="xfs" --size=20480网络

%packagesbr/>@base
@core
lftp
screen
wget
treeapp

%end
kickstart文件准备好了之后,
vim /etc/yum.repos.d/CentOS-Base.repo
把baseurl替换为本地挂载的光盘文件路径
baseurl=file:///var/www/html/centos/7/x86_64dom

yum -y install syslinux
rpm -ql syslinux---能够看到有一个pxelinux.o文件
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
此时还须要内核文件(必定要与当前系统版本保持一致)和initrd文件
在/var/www/html/centos/7/x86_64/images/pxeboot下有initrd.img文件和vmlinuz内核文件
cp /var/www/html/centos/7/x86_64/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
cp /usr/share/syslinux/{chain.c32,memdisk,menu.c32,mboot.c32} /var/lib/tftpboot/---还须要一些启动菜单,centos7系统下选择这些:menu.c32字符界面用到,vesamenu.c32图形界面会用到,memdisk把内存当成磁盘,方便initrd须要
cd /var/lib/tftpboot/
mkdir pxelinux.cfg
cd /pxelinux.cfg
vim default
default menu.c32---以菜单方式显示安装界面或者引导界面
prompt 5---菜单界面显示给用户5秒钟
timeout 30---菜单界面显示超时,若是不选择就超时
MENU TITLE CentOS 7 PXE Menu---MENU TITLE是固定的,后边的字符串能够随便写,指定一个菜单项socket

LABEL linux---标签
MENU LABEL Install CentOS 7 x86_64---菜单中显示的是什么install后边的字符串随便写,这是菜单某一个条目的标题
KERNEL vmlinuz---这个菜单项的内核
APPEND initrd=initrd.img---向内核附加的参数 inst.repo=http://192.168.10.9/centos/7/x86_64
LABEL linux_autoinst---标签
MENU LABEL Install CentOS 7 x86_64 auto---菜单中显示的是什么install后边的字符串随便写,这是菜单某一个条目的标题
KERNEL vmlinuz---这个菜单项的内核
APPEND initrd=initrd.img---向内核附加的参数 inst.repo=http://192.168.10.9/centos/7/x86_64 ks=http://192.168.10.9/kickstarts/centos7.cfg---kickstart文件

systemctl start httpd.service

而后找一个客户端就能够用pxe网络引导了,可是只能到加载内核这一步,由于没有指定安装路径,安装程序,这里能看到IP只是网卡的IP,不是内核的IP,由于没有系统
在网络引导出现菜单的时候,按table键,指定参数

vmlinuz initrd=initrd.img ip=192.168.10.11 netmask=255.255.255.0 inst.repo=http://192.168.10.9/centos/7/x86_64/---指定以前要配置内核的IP地址
可是每次安装系统时指定IP等参数太麻烦了,因此能够在default配置文件中添加

客户端tftp 192.168.10.9---就能够链接,出现tftp的命令行提示符,能够使用help显示帮助信息

相关文章
相关标签/搜索