PXE+kickstart自动部署linux操作系统

  1. 安装前准备

[ root@vinsent ~ ]#iptables -F     # 关闭防火墙

[ root@vinsent ~ ]#setenforce 0     # 临时关闭selinux

[ root@vinsent ~ ]#vim /etc/selinux/config     # 修改文件永久关闭selinux

...前面省略

SELINUX=disabled                 # 设置SELINUX的值为disabled

...后面省略

  1. DHCP服务器配置静态IP

[ root@vinsent ~ ]#vim /etc/sysconfig/network-scripts/ifcfg-ens33  # 设置静态IP

TYPE="Ethernet"

BOOTPROTO="none"

DEFROUTE="yes"

IPV4_FAILURE_FATAL="no"

IPV6INIT="yes"

IPV6_AUTOCONF="yes"

IPV6_DEFROUTE="yes"

IPV6_FAILURE_FATAL="no"

NAME="eth0"

UUID="a45f60f6-2b53-4368-97da-6eea0c61d7fc"

DEVICE="eno16777736"

ONBOOT="yes"

IPADDR="192.168.65.130"

PREFIX="24"

GATEWAY="192.168.65.2"

DNS1="114.114.114.114"

IPV6_PEERDNS="yes"

IPV6_PEERROUTES="yes"

IPV6_PRIVACY="no"

[ root@vinsent ~ ]#systemctl restart network.service     #重启网络服务

  1. 安装服务

[ root@vinsent ~ ]#yum -y install dhcp tftp-server httpd syslimux  #安装相应的服务包

[ root@vinsent ~ ]#yum -y install xinetd             # 安装超级守护进程xinetd

[ root@vinsent ~ ]#systemctl enable dhcp             # 设置dhcp开机启动

[ root@vinsent ~ ]#systemctl enable tftp             # 设置tftp开机启动

[ root@vinsent ~ ]#systemctl start tftp              # 启动tftp服务

[ root@vinsent ~ ]#systemctl enable httpd            

[ root@vinsent ~ ]#systemctl start httpd             # 启动http服务

[ root@vinsent ~ ]#chkconfig tftp on     # 如果这天命令不能使用,请修改配置文件

[ root@vinsent ~ ]#vim /etc/xinetd.d/tftp

service tftp

{

...

    disable     =yes         # 修改这一项为"disable     =no"

...

}

[ root@vinsent ~ ]#systemctl restart xinetd     # 修改之后,一定要重启xinetd服务(thfp守护进程)

  1. 配置DHCP服务器

[ root@vinsent ~ ]#rpm -ql dhcp         # 查询dhcp相关的文件

...前面省略

/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example

/usr/share/doc/dhcp-4.2.5/dhcpd6.conf.example

...后面省略

[ root@vinsent ~ ]#cd /etc/dhcp/

[ root@vinsent ~ ]#cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example .   # 复制模板配置文件

[ root@vinsent ~ ]#mv dhcpd.conf.example dhcpd.conf     # 改名为dhcpd.conf,顶替以前的配置文件

[ root@vinsent ~ ] #vim dhcpd.conf

option domain-name "pxe";

option domain-name-servers 114.114.114.114;

 

default-lease-time 600;

max-lease-time 7200;

 

log-facility local7;

 

 

subnet 192.168.65.0 netmask 255.255.255.0 {             #这里写的ip地址为子网的地址,故为192.168.65.0

  range 192.168.65.131 192.168.65.200;    # 子网的范围,之后主机请求获取的ip地址就是这其中的一个

  option routers 192.168.65.2;    #子网网关

  next-server 192.168.65.130; # 指明tftp服务器的地址

  filename "pxelinux.0"; # 指明PXE文件位置,这个在申请ip的时候会发送给安装主机

 

}

[ root@vinsent ~ ]#systemctl dhcpd start     # 重启服务

  1. 准备yum源文件及kickstart文件

我们规划好了目录结构,接下来便是创建这些目录结构,并提供相应的文件。

[ root@vinsent ~ ]#cd /var/www/html

[ root@vinsent html ]#mkdir -p centos/{6,7}

[ root@vinsent html ]#mkdir ksdir

然后将centos的ISO镜像挂载到相应目录

接下来准备ksdir目录下的安装引导文件ks#.cfg。ks#.cfg文件的获取方法有两种,一种是通过工具来生成。不过这个工具需要自己安装:

[ root@vinsent ~ ]#yum  install -y system-config-kickstart

[ root@vinsent ~ ]#system-config-kickstart

指定时区Asia/Shanghai、设置root用户密码、指定安装后重新启动

https://i-blog.csdnimg.cn/blog_migrate/0707f410cb468c3c055cc3d31577ca09.png

指定安装源http://192.168.65.130/centos/7

在MBR上安装新的引导装载程序

https://i-blog.csdnimg.cn/blog_migrate/718ea4c916ce18ca07231c33e20a9198.png

创建必要分区/,/boot,swap,并清除主引导记录、删除所有现存分区、初始化磁盘标签

根目录使用剩余所有空间

