手写操作系统-环境的建立

1.写在前面

上一篇博客由于我们使用的虚拟机导致无法启动对应的虚拟机,然后就不了了之,今天我带领着你们来搭建对应的环境。

上一篇博客的地址

2.环境的准备

2.1Virtualbox

考虑每个人环境都是不一样的,可能有Mac、Windows的,这儿我们先准备一个虚拟机,我们先下载一个virtualbox,对应的下载地址,然后下载对应好的版本直接安装就可以了。

2.2Ubuntu18

直接按照如下的步骤就可以完成安装。

  1. 新建虚拟机

  2. 选择对应的系统

    手写操作系统-环境的建立_第1张图片

  3. 设置内存

    手写操作系统-环境的建立_第2张图片

  4. 创建虚拟硬盘

    手写操作系统-环境的建立_第3张图片

  5. 设置虚拟硬盘类型

  6. 设置硬盘大小

  7. 设置硬盘大小和位置

  8. 设置CPU个数

  9. 设置显存大小

  10. 设置镜像

  11. 设置网络模式

    手写操作系统-环境的建立_第4张图片

  12. 启动虚拟机

  13. 选择中文简体

  14. 点击安装,选择键盘

  15. 点击继续

  16. 点击继续

  17. 点击现在安装

  18. 点击继续

  19. 设置好账号密码,点击继续

  20. 等待安装

  21. 安装完成,现在重启

  22. 再次重启一次,因为这儿有我们的安装盘,需要移出

  23. 进入系统,准备更新组件

  24. 重启设备

  25. 安装增强功能,点击设备,然后点击安装增强功能

  26. 安装完成,重启,调整对应的分辨率

  27. 关闭操作系统

2.3创建虚拟硬盘

  1. 创建虚拟硬盘

    手写操作系统-环境的建立_第5张图片

  2. 选择虚拟硬盘的类型大小

  3. 关联起来

    手写操作系统-环境的建立_第6张图片

2.4创建操作系统

  1. 创建虚拟机

    手写操作系统-环境的建立_第7张图片

  2. 分配内存

    手写操作系统-环境的建立_第8张图片

  3. 关联对应的虚拟硬盘

    手写操作系统-环境的建立_第9张图片

  4. 点击创建,至此我们所有的环境准备完毕。

注意:虚拟硬盘os.vdi即跟Ubuntu虚拟机关联又跟myOS虚拟机关联。这个时候我们只需要在Ubuntu虚拟机上进行对虚拟硬盘的改写,就能同步到我们的操作系统

3.安装GRUB

先打开我们的Ubuntu虚拟机,然后打开对应控制台。执行如下的命令:

lsblk

可以看到一共有两块硬盘:sda、sdb,其中sda是Ubuntu系统的专用硬盘,sdb就是我们的目标硬盘os.vdi。

接下来依次执行如下的命令:

//sdb设备只是一块新的硬盘,上面需要建立文件系统才能够使用
//mkfs.ext4即是在sdb上建立ext4文件系统
sudo mkfs.ext4 /dev/sdb
//进入~目录建立hdisk文件夹作为sdb的挂载目录
cd ~
mkdir hdisk
//将/dev/sdb挂载在hdisk目录下,这样我们就能通过访问hdisk目录访问sdb硬盘
sudo mount /dev/sdb ./hdisk

再次输入lsblk命令,可以看到sdb设备已经被加载到了hdisk目录下(可以认为访问hdisk就是访问sdb硬盘)

而后创建boot目录,作为内核的加载目录:

sudo mkdir ./hdisk/boot

将grub安装到boot中(grub可以看做是bootloader,是用来加载操作系统的),这需要借助grub-install工具:

sudo grub-install --boot-directory=./hdisk/boot/ --force --allow-floppy /dev/sdb

若无误则表明grub安装完毕,进入boot目录可以看到多出了grub文件夹。

现在还需做一件事情,那就是配置grub的启动项,在boot/grub目录下新建一个grub.cfg,其中的内容如下:

//设置HelloOS是启动系统的第一个选项
menuentry 'myOS' {
#加载part_msdos、ext2模块
#这是grub的语法
insmod part_msdos
insmod ext2
set root='hd0' #只有一个硬盘,因此设置根目录为hd0(就是hd.vdi)
multiboot2 /boot/COSMOSOS.eki #加载boot目录下的.eki内核文件
boot #加载启动内核文件
}
#设置过时样式为目录
set timeout_style=menu
#设置过时时间
if [ "${timeout}" = 0 ]; then
  set timeout=10 #等待10秒钟自动启动
fi

注:上述grub.cfg文件内容暂时不懂没关系,语法的学习可以参考:GRUB2语法学习,并且在下一篇博客会对GRUB、Boot、efi等概念做一个总结,到时候一切都明白了

保存后关闭虚拟机Ubuntu,启动虚拟机myOS。

注:两个虚拟机不能同时开启,因为两者都挂载了hd.vdi,两个同时开启会出现文件冲突。

4.启动myOS

启动myOS之后可以看到下面的结果:

手写操作系统-环境的建立_第10张图片

点击myOS之后,提示找不到eki文件:

手写操作系统-环境的建立_第11张图片

之所以找不到eki文件,是因为我们暂时还没有往os.vdi硬盘中放入内核文件,而这就是我们以后要做的工作——将内核编译为eki文件放入grub文件夹下,而后利用虚拟机myOS进行测试!

你可能感兴趣的:(计算机操作系统,java,运维,linux,计算机操作系统)