PXE 网络安装 CentOS 7,BIOS(Legacy) 和 UEFI 启动都支持_为何不能下定决心?的博客-程序员宝宝

技术标签: linux  服务器  centos7  centos  

CentOS 7 配置 PXE+Kickstart 实现网络安装(无人值守)

网络安装至少需要两个系统:

  • 服务器 - 运行 DHCP服务器、TFTP 服务器从服务器提供引导文件,同时 HTTP、FTP 或者 NFS 服务器托管安装映射。
  • 客户端 - 要安装系统的机器。安装开始时,客户端会查询 DHCP 服务器,从 TFTP 服务器中获取引导文件,并从 HTTP、FTP 或者 NFS 服务器下载安装映象。

配置网络引导

网络引导配置步骤在不同的系统中有所不同,具体看要安装 Linux 的系统是使用 BIOS 还是UEFI

配置防火墙

# 关闭并禁用防火墙
[[email protected] ~]# systemctl stop firewalld
[[email protected] ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

# 在防火墙中允许某服务的连接(本次不使用此方式)
[[email protected] ~]# firewall-cmd --add-service=tftp

配置SELinux

# 查看SELinux状态
[[email protected] ~]# getenforce
Enforcing
# 设置SELinux为permissive模式,1 是Enfocing模式
[[email protected] ~]# setenforce 0
[[email protected] ~]# getenforce
Permissive
# 彻底禁用SELinux
[[email protected] ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

配置Yum仓库

使用ISO镜像搭建本地仓库,提升安装软件包的速度。

# ISO文件挂载
[[email protected] ~]# mount -o loop,ro -t iso9660 CentOS-7-x86_64-DVD-1810.iso /media
# cdrom光盘挂载(根据自己的情况二选一)
[[email protected] ~]# mount /dev/cdrom /media
# 备份原有文件
[[email protected] ~]# cp -r /etc/yum.repos.d /etc/yum.repos.d_bak
[[email protected] ~]# rm -f /etc/yum.repos.d/*
# yum配置文件
[[email protected] ~]# cat /etc/yum.repos.d/local.repo
[development]
name=local
baseurl=file:///media/
gpgcheck=0
[[email protected] ~]# yum makecache

安装配置HTTP服务

[[email protected] ~]# yum install -y httpd
# 启动HTTP服务
[[email protected] ~]# systemctl start httpd
# 设置开机启动
[[email protected] ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

# 系统通过网络安装时需要指定安装源,这里使用HTTP服务提供安装源,也可以通过FTP服务提供
# 将ISO文件挂载后复制到/var/www/html目录即可
[[email protected] ~]# mount -o loop,ro -t iso9660 CentOS-7-x86_64-DVD-1810.iso /media
# cdrom光盘挂载(根据自己的情况二选一)
[[email protected] ~]# mount /dev/cdrom /media
[[email protected] ~]# cp -r /media /var/www/html/centos7.6

安装配置TFTP服务

[[email protected] ~]# yum install -y tftp-server
# 在 /etc/xinet.d/tftp 配置文件中,将 disabled 参数从 yes 改为 no
[[email protected] ~]# vim /etc/xinetd.d/tftp
[[email protected] ~]# cat /etc/xinetd.d/tftp
# default: off
# description: The tftp server serves files using the trivial file transfer \
#       protocol.  The tftp protocol is often used to boot diskless \
#       workstations, download configuration files to network-aware printers, \
#       and to start the installation process for some operating systems.
service tftp
{
    
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}
# 启动服务
[[email protected] ~]# systemctl start tftp
[[email protected] ~]# systemctl enable tftp
Created symlink from /etc/systemd/system/sockets.target.wants/tftp.socket to /usr/lib/systemd/system/tftp.socket.
[[email protected] ~]# systemctl status tftp

安装配置DHCP服务

[[email protected] ~]# yum install -y dhcp

# subnet字段为局部设置,优先级高于全局。option在全局和局部都可设置
[[email protected] ~]# cat /etc/dhcp/dhcpd.conf
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example
#   see dhcpd.conf(5) man page
#
option space pxelinux;
option pxelinux.magic code 208 = string;
option pxelinux.configfile code 209 = text;
option pxelinux.pathprefix code 210 = text;
option pxelinux.reboottime code 211 = unsigned integer 32;
option architecture-type code 93 = unsigned integer 16;

subnet 192.168.22.0 netmask 255.255.255.0 {
    
  option routers 192.168.22.2;              # 网关
  range 192.168.22.190 192.168.22.199;      # 可分配的起始IP~结束IP

  class "pxeclients" {
    
      match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
      next-server 192.168.22.132;    # 提供引导文件的服务器IP地址,即tftp服务器地址

      if option architecture-type = 00:07 {
    
        filename "uefi/shim.efi";         # 采用shim打包的EFI引导映象
      } else {
    
        filename "pxelinux/pxelinux.0";   # SYSLINUX打包的BIOS引导映像
      }
  }
}

# 启动服务并设置开机自启
[[email protected] ~]# systemctl start dhcpd.service
[[email protected] ~]# systemctl enable dhcpd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.
[[email protected] ~]# systemctl status dhcpd.service

为使用BIOS(Legacy)的机器配置

  • 需要软件包 SYSLINUX 中的 pxelinux.0 文件

    [[email protected] ~]# cp /media/Packages/syslinux-4.05-15.el7.x86_64.rpm ./
    # 提取软件包
    [[email protected] ~]# rpm2cpio syslinux-4.05-15.el7.x86_64.rpm | cpio -dimv
    [[email protected] ~]# ls -lrt usr/share/syslinux/pxelinux.0
    -rw-r--r--. 1 root root 26759 10月 31 2018 usr/share/syslinux/pxelinux.0
    
  • tftpboot 中创建 pxelinux 目录,并将 pxelinux.0 复制到该目录中

    [[email protected] ~]# mkdir /var/lib/tftpboot/pxelinux
    [[email protected] ~]# cp usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/pxelinux
    
  • pxelinux/ 目录中创建目录 pxelinux.cfg,添加名为 default 的配置文件

    [[email protected] ~]# mkdir /var/lib/tftpboot/pxelinux/pxelinux.cfg
    # 可根据/media/isolinux/isolinux.cfg修改
    ## 设置背景图片,如 menu background splash.png,要将splash.png文件放在pxelinux目录下
    ## 设置菜单风格,如 default vesamenu.c32,要将vesamenu.c32文件放在pxelinux目录下
    ## 这里直接指定从哪个label启动,省去了进入菜单的时间
    [[email protected] ~]# vim /var/lib/tftpboot/pxelinux/pxelinux.cfg/default
    default linux
    prompt 1
    timeout 600
    
    label linux
      menu label ^Install system
      kernel vmlinuz
      append initrd=initrd.img ip=dhcp inst.repo=http://192.168.22.132/centos7.6 inst.ks=http://192.168.22.132/ks.cfg
    
  • 将引导映像复制到 pxelinux/ 目录下

    [[email protected] ~]# cp /media/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/pxelinux/
    [[email protected] ~]# tree /var/lib/tftpboot/pxelinux/
    /var/lib/tftpboot/pxelinux/
    ├── initrd.img
    ├── pxelinux.0
    ├── pxelinux.cfg
    │   └── default
    └── vmlinuz
    
  • 重新载入已运行服务 tftpxinetddhcp

    [[email protected] ~]# systemctl daemon-reload
    [[email protected] ~]# systemctl restart tftp httpd dhcpd
    # 将用到的服务设置为开机自启(已设置过请忽略)
    [[email protected] ~]# systemctl enable tftp httpd dhcpd
    

为使用UEFI的机器配置

  • 需要软件包 shim 中的 shim.efi 文件,和软件包 grub2-efigrubx64.efi 文件

    [[email protected] ~]# cp /media/Packages/shim-x64-15-1.el7.centos.x86_64.rpm ./
    [[email protected] ~]# cp /media/Packages/grub2-efi-x64-2.02-0.76.el7.centos.x86_64.rpm ./
    # 提取软件包
    [[email protected] ~]# rpm2cpio shim-x64-15-1.el7.centos.x86_64.rpm | cpio -dimv
    [[email protected] ~]# rpm2cpio grub2-efi-x64-2.02-0.76.el7.centos.x86_64.rpm | cpio -dimv
    [[email protected] ~]# ls -l boot/efi/EFI/centos/shim.efi
    -rwx------. 1 root root 1205224 11月 10 2018 boot/efi/EFI/centos/shim.efi
    [[email protected] ~]# ls -l boot/efi/EFI/centos/grubx64.efi
    -rwx------. 1 root root 1090976 11月  9 2018 boot/efi/EFI/centos/grubx64.efi
    
  • tftpboot/ 目录中创建 uefi/ 目录,并将 EFI 引导映像复制到该目录下

    [[email protected] ~]# mkdir /var/lib/tftpboot/uefi
    [[email protected] ~]# cp boot/efi/EFI/centos/shim.efi /var/lib/tftpboot/uefi/
    [[email protected] ~]# cp boot/efi/EFI/centos/grubx64.efi /var/lib/tftpboot/uefi/
    [[email protected] ~]# chmod 644 /var/lib/tftpboot/uefi/shim.efi
    [[email protected] ~]# chmod 644 /var/lib/tftpboot/uefi/grubx64.efi
    
  • uefi/ 目录中添加名为 grub.cfg 的配置文件

    # 可根据/media/EFI/BOOT/grub.cfg修改
    [[email protected] ~]# vim /var/lib/tftpboot/uefi/grub.cfg
    set timeout=10
      menuentry 'RHEL 7' {
          
      linuxefi uefi/vmlinuz ip=dhcp inst.repo=http://192.168.22.132/centos7.6 inst.ks=http://192.168.22.132/ks_uefi.cfg
      initrdefi uefi/initrd.img
    }
    
  • pxeboot 引导映像复制到 uefi/ 目录下

    [[email protected] ~]# cp /media/images/pxeboot/{vmlinuz,initrd.img}  /var/lib/tftpboot/uefi/
    [[email protected] ~]# tree /var/lib/tftpboot/uefi/
    /var/lib/tftpboot/uefi/
    ├── grub.cfg
    ├── grubx64.efi
    ├── initrd.img
    ├── shim.efi
    └── vmlinuz
    
  • 重新载入已运行服务 tftpxinetddhcp

    [[email protected] ~]# systemctl daemon-reload
    [[email protected] ~]# systemctl restart tftp httpd dhcpd
    # 将用到的服务设置为开机自启(已设置过请忽略)
    [[email protected] ~]# systemctl enable tftp httpd dhcpd
    

创建Kickstart应答文件

# 操作系统安装后,root家目录下有应答文件anaconda-ks.cfg,可根据要安装的机器情况修改该文件
[[email protected] ~]# cp anaconda-ks.cfg /var/www/html/ks.cfg
[[email protected] ~]# chmod +r /var/www/html/ks.cfg
[[email protected] ~]# ls -l /var/www/html/
total 4
-rw-r--r--. 1 root root 1618 Aug 11 11:23 ks.cfg
drwxr-xr-x. 8 root root  254 Aug 11 10:49 media

# 验证 Kickstart 文件,pykickstart 软件包提供的 ksvalidator 命令
[[email protected] ~]# yum install pykickstart
[[email protected] ~]# ksvalidator ks.cfg

也可以在线编辑,如果有红帽客户门户网站帐户,则可以使用 https://access.redhat.com/labs/kickstartconfig/ 中的 Kickstart Configuration Tool 完成基本配置,并下载得到的 Kickstart 文件。

使用 ksverdiff 命令显示两本版本间 Kickstart 语法的不同。

# -f 指定要比较的第一个发行本,-t 指定要比较的最后一个发行本。
[[email protected] ~]# ksverdiff -f RHEL6 -t RHEL7

使用system-config-kickstart生成应答文件

system-config-kickstart是一款图形化工具,需要桌面环境或X11服务

# 安装system-config-kickstart
[[email protected] ~]# yum install -y system-config-kickstart
# 启动system-config-kickstart
[[email protected] ~]# system-config-kickstart

安装X11

# 服务端安装X11服务,需要重新登录自动生成.Xauthority文件
[[email protected] ~]# yum install -y xorg-x11-xauth
# 中文字体(可选)
[[email protected] ~]# yum install -y google-noto-sans-fonts wqy-unibit-fonts wqy-zenhei-fonts

安装图形界面(不建议)

[[email protected] ~]# yum groups list
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Available Environment Groups:
   Minimal Install
   Compute Node
   Infrastructure Server
   File and Print Server
   Basic Web Server
   Virtualization Host
   Server with GUI
   GNOME Desktop
   KDE Plasma Workspaces
   Development and Creative Workstation
Installed Groups:
   Legacy UNIX Compatibility
   System Administration Tools
Available Groups:
   Compatibility Libraries
   Console Internet Tools
   Development Tools
   Graphical Administration Tools
   Scientific Support
   Security Tools
   Smart Card Support
   System Management
Done

[[email protected] ~]# yum groupinstall -y "Server with GUI"
[[email protected] ~]# cat /etc/inittab
# 查看默认运行级别
[[email protected] ~]# systemctl get-default
# 设置图形化为默认
[[email protected] ~]# systemctl set-default graphical.target
# startx命令切换到图形界面

问题

  • 软件包选择时,出现“由于下载软件包失败, 软件包选择被禁止”错误

    修改Yum配置文件 local.repo,自定义标识源改为 [development]

  • 安装时出现 “no space left on device” 错误

    PXE装机内存最少要2G

参考

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Future_promise/article/details/108287038

智能推荐

升级到macOS Big Sur后,网络实用工具没有了该如何解决?_米奇^吖的博客-程序员宝宝

有许多Mac网友提问:升级到bigsur后,网络实用工具没有了,端口扫描怎么用? macos自带的终端替代的命令是什么?还有吗?解答:Big Sur 中“网络实用工具”已弃用。但依然可以在终端中使用 netstat、ping、lookup、traceroute 等 Unix 命令实现相关功能。如果需要扫描端口,可以使用 nc 命令。以下两条命令分别用以扫描 192.168.1.1 的 21 端口和 1-1024 端口nc -zv 192.168.1.1 21nc -...

【操作系统】处理机调度_尬尬_的博客-程序员宝宝

一 调度的概念处理机调度就是从就绪队列中, 按照一定的算法选择一个进程并将处理机分配给它运行,实现进程的并发执行;二 调度的层次1. 高级调度按照一定的原则从外存上处于后背队列的作业中挑选一个/多个队列, 给他们分配内存等必要资源, 并建立PCB ,在运行结束后将作业调出2.中级调度中级调度的目的是提高内存的利用率和系统的吞吐量 ;中级调度又称内存调度, 就是决定将哪个处于 挂起态的进程重新调入内存 (挂起态是指暂时被调到外村中等待的进程状态);中级调度的发生频率比高级调度高;将进程从挂起

U-boot启动过程之——relocate_code分析_木子花狸猫的博客-程序员宝宝

问题:  假若访问nor flash 的0x100地址的变量,复制到SDRAM的0x33f41000 后使用新地址0x33f4,1100访问变量,怎么知道去修改哪一些代码?  所以需要对代码进行重定向,分析start.S文件中的relocate_code程序段:  此时r0是新的栈的地址,r1是结构体gd的地址,r2是代码重定向的目标地址。 .globl relocate_coderel...

《TDNet:Temporally Distributed Networks for Fast Video Semantic Segmentation》论文笔记_m_buddy的博客-程序员宝宝

代码地址:TDNet1. 概述导读:这篇文章提出了一个基于时序分布网络的视频语义分割算法TDNet(Temporally Distributed Network),它的设计思想来自于这么一个观察:较深的网络输出的特征是可以由一系列的浅层网络输出的特征进行组合得到。而在视频分割任务中视频是具有时序属性的,而且视频分割也是有时序属性的,因而就可以在一定的时序范围内使用浅层的网络进行特征抽取,之后在经过组合可以达到深层网络输出特征的效果。这样的思路迁移也是相当简单的,那么怎么来实现文章中说的将多个浅层特征进

Jdk15 maven 打包提示 程序包javax.xml.soap不存在_kevin就是老冯的博客-程序员宝宝_程序包javax.xml.ws不存在

在Jdk15环境下,用maven 打包提示 程序包javax.xml.soap不存在查找相关资料得知,从java11开始,Java EE模块已经被删除,不再有JAX-WS模块。解决方法: 在pom中添加新依赖即可。<dependency> <groupId>com.sun.xml.ws</groupId> <artifactId>jaxws-ri</artifactId> <version>2.3.

深度学习(三):详解循环神经网络RNN,含公式推导_Chihk-Anchor的博客-程序员宝宝_循环神经网络公式

循环神经网络简介循环神经网络(recurrent neural network, RNN)源自1982年由Saratha Sathasivam提出的霍普菲尔德网络。霍普菲尔德网络因为实现困难,在提出时并且没有被合适地应用。该网络结构也于1986年后被全连接神经网络以及一些传统的机器学习算法所取代。然而:传统的机器学习算法非常依赖于人工提取的特征,使得基于传统机器学习的图像识别、语音识别以及...

随便推点

01,windows 命令行 :_孙砚秋的博客-程序员宝宝

1 ,进入命令行 :win + R - 输入 cmd - 回车2 ,切换盘符 :d:3 ,获取当前路径 :set pa=%cd%echo %pa%4 ,查看当前目录内容 :( 文件 + 文件夹 )dir5 ,切换目录 :cd tmp6 ,创建目录 :md aa7 ,删除目录 :rd aa8 ,创建文件 :copy nul>a.txtecho “aa”>...

微信小程序PHP文件建在哪里,微信小程序解析H5文件方法_Pellegrini的博客-程序员宝宝

经常有网友问怎么让微信小程序解析H5文件或者类似封装H5网页到APP里面?我一开始觉得这是不可能的,因为官方的解答是这样的:每一个小程序页面是由同路径下同名的四个不同后缀文件的组成,如:index.js、index.wxml、index.wxss、index.json。.js后缀的文件是脚本文件,.json后缀的文件是配置文件,.wxss后缀的是样式表文件,.wxml后缀的文件是页面结构文件。上面...

搭建MySQL MMM高可用_weixin_34124651的博客-程序员宝宝

搭建MMM: 1,安装 agent 节点执行 yum install -y mysql-mmm-agent 2, monitor 节点执行 yum install -y mysql-mmm-monitor 配置文件 1, /etc/init.d/mysql-mmm-agent start perl: warning: Setting locale fai...

短信宝接口使用_垚焱yhedward的博客-程序员宝宝

现在大家在开发过程中都会用到发送短信的功能,本人发现如果没有特别的要求那使用短信宝接口是很方便的,对于新手来说简单易懂,开发起来很省时间,比阿里大于要容易很多。先注册短信宝帐号。www.smsbao.com可以测试一条短信,(一般不用测试体验)到开发文档(http://www.smsbao.com/openapi/) 中阅读并下载相应的接口代码,并参考实例代码测试就可以,并可根据实际需求进行扩展功...

浙大程序员甘愿放弃三万月薪跑滴滴,自称开心比什么都好_Python_1_3的博客-程序员宝宝

对于从事互联网行业的人都知道,程序员是高薪的代名词,应届生都可以月入过万,一些较为资深的大佬年薪甚至过百万,当然高薪背后意味着高压力,程序员加班成常态,当很多人早已入睡时,或许程序员正加班加点上线项目压力自然不言而喻,以至于不少程序员甘愿放弃高薪,选择从事其它行业,目的就是想自由一点。我自己是一名高级python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础...