Linux PXE自动化安装

解决大量设备安装系统问题,可以实现无人值守安装

PXE运行原理:

简写运行步骤:

1、客户端启动,选择从网卡启动

2、从DHCP服务器获取IP地址等信息

3、还从DHCP中获取到tftp server地址及网络引导程序pxelinux.0位置信息

4、通过网卡访问到tftp server的根目录(/var/lib/tftpboot)下的pxelinux.0,读到本地内存中

5、在内存中执行引导程序

6、读取引导程序的配置文件(/var/lib/tftpboot/pxelinux.cfg/default)

7、读取default中的内容

最重要的 vmlinuz  内核        initrd.img 驱动引导程序    各版本一定要区分、配对

本次演示以Centos7为例:

前期准备:
    配置静态ip
    关闭防火墙和selinux
    更换国内yum源(可以不做)

安装图形化桌面

初学者为了简便,后面要用到一个图形化工具生成自动化配置文件
yum groupinstall "GNOME Desktop" "Graphical Administration Tools"
 

安装 dhcp和tftp

yum install dhcp tftp-server -y
cd /etc/dhcp/
cat dhcpd.conf      #默认配置文件什么都没有 
cp /usr/share/doc/dhcp*/dhcpd.conf.example dhcpd.conf      #可以复制预留的模板修改

[root@ ~]# cat /etc/dhcp/dhcpd.conf        # 最终效果
next-server 192.168.8.220;         # 指定tftp-server地址
filename "pxelinux.0";                 #tftp根目录下的文件

subnet 192.168.8.0 netmask 255.255.255.0 {                 # 这里没什么好说的,就是dhcp基本配置
  range 192.168.8.40 192.168.8.140;
  option domain-name-servers 192.168.8.1,114.114.114.114;
  option domain-name "lance.com";
  option routers 192.168.8.1;
  option broadcast-address 192.168.8.255;
  default-lease-time 600;
  max-lease-time 7200;
}

# 启动  &&  查看状态

systemctl start dhcpd
systemctl status dhcpd.service

systemctl enable dhcpd    # 注意,dhcp会和路由器的dhcp冲突,不懂网络谨慎开启

配置tftp-server

vi /etc/xinetd.d/tftp 
         disable                 = no      # 把yes改成no,这里的意思是默认不启动,no的话就是启动咯

systemctl start tftp
systemctl enable tftp

复制pxelinux.0

pxelinux.0是syslinux自带的文件

yum provides "*/pxelinux.0"    # 查找哪个软件包自带的,如果找不到记得更新以下yum缓存信息
yum install syslinux -y       # 安装
rpm -ql syslinux        # 查看安装包安装的所有目录,找到pxelinux.0
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/    # 拷贝到tftp根目录下
mkdir /var/lib/tftpboot/pxelinux.cfg    # 创建存放配置文件的目录

挂载iso镜像

本次使用的是centos7-mini版,其他发行版也一样
镜像挂载到http目录下,安装http

yum install httpd
systemctl enable httpd && systemctl start httpd

# 挂载到httpd的根目录下,就可以通过网页访问了

cd /var/www/html/
mkdir -p centos/7
mount -o loop /data/ios_image/CentOS-7-x86_64-Minimal-2009.iso /var/www/html/centos/7

# 可以测试以下  网页输入http://本机ip/centos/7


新建一个本地yum文件
vi /etc/yum.repos.d/dvd.repo 
        [development]     # 这里要写的一样,后面有位置需要
        name=centos7
        baseurl=http://192.168.8.220/centos/7
        enabled=1
        gpgcheck=0

yum clean all
yum makecache

# pxelinux.0的配置文件,先复制后面再修改
cp /var/www/html/centos/7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

# 内核和驱动程序
mkdir  /var/lib/tftpboot/centos7
cp /var/www/html/centos/7/isolinux/* /var/lib/tftpboot/
cp var/lib/tftpboot/{vmlinuz,initrd.img} /var/lib/tftpboot/centos7/

安装自动化安装配置文件工具

yum install system-config-kickstart
system-config-kickstart      # 图形化界面执行命令

 

 

 

 

 

 

 这里对应了dvd.repo里面的[development],这样的格式才会出现选择软件包

 

这个非常有用,上面内容是我写着玩的,可以写改yum源呀,或者安装什么样的环境,包括有的系统需要创建一个普通用户才能安装系统,都可以用脚本写在这里

 

完成后,选择文件 --> 保存 到服务器目录里面

 这个工具还可以打开已经创建好的文件

我的目录

[root@ tftpboot]# ls /var/www/html/ks/centos7_mini.cfg

修改pxelinux.0配置文件,只显示需要修改的位置

[root@ tftpboot]# cat pxelinux.cfg/default 
default vesamenu.c32
timeout 60            # 选择安装系统界面的等待时间,单位1/10秒

label linux            # 固定格式,可以在安装界面使用到
  menu label ^Install CentOS 7     # 安装界面选择时显示的标题
  menu default                               # 多个标题,光标默认选择的位置
  kernel /centos7/vmlinuz              # tftp根目录下,内核的位置
  append initrd=/centos7/initrd.img ks=http://192.168.8.220/ks/centos7_mini.cfg
                                                      # tftp根目录下驱动的位置,刚刚ks配置文件的位置

  

测试:

 

 

 等待时间,标题,默认光标的位置

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值