我朋友的笔记本电脑出了车祸(他很好!)。然而,笔记本电脑很旧,它是 Acer Aspire 1520,CD-rom 驱动器坏了,没有软盘驱动器。
我给他做了一个 USB 启动,然后我看了一下,发现他的 BIOS 无法从 USB 启动。在只有我的事情是GRUB控制台,但他热衷于只安装XP(上USB),并用它只是为了电影。
是否可以使用 GRUB 控制台访问 USB 并启动 Windows 安装?这是一项艰巨的任务,但我认为这可能是方法,或者尝试通过 LAN 进行安装,但我认为这是不可能实现的。
Eke*_*voo 55
下面是一个可能会起作用的 grub 命令的快速示例,下面是解释和警告。
grub2最有可能是 2010 年后的安装。
set root=(hd1,1)
chainloader +1
boot
Run Code Online (Sandbox Code Playgroud)
grub最有可能用于 2005 年之前的安装。
root (hd1,0)
chainloader +1
boot
Run Code Online (Sandbox Code Playgroud)
对于 2005-2010 年期间,您的猜测和我的一样好,但是如果您将命令用于错误的版本,您只会在第一个命令上得到一个无害的语法错误。
在启动时,grub 将探测您的设备并为它们分配编号。所有分区的设备(硬盘和闪存驱动器)也将分配编号。格式为(<deviceName>,<partitionIndex>). 在 中grub2,分区索引发生了变化,因此尽管希望使用不同的根,但上面的两个示例具有相同的效果。
您的第一个设备 ( hd0) 是刚刚加载的设备 grub。在那之后,您通常可以假设所有内部设备都会在您的外部设备之前出现。它们很可能采用hd和 数字的形式 。
逗号后是分区索引。硬盘和拇指驱动器几乎总是被分区,因此您必须选择正确的(并且很可能是唯一的)分区。CD-ROM 通常不分区。
更多文档:http : //www.gnu.org/software/grub/manual/html_node/Device-syntax.html
选择根分区时,您可以使用 Tab 键探测设备名称和分区索引。只需打开括号并开始按 Tab 即可查看列表。或者,较新的版本提供lsorfind命令。
Jon*_*han 14
详细说明 new123456 的评论:
USB 设备应被检测为大容量存储设备,并像硬盘驱动器一样对待。因此,在 grub 中,输入root (hd(先不要按 Enter),然后按一次或两次 Tab 键以查看 Grub 可以看到的硬盘驱动器。USB 设备(如果被识别)可能是 hd1。不要指定分区号;只需添加一个右括号。所以这条线将是root (hd1)。然后在此之后,键入以下内容:
chainloader +1
boot
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,请更改root (hd1)为root (hd1,0)并重试。
如果由于某种原因 Grub 看不到 USB 驱动器,请尝试插入 USB CDROM 并启动。
小智 12
chainloader +1如果 BIOS 不擅长从 USB 密钥启动(这就是我无论如何都想使用 Grub 的原因),这件事可能不起作用。
在这种情况下,https : //help.ubuntu.com/community/Grub2/ISOBoot 上有一些非常有用的魔法,至少对于 Ubuntu 是有效的。关键的一点是用 grub 命令来识别vmlinuz文件,传递iso-scan/filename参数。不知何故,这有助于它弄清楚整个引导文件系统都卡在一个 ISO 文件中。我不知道它到底是怎么工作的,但确实如此。这些(大约)是我使用的 Grub 2 命令:
loopback loop (fd0,msdos1)/path/to/iso/file
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/path/to/iso/file noprompt noeject
initrd (loop)/casper/initrd.lz
boot
Run Code Online (Sandbox Code Playgroud)
该/path/to/iso/file路径应该对USB钥匙ISO文件。该(fd0,msdos1)识别USB密钥。制表符补全loopback在线上非常有用,但对vmlinuz.
我打算将此作为对@Ekevoo 或@Jonathan 帖子的评论,但我不允许这样做,所以这是我的用例+解决方案,适用于可能也遇到此问题的任何人:
USB 包含一个 GPart Live CD 安装,但我的 BIOS 由于某种原因没有从它启动,尽管它以前可以工作(上一次它工作时我通过 Windows 安装了 CD,这次我是通过 Ubuntu 安装的)。在 Grub 中,我运行了以下命令并且它起作用了
set root=(hd0)
Run Code Online (Sandbox Code Playgroud)
对于不同的设备,这可能会有所不同,我不确定是否有必要。
然后我跑了
chainloader (hd0)/efi/boot/grubx64.efi
boot
Run Code Online (Sandbox Code Playgroud)
其他操作系统的链加载器路径可能会有所不同,但应该有一个类似的文件。Tab 周围并寻找它,或者ls如果可以的话使用命令。
这足以让它发挥作用。
| 归档时间: |
|
| 查看次数: |
248803 次 |
| 最近记录: |