我有一台存储有可启动ISO的计算机,另外一台空白计算机要安装ISO。它们都在同一LAN(连接到同一交换机)上。如何从存储在主计算机上的ISO引导空白计算机?
我有一台存储有可启动ISO的计算机,另外一台空白计算机要安装ISO。它们都在同一LAN(连接到同一交换机)上。如何从存储在主计算机上的ISO引导空白计算机?
Answers:
我认为您想要从ISO映像启动pxe的方法。我搜索了一下,找到了这篇文章。我相信该方法应该适用于您可能拥有的任何可启动ISO映像。这是另一篇类似的文章。
最后,似乎本文讨论了如何从Windows运行的PXE(预启动执行环境)服务器执行此操作。
是的,这很有可能。您可以引导的系统类型将取决于所述系统的工作方式。
通常,您会发现非常简单的系统(例如DOS或Win98)和非常复杂的系统(例如现代Linux发行版)都可以通过网络轻松启动。
在两种类型的系统上完成此操作的方法非常不同。
让我们更详细地了解两种方式。我假设你已经有一个PXE 启动 服务器 设置 ; 如果不这样做,那就继续吧,这很容易。
我还假设dnsmasq
在Linux服务器上使用tftproot进行设置/var/lib/tftpboot
,但是您应该能够将说明适应于其他任何设置。
对于简单的系统,您只需将映像(ISO)加载到RAM中,然后诱使系统认为它是实际单元。这是在BIOS和称为memdisk的软件模块的一点帮助下完成的。
您要通过网络加载的系统是freedos:
# /var/lib/tftpboot/pxelinux.cfg/default
UI vesamenu.c32
PROMPT 0
TIMEOUT 0
MENU DEFAULT freedos
LABEL freedos
MENU LABEL FreeDOS
KERNEL /syslinux/memdisk
INITRD /freedos.iso iso
就是这样。前几行是菜单样板;重要的几位是最后四行:用给定的ISO加载内存磁盘。
具有精美内存管理和适当硬件检测等功能的现代系统几乎忽略了BIOS必须说的任何内容。
这使得memdisk
上面使用的方法几乎没有用,因为如果以这种方式加载ISO,则一旦从ISO中读取内核并将其加载到内存中(由ISO中的引导程序完成;引导程序会注意BIOS) ,ISO数据将消失。
那你怎么办呢?好吧,您实际上并没有从网络加载ISO,而是告诉系统它可以从那里访问所需的文件。
对于Linux系统,将ISO内容提取到tftproot中的某个位置,并直接加载内核和initrd,然后将其留给他们查找根文件系统并进行安装。
这是使用出色的System Rescue CD的示例。实际上,我将整个ISO提取到TFTP服务器的根目录中,因为它正好适合我的目录结构,因此内核位于/syslinux
。
# /var/lib/tftpboot/pxelinux.cfg/default
UI vesamenu.c32
PROMPT 0
TIMEOUT 0
MENU DEFAULT sysrescd64
LABEL sysrescd64
MENU LABEL 1) SysResCD 4.2.0 (x64)
KERNEL /syslinux/rescue64
APPEND setkmap=us nomodeset netboot=nbd://pxe:sysrcd.dat
INITRD /syslinux/initram.igz
这里最重要的是APPEND
线。看到netboot=
最后吗?这样操作系统就知道其根文件系统在哪里。语法为<protocol>://<server>:<path>
。
我已经pxe
为服务器方便地设置了DNS名称。如果没有,您将使用服务器的IP地址。
另外,sysresccd是最简单的一种,因为它使用squashfs映像作为其根文件系统,可以使用任何方法轻松下载该映像并将其加载到RAM。在这里我使用nbd; 您还可以使用tftp,nfs和http。
对于其他发行版,例如Ubuntu,我认为您只能使用nfs。
对于Windows系统,这要复杂一些。大纲是:
我从来没有尝试过,对于某些人来说似乎不起作用。对于Windows Vista之前的NT版本,我认为这甚至是不可能的。对于NT之前的Windows(95、98,ME等),您可以使用内存磁盘方法,但是引导它们对您的健康不利:-p
在最终部署设备你需要的优惠。他们的主页描述了其功能;为了方便起见,在此处重新格式化:
什么是Ultimate Deployment Appliance?
你什么时候用这个?
它是如何工作的?
UDA有一个YouTube频道,您可以在其中找到有关安装Windows 7的视频,例如从UDA中的安装到完全安装的Windows。
如果您有兴趣扩展这项研究,我建议使用各种工具进行此工作: