![是否可以通过网络从 ISO 启动?如何启动?](https://linux22.com/image/1281484/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87%E7%BD%91%E7%BB%9C%E4%BB%8E%20ISO%20%E5%90%AF%E5%8A%A8%EF%BC%9F%E5%A6%82%E4%BD%95%E5%90%AF%E5%8A%A8%EF%BC%9F.png)
我有一台机器,上面存储了可启动 ISO,还有另一台空白机器,我想在上面安装 ISO。它们都在同一个 LAN 上(连接到同一个交换机)。我该如何从主计算机上存储的 ISO 启动空白机器?
答案1
我认为你需要一种从 ISO 映像进行 pxe 启动的方法。我搜索了一下,找到了这篇文章。我相信该方法应该适用于您可能拥有的任何可启动 ISO 映像。这是另一篇类似的文章。
最后,似乎本文讨论如何从 Windows 运行的 PXE(预启动执行环境)服务器执行此操作。
答案2
是的,这是完全有可能的。您可以启动的系统类型取决于该系统的运行方式。
通常你会发现,简单系统(如 DOS 或 Win98)并且非常复杂系统(与现代 Linux 发行版一样)可以通过网络轻松启动。
在两种类型的系统上实现此目的的方式非常不同。
让我们更详细地了解这两种方式。我假设你已经有一个远程控制 引导 服务器 设置;如果没有,那就继续做吧,这很容易。
我还假设dnsmasq
在 Linux 服务器上安装了 tftproot /var/lib/tftpboot
,但您应该能够根据任何其他设置调整说明。
对于简单系统
对于简单的系统,您只需将映像 (ISO) 加载到 RAM 中,并欺骗系统相信它是一个实际单元。这可以通过 BIOS 和一个名为记忆磁盘。
您想要通过网络加载的系统是 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 加载 memdisk。
对于复杂系统
现代系统具有良好的内存管理和适当的硬件检测等奇特功能,几乎忽略了 BIOS 所说的任何内容。
这使得memdisk
上面使用的方法几乎毫无用处,因为如果您以这种方式加载 ISO,一旦从 ISO 读取内核并将其加载到内存中(这是由 ISO 中的引导加载程序完成的;引导加载程序确实会注意 BIOS),ISO 数据就会消失。
那你该怎么做呢?嗯,你实际上并不是从网络加载 ISO,而是告诉系统它可以从那里访问所需的文件。
对于 Linux 系统,将 ISO 内容提取到 tftproot 中的某个位置并直接加载内核和 initrd,然后让它们自行查找根文件系统并挂载它。
下面是一个使用神奇的系统救援光盘。我实际上将整个 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 7
- 在 TFTP 根目录中的服务器上拥有完整的 Windows PE 环境
- 让客户端计算机通过网络加载 WinPE,然后按F12以获取命令提示符
- 将 Windows 7 安装的共享文件夹映射到驱动器号
- 从映射文件夹开始安装
我从未尝试过这种方法,而且似乎对某些人不起作用。对于 Vista 之前的 NT 版本,我认为这根本不可能。对于 NT 之前的 Windows(95、98、ME 等),您可以使用 memdisk 方法,但启动这些系统对您的健康有害 :-p
答案3
这终极部署设备提供您所需的一切。他们的主页描述了它的功能;为方便起见,这里重新格式化了它:
什么是终极部署设备?
- 几分钟内即可通过网络完成无人值守操作系统安装(Windows、Linux、ESX、Solaris)!
- 通过网络发布您最喜欢的恢复/系统维护工具!
- PXE 启动、远程安装服务、Kickstart、Jumpstart、Autoyast 尽在一个盒子里!
什么时候会用到它?
- 当您尝试安装没有 CDROM 驱动器但有网卡的系统时(如今的超薄笔记本电脑等都没有光驱)
- 当您必须在不同的硬件上安装操作系统时。
- 当您必须安装系统并希望事情自动化和可重复时。
- 当你去朋友家修理电脑时,你希望做好准备。与其删除所有不需要的东西,不如重新开始。带上你自己的系统(笔记本电脑?),用交叉电缆将其连接到混乱的系统,然后完全无人看管地从头开始重新安装系统。去冰箱……
- 当您需要对系统进行维护时,无需随身携带一堆实时 CD。
- 当您想做到这一点但又不想花很多钱购买商业产品时。
它是如何工作的?
- 无人值守安装设备会安装一个包含您喜欢的操作系统发行版的 iso 文件,并导入必要的(网络)启动文件。它会为您的自动安装创建一个默认配置文件,并开始托管操作系统发行版文件以进行网络启动。
- 系统工具发布 Live CD 和其他工具被全部导入到 Ultimate Deployment 设备中并通过 PXE 发布以通过网络启动。
UDA 有一个 YouTube 频道,你可以在那里找到他们的视频以安装 Windows 7 为例从 UDA 内部设置到 Windows 完全安装。
答案4
如果你有兴趣扩展这项研究,我建议使用各种工具来完成这项工作: