如果,你不了解启动过程,请你先看看man boot
如果,要启光盘镜像的话,你得知道你所要安装的系统的live-system是否支持boot from iso。在这里http://michael-prokop.at/blog/2009/05/25/boot-an-iso-via-grub2/有一句
It’s the live system (as for example grml) that has to support this “boot from ISO” feature.
在这文章里,它是gml系统,我去它的官网看过了,它是支持的。可以看看这个
http://git.grml.org/?p=grml-live.git;a=blob_plain;f=templates/GRML/grml-cheatcodes.txt;hb=HEAD
上grml来看,它是基于debian的。我想ubuntu也是基于debian的,所以也应该支持的。的确,我通过下面的命令验证了这一点
mkdir iso
mount -o loop ubuntu-10.10-desktop-i386.iso ./iso
cat ./iso/boot/grub/loopback.cfg
其中输出了一句
linux /casper/vmlinuz file=/cdrom/preseed/ubuntu.seed boot=casper iso-scan/filename=${iso_path} quiet splash —
这句证明,我们的ubuntu的live-system是支持的boot from iso
当我用不合适的linux 参数进入时,会有initramfs,所以我在google上找了initramfs ,幸好找到了这个
http://git.grml.org/?p=live-initramfs-grml.git;a=blob_plain;f=manpages/live-initramfs.en.7.txt;hb=HEAD
在这里,我看到了这一句:
At boot time it will look for a (read-only) media containing a “/live”
directory where a root filesystems (often a compressed filesystem image like
squashfs) is stored. If found, it will create a writable environment, using
aufs, for Debian like systems to boot from.
所以这也就可以解释,硬盘安装时在grub的配制文中的linux 这一行有一句boot=casper了和file=/cdrom/preseed/ubuntu.seed。
又由于上面的cat的linux 这一行有iso-scan/filename这个参数,我想是ubuntu特有的。和gml的isofrom=是一样。
通过上面的分析,可以得出从硬盘安装方法。
假设,我已经安装了grub。ubuntu-10.10-desktop-i386.iso 为了方便,用ubuntu.iso代替,并放在(hd0,3)里。
进入grub2命令行。
loopback loop (hd0,3)/ubuntu.iso
这是利用grub的回放设备,挂iso,这样可以使你不用把casper文件夹提取出来了。
set root=(loop)
这是设置grub的根目录。
linux /casper/vmlinuz boot=casper iso-scan/filename=/ubuntu.iso
这是让grub挂内核。并传递参数boot=casper 给initramfs
initrid /casper/initrid.lz
boot
http://forum.ubuntu.org.cn/viewtopic.php?t=314659
http://blog.sina.cn/dpool/blog/s/blog_48c8019a0100dil9.html
http://www.360doc.com/content/10/0821/16/2447514_47724805.shtml