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


    1.写在前面

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

    上一篇博客的地址

    2.环境的准备

    2.1Virtualbox

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

    2.2Ubuntu18

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

    1. 新建虚拟机

      在这里插入图片描述

    2. 选择对应的系统

      在这里插入图片描述

    3. 设置内存

      在这里插入图片描述

    4. 创建虚拟硬盘

      在这里插入图片描述

    5. 设置虚拟硬盘类型

      在这里插入图片描述

    6. 设置硬盘大小

      在这里插入图片描述

    7. 设置硬盘大小和位置

      在这里插入图片描述

    8. 设置CPU个数

      在这里插入图片描述

    9. 设置显存大小

      在这里插入图片描述

    10. 设置镜像

      在这里插入图片描述

      在这里插入图片描述

    11. 设置网络模式

      在这里插入图片描述

    12. 启动虚拟机

      在这里插入图片描述

    13. 选择中文简体

      在这里插入图片描述

    14. 点击安装,选择键盘

      在这里插入图片描述

    15. 点击继续

      在这里插入图片描述

    16. 点击继续

      在这里插入图片描述

    17. 点击现在安装

      在这里插入图片描述

    18. 点击继续

      在这里插入图片描述

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

      在这里插入图片描述

    20. 等待安装

      在这里插入图片描述

    21. 安装完成,现在重启

      在这里插入图片描述

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

      在这里插入图片描述

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

      在这里插入图片描述

      在这里插入图片描述

      在这里插入图片描述

      在这里插入图片描述

    24. 重启设备

      在这里插入图片描述

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

      在这里插入图片描述

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

      在这里插入图片描述

    27. 关闭操作系统

    2.3创建虚拟硬盘

    1. 创建虚拟硬盘

      在这里插入图片描述

      在这里插入图片描述

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

      在这里插入图片描述

      在这里插入图片描述

      在这里插入图片描述

    3. 关联起来

      在这里插入图片描述

      在这里插入图片描述

    2.4创建操作系统

    1. 创建虚拟机

      在这里插入图片描述

    2. 分配内存

      在这里插入图片描述

    3. 关联对应的虚拟硬盘

      在这里插入图片描述

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

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

    3.安装GRUB

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

    lsblk
    
    • 1

    在这里插入图片描述

    可以看到一共有两块硬盘: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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

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

    在这里插入图片描述

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

    sudo mkdir ./hdisk/boot
    
    • 1

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

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

    在这里插入图片描述

    若无误则表明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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

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

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

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

    4.启动myOS

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

    在这里插入图片描述

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

    在这里插入图片描述

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

  • 相关阅读:
    电脑监控软件解读
    Linux exec函数族
    Linux系统及Docker安装RabbitMq
    【线性代数】【一】1.6 矩阵的可逆性与线性方程组的解
    Modbus转Profinet网关在大型自动化仓储项目应用案例
    win11疑难解答怎么进
    Web APIs 学习归纳1---Web API概述&简单的元素获取
    ssm基于Html+css的音乐网站的设计与实现毕业设计源码181627
    python-Matplotlib画图那些你不知道的事
    「网页开发|前端开发|Vue」05 Vue实战:从零到一实现一个网站导航栏
  • 原文地址:https://blog.csdn.net/qq_36434742/article/details/126088549