再起動せずにKMSドライバをアンインストール/ NVIDIA Linuxドライバを交換する

再起動せずにKMSドライバをアンインストール/ NVIDIA Linuxドライバを交換する

以前は、テキストコンソールに切り替えてX.orgを終了したrmmod後、対応するNVIDIAモジュールをアンインストールし( )、新しいドライバをインストールした直後にNVIDIA独自のドライバを簡単に交換できました。

ただし、NVIDIA では KMS をサポートするドライバを実行することをお勧めします。options nvidia-drm modeset=1これにより、カーネルモジュールをアンロードできなくなります(「デバイスを使用中」)。

Linuxカーネルを使用すると、次のコマンドを実行してテキストコンソールからグラフィックドライバをバインド解除できます。

echo 0 > /sys/class/vtconsole/vtcon1/bind

ただし、このコマンドはすべてのテキストコンソールを完全に無効にします。彼らは停止し、システムは実行され続けます。

このコマンドの後に別のコマンドを実行してNVIDIAドライバの前にテキストコンソールを駆動する組み込みドライバをカーネルで再度有効にする必要があるように見えますが、インターネットにはこれに関する情報はありません。

質問は〜です。いいえNVIDIAドライバのみ。オープンソースのKMSドライバ(Intel、AMD、またはNouveau)をアンインストールする方法を知っておくとよいでしょう。

起動時に次のように表示されます。

Console: colour dummy device 80x25
printk: console [tty0] enabled
fbcon: Deferring console take-over
fbcon: Taking over console
Console: switching to colour frame buffer device 128x48

これは私のものです.config

CONFIG_SYSFB=y
CONFIG_SYSFB_SIMPLEFB=y
CONFIG_DRM_FBDEV_EMULATION=y
CONFIG_DRM_FBDEV_OVERALLOC=200
CONFIG_FB_CMDLINE=y
CONFIG_FB_NOTIFY=y
CONFIG_FB=y
CONFIG_FB_DEFERRED_IO=y
CONFIG_FB_VESA=y
CONFIG_FB_EFI=y
CONFIG_FB_SIMPLE=y

私のコンテンツは次のとおりです/sys

$ find /sys -iname '*fb*'
/sys/class/graphics/fb0
/sys/class/graphics/fbcon
/sys/devices/platform/simple-framebuffer.0/graphics/fb0
/sys/devices/virtual/graphics/fbcon
/sys/module/drm_kms_helper/parameters/drm_fbdev_overalloc
/sys/module/drm_kms_helper/parameters/fbdev_emulation
/sys/module/fb
/sys/module/fb/parameters/lockless_register_fb

答え1

~によるとカーネルfbconドキュメント、以下を行う必要があります。

  1. vbetoolをダウンロードまたはインストールしてください。ほとんどのディストリビューションにはこのユーティリティが含まれており、一時停止/再開ツールの一部であることがよくあります。

  2. カーネル構成でCONFIG_FRAMEBUFFER_CONSOLEが「y」または「m」に設定されていることを確認してください。お気に入りのフレームバッファドライバの1つ以上を有効にしてください。

  3. テキストモードで起動し、rootとして実行します。

     vbetool vbestate save > <vga state file>
    

    上記のコマンドは、グラフィックハードウェアのレジスタ内容を<vgaステータスファイル>に保存します。ステータスファイルは再利用できるため、この手順は一度だけ実行できます。

  4. fbconがモジュールにコンパイルされている場合は、次のようにしてfbconをロードします。

    modprobe fbcon
    
  5. ここでfbconを切り離します。

    vbetool vbestate restore < <vga state file> && \
    echo 0 > /sys/class/vtconsole/vtcon1/bind
    
  6. そうすると、VGAモードに戻ります。 fbconをモジュールにコンパイルした場合は削除できますrmmod fbcon

  7. fbconを再接続します。

    echo 1 > /sys/class/vtconsole/vtcon1/bind
    
  8. fbconがバインド解除されると、システムに登録されているすべてのドライバもバインド解除されます。これは、fbconと個々のフレームバッファドライバを自由にアンロードまたは再ロードできることを意味します。ドライバまたはfbconを再ロードすると、コンソール、fbcon、およびドライバが自動的に一緒にバインドされます。 fbconを削除せずにすべてのドライバを削除すると、コンソールはfbconをバインドできなくなります。

このマニュアルでは、サンプルスクリプトも提供しています(前提条件があることを確認する必要があります)。

#!/bin/bash
# Unbind fbcon

# Change this to where your actual vgastate file is located
# Or Use VGASTATE=$1 to indicate the state file at runtime
VGASTATE=/tmp/vgastate

# path to vbetool
VBETOOL=/usr/local/bin


for (( i = 0; i < 16; i++))
do
  if test -x /sys/class/vtconsole/vtcon$i; then
      if [ `cat /sys/class/vtconsole/vtcon$i/name | grep -c "frame buffer"` \
           = 1 ]; then
        if test -x $VBETOOL/vbetool; then
           echo Unbinding vtcon$i
           $VBETOOL/vbetool vbestate restore < $VGASTATE
           echo 0 > /sys/class/vtconsole/vtcon$i/bind
        fi
      fi
  fi
done

この手順を実行してもまだ応答がない場合、ipaqmasterは多くのブロック状況を処理します。このスクリプトgpuLockHandler機能から。

また、ヌーボーKMSドキュメント、CONFIG_VT_HW_CONSOLE_BINDINGも前提条件です(まだ見つからない項目がある場合)。

関連情報