私は5.10メインラインカーネルを喜んでインストールしてきました(https://kernel.ubuntu.com/~kernel-ppa/mainline/) を Ubuntu 20.04 にインストールしました。
5.10.33 にアップデートしようとしたところ、パッケージが libc >=2.33 (focal は 2.31) に依存していることがわかりました-headers
(イメージ自体には依存していませんが、ヘッダーなしで生きたいと思う人はいないでしょう)。
私の知る限り、libc6 のアップグレードはほぼ不可能です。これが... それですか? LTS を放棄しない限り、5.10.32 で行き詰まるのですか? これらの人々は、バグを報告できる公開サイトさえ持っているのでしょうか?
アップデート:これが主なランチパッドのバグそこから生まれた良いこと:タキシンベーダー思いついたDockerコンテナ(Github のソース:焦点メインラインビルダー) を利用してカーネル メインライン イメージを構築し、5.10 - 5.12 パッケージを PPA にアップロードしました。
- tuxinvader の lts-mainline-longterm PPA
- tuxinvader の lts-mainline-前の PPA
- tuxinvader の lts-mainline PPA
ヒント: 選択したシリーズ/バージョン範囲で利用可能なすべてのLinuxパッケージを表示するには、PPAやDebianバックポート、xanmodなど(私が試したように)を試した後、次のようにします。
apt update
printf '%s\0' linux-{image-unsigned,headers,modules}-5.10.{32..40} |
xargs -0 -n 1 apt-cache pkgnames | LC_ALL=C sort | less
うまくいけば、この問題は解消されるでしょう。しかし、現実は、「カーネルメインラインPPA」(あるいはその背後にいる誰か)の気まぐれ次第です。私はまだ理解していません。これらの開発者に連絡を取る方法) は、バイナリに対してはあまり快適な体験ではありませんでした。
答え1
LTSのままでもいいですが、メインラインカーネルを自分でコンパイルする新たな依存関係の問題を克服するため。
使用されているメインライン コンパイラのバージョンが変更されたようです。
doug@s19:~/temp-k-git/linux$ scripts/diffconfig .config-5.12.0-051200rc6-lowlatency .config-5.12.0-051200-lowlatency
CC_VERSION_TEXT "gcc (Ubuntu 10.2.0-13ubuntu1) 10.2.0" -> "gcc (Ubuntu 10.3.0-1ubuntu1) 10.3.0"
GCC_VERSION 100200 -> 100300
LD_VERSION 23501 -> 23601
+DEBUG_INFO_BTF_MODULES y
+PAHOLE_HAS_SPLIT_BTF y
しかし、Ubuntu カーネル構成を取得して自分でコンパイルすると、メインの 20.04 テスト サーバーで問題なくインストールされます。つまり、依存関係は、カーネル ソース コードではなく、使用されるコンパイラ バージョンの関数です。
あまり関係ありませんが、私がコンパイルしたものの設定の違いは次のとおりです。
doug@s19:~/temp-k-git/linux$ scripts/diffconfig .config-5.12.0-051200-lowlatency .config
-DEBUG_INFO_BTF y
-DEBUG_INFO_BTF_MODULES y
-DEBUG_INFO_COMPRESSED n
-DEBUG_INFO_DWARF4 y
-DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT n
-DEBUG_INFO_REDUCED n
-DEBUG_INFO_SPLIT n
-GDB_SCRIPTS y
-PAHOLE_HAS_SPLIT_BTF y
CC_VERSION_TEXT "gcc (Ubuntu 10.3.0-1ubuntu1) 10.3.0" -> "gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0"
DEBUG_INFO y -> n
GCC_VERSION 100300 -> 90300
LD_VERSION 23601 -> 23400
SYSTEM_TRUSTED_KEYS "debian/canonical-certs.pem" -> ""
答え2
Ubuntu メインライン カーネルからカーネル 5.11.18 で生成された DKMS モジュールの作成方法は次のとおりです。Linux Mint 20.1 Cinnamon を実行し、DKMS で nvidia-driver-460 バージョン 460.73.01-0ubuntu0.20.04.1 を使用します。使用する gcc はバージョン 10.3 です。バージョン 5.11.16-generic ではすべて正常に動作しましたが、5.11.18 を試したときに停止しました。そこで、DKMS がカーネル モジュールをコンパイルしない問題を見つけようとしました。実行したことは次のとおりです。
- カーネル5.11.18-genericをインストールしました
- カーネル ヘッダー プログラム fixdep が glibc 2.33 に関連していることがわかった
- カーネル ヘッダー プログラム modpost が glibc 2.33 に関連していることがわかった
- /lib/modules/5.11.18-generic/build/scripts/basic/fixdep を 5.11.16 のものに置き換えました
- /lib/modules/5.11.18-generic/build/scripts/mod/modpost を 5.11.16 のものに置き換えました
- カーネル 5.11.18 に対して dkms を実行しました (/usr/lib/dkms/dkms_autoinstaller start 5.11.18-051118-generic)
- nvidia カーネル モジュールを正常に生成しました。再起動すると正常に動作します。カーネル 5.12.1 でも同じことを試しましたが、動作しました。
お役に立てれば。
答え3
libc6
上記の PPA を使用して、2.31 を搭載したUbuntu 20.04 に 5.12 をインストールできました。
sudo add-apt-repository ppa:tuxinvader/lts-mainline
sudo apt install linux-image-unsigned-5.12.4-051204-generic linux-modules-5.12.4-051204-generic linux-headers-5.12.4-051204-generic
答え4
コンパイルせずに5.10を使い続けるもう一つの簡単な方法は、カスタムカーネルを使うことだ。例えばxanmod
。問題は、古いLTSシリーズの「パフォーマンス」改善にあまり力を入れていないように見えるので、考えるかなり標準的なカーネルを取得している可能性があります。たとえば、これはザナモッド5.10.35。