Arch Linuxを実行するAlienware Aurora R7があります。終了すると、カーネルがパニック状態になり、次のような内容がパニックメッセージに表示されます(タイムスタンプを省略)。
BUG: Unable to handle kernel NULL pointer dereference at (null)
IP: i2c_dw_isr+0x3ef/0x6d0
PGD 0 P4D 0
Oops: 0000 [#1] PREEMPT SMP PTI
さまざまなソースから(1、2)、これはモジュールに関連しているようですi2c-designware-core
。回避策は、対応するモジュールをブラックリストに追加することです。しかし、最近のカーネル(4.10以上のように見える)では、モジュールとしてビルドされていないようです。
# uname -srv
Linux 4.15.2-2-ARCH #1 SMP PREEMPT Thu Feb 8 18:54:52 UTC 2018
# zgrep DESIGNWARE /proc/config.gz
CONFIG_I2C_DESIGNWARE_CORE=y
CONFIG_I2C_DESIGNWARE_PLATFORM=y
CONFIG_I2C_DESIGNWARE_SLAVE=y
CONFIG_I2C_DESIGNWARE_PCI=m
CONFIG_I2C_DESIGNWARE_BAYTRAIL=y
CONFIG_SPI_DESIGNWARE=m
CONFIG_SND_DESIGNWARE_I2S=m
CONFIG_SND_DESIGNWARE_PCM=y
だから私はパニック状態でカーネルを再起動させました:
# cat /proc/cmdline
root=UUID=e5018f7e-5838-4a47-b146-fc1614673356 rw initrd=/intel-ucode.img initrd=/initramfs-linux.img panic=10 sysrq_always_enabled=1 printk.devkmsg=on
(奇妙なルートは/proc/cmdline
UEFIから直接起動し、で作成されたエントリを使用するためですefibootmgr
。ルートのルートは/boot
ESPがインストールされている場所です。)
これはタッチパッドのもののようですが、タッチパッドがなくて買わないと思います。この機能を無効にするにはどうすればよいですか?必須ですか?カスタムカーネルの構築?
4.10(現在4.14)よりも最新バージョンなので、古いlinux-lts
カーネルをインストールする簡単な方法がないようで、ブラックリスト機能が動作することもあります。
カーネルパラメータとして使用すると、nolapic
シャットダウンパニックの問題は解決されますが、起動後数分間システムがハングして使用できなくなります。
ベストアンサー1
カーネルのソースコードを読んだ後、ブラックリストに追加する必要がある関数を見つけました!
ありがとうスティーブンジッタのヒントinitcall_blacklist
。
initcall_blacklist=dw_i2c_init_driver
カーネルのコマンドラインに追加されました。これはカーネル4.15.0で動作します。
この答えを見つけることができる他のすべての人に。以下を編集してこれを行うことができます/etc/default/grub
。
- 端末で実行:
sudo -H gedit /etc/default/grub
。 - ブラックリスト文字列を
GRUB_CMDLINE_LINUX_DEFAULT
:に追加しますGRUB_CMDLINE_LINUX_DEFAULT="… initcall_blacklist=dw_i2c_init_driver"
。 - ファイルを保存してエディタを閉じます。
- 端末で実行:
sudo update-grub
。 - 再起動してテストしてみてください!