IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 麒麟kylinV10实现arm和x86无人值守安装PXE(实施篇) -> 正文阅读

[嵌入式]麒麟kylinV10实现arm和x86无人值守安装PXE(实施篇)

一、PXE概述

预启动执行环境(PXE)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统。

使用kickstart进行Kylin系统的全自动化安装的环境要求如下:

  1. httpd:存放kickstart文件。
  2. tftp:提供vmlinuz和initrd文件。
  3. dhcpd/pxe:提供DHCP服务。
  4. ISO:Kylin-Server-10-SP1-Release-Build04-20200711-x86_64.iso。

二、前提条件

  1. 预装系统能够通过DHCP自动寻址PXE服务端;
  2. 服务器引导为UEFI模式;
  3. 服务器系统盘为raid1或者raid0(一般系统盘在服务器后置双盘位)

三、内容介绍

第一阶段:DHCP

客户端开机选择network启动,然后将网卡上的pxe client信息拷贝到内存上运行,发送dhcp广播信息,从dhcp服务器上获取一个ip,并告知tftp服务器的ip,如果有多个dhcp服务器,客户端会接受第一个dhcp服务器的ip。所以服务器端要有个dhcp服务器。

第二阶段:TFTP

网卡上存储空间有限,所以只能集成轻量级别的tftp客户端。客户端从第一阶段获取到ip之后就会去tftp服务器端获取内核、初始化程序、引导文件等。所以服务器端还要搭建一个tftp服务器。

第三阶段:FTP/HTTP/NFS

这个阶段可以使用ftp/http/nfs中的一个来获取系统的安装文件。以上三个服务搭建之后,pxe服务器就搭建好了。接下来再写grub.cfg引导文件,就可以完全自动化的安装系统了。

四、服务流程

流程各项说明如下:

?Legacy模式使用pxelinux.0引导,UEFI模式使用BOOTAA64.EFI(ARM架构引导文件),x86为(BOOTX64.EFI)引导。

五、PXE服务器网络规划?

操作系统

CentOS7.6

CPU内存

8C16G

PXE服务器IP

192.168.100.21/24

客户端网络

192.168.100.0/24

六、PXE服务器实践指导

安装DHCP服务:

[root@pxeserver ~]# yum install -y dhcp

