自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

搭建基于Ubuntu Server的PXE自動安裝環(huán)境的實用指南

運維 系統(tǒng)運維
本文,我想講的是在 Ubuntu 20.04 Server 上搭建一套自動安裝 Ubuntu 20.04 Server 的部署環(huán)境。

[[418265]]

Ubuntu 在不斷進化,從 20.04 開始,Ubuntu 決定更新實時服務器安裝程序,只用 Subiquity 就能完全完成操作系統(tǒng)及附加程序的自動安裝。以前用的 kickstart、debian-installer 都不是 Ubuntu 自家技術,用起來也不是很方便。

同時,PXE 技術雖然出來很久了,但是整個安裝過程還不是特別順暢,隨著 Ubuntu 升級到 20.04,使用 cloud-init 安裝配置實現(xiàn) Subiquity 參數(shù)的自動填寫,整個過程變得些微優(yōu)雅起來,讓我有較大興趣嘗試使用 PXE 安裝 Ubuntu 20.04 Server。

本文,我想講的是在 Ubuntu 20.04 Server 上搭建一套自動安裝 Ubuntu 20.04 Server 的部署環(huán)境,其主要內(nèi)容有兩部分:

  1. 使用 PXE 自動從網(wǎng)絡加載安裝程序,發(fā)起安裝。
  2. 使用 Ubuntu 的自動安裝功能,自動加載 cloud-init 安裝配置,完成操作系統(tǒng)的自動選擇。

第一部分所有操作系統(tǒng)應該都是一樣的,第二部分和 Ubuntu 20.04 版本緊密相關,其他的操作系統(tǒng)需要考慮其他方法。

PXE 安裝流程

PXE(預啟動執(zhí)行環(huán)境Pre-boot Execution Environment)的實現(xiàn)依賴于網(wǎng)卡,只有支持 PXE 客戶端的網(wǎng)卡才能實現(xiàn)網(wǎng)絡自動安裝。這種網(wǎng)卡實現(xiàn)了 DHCP 客戶端和 TFTP 客戶端,在 BIOS 的引導下通過 DHCP 協(xié)議自動分配 IP 地址,通過 TFTP 獲取最小內(nèi)核,然后在最小內(nèi)核環(huán)境下通過 HTTP 協(xié)議或 NFS 協(xié)議獲取 Ubuntu 安裝版本。之后最小內(nèi)核引導進行 Ubuntu 20.04 的安裝。

下圖是詳細的安裝流程。 

上圖有幾個前提:

  1. 網(wǎng)卡支持 PXE,今年新出的網(wǎng)卡基本都支持,同時 BIOS 的啟動項也要配置,請大家自行研究。
  2. UEFI 啟動才會請求 bootx64.efi,如果是傳統(tǒng)啟動模式Legacy),那么 PXE 客戶端會請求 pxelinux.0。
  3. 可以采用 nfsboot 方式,這個流程采用的是 ISO 鏡像下載再安裝的方式。

安裝必須的服務端軟件

  1. 安裝 DHCP、TFTP 服務器。dnsmasq 同時實現(xiàn)了 DHCP、TFTP、DNS 三種服務器
    1. sudo apt-get install dnsmasq 
  2. 安裝 HTTP 服務器

    HTTP 服務器有很多,大家可以使用自己的熟悉的服務器如 Nginx,這里使用的是apache2

    1. sudo apt-get install apache2 

準備啟動文件

  1. 下載 UEFI 引導文件:shim.signed、grub-efi-amd64-signed
    1. apt-get download shim.signed
    2. apt-get download grub-efi-amd64-signed
  2. 下載 Ubuntu 20.04 Server ISO 鏡像

    直接去官網(wǎng)下載,我下載的是 ubuntu-20.04.2-live-server-amd64.iso,需要注意的是只有 Live 版本才能支持 subiquity。

創(chuàng)建 TFTP 文件夾

