如何从硬盘运行任何 Linux 发行版
大多数 Linux 发行版都提供 ISO 文件,这些文件设计和构建为直接从可启动媒体(例如 CD /DVD、以实时模式运行) >闪存/USB卡,甚至使用Linux Grub菜单直接从硬盘,无需将其刻录到CD/DVD 或使用 USB 创建工具创建可启动 USB。
本教程将重点介绍一种通过编辑 Ubuntu 22.04 GRUB2(适用于 Ubuntu 20.04)直接从硬盘运行某些 Linux ISO 发行版的方法。 > 或更早版本)菜单,这是大多数现代 Linux 发行版中的默认引导加载程序。
从硬盘运行操作系统提供了一种更快的 Linux 使用方式,而且对隐私也有很大影响,因为默认情况下不会保留所有设置和实时会话。
本主题中介绍的发行版是 Rocky Linux、Fedora、Kali Linux、Arch Linux 和 Gentoo Live DVD。
要求
新安装的 Ubuntu 22.04(或带有 GRUB2 引导加载程序的任何其他 Linux 发行版)位于系统的硬盘上。
第 1 步:下载 Linux Live ISO 文件
1. 要能够启动并运行任何 Linux 发行版而不将它们安装到硬盘上,请确保下载每个 Linux ISO 映像的“Live CD/DVD”版本。
- 下载 Rocky Linux Live ISO 映像
- 下载 Fedora Live ISO 镜像
- 下载 Kali Linux Live ISO 镜像
- 下载 Arch Linux Live ISO 镜像
- 下载 Gentoo Linux Live ISO 镜像
步骤 2:将 ISO 映像添加到目录中
2. 下载您喜爱的 Linux ISO Live DVD 映像后,使用“sudo nautilus<”以 root 权限打开 Ubuntu Nautilus' 命令,并在系统根路径中创建一个名为 live
的目录,并将 ISO 文件移动到该文件夹。
sudo nautilus
步骤3:查找磁盘分区UUID
3. 要进一步继续,需要为 Grub2 提供我们的磁盘分区 UUID – 通用唯一标识符(分区ISO 文件所在的位置)。
要获取分区 UUID,请运行以下 blkid 命令。
sudo blkid
对于系统启动时自动安装的分区或硬盘,请运行以下 cat 命令。
sudo cat /etc/fstab
4. 获取分区 UUID 的另一种方法是打开并可视化位于 /boot/grub/ 路径中的 grub.cfg
文件内容,然后搜索 --fs-uuid
字符串(如果您没有 /boot 的单独分区)。
步骤 4:将 ISO 映像添加到 GRUB2 菜单
5.获取根分区UUID代码后移动到/etc/grub.d/目录,打开40_custom 文件进行编辑,并在该文件的底部添加以下行。
menuentry 'Rocky Linux Live' --class os --class gnu-linux --class gnu --class os --group group_main {
set isofile="/live/Rocky-9.3-x86_64-minimal.iso"
insmod ext2
insmod loopback
insmod iso9660
set root=(hd0,3)
search --no-floppy --fs-uuid --set=root 51567f31-1236-49b4-8c4a-bf8cb84856e0
linux /live/Rocky-9.3-x86_64-minimal/isolinux/vmlinuz noconfig=sudo username=root hostname=tecmint
initrd /live/Rocky-9.3-x86_64-minimal/isolinux/initrd.img
}
这里以下指令代表:
- set isofile=保存 ISO 系统路径位置的变量。
- (hd0,msdos1)=第一个硬盘的第一个分区(在 Linux 中,磁盘编号从 0 开始) – 与 /dev/sda3 相同。
- –fs-uuid –set=root 51567f31-1236-49b4-8c4a-bf8cb84856e0=第一个硬盘 UUID 代码的第一个分区。
- linux 和 initrd=自定义内核启动参数 – 它们根据每个 Linux 发行版而有所不同。
6. 完成文件编辑后,update-grub 将新的 ISO(在本例中为 Rocky Linux)添加到 Grub2 菜单中。
sudo update-grub
要验证它,请打开 /boot/grub/grub.cfg 并在底部搜索您的 ISO 条目。
第 5 步:从硬盘运行 Rocky Linux ISO
7.要运行Rocky Linux Live ISO,请重新启动计算机,从 GRUB 菜单中选择Rocky Linux条目,然后按Enter 键。
以同样的方式,您可以将其他 Linux Live ISO 发行版映像添加到 GRUB2 菜单,如图所示。再次打开并编辑 /etc/grub.d/40_custom grub 文件并添加以下条目。
对于 Fedora Live DVD
menuentry 'Fedora Live' --class os --class gnu-linux --class gnu --class os --group group_main {
set isofile="/live/Fedora-Workstation-Live-x86_64-39-1.5.iso"
insmod ext2
insmod loopback
insmod iso9660
loopback loop (hd0,msdos1)$isofile
search --no-floppy --fs-uuid --set=root 3b87d941-8ee7-4312-98fc-1f26828d62ab
linux (loop)/isolinux/vmlinuz boot=live fromiso=/dev/sda1/$isofile noconfig=sudo username=root hostname=fedora
initrd (loop)/isolinux/initrd.img
}
对于 Kali Linux Live DVD
menuentry 'Kali Linux Live' --class os --class gnu-linux --class gnu --class os --group group_main {
set isofile="/live/kali-linux-2023.3-installer-amd64.iso"
insmod ext2
insmod loopback
insmod iso9660
loopback loop (hd0,msdos1)$isofile
search --no-floppy --fs-uuid --set=root 3b87d941-8ee7-4312-98fc-1f26828d62ab
linux (loop)/live/vmlinuz boot=live fromiso=/dev/sda1/$isofile noconfig=sudo username=root hostname=kalilinux
initrd (loop)/live/initrd.img
}
对于 Gentoo Live DVD
menuentry 'Gentoo Linux Live' --class os --class gnu-linux --class gnu --class os --group group_main {
set isofile="/live/archlinux-2023.11.01-x86_64.iso"
insmod ext2
insmod loopback
insmod iso9660
loopback loop (hd0,msdos1)$isofile
search --no-floppy --fs-uuid --set=root 3b87d941-8ee7-4312-98fc-1f26828d62ab
linux (loop)/live/vmlinuz boot=live fromiso=/dev/sda1/$isofile noconfig=sudo username=root hostname=gentoo
initrd (loop)/live/initrd.img
}
8. 然后再次更新 GRUB 菜单,重新启动计算机,并从 GRUB 菜单中选择您首选的 Linux 发行版 ISO。
sudo update-grub
9. 如果您的 root 分区上没有足够的可用空间来托管其他 Linux ISO 文件,您可以添加另一个硬盘并移动所有 Linux 发行版 ISO 文件那里。创建分区并添加文件系统后,将其挂载到 /mnt 路径上以使其可用。
sudo mount /dev/sdb1 /mnt
10.然后移动新硬盘上的所有ISO并使用blkid命令获取其UUID。
sudo blkid
11. 再次打开并编辑 /etc/grub.d/40_custom grub 文件,然后使用以下命令将其他 Linux Live ISO 发行版映像添加到 GRUB2 菜单中相同的过程,但要注意每个发行版 Live Kernel 启动参数,这些参数可以通过使用 mount -o Loop 选项安装 ISO 映像来检查或查阅发行版 Wiki 页面。