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。