Alpine Linux Porting (2)

一样开头先上成果~
https://ithelp.ithome.com.tw/upload/images/20211006/20140421QrvmoICHdE.png
完整影片可见:
https://twitter.com/Ruinland_Mask/status/1445487285529501707

之前的问题在於,LiteX-UART的chardev没有出现在新的rootfs的dev底下,kernel自己可以存取liteuart没差,但是getty要存取,那对应的chardev就要存在。

然而...... LiteX-UART的major跟minor都是0

static struct uart_driver liteuart_driver = {
	.owner = THIS_MODULE,
	.driver_name = "liteuart",
	.dev_name = "ttyLXU",
	.major = 0,
	.minor = 0,
	.nr = CONFIG_SERIAL_LITEUART_MAX_PORTS,
#ifdef CONFIG_SERIAL_LITEUART_CONSOLE
	.cons = &liteuart_console,
#endif
};

简单说这不是想让你自己去mknod出来的东西。

解法有很多,改code是种方式,但是,RISC-V Linux有招祖传瓮底小东西 — — SBI。
在过去,因为RISC-V CPU的开发都在FPGA或模拟器上,一些peripheral可能都还在半残状态,所以SBI层的legacy版本留着console的getchar跟putchar SBI call、可以让程序有个简单暴力的文字界面可以互动;而Linux原本在过去Xen虚拟机时代时,留有HVC (Hypervisor Virtual Console)的界面。两者一拍即合,叫做RISCV_SBI_HVC。

在懒得改code下,火速修了一下 Alpine Init的逻辑,叫它不要去折腾其他tty,就大功告成了,不会再狂喷找不到 /dev/liteuart 给getty去attach。


<<:  Day27 休息是为了走更长的路?

>>:  Flutter基础介绍与实作-Day22 旅游笔记的实作(3)

[DAY 05]物品拍卖价格查询功能(3/4)

接续昨天要做的功能,我们要在discord上直接输入中文就能查询到物品的拍卖价格网址,今天主要是介绍...

DAY13:Fragment片段之实作

今天,要来产生Fragment。 首先按File再点选 Kotlin Class/File 接着取名...

不只懂 Vue 语法:请说明 style 里的 scoped、deep selector 的作用?

问题回答 scoped 属性的作用是避免父元件的 CSS 样式会污染到子元件的 CSS 样式。Dee...

DAY12 特徵工程-资料化约(特徵选取)

特徵工程可以分为两大部分,一是根据现有的资料特徵进行筛选,选出较有影响力的特徵进行训练,另一个是根据...

Day7 - 读 Concurrency is not Parallelism - Rob Pike (二)

续上篇,Day6 - 读 Concurrency is not Parallelism - Rob ...