硬件适配流程大致分为 内核 、核外驱动 、固件三类,其中固件有驱动程序使用的固件,这里我们统一由firmware-free项目管控,还有一类固件指的是BIOS固件,如某些Bug可能与BIOS固件上传了错误的状态给内核有关,关于此类问题需由固件厂商修复。
内核项目地址: https://github.com/deepin-community/kernel
若需修改内核代码进行支持相关硬件,请在此提交PR。相关的开发规范请参阅上游内核社区相关文档。
deepin 当前使用两个版本的内核:
对于内核不支持的硬件设备我们通常采用核外驱动的形式提供给用户使用,核外驱动分为很多, 常用的有dkms形式提供的网卡驱动程序。对于显卡、声卡等设备可能涉及到pulseaudio mesa Xorg等项目的更新,需要更新相关项目请在github deepin-community检索相关repos,若缺少相关项目请通过邮件列表、issues等方式报告。
firmware项目地址:https://github.com/deepin-community/linux-firmware
该项目提供内核驱动需要使用的固件,无论是新增还是更新固件请在此项目提交PR。
一些硬件设备,特别是整机设备,需要额外集成一些包才能使得一些功能得以正常工作,当需要引入一个新项目时,请参考贡献者手册的“添加一个新的代码仓库”章节。
请使用Fork + Pull Request 的流程进行代码提交,代码提交应遵守以下几个原则:
兼容性: 不得随意删除ABI接口,新增的代码需要保证向下兼容
性能:新增代码需要确保不会引起大幅度性能下降风险
安全性: 需确保不引入安全漏洞
可移植性:需要考虑x86、ARM等不同架构下的兼容性
许可规则:请遵守原有项目的许可标准
代码风格:请遵守项目原本的代码风格