linux环境搭建和部署,PXE批量部署Linux之一:原理和最简环境搭建

思路和WDS部署windows一样,支持PXE启动的网卡从DHCP服务器获得IP、下一跳TFTP服务器地址和网络引导程序。引导程序从TFTP服务器读取配置文件,并下载kernel和其它文件。红帽系使用kickstart自动应答安装过程中选项从而实现0接触部署。

TFTP使用UDP协议69端口实现最小开销的文件传输,因消耗系统资源少常用于打印机、路由器或小内存嵌入式设备,PXE部署过程中主要用来传输NBP即网络启动文件。

我们先在传统BIOS平台上搭建一个最简环境:关闭防火墙,停用selinux,只安装/配置两个工具。用dnsmasq承担DHCP/TFTP功能,FTP承担大文件传输。后续的实验会陆续实现多UEFI平台、同一台p服务器部署多个不同发行版、及cabbler。

以下实验在CENTOS 7.2,kerne 3.10上完成。

[root@localhost ~]# cat /etc/redhat-release

CentOS Linux release 7.2.1511 (Core)

[root@localhost ~]# uname -r

3.10.0-327.10.1.el7.x86_64

首先关掉防火墙

[root@localhost ~]# systemctl stop firewalld

遮盖防火墙服务,防止意外开启

[root@localhost ~]# systemctl mask firewalld

ln -s '/dev/null' '/etc/systemd/system/firewalld.service'

第二步:停用selinux

[root@localhost ~]# setenforce

usage:  setenforce [ Enforcing | Permissive | 1 | 0 ]

[root@localhost ~]# setenforce 0

重启系统

[root@localhost ~]# systemctl reboot

第三步:搭建FTP服务器,拷贝系统安装文件。

安装vsftpd

[root@localhost ~]# yum -y install vsftpd

拷贝安装光盘内所有文件到FTP共享

[root@localhost ~]# cp -rv /mnt/iso/centos/71/ /var/ftp/pub/iso/centos/

启用ftp服务

[root@localhost ~]# systemctl restart vsftpd.service

确认匿名用户可以访问FTP公开目录

0818b9ca8b590ca3270a3433284dd417.png

第四部:搭建DHCP/TFTP服务器。

安装dnsmasq

[root@localhost ~]# yum -y install dnsmasq

编辑配置文件,指定DHCP参数。

这儿如果NBP文件没有放在上TFTP根目录下面,比如 /var/lib/tftpboot/lab

则dhcp-boot项需写为 lab/pxelinux.0。

[root@localhost ~]# cat /etc/dnsmasq.conf

interface=eth0,lo #指定DHCP监听的网卡

#bind-interfaces

domain=it.lab

# DHCP range-leases

dhcp-range= eth0,192.168.254.100,192.168.254.254,255.255.255.0,1h #DHCP地址范围

# PXE

dhcp-boot=pxelinux.0,pxeserver,192.168.254.2 #NBP文件名,TFTP服务器地址

# Gateway

dhcp-option=3,192.168.254.2

# DNS

dhcp-option=6,192.168.254.2

server=192.168.254.2

# Broadcast Address

dhcp-option=28,10.0.0.255

# NTP Server

dhcp-option=42,0.0.0.0

#pxe-prompt="Press F8 for menu.", 10

#pxe-service=x86PC, "Install CentOS 7 from network server 192.168.254.2", pxelinux

enable-tftp     #启用TFTP服务

tftp-root=/var/lib/tftpboot #TFTP主目录

第五步:准备TFTP目录和文件。

安装syslinux获得nbp文件pxelinux.0

[root@localhost ~]# yum -y install syslinux

拷贝nbp文件到tftp根目录。

注意:后续配置文件的路径都是以nbp文件在的目录为根,多级目录的文件需要加和nbp同级目录的前缀。比如pxelinux.0所在目录为根目录 /var/lib/tftpboot,内核文件我们按照不同的发行版本整理,centos/71/vmlinuz,指定内核文件时我们就需要写成centos/7/vmlinuz。

