首页 > 其他分享 >minos 0 前(废)言(话)

minos 0 前(废)言(话)

时间:2024-06-08 15:26:03浏览次数:13  
标签:shell 讲述 虚拟化 SELinux 代码 minos

- 首发公号:Rand_cs

minos 0 前(废)言(话)

从今天开始开启一个新的系列,讲述虚拟化的那些事儿。时隔上次发文又隔了好几个月了,主要是平时工作比较忙,没太多时间精力维护博客之类的。

前一个系列 SELinux 没写完,但也不算太监,比较重要的基本都介绍了。剩下的就是 Linux 中关于 SELinux 驱动以及 libselinux 中的代码,关键部分的代码我基本捋了一遍,有些多,我也就懒得花时间整理了,我估计这玩意儿也没多少人感兴趣,懂这原理后实际用处也不大,感兴趣的可以去瞅瞅这代码,有问题的可以找我交流。SELinux 这东西应用是最重要的,就是策略,策略才是核心。这个在 Android 可能用的比较多,添加服务,应用,cts 测试等等可能都会遇到过 SELinux 策略的问题。从接触到现在,我也解决过许多 SELinux 兼容性的问题,简单的问题网上解决方式一大堆,比较复杂的 case,碍于公司事项,也不好实际拿出来讲,所以 SELinux 应用方面也就先不讲述了,这个系列就先到此为止,后面有缘再续。

回到虚拟化,虚拟化一直是我感兴趣的方向,工作之余一直有慢慢抽时间去了解学习。从课堂上接触到操作系统的时候,那是还是一个小菜鸟,对于操作系统课程各种抽象的说辞很是不解,为此去仔细研究了 xv6,基本做到了每行代码细细研究,终于对于操作系统有了一个比较直观的认识。至少说,虚拟内存、进程线程、上下文切换、shell 程序等等这些当时对我来说特别抽象的名词有了清晰的认识,并且从硬件到软件明白了它们是如何工作的。我印象最深的就是 shell 程序,当时书上还有老师给来了一句抽象的解释,shell,壳儿嘛,包裹着内核,通过 shell 程序我们执行命令程序,进入内核。当时我就直接懵逼了,,,这,这,这,可以这么解释的嘛。

又扯了太多,深夜写文章就是话多哈哈哈哈,再次回到虚拟化。虚拟化的话题也很大,而这个系列主要集中在 type1 类型的虚拟化。对于虚拟化相关的文章,网页上很多,写得很好的不计其数,我印象很深的,知乎上有个叫兰新宇大佬的博客,写得很好,推荐:https://www.zhihu.com/people/lan-xin-yu;

但总的来说,还是抽象了,没有落到实际的代码,有些东西终究模糊。源码之下,了无秘密,还是得看代码去学习虚拟化的一些知识。平时精力有限,一些耳熟能详的虚拟化方案太复杂,不太适合直接上手阅读学习。在网上搜索了一番,终于找到了一款小巧功能完整的 type1 类型的虚拟化方案。

此项目地址:https://github.com/minosproject/minos/tree/master 。看名字应该是一位叫做 乐敏 的大佬的项目,感谢这位大佬的项目,让我们有机会更加深入的接触到虚拟化的世界。

此项目的代码关键部分基本看完了,可以拿出来和大家分享分享。这次讲述可能不会像之前 xv6 那样详细到每行代码,大部分只是捋一下流程,有代码的那种比较清晰的流程。主要包括以下几个方面:

1. 内存虚拟化,也就是 hyp 如何对内存进行管理的
2. CPU 虚拟化,也就是 hyp 如何对进程进行管理的
3. 中断虚拟化,捋清楚在有虚拟化的情况下,各种中断是如何路由与处理的
4. IO 虚拟化,也就是虚拟机之间,虚拟机与 hypervisor 之间,虚机与物理硬件之间等等如何进行数据交互的

核心的大概就上面这些,其他的随缘,后面看时间精力来吧。目前这个系列前半部分——主要讲述上述虚拟化流程,基本已经写完了,这也是为什么搁了那么久才发文的一个原因,想着自己对 minos 有个整体把握,相关文章初稿都写完后,再慢慢发出来。

- 首发公号:Rand_cs

标签:shell,讲述,虚拟化,SELinux,代码,minos
From: https://www.cnblogs.com/randcs/p/18238623

相关文章

  • minos 1.1 内存虚拟化——hyp
    首发公号:Rand_csminos1.1内存虚拟化——hyp内存虚拟化,目前理解主要两方面:内存管理,没有虚拟化的情况时,对于Linux内核运行在物理硬件之上,内核需要管理物理内存,需要管理进程的虚拟内存。类似,type1类型的hypervisor/minos运行在物理硬件上,minos需要对物理内存管理,需要对......
  • minos 1.2 内存虚拟化——guest
    首发公号:Rand_csminos1.2内存虚拟化——guest项目来自乐敏大佬:https://github.com/minosproject/minos本文继续讲述minos中的内存虚拟化中关于guest的部分,主要弄清楚一个问题,minos如何管理guestvm的内存。对于虚拟机的内存管理主要是ipa的管理,ipa如何映射到......
  • minos 2.1 中断虚拟化——ARMv8 异常处理
    首发公号:Rand_cs越往后,交叉的越多,大多都绕不开ARMv8的异常处理,所以必须得先了解了解ARMv8的异常处理流程先说一下术语,从手册中的用词来看,在x86平台,一般将异常和中断统称为中断,在ARM平台,一般将中断和异常统称为异常异常的流程,可以分为3个阶段,“设备”产生异常信号,中......
  • minos 2.3 中断虚拟化——GICv2 管理
    首发公号:Rand_cs硬件肯定需要软件配合,这一节就来实战GICv2首先准备好GICv2手册:https://developer.arm.com/documentation/ihi0048/bb/?lang=en,对于硬件的管理,最底层的操作就是读写硬件的寄存器,所以这里准备好手册,随时查阅手册//gicv2.cstaticvoid*gicv2_dbase;stat......
  • minos 2.2 中断虚拟化——异常处理流程
    首发公号:Rand_cs上一节讲述了ARMv8异常模型,很多理论,这一节来看一个实际的例子,来看看minos中的异常处理流程异常向量表直接来看minos的异常向量表,很多事情就明了了:elx_vectors:c0sync://CurrentELwithSP0BAD_MODEVECTOR_C0_SYNC.balign0x80c0ir......
  • minos 2.5 中断虚拟化——vGIC
    首发公号:Rand_cs这一节开始讲述真正的中断虚拟化,首先来看硬件方面的虚拟化。前文minos2.3中断虚拟化——GICv2管理主要讲述GICv2的Distributor和CPUInterface,在Hypervisor存在的情况下,它们都是为Hypervisor服务的。现在有了vm,vm里面的内核也需要操作GIC,怎么......
  • minos 2.6 中断虚拟化——虚拟中断子系统
    首发公号:Rand_csHypervisor需要对每个虚机的虚拟中断进行管理,这其中涉及的一系列数据结构和操作就是虚拟中断子系统VIRQ虚拟中断描述符structvcpu{uint32_tvcpu_id;.........../**membertorecordtheirqlistwhichthe*vcpuishandlingn......
  • minos 2.4 中断虚拟化——中断子系统
    首发公号:Rand_cs前面讲述了minos对GICv2的一些配置和管理,这一节再往上走一走,看看minos的中断子系统中断中断描述符/**ifairqishandledbyminos,thenneedtoregister*theirqhandlerotherwiseitwillreturnthevnum*tothehandlerandpassthe......