Linux5.14于14小时之前发布了,而我5.13的总结还没有写出,我早觉得有写一点东西的必要了,这虽然于搬砖的码农毫不相干,但在追求进步的工程师那里,却大抵只能如此而已。为了不忘却的纪念,我们列出5.13内核的数个激动人心的新特性:
AppleM1的初始
Misccgroup
Landlock安全模块
系统调用的堆栈随机化
printk无锁ringbuffer的进一步优化
BPF可调用内核函数
公共的IOPAGEFault支持
AppleM1的初始支持
5.13最爆炸性的新闻无非是初始的AppleM1支持,但是然并卵,实用性几乎为0。因为,已经合入的patch非常类似于SoCbringup的初级阶段:
带earlycon支持的UART(samsung-style)串口驱动
Apple中断控制器,支持中断、中断亲和(affinity)和IPI(跨CPU中断)
SMP(通过标准spin-table来支持)
基于simplefb的framebuffer驱动
MacMini的设备树
这样一个东西,是没法用的,发烧友玩玩可以,但是我们感激并欣赏HectorMartin“marcan”领导的AsahiLinux项目开了一个这样的好头。但是,在AppleM1上面跑Ubuntu啥的,近期、中期和长期的选择还是用Parallels虚拟化技术比较好。
Misccgroup
众所周知,cgroup具备一个强大的控制CPU、内存、I/O等资源在不同的任务群间进行分配的能力。比如,你通过下面的命令,限制A这个群的CFS调度类进程,最多只能耗费20%的CPU:
这个世界上的绝大多数资源都是可以进行抽象的,比如属于cpuacct、cpu、memory、blkio、net_cls什么的,但是,总有一些不同于常人的人,他们既不是男人,也不是女人,而是“妖如果有了仁慈的心”的人。Linux内核的驱动子系统多达多个,但是还是有极个别驱动不属于这多类中的任何一类,于是在drivers下面有个misc:
现在内核碰到了类似的问题,它的资源要进行配额控制,但是不属于通用的类型,而是:
SecureEncryptedVirtualization(SEV)ASIDs
SEV-EncryptedState(SEV-ES)ASIDs
这些有限的ASIDs用于在AMD平台上,进行虚拟机内存加密,不能归于现有cgroup的任何一类。那么,咱们加个misc类的cgroup吧,于是Misccontrol-groupcontroller在5.13内核诞生了。这再次证明了,不要重新造轮子,但是你可以在现有的轮子里面放一个“杂交”轮子。Misccgroup允许进行一些特殊资源的控制,透过3个接口完成。
misc.capacity描述资源的能力(只读),比如:
catmisc.capacityres_a50res_b10
透过misc.current描述当前资源的占用(只读),比如:
catmisc.currentres_a3res_b0
透过misc.max设置这个cgroup最多只能使用多少资源(可读可写),比如:
#echores_a1misc.max
同志们,有了这个misccgroup的支持,以后咱们的阿猫阿狗资源限制,也可以往里面塞了。它相当于开了一道门。
Landlock安全模块
曾经有一个真诚的patch摆在我面前,但是我没有珍惜,发了V1被人怼了后就放弃了,等到失去的时候才后悔莫及,尘世间最痛苦的事莫过于此,如果上天可以给我一个机会再来一次的话,我会对那个patch说我要继续迭代发!如果非要在这个迭代的次数上加上一个期限,我希望是一百遍。5.13内核,最励志的事情无疑是,"Landlock"LandsInLinux5.13!在迭代了超过5年之后,安全组件landlock终于合入了Linux内核,这份始于年的爱情,终于有了一个美好的结局。为此,Linux内核doc的维护者,LDD3的作者之一JonathanCorbet发文指出:Kerneldevelopmentisnotforpeoplewholackpersistence;changescantakeanumberofrevisionsandalotoftimetomakeitintoamainlinerelease。文章链接: