Linux pex自动化安装

Linux pex自动化安装

pxe

  • 什么是pxe?

PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端(客户端)基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE可以简单快速引导多种操作系统。

  • pxe的工作流程

首先客户端向DHCP服务器请求ip地址
DHCP服务器检查客户端是否为合法的dhcp请求
检查成功收返回ip地址和引导程序(pxelinux.0)给客户端
客户端向TFTP服务器请求引导程序
TFTP服务器向客户端发送引导文件的大小信息,是否接受
客户端向TFTP服务器发送接受的意思
TFTP服务器向客户端发送引导文件
客户端执行引导文件
客户端向TFTP服务器请求配置文件(在pxelinux.cfg下)
TFTP服务器向客户端发送配置文件
客户端读取配置文件进行后续操作
客户端向TFTP服务器请求Linux内核
TFTP服务器向客户端发送Linux内核
客户端向TFTP服务器请求Linux根文件系统
TFTP服务器向客户端发送Linux根文件系统
客户端启动Linux内核
客户端安装源文件,运行自动化脚本
  • 环境准备

1.首先准备任意版本的ISO镜像文件,挂载镜像
2.配置好yum源

vim /etc/yum.repos.d/xxx

3.根据自己ip地址配置静态ip

vim /etc/sysconfig/network-scripts/ifcfg-ens xx

4.关闭防火墙

iptables -F
systemctl stop firewalld
systemctl disable firewalld
setenforce 0

5.禁用selinux

vim /etc/selinux/config
SELINUX=permissive
重启生效

6.安装包

yum -y install dhcp tftp-server httpd syslinux

7.设置开机启动

systemctl enable dhcpd.service tftp.service httpd

8.启动服务

systemctl start tftp
systemctl start httpd
  • 配置DHCP服务


1.查询DHCP相关文件
[root@Cyw ~]# rpm -ql dhcp
/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example
/usr/share/doc/dhcp-4.2.5/dhcpd6.conf.example
这两个是配置文件模板
2.修改配置文件
[root@Cyw ~]# cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
[root@Cyw ~]# vim /etc/dhcp/dhcpd.conf
option domain-name "xxxx.xxx";   选择域名
option domain-name-servers 114.114.114.114,223.6.6.6;   选择服务器DNS地址
option routers 192.168.xxx.x; 加一项网关地址
default-lease-time 600; 默认租期(s)
max-lease-time 7200;  最大租期
上面这一项是全局设置,下面这个是定向设置
subnet 192.168.x.0 netmask 255.255.255.0 {     ip地址为子网的地址
         range 192.168.x.180 192.168.x.200; 分配地址Ip范围
         option routers 192.168.x.1; 网关设置
         option domain-name-servers 223.5.5.5,223.6.6.6; 服务器DNS地址
         filename "pxelinux.0"; 指定引导文件名称
         next-server 192.168.x.xxx; 引导文件服务器的ip地址
}
中间打x是你根据你本地的地址来填,这点就不需要多解释把。
注意所有配置需要在结尾加上分号,不然会出问题;
3.启动服务
[root@Cyw ~]# systemctl start dhcpd.service
[root@Cyw ~]# systemctl enable dhcpd.service
  • 准备yum安装源和kickstart文件

yum源文件是放在http服务器上的,由http服务来提供,把相应的文件复制到http服务器上。因为安装系统的版本不同,所以准备源文件要准备不同系统不同版本的文件。
有两种方法实现yum源的提供;1. 挂载光盘之后将光盘里里的文件全部复制到对应目录下(自己创建一个文件,/var/www/html/xxxxxxx里);2. 虚拟机创建2个光驱,将镜像分别挂载到/var/www/html/xxxxxx里。

创建规划目录,挂载镜像
[root@Cyw ~]# mkdir /var/www/html/ce7ntos7   创建目录
[root@Cyw ~]# mount /dev/sr0/ /var/www/html/centos7   挂载镜像
[root@Cyw ~]# mkdir /var/www/html/ks   创建目录
[root@Cyw ~]# cp /root/anaconda-ks.cfg /var/www/html/ks/centos7.cfg    
这个是我们系统安装完毕后的一个ks文件复制过来,改个名修改一下就可以了
[root@Cyw ~]# chmod a+r /var/www/html/ks/centos7.cfg   默认600权限,给加上所以用户读权限
[root@Cyw ~]# vim /var/www/html/ks/centos7.cfg   修改文件

#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
cdrom     将这里改为:  url --url=http://192.168.x.xxx/centos7 (指向yum源地址)
# Use graphical install
graphical   将这里修改为text,我们不是基于光盘安装的,我们是基于字符界面安装 
# Run the Setup Agent on first boot
firstboot --enable     是否运行初始化不运行改为--disable
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=off --ipv6=auto --activate    
这里网卡是默认禁用了,把off改为on就启动了。
network  --bootproto=dhcp --device=ens34 --ipv6=auto --activate    
因为我自己是创建了2个网卡,一个桥接一个仅主机,根据个人删除或添加,新机器建议一个网卡就够了。
network  --hostname=Cyw.ceshi  这是主机名可自行修改,也可以不设

