pxe linux自动安装系统,通过 PXE 自动安装操作系统(1):部署 PXE Server

205335766_2_20201023091418647

PXE(Preboot eXecution Environment) 支持客户端通过网络从服务器端下载系统镜像,并进行安装。在安装过程中,可以通过 Kickstart 配置文件实现无人值守安装,并定制操作系统。

PXE 服务器组件:

DHCP : 负责分配网络 IP 地址,并通过 DHCP 包来指定系统启动文件的。

syslinux: 预启动程序

TFTP: PXE 客户端通过 TFTP 获取启动文件。

FTP: PXE 客户端通过 FTP 下载系统镜像内容。

初始化服务器

为 PXE Server 配置固定 IP 地址;

[it@pxesvr ~]$ sudo vim /etc/sysconfig/network-scripts/ifcfg-ens192

[sudo] password for it:

[it@pxesvr ~]$ cat /etc/sysconfig/network-scripts/ifcfg-ens192

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=static

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_FAILURE_FATAL=no

IPV6_ADDR_GEN_MODE=stable-privacy

NAME=ens192

UUID=6346f97a-42c5-4fff-ad62-93bdfd90f417

DEVICE=ens192

ONBOOT=yes

IPADDR=10.10.10.53

PREFIX=24

GATEWAY=10.10.10.1

DNS1=10.10.10.1

IPV6_PRIVACY=no

关闭防火墙;[it@pxesvr ~]$ sudo systemctl stop firewalld.service

[it@pxesvr ~]$ sudo systemctl disable firewalld.service

Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.

Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

DHCP

安装 DHCP 服务器角色;

[it@pxesvr ~]$ sudo yum install dhcp-server -y

Updating Subscription Management repositories.

Unable to read consumer identity

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

Last metadata expiration check: 0:12:17 ago on Sat 10 Oct 2020 04:06:12 PM CST.

Dependencies resolved.

================================================================================================================

Package                    Arch                  Version                        Repository                Size

================================================================================================================

Installing:

dhcp-server                x86_64                12:4.3.6-30.el8                localREPO                529 k

Transaction Summary

================================================================================================================

Install  1 Package

... ... ... ...

... ... ... ...

... ... ... ...

配置 DHCP;[it@pxesvr ~]$ sudo vim /etc/dhcp/dhcpd.conf

[it@pxesvr ~]$ sudo cat /etc/dhcp/dhcpd.conf | grep -v ^#

allow bootp;

allow booting;

default-lease-time 600;

max-lease-time 7200;

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 10.10.10.0 netmask 255.255.255.0 {

option routers 10.10.10.1;

range 10.10.10.100 10.10.10.199;

class 'pxeclients' {

match if substring (option vendor-class-identifier, 0, 9) = 'PXEClient';

next-server 10.10.10.53;         #pxe server IP

if option architecture-type = 00:07 {

filename 'uefi/BOOTX64.EFI';     # UEFI boot

} else {

filename '/pxelinux.0';          # BIOS boot

}

}

}

启动 DHCP 服务,并配置开机启动;

[it@pxesvr ~]$ sudo systemctl enable --now dhcpd.service

Created symlink /etc/systemd/system/multi-user.target.wants/dhcpd.service → /usr/lib/systemd/system/dhcpd.service.

syslinux

安装 syslinux-tftpboot;[it@pxesvr ~]$ sudo yum install syslinux-tftpboot -y

Updating Subscription Management repositories.

Unable to read consumer identity

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

Last metadata expiration check: 1:46:30 ago on Mon 12 Oct 2020 11:18:21 AM CST.

Dependencies resolved.

================================================================================================================

Package                         Arch                 Version                     Repository               Size

================================================================================================================

Installing:

syslinux-tftpboot               noarch               6.04-1.el8                  localREPO               462 k

Installing dependencies:

syslinux                        x86_64               6.04-1.el8                  localREPO               576 k

syslinux-nonlinux               noarch               6.04-1.el8                  localREPO               554 k

Transaction Summary

================================================================================================================

Install  3 Packages

... ... ... ...

... ... ... ...

... ... ... ...

配置启动菜单(只有两个菜单,一个 Install Red Hat Enterprise Linux 8.0,一个是 Boot from local drive(默认选择)),并在第一个菜单配置启动系统镜像所需的文件,以及下载系统镜像的目录;

[it@pxesvr ~]$ sudo mkdir /tftpboot/pxelinux.cfg

[it@pxesvr ~]$ sudo cp /os/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default

[it@pxesvr ~]$ sudo vim /tftpboot/pxelinux.cfg/default

[it@pxesvr ~]$ sudo cat /tftpboot/pxelinux.cfg/default

default vesamenu.c32

timeout 600

display boot.msg

menu title Red Hat Enterprise Linux 8.0

# Do not display the actual menu unless the user presses a key. All that is displayed is a timeout message.

menu tabmsg Press Tab for full configuration options on menu items.

menu separator # insert an empty line

menu separator # insert an empty line

label linux

menu label ^Install Red Hat Enterprise Linux 8.0

kernel vmlinuz

append initrd=initrd.img inst.stage2=ftp://10.10.10.53/dvd quiet

label local

menu label ^Boot from local drive

menu default

localboot 0xffff

[it@pxesvr ~]$

*  启动菜单文件 default 你可以通过示例文件修改获得,也可以自己新建获得。

