USB记忆棒上有多个Windows安装程序


12

我最近开始使用其中的SanDisk Extreme 64GB记忆棒之一,并开始进行修补。在这个故事中,请记住,这是一个将removablebit设置为的模型0(这意味着Windows默认情况下会看到其所有分区-每个分区都显示为资源管理器中的单个磁盘)。

目标:

  1. 在单个记忆棒上具有许多不同的可引导发行版
  2. 其中应包括Windows 7安装程序和Windows 8安装程序
  3. Windows(最好是其他操作系统)应该仅自动挂载一个分区-第一个分区(用于存储文件)。这是为了防止意外更改引导分区或其中的文件。它应该是NTFS类型。
  4. (可选)我也希望在此驱动器上直接启动可完全持久的linux(最好是Ubuntu)。
  5. 从USB记忆棒启动机器时,应在显示的单个菜单中提供所有这些功能。

乱流:

现在,可以通过结合使用SYSLINUX和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个声誉才能发布图像:(。这是可视化的方案。

描述:

  1. 正常的NTFS分区。做任何您想做的事-它不会影响那些敏感的启动链接:)
  2. FAT32引导分区。这是从MBR转移控制权的地方。为了能够从MBR转移控制,这必须是首要的。它包含主SYSLINUX-一个显示菜单的菜单(目标5和目标1)。 扩展下面的所有分区以提升每个磁盘的max-4-primary分区
  3. Windows 7安装程序。该分区包含/bootmgr引导扇区,该引导扇区指向其上的GRUB (不要问为什么有这么多引导程序-这是一个测试设置:))。除以下问题外,工作正常(目标2)。
  4. Windows 8安装程序。此分区包含引导扇区,该引导扇区指向GRUB,该扇区指向/bootmgr。除以下问题外,工作正常(目标2)。
  5. 使用常规方法(从同一USB棒)将Ubuntu安装到的永久Linux分区。它使用GRUB来管理其引导菜单。当然也有引导扇区(目标4)。
  6. Linux交换。通常由Linux在以前的分区上使用,但不受谁可以使用它的任何限制的约束。

现在一切似乎都正确(并且确实有效).. 目标3除外。

问题:

  1. 我尝试使用hidden标志来隐藏Windows看不到的那些分区,并且效果很好,甚至效果也很好。它还将它们隐藏在Windows安装程序的视线之外。当我尝试从隐藏分区安装Windows时,安装程​​序基本上找不到从:O引导的位置。这是至关重要的问题。
  2. 我使用了2个其他分区来容纳Windows安装程序。这并不是一个很好的方案,因为每次我想更改某些内容,但都不适合这些内容时,我必须重新分区。这是非关键问题-我可以接受。

我的想法:

  1. 有诸如ISOLINUX和GRUB4DOS之类的东西(当您搜索有关此内容时会出现它们)。据我了解,它们可以帮助我实际安装Windows安装程序的可启动.iso。真的吗?某些页面包含有关已挂载映像的警告,只有在BIOS引导阶段才能访问此映像-Windows安装程序启动时将无法看到已挂载的映像。真的吗?你能为我指出正确的方向吗?
  2. 也许我可以用一些windows自定义安装(因为从本质上讲,我打bootmgr这里的100%的时间),或chroot在bootmgr某种程度上使之成为理智?可以执行吗?我认为这仍然给我带来一个问题,即该分区仍处于隐藏状态,安装程序可能看不到它
  3. 也许我可以闯入bootmgr,尽管这是一个相当大胆的假设:)

如果对此有任何其他建议,非常欢迎您在这里进行讨论。我愿意接受任何建议。如果需要澄清或需要提供其他信息,请随时询问。

非常感谢你!


WRT Windows安装程序:为什么需要多个引导程序?是否应该可以修改其条目,以便能够使用较新的版本(即Windows 8)从同一分区启动两个安装程序?
— Mario

您能否提供有关如何执行此操作的示例?据我了解,您指的是我使用单个bootmgr但使用多个安装程序的设置?我能读到什么吗?
— Gear54rus 2014年

从来没有尝试过,但是设置DVD上的启动管理器与普通的HDD安装基本上没有什么不同,因此您应该能够使用BCDEdit之类的工具来创建“双启动”设置。
— Mario

好吧,我想我找到了部分解决方案。全面测试后,我将在此处发布所有内容。我仍然遇到
— Gear54rus,2014年

