Skip to content

Latest commit

 

History

History
270 lines (114 loc) · 10.2 KB

DailyWork.md

File metadata and controls

270 lines (114 loc) · 10.2 KB

写在前面

主要是深感最近细碎的知识点和事务太多,不写个备忘录,容易忘记,但是专门整理成一个目录,又嫌内容太少,因此,本文档按照每日流水账的模式写。

2023/8/14

上周四周五折腾redox的编译问题(编完19个g的代码我是半点不想碰),今天来了解MIT的biscuit小饼干操作系统,按照陈老板的说法是Go语言写的——虽然我连一行helloworld的go我都没写过,但是看看论文,过过编译吧。

(编译过了,没有ide-driver,试图重新编译qemu也找不到这个驱动,不知道哪里去弄,没这驱动真没辙,怀疑有一定可能性是wsl的问题,改天拿host环境试一下)

论文 https://www.usenix.org/system/files/osdi18-cutler.pdf ,状态,待读。

说起来,上次陈老板让我读的那篇文章还没整理完,嗯,今天可以整理完。(done)

但是读完了又产生了新的问题,因为在Nexus操作系统中进行了Linux代码的迁移,直接把原有驱动拿来用了(稍微改了改以适应安全性要求),那么这和我们需要做的事情是类似的。

说起论文,那天看redox的时候,还有一个对于微内核性能的评测,不过很老了,(老意味着经典是吧)

https://os.inf.tu-dresden.de/pubs/sosp97/ 待读。

今日还需要查找Rust for Linux内核代码最新和未来的进展,也不知道内核邮件列表能不能翻出来。

(关于这个东西,翻出来个Rust abstractions for network device drivers 这玩意,我真是醉了,好好地,给自己添什么堵啊)

简单来说,本来LDD小组的工作就有为Rust网络设备,做一层抽象的设计目标,这玩意儿又给了很好的范例,好家伙,当我这一嘴没说。到最后倒霉的不还是我么???好吧,反正rust我不熟,看米神的。

关于Rust for Linux内核代码的未来,翻出来是这么说的

他主要放在Rust support这一系列内核邮件列表中(然而这玩意的主线也有好久没有更新了,最新版本的v10的patch好像是去年十月份的事情。额emmm)

他有好几个版本,但是我看了一圈,感觉最重要的还是下面这段话

Please note that the Rust support is intended to enable writing
drivers and similar "leaf" modules in Rust, at least for the
foreseeable future. In particular, we do not intend to rewrite
the kernel core nor the major kernel subsystems (e.g. `kernel/`,
`mm/`, `sched/`...). Instead, the Rust support is built on top
of those.

反正意思就是,仅仅是给写内核模块提供一个接口工具。

除此之外,我还是不知道,我该怎么订阅内核邮件列表,包括翻邮件列表,虽然网上教程一大堆,但是看上去都比较复杂。更不用说怎么直接发邮件了。

除此除此之外,额,好像还有一大堆其他驱动模块的工作,比如drm,还有puzzleFS这样一些第三方主导的驱动模块。

但是他们都是还只是RFC

好吧,我今天算是知道了原来RFC是Request For Comments的意思。

最后需要做训练营的ppt(拖延症晚期,我现在很慌张。。。)

大概就是今天的工作了(但愿可以按时完成)

其他:姜坤昨天找我问qemu中如何进行控制台交互。

陈庭润那边,训练营的示例代码需要完成。除此之外还需要自己加一个用于基本环境配置和体验。

(我怎么这么菜啊,屁都不会。。。还有一大堆东西要看,还拖延,呜呜呜)

CVE:

大概就是漏洞一个收集机构(?)然后每个系统漏洞都会给个编号

2023/8/15

啊先不说别的,让我赶紧肝ppt吧

大概算了一下,需要200页ppt+e1000网卡驱动分析(C和rust版本,对照),但愿今天做的完。

PCIE的msi和msi-x中断

emmm感觉就是为了增加中断。

2023/8/16

搞国汽项目的什么文档分拆

找ctr搞训练营的课程作业

2023/8/17

昨天陈庭润发了一版结果,上午验证一下

(算了等心情好了再验证吧)

下午先看看周一想读的两篇论文

结果是摸鱼调试了个Makefile

然后了解了一下LFS,大概就是只有个内核是玩不转的,还需要一堆额外的东西,LFS就是加上这些Linux下的环境如何配置的,从而构建一个完整可用的最小的基本Linux系统。

给个链接 https://linux.cn/lfs/LFS-BOOK-7.7-systemd/index.html

之所以去看这个,一方面是上次被陈老板说,不懂得操作系统上层是怎么弄得,嗯,写操作系统只知道实现内核接口就完事了也确实离谱。另一方面是之前在204板子上曾经试图做一些在Linux下很常见,但是在该系统上无法实现的,包括系统配置,添加软件等等操作。以及因为系统配置搞出来的事情(比如说迄今为止不知道怎么在204板子上面关掉DHCP动态路由配置)。而那些东西不是在Linux内核中做到的。也算是有始有终吧

2023/8/18

