chromiumos kernel
可能很多人知道 chromiumos 可以运行 android 应用. 甚至还有 runc 跑 android container 之类的 (这背景... 知道与不知道并不重要?)
syzkaller / syzbot 项目对外检测 linux-next, netdev, bpf 之类的树. 面向 G 内部但结果开源的则是 android-common 和 chromiumos (zircon 就不是 linux 了).
对于 android-common 来说已有文章主动交代了修改方面. https://source.android.com/devices/architecture/kernel/android-common chromiumos 其实大同小异, 这里就不做区分的一概记录一下.
sdcardfs android 4.4 以前 sd 卡就是 vfat 挂载. 4.4~5.1 用 FUSE, 程序名叫 sdcard 来模拟权限. 有 double caching 和上下文切换的问题. 6.0~ 改用内核实现 sdcardfs. 三星提供, 但基于 wrapfs 开发. (后来不明原因的 sdcardfs 废弃了, 上了个替代品 esdfs, esdfs 也基于 wrapfs. 但大背景是新手机通常不再允许 SD 卡扩展, 这和耳机孔的命运差不多) sdcardfs 需要内核提供若干个 function export 方可编译. 需要提一笔的是三星贡献了 exfat 的实现叫 sdfat (非主线, GPLv2), lineageos 里有.
(netfilter) xt_qtaguid 监控应用的网络流量. android 9(P) 改用 eBPF.
uid_cputime uid_sys_stats 应用耗电量的记录 (虽然实际并不会和 cpu 用量完全正比)
ashmem / binder 不管这是干啥的, 只能忍着. anbox 必须的模块也就是这两个. ashmem 也许可以用 sealed memfd 代替(这也是补丁).
---
mm 方面引人注目的是这三个. add extra free kbytes tunable add min_filelist_kbytes sysctl for protecting the working set mm: collect swap and reclaim metrics
vm.extra_free_kbytes 在 RHEL 里也有. 有降低 jitter 的作用, 内存压力大, 用于回收的时间也表现为延迟. (随手说: RHEL kernel 唯一可以一说的也就是 crashkernel=auto, 这是 kexec/kdump 相关收集 core 用的, UEK5 里也有这东西) vm.min_filelist_kbytes 是 chromium os 专有的, 给 page cache 保证最低内存量.
---
剩下就比较随便了 epoll: use freezable blocking call net: Only NET_ADMIN is allowed to fully control TUN interfaces. ---属于 "paranoid networking" 的一部分, 不展开了 MOBLIN: fastboot: remove "wait for all devices before mounting root" delay
顺手说一下 moblin 的历史. 当时是 2009 年, 华硕 Eee PC 为代表的上网本的时代. 五秒开机需要 SSD, 也需要内核支持不同子系统的并行初始化. moblin 的 fastboot 系列补丁在 2.6.30 就进入主线, 不明原因的就漏了两个. 另一个是先初始化 ata (再 kms/图形) 的补丁, 只是调整了一下 Makefile 里的顺序, 可以在 clearlinux 那边找到. fastboot 可能会过快以至于 mount 也要等待. clearlinux 里有 "init: wait for partition and retry scan" 解决.
android-x86 的重要 patch 可能只有一个, 是用于 live mode 的. shmem: enable user xattr for tmpfs 关于 xattr, gentoo-sources 有一个同样的效果的, 用于存储 pax 信息. /dev/root 的补丁感觉不重要.
---
ps: 最近说 (2018.10 发布的) Pixel 3 (/XL) 这台 845 机用上了 DRM/KMS. 如果三年后 G 不再给提供更新, 靠 4.19 引入的主线驱动可能也会使 845 芯片系列变成刷机热门, 社区可以做很长时间的支持.