我编辑了BCD文件。我所做的是将Windows 7 .iso安装程序解压缩到SYSLINUX分区上的/ Win7文件夹中。然后,我把bootmgr和boot从Win7的根文件夹和编辑/boot/BCD文件,以反映这些改变中device和osdevice节点。之后,安装程序可以通过SYSLINUX正常启动,chain.c32 fs ntldr=/bootmgr但之后会A required CD/DVD drive device driver is missing弹出可怕的消息。重新插入另一个USB端口无济于事。当我单击时,Browse我看到ramdisk可以很好地安装并且具有所需的所有文件夹。我又迷路了:(
— Gear54rus

Answers:


6

经过漫长而最终成功的旅程,我已经能够实现所有目标。

我已经创建了有关如何执行此操作的教程。一探究竟。

根据要求,我还会在下面发布整个内容:

软件:

首先:您需要一台具有Windows 7/8并对其具有管理访问权限的PC(Vista可能可以运行,不确定)。这是执行本教程的地方。

为了执行我们将需要的所有软件包,该软件包也已镜像到GitHub(单击下载ZIP)。[0](从现在开始,引用将用[]标记)。要下载它,您可能需要在此处注册(不确定原因)。

该软件包包括:

此外,您需要下载以下内容:

  • WinSetupFromUSB(后来的WSFUSB)。这对于该方案的工作至关重要。如果未安装7zip,请使用.exe版本。本教程是在1.4版本为最新版本时编写的。[4]

(可选)(我建议使用该软件可使该过程更轻松,更灵活,但这不是必需的):

当然还有一些Windows安装程序.iso以及一些可启动的Linux发行版,它们可能是YUMI和SYSLINUX支持的任何东西(您将在本教程的后面部分进行检查)。

下载所有这些文件后,便可以进行下一步了。

概念:

在此,将简要讨论操作方案。

这里讨论的方案是我用于设置的方案。当然,这不是实现同一目标的唯一方法。我将尽力尝试并进行解释,以便您可以根据需要自定义设置。

图片中似乎最好地描述了此过程。(对不起Paint,图形设计并不是我的强项):

概念

就是这样。我真的不知道如何更好地解释它。我将监视此线程,随时提问。

动作:

  1. [配置软件]

    1. 将软件包[0]解压缩到某个文件夹(上面列出了所需的所有软件,如果尚未下载,请查看那里)。
    2. 将WinSetupFromUSB提取到同一文件夹中(以便位于旁边YUMI.exe和所有其他内容)。双击它并解压缩到同一文件夹。
    3. 现在,使用WinSetupFromUSB提取文件夹,并将其拖到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...
    4. 就像它说的那样,按任意键关闭窗口。暂时不要运行start_admin.cmd。转到下一步以定义分区结构。
  2. [分区]

    1. 确定分区结构:您的分区结构应至少包括1个存储分区和至少1个引导分区。引导分区必须为FAT32类型(FAT32的最大文件限制为4GB,最大卷限制为32GB,即32768MB。如果计划使用更大的文件或卷,则不能使用NTFS,但可以尝试使用exFAT作为实验-我没有尝试过)和存储可以是任何东西,但我建议使用NTFS。我的看起来像这样: 结构体 存储分区是32GB NTFS,引导分区是15GB FAT32(它没有像G的字母:因为它已经设置了隐藏标志,您将在后面学到)。如果您使用的是大磁盘,则最好将引导分区放在第一位,因为某些BIOS无法读取超出特定范围的信息。
    2. 磁盘管理方式在这里描述,但你可以用你喜欢的应用分区结构(像任何其他软件的gparted [5]前面提到的或BOOTICE可以从启动WinSetupFromUSB)。在Windows中打开磁盘管理。这可以通过在开始菜单(在“ 磁盘管理”中键入)或Windows命令提示符:diskmgmt中进行搜索来完成。
    3. 应用所需的分区结构。右键单击任何分区进行管理。右键单击删除分区后剩余的未分配空间,以创建新分区。始终选择分配驱动器号,然后就可以在同一向导中自由格式化它: 分区创建
    4. 退出磁盘管理之前,请注意你的引导分区的数量和磁盘的数量在系统中。它们在“磁盘管理”中的外观如下: 指标 在这里,磁盘号为2,引导分区号为1。
    5. 完成分区方案的应用后,该使该驱动器实际可启动了。
  3. [添加基本启动环境(YUMI)]

    1. 从步骤1转到文件夹。开始YUMI.exe。
    2. 选中显示所有驱动器框,然后从下拉列表中选择引导分区。您也可以选择格式化它。
    3. 现在,该添加一些基于Linux的发行版了。我选择了分区向导作为示例(您可以选择任何其他发行版,也可以添加多个发行版,“ 软件”部分提供了指向分区向导的链接)。建议此时添加所有基于Linux的发行版,因为在磁盘完成后,以后将很难做。
    4. 选择浏览,然后选择您的.iso图像。屏幕将如下所示: 宇美
    5. 单击创建,然后按照屏幕上的说明进行操作。当询问是否要添加更多内容时,可以选择是并重复该过程(显然,在重复该过程时不要选择格式化选项)以添加另一个发行版。
    6. 此时,磁盘是可引导的。断开磁盘的连接,然后再次重新连接(Windows才能检测到该分区正确处于活动状态)。
    7. 从步骤1转到文件夹并start_admin.cmd 以Administrator身份运行。这对其操作至关重要,请右键单击它,然后选择以管理员身份运行: 以管理员身份运行
    8. 它会询问您磁盘号和可引导分区号(步骤2.4)。重新打开“磁盘管理”,然后像在步骤2.4中一样找到这些数字。指定相应的数字,然后按Enter键。

    [注意]同样,如果您在此步骤或任何其他地方未能指定正确的磁盘和分区号,则我对您的磁盘(包括本教程中未提及的磁盘)发生什么情况不承担任何责任。


    1. 最后,它将询问您是否要在将可执行文件放入USB驱动器之前对其进行压缩。如今,尺寸已经很少成为问题,因此,我建议n在此处输入(如果您按y,未预期的副作用可能会在稍后浮出水面,仅当您知道自己在做什么时才这样做)。
  4. [添加基于Windows的安装程序(WinSetupFromUSB)]

    1. 返回相同的文件夹,进入WSFUSB文件夹(而不是WinSetupFromUSB文件夹),然后运行适合您的系统体系结构的WinSetupFromUSB.exe。
    2. 在最上方的下拉菜单中选择您的分区。确保仔细进行。
    3. 选中Windows 7/8安装程序旁边的框,然后单击右侧的按钮以选择Windows安装程序.iso。
    4. 选择高级选项框。确保在安装之前不要检查并安装grub4dos MBR并启动Q-Dir。
    5. 仔细检查您的设置,并确保它们与.iso该示例看起来几乎100%相同(磁盘和路径除外): WSFUSB
    6. (可选)您可以为Vista / 7/8 / Server Source选择“ 自定义”菜单名称,以便在启动时选择Windows发行版时能够看到自定义名称。
    7. 准备好后,按GO按钮。如果您从步骤4.7中选择了该框,它将要求输入名称。之后,等待操作完成。
    8. 对要添加的每个Windows发行版重复上述步骤。
  5. [完成]

    1. 至此,我们有2种可引导结构:一种用于Linux(从MBR开始)和一种用于Windows(从引导分区上的bootmgr开始)。我们需要将它们链接起来。在Windows资源管理器中打开可启动分区。
    2. 打开文件<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
      最好在此代码之前和之后添加一个空换行符。如果需要,请调整菜单条目标签。保存并关闭文件。
    3. [从此处选择]再次打开WinSetupFromUSB。我们将从Windows安装程序菜单中删除过时的Back to Main Menu(Grub4dos)菜单项。选择启动工具。
    4. 转到BCD编辑。选择其他BCD文件并<drive root>\boot\bcd在启动分区上找到文件: 靴子
    5. 按简易模式编辑BCD(引导配置数据)文件: BCD 注意:如果您只有1个安装程序,则在按添加到的菜单项后立即加载它,而根本不syslinux.cfg 显示任何菜单。另外,您可能想在要设置为default的任何菜单项上按Set as default。单击“ 关闭”,然后退出Bootice工具。也退出WinSetupFromUSB。
  6. [清理(可选)]

    1. 现在我们需要删除陈旧的文件。如果您不关心此类事情,则可以跳过本节。在Windows资源管理器中打开可启动分区。另外,打开驱动器上的第一个分区(它们可以是一个分区,并且相同)。
    2. 要使该磁盘正常运行,需要以下文件和文件夹(如果列出了文件夹,则必须保留其所有内容):
      \boot
      \efi
      \multiboot
      \WINSETUP
      \bootmgr
      
    3. 可以安全地删除以下文件和文件夹:
      .disk
      \default
      \grldr
      \menu.lst
      \plpbt.bin
      \shifthd.bat
      \usbdrive.tag
      
      随意删除它们。此外,Windows可能会创建其愚蠢的系统卷信息 -如果幸运的话,您也可以删除它。另外,这是您可以将引导分区从MULTIBOOT 重命名为任何其他名称的地方(我更喜欢简单地使用Boot)。您可以像通过Windows资源管理器处理任何文件夹一样进行操作。
  7. [隐藏启动分区(可选)]

    1. 现在,您可能需要隐藏启动分区,以防止意外更改其上的任何文件。这意味着在默认情况下,插入磁盘时,在大多数系统上它都不可见,但是您仍然可以从中引导。再次打开WinSetupFromUSB。
    2. 打开“ 引导工具”,然后选择“ 物理磁盘”选项卡(如果尚未选择)。在下拉菜单中仔细选择磁盘。
    3. 单击零件管理按钮。将显示分区列表。
    4. 在列表中找到您的分区,然后按“ 隐藏”按钮。弹出确认成功的窗口。整个过程看起来像这样: 隐藏这个 就是这样。在大多数系统上,分区不再是自动挂载的(不会有驱动器号),并且引导驱动器所需的文件不会被意外更改。

另外,我宁愿保持vmount(程序[3]在软件部分),以能够快速安装Windows下的隐藏分区,如果我需要。

就是这样,如果您发现任何误解或错误,请随时在此处发布。另外,欢迎提出问题和反馈。

学分:

Wonko,erwan.l,ilko,Steve是reboot.pro社区的成员,他们在此主题中提供了极大的帮助。这就是旅程的终点​​:)

最初暗示有关此房间中的 ImDisk驱动程序的Bob。

对BCD文件,其目的和手段进行过教育的Mario,在此原始问题中进行了培训。这是旅程的起点。

修正缩进错误的Ricky。


如果您也可以在此处复制解决方案,那将是很好的。
— Cristian Ciupitu 2014年

做得很好。惊人的详细指南。
— Devian 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.