一、环境搭建
1、安装虚拟机,我使用的虚拟机是VirtualBox,下载地址https://www.virtualbox.org/wiki/Downloads,该虚拟机免费。
2、安装Linux发行版,我使用的是Ubuntu,下载地址http://www.ubuntu.com/download。
3、Ubuntu安装成功后,在Ubuntu搜索“GParted分区编辑器”并安装,该软件主要是用于对磁盘进行分区。
4、用VirtualBox新建一块250MB的虚拟硬盘,然后用Gparted分区编辑器进行分区,如下图
记得将硬盘的第一个分区标志设置成“boog”,这样系统才可以从该分区引导,最好能分出一块“linux-swap”分区。
二、引导Linux
最新版的Ubuntu使用Grub2引导,所以要先在硬盘上安装Grub2 。,关于Grub2请看帮助文档https://help.ubuntu.com/community/Grub2。
将Grub2安装到虚拟机上的第二块硬盘,即sdb。
1、将sdb1挂载到/mnt/CustomLinux,并在sdb1上新建目录boot。
sudo mkdir /mnt/CustomLinux
sudo mount /dev/sdb1 /mnt/CustomLinux
sudo mkdir /mnt/CustomLinux/boot
2、安装Grub2到/dev/sdb。
sudo grub-install --boot-directory=/mnt/CustomLinux/boot /dev/sdb
“--boot-directory=/mnt/CustomLinux/boot”指出Grub2的安装目录,主要是存放Grub2的相关文件。“/dev/sdb”指出Grub2将要被安装到的硬盘,也就是第二块硬盘。如果控制台显示“Installation finished. No error reported.”表示安装成功。
3、复制内核到sdb1并重命名,上术第1步中已经将sdb1挂载到/mnt/CustomLinux/目录。
sudo cp /boot/vmlinuz-3.0.0-15-generic /mnt/CustomLinux/vmlinuz
sudo cp /boot/initrd.img-3.0.0-15-generic /mnt/CustomLinux/initrd.img
完成后,CustomLinux中的内容如图
4、添加Grub2配置文件。
sudo gedit
打gedit文本编辑器后,输入如下内容,然后保存到 /mnt/CustomLinux/boot/grub/目录。
menuentry "CustomLinux"{
set root=(hd0,1)
linux /vmlinuz
initrd /initrd.img
}
第一行表示Grub2启动界面上显示的菜单,第二行是设置启动分区为第一块硬盘的第一分区,Grub2对分区的表示方法和Grub不同,Grub2的(hd0,1)等同于Grub的(hd0,0),第三行指出Linux内核位置,第四行指出initrd的位置,关于initrd可以上网查相关资料。
三、测试是否能引导成功。
在VirtualBox中新建一台虚拟电脑命名为CustomLinux,将上面做好的那个250MB硬盘(/dev/sdb)作为新虚拟电脑的硬盘。在VirtualBox中启动CustomLinux后,将出现如下画面
回车选择CustomLinux将引导Linux内核。
如果显示“(initramfs)”表示引导成功,Linux内核已经启动,如图
initramfs指initrd.img执行后所建立的内存文件系统,输入“ls”可显示该文件系统的内容。
将CustomLinux硬盘的第一个分区挂载到内存文件系统“/tmp”目录并显示分区内容。
从图中可以看出,定制的Linux硬盘中有lost+founc、boot两个目录和vmlinuz、initrd.img两个文件。
至此,Linux内核引导完成。
参考:http://blog.csdn.net/deansrk/article/details/6661293