• 如何使用GRUB2从硬盘启动Debian ISO文件

    本教程将向您展示如何使用GRUB2引导加载程序直接从硬盘引导Debian ISO文件,这样您就不必创建live CD或live USB。如今,创建Linux live USB非常容易,您可以使用图形工具或通过命令行来完成。但是,如果你周围没有USB闪存驱动器,或者你想在USB闪存驱动器上安装Debian,该怎么办? 搜救 GRUB2引导加载程序能够直接从硬盘引导Linux ISO映像文件。 GRUB2支持许多文件系统,包括但不限于ext4、HFS+和NTFS,这意味着您可以将ISO文件放在这些文件系统中的任何一个上。 GRUB2可以直接从LVM和RAID设备读取文件。 GRUB2还提供网络支持。您可以使用TFTP协议从网络加载操作系统映像。 在本教程中,我们将只讨论从本地硬盘引导ISO文件。要使用此功能,您需要在计算机上安装一个带有GRUB2的Linux发行版作为引导加载程序。 如何使用GRUB2从硬盘直接启动Debian ISO文件 首先,启动计算机并启动现有的Linux发行版。下载Debian ISO。您可以使用netinstall ISO或live CD ISO。您还需要下载hd media/initrd。gz和hd media/vmlinuz。  initrd。gz是最初的ramdisk。 vmlinuz是Linux内核。 如果你想要一个可以用鼠标点击的图形安装程序,那么下载hd media/gtk/initrd。gz和hd media/gtk/vmlinuz。将这三个文件放在同一个目录中。接下来,打开一个终端窗口并编辑/etc/grub。d/40_带有文本编辑器(如nano)的自定义文件。 sudo nano /etc/grub.d/40_custom 在这个文件中,我们可以向GRUB启动菜单添加自定义条目。在本例中,我们希望添加一个条目来引导Debian ISO文件。下面是一个例子。 menuentry "Debian.4 net-install.iso" { insmod ext2 set root='(hd0,2)' linux /linuxbabe/vmlinuz initrd /linuxbabe/initrd.gz } 说明: 菜单项:此项将显示在GRUB2启动菜单上。你可以给它取任何你喜欢的名字。 insmod命令插入一个模块。因为这三个文件存储在我的主分区上,所以需要ext2模块。如果这些文件位于NTFS分区上,则需要使用insmod NTFS。 set命令将我的第一个硬盘驱动器的第二个分区设置为根目录。(我的主分区是我的第一个硬盘驱动器的第二个分区。) linux命令从指定路径加载linux内核。vmlinuz是指支持虚拟内存的压缩Linux内核可执行文件。字母“z”表示它是压缩的。 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或sudoparted-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 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的路径时,不要省略开头的斜杠。广州。换句话说,你需要 linux /vmlinuz initrd /initrd.gz 而不是 linux vmlinuz initrd initrd.gz 如果这三个文件位于MBR磁盘的扩展分区上,则分区号从5开始,而不是1。例如,扩展分区内的第一个逻辑分区将被编号为5;扩展分区内的第二个逻辑分区将编号为6。 如果计算机中有SATA磁盘和NVMe SSD,SATA磁盘是第一个,NVMe SSD是第二个。USB驱动器和NVMe SSD也是如此。 我希望本教程能帮助您使用GRUB2引导加载程序从硬盘引导Debian ISO映像。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。

    2022.03.23 浏览:88