LoginSignup
2
2

More than 5 years have passed since last update.

NanoPi NEOのルートファイルシステムをBuildrootで作る(2)

Last updated at Posted at 2018-02-11

前回NanoPi NEOのルートファイルシステムをBuildrootで作る(1)の続き。

カーネルをベンダー提供の4.11.2に入れ替える

前回はBuildrootにすでに用意されているdefconfigを使ってNanoPi NEO用のブートイメージをビルドしました。これにはメインラインのソースコードが使用されていました。
NanoPi NEOの機能のうちのいくつかはまだメインラインにマージされていません。EthernetのMACアドレスを取得する機能もまだでした。これがないとEthernetが使用できないわけではないのですが、MACアドレスが起動するたびに異なるランダム値になります。
今回はMACアドレスをユニークな個体識別のIDとして使用したいので、ベンダーの提供するカーネルに入れ替えたいと思います。

ベンダー提供のソースコードはここにあるものを使いました。
https://www.mediafire.com/folder/n5o8ihvqhnf6s/Nanopi-NEO

苦労話

カーネルを差し替えるくらいすぐにできるだろうと思ったのですが、実際にやってみるとカーネルが正しく起動できません。
通常はmmc0として認識されるマイクロSDカードのデバイスがなぜかmmc1となり、そのためにmmcblk0p2 にあるrootfsを見つけることができません。
なぜそうなるかわからないけど、それに合わせてブートパラメータの root=/dev/mmcblk0p2 の部分を mmcblk1p2 に変更して試してみました。
するとrootfsを見つけて先まで進むようになるのですが、途中でハングアップしてプロンプトが出るとこまで到達しません。
カーネルが正しくビルドできていないのか確認するために、それをベンダー提供のブートイメージのものと入れ替えてみるとそっちでは正しく起動しました。なのでカーネルは正しくビルドできていそう。
ubootのスクリプトファイルやinitrdなど、いろいろ差し替えて切り分けをして1日つぶしてしまいました。

結局わかったことは、「ベンダー提供のLinuxカーネルを使うときには、ubootもベンダー提供のものにしなければいけない。」
こんな依存性があるとは。

変更点

kernelはcustom tarballを使用する。

BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="http://www.mediafire.com/file/57urrfmb7irxlbb/linux_4.11.2_20170707.tar.gz"

それに合わせて使用するLinuxヘッダーファイルも4.11.x にする

BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y

ubootもcustom tarball を使用する

BR2_TARGET_UBOOT_CUSTOM_TARBALL=y
BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="http://www.mediafire.com/file/wessj3k3974nep1/u-boot_2017.05_20170707.tar.gz"

rootfsのサイズが32MBで足りなかったので、128MBに変更する

BR2_TARGET_ROOTFS_EXT2_SIZE="128M"

それに合わせて、board/friendlyarm/nanopi-neo/genimage.cfg に書かれているパーテションサイズも32MB -> 128MB に変更する

Ubootのスクリプトファイル board/friendlyarm/nanopi-neo/boot.cmd はベンダー提供のものをベースにramdiskを使用しないように修正する

ついでに、board/friendlyarm/nanopi-neo/post-image.sh でsdcard.img を作成した後にそれをzipで圧縮する

これらの修正したファイルはgistに貼っておきました。
https://gist.github.com/tetsu-koba/0123aeda3298fc07fb79128dbb889f44

2
2
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
2
2