UOS无人值守PXE系统安装

1. 前言

单台或者少数几台机器安装,可以通过u盘等方式一台一台的安装,但是当面对局域网内上百台,甚至更多的机器需要安装操作体系时,一台一台的安装显然是不可取的了,此时省时省力的自动化PXE方式就派上用场了。

2. PXE介绍

PXE即Preboot Execution Environment,翻译过来就是“预启动执行环境”。是由inter公司开发,基于C / S模式提供了一种使用网络接口(Network Interface)启动计算机的机制。这种机制让计算机的启动可以不依赖本地数据存储设备(如硬盘)或本地已安装的操作系统。

PXE服务器端需要DHCP服务器、TFTP服务器和一个文件服务器,其中文件服务器可以是ftp,http,nfs等文件服务器。

服务端

DHCP-------用来分配IP地址,定位引导程序

TFTP-------提供引导程序下载

NFS-------网络中文件共享

客户端

网卡支持PXE协议

主板支持网络启动

PXE部署系统自动化安装流程:

1) 设置拥有PXE功能的客户端主机开机启动项为网络启动;

2) 客户端开机之后进入网络启动,此时客户端没有IP地址需要发送广播报文(PXE网卡内置DHCP客户端程序),DHCP服务器相应客户端请求,分配给客户端相应的IP地址与掩码等信息;

3) 客户端得到IP地址之后,与TFTP通信,下载pxelinux.0,default,vmlinuz,initrd文件,根据default指定的vmlinuz,initrd启动系统内核,下载指定系统安装包。

4) 根据setting.cfg文件去文件共享服务器(http/ftp/nfs)上面下载系统安装包开始安装系统。

 

3. 环境准备

本文整个环境将在vmware虚拟机上验证。

两个虚拟机:UOS01、UOS02

为了简化操作本次使用DHCP、TFTP和NFS均安装在同一个虚拟机中

UOS01:搭建安装环境(DHCP、TFTP和NFS)

ip地址:192.168.114.128  (网卡名为:ens33)

系统安装文件已放到/home/uos/iosdir目录下

UOS02:验证PXE无人值守系统安装

 

4. 搭建安装环境

4.1. 搭建DHCP

1) 安装dhcp

1 uos@uos-PC:~$ sudo apt install isc-dhcp-Server

2) 配置dhcp

 1 uos@uos-PC:~$ sudo vi /etc/dhcp/dhcpd.conf
 2 
 3 subnet 192.168.114.0 netmask 255.255.255.0 {  #dhcpserver 分配ip的子网192.168.114网段,必须和PXE server的一个网卡同一个网段
 4 
 5         range 192.168.114.130 192.168.114.200;     #为客户端分配ip范围
 6 
 7         option subnet-mask 255.255.255.0;
 8 
 9         option routers  192.168.114.2;
10 
11         default-lease-time 600;
12 
13         max-lease-time 7200;
14 
15         next-server 192.168.114.128;    #指定tftp server的ip
16 
17         }
18 
19         filename "pxelinux.0";
20 
21 uos@uos-PC:~$ sudo vi /etc/default/isc-dhcp-server
22 
23 INTERFACESv4="ens33" 

3) 启动dhcp

1 uos@uos-PC:~$ sudo systemctl start nfs-kernel-server
2 
3 uos@uos-PC:~$ sudo systemctl enable nfs-kernel-server

4.2. 搭建TFTP

1) 安装TFTP

1 uos@uos-PC:~$ sudo apt install tftpd-hpa

2) 配置TFTP

uos@uos-PC:~$ cat /etc/default/tftpd-hpa ##使用默认配置即可。

# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"

TFTP_DIRECTORY="/srv/tftp"

TFTP_ADDRESS="0.0.0.0:69"

TFTP_OPTIONS="--secure"

3) 安装PXELINUX

1 uos@uos-PC:~$ sudo apt install pxelinux

 4) 配置PXE启动文件

uos@uos-PC:~$ sudo mkdir -p /srv/tftp/pxelinux.cfg

uos@uos-PC:~$ sudo cp -r /home/uos/isodir/isolinux/ /srv/tftp

uos@uos-PC:~$ sudo cp /home/uos/isodir/live/vmlinuz /srv/tftp

uos@uos-PC:~$ sudo cp /home/uos/isodir/live/initrd.lz /srv/tftp

uos@uos-PC:~$ sudo cp /usr/lib/PXELINUX/pxelinux.0 /srv/tftp

uos@uos-PC:~$ sudo vi /srv/tftp/pxelinux.cfg/default

default vesamenu.c32

    timeout 5

    menu autoboot Starting Linux install in # second{,s}. Press any key to interrupt.

    menu clear

    menu title UOS20

    label UOS

      menu label Start UOS20

      kernel vmlinuz

      append initrd=initrd.lz boot=live livecd-installer netboot=nfs nfsroot=192.168.114.128:/home/uos/isodir  locale=zh_CN.UTF-8

5) 启动TFTP

1 uos@uos-PC:~$ sudo systemctl start tftpd-hpa
2 
3 uos@uos-PC:~$ sudo systemctl enable tftpd-hpa

4.3. 搭建NFS

1) 安装NFS

1 uos@uos-PC:~$ sudo apt install nfs-kernel-server

2) 配置NFS

1 uos@uos-PC:/srv/tftp$ sudo vi /etc/exports
2 
3 /home/uos/isodir *(ro)

3) 启动NFS

