本文介绍使用GRUB2引导加载程序直接从硬盘驱动器启动Debian 9 ISO文件的方法,这样就不必创建Live CD或实时USB,现在创建Linux Live USB非常容易,可以使用图形工具或命令行来完成。但是,如果你没有USB闪存驱动器或者你想将Debian安装到你的USB闪存盘怎么办?本文为你提供解决方案。GRUB2引导加载程序能够直接从您的硬盘驱动器引导Linux ISO映像文件,GRUB2支持许多文件系统,包括但不限于ext4、HFS+和NTFS,这意味着你可以将ISO文件放在任何这些文件系统上,GRUB2还可以直接从LVM和RAID设备读取文件,GRUB2也有网络支持,你可以使用TFTP协议从网络加载操作系统映像。
使用GRUB2直接从硬盘驱动器启动Debian 9 ISO文件 首先,启动计算机并启动现有的Linux发行版,下载Debian 9 ISO(Debian 9.8发布下载,附加强安全性能及修复BUG更新说明),可以使用netinstall ISO或live CD ISO,还需要下载hd-media/initrd.gz和hd-media/vmlinuz,下载地址:http://http.us.debian.org/debian/dists/stretch/main/installer-amd64/current/images/hd-media/,其中initrd.gz是最初的ramdisk,vmlinuz是Linux内核。 如果你想要一个允许你使用鼠标单击的图形安装程序,请改为下载hd-media/gtk/initrd.gz和hd-media/gtk/vmlinuz,将这三个文件放在同一目录中,接下来,打开终端窗口并使用文本编辑器(如nano)编辑/etc/grub.d/40_custom文件: sudo nano /etc/grub.d/40_custom 在此文件中,我们可以将自定义条目添加到GRUB引导菜单,在这种情况下,我们想要添加一个条目来引导Debian 9 ISO文件,以下是一个例子,如果使用Debian 9.8则改成Debian 9.8 net-install.iso: menuentry "Debian 9.4 net-install.iso" { insmod ext2 set root='(hd0,2)' linux /linuxbabe/vmlinuz initrd /linuxbabe/initrd.gz }
说明: 1、menuentry:此条目将显示在GRUB2启动菜单上,可以随意命名。 2、insmod命令插入一个模块,由于这三个文件存储在我的主分区上,因此需要ext2模块,如果这些文件位于NTFS分区上,那么需要改为使用insmod ntfs。 3、set命令将我的第一个硬盘驱动器的第二个分区设置为根目录。(我的主分区是我的第一个硬盘的第二个分区。) 4、linux命令从指定的路径加载Linux内核,vmlinuz表示支持虚拟内存的压缩Linux内核可执行文件,字母'z'表示它已被压缩。 5、initrd命令从指定路径加载初始ramdisk,它只能在运行linux命令后使用,初始ramdisk是安装到RAM的最小根文件系统。 请注意,GRUB不区分IDE和SCSI,在Linux中,/dev/hda指的是第一个IDE硬盘驱动器,/dev/sda指的是第一个SCSI或SATA硬盘驱动器,如果使用NMVe SSD,则可能将其命名为/dev/nvme0n1,/dev/nvme1n1,依此类推。但在GRUB中,无论接口类型如何,第一个硬盘驱动器总是被称为hd0,另请注意,GRUB中的分区号从1开始,而不是0。 要检查分区号,可以在终端窗口中运行lsblk或sudo parted -l命令,你也可以在Gparted分区编辑器中看到它,可以通过输入以下命令来安装它: sudo apt install gparted 在我的计算机上,vmlinuz,initrd.gz和Debian ISO映像存储在/home/linuxbabe/目录下,但我有一个单独的主分区,它在GRUB配置文件中设置为root,因此路径应该以/linuxbabe开头,不是/home/linuxbabe/。 保存并关闭文件,然后使用以下命令更新GRUB引导菜单: sudo grub-mkconfig -o /boot/grub/grub.cfg 在Fedora上,运行命令是: sudo grub2-mkconfig -o /boot/grub2/grub.cfg 在基于Debian的Linux发行版上,你可以使用以下命令更新GRUB引导菜单: sudo update-grub 可以从输出中看到GRUB添加了一个新的菜单项(较新版本的GRUB不显示此消息):
现在重新启动计算机,在GRUB引导菜单中,你可以看到刚刚添加的菜单条目,请注意,你可能需要按右Shift键才能在计算机重新启动时调出GRUB引导菜单:
选择它并按Enter键,Linux内核(vmlinuz)和初始RAM磁盘(intird.gz)将被加载到内存中,然后将从Debian ISO映像加载其他安装程序组件。
避免错误 你可能已使用以下代码从硬盘启动Ubuntu ISO,现在尝试使用与Debian 9 ISO相同的语法: menuentry "ubuntu-16.04-desktop-amd64.iso" { set isofile="/home/username/Downloads/ubuntu-16.04-desktop-amd64.iso" loopback loop (hd0,1)/$isofile linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile quiet noeject nopromt spalsh -- initrd (loop)/casper/initrd.lz } 它不会起作用,如果你使用此语法,则在启动Debian ISO后将出现以下错误: No common CD-ROM drive was detected. 或者: No medium found containing a live file system. 原因是Ubuntu方法在ISO映像中使用Linux内核和初始ramdisk,但你必须使用hd-media/vmlinuz和hd-media/initrd.gz才能从硬盘启动Debian安装程序,Debian ISO映像是Debian安装程序所需的CD-ROM/介质。
一些其他提示 如果这三个文件位于磁盘分区的顶级目录中,则在指定vmlinuz和intird.gz的路径时不要忽略开头的斜杠,换句话说,你需要: linux /vmlinuz initrd /initrd.gz 而不是: linux vmlinuz initrd initrd.gz 如果这三个文件位于MBR磁盘的扩展分区上,则分区号从5开始,而不是1,例如,扩展分区内的第一个逻辑分区将编号为5,扩展分区内的第二个逻辑分区将编号为6。 如果你的计算机内部有SATA磁盘和NVMe SSD,则SATA磁盘是第一个,而NVMe SSD是第二个, USB驱动器和NVMe SSD也是如此。
相关主题 |