使用GRUB从USB引导


48

我朋友的笔记本电脑出了车祸(很好!)。但是笔记本电脑非常老,它的Acer Aspire 1520 CD-rom驱动器坏了,没有软盘驱动器。

在看一下它之前,我给他做了USB启动,发现他的BIOS无法从USB启动。在只有我的事情是GRUB控制台,但他热衷于只安装XP(上USB),并用它只是为了电影。

是否可以使用GRUB控制台访问USB并开始Windows安装?这是一项艰巨的任务,但我认为这可能是可行的方法,或者尝试通过LAN进行安装,我认为这是无法实现的。


1
我会尝试获得USB cd / dvd驱动器,并尝试使计算机启动到该驱动器。
jmreicha 2011年

1
这篇文章显示了所需的手动命令-您只需要找出驱动器号即可,这可以通过GRUB的制表符完成。
new123456 2011年

Answers:


39

这是一个grub命令的快速示例,下面可能会起作用,解释和警告。

grub2

最有可能在2010年后安装。

set root=(hd1,1)
chainloader +1
boot

grub

最有可能在2005年之前安装。

root (hd1,0)
chainloader +1
boot

在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即可查看列表。


5
set root=(hd1)如果未分区,也可以使用(等)从整个设备启动,例如可启动的USB驱动器。
white_gecko

6
只需添加,您就可以ls查看连接的设备列表。
AntouanK 2016年

2
我知道堆栈交换不鼓励您发表评论,但是这个答案确实值得一个。您为我节省了大量时间。
John Militer

找不到命令root
约克一号球迷

13

要详细说明new123456的评论:

应将USB设备检测为大容量存储设备,并像对待硬盘驱动器一样对待它。因此,在grub中,键入root (hd(不要按Enter键),然后按Tab一次或两次,以查看Grub可以看到的硬盘。如果识别出该USB设备,则可能为hd1。不要指定分区号;只需添加一个右括号即可。所以线会是root (hd1)。然后,键入以下内容:

chainloader +1
boot

如果那不起作用,请更改root (hd1)root (hd1,0)并重试。

如果由于某种原因Grub无法看到USB驱动器,请尝试插入USB CDROM并启动它。


7

chainloader +1如果BIOS不能很好地从USB密钥启动(这就是为什么我仍然想使用Grub的原因),那么这件事可能就行不通了。

在这种情况下,https://help.ubuntu.com/community/Grub2/ISOBoot上存在一些深奥的魔力,至少对于Ubuntu来说,这种魔力是有效的。至关重要的一点是vmlinuz,通过传递iso-scan/filename参数的grub命令来识别该文件,以对其进行处理。以某种方式,这有助于它确定整个引导文件系统都停留在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

/path/to/iso/file路径应该对USB钥匙ISO文件。该(fd0,msdos1)识别USB密钥。制表符补全loopback在行上非常有用,而对于的参数则没有用vmlinuz


我想我打算回答另一个问题。我希望我知道哪一个!
Paul Stansifer

efi/ uefi引导模式下,这些grub2命令将产生错误:error: can't find command 'linux'。将命令更改为linuxefiinitrdefi
萨文(Samveen)2015年

我喜欢这里的概念。引导闪存驱动器中包含的ISO。这会将闪存驱动器转换为Boot CD Buffet。在功能更丰富的示例中,您可以从CD而不是从Flash引导,如果从USB引导存在问题,则可以刻录其中挑选的CD,对吗?

2

这对您朋友的情况不会有很大帮助(除非首先我没有办法让设备上出现扑通声-也许是USB CD-ROM或USB软盘驱动器?),但是这是一个了不起的小应用程序,它帮助我安装了许多旧计算机,以便在BIOS不允许的情况下从USB启动。

Plop启动管理器


0

如果BIOS本身不允许,您将无法从grub的USB引导。我曾经不得不在包含win7安装盘内容的硬盘上设置某种恢复分区,安装grub,然后使用该启动分区来启动win7安装分区以将其安装到硬盘的其余部分。


在提到的命令之前,您可能必须使用命令“ insmod usbms”,然后使用“ insmod ehci”或“ insmod uhci”。
克劳德·弗朗茨
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.