1 uos@uos-PC:~$ sudo systemctl start nfs-kernel-server
2 
3 uos@uos-PC:~$ sudo systemctl enable nfs-kernel-server

4.4. 配置无人值守 

 1 uos@uos-PC:/srv/tftp$ vi  /home/uos/isodir/oem/settings.ini
 2 
 3 [General]
 4 
 5 # deb repository entry to be added in the sources.list file.
 6 
 7 apt_source_deb="deb-src https://professional-packages.chinauos.com/desktop-professional eagle main contrib non-free"
 8 
 9 skip_select_language_page = true
10 
11 skip_select_language_page_on_first_boot = true
12 
13 skip_select_component_page = true
14 
15 skip_system_info_page = true
16 
17 skip_partition_page = true
18 
19 skip_network_page=true
20 
21 skip_timezone_page=true
22 
23 skip_repair_system_page=true
24 
25 skip_virtual_machine_page=true
26 
27 partition_do_auto_part = true
28 
29 timezone_default = true
30 
31 timezone_default=Asia/Shanghai
32 
33 select_language_default_locale = zh_CN
34 
35 system_info_default_keyboard_layout = us
36 
37 system_info_setup_after_reboot = true
38 
39 system_info_default_username="didtx"
40 
41 system_info_default_hostname="didtx-PC"
42 
43 system_info_hostname_auto_suffix=-PC
44 
45 system_info_hostname_reserved=localhost
46 
47 system_info_default_password="zh**420427"

 

5. 无人值守验证

进入UOS2的BIOS页面选择网络启动:

 

 

 

  

6. 附录

6.1. setting.cfg文件说明

  1 #跳过语言选择界面
  2 
  3 skip_select_language_page = true
  4  
  5 
  6 #跳过后配置语言选择界面
  7 
  8 skip_select_language_page_on_first_boot = true
  9 
 10 
 11 #跳过组件选择界面
 12 
 13 skip_select_component_page = true
 14 
 15 
 16 #不跳过创建账户界面
 17 
 18 skip_system_info_page = false
 19 
 20 
 21 #跳过分区界面
 22 
 23 skip_partition_page = true
 24 
 25 
 26 #跳过网络设置界面
 27 
 28 skip_network_page=true
 29 
 30 
 31 #跳过时区设置界面
 32 
 33 skip_timezone_page=true
 34 
 35  
 36 #跳过系统修复界面
 37 
 38 skip_repair_system_page=true
 39 
 40 
 41 #跳过键盘布局选择界面
 42 
 43 skip_system_keyboard_page = true
 44 
 45 
 46 #不跳过虚拟机环境提示界面
 47 
 48 skip_virtual_machine_page=false
 49 
 50 
 51 #执行自动分区操作
 52 
 53 partition_do_auto_part = true
 54 
 55 
 56 #设置默认时区为亚洲/上海
 57 
 58 timezone_default=Asia/Shanghai
 59  
 60 
 61 #设置默认语言为中文
 62 
 63 select_language_default_locale = zh_CN
 64 
 65 
 66 #设置默认安装组件集类型为Server-Environment-with-GUI,目前组件集类型有:Basic-Server-Environment、Cloud-and-Virtualzalition、Big-Data、Server-Environment-with-GUI、Custom-Installation可以根据需要选择其中的一个
 67 
 68 
 69 #对于组件集的详细包含内容可以参见packages_default.json和packages_choice.json,如果拿到是服务版操作系统的iso镜像文件,则可在live目录找到packages_default.json和packages_choice.json,桌面版iso不需要配置该字段
 70 
 71 
 72 selected_component_install_type = Server-Environment-with-GUI
 73 
 74  
 75 #如果selected_component_install_type字段未指定则使用该字段指定的组件集类型,桌面版iso不需要配置该字段
 76 
 77 select_component_default_install_type = Server-Environment-with-GUI
 78 
 79 
 80 #设置默认键盘布局为us
 81 
 82 system_info_default_keyboard_layout = us
 83 
 84  
 85 #设置不使用后配置
 86 
 87 system_info_setup_after_reboot = false
 88 
 89 
 90 #设置是否将用户密码设置为root密码
 91 
 92 set_root_password_from_user = false
 93 
 94 
 95 #设置用户信息,指定用户名为“uos”
 96 
 97 system_info_default_username="uos"
 98 
 99 
100 #设置用户信息,指定主机名为“uos-PC”
101 
102 system_info_default_hostname="uos-PC"
103 
104 
105 #设置用户信息,指定主机名自动后缀为“-PC”
106 
107 system_info_hostname_auto_suffix=-PC
108 
109 
110 system_info_hostname_reserved=localhost
111 
112 
113 #设置用户信息,指定用户密码为“uos123“
114 
115 system_info_default_password="uos123"
116 
117 
118 DI_FULLDISK_MULTIDISK_DEVICE="/dev/sda;/dev/sdb"(注意:等号后面的 "/dev/sda;/dev/sdb"要用英文双引号包含起来 ) 其中指定了/dev/sda为系统盘,/dev/sdb为数据盘,目前要求系统盘和数据盘都要求至少64Gib
119 
120 在oem定制项目中可能出现配置了该字段,数据盘仍然不是data分区也没有自动挂载的情况,可能有两种原因:1.检查full_disk_policy.json中是否删除了data分区的设置,2.数据盘的空间是否大于等于64Gib。

 

posted on 2022-01-02 21:24  Cooper_73  阅读(2942)  评论(5编辑  收藏  举报

导航