关于pxeboot的一些基本理解

pxe的基本概念

首先,pxeboot是一种网络引导安装操作系统的方式,要进行pxeboot首先就是要有一块支持pxeboot的网卡(network interface card NIC),pxeboot(pre-boot Execution Enviroment boot) 。pxeboot是Intel率先提出且做出来的,在台式机开始流行起来的一个阶段。购买intel的较新网卡都会带有pxeboot的功能。

pxe的基本原理

pxe协议分为client和server端,pxe client在网卡的rom中,当计算机引导时,bios会把pxe client调入内存执行,由pxe client将放置在远端的文件通过网络下载到本地运行。

运行pxeboot需要设置dhcp服务器和tftp服务器,dhcp服务器是用来给主机分配一个ip地址,而tftp服务器则是提供了简单文件传输协议来提供引导镜像文件的下载。

执行 初始化操作 使用的是initrd  命令。 initrd 的英文含义是 boot loader iniTIalized RAM disk,就是由 boot loader 初始化的内存盘。在 linux内核启动前, boot loader 会将存储介质中的 initrd 文件加载到内存,内核启动时会在访问真正的文件系统前先访问该内存中的 initrd 文件系统


实现dhcp tftp 等服务,我们只需要Dnsmasq 工具即可 它集成了上述服务。

dnsmasq.conf 中配置

# 不加载本地的 /etc/hosts 文件

#no-hosts

# 添加读取额外的 hosts 文件路径,可以多次指定。如果指定为目录,则读取目录中的所有文件。

#addn-hosts=/etc/dnsmasq.hosts.d

# 读取目录中的所有文件,文件更新将自动读取

#hostsdir=/etc/dnsmasq.hosts.d

# 例如,/etc/hosts中的os01将扩展成os01.example.com

#expand-hosts



##############################################################################

# 缓存时间设置,一般不需要设置

# 本地 hosts 文件的缓存时间,通常不要求缓存本地,这样更改hosts文件后就即时生效。

#local-ttl=3600

# 同 local-ttl 仅影响 DHCP 租约

