检查硬盘分区路径
GRUB使用与Linux不同的设备命名方式。在Linux系统中,/dev/sda0是硬盘上的第一个分区a是指第一个硬盘,而0是指第一个分区。在GRUB中,与/dev/sda0相对应的是(hd0,1)。0指第一个硬盘,而1则指它上面的第一个分区。换句话说,在GRUB设备名中,磁盘编号从0开始计数,而分区编号则从1开始计数是啊,这真是突然令人困惑。例如,(hd3,6)是指第四磁盘上的第六分区。
(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/diannaorumen/)你可以使用fdisk -l命令来查看该信息。在Ubuntu上,打开终端并运行以下命令:
sudo fdisk -l
你将看到一个Linux设备路径列表,你可以自行将它们转成GRUB设备名。例如,在下面的图片中,我们可以看到有个系统分区是/dev/sda1那么,对于GRUB而言,它就是(hd0,1)。
创建GRUB2启动条目
添加自定义启动条目的最简单的方式是编辑/etc/grub.d/40_custom脚本,该文件设计用于用户自行添加启动条目。在编辑该文件后,/etc/defaults/grub文件和/etc/grub.d/脚本的内容将合成创建/boot/grub/grub.cfg文件你不应该手工编辑这个文件。它被设计为通过你在另外的文件中指定的设置自动生成。
你需要以root特权打开/etc/grub.d/40_custom文件来编辑。在Ubuntu上,你可以通过打开终端窗口,并运行以下命令来完成:
sudo gedit /etc/grub.d/40_custom
放轻松点,你可以用你喜爱的文本编辑打开该文件。例如,你可以替换命令中gedit为nano,在Nano文本编辑器中打开它。
除非你已经添加了其它自定义启动条目,否则你应当看到的是一个几乎空的文件。你需要在注释行下添加一个或多个ISO启动部分。
这里为你展示了怎样来从ISO文件启动Ubuntu或基于Ubuntu的发行版,我们在Ubuntu 14.04下作了测试:
menuentry Ubuntu 14.04 ISO {set isofile=/home/name/Downloads/ubuntu-14.04.1-desktop-amd64.isoloopback loop (hd0,1)$isofilelinux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=${isofile} quiet splashinitrd (loop)/casper/initrd.lz}
自定义启动条目以包含你期望的菜单的条目名称,并指定计算机上该ISO文件的正确路径,以及包含ISO文件的硬盘和分区设备名。如果vmlinuz和initrd文件的名称或路径不同,请为这些文件指定正确的路径。
(如果你的/home/ 目录是一个分区,请忽略/home部分,像这样:set isofile=/name/Downloads/${isoname})。
重要说明:不同的Linux版本要求带有不同启动选项的不同的启动条目,GRUB Live ISO多启动项目提供了用于不同Linux发行版的菜单条目的各种不同类型。你应当为你想要启动的ISO文件调整这些示例菜单条目。你也可以仅仅从网页搜索你想要启动的Linux发行版的名称和发行编号,并附带关键词在GRUB中从ISO启动,以获取更多信息。
如果你想要添加更多ISO启动选项,请为该文件添加额外部分。
完成后保存文件,返回终端窗口并运行以下命令:
sudo update-grub
再次启动计算机时,你将看到ISO启动条目,你可以选择它来启动ISO文件。在启动时,你可能需要按Shift键来显示GRUB菜单。
如果在尝试启动ISO文件时你看见错误信息或黑屏,那么你的启动条目配置肯定配置错误了。即使ISO文件路径和设备名是正确的,ISO文件上的vmlinuz和initrd文件的路径可能是不正确的,或者你启动Linux系统可能需要不同的选项。
上面就是从硬盘启动Linux ISO镜像的方法介绍了,你可以直接在硬盘上启动,而不需使用USB或光盘那么麻烦了,赶紧试试看吧。