使用虚拟机制作一个可以引导启动的简单系统。方法如下:

一、制作两个分区

1、添加一块新的硬盘,新建两个分区,格式化并挂载到/mnt/boot和/mnt/sysroot目录中;虚拟机添加硬盘的操作很简单就不做演示了,要注意的是添加的硬盘最好选择成“将虚拟磁盘存储为单个个文件”,并为将文件名修改为容易识别的名字,以方便用于挂载到其它虚拟机中。

3c8ce6380daa33c267ccb0e2e66a02de.png

2、对新硬盘进行格式化并创建两个分区,容量分别为512M和10G。在目录/mnt下创建两个目录boot和sysroot,用于挂载文件系统。

3c8ce6380daa33c267ccb0e2e66a02de.png

二、安装grub

使用grub-install命令安装grub,命令格式为:

grub-install [–root-directory=挂载点父目录] DEVICE

挂载点父目录:内核及initrd文件所在的分区的挂载点的父目录,且此挂载点必须叫boot。例如:为/boot所在的目录这安装grub,那么–root-directory=/;而对于/mnt/boot目录安装grub,命令如下图所示:

3c8ce6380daa33c267ccb0e2e66a02de.png

三、复制内核文件和ramdisk文件

3c8ce6380daa33c267ccb0e2e66a02de.png

3c8ce6380daa33c267ccb0e2e66a02de.png

四、添加grub.conf文件

grub.conf文件的作用,在进入系统前为用户提供一个选择的菜单。

3c8ce6380daa33c267ccb0e2e66a02de.png

各选项含义如下:

default=0:选择菜单的光标默认在第一项;

timeout=5:等待用户选择时间为5秒;

tiltle TestOS:菜单中显示系统的名称为TestOS;

root (hd0,0):指定第一个分区为接下来要启动的系统或内核文件所在的分区;

kernel:指定要运行的内核文件;

initrd:为要运行的内核指定其可用的ramdisk文件。

五、创建系统目录

手动添加各系统目录,如下图所示:

3c8ce6380daa33c267ccb0e2e66a02de.png

六、复制程序

手动将/bin/bash程序复制到/mnt/sysroot目录中,由于程序会调用库文件,还需要把相关的库文件一并复制过去,使用ldd命令可以查找出程序相关的库文件。

3c8ce6380daa33c267ccb0e2e66a02de.png

3c8ce6380daa33c267ccb0e2e66a02de.png

3c8ce6380daa33c267ccb0e2e66a02de.png

也可以使用此方法复制命令到新的系统中;

3c8ce6380daa33c267ccb0e2e66a02de.png

七、测试

1、本地测试

使用chroot命令在本地测试:

3c8ce6380daa33c267ccb0e2e66a02de.png

2、启动测试

创建一个新的虚拟机,硬件选择上面创建的那个,然后启动虚拟机。

3c8ce6380daa33c267ccb0e2e66a02de.png

3c8ce6380daa33c267ccb0e2e66a02de.png

原创文章,作者:petmaster,如若转载,请注明出处:http://www.178linux.com/4652

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