zoukankan      html  css  js  c++  java
  • ucore lab0 实验准备

    前言

    实现一个操作系统一直是我的一个愿望,当然为了不只是愿望,因此近期开始尝试实现。搜索了相关资料后,计划先从清华大学的ucore操作系统开始,完成其8个实验,之后再进一步修改、添加新功能,逐步实现自己的OS

    另外,博客已经很久没更新了,这是时隔3年的第一次更新,之后也会更多通过博客园记录学习过程

    内容

    完成实验环境的搭建

    开发环境

    ucore实验与运行需要在Linux上,因为Win还是比较方便,所以我使用的是虚拟机安装Linux,虚拟机使用VMware,Linux发行版使用最新版的Ubuntu 20.04

    ucore实验编写时使用Win的VS Code,较为流畅、方便(当然也可以直接在Ubuntu中使用VS Code编辑),但是编译、调试、运行OS时需要使用虚拟机的Ubuntu,为了使得两者无缝切换,可以将Win的相应目录映射到Ubuntu虚拟机/mnt目录下。如图我映射了Win下的整个A盘,映射名称为a,映射到了Ubuntu的/mnt/hgfs/a目录

    下载ucore

    使用git从github中下载,github地址,如下:

    git clone https://github.com/chyyuu/ucore_os_lab.git
    

    由于git clone比较慢,因此我是直接在github上下载的zip压缩包

    安装qemu

    ucore使用qemu模拟器运行,qemu支持多种cpu架构的模拟,如i386、arm、mips等,通过apt可安装qemu,如下:

    sudo apt-get install qemu-system
    

    编译内核

    从github下载的ucore_os_lab目录中,ucore_os_lab/labcodes_answer为较为完整的os代码,首先通过编译lab1的代码了解ucore编译过程。

    • 进入ucore_os_lab/labcodes_answer/lab1_result目录
    • 使用make clean清空编译结果
    • 使用make命令编译

    编译成功后生成一系列目标文件,主要有:

    • ucore.img:被qemu访问的虚拟硬盘文件
    • kernel: ELF格式的toy ucore kernel执行文,被嵌入到了ucore.img中
    • bootblock: 虚拟的硬盘主引导扇区(512字节),包含了bootloader执行代码,被嵌入到了ucore.img中
    • sign:外部执行程序,用来生成虚拟的硬盘主引导扇区

    编译完成后使用make qemu即可启动内核运行

    内核调试

    内核开发过程中不可能一次成功,需要反复调试、运行,为了使调试过程更为直观、易操作,使用Ubuntu中的VS Code进行调试。VS Code需要做如下配置:

    • 将lab1_result目录在VS Code中打开
    • 点击运行-创建launch.json文件,选择gdb调试器
    • VS Code会自动创建该文件模板,在配置项中只需修改和增加下面两个
    "miDebuggerServerAddress": "127.0.0.1:1234",
    "program": "bin/kernel"
    

    完成配置后可通过VS Code进行调试

    • 使用make gdb使qemu进入调试模式
    • 在内核代码中添加断点
    • 启动调试
    • 进行调试

    参考

  • 相关阅读:
    JZ36 两个链表的第一个公共结点
    程序员的表达能力
    Git学习(2)-使用Git 代码将本地文件提交到 GitHub
    初识模块
    三元表达式、递归、匿名函数
    CSRF
    XSS前置课程--同源策略
    XSS
    SQL注入基础入门
    Linux下ettercap的安装,make安装软件步骤
  • 原文地址:https://www.cnblogs.com/whileskies/p/13138491.html
Copyright © 2011-2022 走看看