[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

PXE客户端从DHCP服务器获取到IP,TFTP服务器地址和NBP文件后就会使用内置的TFTP客户端和TFTP服务器通讯下载NBP文件,NBP文件直接加载进内存执行。具体到这里就是pxelinux.0,这个引导程序从到TFTP服务器和自己同级目录下寻找pxelinux.cfg目录并读取配置文件。

创建pxelinux.cfg,此目录一定要放在和pxelinux.0同一级目录的位置。

[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg

pxelinux.0在pxelinux.cfg目录下首先寻找UUID对应的文件,找不到再是01跟自己的MAC地址同名的文件,如果还找不到就是16进制的IP地址同名的文件,都找不到的话会去寻找default文件。

我们可以从下面的log看到detail的信息。

sent /var/lib/tftpboot/pxelinux.0 to 192.168.254.227

file /var/lib/tftpboot/pxelinux.cfg/e5be4c55-d319-4649-8fbe-1576397361dc not found

file /var/lib/tftpboot/pxelinux.cfg/01-00-15-5d-01-65-3f not found

file /var/lib/tftpboot/pxelinux.cfg/C0A8FEE3 not found

file /var/lib/tftpboot/pxelinux.cfg/C0A8FEE not found

file /var/lib/tftpboot/pxelinux.cfg/C0A8FE not found

file /var/lib/tftpboot/pxelinux.cfg/C0A8F not found

file /var/lib/tftpboot/pxelinux.cfg/C0A8 not found

file /var/lib/tftpboot/pxelinux.cfg/C0A not found

file /var/lib/tftpboot/pxelinux.cfg/C0 not found

file /var/lib/tftpboot/pxelinux.cfg/C not found

sent /var/lib/tftpboot/pxelinux.cfg/default to 192.168.254.227

编辑配置文件

[root@localhost ~]# cat /var/lib/tftpboot/pxelinux.cfg/default

default vesamenu.c32    #PXE启动时绘制界面

prompt 0        #0不显示boot提示符 1会有boot提示符

timeout 60          #无操作超时时间

display boot.msg

menu background splash.jpg #界面背景图片,后面有一篇翻译的博文详细介绍如果自定义制作此文件

menu title Welcome to IT Lab PXE Linux !#菜单栏标题

menu color border 0 #ffffffff #00000000

menu color sel 7 #ffffffff #ff000000

menu color title 0 #ffffffff #00000000

menu color tabmsg 0 #ffffffff #00000000

menu color unsel 0 #ffffffff #00000000

menu color hotsel 0 #ff000000 #ffffffff

menu color hotkey 7 #ffffffff #ff000000

menu color scrollbar 0 #ffffffff #00000000

label 1    #第一个选单

menu default  #无选择时默认启动菜单

menu label ^1) Install CentOS 7 x64 with Local Repo #菜单名字

kernel centos/71/vmlinuz #指定下载的内核路径

append initrd=centos/71/initrd.img inst.repo=ftp://192.168.254.2/pub/iso/centos/71 inst.ks=ftp://192.168.254.2/pub/ks/centos/71/co.cfg #指定initrd镜像路径和内核参数

拷贝PXE启动需要的文件到TFTP目录

[root@localhost ~]# cp /var/ftp/pub/iso/centos/71/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/centos/71/

[root@localhost ~]# cp /var/ftp/pub/iso/centos/71/isolinux/{vesamenu.c32,splash.png} /var/lib/tftpboot/

修改TFTP共享文件权限为755

[root@localhost ~]# chmod -Rv 755 /var/lib/tftpboot/

理好的目录是这样的。

[root@localhost ~]# tree /var/lib/tftpboot/

/var/lib/tftpboot/

├── centos

│   ├── 63

│   │   ├── initrd.img

│   │   └── vmlinuz

│   ├── 66

│   │   ├── initrd.img

│   │   └── vmlinuz

│   └── 71

│       ├── initrd.img

│       └── vmlinuz

├── pxelinux.0

├── pxelinux.cfg

│   └── default

├── splash.jpg

└── vesamenu.c32

NBP下载内核文件释放到内存,内核开始接管操作系统控制权限,内核根据指定的参数进行下一步任务。

红帽使用kickstart自动应答安装过程的参数。kickstart文件可从~root/anaconda-ks.cfg复制修改也可使用图形界面工具system-config-kickstart生成。

system-config-kickstart.noarch : A graphical interface for making kickstart files

编辑kickstart文件

[root@localhost ~]# cat /var/ftp/pub/ks/centos/71/co.cfg

#version=RHEL7

# System authorization information

auth --enableshadow --passalgo=sha512

# Use text install

text    #使用字符化界面安装

ignoredisk --only-use=sda    #只使用发现的第一块硬盘

# Keyboard layouts

keyboard --vckeymap=us --xlayouts='us'#键盘布局

# System language

lang en_US.UTF-8    #语言

reboot    #安装完成后自动重启

# Network information

#network  --bootproto=dhcp --device=eth0 --onboot=off --ipv6=auto

#network  --bootproto=dhcp --device=eth1 --onboot=off --ipv6=auto

#network  --hostname=localhost.localdomain

# Root password centos

rootpw --iscrypted $6$0QkjgF3KxsOAQ/xW$22aDZoYi.5fSWNqvPQn/VJEMWRKNcgmsWUjIrBYH4x/sXUQQ5eT1zew7LPTGi3OJE8SaX8tx/OQUWt2r3Loxb1

# System timezone

timezone Asia/ShangHai --isUtc    #时区

# System bootloader configuration

bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda    #MBR安装位置

autopart --type=lvm   #lvm格式自动分区,无此参数安装会卡在硬盘分区

# Partition clearing information

clearpart --all --initlabel    #删除所有已有分区

zerombr    #删除原有MBR记录

%packages    #安装包选项

@core    #最小化安装

bash-completion    #增强bash TAB补全功能,不仅能补全命令,也能补全命令参数

vim-enhanced    #VIM

%end    #

%addon com_redhat_kdump --enable --reserve-mb='auto'

%end

第六步:启用服务,开始调试

[root@localhost ~]# systemctl enable dnsmasq

[root@localhost ~]# systemctl enable vsftpd

[root@localhost ~]# systemctl restart dnsmasq

[root@localhost ~]# systemctl restart vsftpd

[root@localhost ~]# journalctl -f

0818b9ca8b590ca3270a3433284dd417.png

后面的界面和普通装linux就很类似了

0818b9ca8b590ca3270a3433284dd417.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值