这篇开始基本上是进入持续分析有哪些未完善的部份需要进行补足。
依照这几次的bootlog的部份分析,Alpine OpenRC-init的modloop以及hwclock/swclock两个target是起不来的,且有错误显示settimeofday是坏的。
modloop如名称所示,是Alpine自己的世界观中,如果有module需要runtime启动、则从一个loopback去mount起来寻找,对於我目前的porting而言,我不太介意,但说後者会是我比较在意的部份。
简单来说,syslog要启动时,需要有正确的wall clock才有意义,OpenRC这边给的第一条路是去呼叫userspace程序: hwclock
来作wall clock设定;如果fail的时候,会启动OpenRC自己的builtin:
https://github.com/OpenRC/openrc/blob/master/src/rc/swclock.c
其实也很简单、就透过settimeofday
这个POSIX规定的user API去设时间。
快速看过後,发现躺着这组东西在busybox的mailing list上:
http://lists.busybox.net/pipermail/busybox/2021-March/088583.html
笼统说来,这是一个musl-libc跟busybox造成的共同惨案。对於RISC-V32这种新世代的32平台来说,time_64t是基础人权状态,所以很多以前相关32/64相容的过渡性syscall直接是不存在的。但是目前musl-libc的compat32
机制,是直接把settimeofday强制导向32版本:
int __settimeofday_time32() __asm__("settimeofday");
所以我的确有两件事情要修正,第一件是要去修正musl的 arch/riscv32/bits/syscall.h.in
,把 170 号的legacy settimeofday
杠掉、加上404号的 clock_settime64
,但是这样改完并不够,因为目前整个使用逻辑是错的,修正方向有两条、一条是要去把compat32修好,另一条是apply那条patch、要busybox自己去call 404号syscall就好。
因为hwclock
、也就是去找busybox做事是OpenRC的优先选择,我决定这边先apply busybox的部份。等下一篇开始验证这套打通後,Alpine的OpenRC hwclock会不会正常运作起来。
>>: LeetCode 双刀流:53. Maximum Subarray
Bootstrap已是目前全球被大量网页开发者使用的一个网页UI框架了,其特色在於使用简单,开发快速...
今天来练习回圈的范例,利用范例说明for回圈以及while回圈 for回圈范例程序码如下: impo...
有一阵子常常把KNN和K-means搞混,今天来聊聊两者的区别~ KNN(k-nearest nei...
前言: 之前都是一次性训练好模型,但是一旦资料太多要训练,动辄就是数小时,甚至几天 所以我打算改善训...
今天来看看 MySQL 该怎麽用 第1部分 - 进到 MySQL 画面 1.先打开 XAMPP 2....