https://i-blog.csdnimg.cn/blog_migrate/9e69c54c2d589231ed35dc8ba9c22ac9.png

添加网卡eth0

https://i-blog.csdnimg.cn/blog_migrate/4202d38f65e6724fab2bc2a72a37beb3.png

Authentication不需要修改,禁用firewalld

https://i-blog.csdnimg.cn/blog_migrate/b3a65aaf25d8749bb6b44957077c36f5.png

安装图形界面

Package Selection项会报错,需要手动在生成的ks.cfg文件中指定

Pre-Installation Script & Post-Installation Script 为系统安装前后要指定系统运行的脚本,没有可以不填

一般可以在Post-Installation Script中提前配置YUM源或相关服务

配置完成后点击左上角的File进行保存

[root@foundation76 ~]# vim /var/www/html/ksdir/ks7.cfg  #在末尾指定需要安装的软件包

#platform=x86, AMD64, or Intel EM64T

#version=DEVEL

# Install OS instead of upgrade

install

# Keyboard layouts

keyboard 'us'

# Root password

rootpw --iscrypted $1$dE1VLq9Y$bVjWp.OjjKJnSBJti.9Lx/

# System timezone

timezone Asia/Shanghai

# Use network installation

url --url="http://192.168.65.130/centos/7"

# System language

lang en_US

# Firewall configuration

firewall --disabled

# System authorization information

auth  --useshadow  --passalgo=sha512

# Use graphical install

graphical

firstboot --disable

# SELinux configuration

selinux --disabled

 

# Network information

network  --bootproto=dhcp --device=eth0

# Reboot after installation

reboot

# System bootloader configuration

bootloader --location=mbr

# Clear the Master Boot Record

zerombr

# Partition clearing information

clearpart --all --initlabel

# Disk partitioning information

part /boot --fstype="xfs" --size=500

part swap --fstype="swap" --size=10240

part / --fstype="xfs" --grow --size=1

#Packages selection

%packages

@^graphical-server-environment

@base

@core

@desktop-debugging

@dial-up

@fonts

@gnome-desktop

@guest-agents

@guest-desktop-agents

@hardware-monitoring

@input-methods

@internet-browser

@multimedia

@print-client

@x11

kexec-tools

autofs

lftp

%end

  1. 准备内核文件菜单文件

内核文件、虚拟根文件以及菜单文件,我们都是通过tftp服务来提供的,由于系统及版本的不同,对于一个比较复制机群来说,我们需要准备不同系统,不同版本的内核文件,initrd.img文件。菜单文件只需要一份即可。/var/lib/tftpboot/目录规划如下:

规划好了目录结构,接下来自只需要按照目录内容配置相关的文件即可。菜单风格文件vesamenu.c32、不同系统的内核文件 vmlinuz 以及虚拟根文件系统 initrd.img 我们可以从光盘中复制。菜单文件defaults需要手动写

[ root@vinsent ~ ]#cd /var/lib/tftpboot/

[ root@vinsent tftpboot ]#mkdir -p centos{6,7}     # 创建目录文件

[ root@vinsent tftpboot ]#cp /var/www/html/centos/6/isolinux/{vmlinuz,initrd.img} centos6/     # 复制内核,虚拟根文件

[ root@vinsent tftpboot ]#cp /var/www/html/centos/7/isolinux/{vmlinuz,initrd.img} centos7/     # 由于之前挂载了不同系统,直接复制对应文件即可

[ root@vinsent tftpboot ]#cp /var/www/html/centos/7/isolinux/vesamenu.c32 .#复制菜单风格文件

[ root@vinsent tftpboot ]#cp /usr/share/syslinux/pxelinux.0 . # pxelinux文件来自syslinux包,直接复制即可

[ root@vinsent tftpboot ]#mkdir pxelinux.cfg

[ root@vinsent tftpboot ]#cp /var/www/html/centos/6/isolinux/isolinux.cfg pxelinux.cfg/default # 复制并改名

[ root@vinsent tftpboot ]#vim pxelinux.cfg/default

default vesamenu.c32    # 指定菜单风格

timeout 600    # 安装倒计时,1/10 s为单位

menu title Auto Install | www.xxx.com

 

label centos7

  menu label ^Install CentOS 7

  kernel centos7/vmlinuz

  append initrd=centos7/initrd.img ks=http://192.168.65.130/ksdir/ks7.cfg   # 指明ks文件位置

 

label centos6

  menu label ^Install CentOS 6

  kernel centos6/vmlinuz

  append initrd=centos6/initrd.img ks=http://192.168.65.130/centos/6

 

label manual7

  menu label ^Manual Install CentOS Linux 7

  kernel centos7/vmlinuz

  append initrd=centos7/initrd.img inst.repo=http://192.168.65.130/centos/7

 

label manual6

  menu label Manual ^Install CentOS Linux 6

  kernel centos6/vmlinuz

  append initrd=centos6/initrd.img inst.repo=http://192.168.65.130/centos/6

label local

  menu default

  menu label Boot from ^local drive

  localboot 0xffff

menu end

到此所有的配置就完成了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值