TFTP 文件夾是 TFTP 服務的根目錄,PXE 啟動過程中下載的文件都存在在該目錄中:

  1. tftp
  2. ├── boot
  3.    └── live-server
  4.    ├── initrd
  5.    └── vmlinuz
  6. ├── grub
  7.    ├── bootx64.efi
  8.    ├── font.pf2
  9.    └── grub.cfg
  10. └── grubx64.efi

說明:

  1. bootx64.efi、grubx64.efi 引導程序來自 shim.signed 安裝包
  2. grub.cfg 自行創(chuàng)建
  3. 其他文件來自 Ubuntu 安裝包
  4. 這五個文件是需要的,但是目錄結(jié)構(gòu)是自行創(chuàng)建的,大家可以根據(jù)自己的喜好修改

創(chuàng)建目錄

在 /home/mine(可根據(jù)實際情況修改)目錄下創(chuàng)建 tftp 目錄:

  1. mkdir /home/mine/tftp
  2. mkdir /home/mine/tftp/grub
  3. mkdir /home/mine/tftp/boot
  4. mkdir /home/mine/tftp/boot/live-server

獲取引導文件

  1. 在安裝包下載目錄創(chuàng)建一個 shim 文件夾
  2. 解壓 shim 安裝包到 shim文件夾:dpkg -x <%剛才下載的shim.signed 安裝包包名%> shim
  3. 解壓 grub 安裝包到 grub 文件夾
  4. 拷貝引導文件到 tftp目錄
  1. cp ./sgrub/usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed /home/mine/tftp/grubx64.efi
  2. cp ./shim/usr/lib/shim/shimx64.efi.signed /home/mine/tftp/grub/bootx64.efi

獲取內(nèi)核鏡像文件

  1. 在下載目錄掛載 ISO 文件
    1. sudo mount ubuntu-20.04.2.0-desktop-amd64.iso /media

    系統(tǒng)會提示只讀,不影響使用。

    1. mount: /media: WARNING: device write-protected, mounted read-only.
  2. 拷貝內(nèi)核鏡像文件
    1. cp /media/casper/initrd /home/mine/tftp/boot/live-server
    2. cp /media/casper/vmlinuz /home/mine/tftp/boot/live-server
  3. 拷貝 grub 文件

    grub.cfg 拷貝過來做個參考,內(nèi)容會被全部修改掉。

    1. cp /media/grub/font.pf2 /home/mine/tftp/grub
    2. cp /media/grub/grub.cfg /home/mine/tftp/grub

配置 dnsmasq

關鍵配置有以下幾個:

  1. 配置 DHCP 地址段
  2. 配置引導文件目錄
  3. 配置 tftp 根目錄
  4. 配置日志路徑
  5. 配置服務網(wǎng)卡,多網(wǎng)卡機器需關注
  1. # 配置外網(wǎng) DNS 服務器地址
  2. server=114.114.114.144
  3.  
  4. # 指定服務的網(wǎng)卡
  5. interface=enp2s0,lo
  6.  
  7. # 綁定端口
  8. bind-interfaces
  9.  
  10. # 設置 DHCP 分發(fā) IP 端范圍、地址掩碼、IP 地址有效時間
  11. dhcp-range=192.168.1.100,192.168.1.150,255.255.255.0,12h
  12.  
  13. # 指定網(wǎng)關地址
  14. # 和安裝無關,應該可以不配置
  15. dhcp-option=3,192.168.1.9
  16.  
  17. # 指定 DNS 服務器地址
  18. # 和安裝無關,應該可以不配置
  19. dhcp-option=6,114.114.114.114
  20.  
  21. # 設置引導程序相對 tftp 根目錄的路徑
  22. dhcp-match=set:efi-x86_64,option:client-arch,7
  23. dhcp-boot=tag:efi-x86_64,grub/bootx64.efi
  24.  
  25. # 啟用 tftp 服務
  26. enable-tftp
  27.  
  28. # 設置 tftp 根路徑
  29. tftp-root=/home/mine/tftp
  30.  
  31. # 設置日志路徑
  32. log-facility=/var/log/dnsmasq.log

修改配置后,重啟 dnsmasq 服務才能生效。

創(chuàng)建 HTTP 文件夾

