是否可以通过网络从 ISO 引导,以及如何引导?

Geo*_*dze 36 networking boot iso-image installation

我有一台机器上存储了可启动的 ISO,我还有另一台空白机器,我想在上面安装 ISO。他们都在同一个局域网上(连接到同一个交换机)。我将如何从存储在我的主计算机上的 ISO 启动空白机器?

Jam*_*ell 11

我认为您想要一种从 ISO 映像启动 pxe 的方法。我搜索了一下,找到了这篇文章。我相信该方法应该适用于您可能拥有的任何可启动 ISO 映像。这是另一篇类似的文章

最后,本文似乎讨论了如何从从 Windows 运行的 PXE(预启动执行环境)服务器执行此操作。


GnP*_*GnP 6

是的,这是非常有可能的。您可以启动的系统类型取决于所述系统的工作方式。

通常,您会发现非常简单的系统(如 DOS 或 Win98)和非常复杂的系统(如现代 Linux 发行版)都可以通过网络轻松启动。

在两种类型的系统上实现这一点的方式非常不同。

让我们更详细地了解这两种方式。我假设你已经有一个PXE 启动 服务器 设置; 如果你不这样做,那就去做吧,这很容易。

我还假设dnsmasq在 tftproot 中的 Linux 服务器上进行了设置/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
Run Code Online (Sandbox Code Playgroud)

差不多就是这样。前几行是菜单样板;重要的部分是最后四行:使用给定的 ISO 加载 memdisk。

对于复杂系统

现代系统具有良好的内存管理和适当的硬件检测等奇特的东西,几乎忽略了 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
Run Code Online (Sandbox Code Playgroud)

这里最重要的一点是APPEND线。看到netboot=最后了吗?这就是操作系统知道其根文件系统在哪里的方式。语法是<protocol>://<server>:<path>.

我已经方便地pxe为我的服务器设置了一个 DNS 名称。如果您没有,您将使用服务器的 IP 地址。

此外,sysresccd 是最简单的方法之一,因为它的根文件系统使用的是 squashfs 映像,可以使用任何方法轻松下载并加载到 RAM 中。这里我用的是nbd;您还可以使用 tftp、nfs 和 http

对于其他发行版,例如 Ubuntu,我认为您只能使用 nfs。

对于 Windows 系统,操作起来稍微复杂一些。大纲是:

  • 在服务器上的共享文件夹上安装 Windows 7
  • 在 TFTP 根目录中的服务器上拥有完整的 Windows PE 环境
  • 让客户端计算机通过网络加载 WinPE 并按下F12以获取命令提示符
  • 将带有 Windows 7 安装的共享文件夹映射到驱动器号
  • 从映射文件夹开始安装

我从来没有尝试过这个,它似乎对某些人不起作用。对于早于 Vista 的 NT 版本,我认为这甚至是不可能的。对于 NT 之前的 Windows(95、98、ME 等),您可以使用 memdisk 方法,但启动这些方法对您的健康不利:-p