当前位置: 首页 > 科技观察

NetbootingFedoraLiveCD

时间:2023-03-22 15:58:29 科技观察

LiveCD对于许多任务都很有用,例如:将操作系统安装到硬盘驱动器修复引导加载程序或执行其他救援模式操作提供适合网络浏览的最小环境......等等。作为使用DVD和USB驱动器存储LiveCD映像的替代方法,您可以将它们上传到iSCSI服务器,这样丢失或损坏的可能性较小。本指南向您展示如何将LiveCD映像安装到ISCSI服务器并使用iPXE引导加载程序访问它们。下载LiveCD映像$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.isohttps://dl.fedoraproject.org/pub/archive/fedora/linux/releases/$MY_RLSE/Workstation/x86_64/iso/$MY_LIVE上面的命令下载Fedora-Workstation-Live-x86_64-27-1.6.isoFedoraLive镜像,保存为fc27.iso。更改MY_RLSE的值以下载其他存档版本。或者,您可以浏览到https://getfedora.org/下载最新的Fedora实时镜像。21之前的版本使用不同的命名约定,必须在此处手动下载。如果您手动下载了LiveCD映像,请将MY_NAME变量设置为不带扩展名的文件的基本名称。这样,以下部分中的命令将引用正确的文件。转换LiveCD镜像使用livecd-iso-to-disk工具将ISO文件转换为磁盘镜像,在嵌入式内核命令行中加入netroot参数:$sudodnfinstall-ylivecd-tools$MY_SIZE=$(du-ms$MY_NAME.iso|cut-f1)$ddif=/dev/zeroof=$MY_NAME.imgbs=1MiBcount=0seek=$(($MY_SIZE+512))$MY_SRVR=server-01.例子。edu$MY_RVRS=$(echo$MY_SRVR|tr'.'"\n"|tac|tr"\n"'.'|cut-b-${#MY_SRVR})$MY_LOOP=$(sudolosetup--show--nooverlap--find$MY_NAME.img)$sudolivecd-iso-to-disk--format--extra-kernel-argsnetroot=iscsi:$MY_SRVR:::1:iqn.$MY_RVRS:$MY_NAME$MY_NAME.iso$MY_LOOP$sudolosetup-d$MY_LOOP将实时图像上传到您的服务器在您的ISCSI服务器上创建一个目录来存储您的实时图像,然后将修改后的图像上传到该目录。对于版本21及更高版本:$MY_FLDR=/images$scp$MY_NAME.img$MY_SRVR:$MY_FLDR/对于版本21之前的版本:$MY_FLDR=/images$MY_LOOP=$(sudolosetup--show--nooverlap--find--partscan$MY_NAME.img)$sudotune2fs-O^has_journal${MY_LOOP}p1$sudoe2fsck${MY_LOOP}p1$sudoddstatus=noneif=${MY_LOOP}p1|ssh$MY_SRVR"ddof=$MY_FLDR/$MY_NAME.img"$sudolosetup-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</etc/tgt/conf.d/$MY_NAME.confbacking-store$MY_FLDR/$MY_NAME.img只读1allow-in-useyesEND#tgt-admin--updateALL创建一个可引导的USB驱动器iPXE引导加载程序有一个sanboot命令,您可以使用它来附加和引导托管在正在运行的ISCSI服务器上的实时映像。它可以编译成许多不同的格式。最佳格式取决于您运行的硬件。例如,下面的说明向您展示了如何从USB驱动器上的syslinux链接加载iPXE。首先,下载iPXE并以lkrn格式构建它。这应该作为工作站上的普通用户完成:$sudodnfinstall-ygit$gitclonehttp://git.ipxe.org/ipxe.git$HOME/ipxe$sudodnfgroupinstall-y"CDevelopmentToolsandLibraries"$cd$HOME/ipxe/src$makeclean$makebin/ipxe.lkrn$cpbin/ipxe.lkrn/tmp接下来准备一个带有MSDOS分区表和FAT32文件系统的U盘。以下命令假定您已连接要格式化的USB驱动器。注意:您需要一个正确格式化的驱动器!$sudo-i#dnfinstall-ypartedutil-linuxdosfstools#echo;找到/dev/disk/by-id!-regex'.*-part.*'-name'usb-*'-execreadlink-f{}\;|xargs-ibash-c"p??arted-s{}unitMiBprint|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-*'-execreadlink-f{}\;-quit)"-p"驱动器格式化:"MY_USB#umount$MY_USB?#wipefs-a$MY_USB#parted-s$MY_USBmklabelmsdosmkpartprimaryfat321MiB100%set1booton#mkfs-tvfat-F32${MY_USB}1最后,在USB驱动器上安装和配置syslinux以链式加载iPXE:#dnfinstall-ysyslinux-nonlinux#syslinux-i${MY_USB}1#ddif=/usr/share/syslinux/mbr.binof=${MY_USB}#MY_MNT=$(mktemp-d)#挂载${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.cfguimenu.c32default$MY_NAMEtimeout100menutitleSYSLINUXlabel$MY_NAME菜单标签${MY_NAME^^}kernelipxe.lkrnappenddhcp&&sanbootiscsi:$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服务器上。最佳选择取决于环境最后的注释如果您以IPXE的EFI格式编译IPXE,您可能需要将--filename\EFI\BOOT\grubx64.efi参数添加到sanboot命令。能够创建自定义实时图像。有关详细信息,请参阅创建和使用LiveCD。可以将--overlay-size-mb和--home-size-mb参数添加到livecd-iso-to-disk命令以创建用于永久存储的实时图像。但是,如果您有多个并发用户,则需要设置iSCSI服务器来管理独立的每用户可写覆盖。这类似于“如何构建网络引导服务器,第4部分”一文中显示的内容。实时图像在其内核命令行上支持persistenthome选项(例如,persistenthome=LABEL=HOME)。persistenthome选项与经过CHAP验证的iSCSI目标一起使用,为集中控制的主目录提供了一个有趣的NFS替代方案。