Apache2 的默認服務根目錄是 /var/www/html,在其下創(chuàng)建目錄:

  1. html/
  2. ├── autoinstall
  3.    ├── meta-data
  4.    └── user-data
  5. ├── index.html
  6. └── iso
  7. └── ubuntu-20.04.2-live-server-amd64.iso

說明:

  1. autoinstall 目錄存放參數(shù)自動配置文件,user-data、meta-data 是cloud-init 要求的文件名
  2. iso 目錄存放操作系統(tǒng)鏡像文件

創(chuàng)建目錄

  1. mkdir /var/www/html/autoinstall
  2. mkdir /var/www/html/iso

拷貝 ISO 文件

到下載目錄拷貝 ISO 文件:

  1. cp ubuntu-20.04.2-live-server-amd64.iso /var/www/html/iso

創(chuàng)建參數(shù)自動配置文件

先創(chuàng)建空文件,meta-data 無需修改,user-data 后續(xù)會詳細描述配置。

  1. touch /var/www/html/autoinstall/user-data
  2. touch /var/www/html/autoinstall/meta-data

配置 grub.cfg

  1. if loadfont /grub/font.pf2 ; then
  2. set gfxmode=auto
  3. insmod efi_gop
  4. insmod efi_uga
  5. insmod gfxterm
  6. terminal_output gfxterm
  7. fi
  8.  
  9. set menu_color_normal=white/black
  10. set menu_color_highlight=black/light-gray
  11. set timeout=5
  12.  
  13. menuentry "Ubuntu server 20.04 autoinstall" {
  14. set gfxpayload=keep
  15. linux /boot/live-server/vmlinuz root=/dev/ram0 ramdisk_size=1500000 ip=dhcp url='http://192.168.1.9/iso/ubuntu-20.04.2-live-server-amd64.iso' autoinstall ds=nocloud-net\;s=http://192.168.1.9/autoins
  16. tall/ ---
  17. initrd /boot/live-server/initrd
  18. }
  19.  

menuentry 之前是配置樣式,也可以刪除,重點關注 menuentry "Ubuntu server 20.04 autoinstall" 內(nèi)的配置:

  1. 指定鏡像文件相對于 tftp 根目錄的路徑 /boot/live-server/initrd
  2. root=/dev/ram0 ramdisk_size=1500000 為了指定內(nèi)核鏡像掛載空間,是否可刪除我不確定
  3. ip=dhcp 指定內(nèi)核鏡像掛載后使用 DHCP 獲取 IP 地址
  4. url= 指定 ISO 文件的網(wǎng)絡存放路徑
  5. autoinstall ds=nocloud-net\;s=http://192.168.1.9/autoinstall/ --- 該配置指明參數(shù)自動填寫,并指明配置文件所在路徑

網(wǎng)上很多文章配置是這么寫的 ds=nocloud-net;s=http://192.168.1.9/autoinstall/,我試了很多次,都沒有自動安裝。

在網(wǎng)上查到,由于 UEFI 啟動使用了 grub,它將 ; 識別為了特殊字符,所以要在 ;前加 \ 轉(zhuǎn)義。

