diary/Kojima

・kernel 6.1.2 with LLVM

現状(6.1.x)ではrust回りのドキュメントとかKconfigあたりの整備が始まってる程度なものの、 今後、rustのコードがカーネルに採用されるようになったとのことで、泥縄でrust回りの勉強。

どうやら rust のコードを使うには、LLVM が必須らしいので、とりあえず最近のカーネルを LLVM でビルドしてみた。

もっとも、最近のカーネルではLLVMにも十分対応しているので、ビルド時に make -j8 LLVM=1 くらいでビルドできる模様。 細かなビルドオプションは詰めきれてないけど、とりあえず5.18.82あたりを元に設定した .config を使った感じ、 フルビルドに約50分くらいかかった。

$ uname -a
Linux pl80a2 6.1.2-plamo64 #1 SMP PREEMPT_DYNAMIC Tue Jan  3 10:19:42 JST 2023 x86_64 x86_64 x86_64 GNU/Linux

/proc/config.gz には、ビルドしたコンパイラ(LLVM)の情報も記録されている模様

$ zcat /proc/config.gz | head -20
#
# Automatically generated file; DO NOT EDIT.
# Linux/x86 6.1.2 Kernel Configuration
#
CONFIG_CC_VERSION_TEXT="clang version 13.0.1"
CONFIG_GCC_VERSION=0
CONFIG_CC_IS_CLANG=y
CONFIG_CLANG_VERSION=130001
CONFIG_AS_IS_LLVM=y
CONFIG_AS_VERSION=130001
CONFIG_LD_VERSION=0
CONFIG_LD_IS_LLD=y
CONFIG_LLD_VERSION=130001
CONFIG_CC_CAN_LINK=y
CONFIG_CC_CAN_LINK_STATIC=y
CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
CONFIG_TOOLS_SUPPORT_RELR=y
CONFIG_CC_HAS_ASM_INLINE=y

6.1.2には実際のrustのコードはまだ入っていないみたいだけど、ドキュメントを見てると NVMe あたりのドライバが開発されているようなので、 6.x の LTS くらいには入ってくるかなぁ、、って印象。

rustのコードはいくつか眺めたものの、ちょっと自分で書ける気はしないので、せいぜいrustを使うためのcargoあたりを学ぶくらいかなぁ、、というところ(苦笑



トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS