Q: Tinker Board用Debian OSのカーネルヘッダーを取得する方法

A:

当社としては、API-TOOL(LNX)で動作確認済OSのカーネルヘッダーの利用をお奨めします。

しかしながら、Tinker Board用Debian OSのカーネルヘッダーは一般公開されていません。
このため、適切な環境でカーネルビルドを行い、カーネルヘッダーを作成する必要があります。

対象

環境

シングルボードコンピュータ(SBC)

Tinker Board 2S

OS

Debian 11 V3.0.11 (Kernel 5.10.160 (aarch64))

カーネルソース (GitHubより)

rockchip-linux-kernel-linux5.10-rk3399-debian11.zip

Debian OSのバージョンによって、手順やコマンドが異なる可能性があります。
このため、上記の環境でカーネルヘッダーを作成する手順例を以下に示します。

また、下記手順例は、インターネット経由で各ファイルのダウンロードします。
下記手順に沿って操作をする前に、対象のTinker Board 2SのDebian OSでインターネットに接続できる環境を整えてください。

① カーネルソースのダウンロード

ソフトウェア開発プラットフォームGitHubに、Tinker Board用Debian OSのカーネルソースが格納されています。
GitHub上から、"TinkerBoard-Linux/rockchip-linux-kernel"のカーネルソースを、ダウンロードします。


1.Webブラウザで、GitHub上の"TinkerBoard-Linux/rockchip-linux-kernel"を参照します。

[GitHub上のTinkerBoard-Linux/rockchip-linux-kernel]
 https://github.com/TinkerBoard-Linux/rockchip-linux-kernel


2."TinkerBoard-Linux/rockchip-linux-kernel"画面から、[Code]を選択するとプルダウンメニューが表示されます。
  プルダウンメニューから、"Download ZIP"を選択すると、カーネルスースをダウンロードできます。

  Debian 11 Ver.3.0.11の場合、ダウンロードファイル名は"rockchip-linux-kernel-linux5.10-rk3399-debian11.zip"です。

  GitHubの改定により、表示画面がスクリーンショットと異なることがあります。
  あらかじめ、ご了承ください。

 

②カーネルソースのコピーと展開

1.ダウンロードしたカーネルソースをカレントディレクトリへコピーするために、以下のコマンドを実行します。

  すでに、カーネルソースをビルドするディレクトリへ、カーネルソースをダウンロード済である場合は、このコマンド実行は必要ありません。
  次のステップへ進んでください。

  "xxx/"の部分は、カーネルソースをダウンロードしたディレクトリを指定します。

# cp xxx/rockchip-linux-kernel-linux5.10-rk3399-debian11.zip ./

2.カーネルソースを展開するために、以下のコマンドを実行します。

# unzip rockchip-linux-kernel-linux5.10-rk3399-debian11.zip

3.カーネルソースを展開したディレクトリへ移動するために、以下のコマンドを実行します。

# cd rockchip-linux-kernel-linux5.10-rk3399-debian11

 

③カーネルの設定ファイルを作成

カーネルの設定ファイル(.config)は、展開後のカーネルソースに含まれていません。
カーネルソースを展開したディレクトリ内に、構築するシステムに適合したカーネルの設定ファイル(.config)を新規作成ください。

なお、動作中のDebianが、Debian 11 V3.0.11 (Kernel 5.10.160 (aarch64))であれば、ダウンロードしたカーネルソースと同じバージョンです。
動作中のカーネルの設定ファイル(.config)をカレントディレクトリへコピーし、必要に応じてファイル記述を変更する方法を紹介します。

一般的に、動作中のカーネルの設定ファイルは、/proc/config.gzに格納されています。
この場合、動作中のカーネル設定ファイルを、カーネルソースを展開したカレントディレクトリへコピーするために、以下のコマンドを実行します。

# zcat /proc/config.gz > .config

(参考1)動作中のDebianのバージョン確認するには、以下のコマンドを実行します。

# cat /etc/issue

(参考2)動作中のDebianのカーネルバージョン確認するには、以下のコマンドを実行します。

# uname --all

 

④パッケージリストの更新

既知の不具合を是正するために、当社はカーネルビルドする前に、パッケージリスト更新の実施をお勧めします。

すでに、パッケージリストが適切な状態になっている場合は、このコマンド実行は必要ありません。
次のステップへ進んでください。

パッケージリストを更新するには、Debian OSの管理者(root)権限が必要です。
root権限がない場合、root権限で再ログインしてください。

 パッケージリストを更新する際は、以下のコマンドを実行します。

# apt update

 

⑤ ツールをインストール

カーネルビルドに必要なツールをインストールするために、以下のコマンドを実行します。

すでに、各ツールがインストールされている場合は、このコマンド実行は必要ありません。
次のステップへ進んでください。

各ツールのインストールには、Debian OSの管理者(root)権限が必要です。
root権限がない場合、root権限で再ログインしてください。

   # apt install git-core gitk git-gui gcc-arm-linux-gnueabihf device-tree-compiler gcc-aarch64-linux-gnu mtools parted
   # apt install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison zstd rsync

 

⑥カーネルとカーネルモジュールのビルド

カーネルとカーネルモジュールのビルドには、Debian OSの管理者(root)権限が必要です。
root権限がない場合、root権限で再ログインしてください。

1. カレントディレクトリであることを確認するには、以下のコマンドを実行します。
 カレントディレクトリが、カーネルソースを展開したディレクトリでない場合は、適切なディレクトリへ移動してください。

   # pwd

2. ダウンロードしたカーネルソースを、カーネルの設定ファイル(.config)に基づいてビルドするには、以下のコマンドを実行します。
 カーネルビルドに時間を要しますがビルドが完了するまで、プロセスを止めないでください。

   # make deb-pkg -j8

(参考1)カーネルビルド中に、ビルドに必要な項目の選択が促されます。
  全て"n"を入力することをお勧めします。

(参考2)コンパイル中に下記エラーが発生することがあります。

   dpkg-source: error: cannot represent change to logo.bmp: binary file contents changed
   dpkg-source: error: cannot represent change to logo_kernel.bmp: binary file contents changed

   このエラーを回避するには、以下のコマンドを実行し、再度ビルドしてください。

 # rm logo.bmp logo_kernel.bmp

 

⑦カーネルヘッダーの生成を確認

1. カーネルビルドが正常に完了すると、親ディレクトリに、カーネルヘッダー(linux-headers-5.10.160_5.10.160-1_arm64.deb)が生成されています。
 カレントディレクトリから親ディレクトリに移動するには、以下のコマンドを実行します。

   # cd ..

2. カーネルヘッダーが存在することを確認するには、以下のコマンドを実行します。

   # ls linux-headers-5.10.160_5.10.160-1_arm64.deb

 

⑧カーネルヘッダーをインストール

1. 生成されたカーネルヘッダーを、Debianのパッケージ管理システムに登録するには、以下のコマンドを実行します。

# sudo dpkg -i ../linux-headers-5.10.160_5.10.160-1_arm64.deb

2. 生成されたカーネルヘッダーをインストールするには、以下のコマンドを実行します。

# sudo apt-get install linux-headers-$(uname -r)

 

⑨「depファイル」のカーネルヘッダーのバージョンを再確認する方法

1. depファイルを展開します。

2. 展開されたファイルのlib/moduleディレクトリ内にカーネルバージョンのフォルダがあります。