カーネルアップグレード後にUSBをマウントするには再起動する必要がありますか?

カーネルアップグレード後にUSBをマウントするには再起動する必要がありますか?

pacman -Syu時々実行中に(Arch Linuxでパッケージを更新する)、アップグレードリストに記載されているLinuxカーネルが表示されることがあります。これが発生するたびに、パッケージをインストールして再起動するまでUSBドライブをマウントできなくなります。これが一般的で予想されることなのか(そうであればその理由を知りたいです)、それとも調査してはいけないことなのか気になります。

答え1

おそらくそのディストリビューションではこれは正常です。新しいカーネルをインストールする方法は、パッケージマネージャによって異なります。

私の考えでは、パッケージマネージャが(カーネルをアップグレードしたとき)、古いカーネルモジュールディレクトリをすぐに削除するようです。こうしてインストールしようとすると脂肪組織-USBフラッシュドライブをフォーマットすると、カーネルが必要なvfatカーネルモジュールをロードできなくなります。

私の仮説を検証するために、次にカーネルをアップグレードするときにカーネルモジュールディレクトリがあることを確認できます。

  • アップグレードする前に、現在の(以前の)カーネルバージョンというディレクトリがあることを確認する必要があります。

    ~> ls -d /lib/modules/`uname -r`
    /lib/modules/3.0.0-1.2-desktop
    
  • アップグレード後に再起動する前に、ディレクトリが存在しないことを確認する必要があります(したがって新しいハードウェアを管理できません)。

    ~> ls -d /lib/modules/`uname -r`
    ls: cannot access /lib/modules/3.0.0-1.2-desktop: No such file or directory
    
  • 再起動したら、現在の(新しい)カーネルバージョンという新しいカーネルモジュールディレクトリがあることを確認する必要があります。

    ~> ls -d /lib/modules/`uname -r`
    /lib/modules/3.1.0-1.4
    

この問題を回避するために、他のディストリビューション(openSuSEなど)は、再起動するまでディレクトリの削除を遅らせます。

答え2

はい、いいえ。理想的には再起動は必要ありませんが、実際には再起動が難しい場合があります。

このセッション中にすでに使用していたデバイスタイプを引き続き使用できる必要があります。モジュールのロードが必要な新しいデバイスタイプ(またはファイルシステムの種類、ネットワークプロトコルなど)を使用しようとすると、問題が発生する可能性があります。新しいカーネルのモジュールは、実行中のカーネルと互換性がない可能性があります。

バイナリインターフェイスを変更しないマイナーなセキュリティアップグレードの場合、新しいモジュールは引き続き実行されます。ディストリビューションは、新しいカーネルをコンパイルし、バイナリ互換性が影響を受けないことを示すように準備する必要があります(同じuname -r出力)。

カーネルパッケージのバージョンを変更するメジャーアップグレードの場合は、次の再起動まで古いパッケージと新しいパッケージを保持できます。これにより、モジュールは以前のパッケージからロードされ続けます。

アップグレードによって既存のカーネルとモジュールが上書きされますが、バイナリ互換性が変更されると問題が発生します。理想的には、ディストリビューションはこれを行いません。運が良ければ、モジュールを強制的にロードできますmodprobe --force-vermagic --force-modversion。バイナリの非互換性が存在する場合、これは競合、データの破損、および子犬の死を引き起こす可能性があることに注意してください。使用による責任はユーザーにあります。

関連情報