日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
搭建基于UbuntuServer的PXE自動(dòng)安裝環(huán)境的實(shí)用指南

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

成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),新沂企業(yè)網(wǎng)站建設(shè),新沂品牌網(wǎng)站建設(shè),網(wǎng)站定制,新沂網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,新沂網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿(mǎn)足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶(hù)成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

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

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

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

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

PXE 安裝流程

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

下圖是詳細(xì)的安裝流程。

上圖有幾個(gè)前提:

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

安裝必須的服務(wù)端軟件

  1. 安裝 DHCP、TFTP 服務(wù)器。dnsmasq 同時(shí)實(shí)現(xiàn)了 DHCP、TFTP、DNS 三種服務(wù)器

    sudo apt-get install dnsmasq

  2. 安裝 HTTP 服務(wù)器

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

    sudo apt-get install apache2

準(zhǔn)備啟動(dòng)文件

  1. 下載 UEFI 引導(dǎo)文件:shim.signedgrub-efi-amd64-signed
    apt-get download shim.signed
    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 服務(wù)的根目錄,PXE 啟動(dòng)過(guò)程中下載的文件都存在在該目錄中:

tftp
├── boot
│   └── live-server
│       ├── initrd
│       └── vmlinuz
├── grub
│   ├── bootx64.efi
│   ├── font.pf2
│   └── grub.cfg
└── grubx64.efi

說(shuō)明:

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

創(chuàng)建目錄

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

mkdir /home/mine/tftp
mkdir /home/mine/tftp/grub
mkdir /home/mine/tftp/boot
mkdir /home/mine/tftp/boot/live-server

獲取引導(dǎo)文件

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

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

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

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

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

    grub.cfg 拷貝過(guò)來(lái)做個(gè)參考,內(nèi)容會(huì)被全部修改掉。

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

配置 dnsmasq

關(guān)鍵配置有以下幾個(gè):

  1. 配置 DHCP 地址段
  2. 配置引導(dǎo)文件目錄
  3. 配置 tftp 根目錄
  4. 配置日志路徑
  5. 配置服務(wù)網(wǎng)卡,多網(wǎng)卡機(jī)器需關(guān)注
# 配置外網(wǎng) DNS 服務(wù)器地址
server=114.114.114.144

# 指定服務(wù)的網(wǎng)卡
interface=enp2s0,lo

# 綁定端口
bind-interfaces

# 設(shè)置 DHCP 分發(fā) IP 端范圍、地址掩碼、IP 地址有效時(shí)間
dhcp-range=192.168.1.100,192.168.1.150,255.255.255.0,12h

# 指定網(wǎng)關(guān)地址
# 和安裝無(wú)關(guān),應(yīng)該可以不配置
dhcp-option=3,192.168.1.9

# 指定 DNS 服務(wù)器地址
# 和安裝無(wú)關(guān),應(yīng)該可以不配置
dhcp-option=6,114.114.114.114

# 設(shè)置引導(dǎo)程序相對(duì) tftp 根目錄的路徑
dhcp-match=set:efi-x86_64,option:client-arch,7
dhcp-boot=tag:efi-x86_64,grub/bootx64.efi

# 啟用 tftp 服務(wù)
enable-tftp

# 設(shè)置 tftp 根路徑
tftp-root=/home/mine/tftp

# 設(shè)置日志路徑
log-facility=/var/log/dnsmasq.log

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

創(chuàng)建 HTTP 文件夾

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

html/
├── autoinstall
│   ├── meta-data
│   └── user-data
├── index.html
└── iso
    └── ubuntu-20.04.2-live-server-amd64.iso

說(shuō)明:

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

創(chuàng)建目錄

mkdir /var/www/html/autoinstall
mkdir /var/www/html/iso

拷貝 ISO 文件

到下載目錄拷貝 ISO 文件:

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

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

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

touch /var/www/html/autoinstall/user-data
touch /var/www/html/autoinstall/meta-data

配置 grub.cfg

if loadfont /grub/font.pf2 ; then
        set gfxmode=auto
        insmod efi_gop
        insmod efi_uga
        insmod gfxterm
        terminal_output gfxterm
fi

set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
set timeout=5

menuentry "Ubuntu server 20.04 autoinstall" {
        set gfxpayload=keep
        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
tall/ ---
        initrd /boot/live-server/initrd
}

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

  1. 指定鏡像文件相對(duì)于 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)絡(luò)存放路徑
  5. autoinstall ds=nocloud-net\;s=http://192.168.1.9/autoinstall/ --- 該配置指明參數(shù)自動(dòng)填寫(xiě),并指明配置文件所在路徑

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

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

配置 user-data

#cloud-config
autoinstall:
  version: 1
  # 修改apt 服務(wù)地址
  apt:
    primary:
    - arches: [default]
      uri: https://mirrors.tuna.tsinghua.edu.cn/ubuntu
  user-data:
    # 配置時(shí)區(qū)
    timezone: Asia/Shanghai
    # 去使能 root賬號(hào)
    disable_root: true
  # 配置用戶(hù)  
  identity:
    hostname: ubuntu-server
    password: "yours"
    username: ubuntu
  # 配置鍵盤(pán)  
  keyboard: {layout: us, variant: ''}
  locale: en_US.UTF-8
  # 配置代理
  proxy: http://192.168.1.112:3128
  # 默認(rèn)安裝ssh server
  ssh:
    install-server: true
  # 指定安裝的包
  packages:
    - net-tools
    - python3-pip
  # 配置磁盤(pán)分區(qū)
  storage:
    grub:
      reorder_uefi: False
    config:
    - {ptable: gpt, path: /dev/sda, wipe: superblock-recursive, preserve: false, name: '',
      grub_device: false, type: disk, id: disk-sda}
    - {device: disk-sda, size: 536870912, wipe: superblock, flag: boot, number: 1,
      preserve: false, grub_device: true, type: partition, id: partition-0}
    - {fstype: fat32, volume: partition-0, preserve: false, type: format, id: format-0}
    - {device: disk-sda, size: -1, wipe: superblock, flag: '', number: 2,
      preserve: false, type: partition, id: partition-1}
    - {fstype: ext4, volume: partition-1, preserve: false, type: format, id: format-1}
    - {device: format-1, path: /, type: mount, id: mount-1}
    - {device: format-0, path: /boot/efi, type: mount, id: mount-0}

說(shuō)明:

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

網(wǎng)絡(luò)拓?fù)?/h3>
  1. 我在電腦上搭建了 DHCP、TFTP、HTTP 三種服務(wù)
  2. 我在代理機(jī)上搭建了 squid,作為 HTTP 代理
  3. 目標(biāo)機(jī)器不能上網(wǎng),三臺(tái)機(jī)器在同一個(gè)局域網(wǎng)

配置靜態(tài) IP

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

# This is the network config written by 'subiquity'
network:
  ethernets:
    enp2s0:
      addresses:
      - 192.168.1.9/24
      gateway4: 192.168.1.1
      nameservers:
        addresses:
        - 114.114.114.114
        search:
        - 114.114.114.114

鳴謝

  1. 文章的基石來(lái)自 Grffion,沒(méi)有這篇文章我會(huì)摸索更長(zhǎng)時(shí)間
  2. 這篇 askubuntu 的討論 解決了坑
  3. user-data 磁盤(pán)分區(qū)配置來(lái)自 小崔

當(dāng)前文章:搭建基于UbuntuServer的PXE自動(dòng)安裝環(huán)境的實(shí)用指南
文章起源:http://www.5511xx.com/article/codcdds.html