使用PXE方式引導Ubuntu系統

来源:http://www.cnblogs.com/yuzenghui/archive/2017/08/22/7414074.html
-Advertisement-
Play Games

一、何為PXE Preboot Eexcution Environment,簡稱PXE,暫且翻譯為預啟動執行環境。用一句話來概括PXE的功能——它能通過網路為電腦(特別是“裸機”)安裝操作系統。在PXE下,“裸機”的BIOS和網卡能通過網路來引導啟動自身,而不是通過傳統的磁碟引導方式。PXE的這種 ...



一、何為PXE

Preboot Eexcution Environment,簡稱PXE,暫且翻譯為預啟動執行環境。用一句話來概括PXE的功能——它能通過網路為電腦(特別是“裸機”)安裝操作系統。在PXE下,“裸機”的BIOS和網卡能通過網路來引導啟動自身,而不是通過傳統的磁碟引導方式。PXE的這種功能大大簡化了伺服器的部署和管理流程。

那麼在PXE下,一臺電腦如何引導啟動?這其中涉及到DHCP、NBP、TFTP等多項技術。這些技術細節將在文檔的後面部分講述,這裡以客戶機(client端,即裸機)為主體,大致介紹PXE的工作流程。

PXE工作流程

  1. client端向本網路的DHCP伺服器獲取IP及NBP的存放路徑
  2. client端向TFTP伺服器請求下載NBP
  3. client端執行NBP,並向TFTP伺服器請求下載系統鏡像、配置文件等
  4. client端根據配置文件,執行引導過程

二、註意事項

1. 本文檔中命令均以root身份執行!

2. 請不要直接複製本文檔中的命令!


三、配置環境

1. 配置server端

使用virtualbox創建一臺虛擬機,命名為pxe-server。它作為整個引導過程的服務端——同時充當DHCP服務端、TFTP服務端和HTTP服務端。

1.1 系統版本

ubuntu-16.04.2-server-amd64

1.2 網卡配置

安裝好系統後,對網卡進行如下配置。

1.2.1 網卡1

連接方式選擇“僅主機(Host-Only)網路”,隨意選擇一個界面名稱,我在這裡選擇的是192.168.202.0/24網段,混雜模式選擇“全部允許”。

1.2.2 網卡2

連接方式選擇“網路地址轉換(NAT)”。

編輯/etc/network/interfaces文件:

...
# The primary network interface
auto enp0s3
iface enp0s3 inet static
address 192.168.202.131
netmask 255.255.255.0

auto enp0s8
iface enp0s8 inet dhcp

重啟兩張網卡:

ifup enp0s3 enp0s8

2. 配置client端

使用virtualbox創建一臺虛擬機,命名為pxe-client。它實際上是一臺裸機,在整個引導過程中,在client端上起重要作用的是BIOS和網卡。

2.1 網卡配置

連接方式選擇“僅主機(Host-Only)網路”,選擇和server端相同的界面名稱,混雜模式選擇“全部允許”。


四、配置DHCP服務

在引導過程中,client端的BIOS會使用DHCP,向server端的DHCP伺服器發送請求,為client端的網卡申請到到一個IP地址,並且定位到網路引導程式(Network Bootstrap Program, NBP)在server端的存放路徑。關於NBP,地位等同於傳統磁碟引導中的boot loader,NBP在真實環境中的文件名一般為pxelinux.0

以下是server端上,配置DHCP服務的詳細步驟:

1. 安裝DHCP服務包

apt install isc-dhcp-server

2. 配置DHCP服務的網卡

編輯/etc/default/isc-dhcp-server文件(修改最後一行):

...
INTERFACES="enp0s3"

3. 配置IP地址池

編輯/etc/dhcp/dhcpd.conf文件(先註釋掉原有內容):

...
ddns-update-style interim;
ignore client-updates;
default-lease-time 600;
max-lease-time 7200;
allow booting;
allow bootp;
subnet 192.168.202.0 netmask 255.255.255.0 {
    range 192.168.202.200 192.168.202.250;
    option routers 192.168.202.131;
    option subnet-mask 255.255.255.0;
    # address of tftp server
    next-server 192.168.202.131;
    # name of NBP
    filename "pxelinux.0";
}

五、配置TFTP服務

TFTP是一個簡單的文件傳輸協議。在引導過程中,client端獲取到NBP的存放路徑後,使用TFTP從server端下載NBP,系統內核和文件系統也由TFTP伺服器提供。本文檔中,NBP將存放在TFTP伺服器的預設根目錄/var/lib/tftpboot下。

以下是server端上,配置TFTP服務的詳細步驟:

1. 安裝TFTP服務包

apt install inetutils-inetd tftpd-hpa pxelinux

2. 編輯/etc/inetd.conf文件

在最後一行添加:

tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot

3. 編輯/etc/default/tftpd-hpa文件

在最後添加:

RUN_DAEMON="yes"
OPTIONS="-l -s /var/lib/tftpboot"