# Root password
rootpw --iscrypted $6$/WVUOd8TN8w8inM3$mKVUOAlXAShZyIGJFtStdqxuA0ij9tYrZHTQ/T2NjOgHZgEXK
anGAVGP63ogT47XkWpYZ2vMl3RT2WgoSrNGF/   这个是root口令,跟当前系统一样。
# System services
services --disabled="chronyd"
# System timezone
timezone Asia/Shanghai --isUtc --nontp     时区上海
user --name=wanganzhi200 --password=$6$cPWzYceEuqlBA8Z4$GmN9Oqa/RY5p52pzOgSnjh/4Yzx4Fd6O
9NBVBOTJvN/y2HpmM34tWa37u5N6jlq1LrMFFI3heSnGcY.z4tS4s1 --iscrypted --gecos="wanganzhi200"  
创建一个新用户并设置密码
# X Window System configuration information 
xconfig --startxonboot
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
# Partition clearing information
zerombr       添加zerombr,表示清除旧磁盘上原有的mbr,新磁盘安装可不写
clearpart --all  --initlabel  # --all 表示清除所以分区信息,新磁盘可不写
# Disk partitioning information
part /boot --fstype="xfs" --ondisk=sda --size=1024
part pv.252 --fstype="lvmpv" --ondisk=sda --size=29695
volgroup centos --pesize=4096 pv.252
logvol /app  --fstype="xfs" --size=19451 --name=app --vgname=centos
logvol /  --fstype="xfs" --size=10240 --name=root --vgname=centos
reboot   添加一个reboot,安装完成后重启
磁盘分区信息

%packages
@^minimal
@compat-libraries
@core
@debugging
@development
@security-tools
@smart-card
kexec-tools
   这里是默认安装什么包,我这里是最小化安装,所以很少,你有需求自己添加
%end

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

%end
            # 这里可以添加脚本,例如加个yum源脚本,安装完后自动配置yum源。
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end

上面就是引导文件的安装流程了,具体也解释的很多了,根据你个人有什么需求在自行更改。

  • 完善内核文件和菜单文件

现在我们来配置tftp,之前启动了,但是么有在目录下配置文件,现在我们来配置。

1.创建pxelinux.cfg文件夹
[root@Cyw ~]# mkdir /var/lib/tftpboot/pexlinux.cfg
2.复制isolinux.cfg并改名(菜单文件)
[root@Cyw~]#cp /var/www/html/centos7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
3.复制菜单风格
[root@Cyw ~]# cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/
4.pxelinux文件来自syslinux包,直接复制即可
[root@Cyw ~]# cp /usr/share/sysliunx/pxelinux.0 /var/lib/tftpboot
5.复制内核文件
[root@Cyw ~]# cp /var/www/html/centos7/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/
6.查看目录
[root@Cyw ~]# tree/var/lib/tftpboot/
/var/lib/tftpboot/
├── initrd.img
├── menu.c32
├── pxelinux.0
├── pxelinux.cfg
│   └── default
└── vmlinuz

现在目录已经完善了,现在需要更改菜单文件default。

7.修改菜单文件
[root@Cyw ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32
timeout 600

menu title PXE CentOS Linux 7 Install Menu
label automini
  menu label ^Automatic Mini Install CentOS Linux 7
  kernel vmlinuz
  append initrd=initrd.img ks=http://192.168.x.xxx/ks/CentOS7 #应答文件地址

label check
  menu label Boot from  ^Local Drivers
  menu default
  localboot 0xffff

就这样配置就行了
8.测试

(1)重启服务

[root@Cyw ~]# systemctl restart dhcpd
[root@Cyw ~]# systemctl restart tftp

(2)测试

创建一台虚拟机

在这里插入图片描述

选择典型然后点击稍后安装操作系统,硬盘大小根据你在ks文件中填写的大小,网卡设置要跟你服务器主机所在网段相同,仅主机就是仅主机,桥接就桥接,然后开机。

选择刚刚配置的菜单选项mini,然后等待安装即可,centos7的内存大小注意要超过1G,不然有些莫名其妙的错误。

  • 不同版本安装


支持多个不同系统版本安装

前面的步骤我就不在说了,最后结构如下。
[root@Cyw ~]# tree /var/lib/tftpboot/
/var/lib/tftpboot/
├── centos6
├───── initrd.img
│     └── vmlinuz
├── centos7
├─────  initrd.img
│     └── vmlinuz
├── menu.c32
├── pxelinux.0
└── pxelinux.cfg
└───── default

[root@Cyw ~]# vim /var/lib/tftpboot/pxelinux.cfg/default 

default menu.c32
timeout 600

menu title PXE CentOS Linux 7 and 6  Install Menu
label autocentos7
  menu label ^Automatic Mini Install CentOS 7
  kernel centos7/vmlinuz
  append initrd=centos7/initrd.img ks=http://192.168.x.xxx/ks/centos7.cfg
label autocentos6
  menu label Automatic ^Desktop Install CentOS 6
  kernel centos6/vmlinuz
  append initrd=centos6/initrd.img ks=http://192.168.x.xxx/ks/centos6.cfg
label manual
  menu label ^Manual Install CentOS 7
  kernel vmlinuz
  append initrd=initrd.img
label local
  menu label Boot from ^local drive
  menu default
  localboot 0xffff

在这里插入图片描述

选择你要装的系统

  • 总结

在学习过程中会碰到无数的问题,碰见问题不可怕,因为在学习中,测试环境下,你碰见问题可以去积累经验,Goodle解决,加深印象,如果没有问题你只会觉得很简单,过不了多久你就会忘记。
愿你不忘初心,方能始终。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值