You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何禁用非模块编译的I2C Designware支持?解决Arch Linux关机内核panic

解决Alienware Aurora R7上Arch Linux关机时I2C Designware相关内核崩溃问题

针对你遇到的这个关机触发Kernel Panic的问题——既然i2c-designware-core在4.10+版本内核里是直接编译进内核而非模块,没法用黑名单禁用,那可以试试下面两种可行的方案:

1. 用内核启动参数快速禁用控制器

这是不用重新编译内核的简便方法,通过内核启动参数直接关闭对应硬件的支持:

  • 如果你用GRUB作为启动管理器,先编辑配置文件:sudo nano /etc/default/grub
  • 找到GRUB_CMDLINE_LINUX这一行,在引号内添加i2c_designware_platform.enable=0或者i2c_designware_pci.enable=0——具体选哪个,取决于你的硬件用的是平台版还是PCI版的控制器。举个示例:
    GRUB_CMDLINE_LINUX="quiet splash i2c_designware_platform.enable=0"
    
  • 保存文件后,更新GRUB的启动配置:
    sudo grub-mkconfig -o /boot/grub/grub.cfg
    
  • 重启系统后,这个I2C控制器就会被禁用,应该能解决关机崩溃的问题。要是不确定选哪个参数,可以查看dmesg日志,搜索i2c_designware,日志里会明确标注是platform还是pci设备。

2. 编译自定义内核彻底移除该支持

如果你想彻底把这个组件从内核中剔除,那就需要编译自定义内核:

  • 先安装编译所需的依赖和内核相关包:
    sudo pacman -S linux linux-headers base-devel
    
  • 也可以克隆主线内核源码来编译:
    git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
    cd linux
    
  • 复制当前正在使用的内核配置,这样能保留现有配置,只修改需要调整的部分:
    cp /boot/config-$(uname -r) .config
    
  • 打开图形化配置菜单:
    make menuconfig
    
  • 在菜单路径Device Drivers > I2C support > I2C Hardware Bus support下,找到Synopsys DesignWare I2C的相关选项(分为Platform和PCI两个版本),将原本的*(编译进内核)改为N(完全移除)。
  • 用多线程加速编译(nproc会自动识别你的CPU核心数):
    make -j$(nproc)
    
  • 安装编译好的模块和内核:
    sudo make modules_install
    sudo make install
    
  • 最后更新启动管理器配置,确保新编译的内核能被加载。

内容的提问来源于stack exchange,提问作者muru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:08:52