#dhcp-ttl=
[,] #add-mac[=base64|text] #add-cpe-id= #add-subnet[[=[/]][,[/]]] ############################################################################## ############################################################################## # 缓存条数,默认为150条,cache-size=0 禁用缓存。 cache-size=1000 # 不缓存未知域名缓存,默认情况下dnsmasq缓存未知域名并直接返回为客户端。 no-negcache # 指定DNS同属查询转发数量 dns-forward-max=1000 ############################################################################## #dnssec #trust-anchor=[],,,,, #dnssec-check-unsigned #dnssec-no-timecheck #dnssec-timestamp= #proxy-dnssec #dnssec-debug ############################################################################## #auth-server=,| #auth-zone=[,[/][,[/].....]] #auth-zone=[,[/6|/4][,[/6|/4].....]] #auth-soa=[,[,[,[,]]]] #auth-sec-servers=[,[,...]] #auth-peer=[,[,...]] # 启用连接跟踪,读取 Linux 入栈 DNS 查询请求的连接跟踪标记, # 并且将上游返回的响应信息设置同样的标记。 # 用于带宽控制和防火墙部署。 # 此选项必须在编译时启用 conntrack 支持,并且内核正确配置并加载 conntrack。 # 此选项不能与 query-port 同时使用。 #conntrack ############################################################################## # # DHCP 选项 # ############################################################################## # 设置 DHCP 地址池,同时启用 DHCP 功能。 # IPv4 可指定为 static|proxy ,当 指定为 static 时, # 需用 dhcp-host 手动分配地址池中的 IP 地址。 # 当 指定为 proxy 时,为指定的地址池提供 DHCP 代理。 #dhcp-range=[tag:[,tag:],][set:,][,][,][,[,]][,] #dhcp-range=172.16.0.2,172.16.0.250,255.255.255.0,1h #dhcp-range=192.168.10.150,192.168.10.180,static,255.255.255.0,1h # 根据 MAC 地址或 id 固定分配客户端的 IP 地址、主机名、租期。 # IPv4 下指定 id:* 将忽略 DHCP 客户端的 ID ,仅根据 MAC 来进行 IP 地址分配。 # 在读取 /etc/hosts 的情况,也可以根据 /etc/hosts 中的主机名分配对应 IP 地址。 # 指定 ignore 将忽略指定客户端得 DHCP 请求。 #dhcp-host=[][,id:|*][,set:][,][,][,][,ignore] #dhcp-hostsfile= #dhcp-hostsdir= # 读取 /etc/ethers 文件 与使用 dhcp-host 的作用相同。IPv6 无效。 #read-ethers # 指定给 DHCP 客户端的选项信息, # 默认情况下 dnsmasq 将发送:子网掩码、广播地址、DNS 服务器地址、网关地址、域等信息。 # 指定此选项也可覆盖这些默认值并且设置其他选项值。 # 重要:可以使用 option:或者 option号 来指定。 # 和 option号的对应关系可使用命令: # dnsmasq --help dhcp 以及 dnsmasq --help dhcp6 查看,这点很重要。 # 例如设置网关参数,既可以使用 dhcp-option=3,192.168.4.4 也可以使用 dhcp-option = option:router,192.168.4.4。 # 0.0.0.0 意味着当前运行 dnsmasq 的主机地址。 # 如果指定了多个 tag: 必须同时匹配才行。 # [encap:,][vi-encap:,][vendor:[],] 有待继续研究。 #dhcp-option=[tag:,[tag:,]][encap:,][vi-encap:,][vendor:[],][|option:|option6:|option6:],[[,]] #dhcp-option-force=[tag:,[tag:,]][encap:,][vi-encap:,][vendor:[],],[[,]] #dhcp-optsfile= #dhcp-optsdir= #dhcp-option=3,1.2.3.4 #dhcp-option=option:router,1.2.3.4 #dhcp-option=option:router,192.168.10.254 #dhcp-option=option:dns-server,192.168.10.254,221.12.1.227,221.12.33.227 ############################################################################## # (IPv4 only) 禁用重用服务器名称和文件字段作为额外的 dhcp-option 选项。 # 一般情况下 dnsmasq 从 dhcp-boot 移出启动服务器和文件信息到 dhcp-option 选项中。 # 这使得在 dhcp-option 选项封包中有额外的选项空间可用,但是会使老的客户端混淆。 # 此选项将强制使用简单并安全的方式来避免此类情况。可以认为是一个兼容性选项。 #dhcp-no-override ############################################################################## # 配置 DHCP 中继。 # 是运行 dnsmasq 的接口的 IP 地址。 # 所有在 接口上接收到的 DHCP 请求将中继到 指定的远程 DHCP 服务器。 # 可以多次配置此选项,使用同一个 转发到多个不同的 指定的远程 DHCP 服务器。 # 仅允许使用 IP 地址,不能使用域名等其他格式。 # 如果是 DHCPv6, 可以是 ALL_SERVERS 的多播地址 ff05::1:3 。 # 在这种情况下必须指定接口 ,不能使用通配符,用于直接多播到对应的 DHCP 服务器所在的接口。 # 指定了仅允许接收从 接口的 DHCP 服务器相应信息。 #dhcp-relay=,[,] ############################################################################## # 设置标签 #dhcp-vendorclass=set:,[enterprise:,] #dhcp-userclass=set:, #dhcp-mac=set:, #dhcp-circuitid=set:, #dhcp-remoteid=set:, #dhcp-subscrid=set:, #dhcp-match=set:,[,|][,|] # 在 PXE 启动后弹出提示, 为提示内容, 为超时时间,为 0 则立即执行。 # 如果未指定此选项,在有多个启动选项的情况下等待用户选择,不会超时。 #pxe-prompt=[tag:,][,] # 根据不同的类型使用不同的菜单,使用示例: # #pxe-prompt="What system shall I netboot?", 120 # # or with timeout before first available action is taken: # pxe-prompt="Press F8 or Enter key for menu.", 60 # pxe-service=x86PC, "Now in x86PC (BIOS mode), boot from local", 0 # pxe-service=x86PC, "Now in x86PC (BIOS mode)", pxelinux # pxe-service=PC98, "Now in PC98 mode", PC98 # pxe-service=IA64_EFI, "Now in IA64_EFI mode", IA64_EFI # pxe-service=Alpha, "Now in Alpha mode", Alpha # pxe-service=Arc_x86, "Now in Arc_x86 mode", Arc_x86 # pxe-service=Intel_Lean_Client, "Now in Intel_Lean_Client mode", Intel_Lean_Client # pxe-service=IA32_EFI, "Now in IA32_EFI mode", IA32_EFI # pxe-service=X86-64_EFI, "Now in X86-64_EFI (UEFI mode), boot from local", 0 # pxe-service=X86-64_EFI, "Now in X86-64_EFI (UEFI mode)", grub/grub-x86_64.efi # pxe-service=Xscale_EFI, "Now in Xscale_EFI mode", Xscale_EFI # pxe-service=BC_EFI, "Now in BC_EFI mode", BC_EFI # # CentOS7 系统不支持下列两个选项 # #pxe-service=ARM32_EFI,"Now in ARM32_EFI mode",ARM32_EFI # #pxe-service=ARM64_EFI,"Now in ARM64_EFI mode",ARM64_EFI ############################################################################## # 默认为150,即最多分配150个ip地址出去,最大1000个ip #dhcp-lease-max=150 # (IPv4 only) 指定DHCP端口,默认为67和68。如果不指定则为1067和1068,单指定一个,第二个加1 #dhcp-alternate-port[=[,]] # 谨慎使用此选项,避免 IP 地址浪费。(IPv4 only) 允许动态分配 IP 地址给 BOOTP 客户端。 # 注意:BOOTP 客户端获取的 IP 地址是永久的,将无法再次分配给其他客户端。 #bootp-dynamic[=[,]] # 谨慎使用此选项。 # 默认情况下 DHCP 服务器使用 ping 的方式进行确保 IP 未被使用的情况下将 IP 地址分配出去。 # 启用此选项将不使用 ping 进行确认。 #no-ping ############################################################################## # 记录额外的 dhcp 日志,记录所有发送给 DHCP 客户端的选项(option)以及标签(tag)信息 #log-dhcp # 禁止记录日常操作日志,错误日志仍然记录。启用 log-dhcp 将覆盖下列选项。 #quiet-dhcp #quiet-dhcp6 #quiet-ra # 修改 DHCP 默认租约文件路径,默认情况下无需修改 #dhcp-leasefile=/var/lib/dnsmasq/dnsmasq.leases # (IPv6 only) #dhcp-duid=, ############################################################################## #dhcp-script= #dhcp-luascript= #dhcp-scriptuser=root #script-arp #leasefile-ro #bridge-interface=,[,] ############################################################################## # 给 DHCP 服务器指定 domain 域名信息,也可以给对应的 IP 地址池指定域名。 # 直接指定域名 # 示例:domain=thekelleys.org.uk # 子网对应的域名 # 示例:domain=wireless.thekelleys.org.uk,192.168.2.0/24 # ip范围对应的域名 # 示例:domain=reserved.thekelleys.org.uk,192.68.3.100,192.168.3.200 #domain=[,
[,local]] # 在默认情况下 dnsmasq 插入普通的客户端主机名到 DNS 中。 # 在这种情况下主机名必须唯一,即使两个客户端具有不同的域名后缀。 # 如果第二个客户端使用了相同的主机名,DNS 查询将自动更新为第二个客户端的 IP 地址。 # 如果设置了 dhcp-fqdn 选项,普通的主机名将不再插入到 DNS 中去, # 仅允许合格的具有域名后缀的主机名插入到 DNS 服务器中。 # 指定此选项需同时指定不含
地址范围的 domain 选项。 #dhcp-fqdn # 通常情况下分配 DHCP 租约后,dnsmasq 设置 FQDN 选项告诉客户端不要尝试 DDNS 更新主机名与 IP 地址。 # 这是因为 name-IP 已自动添加到 dnsmasq 的 DNS 视图中的。 # 设置此选项将允许客户端 DDNS 更新, # 在 windows 下允许客户端更新 windows AD 服务器是非常有用的。 # 参看 RFC 4702 。 #dhcp-client-update #enable-ra #ra-param=,[high|low],[[],] ############################################################################## # # TFTP 选项 # ############################################################################## # 对于绝大多数的配置,仅需指定 enable-tftp 和 tftp-root 选项即可。 # 是否启用内置的 tftp 服务器,可以指定多个逗号分隔的网络接口 #enable-tftp[=[,]] #enable-tftp #enable-tftp=enp3s0,lo # 指定 tftp 的根目录,也就是寻找传输文件时使用的相对路径,可以附加接口, #tftp-root=[,] #tftp-root=/var/lib/tftpboot/ # 如果取消注释,那么即使指定的 tftp-root 无法访问,仍然启动 tftp 服务。 #tftp-no-fail # 附加客户端的 IP 地址作为文件路径。此选项仅在正确设置了 tftp-root 的情况下可用, # 示例:如果 tftp-root=/tftp,客户端为 192.168.1.15 请求 myfile.txt 文件时, # 将优先请求 /tftp/192.168.1.15/myfile.txt 文件, 其次是 /tftp/myfile.txt 文件。 # 感觉没什么用。 #tftp-unique-root # 启用安全模式,启用此选项,仅允许 tftp 进程访问属主为自己的文件。 # 不启用此选项,允许访问所有 tftp 进程属主可读取的文件。 # 如果 dnsmasq 是以 root 用户运行,tftp-secure 选项将允许访问全局可读的文件。 # 一般情况下不推荐以 root 用户运行 dnsmasq。 # 在指定了 tftp-root 的情况下并不是很重要。 #tftp-secure # 将所有文件请求转换为小写。对于 Windows 客户端来说非常有用,建议开启此项。 # 注意:dnsmasq 的 TFTP 服务器总是将文件路径中的“\”转换为“/”。 #tftp-lowercase # 允许最大的连接数,默认为 50 。 # 如果将连接数设置的很大,需注意每个进程的最大文件描述符限制,详见文档手册。 #tftp-max= #tftp-max=50 # 设置传输时的 MTU 值,建议不设置或按需设置。 # 如果设定的值大于网络接口的 MTU 值,将按照网络接口的 MTU 值自动分片传输(不推荐)。 #tftp-mtu= # 停止 tftp 服务器与客户端协商 "blocksize" 选项。启用后,防止一些古怪的客户端出问题。 #tftp-no-blocksize # 指定 tftp 的连接端口的范围,方便防火墙部署。 # tftp 侦听在 69/udp ,连接端口默认是由系统自动分配的, # 非 root 用户运行时指定的连接端口号需大于 1025 最大 65535。 #tftp-port-range=, ############################################################################### #conf-dir=[,......] #conf-file=/etc/dnsmasq.more.conf conf-dir=/etc/dnsmasq.d #servers-file=

引用自:关于pxeboot的一些基本理解_韩xinwu的博客-CSDN博客

 https://www.jianshu.com/p/3904f9ea36c1

[技术干货]深入理解Linux2.6内核的Initrd机制解析 - 知乎

你可能感兴趣的:(LINUX,操作系统,网络,服务器)