复制系统镜像启动文件到对应的位置[it@pxesvr ~]$ sudo cp /os/isolinux/{boot.msg,vesamenu.c32} /tftpboot/

[it@pxesvr ~]$ sudo cp /os/images/pxeboot/{vmlinuz,initrd.img} /tftpboot/

TFTP

安装 TFTP 服务器角色(pxe 客户端通过 TFTP 获取启动文件);

[it@pxesvr ~]$ sudo yum install tftp-server -y

Updating Subscription Management repositories.

Unable to read consumer identity

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

Last metadata expiration check: 0:45:23 ago on Mon 12 Oct 2020 08:05:39 AM CST.

Dependencies resolved.

================================================================================================================

Package                    Arch                  Version                    Repository                    Size

================================================================================================================

Installing:

tftp-server                x86_64                5.2-24.el8                 localREPO_APP                 50 k

Transaction Summary

================================================================================================================

Install  1 Package

... ... ... ...

... ... ... ...

... ... ... ...

配置 TFTP 服务器(修改 TFTP 的路径为 /tftpboot);[it@pxesvr ~]$ sudo vim /usr/lib/systemd/system/tftp.service

[it@pxesvr ~]$ sudo cat /usr/lib/systemd/system/tftp.service

[Unit]

Description=Tftp Server

Requires=tftp.socket

Documentation=man:in.tftpd

[Service]

ExecStart=/usr/sbin/in.tftpd -s /tftpboot

StandardInput=socket

[Install]

Also=tftp.socket

启动 TFTP 服务,并配置开机启动;

[it@pxesvr ~]$ sudo systemctl enable --now tftp

Created symlink /etc/systemd/system/sockets.target.wants/tftp.socket → /usr/lib/systemd/system/tftp.socket.

FTP

安装 FTP 服务器(用于 pxe client 下载系统镜像文件);[it@pxesvr ~]$ sudo yum install vsftpd -y

Updating Subscription Management repositories.

Unable to read consumer identity

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

Last metadata expiration check: 0:01:41 ago on Sat 10 Oct 2020 04:06:12 PM CST.

Dependencies resolved.

================================================================================================================

Package                Arch                   Version                      Repository                     Size

================================================================================================================

Installing:

vsftpd                 x86_64                 3.0.3-28.el8                 localREPO_APP                 180 k

Transaction Summary

================================================================================================================

Install  1 Package

... ... ... ...

... ... ... ...

配置 ftp 服务器,开启匿名访问,指定匿名访问的目录;

[it@pxesvr ~]$ sudo vim /etc/vsftpd/vsftpd.conf

[sudo] password for it:

[it@pxesvr ~]$ sudo grep -e anonymous -e anon_root /etc/vsftpd/vsftpd.conf | grep -v ^#

anonymous_enable=YES

anon_root=/var/ftp

启动 ftp 服务,并配置开机启动;[it@pxesvr ~]$ sudo systemctl enable --now vsftpd.service

Created symlink /etc/systemd/system/multi-user.target.wants/vsftpd.service → /usr/lib/systemd/system/vsftpd.service.

创建 ftp 匿名访问的目录目录,然后复制系统镜像内容到该目录;

[it@pxesvr ~]$ sudo mkdir /var/ftp/dvd

[it@pxesvr ~]$ sudo cp -r /run/media/it/RHEL-8-0-0-BaseOS-x86_64/* /var/ftp/dvd/

测试启动

通过 BIOS(Legacy ) 的方式启动客户端主机进行测试205335766_3_20201023091418788

配置支持 UEFI 启动

配置 UEFI 启动菜单[it@pxesvr ~]$ sudo mkdir /tftpboot/uefi

[sudo] password for it:

[it@pxesvr ~]$ sudo cp -r /os/EFI/BOOT/* /tftpboot/uefi/

[it@pxesvr ~]$ vim /tftpboot/uefi/grub.cfg

[it@pxesvr ~]$ sudo vim /tftpboot/uefi/grub.cfg

[it@pxesvr ~]$ sudo cat /tftpboot/uefi/grub.cfg

[sudo] password for it:

set default='1'

function load_video {

insmod efi_gop

insmod efi_uga

insmod video_bochs

insmod video_cirrus

insmod all_video

}

load_video

set gfxpayload=keep

insmod gzio

insmod part_gpt

insmod ext2

set timeout=60

### END /etc/grub.d/00_header ###

search --no-floppy --set=root -l 'RHEL-8-0-0-BaseOS-x86_64'

### BEGIN /etc/grub.d/10_linux ###

menuentry 'Install Red Hat Enterprise Linux 8.0' --class fedora --class gnu-linux --class gnu --class os {

linuxefi vmlinuz inst.stage2=ftp://10.10.10.53/dvd quiet

initrdefi initrd.img

}

menuentry 'Test this media & install Red Hat Enterprise Linux 8.0' --class fedora --class gnu-linux --class gnu --class os {

linuxefi vmlinuz inst.stage2=ftp://10.10.10.53/dvd quiet

initrdefi initrd.img

}

重启服务

[it@pxesvr ~]$ sudo systemctl restart dhcpd.service

[it@pxesvr ~]$ sudo systemctl restart tftp.socket

测试启动

通过 UEFI 的方式启动客户端主机进行测试。205335766_4_20201023091418866

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值