内容简介:本章Blog相关Linux知识点PXE协议详解:
本章Blog相关 Linux 知识点
工作环境中, 想要安装Linux但是计算机没有光驱,或者是有大批量的计算机需要同时安装Linux ,就需要通过部署环境PXE+DHCP+TFTP+HTTP+kickstart 方式来实现了 。
PXE协议详解:
PXE,预启动执行环境(Preboot eXecution Environment,PXE,也被称为预执行环境)提供了一种使用网络接口(Network Interface)启动计算机的机制。这种机制让计算机的启动可以不依赖本地数据存储设备(如硬盘)或本地已安装的操作系统。
PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动。协议分为client和server两端, 支持工作站通过网络从远端服务器下载映像,并由此支持来自网络的操作系统的启动过程,其启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中并执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。
PXE 工作原理:
1.PXE client从自己的PXE网卡启动,向本网络中的DHCP服务器请求ip地址
2.DHCP服务器收到dhcp请求后,分配dhcp地址池中ip给PXE client
3.PXE client向本网络中的TFTP服务器索取bootstarp文件
4.PXE client取得bootstarp文件后之执行pxelinux.0文件引导,使用pxelinux环境来引导os安装程序。
5.PXE client然后读取pxelinux.cfg文件夹中的default(isolinux.cfg)引导文件,通过TFTP服务器加载内核vmlinuz和根文件系统(boot.msg,vesamenu.c32,initrd.img,splash.jpg),通过http服务器加载ks.cfg引导文件。
6.启动linux内核完成安装
在上图中,PXE client是需要安装Linux的计算机,TFTP Server和DHCP Server运行部署在在PXE Server端。Bootstrap文件、配置文件、Linux内核以及Linux根文件系统都放置在Linux Server上TFTP服务器的根目录下。
PXE必要条件:
1、pxe client必须支持pxe用户端功能,并且开机时选择网络启动,这样系统才能以网络的方式进入pxe启动程序
2、pxe服务器必须至少提供DHCP及TFTP的服务才行,且其中
DHCP服务器必须能够除未pxe client分配ip地址外,还需告知tftp所在的位置(即pxelinux.0的文件位置)
TFTP服务器则为pxe client 提供bootloader 及 kernel 等重要文件下载服务
3、使用NFS/HTTP/FTP之一的服务器提供pxe client所需程序及软件来源等通讯协议
PXE工作流程图:
PXE安装DHCP
动态主机设置协议(Dynamic Host Configuration Protocol,DHCP) 是一种使网络管理员能够集中管理和自动分配IP网络地址的通信协议 ,使用UDP协议工作,DHCP使用统一端口作为BOOTP:服务器端使用67/udp,客户端使用68/udp。主要有两个用途: 用于内部网络或网络服务供应商自动分配IP地址给用户;用于内部网络管理员作为对所有电脑作中央管理的手段。
DHCP协议的工作流程:
客户端在局域网广播DHCPDISCOVER报文,请求获得ip地址、网关、dns地址 等信息;DHCP服务器收到DHCPDISCOVER报文后 ,发送DHCPOFFER 报文进行响应 ;客户端收到DHCPOFFER报文后,发送DHCPREQUEST 报文进行请求 ;最终DHCP 服务器发送 DHCPACK报文进行确认 。
DHCP配置文件dhcp.conf 分为4段:
1、DHCP属性段: log-facility 定义日志等级
2、全局属性段: 使用option 关键字定义
3、子网分配段: 使用subnet 来定义
4、主机配置段: 使用host来定义
[root@PXE pxelinux.cfg]# vi /etc/dhcp/dhcpd.conf
# dhcpd.conf
#
# Sample configuration file for ISC dhcpd
#
# option definitions common to all supported networks...
option domain-name "itwish.cn"; # 全局定义域名
option domain-name-servers 192.168.4.150 ; # 全局定义dns 地址
default-lease-time 600; # 全局定义默认租约期限
max-lease-time 7200; # 全局定义最长租约期限
log-facility local7; # 文件属性
subnet NETWORK_ADDR netmask NETMASK { # 定义子网
range 10.254.239.10 10.254.239.20; # 分配地址池
option routers dns1;
option domain-name-servers ns.itwish.cn;
option domain-name "internal.example.org";
default-lease-time 600;
max-lease-time 7200;
range dynamic-bootp 10.254.239.40 10.254.239.60; # 定义bootp
option broadcast-address 10.254.239.31; # 广播地址
next-server 192.168.4.100; # tftp服务器地址
filename "pxelinux.0"; # 告诉TFTP目录下的bootstarp文件
}
host passacaglia { # 主机定义
hardware ethernet 0:0:c0:5d:bd:95; # 物理地址
filename "vmunix.passacaglia";
server-name "toccata.fugue.com";
fixed-address ip; # 固定地址
}
-
安装DHCP:
[root@PXE ~]# yum install dhcp # 安装dhcp server
[root@PXE ~]# rpm -ql dhcp
/etc/dhcp
/etc/dhcp/dhcpd.conf # dhcpd配置文件
/etc/rc.d/init.d/dhcpd # dhcpd启动文件
/usr/sbin/dhcpd # 启动脚本配置文件
[root@PXE pxelinux.cfg]# vi /etc/dhcp/dhcpd.conf # 调整配置文件
# dhcpd.conf
#
option domain-name "itwish.cn";
option domain-name-servers 192.168.4.150 ;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 192.168.4.0 netmask 255.255.255.0 { # 定义子网
range 192.168.4.10 192.168.4.100;
option routers 192.168.4.1;
next-server 192.168.4.150; # 注:添加 tftp服务器地址
filename="pxelinux.0"; #注:告诉TFTP目录下的bootstarp文件
}
#注:配置文件中以";" 号结尾 ,且需添加next-server 和filename 项
-
启动dhcp并验证dhcpd进程是否处于监听状态:
[root@PXE ~]# chkconfig --add dhcpd [root@PXE ~]# chkconfig dhcpd on [root@PXE ~]# service dhcpd start Starting dhcpd: [ OK ] [root@PXE ~]# ps aux | grep dhcpd # 验证dhcpd 启动 dhcpd 14087 0.0 0.1 48324 3572 ? Ss 03:13 0:00 /usr/sbin/dhcpd -user dhcpd -group dhcpd root 14108 0.0 0.0 103272 840 pts/0 S+ 03:14 0:00 grep dhcpd [root@PXE ~]# ss -tunl | grep 67 udp UNCONN 0 0 *:67 *:*
PXE 安装 TFTP
简单文件传输协议也称小型文件传输协议(Trivial File Transfer Protocol, TFTP),工作在UDP/69 端口,是一种于1981年在RFC 783中定义的简化的文件传输协议(FTP)。
瞬时(非独立)守护进程:他们无需定义在运行级别下,只需要一次性的定义xinetd的运行级别
xinetd——为那些极少接受用户请求的服务,专门提供监听功能,如 监听tftpd进程
独立(standlone)守护进程 :能自我管理,无须xinet 提供监听服务的进程
-
安装TFTP:
[root@PXE ~]# yum install xinetd tftp-server
[root@PXE ~]# rpm -ql tftp-server
/etc/xinetd.d/tftp # 配置文件路径
/var/lib/tftpboot # 默认tftp存储目录
[root@PXE ~]# vi /etc/xinetd.d/tftp
# default: off
service tftp
{
disable = no # no 表明tftp处于启用状态 ,yes 表示tftp处于禁用状态
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot # 默认tftp存储目录
per_source = 11
cps = 100 2
flags = IPv4
}
[root@PXE ~]# chkconfig xinetd on
[root@PXE ~]# chkconfig tftp on
[root@PXE ~]# service xinetd start
Starting xinetd:
[root@PXE ~]# ss -tunl | grep 69
udp UNCONN 0 0 *:69 *:*
-
使用 syslinux 提供的bootstart :
[root@PXE ~]# yum install syslinux [root@PXE ~]# rpm -ql syslinux /usr/share/syslinux # pxelinux.0 文件存储目录 [root@PXE ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ # 复制pxelinux.0到 /var/lib/tftpboot 目录 [root@PXE boot]# mount /dev/cdrom /media/ # 挂载光盘 mount: block device /dev/sr0 is write-protected, mounting read-only
-
配置pxelinux.cfg 文件
[root@PXE ~]# mkdir /var/lib/tftpboot/pxelinux.cfg # 创建pxelinux.cfg 文件夹 [root@PXE ~]# cp isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default # 把isolinux.cfg引导文件拷贝到tftpd存储目录下的pxelinux.cfg文件中,并命名为default [root@PXE ~]# vi /var/lib/tftpboot/pxelinux.cfg/default # 修改linux内核引导文件 default vesamenu.c32 # 默认启动界面,该文件需要拷贝到tftp存储目录中。 #prompt 1 timeout 600 # 倒计时 600就是60 秒,改数字为秒数的10倍 display boot.msg # 将额外信息写入到boot.msg文件中,该文件需要拷贝到tftp存储目录中。 menu background splash.jpg # 菜单背景图,该文件需要拷贝到tftp存储目录中。 menu title Welcome to CentOS 6.6! # 菜单主标题 label linux menu label ^Install or upgrade an PXE system #菜单項目 menu default # 预设项目 kernel vmlinuz # 内核 vmlinuz,该文件需要拷贝到tftp存储目录中。 append initrd=initrd.img ks=http://192.168.4.150/ks.cfg # 核心参数,指定initrd 核心文件,该文件需要拷贝到tftp存储目录中。另指定ks文件目录,这儿使用的http协议
-
把内核及根文件拷贝到tftpd存储目录 :参照上菜单配置信息,包括 vesamenu.c32,boot.msg,splash.jpg,vmlinuz,initrd.img 文件做拷贝
[root@PXE ~]# cp /media/images/pxeboot/{initrd.img,vmlinuz} /var/lib/tftpboot/
[root@PXE ~]# cp /media/isolinux/{boot.msg,vesamenu.c32,splash.jpg} /var/lib/tftpboot/
linux PXE环境HTTPD部署
创建kickstart文件方式:
1、复制模板 /root/anaconda-ks.cfg ,而后使用vim编辑配置
2、使用system-config-kickstart 来生成,建议也使用/root/anaconda-ks.cfg 作为模板来进行
# ksvalidator 查看ks文件语法是否正确
kickstat文件的组成部分 :
1、命令段: 用于配置系统 ,如:install ,firewall, part,lv 等
2、软件包段%packages;指定要安装的程序包组(@组包名)及程序包(程序包名),每行一个 ;在程序包之前加 “-”号,表示不希望安装
3、 %pre %post 脚本段:安装过程开始之前、后执行的安装预备式脚本
-
httpd安装:
[root@PXE ~]# yum install httpd [root@PXE ~]# rpm -ql httpd /etc/httpd /etc/httpd/conf/httpd.conf # httpd 配置文件 /var/www/html # httpd 默认存储目录 [root@PXE ~]# chkconfig httpd on [root@PXE ~]# service httpd start Starting httpd: [root@PXE ~]# ss -tunl |grep 80 tcp LISTEN 0 128 :::80 :::* [root@PXE ~]# ps aux | grep httpd root 1877 0.0 3.3 479948 20284 ? Ss 08:20 0:01 /usr/sbin/httpd apache 2184 0.0 1.6 480084 9908 ? S 09:07 0:00 /usr/sbin/httpd apache 2185 0.0 1.6 480084 9884 ? S 09:07 0:00 /usr/sbin/httpd apache 2188 0.0 1.6 480084 9884 ? S 09:07 0:00 /usr/sbin/httpd apache 2189 0.0 1.6 480084 9884 ? S 09:07 0:00 /usr/sbin/httpd apache 2190 0.0 1.6 480084 9884 ? S 09:07 0:00 /usr/sbin/httpd apache 2191 0.0 1.6 480084 9884 ? S 09:07 0:00 /usr/sbin/httpd apache 2192 0.0 1.6 480084 9884 ? S 09:07 0:00 /usr/sbin/httpd apache 2193 0.0 1.6 480084 9884 ? S 09:07 0:00 /usr/sbin/httpd root 3116 0.0 0.1 103324 844 pts/0 S+ 19:48 0:00 grep httpd [root@PXE ~]# cp /root/anaconda-ks.cfg /var/www/html/ks.cfg # 拷贝模板到/var/www/html 目录,并重命名为ks.cfg [root@PXE ~]# chmod o+r /var/www/html/ks.cfg # 分配权限,为pxe client引导安装使用 [root@PXE isolinux]# cp /media/* /var/www/html/centos/os/ # 拷贝安装系统 [root@PXE os]# grub-crypt # 密码加密,使用grub-crypt 默认512位加密方式 Password: Retype password: $6$DnceMH60Kiu8TaME$ySd/QOpPtEcLnnoW36bDjb59xr1eJHGUwTTV/4MHoojT.RoXXdsLHMWJXcLCETQNRF2xITSqKHAAUNZq6df0i/
-
以/root/anaconda.cfg 为模板,配置ks.cfg文件 ,配置repo url 和 ks.cfg 。
ks引用格式如下图
针对集群的计算节点设置的,比如设置用户信息、关闭防火墙等,请根据自己需要定制,kickstart文件说明参见: https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/6/html/installation_guide/s1-kickstart2-options
[root@PXE ~]# vi /var/www/html/ks.cfg # 调整配置文件 # Kickstart file automatically generated by anaconda. #version=DEVEL install # 命令段 ,安装 url --url=http://192.168.4.150/centos/os/ # 指定网络url安装目录 lang en_US.UTF-8 # 默认字体 keyboard us # 键盘类型 network --onboot yes --device eth0 --bootproto dhcp --noipv6 # 指定开机自启,网络接口eth0 ,dhcp获取网络地址,ipv6 禁用 rootpw --iscrypted $6$ZOGP2tA0PI/6SI/X$MlC5bJyXfP9TBN5/0vwoc6dqAqIijOQthEbAZUnIXft85Tj9n4sKWB2PfxrsVfkZ2ibqX63apu8ElmdEvBo9o/ # root 加密密码,使用grub-crypt 生成的字符串替代 reboot # 配置完毕后,重启内核 firewall --disabled # 防火墙禁用 authconfig --enableshadow --passalgo=sha512 # 登录身份使用 sha1 的 512bits 加密算法 selinux --disabled # selinux 功能禁用 timezone Asia/Shanghai # 定义上海时区 bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" # 定义bootloader,grub安装mbr ,安装在sda磁盘 # The following is the partition information you requested # Note that any partitions you deleted are not expressed # here so unless you clear all partitions first, this is # not guaranteed to work clearpart --all # 清除磁盘分区表 text # 纯文本格式安装显示 zerombr # 对磁盘进行初始化 part /boot --fstype=ext4 --asprimary --size=2000 # 分区信息 ,定义boot分区 ,格式为ext4 ,大小为2G part swap --size=4096 # 分区信息 ,定义swap分区 ,大小为4G part pv.008003 --size=80000 # 分区信息 ,定义lv分区 pv.008003,大小为80G volgroup vg0 --pesize=8192 pv.008003 # 分区信息 ,在lv分区pv.008003定义vg0卷组 ,pe大小为8M logvol / --fstype=ext4 --name=root --vgname=vg0 --size=15000 logvol /usr --fstype=ext4 --name=/usr --vgname=vg0 --size=30000 logvol /var --fstype=ext4 --name=/var --vgname=vg0 --size=20000 logvol /home --fstype=ext4 --name=/home --vgname=vg0 --size=12000 repo --name="CentOS-6.6" --baseurl=http://192.168.4.150/centos/os/ --cost=100 # 定义yum仓库 ,类别为bashurl ,名称为CentOS-6.6 %packages # 包组段,安装包组及程序包 @core @server-policy @workstation-policy %end [root@PXE ~]# yum -y install pykickstart #安装ksvalidator 软件 [root@PXE ~]# ksvalidator /var/www/html/ks.cfg # ksvalidator验证ks.cfg语法是否正确
-
ks.cfg及repo验证:
注:ks.cfg若不能正常打开,确认是否有读权限
注: 若不能显示以上连接方式,确认httpd配置文件中,是否开启相关选项。
至此,PXE服务器环境部署完成,出现问题时,一般需要查看系统日志,如:/var/log/messages, 通过日志报错信息进行解决 。
centos PXE环境测试,安装,启动
部署环境 :vmware 虚拟机
PXE服务器: PXE, ip :192.168.4.150
PXE client : vm
实验:
一、配置PXE client 客户端 ,网络需与PXE服务器处于同一网段 192.168.4.150 /24
二、选择开机启动顺序,选择"Network boot from Intel E1000"
三、pxe client获取dhcp地址后 ,获取pxelinux.cfg中配置文件
四、加载内核和根文件系统
五、安装networkmanager ,创建磁盘分区
六、检查包依赖关系,并安装程序。
七、完成安装,重启 ,进入登录界面
至此,pxe 服务器端 部署完成 ,并成功自动化安装pxeclient 端 。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- MySQL主从复制搭建及详解
- MongoDB分片群集搭建入门详解
- laravel开发环境homestead搭建详解
- MongoDB 副本集搭建与管理详解
- NFS网络文件存储系统搭建配置详解
- SQL Server搭建网站实例图文详解
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Rationality for Mortals
Gerd Gigerenzer / Oxford University Press, USA / 2008-05-02 / USD 65.00
Gerd Gigerenzer's influential work examines the rationality of individuals not from the perspective of logic or probability, but from the point of view of adaptation to the real world of human behavio......一起来看看 《Rationality for Mortals》 这本书的介绍吧!