掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
Live CD 對(duì)于很多任務(wù)是很有用的,例如:

成都創(chuàng)新互聯(lián)公司 - 服務(wù)器托管,四川服務(wù)器租用,成都服務(wù)器租用,四川網(wǎng)通托管,綿陽(yáng)服務(wù)器托管,德陽(yáng)服務(wù)器托管,遂寧服務(wù)器托管,綿陽(yáng)服務(wù)器托管,四川云主機(jī),成都云主機(jī),西南云主機(jī),服務(wù)器托管,西南服務(wù)器托管,四川/成都大帶寬,機(jī)柜大帶寬,四川老牌IDC服務(wù)商
作為使用 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)它們。
$ 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ò)展名的文件的基本名稱。用此方法,下面部分中命令將引用正確的文件。
使用 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
在你的 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 服務(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
backing-store $MY_FLDR/$MY_NAME.img
readonly 1
allow-in-use yes
END
# tgt-admin --update ALL
iPXE 啟動(dòng)加載程序有一個(gè) sanboot 命令,你可以使用它來(lái)連接并啟動(dòng)托管于你 ISCSI 服務(wù)器上運(yùn)行的 live 鏡像。它可以以很多不同的格式編譯。最好的工作格式依賴于你正在運(yùn)行的硬件。例如,下面的說(shuō)明向你展示如何在一個(gè) USB 驅(qū)動(dòng)器上從 syslinux 中 鏈?zhǔn)郊虞d 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í)行文件,并直接放置它到你的 ESP 中。又一種選項(xiàng)是編譯 iPXE 為一個(gè) PXE 加載器,并放置它到你的能夠被 DHCP 引用的 TFTP 服務(wù)器。最佳的選項(xiàng)依賴于的環(huán)境
–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è)用戶的可寫覆蓋。這與 “如何構(gòu)建一個(gè)網(wǎng)絡(luò)啟動(dòng)服務(wù)器,部分 4” 一文所示類似。persistenthome 選項(xiàng)(例如, persistenthome=LABEL=HOME)。與經(jīng)過(guò) CHAP 身份驗(yàn)證的 iSCSI 目標(biāo)一起使用,對(duì)于中心控制主目錄,persistenthome 選項(xiàng)為 NFS 提供一個(gè)有趣的替代方案。
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流