[root@pxeserver ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf

[root@pxeserver ~]# vim /etc/dhcp/dhcpd.conf

ddns-update-style interim;

allow booting;

allow bootp;

ignore client-updates;

set vendorclass = option vendor-class-identifier;

option pxe-system-type code 93 = unsigned integer 16;

subnet 192.168.100.0 netmask 255.255.255.0 { #配置要分配的地址段及netmask, 需要修改为自己的网段

option routers 192.168.100.1; #配置网关,如dhcp有问题,注意网关的配置

option domain-name-servers 223.5.5.5; #配置dns,也可配置自己内部的dns

option subnet-mask 255.255.255.0; #配置netmask

range dynamic-bootp 192.168.100.10 192.168.100.100; #分配的ip范围

default-lease-time 21600; #缺省租约时间

max-lease-time 43200; #最大租约时间

next-server 192.168.100.21; #指定引导装机的ip

class "pxeclients" {

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

if option pxe-system-type = 00:07 {

filename "x86_uefi/BOOTX64.EFI";

} else if option pxe-system-type = 00:09 {

filename "x86_uefi/BOOTX64.EFI";

} else if option pxe-system-type = 00:0b { #arm服务器引导

filename "arm_uefi/BOOTAA64.EFI";

} else {

filename "pxelinux.0";

}

}

}

[root@pxeserver ~]# systemctl start dhcpd

[root@pxeserver ~]# systemctl enable dhcpd

安装配置TFTP服务:

[root@pxeserver ~]# yum install tftp xinetd tftp-server –y

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

disable = no #开启tftp服务

关闭防火墙:

[root@pxeserver ~]# systemctl stop firewalld

[root@pxeserver ~]# systemctl disable firewalld

将selinux值设置永久禁用:

[root@pxeserver ~]# vim /etc/selinux/config

SELINUX=disabled

[root@pxeserver ~]# reboot #重启服务器生效

安装httpd服务:

[root@pxeserver ~]# yum install -y httpd

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

#创建ARM和X86安装源文件夹

[root@pxeserver html]# mkdir centos76_x86

[root@pxeserver html]# mkdir kylin_86_arm

制作安装源:

[root@pxeserver ~]# mkdir /mnt/{arm,x86}

[root@pxeserver ~]# mount -o loop Kylin-Server-10-SP1-Release-Build04-20200711-arm64.iso /mnt/arm/

[root@pxeserver ~]# cp -r /mnt/arm/* /var/www/html/kylin86_arm/

[root@pxeserver ~]# mount -o loop CentOS-7-x86_64-DVD-1810.iso /mnt/arm/

[root@pxeserver ~]# cp -r /mnt/x86/* /var/www/html/centos76_x86

拷贝pxe引导文件到tftp目录:

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

[root@pxeserver tftpboot]# mkdir arm_uefi x86_uefi

#X86配置引导文件

[root@pxeserver ~]# cp -r /var/www/html/centos76_x86/EFI/BOOT/* /var/lib/tftpboot/x86_uefi/

[root@pxeserver ~]# cp /var/www/html/centos76_x86/images/pxeboot/vmlinuz /var/lib/tftpboot/x86_uefi/

[root@pxeserver ~]# cp /var/www/html/centos76_x86/images/pxeboot/initrd.img /var/lib/tftpboot/x86_uefi/

#Arm配置引导文件

[root@pxeserver ~]# cp -r /var/www/html/kylin86_arm/EFI/BOOT/* /var/lib/tftpboot/arm_uefi/

[root@pxeserver ~]# cp /var/www/html/kylin86_arm /images/pxeboot/vmlinuz /var/lib/tftpboot/arm_uefi/

[root@pxeserver ~]# cp /var/www/html/kylin86_arm /images/pxeboot/initrd.img /var/lib/tftpboot/arm_uefi/

修改pxe配置文件grub.cfg:

#X86 grub.cfg配置

[root@pxeserver ~]# vim /var/lib/tftpboot/x86_uefi/grub.cfg

set default="0"

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=5

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

search --no-floppy --set=root -l 'CentOS 7 x86_64'

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

menuentry 'Install CentOS 7' --class fedora --class gnu-linux --class gnu --class os {

linuxefi x86_uefi/vmlinuz inst.ks=http://192.168.100.21/ks_x86.cfg quiet

initrdefi x86_uefi/initrd.img

}

#ARM grub.cfg配置

[root@pxeserver ~]# vim /var/lib/tftpboot/arm_uefi/grub.cfg

set default="0"

function load_video {

if [ x$feature_all_video_module = xy ]; then

insmod all_video

else

insmod efi_gop

insmod efi_uga

insmod ieee1275_fb

insmod vbe

insmod vga

insmod video_bochs

insmod video_cirrus

fi

}

load_video

set gfxpayload=keep

insmod gzio

insmod part_gpt

insmod ext2

set timeout=3

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

search --no-floppy --set=root -l 'Kylin-Server-10'

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

menuentry 'Install Kylin Linux Advanced Server V10' --class red --class gnu-linux --class gnu --class os {

linux arm_uefi/vmlinuz inst.ks=http://192.168.100.21/ks_arm.cfg ro

initrd arm_uefi/initrd.img

}

设置和修改kickstart配置文件 :

#x86和arm相同自行配置

[root@pxeserver ~]# vim /var/www/html/ks_x86.cfg

auth --enableshadow --passalgo=sha512

install

url --url=http://192.168.100.21/kylin86_arm //此处为安装镜像源地址

text //文本模式安装

firstboot --disable //关闭下次开机进入引导模式

firewall --disabled

selinux --disabled

reboot //安装系统完成后自动重启

keyboard --vckeymap=us --xlayouts='us'

lang en_US.UTF-8

network --bootproto=dhcp --hostname=CentOSArm --device=ens3f0 --activate

rootpw --plaintext 123456 //root账户密码

services --disabled="chronyd"

timezone Asia/Shanghai

bootloader crashkernel=auto --location=mbr --boot-drive=sda

clearpart --all --initlabel //清除所有磁盘分区

part /boot/efi --fstype="efi" --ondisk=sda --size=1024

part swap --fstype="swap" --size=2048

part / --fstype="xfs" --size=102400

part /boot --fstype="ext4" --size=1024

%pre

parted -s /dev/sda mklabel gpt //系统盘分区格式gpt

%end

%packages

@^minimal

@core

kexec-tools

%end

重启所有服务:

[root@pxeserver ~]# systemctl restart dhcpd

[root@pxeserver ~]# systemctl restart tftp

[root@pxeserver ~]# systemctl restart xinetd

[root@pxeserver ~]# systemctl restart httpd

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-01 12:05:12  更:2021-09-01 12:06:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:57:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码