新聞中心
作為使用 DVD 和 USB 驅(qū)動(dòng)器來(lái)存儲(chǔ)你的 Live CD 鏡像是一個(gè)替代方案,你可以上傳它們到一個(gè)不太可能丟失或損壞的 iSCSI 服務(wù)器中。這個(gè)指南向你展示如何加載你的 Live CD 鏡像到一個(gè) ISCSI 服務(wù)器上,并使用 iPXE 啟動(dòng)加載程序來(lái)訪問(wèn)它們。

Live CD 對(duì)于很多任務(wù)是很有用的,例如:
將操作系統(tǒng)安裝到一個(gè)硬盤(pán)驅(qū)動(dòng)器 修復(fù)一個(gè)啟動(dòng)加載程序或執(zhí)行其它救援模式操作 為 Web 瀏覽提供一個(gè)相適應(yīng)的最小環(huán)境 …以及更多的東西。
下載一個(gè) 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 的值來(lái)下載其它檔案版本。或者,你可以瀏覽 https://getfedora.org/ 來(lái)下載最新的 Fedora live 鏡像。在 21 之前的版本使用不同的命名約定,必需在這里手動(dòng)下載。如果你手動(dòng)下載一個(gè) Live CD 鏡像,設(shè)置 MY_NAME 變量為不帶有擴(kuò)展名的文件的基本名稱(chēng)。用此方法,下面部分中命令將引用正確的文件。
轉(zhuǎn)換 Live CD 鏡像
使用 livecd-iso-to-disk 工具來(lái)轉(zhuǎn)換 ISO 文件為一個(gè)磁盤(pán)鏡像,并添加 netroot 參數(shù)到嵌入的內(nèi)核命令行:
$ 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 鏡像到你的服務(wù)器
在你的 ISCSI 服務(wù)器上創(chuàng)建一個(gè)目錄來(lái)存儲(chǔ)你的 live 鏡像,隨后上傳你修改的鏡像到其中。
對(duì)于 21 及更高發(fā)布版本:
$ MY_FLDR=/images
$ scp $MY_NAME.img $MY_SRVR:$MY_FLDR/
對(duì)于 21 以前發(fā)布版本:
$ 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 目標(biāo)
在你的 iSCSI 服務(wù)器上運(yùn)行下面的命令:
$ 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 /etc/tgt/conf.d/$MY_NAME.conf
backing-store $MY_FLDR/$MY_NAME.img
readonly 1
allow-in-use yes
END
# tgt-admin --update ALL
創(chuàng)建一個(gè)可啟動(dòng) USB 驅(qū)動(dòng)器
iPXE 啟動(dòng)加載程序有一個(gè) sanboot 命令,你可以使用它來(lái)連接并啟動(dòng)托管于你 ISCSI 服務(wù)器上運(yùn)行的 live 鏡像。它可以以很多不同的格式編譯。最好的工作格式依賴(lài)于你正在運(yùn)行的硬件。例如,下面的說(shuō)明向你展示如何在一個(gè) USB 驅(qū)動(dòng)器上從 syslinux 中 鏈?zhǔn)郊虞d iPXE。
首先,下載 iPXE,并以它的 lkrn 格式構(gòu)建。這應(yīng)該作為一個(gè)工作站上的普通用戶(hù)完成:
$ 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
接下來(lái),準(zhǔn)備一個(gè)帶有一個(gè) MSDOS 分區(qū)表和一個(gè) FAT32 文件系統(tǒng)的 USB 驅(qū)動(dòng)器。下面的命令假設(shè)你已經(jīng)連接將要格式化的 USB 驅(qū)動(dòng)器。注意:你要格式正確的驅(qū)動(dòng)器!
$ 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 驅(qū)動(dòng)器上安裝并配置 syslinux ,來(lái)鏈?zhǔn)郊虞d 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 $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
通過(guò)簡(jiǎn)單地編輯 syslinux.cfg 文件,并添加附加的菜單項(xiàng),你應(yīng)該能夠使用這同一個(gè) USB 驅(qū)動(dòng)器來(lái)網(wǎng)絡(luò)啟動(dòng)附加的 ISCSI 目標(biāo)。
這僅是加載 IPXE 的一種方法。你可以直接在你的工作站上安裝 syslinux 。再一種選項(xiàng)是編譯 iPXE 為一個(gè) EFI 可執(zhí)行文件,并直接放置它到你的 ESP 中。又一種選項(xiàng)是編譯 iPXE 為一個(gè) PXE 加載器,并放置它到你的能夠被 DHCP 引用的 TFTP 服務(wù)器。最佳的選項(xiàng)依賴(lài)于的環(huán)境
最后說(shuō)明
如果你以 IPXE 的 EFI 格式編譯 IPXE ,你可能想添加 –filename \EFI\BOOT\grubx64.efi 參數(shù)到 sanboot 命令。 能夠創(chuàng)建自定義 live 鏡像。更多信息參考創(chuàng)建和使用 live CD。 可以添加 –overlay-size-mb 和 –home-size-mb 參數(shù)到 livecd-iso-to-disk 命令來(lái)創(chuàng)建永久存儲(chǔ)的 live 鏡像。然而,如果你有多個(gè)并發(fā)用戶(hù),你將需要設(shè)置你的 ISCSI 服務(wù)器來(lái)管理獨(dú)立的每個(gè)用戶(hù)的可寫(xiě)覆蓋。這與 “如何構(gòu)建一個(gè)網(wǎng)絡(luò)啟動(dòng)服務(wù)器,部分 4” 一文所示類(lèi)似。 Live 鏡像在它們的內(nèi)核命令行中支持一個(gè) persistenthome 選項(xiàng)(例如, persistenthome=LABEL=HOME)。與經(jīng)過(guò) CHAP 身份驗(yàn)證的 iSCSI 目標(biāo)一起使用,對(duì)于中心控制主目錄,persistenthome 選項(xiàng)為 NFS 提供一個(gè)有趣的替代方案。
當(dāng)前名稱(chēng):制作FedoraLiveCD具體流程
標(biāo)題網(wǎng)址:http://fisionsoft.com.cn/article/djsjgho.html


咨詢(xún)
建站咨詢(xún)
