網路啟動一個 Fedora Live CD
Live CD 對於很多工是很有用的,例如:
- 將作業系統安裝到一個硬碟驅動器
- 修復一個啟動載入程式或執行其它救援模式操作
- 為 Web 瀏覽提供一個相適應的最小環境
- …以及更多的東西。
作為使用 DVD 和 USB 驅動器來儲存你的 Live CD 映象是一個替代方案,你可以上傳它們到一個不太可能丟失或損壞的 iSCSI 伺服器中。這個指南向你展示如何載入你的 Live CD 映象到一個 ISCSI 伺服器上,並使用 iPXE 啟動載入程式來訪問它們。
下載一個 Live CD 映象
$ MY_RLSE=27
$ MY_LIVE=$(wget -q -O - https://dl.fedoraproject.org/pub/archive/fedora/linux/releases/$MY_RLSE/Workstation/x86_64/iso | perl -ne '/(Fedora[^ ]*?-Live-[^ ]*?\.iso)(?{print $^N})/;')
$ MY_NAME=fc$MY_RLSE
$ wget -O $MY_NAME.iso https://dl.fedoraproject.org/pub/archive/fedora/linux/releases/$MY_RLSE/Workstation/x86_64/iso/$MY_LIVE
上面的命令下載 Fedora-Workstation-Live-x86_64-27-1.6.iso
Fedora Live 映象,並儲存為 fc27.iso
。更改 MY_RLSE
的值來下載其它檔案版本。或者,你可以瀏覽 https://getfedora.org/ 來下載最新的 Fedora live 映象。在 21 之前的版本使用不同的命名約定,必需在這裡手動下載。如果你手動下載一個 Live CD 映象,設定 MY_NAME
變數為不帶有副檔名的檔案的基本名稱。用此方法,下面部分中命令將引用正確的檔案。
轉換 Live CD 映象
使用 livecd-iso-to-disk
工具來轉換 ISO 檔案為一個磁碟映象,並新增 netroot
引數到嵌入的核心命令列:
$ sudo dnf install -y livecd-tools
$ MY_SIZE=$(du -ms $MY_NAME.iso | cut -f 1)
$ dd if=/dev/zero of=$MY_NAME.img bs=1MiB count=0 seek=$(($MY_SIZE+512))
$ MY_SRVR=server-01.example.edu
$ MY_RVRS=$(echo $MY_SRVR | tr '.' "\n" | tac | tr "\n" '.' | cut -b -${#MY_SRVR})
$ MY_LOOP=$(sudo losetup --show --nooverlap --find $MY_NAME.img)
$ sudo livecd-iso-to-disk --format --extra-kernel-args netroot=iscsi:$MY_SRVR:::1:iqn.$MY_RVRS:$MY_NAME $MY_NAME.iso $MY_LOOP
$ sudo losetup -d $MY_LOOP
上傳 Live 映象到你的伺服器
在你的 ISCSI 伺服器上建立一個目錄來儲存你的 live 映象,隨後上傳你修改的映象到其中。
對於 21 及更高發布版本:
$ MY_FLDR=/images
$ scp $MY_NAME.img $MY_SRVR:$MY_FLDR/
對於 21 以前釋出版本:
$ MY_FLDR=/images
$ MY_LOOP=$(sudo losetup --show --nooverlap --find --partscan $MY_NAME.img)
$ sudo tune2fs -O ^has_journal ${MY_LOOP}p1
$ sudo e2fsck ${MY_LOOP}p1
$ sudo dd status=none if=${MY_LOOP}p1 | ssh $MY_SRVR "dd of=$MY_FLDR/$MY_NAME.img"
$ sudo losetup -d $MY_LOOP
定義 iSCSI 目標
在你的 iSCSI 伺服器上執行下面的命令:
$ sudo -i
# MY_NAME=fc27
# MY_FLDR=/images
# MY_SRVR=`hostname`
# MY_RVRS=$(echo $MY_SRVR | tr '.' "\n" | tac | tr "\n" '.' | cut -b -${#MY_SRVR})
# cat << END > /etc/tgt/conf.d/$MY_NAME.conf
<target iqn.$MY_RVRS:$MY_NAME>
backing-store $MY_FLDR/$MY_NAME.img
readonly 1
allow-in-use yes
</target>
END
# tgt-admin --update ALL
建立一個可啟動 USB 驅動器
iPXE 啟動載入程式有一個 sanboot 命令,你可以使用它來連線並啟動託管於你 ISCSI 伺服器上執行的 live 映象。它可以以很多不同的格式編譯。最好的工作格式依賴於你正在執行的硬體。例如,下面的說明向你展示如何在一個 USB 驅動器上從 syslinux 中 鏈式載入 iPXE。
首先,下載 iPXE,並以它的 lkrn 格式構建。這應該作為一個工作站上的普通使用者完成:
$ sudo dnf install -y git
$ git clone http://git.ipxe.org/ipxe.git $HOME/ipxe
$ sudo dnf groupinstall -y "C Development Tools and Libraries"
$ cd $HOME/ipxe/src
$ make clean
$ make bin/ipxe.lkrn
$ cp bin/ipxe.lkrn /tmp
接下來,準備一個帶有一個 MSDOS 分割槽表和一個 FAT32 檔案系統的 USB 驅動器。下面的命令假設你已經連線將要格式化的 USB 驅動器。注意:你要格式正確的驅動器!
$ sudo -i
# dnf install -y parted util-linux dosfstools
# echo; find /dev/disk/by-id ! -regex '.*-part.*' -name 'usb-*' -exec readlink -f {} \; | xargs -i bash -c "parted -s {} unit MiB print | perl -0 -ne '/^Model: ([^(]*).*\n.*?([0-9]*MiB)/i && print \"Found: {} = \$2 \$1\n\"'"; echo; read -e -i "$(find /dev/disk/by-id ! -regex '.*-part.*' -name 'usb-*' -exec readlink -f {} \; -quit)" -p "Drive to format: " MY_USB
# umount $MY_USB?
# wipefs -a $MY_USB
# parted -s $MY_USB mklabel msdos mkpart primary fat32 1MiB 100% set 1 boot on
# mkfs -t vfat -F 32 ${MY_USB}1
最後,在 USB 驅動器上安裝並配置 syslinux ,來鏈式載入 iPXE:
# dnf install -y syslinux-nonlinux
# syslinux -i ${MY_USB}1
# dd if=/usr/share/syslinux/mbr.bin of=${MY_USB}
# MY_MNT=$(mktemp -d)
# mount ${MY_USB}1 $MY_MNT
# MY_NAME=fc27
# MY_SRVR=server-01.example.edu
# MY_RVRS=$(echo $MY_SRVR | tr '.' "\n" | tac | tr "\n" '.' | cut -b -${#MY_SRVR})
# cat << END > $MY_MNT/syslinux.cfg
ui menu.c32
default $MY_NAME
timeout 100
menu title SYSLINUX
label $MY_NAME
menu label ${MY_NAME^^}
kernel ipxe.lkrn
append dhcp && sanboot iscsi:$MY_SRVR:::1:iqn.$MY_RVRS:$MY_NAME
END
# cp /usr/share/syslinux/menu.c32 $MY_MNT
# cp /usr/share/syslinux/libutil.c32 $MY_MNT
# cp /tmp/ipxe.lkrn $MY_MNT
# umount ${MY_USB}1
透過簡單地編輯 syslinux.cfg
檔案,並新增附加的選單項,你應該能夠使用這同一個 USB 驅動器來網路啟動附加的 ISCSI 目標。
這僅是載入 IPXE 的一種方法。你可以直接在你的工作站上安裝 syslinux 。再一種選項是編譯 iPXE 為一個 EFI 可執行檔案,並直接放置它到你的 ESP 中。又一種選項是編譯 iPXE 為一個 PXE 載入器,並放置它到你的能夠被 DHCP 引用的 TFTP 伺服器。最佳的選項依賴於的環境
最後說明
- 如果你以 IPXE 的 EFI 格式編譯 IPXE ,你可能想新增
–filename \EFI\BOOT\grubx64.efi
引數到sanboot
命令。 - 能夠建立自定義 live 映象。更多資訊參考建立和使用 live CD。
- 可以新增
–overlay-size-mb
和–home-size-mb
引數到livecd-iso-to-disk
命令來建立永久儲存的 live 映象。然而,如果你有多個併發使用者,你將需要設定你的 ISCSI 伺服器來管理獨立的每個使用者的可寫覆蓋。這與 “如何構建一個網路啟動伺服器,部分 4” 一文所示類似。 - Live 映象在它們的核心命令列中支援一個
persistenthome
選項(例如,persistenthome=LABEL=HOME
)。與經過 CHAP 身份驗證的 iSCSI 目標一起使用,對於中心控制主目錄,persistenthome
選項為 NFS 提供一個有趣的替代方案。
via: https://fedoramagazine.org/netboot-a-fedora-live-cd/
作者:Gregory Bartholomew 選題:lujun9972 譯者:robsean 校對:wxy
本文由 LCTT 原創編譯,Linux中國 榮譽推出
相關文章
- Fedora網路介面名稱如何修改?Fedora修改網路介面名稱的方法
- 硬碟安裝Fedora 22 Workstation Live的教程硬碟
- “一帶一路”大型網路主題活動在陝西西安啟動
- host 網路模式啟動 Jenkins 映象模式Jenkins
- 105-指令碼啟動網路指令碼
- 打造一個啟動介面
- ChainDesk:一分鐘啟動我們的分散式網路AI分散式
- CentOS自動開啟網路連線CentOS
- PXE 和 計算機網路啟動計算機網路
- 移動網際網路的下一個浪潮已經來臨
- 服務啟動一個程式
- Fedora 14系統中的虛擬化網路詳解
- WDS+MDT網路啟動自動部署windows(一)實驗環境介紹Windows
- 製作基於debian的linux live啟動u盤(UEFI)Linux
- 如何在 Fedora 上建立一個 TFTP 伺服器FTP伺服器
- 一個 GitLab CI/CD 的學習筆記Gitlab筆記
- 移動網際網路下半場小程式開啟產業網際網路時代產業
- 如何設計“.NET研究”一個簡結的移動網際網路站
- 啟動電路
- WDS+MDT網路啟動自動部署windows(七)新增驅動Windows
- 冬奧網路安全衛士招募正式啟動!
- fabric網路環境啟動過程詳解
- 第一個能在裝置重啟後繼續存活的殭屍網路
- 用一個智慧魔方,轉動IP網路的時代變局
- 3.1.4 準備啟動一個例項
- android app 啟動第一個頁面AndroidAPP
- Substrate 區塊鏈開發之本地網路啟動區塊鏈
- open in live server無法正常開啟Server
- 怎麼在 Fedora 中建立我的第一個 RPM 包?
- WDS+MDT網路啟動自動部署windows(十)新增軟體Windows
- 如何自己寫一個網路爬蟲爬蟲
- 長三角首個AI+工業網際網路產業基地啟動,百度文心一言來了!AI產業
- [一個網際網路思想信徒]:今天突破69個聽眾
- Jenkins與Docker的自動化CI/CD實戰(一)JenkinsDocker
- Lyft啟動IPO路演:美國網約車平臺Lyft啟動IPO路演最多籌資20億美元
- win10如何啟動network list_win10怎麼啟動網路列表服務Win10
- 聚焦網路安全:啟明星辰嚴望佳在兩會的三個網路安全提案
- 網路版“瑞士軍刀”!一個多功能的網路工具箱!