1. 程式人生 > 其它 >UOS無人值守PXE系統安裝

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。