對(duì)于很多任務(wù)是很有用的,例如:
作為使用 DVD 和 USB 驅(qū)動(dòng)器來(lái)存儲(chǔ)你的 Live CD 鏡像是一個(gè)替代方案,你可以上傳它們到一個(gè)不太可能丟失或損壞的 服務(wù)器中。這個(gè)指南向你展示如何加載你的 Live CD 鏡像到一個(gè) ISCSI 服務(wù)器上,并使用 啟動(dòng)加載程序來(lái)訪問(wè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)下載其它檔案版本?;蛘撸憧梢詾g覽 來(lái)下載最新的 Fedora live 鏡像。在 21 之前的版本使用不同的命名約定,必需。如果你手動(dòng)下載一個(gè) Live CD 鏡像,設(shè)置 MY_NAME
變量為不帶有擴(kuò)展名的文件的基本名稱。用此方法,下面部分中命令將引用正確的文件。
轉(zhuǎn)換 Live CD 鏡像
使用 livecd-iso-to-disk
工具來(lái)轉(zhuǎn)換 ISO 文件為一個(gè)磁盤鏡像,并添加 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 << 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
創(chuàng)建一個(gè)可啟動(dòng) USB 驅(qū)動(dòng)器
啟動(dòng)加載程序有一個(gè) 命令,你可以使用它來(lái)連接并啟動(dòng)托管于你 ISCSI 服務(wù)器上運(yùn)行的 live 鏡像。它可以以很多不同的編譯。最好的工作格式依賴于你正在運(yùn)行的硬件。例如,下面的說(shuō)明向你展示如何在一個(gè) USB 驅(qū)動(dòng)器上從 中 iPXE。
首先,下載 iPXE,并以它的 lkrn 格式構(gòu)建。這應(yīng)該作為一個(gè)工作站上的普通用戶完成:
$ 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 << 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
通過(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í)行文件,并直接放置它到你的 中。又一種選項(xiàng)是編譯 iPXE 為一個(gè) PXE 加載器,并放置它到你的能夠被 DHCP 引用的 TFTP 服務(wù)器。最佳的選項(xiàng)依賴于的環(huán)境
最后說(shuō)明
–filename \EFI\BOOT\grubx64.efi
參數(shù)到 sanboot
命令。–overlay-size-mb
和 –home-size-mb
參數(shù)到 livecd-iso-to-disk
命令來(lái)創(chuàng)建永久存儲(chǔ)的 live 鏡像。然而,如果你有多個(gè)并發(fā)用戶,你將需要設(shè)置你的 ISCSI 服務(wù)器來(lái)管理獨(dú)立的每個(gè)用戶的可寫覆蓋。這與 “” 一文所示類似。persistenthome
選項(xiàng)(例如, persistenthome=LABEL=HOME
)。與經(jīng)過(guò) CHAP 身份驗(yàn)證的 iSCSI 目標(biāo)一起使用,對(duì)于中心控制主目錄,persistenthome
選項(xiàng)為 NFS 提供一個(gè)有趣的替代方案。via:
作者: 選題: 譯者: 校對(duì):
聯(lián)系客服