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


12

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

目标:

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

乱流:

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

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

非常感谢你!


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

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

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

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

我编辑了BCD文件。我所做的是将Windows 7 .iso安装程序解压缩到SYSLINUX分区上的/ Win7文件夹中。然后,我把bootmgrboot从Win7的根文件夹和编辑/boot/BCD文件,以反映这些改变中deviceosdevice节点。之后,安装程序可以通过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下的隐藏分区,如果我需要。

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

学分:

Wonkoerwan.lilkoSteve是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.