配置 user-data

  1. #cloud-config
  2. autoinstall:
  3. version: 1
  4. # 修改apt 服務地址
  5. apt:
  6. primary:
  7. - arches: [default]
  8. uri: https://mirrors.tuna.tsinghua.edu.cn/ubuntu
  9. user-data:
  10. # 配置時區(qū)
  11. timezone: Asia/Shanghai
  12. # 去使能 root賬號
  13. disable_root: true
  14. # 配置用戶
  15. identity:
  16. hostname: ubuntu-server
  17. password: "yours"
  18. username: ubuntu
  19. # 配置鍵盤
  20. keyboard: {layout: us, variant: ''}
  21. locale: en_US.UTF-8
  22. # 配置代理
  23. proxy: http://192.168.1.112:3128
  24. # 默認安裝ssh server
  25. ssh:
  26. install-server: true
  27. # 指定安裝的包
  28. packages:
  29. - net-tools
  30. - python3-pip
  31. # 配置磁盤分區(qū)
  32. storage:
  33. grub:
  34. reorder_uefi: False
  35. config:
  36. - {ptable: gpt, path: /dev/sda, wipe: superblock-recursive, preserve: false, name: '',
  37. grub_device: false, type: disk, id: disk-sda}
  38. - {device: disk-sda, size: 536870912, wipe: superblock, flag: boot, number: 1,
  39. preserve: false, grub_device: true, type: partition, id: partition-0}
  40. - {fstype: fat32, volume: partition-0, preserve: false, type: format, id: format-0}
  41. - {device: disk-sda, size: -1, wipe: superblock, flag: '', number: 2,
  42. preserve: false, type: partition, id: partition-1}
  43. - {fstype: ext4, volume: partition-1, preserve: false, type: format, id: format-1}
  44. - {device: format-1, path: /, type: mount, id: mount-1}
  45. - {device: format-0, path: /boot/efi, type: mount, id: mount-0}
  46.  

說明:

  1. 密碼需要加密,可以先用工具對自己的密碼進行加密后填入
  2. 代理不是必須的配置,與網(wǎng)絡拓撲有關
  3. 磁盤分區(qū)配置要注意,配置不對會導致自動安裝走不下去,提示 crash;這個配置的整體思路是先格式化 disk-sda,然后在 disk-sda 下劃分 /dev/sda1、/dev/sda2 ,然后分別掛載 /、/boot/efi 目錄
  4. 安裝過程日志在 /var/log/installer/,如果安裝失敗可以通過 nc 等工具實時發(fā)出去

網(wǎng)絡拓撲

  1. 我在電腦上搭建了 DHCP、TFTP、HTTP 三種服務
  2. 我在代理機上搭建了 squid,作為 HTTP 代理
  3. 目標機器不能上網(wǎng),三臺機器在同一個局域網(wǎng)

配置靜態(tài) IP

在服務機開始服務前,需要在提供服務的網(wǎng)卡上配置靜態(tài) IP,Ubuntu 20.04 配置 netplan 即可,參考以下配置修改文件 /etc/netplan/00-installer-config.yaml,修改完成后執(zhí)行 netplan apply 配置即可生效。

  1. # This is the network config written by 'subiquity'
  2. network:
  3. ethernets:
  4. enp2s0:
  5. addresses:
  6. - 192.168.1.9/24
  7. gateway4: 192.168.1.1
  8. nameservers:
  9. addresses:
  10. - 114.114.114.114
  11. search:
  12. - 114.114.114.114

鳴謝

  1. 文章的基石來自 Grffion,沒有這篇文章我會摸索更長時間
  2. 這篇 askubuntu 的討論 解決了坑
  3. user-data 磁盤分區(qū)配置來自 小崔 

 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2011-09-01 19:06:57

UbuntuLua安裝環(huán)境

2009-06-29 15:09:00

Java環(huán)境搭建Ubuntu

2018-03-02 16:30:30

2009-06-17 17:02:22

2011-03-10 10:55:38

Ubuntu搭建LAMP

2011-03-15 15:51:12

netfilteriptables

2011-07-28 14:00:45

Ubuntu

2009-12-16 09:47:24

Ubuntu9.04CUDA

2011-03-14 10:30:15

Ubuntu10.04LAMP

2010-04-03 11:30:15

Widget開發(fā)

2014-02-10 15:30:10

PXEUEFI PXE遠程安裝

2011-03-10 10:51:45

Ubuntu搭建LAMP

2011-03-30 14:07:56

Ubuntu的安裝

2011-01-14 13:40:24

UbuntuLinux Tips

2016-03-02 09:50:09

docker測試環(huán)境

2011-03-01 17:26:21

2009-06-10 16:30:05

基于Eclipse的PWindows

2012-03-07 11:30:09

PhoneGapWindows Pho

2010-09-07 17:27:54

Carbide.c++Symbian移動開發(fā)

2013-08-27 14:45:30

CouchbaseCouchbase環(huán)境測試
點贊
收藏

51CTO技術棧公眾號