从grub菜单启动ubuntu iso文件
我遵循Grub2 ISO启动指南
https://help.ubuntu.com/community/Grub2/ISOBoot
这是我的iso启动菜单
menuentry "Ubuntu 14.04 Live" { set isofile="/lilw/os/ubuntu.iso" loopback loop (hd0,10)$isofile linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile noprompt noeject initrd (loop)/casper/initrd.lz }
但是我无法从iso文件启动,它总是让我的系统重启。没有消息发出所以我不知道发生了什么。
如果我进入grub菜单然后使用命令
grub >
输入以下命令:
grub > loopback loop (hd0,10)/lilw/os/ubuntu.iso grub > linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile noprompt noeject grub > initrd (loop)/casper/initrd.lz
然后
grub > boot
它会正常启动到iso。
我不想这样开机。 但是grub中的menuentry不起作用。
仅供参考:我的系统上运行了多个版本的ubuntu,范围从10.04到最新版本。 我的iso文件存储在sda10中,它是当前ubuntu grub的/ home。
编辑1 :我提取iso文件的包含但仍无法使用ubuntu启动。 但我可以用Fedora 20启动它将它包含到一个文件夹中,很奇怪..
编辑2 :最后,我找到一个帮助使用新的grub2命令语法的站点。 所有失败的启动都是因为grub2中的语法错误
尝试这个 :解决了我的问题
http://git.marmotte.net/git/glim/tree/grub2
所以我的grub菜单项看起来像这样:
menuentry "Ubuntu 14.04 (LTS) Live Desktop amd64" --class ubuntu { set isoname="ubuntu-14.04-desktop-amd64.iso" set isofile="/lilw/os/${isoname}" loopback loop (hd0,10)$isofile linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=${isofile} quiet splash initrd (loop)/casper/initrd.lz }
如果我错过了isofile的两个'{}’,它将无法启动。 太奇怪了
试试这个
menuentry "Ubuntu 14.04 Live" { loopback loop (hd0,10)/lilw/os/ubuntu.iso linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=/lilw/os/ubuntu.iso noprompt noeject initrd (loop)/casper/initrd.lz }
- 将您的ISO文件放入
/live
:
sudo mkdir /live
sudo cp somelinux.iso /live
- 将新菜单项添加到
grub.cfg
sudo gedit /etc/grub.d/40_custom
menuentry 'ISO Ubuntu 14.04 2014 Live' --class os --class gnu-linux --class gnu --class os --group group_main { set isofile="/live/ubuntu-14.04-desktop-amd64.iso" insmod ext2 insmod loopback insmod iso9660 loopback loop (hd0,msdos5)$isofile linux (loop)/casper/vmlinuz.efi file=(loop)/cdrom/preseed/ubuntu.seed noprompt boot=casper persistent iso-scan/filename=/$isofile quiet splash -- initrd (loop)/casper/initrd.lz }
去做:
-
更改分区代码名称上方的菜单项,保留
/live/somelinux.iso
,在我的情况下,它是hd0,msdos5
因为它在/dev/sda5
hd0,msdos5
/上 -
将文件名从somelinux.iso更改为你的文件名,在我的情况下我有:
ubuntu-14.04-desktop-amd64.iso
- 更新GRUB
sudo update-grub
- 重启
我想出问题是grub2的语法改变了。 按照这个链接找到要启动的grub条目,仍然需要填写一些行来工作。
http://git.marmotte.net/git/glim/tree/grub2