Live CD 對於很多工是很有用的,例如:
作為使用 DVD 和 USB 驅動器來儲存你的 Live CD 映象是一個替代方案,你可以上傳它們到一個不太可能丟失或損壞的 iSCSI 伺服器中。這個指南向你展示如何載入你的 Live CD 映象到一個 ISCSI 伺服器上,並使用 iPXE 啟動載入程式來存取它們。
$ 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
變數為不帶有擴充套件名的檔案的基本名稱。用此方法,下面部分中命令將參照正確的檔案。
使用 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
在你的 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 伺服器上執行下面的命令:
$ 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
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.cfgui menu.c32default $MY_NAMEtimeout 100menu title SYSLINUXlabel $MY_NAME menu label ${MY_NAME^^} kernel ipxe.lkrn append dhcp && sanboot iscsi:$MY_SRVR:::1:iqn.$MY_RVRS:$MY_NAMEEND # 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 伺服器。最佳的選項依賴於的環境
–filename \EFI\BOOT\grubx64.efi
引數到 sanboot
命令。–overlay-size-mb
和 –home-size-mb
引數到 livecd-iso-to-disk
命令來建立永久儲存的 live 映象。然而,如果你有多個並行使用者,你將需要設定你的 ISCSI 伺服器來管理獨立的每個使用者的可寫覆蓋。這與 “如何構建一個網路啟動伺服器,部分 4” 一文所示類似。persistenthome
選項(例如, persistenthome=LABEL=HOME
)。與經過 CHAP 身份驗證的 iSCSI 目標一起使用,對於中心控制主目錄,persistenthome
選項為 NFS 提供一個有趣的替代方案。