LoginSignup
1
1

More than 5 years have passed since last update.

NanoPi NEOのカーネルをソースからビルドする

Last updated at Posted at 2018-02-03

カーネルをソースからビルドする理由

カーネルのソースコードを修正したいということはあまりないかもしれませんが、カーネルコンフィグをカスタマイズしたいということはよくあります。

組み込みLinuxで、ある特定用途に特化する場合は必要となるカーネルドライバや機能などが絞られます。カーネルはRAM上に常駐することになるので、不要な機能は削除してカーネルサイズを減らすとメモリの節約になります。
例えば、NanoPi NEOの場合は画面表示用のフレームバッファデバイスはビルトインになっていますが、ボード上に画面出力するデバイスは無く、LCDなどを追加でつけるのでなければ、これは削除することができます。

また、使用するUSBのデバイスが決まっている場合には、それ用のカーネルドライバをモジュールでなくビルトインにし、必要なもの全てをビルトインにすることができればカーネルモジュールが一切不要になるので、構成がシンプルになります。ビルドやインストールが楽になります。

ソースコードなど必要なもののありか

ツールチェインの準備

wget http://www.mediafire.com/file/qejfdcehoci225k/arm-cortexa9-linux-gnueabihf-4.9.3-20160512.tar.xz
sudo tar xf arm-cortexa9-linux-gnueabihf-4.9.3-20160512.tar.xz -C /usr/local

カーネルのソースコードの入手

wget http://www.mediafire.com/file/57urrfmb7irxlbb/linux_4.11.2_20170707.tar.gz
tar xf linux_4.11.2_20170707.tar.gz 
cd linux/

カーネルのビルド

export ARCH=arm
export CROSS_COMPILE=/usr/local/4.9.3/bin/arm-cortexa9-linux-gnueabihf-

make sunxi_defconfig
make menuconfig
make zImage dtbs

make menuconfig のときに必要になるカーネルモジュールは全てビルトインにしてしまうとカーネルモジュールのビルドとインストールが不要になります。

カーネルのインストール

次の2つのファイルを起動SDカードのbootパーティションのものと差し替えます。

arch/arm/boot/zImage
arch/arm/boot/dts/sun8i-h3-nanopi-neo.dtb

カーネルモジュールも更新する場合は、rootfsのパーティションの/lib/modules を更新します。このページが参考になります。
Linuxカーネルモジュールのインストールに使うスクリプト

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1