上午读go实现操作系统那篇文章,同时在看他们的项目文档。(见Paper目录下读论文的进度。。。反正不指望一天能读完就是了,明天继续吧)

下午看之前看到的LFS,大概介绍一下

第一是建立一个挂载的目录,然后,在该目录下用宿主机编译好binutils,gcc等一堆东西。这里面需要两遍编译,第一遍用宿主机上面的去编译,第二遍用编译好的自编译。哎,bootstrap确实太难了。

第二步是chroot到该挂载的目录,用之前编译的gcc等东西去安装glibc等一堆东西,然后编译gcc,(交叉编译情况下这尤其正常),在此基础上,做了一堆测试

自编译环境是最重要的,其他的其实问题不大,只要有编译器,其他可以自己编译就完事了。

OK,在上述这些内容弄完之后,剩下的就是一些配置文件,这些配置文件,在Linux内核启动的时候都会使用到。

对于systemd 服务(这是在之前安装的一个软件)

在etc/systemd/network/下面配置静态ip和dhcp

历史上在最开始是用devfs,动态检测可以使用的设备,但是存在问题,后来改成了sysfs

设备文件通过devtmpfs创建,之后给udevd一个uevent。在/etc/udev/rules.d,/lib/udev/rules.d以及/run/udev/rules.d里面指定规则。

对于内核检测中已经匹配上的设备,直接注册为sysfs中的设备节点。

如果是通过insmod这种模块插入的方式注册的。那么加载模块的时候,也发一个uevent。

可以通过相关命令让具体设备能够创建自己的node的符号链接。

最后则是引导系统

唔,首先是创建/etc/fstab,这是为了开机之后可以自动挂载的

然后编译内核

主要是编译完了之后,需要将结果拷贝过去

镜像需要拷贝过去,system.map也要

然后是grub。

OK,这样就好了,好吧,我大概明白了,从一个内核封装出一个Linux发行版需要搞什么事情了——虽然没有GUI。

另外今天下午读完了L4Linux的那篇论文,虽然比较走马观花。

周末不可以摆烂!(好好学习,天天向上)

2023/8/20

周末认认真真的看了Linux网络模块的代码

具体记录在对应的文件夹里面

大概了解了从上到下的整个框架。

2023/8/21

上午研究GC算法去了,放对应文件夹去了。

总感觉比起什么计数算法快多了,为啥人家说Go的内核GC不行。。。

2023/8/22

上午开始编陈庭润大佬给的作业的问题。啊,挺麻烦。。。出了一些问题。

下午不管不顾先写ppt吧,这ppt再难产就完蛋了。

还有看完那篇go操作系统内核的论文。

无论如何还是要记录我的问题,既然用的是1.10版本的go,然后设计了gc,那么go1.5和1.8版本对gc的优化到底有没有做过计量???

2023/8/23

今日不搞学术啦,上午终于跑过了陈庭润提给我的代码,哦哦哦原来要先这样,再这样,然后再这样。。。

下午需要给这份代码准备一个干净且合适的仓库,且写好测试报告

以及准备ppt(本科生都入学了今天,不能再拖延了)

2023/8/24

做ppt

2023/9/3

今日开始大体完成了训练营相关的工作(坐等张轩铬测完就完事了,反正也没啥人交作业。。。)

2023/9/7

今日按照陈老师的要求,折腾俩晚上一上午之后,总算过了arceos的那5道题目。哦吼真不错

2023/9/8

读一篇论文。

我觉得起码这篇论文还是值得一读的,毕竟想要实现一个类Unix的内核,必须需要了解内核API这些的使用频率,按照从高到低的使用频率顺序来进行一个实现顺序的安排

具体放在Paper下面了

2023/9/9

今日踩坑了,是这样的,本来以为我应该先弄ACPI的部分的,但是,数据结构敲得七七八八了之后,一看Linux的设计,他的实现方式,是在启动多核之后,再将ACPI这个低1M的地址的东西映射到内存中,然后进行一个探测并且读取相关的表格。

换而言之,我还是先考虑从实模式启动起来再说。

2023/9/10

今日一个是重写了makefile,唔,弄错了点事情,啊,这个,啊他这个,makefile里面的ifeq后面那个括号带不带空格是有影响的。所以有几个参数传递的不对。

然后需要了解GAS的汇编去,我知道GCC内联汇编的东西,也知道MASM和NASM的一些东西(虽然忘的七七八八了)。

还有就是看陈老板布置的论文。

(今日买的自行车到了,哦吼真不错,是我太天真了,这车人向前倾,我手臂力量不足,现在打字都是颤抖的)

2023/9/13

过去几天干嘛了我也忘了,好像是在入学一大堆活动之余,去看什么Intel 64和IA-32手册去了,那玩意在某个文件夹下面,东西挺多,3个volume,估计可以看到十月份了,但是说实在的,64位的x86还是得学,毕竟自己的os还是得做成64位的。

今天不看了,今天去看那个phy的文件说明去了,总而言之,东西不少

2023/9/16

昨天今天大概整理了一些应该可以看的调度的论文,包括2023和2022的,锁相关的包括过去五年的