我最近拿到了其中的一个SanDisk Extreme 64GB坚持并开始对其进行修补。在这个故事中,请记住这是一个removable
位设置为的模型0
(这意味着 Windows 默认看到其所有分区 - 每个分区在资源管理器中显示为单个磁盘)。
目标:
- 在单个存储棒上安装多个不同的可启动发行版
- 其中应该包括 Windows 7 安装程序和 Windows 8 安装程序
- Windows(最好是其他操作系统)中应仅自动安装一个分区 - 第一个分区(文件存储)。这是为了防止意外更改可引导分区或其中的文件。它应为 NTFS 类型。
- 或者,我还希望在此棒上直接启动完全持久的 Linux(最好是 Ubuntu)。
- 所有这些功能都应该可以在从 USB 启动机器时显示的单个菜单中找到。
闲聊:
现在,这一切都可以通过使用以下组合轻松实现:系统Linux和GRUB(您将在下面看到)。但是,有一个问题:所有基于 Linux 的可启动项(使用create ramdisk -> load kernel -> have fun
方案的项:如 PartEd Magic、Ubuntu Installer 等)似乎都可以毫无问题地从单个可启动分区上的自己的文件夹运行。只需将它们放在不同的文件夹中并将单个 SYSLINUX 菜单项指向它们,它们就可以很好地相处(无论它们之后使用什么,可能只是另一个 SYSLINUX :))。
问题(一如既往:D)出在 Windows 安装程序中。它们(或者我应该说bootmgr
)拒绝识别相对路径。如果你将一个 Windows 安装程序放在一个文件夹中,比如说,Win7
看起来像/Win7/bootmgr
,该死的东西\Boot\BCD
传递控制时查找(\Win7\Boot\BCD
而不是实际存储的位置)。了解了这一点后,自然不能将多个 Windows 安装程序放在单个分区(单个目录结构)上。这违反了目标 2。
当前方案:
需要 10 点声望才能发布图片 :(。可视化方案如下。
描述:
- 普通 NTFS 分区。您可以随意使用它 - 它不会影响那些敏感的启动链接 :)
- FAT32 启动分区。这是从 MBR 转移控制的地方。这个分区必须是主分区,才能从 MBR 转移控制。它包含主 SYSLINUX - 显示菜单的分区(目标 5和目标 1)。 以下所有分区均扩展至每个磁盘最多 4 个主分区
- Windows 7 安装程序。此分区包含指向其上的 GRUB 的引导扇区,而 GRUB 又指向
/bootmgr
(不要问为什么有这么多引导加载程序 - 这是一个测试设置 :))。除了以下问题外,运行良好(目标 2)。 - Windows 8 安装程序。此分区包含指向 GRUB 的引导扇区,而 GRUB 又指向
/bootmgr
。除了以下问题外,运行正常(目标 2)。 - 持久 Linux 分区,Ubuntu 使用常规方法安装到该分区(从同一个 USB 棒)。它使用 GRUB 来管理其启动菜单。当然也有启动扇区(目标 4)。
- Linux 交换区。通常由 Linux 在先前的分区上使用,但不受任何使用者限制。
现在一切似乎都正确(并且确实有效)..除了目标 3。
问题:
- 我曾尝试使用
hidden
标志来隐藏这些分区,使其不被 Windows 看到,效果很好,甚至好得过头了。它还将它们隐藏在 Windows 安装程序的视线之外。当我尝试从隐藏分区安装 Windows 时,安装程序基本上找不到它从哪里启动 :O。这是批判的问题。 - 我使用了 2 个额外的分区来存放 Windows 安装程序。这真的不是一个很好的方案,因为每次我想更改某些东西而这些分区放不下时,我都必须重新分区。这是非关键问题——我可以忍受。
我的想法:
- 有些东西就像ISOLINUX和GRUB4DOS(当你搜索这个时它们会出现)。据我所知,它们可以帮助我实际安装 Windows 安装程序的可启动 .iso。是真的吗?有些页面包含警告,称像这样安装的映像只能在 BIOS 启动阶段访问 - 当 Windows 安装程序启动时,它将无法看到安装的映像。是真的吗?你能给我指出正确的方向吗?
- 也许我可以使用一些适用于 Windows 的自定义安装程序(因为本质上,我
bootmgr
100% 的时间都在为此而战)或chroot
以bootmgr
某种方式让它变得理智?这可以执行吗?我认为这仍然给我留下了一个问题,即分区仍然隐藏,安装程序可能看不到它 - 也许我可以破解路径
bootmgr
,虽然这是一个相当大胆的假设:)
如果对此有任何额外的建议,欢迎您在这里讨论。我愿意接受任何建议。如果有需要澄清的事情或需要提供更多信息 - 请随时询问。
非常感谢!
答案1
经过漫长而最终成功的旅程,我终于实现了这一切。
我已经创建了一个关于如何执行此操作的教程。 一探究竟。
根据要求,我还将整个内容发布在下面:
软件:
首先:您需要一台装有 Windows 7/8 且具有管理权限的 PC(Vista 可能可以,不确定)。教程将在此进行。
完成我们需要做的一切这个软件包, 也是镜像于GitHub(点击下载 ZIP)[0](从现在起,引用将标记为[])。要下载它,你可能需要在那里注册(不确定为什么)。
该软件包包括:
- 由美经过pendrivelinux.com。[1]
- 替代文件从系统Linux允许按编号启动分区的软件包。[2]
- 多个脚本和一个可执行文件(包括挂载程序 - 32 位和 64 位版本由 erwan.l 和 sleep 32/64 位提供此主题使这一切发挥作用[3]。
此外,您还需要下载以下内容:
可选(我推荐的软件可以使流程更容易、更灵活,但不是必需的):
- Gparted 直播
.iso
用于分区和设置分区标志(类似包括Parted Magic决定去有薪酬的最近或分区向导它较小,但请记住它不是 Gparted,您必须有一些经验才能操作它)。[5] - 记事本++是一款适用于 Windows 的优秀文本编辑器,具有许多插件。[6]
当然还有一些 Windows 安装程序.iso
以及一些可启动的 Linux 发行版。这些可以是 YUMI 和 SYSLINUX 支持的任何东西(您将能够在本教程的后面查看到)。
下载完所有这些后,您就可以进行下一步了。
概念:
这里将简要讨论一下操作方案。
这里讨论的方案是我在我的设置中使用的方案。这当然不是实现相同目标的唯一方法。我会尽力解释它,以便您可以根据自己的需要自定义设置。
这个过程似乎最好用图片来描述。(抱歉,Paint,图形设计不是我的强项):
差不多就是这样了。我真的不知道该如何更好地解释。我会监控此帖子,欢迎在回复中提问。
措施:
[ 配置软件 ]
- 提取软件包[0]到某个文件夹(上面列出了所需的所有软件,如果你还没有看过的话,可以去看看)。
- 提炼安装程序从USB放入同一个文件夹(这样它就位于
YUMI.exe
所有其他内容旁边)。双击它并提取到同一个文件夹。 - 现在拿文件夹安装程序从USB并将其拖到
drag_here.cmd
文件上。像这样(文件夹结构也应该是这样的): 如果您操作正确,将显示一个窗口,表明该过程已完成:WinSetupFromUSB was set up successfully, you can delete that folder. Now it's time to run 'start_admin.cmd'. Press any key to continue...
- 就像它说的一样,按任意键关闭窗口。暂时不要运行start_admin.cmd。转到下一步定义分区结构。
[ 分区 ]
- 确定分区结构:你的分区结构应该包括至少 1 个存储分区和至少 1 个启动分区. 启动分区必须是 FAT32 类型(FAT32 的最大文件限制为 4GB,最大卷限制为 32GB,即 32768MB。如果您计划使用更大的文件或卷,则不能使用 NTFS,但可以尝试 exFAT 作为实验 - 我没有尝试过)存储可以是任何东西,但我推荐 NTFS。我的看起来像这样: 贮存分区是32GB NTFS和引导分区是15GB FAT32(它没有像 G: 这样的字母,因为它有隐标志已设置,您稍后会了解这一点)。如果你正在使用大磁盘,最好将启动分区放在首位,因为有些 BIOS 无法读取超出特定范围的内容。
- 磁盘管理这里描述了方法,但你可以使用你喜欢的任何其他软件来应用分区结构(如Gparted [5]之前提到过或布蒂斯可以从安装程序从USB)。 打开磁盘管理在 Windows 中。这可以通过在开始菜单中搜索来完成(输入磁盘管理)或在 Windows 命令提示符中:磁盘管理。
- 应用所需的分区结构。右键点击任何分区来管理它。右键单击未分配空间删除分区后留下来创建新分区。始终选择分配驱动器号并且您可以在同一向导中自由地格式化它:
- 退出磁盘管理之前,记下你的启动分区的编号和磁盘编号在系统中。它们在磁盘管理中的样子如下: 在这里,磁盘编号为 2和启动分区号为 1。
- 完成分区方案应用后,是时候让这个驱动器真正可启动。
[ 添加基础启动环境(YUMI) ]
- 转到文件夹步骤1。 开始
YUMI.exe
。 - 查看显示所有驱动器框并从下拉列表中选择您的启动分区。您也可以选择格式它也是如此。
- 现在,是时候添加一些基于 Linux 的发行版了。我选择分区向导作为示例(您可以选择任何其他发行版,也可以添加多个,分区向导的链接位于软件部分)。建议此时添加所有基于 Linux 的发行版,因为在磁盘完成后再添加会比较困难。
- 选择浏览并选择您的
.iso
图像。屏幕将如下所示: - 点击创造并按照屏幕上的说明进行操作。当系统询问您是否要添加更多时,您可以选择是并重复该过程(重复此过程时,显然不要选择格式化选项)添加另一个分布。
- 此时,磁盘即可启动。断开磁盘并重新连接(Windows 需要这样做才能正确检测分区是否为活动分区)。
- 转到文件夹步骤1然后运行
start_admin.cmd
作为管理员。这对于其操作至关重要,右键单击它并选择以管理员身份运行: - 它会要求你磁盘编号和可引导分区号(步2.4)。重新打开磁盘管理并找到这些数字,就像在步骤 2.4. 指定相应的数字并按进入。
[注意] 再次强调,如果您未能在此步骤或任何其他地方指定正确的磁盘和分区号,我对您的磁盘(包括本教程中未提及的磁盘)发生的任何事情概不负责。
- 最后,它会询问您是否要在将可执行文件放入 USB 驱动器之前对其进行压缩。如今,尺寸几乎不再是问题,因此我建议在
n
此处输入(如果您稍后按下 ,可能会出现意想不到的副作用y
,只有当您知道自己在做什么时才这样做)。
- 转到文件夹步骤1。 开始
[ 添加基于 Windows 的安装程序 (WinSetupFromUSB) ]
- 返回同一文件夹,进入无线USB文件夹 (不是 WinSetupFromUSB 文件夹)并运行安装程序适合您的系统架构。
- 在最顶部的下拉菜单中选择您的分区。请务必小心操作。
- 勾选 Windows 7/8 安装程序旁边的复选框,然后点击右侧的按钮选择您的Windows 安装程序 .iso。
- 选择高级选项框。确保不检查并安装 grub4dos MBR和安装之前启动 Q-Dir。
- 仔细检查你的设置并确保它们看起来几乎 100% 相同(磁盘和
.iso
路径除外)此示例: - 您也可以选择Vista/7/8/Server 的自定义菜单名称源这样您在启动时选择 Windows 发行版时就能看到自定义名称。
- 准备好后,按去按钮。如果您在步骤中选择了4.7,它会询问姓名。之后,等待操作完成。
- 重复您要添加的每个 Windows 发行版的步骤。
[ 最终确定 ]
- 此时我们有2 个可引导结构:一个用于 Linux(从 MBR 启动) 和一个用于 Windows 的 (从启动分区上的 bootmgr 启动)。我们需要将它们连接起来。在 Windows 资源管理器中打开可启动分区。
- 打开文件
<drive root>\multiboot\syslinux.cfg
。它包含从驱动器启动时显示的菜单的信息。有关它的更多信息可以在这里找到:menu.c32 - syslinux.cfg 语法,chain.c32 chainloader 命令。现在,我们需要创建一个菜单项,以便我们启动 Windows 安装程序。在底部(或其他菜单项之间)添加以下几行以创建新的菜单项:
最好在此代码前后添加一个空的换行符. 调整菜单入口标签如果你愿意的话。保存并关闭文件。MENU LABEL Windows Installers/Recoveries >>> MENU INDENT 1 KERNEL chain.c32 APPEND fs ntldr=/bootmgr
- [从这里可选]打开安装程序从USB再次。我们将删除过时的返回主菜单(Grub4dos)菜单项。选择布蒂斯工具。
- 去BCD编辑。 选择其他BCD文件
<drive root>\boot\bcd
并在启动分区上 找到文件: - 按 Easy 模式编辑 BCD(启动配置数据)文件:
笔记:如果你只有 1 个安装程序,则在你按下添加到的菜单项后,它将被加载
syslinux.cfg
不显示任何菜单。此外,您可能还想按设为默认你想做的任何菜单项默认。 点击关闭然后退出布蒂斯工具。退出安装程序从USB也一样。
[ 清理(可选)]
- 现在我们需要删除过时的文件。如果你不关心这类事情,你可以跳过此部分。打开你的可引导分区在 Windows 资源管理器中。此外,打开第一个分区在您的驱动器上(它们可能是同一个)。
- 此磁盘需要以下文件和文件夹才能运行(如果列出了该文件夹,则需要保留其所有内容):
\boot \efi \multiboot \WINSETUP \bootmgr
- 可以安全删除以下文件和文件夹:
随意移除。此外,Windows 可能会创建其愚蠢的系统容量信息- 如果你够幸运的话,你也可以把它移除。另外,此时你可以重命名启动分区从多重引导任何其他名称(我更喜欢简单引导)。您可以像通过 Windows 资源管理器对任何文件夹一样执行此操作。.disk \default \grldr \menu.lst \plpbt.bin \shifthd.bat \usbdrive.tag
[ 隐藏启动分区(可选)]
- 现在你可能想要隐藏启动分区以防止意外更改其中的任何文件。这意味着在插入磁盘时,大多数系统默认不会显示该磁盘,但您仍然可以从中启动。打开安装程序从USB再次。
- 打开布蒂斯工具并选择物理磁盘选项卡(如果尚未选择)。选择您的磁盘(小心地)在下拉菜单中。
- 点击零件管理按钮。将显示分区列表。
- 在列表中找到您的分区并按隐藏按钮。出现确认窗口成功将会弹出。整个过程将如下所示: 就是这样。在大多数系统上,您的分区不再自动挂载(没有驱动器号),并且启动驱动器所需的文件不会被意外更改。
此外,我更喜欢保留挂载程序 ([3]在软件我使用一个名为“隐藏分区”的部分来描述我所使用的操作系统,以便在需要时能够快速挂载 Windows 下的隐藏分区。
差不多就是这样了,如果你发现任何误解或错误,请随时在此处发布。此外,也欢迎提问和反馈。
致谢:
旺科,erwan.l,伊尔科,史蒂夫- reboot.pro 社区的成员帮助了我很多此主题。旅程就此结束 :)
马里奥谁教育了BCD文件,他们的目的和编辑它们的方法这个原始问题.旅程从这里开始。
瑞奇谁修复了缩进中的错误。