4. 重啟TFTP服務

service tftp restart

六、配置HTTP服務

在server端,通過HTTP服務向client端提供系統安裝過程中需要的包。當然也可以使用FTP、NFS等其他方式。

1. 安裝HTTP服務包

apt install apache2

HTTP服務的根目錄預設為/var/www/html。


七、組建PXE服務環境

1. 掛載鏡像

在server端準備一份鏡像,並把它掛載到合適的路徑。

mkdir /media/cdrom
mount -o loop /root/ubuntu-16.04.2-server-amd64.iso /media/cdrom

註:我的鏡像存放在/root/目錄下,掛載到/media/cdrom目錄。

2. 拷貝鏡像文件

將鏡像文件、配置文件拷貝到適當路徑,如下:

cp -a /media/cdrom/install/netboot/* /var/lib/tftpboot/
cp -a /media/cdrom/* /var/www/html

3. 修改配置文件——default

編輯/var/lib/tftpboot/pxelinux.cfg/default文件,註釋掉其中以default開頭的一行。

編輯/var/lib/tftpboot/ubuntu-installer/amd64/boot-screens/txt.cfg文件(修改第6行):

...
append ks=http://192.168.202.131/ks.cfg vga=788 initrd=ubuntu-installer/amd64/initrd.gz --- quiet live-installer/net-image=http://192.168.202.131/install/filesystem.squashfs

4. 修改配置文件——ks.cfg

在/var/www/html/目錄下創建並編輯ks.cfg文件,進行如下最小化配置:

install
text
lang en_US
langsupport en_US
keyboard us
mouse
timezone --utc Asia/Shanghai
rootpw --disabled
user xxx --fullname="xxx" --password xxx
reboot
url --url http://192.168.202.131
bootloader --location=mbr
zerombr yes
clearpart --all --initlabel
part /boot --fstype ext4 --size 200
part swap --size 1024
part / --fstype ext4 --size 1 --grow
auth --useshadow --enablemd5
network --bootproto=dhcp --device=enp0s3 --onboot=on --nameserver=192.168.202.131
firewall --disabled
skipx
%packages
@^minimal
@core

八、啟動客戶機

啟動client端機器,按F12進入引導方式選擇界面,再按l開始網路引導,之後就進入自動部署安裝階段,OK!

註:引導初期,會有一次開機硬體自檢。這裡需要手動跳過為網卡設置nameserver的步驟。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1 #導入IIS管理模塊 2 Import-Module WebAdministration 3 4 5 #新建應用程式池 api.dd.com 6 New-Item iis:\AppPools\api.dd.com 7 Set-ItemProperty iis:\AppPools\api.dd.c ...
  • 最近根據項目需要寫了一段power shell的代碼 ,主要功能是批量重啟IIS 具體的 Power shell 服務如下: write-output 'Restarting IIS servers ................ ' $servers= 'server1' ,'Server2' ...
  • 為什麼這樣的 JSON會解析失敗? 為什麼界面上韓文顯示亂碼? ASCII和ANSI有什麼區別? 帶著這些問題查看了網上的很多資料,整理出了下麵的文章。本文只是從程式員的角度說一說自己對字元編碼的理解,所以有點地方淺嘗輒止,說的並不深入。 1. ASCII及其擴展 1.1 什麼是ASCII字元集 字 ...
  • 本文目錄: 1.1 判斷是否互動式、是否登錄式 1.2 幾種常見的bash啟動方式 1.3 載入bash環境配置文件 當用戶登錄系統時,會載入各種bash配置文件,還會設置或清空一系列變數,有時還會執行一些自定義的命令。這些行為都算是啟動bash時的過程。 另外,有些時候登錄系統是可以交互的(如正常 ...
  • linux中錄屏工具byzanz: 1、安裝 sudo apt install byzanz 2、使用 help:byzanz-record --help 配合xwininfo使用--xwininfo為linux系統自帶, 通過 xwininfo指令確定byzanz所需要的參數--x、y坐標,長、寬 ...
  • 說明 以下操作以Ubuntu為例,大家可以參考。 我在Ubuntu 14.04和16.04都試過了。 Windows共用文件夾 如果區域網內有一臺Windows主機,將指定文件夾設為共用,就可以在區域網內訪問了。 如果要從Linux下訪問該如何操作呢? 使用 mount.cifs Windows共用 ...
  • 命令簡介 cmd是command的縮寫.即命令行 。 雖然隨著電腦產業的發展,Windows 操作系統的應用越來越廣泛,DOS 面臨著被淘汰的命運,但是因為它運行安全、穩定,有的用戶還在使用,所以一般Windows 的各種版本都與其相容,用戶可以在Windows 系統下運行DOS,中文版Windo ...
  • 運維之linux基礎知識(一) 1.GUI:Graphic User Interface 圖形用戶界面 2.CLI:Command line Interface 命令行界面 3 dll:DynamicLinkLibrary 動態鏈接庫 4 so : shared object 共性對象 5指令說明: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...