趣谈 Linux 操作系统
刘超
前网易杭州研究院云计算技术部首席架构师
85459 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 72 讲
趣谈 Linux 操作系统
15
15
1.0x
00:00/00:00
登录|注册

60 | 搭建操作系统实验环境(上):授人以鱼不如授人以渔

编译并运行
写测试程序
编译内核
定义编译选项
安装编译依赖的包
使用XML文件管理虚拟机
安装libvirt和virtinst
设置IP地址和NAT
创建网桥
测试新内核
下载源代码重新编译
创建虚拟机
分享给朋友
反复研读内容
分享疑惑和见解
按照过程操作
编译并安装新内核
修改Linux内核
下载源代码
创建虚拟机
实战课
使用libvirt创建和管理虚拟机
利用qemu模拟操作系统
课堂练习
总结时刻
需要搭建实验环境
实验性质的计算机学科
操作系统的理论部分讲解完毕
搭建操作系统实验环境

该思维导图由 AI 生成,仅供参考

操作系统的理论部分我们就讲完了,但是计算机这门学科是实验性的。为了更加深入地了解操作系统的本质,我们必须能够做一些上手实验。操作系统的实验,相比其他计算机课程的实验要更加复杂一些。
我们做任何实验,都需要一个实验环境。这个实验环境要搭建在操作系统之上,但是,我们这个课程本身就是操作系统实验,难不成要自己 debug 自己?到底该咋整呢?
我们有一个利器,那就是 qemu 啊,不知道你还记得吗?它可以在操作系统之上模拟一个操作系统,就像一个普通的进程。那我们是否可以像 debug 普通进程那样,通过 qemu 来 debug 虚拟机里面的操作系统呢?
这一节和下一节,我们就按照这个思路,来试试看,搭建一个操作系统的实验环境。
运行一个 qemu 虚拟机,首先我们要有一个虚拟机的镜像。咱们在虚拟机那一节,已经制作了一个虚拟机的镜像。假设我们要基于 ubuntu-18.04.2-live-server-amd64.iso,它对应的内核版本是 linux-source-4.15.0。
当时我们启动虚拟机的过程很复杂,设置参数的时候也很复杂,以至于解析这些参数就花了我们一章的时间。所以,这里我介绍一个简单的创建和管理虚拟机的方法。
CPU 虚拟化那一节,我留过一个思考题,OpenStack 是如何创建和管理虚拟机的?当时我给了你一个提示,就是用 libvirt。没错,这一节,我们就用 libvirt 来创建和管理虚拟机。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了使用qemu和libvirt搭建操作系统实验环境的方法。通过模拟操作系统和创建虚拟机,读者可以快速搭建实验环境并进行源代码的重新编译。文章详细介绍了创建虚拟机的步骤,包括设置网桥、安装libvirt、创建XML文件定义虚拟机等。此外,还介绍了在虚拟机中配置IP地址的步骤。接着,文章详细讲解了在原有内核代码的基础上加入自定义系统调用的实验过程,包括修改系统调用号、添加系统调用声明和实现等步骤。随后,文章介绍了编译内核的过程,包括安装编译依赖的包、定义编译选项和编译内核等步骤。最后,文章总结了实战课的内容,并提出了课堂练习,鼓励读者按照整个过程一步一步操作,以便更好地理解和掌握内核相关知识。整体而言,本文提供了一种简单而有效的操作系统实验环境搭建方法,为读者提供了授人以渔的技术指导。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《趣谈 Linux 操作系统》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(19)

  • 最新
  • 精选
  • Gnayils
    1. apt安装qemu-kvm,使用/usr/bin/kvm作为domain.xml中的emulator, 然后更改domain节点的type值为kvm,这样虚拟机的速度会更快。 2. 创建ubuntutest.img文件时,size至少30G,否则kernel的编译中间结果很大,会造成编译失败。 3. 将虚拟机的内存改大一些,否则在make install后使用带有debug info的内核启动系统时,unpack initramfs会失败。

    作者回复: 赞,实战派

    2020-06-07
    3
    9
  • LDxy
    可以在虚拟机里运行虚拟机吗?

    作者回复: 可以,就是慢的一塌糊涂了

    2019-08-15
    1
  • leslie
    发现老师的课如老师自己介绍的学习方法一样:不是一遍就能学懂的,跟着做跟着反思;要第二遍或者第三遍才能理解和明白老师所讲所授的知识。 看来所谓的第一遍或者第二遍第三遍只是大概:其实应当是三个阶段/层次;努力坚持努力学习,希望多遍之后能尽力掌握其6-8成。

    作者回复: 是的,加油

    2019-08-14
    1
  • 李海涛
    在定义xml文件时, <emulator>/usr/bin/qemu-system-x86_64</emulator>里面为什么是/usr/bin/qemu-system-x86_64?我看还有的文档说用 <emulator>/usr/bin/kvm</emulator>, 或 <emulator>/usr/libexec/qemu-kvm</emulator>? 请问这几个的区别?各个的适合使用场景?谢谢!

    作者回复: ls一下,看是不是指向同一个文件,不同系统安装完,名字不一定一样

    2020-05-19
  • 许童童
    跟着老师一起动手,实战。

    作者回复: 动手好,印象深刻

    2019-08-14
  • 郭江伟
    请问下老师 每次修改内核都需要全部编译吗? 可以部分编译吗?

    作者回复: 如果是模块,可以部分编译,然后加载,核心的部分,就需要全部编译了

    2019-08-14
  • 大王叫我来巡山
    当年上课的时候只是给了个文档,让增加系统调用,其实并不明白,终于看明白了

    作者回复: 自己尝试一把

    2019-08-14
  • Marshall
    后期准备跟着老师动手一下

    作者回复: 一定要动手哦

    2019-08-14
  • 王建峰
    希望我的记录能帮助到各位同学 Ubuntu20.04上搭建操作系统实验环境:https://blog.csdn.net/feit2417/article/details/116504341
    2021-05-10
    1
    10
  • 一栋人
    如果使用 virt-install 加上 "--graphics none --extra-args='console=ttyS0'" 就能直接 virsh console 上了。
    2020-03-10
    2
收起评论
显示
设置
留言
19
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部