当前位置: 首页 > news >正文

【2021.12.25】xv6系统入门学习

【2021.12.28】为xv6系统添加一个开机密码

文章目录

  • 【2021.12.28】为xv6系统添加一个开机密码
    • 0、说明
    • 1、Ubuntu20上安装xv6
    • 2、测试指令
      • 3、修改系统代码
    • 4、添加自己的程序命令

0、说明

xv6 是 MIT 设计的一个教学型操纵系统。

记录Ubuntu上安装x86版本xv6系统,为其添加开机密码,添加自己的命令,的入门学习历程。

xv6-百度百科

介绍 | xv6 中文文档

1、Ubuntu20上安装xv6

x86版本xv6系统:github:mit-pdos/xv6-公共

先要安装qemu虚拟机,xv6运行在qemu虚拟机上。

sudo apt-get install qemu

安装完成可以验证一下

qemu-system-i386

显示界面,表示成功安装qemu。

image-20211228172238460

如果鼠标点进qemu后移动不出来,可以按ctrl+alt+g:将鼠标移出qemu,类似ctrl+alt将光标移出虚拟机一样

然后再在github下载一份xv6源码

git clone https://github.com/mit-pdos/xv6-public.git

image-20211228173206221

cd xv6-public/

然后make编译

make

编译成功后,启动xv6

make qemu

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jwZkfjpF-1677920481357)(C:/Users/TipZhzj/AppData/Roaming/Typora/typora-user-images/image-20211228174705733.png)]

2、测试指令

执行ls指令测试一下

image-20211228175952120

xv6上实现小部分linux上通用的指令,例如:

ls                        # 显示当前目录下的文件
cat README.md             # 将 README.md 的内容打印到屏幕上
echo hello                # 输出 hello 到屏幕上
cat README.md | grep qemu # 用管道连接两个命令
wc README.md              # 对 README.md 的内容进行统计
rm wc                     # 删除 wc 文件

3、修改系统代码

打开main.c文件,搜索cprintf("cpu%d: starting %d\n", cpuid(), cpuid());,在其后添加一行代码

cprintf("Hello Xv6!\n");

然后再编译一遍,运行

make
make qemu

image-20211228184825185

修改xv6代码,小试牛刀。

4、添加自己的程序命令

(1条消息) 操作系统实验Lab 1:Xv6 and Unix utilities(MIT 6.S081 FALL 2020)_菜籽爱编程的博客-CSDN博客

Qemu 简述 - bakari - 博客园 (cnblogs.com)

mit-pdos/xv6-public: xv6 OS (github.com)

http://www.lryc.cn/news/28883.html

相关文章:

  • Linux内核4.14版本——drm框架分析(4)——crtc分析
  • 用原生js手写分页功能
  • CornerNet介绍
  • 【SpringBoot】日志使用
  • 关于slice扩容性能损耗的探究
  • Java实现单向链表
  • 3月4日,30秒知全网,精选7个热点
  • EXCEL-职业版本(2)
  • java中延时队列的实现
  • 基于java的circle buffer的实现
  • 通用方法——为什么重写equals还要重写hashcode
  • JavaSE学习进阶day2_01 包和权限修饰符
  • Android性能调优 - 省电优化
  • ElasticSearch - SpringBoot整合ES之全文搜索匹配查询 match
  • 句子的改写和扩写
  • DockerFile创建及案例
  • 第十四届蓝桥杯三月真题刷题训练——第 1 天
  • 基于容器云提交spark job任务
  • Linux系统调用之目录操作函数
  • 设计模式-策略模式
  • 面试+算法:罗马数字及Excel列名与数字互相转换
  • Connext DDS路由服务Routing Service(1)
  • 如何使用SaleSmartly进行Facebook Messenger 营销、销售和支持
  • 教资教育知识与能力中学教学
  • IDEA中使用Tomcat的两种方式:集成本地Tomcat使用Tomcat Maven插件
  • IP 地址的简介
  • 3D动作/动画特效
  • python 多线程编程之_thread模块
  • vue:vue2与vue3的区别
  • SQL数据库语法