不使用 USB 安装其他操作系统

不使用 USB 安装其他操作系统

我最近想在笔记本电脑上安装(很可能是双启动)Windows 7。当我发现我没有 USB 驱动器时,我下载了 Windows 7 的 .iso 文件。因此,我在驱动器 (/dev/sda3) 中创建了一个 NTFS 分区,并提取了那里的所有文件,希望从该分区启动 Windows 7 安装程序。

我还对/boot/grub/grub.cfg文件做了一些更改,添加了当前提取的驱动器在启动时显示的选项。

/boot/grub/grub.cfg在文件中添加以下代码:

menuentry 'Windows 7' --class windows --class os $menuentry_id_option 'osprober-chain-724D5FE1694E60F9' {
    set root='hd0,msdos3'
    insmod part_msdos
    insmod ntfs
    insmod ntldr
    
    
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos3 --hint-efi=hd0,msdos3 --hint-baremetal=ahci0,msdos3  724D5FE1694E60F9
    else
      search --no-floppy --fs-uuid --set=root 724D5FE1694E60F9
    fi
    parttool ${root} hidden-
    drivemap -s (hd0) ${root}
    chainloader +1
}

(运行后自动进行了部分修改update-grub

我还设置了引导分区中的标志。

但做了这些之后,似乎还是没有效果。启动时,出现错误信息:

This is not a bootable disk. Please insert a bootable floppy and press any key to try again...

有没有什么办法可以解决这个问题?

不使用 USB 是否可以制作可启动硬盘?

任何帮助,将不胜感激。

答案1

如果要双启动,则应先安装 Windows。Linux Grub2 引导加载程序可以处理预先存在的 Windows 安装,但上次我尝试时,Windows 安装程序会清除您的 Linux 启动。这不值得。

答案2

我不知道到底发生了什么,但我只是在输入一些随机但有效的命令grub-cli

我通常会尝试以下方法:

  • 以 root身份创建包含文件(此例中为 )的分区/dev/sda3

set root=(hd0,msdos3)

  • 插入一些必要的模块:
insmod part_msdos
insmod ntfs
insmod ntldr
  • 加载bootmgr文件(我后来才知道,这是内核):
ntldr /bootmgr

那是我被卡住的部分。但这次我尝试了一些非常随机的命令(这些命令也可能无效)。但是,有一个命令确实有效,并直接启动到 Windows 7 安装程序:

boot

一切正常,所以我重新启动了笔记本电脑,并尝试了同一组命令:

set root=(hd0,msdos3)
insmod part_msdos
insmod ntfs
insmod ntldr
ntldr /bootmgr
boot

然后它又恢复正常了。因此,我修改了 grub 配置文件 ( /boot/grub/grub.cfg),如下所示(实际上只是在原始代码中添加了两行):

menuentry 'Windows 7' --class windows --class os $menuentry_id_option 'osprober-chain-724D5FE1694E60F9' {
    set root='hd0,msdos3'
    insmod part_msdos
    insmod ntfs
    insmod ntldr
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos3 --hint-efi=hd0,msdos3 --hint-baremetal=ahci0,msdos3  724D5FE1694E60F9
    else
      search --no-floppy --fs-uuid --set=root 724D5FE1694E60F9
    fi
    parttool ${root} hidden-
    drivemap -s (hd0) ${root}
    ntldr /bootmgr
    boot
    chainloader +1
}

成功保存这些更改(如sudo)后,Windows 7的启动窗口中的选项开始起作用。

感谢所有花时间寻找解决方案的人。

笔记。同一问题有不同的解决方案。对我来说,这个解决方案很有效,如果它对你不起作用,请尝试所有提到的解决方案。

答案3

如果分区中没有引导记录,则无法启动它。您必须先将 ISO 文件提取到该分区。然后重试。ISO 文件应该包含所需的引导记录(安装 ISO 的情况也是如此)。

首先你必须通过以下方式提取它,不是一个正常的档案管理器,因为它必须重写分区引导记录所需分区。因此运行此命令(每次我想创建可启动的 USB 棒时都会这样做):

sudo dd if=/iso/file/address of=/dev/sda3 status=progress

请注意,这将删除您的 NTFS 分区,因此请确保该分区中没有任何特殊文件或数据。然后我认为启动该分区不会有任何问题。如果您无法通过grub2,尝试您的系统启动菜单(通常是F12但可能因您的主板而异)。

安装完成后,你可以将该分区重新格式化为NTFS再次。

但如果安装后你无法启动 Linux,因为视窗引导加载程序已优先于grub2正如@summertime所说,你可以启动Ubuntu通过上述方法(即系统启动菜单),然后运行:

sudo update-grub

然后重新启动。

希望能帮助到你。

相关内容