我不想刻录 CD、DVD 或 USB 记忆棒。我也不在乎保存现有操作系统 (Linux Mint)。我想直接从 ISO 映像将 Ubuntu(实际上是 Kubuntu 12.04 LTS)安装到计算机上。该映像适用于 Kubuntu Live DVD(3.5 GB)。
计算机现在已启动到 Linux Mint。一组命令行步骤就足够了。在我看来,我只需要欺骗现有系统,让它认为我插入了 CD/DVD,对吗?
我知道已经有一个类似的问题,但是没有好的答案。答案基本上是“查看此链接”。我查看了链接,并决定 StackExchange 需要对这个问题给出一个好的答案。此外,互联网上其他地方的大多数答案都假设用户是从 Windows 转到 Ubuntu 的。所以我认为这个问题在这里需要一个好的答案。谢谢
答案1
我在网上查找后发现了这个。
如果在 Grub2 配置文件中正确定义了条目,Grub2 能够直接启动许多 Linux 发行版的 ISO 映像。
ISO 映像必须放在单独的分区上尚未安装操作系统。为了简单起见,我们将其放在 /boot 下的新目录中(假设它位于单独的分区上)。
创建新目录并复制 ISO 映像:
sudo mkdir /boot/iso sudo cp ~/Desktop/name.iso /boot/iso
~/Desktop/name.iso
假设映像位于您的桌面上,那么 ISO 映像的位置和名称在哪里?添加 Grub2 条目:
需要将 ISO 映像的条目添加到
/etc/grub.d/40_custom
文件中。通过以下方式编辑文件:gksudo gedit /etc/grub.d/40_custom
并将该文件中的文本替换为以下内容:
#!/bin/sh echo "Adding 40_custom." >&2 exec tail -n +4 $0 # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. menuentry "Kubuntu ISO" { set isofile="/boot/iso/kubuntu-12.04.iso" loopback loop (hd0,8)$isofile linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject initrd (loop)/casper/initrd.lz }
哪里:
Kubuntu ISO
= 您想要在 Grub 菜单中显示的名称。boot/iso/kubuntu-12.04.iso
= 您的 ISO 映像的位置和名称。(hd0,8)
= 包含 ISO 映像的分区。- 注意: 的
tail -n +4
意思只是“grub 从哪一行开始读取配置”。这个例子中的第 4 行是第一个注释行,这是可以的。
Grub 读取分区的方式与 Ubuntu 不同。'hd0' 表示
sda
Ubuntu 读取的第一个硬盘,并且8
是与 Ubuntu 相同的分区。换句话说,(hd0,8) 表示 'sda8'。要找出您的分区,请在终端中运行以下命令:
sudo fdisk -l
假设您的图像包含在
sda1
分区中,您可以将(hd0,8)
上面一行更改为(hd0,1)
,如果图像在分区中sdb1
,您将更(hd0,8)
改为(hd1,1)
。保存并关闭此文件,然后运行此命令:
sudo update-grub
重新启动并从 Grub 菜单中选择新的 ISO 条目。希望它能成功启动到桌面。
现在,如果您想从同一个 ISO 执行安装,您需要先卸载 ISO 映像,因为它是从 HDD 上的分区安装的(可能您有一个 HDD 并想将 Ubuntu 安装到同一个 HDD)并且安装程序需要先卸载所有已安装的分区,然后才能进行任何更改。
因此,从 Live CD 环境转到终端并运行:
sudo umount -l /isodevice
就这样。现在您可以双击桌面上的“安装”图标并继续安装。
更多信息请参见Ubuntu 论坛 1, 和Ubuntu 论坛 2
来源:TuxGarage
答案2
我无法使用 Mitch 的答案,因为我想安装最小版本的 Ubuntu,但 ISO 映像不起作用(没有 vmlinuz)。因此,我将其改编为使用网络启动安装
我将下载的文件放入 /boot/netboot 并将以下条目添加到 grub 配置中:
menuentry "NetInstall" {
linux (hd0,0)/boot/netboot/ubuntu-installer/amd64/linux
initrd (hd0,0)/boot/netboot/ubuntu-installer/amd64/initrd.gz
}
然后我忘了跑
sudo update-grub
所以我不得不再次启动现有的 Linux,但最终更新了 grub 后实际安装非常顺利。