并口、Legacy 与专用字符驱动

并口、Legacy 与专用字符驱动

1. 并口打印

lp.c在parport Core之上创建/dev/lpN

  • claim/release port;
  • 分块write;
  • 检查busy/paper/error/select;
  • wait或轮询;
  • ioctl获取状态/超时。

打印机离线可让blocking write长时间等待。

2. PPDEV

ppdev.c创建/dev/parportN,让用户态执行并口协议:

  • claim/release;
  • data/control/status;
  • direction;
  • negotiate mode;
  • IRQ等待;
  • timeout。

它比直接I/O port安全一些,但仍允许控制物理引脚,应限制权限。

RK3588一般没有PC parport controller。

3. NVRAM

nvram.c暴露架构NVRAM操作。空间可能包含firmware/BIOS关键配置,写错会破坏启动。

RK3588通常使用EEPROM、OTP、RPMB或nvmem framework,不使用PC /dev/nvram

4. HPET与MMTimer

  • hpet.c:HPET timer miscdevice和可选mmap;
  • uv_mmtimer.c:SGI UV memory-mapped RTC。

Mmap硬件timer寄存器会扩大侧信道和MMIO风险,配置明确警告page可能包含其它寄存器。

RK3588使用ARM arch timer,不使用HPET。

5. Hangcheck

hangcheck-timer.c比较monotonic时间与预期timer间隔,判断系统是否长时间未调度,并可reboot。

它不是硬件watchdog:若CPU完全锁死到timer无法执行,可能无法采取动作。RK3588产品应使用硬件watchdog。

6. TTY Printk

ttyprintk.c提供/dev/ttyprintk,把用户写入转为printk。适合把早期/容器console消息并入kernel log。

不可信用户可制造日志洪泛和伪造内核风格消息,默认关闭合理。

7. APM Emulation

apm-emulation.c为ARM用户态提供旧APM接口兼容。现代系统使用sysfs、电源管理daemon和reboot/suspend syscall。

8. 平台历史驱动

顶层还包括:

  • NetWinder温度、button和flash;
  • Sony VAIO PI;
  • Toshiba SMM;
  • IBM Mwave modem;
  • NatSemi GPIO;
  • Applicom fieldbus;
  • PS3 flash;
  • POWER operator panel;
  • SPARC ADI;
  • telecom clock。

这些受严格architecture Kconfig限制。

9. Legacy Ioctl风险

老驱动常包含:

  • 固定major/minor;
  • packed user struct;
  • raw I/O port;
  • 大量自定义ioctl;
  • 不完整compat ioctl;
  • 缺少现代device-managed生命周期。

移植到64位ARM不能只解除Kconfig依赖,必须审计pointer size、endianness、alignment、DMA和并发。

10. 配置原则

RK3588量产内核应关闭无硬件对应的:

  • PRINTER/PPDEV;
  • HPET;
  • NVRAM;
  • PCMCIA legacy;
  • x86 GPIO/PI;
  • NetWinder/PS3/POWER/SPARC模块。

减少攻击面和镜像体积比保留“可能有用”更可靠。

文章互动

阅读 --

留言

0 条留言

正在加载留言…