Intel Edison 用 yocto Linux をコンパイルする

Intelが出してきた Atom 搭載の Edisonモジュール。組み込み用途のLinuxはARMコアのしか触ったことが無かったので、少し気になることもあり購入してみました。表面に " What will you make? " という挑発ともとれる刻印が施されていますし。

このモジュールはRspberry Pi等と異なりSDカードスロットがなく、内蔵Flashから起動させるのが通常の方法の用です。拡張すればSDカードからkernel呼び出しも可能かもしれませんが。内蔵のFlashには購入時点で既に yocto Linux がインプリされています。なので、電源を入れればLinuxが起動します。この状態でも色々と使える訳ですが、kernelを自分でコンパイル出来る所まで出来るともう少し踏み込んだ事ができます。なので、先ずは yocto Linux をコンパイルしてみることにチャレンジしました。

やることは、公式フォーラムにアップされている "Intel Edison Board Support Package User Guide" に書かれているのですが、何というか、知っている人はできるが知らない人がみると先ず何をするのかが分からない状態に陥りそうな内容です。現に知らない人である私はスタートで躓きました。なので、私のやった事を備忘録も兼ねて書いておきます。

まず最初にする事は、Linux環境を構築する事です。Linux専用機を用意しても良いし、デュアルブートにしてもいいですが、私の場合前に書いたようにVMware上にUbuntu Linux をインストールしました。

コンパイル時に必要なコマンド(パッケージ)をインストールします。

$ sudo apt-get install build-essential git diffstat gawk chrpath texinfo libtool gcc-multilib


後はコンパイル用に用意してくれているファイルをダウンロードして実行するだけ…なんですが、初めて git をインストールした人は以下の設定で git に メールアドレスと名前を登録しておく必要があります。これをやらないと処理途中で止まってしまいます。

$ git config --global user.email "jujurou@hogehoge.co.jp"
$ git config --global user.name "jujurou"


自らダウンロードするファイルは Software Downloads のページにある "Edison Linux source files" です。現時点では edison-src-rel1-maint-rel1-ww42-14.tgz というファイル名になっていました。WindowsでダウンロードしてLinuxに渡すのがめんどくさかったので、リンク先を調べてLinux側で直接ダウンロードしました。

$ wget http://downloadmirror.intel.com/24389/eng/edison-src-rel1-maint-rel1-ww42-14.tgz
$ tar xvf ./edison-src-rel1-maint-rel1-ww42-14.tgz


ダウンロードした圧縮ファイルを展開すると edison-src というディレクトリが現れます。この中の device-software に setup.sh というファイルがあるので、これを実行します。

$ cd ./edison-src/
$ ./device-software/setup.sh


すると、edison-src ディレクトリ 直下 に build, poky ディレクトリができます。本当は setup.sh の実行時にダウンロード先を指定できるので、指定しておくと、今後複数の環境(kernelの修正を色々とするときなどです)を用意する時にダウンロードの時間を短縮できるのですが、指定しなかったらデフォルトの場所にダウンロードされるようです。次にコンパイル用の環境変数を登録します。

$ source poky/oe-init-build-env


このコマンドを実行すると勝手に build ディレクトリに移動してくれちゃいます。そこで bitbake コマンドを使用してイメージファイルを作成することになります。bitobake……少々いや~な気がしたのですが、的中しました。ようは bitbake を実行して必要なソースコードをダウンロードして全ての物をコンパイルするのです。kernel、コマンド…。つまり、ここからが結構時間がかかります。LANの通信回線が細い場合は尚更です。

いよいよコンパイルの開始です。回線の速度にもよりますが、4,5時間はかかるので余裕のあるときに実行するのが良いです。

$ bitbake edison-image
Parsing recipes: 100% |#########################################| Time: 00:01:14
Parsing of 905 .bb files complete (0 cached, 905 parsed). 1272 targets, 92 skipped, 0 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies

Build Configuration:
BB_VERSION = "1.22.0"
BUILD_SYS = "x86_64-linux"
NATIVELSBSTRING = "Ubuntu-14.04"
TARGET_SYS = "i586-poky-linux"
MACHINE = "edison"
DISTRO = "poky-edison"
DISTRO_VERSION = "1.6"
TUNE_FEATURES = "m32 core2"
TARGET_FPU = ""
meta
meta-yocto
meta-yocto-bsp
meta-edison
meta-edison-distro
meta-edison-middleware
meta-edison-arduino
meta-edison-devtools = ":"

NOTE: Preparing runqueue
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
WARNING: Failed to fetch URL ftp://ftp.debian.org/debian/pool/main/b/base-passwd/base-passwd_3.5.29.tar.gz, attempting MIRRORS if available
WARNING: Failed to fetch URL http://downloads.sourceforge.net/project/libpng/libpng16/1.6.8/libpng-1.6.8.tar.xz, attempting MIRRORS if available
WARNING: Failed to fetch URL ftp://ftp.debian.org/debian/pool/main/n/netbase/netbase_5.2.tar.gz, attempting MIRRORS if available
WARNING: Failed to fetch URL ftp://ftp.uni-erlangen.de/pub/Linux/LOCAL/dosfstools/dosfstools-2.11.src.tar.gz, attempting MIRRORS if available
WARNING: Failed to fetch URL ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_4.87.tar.bz2, attempting MIRRORS if available
WARNING: Failed to fetch URL ftp://ftp.debian.org/debian/pool/main/n/net-tools/net-tools_1.60-25.diff.gz;apply=no;name=patch, attempting MIRRORS if available
WARNING: Failed to fetch URL ftp://ftp.debian.org/debian/pool/main/d/dpkg/dpkg_1.17.4.tar.xz, attempting MIRRORS if available
WARNING: Failed to fetch URL http://ftp.de.debian.org/debian/pool/main/m/mklibs/mklibs_0.1.38.tar.gz, attempting MIRRORS if available
WARNING: Failed to fetch URL ftp://ftp.berlios.de/pub/cdrecord/alpha/cdrtools-3.01a20.tar.bz2, attempting MIRRORS if available
NOTE: validating kernel config, see log.do_kernel_configcheck for details
WARNING: QA Issue: ELF binary '/home/jujurou/edison/yocto/edison-src/build/tmp/work/core2-32-poky-linux/systemd/1_213+gitAUTOINC+c9679c652b-r0/packages-split/udev/bin/udevadm' has relocations in .text
WARNING: QA Issue: ELF binary '/home/jujurou/edison/yocto/edison-src/build/tmp/work/core2-32-poky-linux/systemd/1_213+gitAUTOINC+c9679c652b-r0/packages-split/systemd/lib/systemd/systemd-shutdown' has relocations in .text
WARNING: QA Issue: ELF binary '/home/jujurou/edison/yocto/edison-src/build/tmp/work/core2-32-poky-linux/systemd/1_213+gitAUTOINC+c9679c652b-r0/packages-split/systemd/lib/systemd/systemd-logind' has relocations in .text
WARNING: QA Issue: ELF binary '/home/jujurou/edison/yocto/edison-src/build/tmp/work/core2-32-poky-linux/systemd/1_213+gitAUTOINC+c9679c652b-r0/packages-split/systemd/lib/systemd/systemd-networkd' has relocations in .text
WARNING: QA Issue: ELF binary '/home/jujurou/edison/yocto/edison-src/build/tmp/work/core2-32-poky-linux/systemd/1_213+gitAUTOINC+c9679c652b-r0/packages-split/systemd/lib/systemd/systemd-machined' has relocations in .text
WARNING: QA Issue: ELF binary '/home/jujurou/edison/yocto/edison-src/build/tmp/work/core2-32-poky-linux/systemd/1_213+gitAUTOINC+c9679c652b-r0/packages-split/systemd/lib/systemd/systemd-random-seed' has relocations in .text
WARNING: QA Issue: ELF binary '/home/jujurou/edison/yocto/edison-src/build/tmp/work/core2-32-poky-linux/systemd/1_213+gitAUTOINC+c9679c652b-r0/packages-split/systemd/lib/systemd/systemd-localed' has relocations in .text
WARNING: QA Issue: ELF binary '/home/jujurou/edison/yocto/edison-src/build/tmp/work/core2-32-poky-linux/systemd/1_213+gitAUTOINC+c9679c652b-r0/packages-split/systemd/lib/systemd/systemd' has relocations in .text
WARNING: QA Issue: ELF binary '/home/jujurou/edison/yocto/edison-src/build/tmp/work/core2-32-poky-linux/systemd/1_213+gitAUTOINC+c9679c652b-r0/packages-split/systemd/lib/systemd/systemd-journald' has relocations in .text
WARNING: QA Issue: ELF binary '/home/jujurou/edison/yocto/edison-src/build/tmp/work/core2-32-poky-linux/systemd/1_213+gitAUTOINC+c9679c652b-r0/packages-split/systemd/lib/systemd/system-generators/systemd-fstab-generator' has relocations in .text
WARNING: QA Issue: ELF binary '/home/jujurou/edison/yocto/edison-src/build/tmp/work/core2-32-poky-linux/systemd/1_213+gitAUTOINC+c9679c652b-r0/packages-split/systemd/bin/systemd-tmpfiles' has relocations in .text
WARNING: QA Issue: ELF binary '/home/jujurou/edison/yocto/edison-src/build/tmp/work/core2-32-poky-linux/systemd/1_213+gitAUTOINC+c9679c652b-r0/packages-split/systemd/bin/systemctl' has relocations in .text
WARNING: QA Issue: ELF binary '/home/jujurou/edison/yocto/edison-src/build/tmp/work/core2-32-poky-linux/systemd/1_213+gitAUTOINC+c9679c652b-r0/packages-split/systemd/bin/systemd-tty-ask-password-agent' has relocations in .text
WARNING: QA Issue: ELF binary '/home/jujurou/edison/yocto/edison-src/build/tmp/work/core2-32-poky-linux/systemd/1_213+gitAUTOINC+c9679c652b-r0/packages-split/systemd/bin/machinectl' has relocations in .text
WARNING: QA Issue: ELF binary '/home/jujurou/edison/yocto/edison-src/build/tmp/work/core2-32-poky-linux/openssh/6.5p1-r0/packages-split/openssh-scp/usr/bin/scp.openssh' has relocations in .text
WARNING: QA Issue: ELF binary '/home/jujurou/edison/yocto/edison-src/build/tmp/work/core2-32-poky-linux/openssh/6.5p1-r0/packages-split/openssh-ssh/usr/bin/ssh.openssh' has relocations in .text
WARNING: iperf: No generic license file exists for: NewBSD in any provider
NOTE: Tasks Summary: Attempted 2802 tasks of which 29 didn't need to be rerun and all succeeded.

Summary: There were 26 WARNING messages shown.


いくつかWARNINGがでましたが、問題ないレベルの内容でした。build/tmp/deploy/images/edison/ 下にコンパイルした内容が置かれています。

$ ls ./build/tmp/deploy/images/edison/
bzImage
bzImage--3.10.17+git0+6ad20f049a_c03195ed6e-r0-edison-20141116014354.bin
bzImage-edison.bin
edison-image-edison-20141116014354.hddimg
edison-image-edison-20141116014354.rootfs.ext4
edison-image-edison-20141116014354.rootfs.manifest
edison-image-edison.ext4
edison-image-edison.hddimg
edison-image-edison.manifest
modules--3.10.17+git0+6ad20f049a_c03195ed6e-r0-edison-20141116014354.tgz
modules-edison.tgz
README_-_DO_NOT_DELETE_FILES_IN_THIS_DIRECTORY.txt
u-boot.bin
u-boot-edison-2014.04-1-r0.bin
u-boot-edison-2014.04-1-r0.img
u-boot-edison.bin
u-boot-edison.img
u-boot-envs
u-boot.img


次に、これらをEdisonに書き込む準備をします。Flashライターのフォーマットに合わせる作業といったところでしょうか。

$ ./device-software/utils/flash/postBuild.sh
1+0 records in
1+0 records out
4194304 bytes (4.2 MB) copied, 0.0334677 s, 125 MB/s
1+0 records in
1+0 records out
4194304 bytes (4.2 MB) copied, 0.030057 s, 140 MB/s
1+0 records in
1+0 records out
4194304 bytes (4.2 MB) copied, 0.0233742 s, 179 MB/s
1+0 records in
1+0 records out
4194304 bytes (4.2 MB) copied, 0.0229158 s, 183 MB/s
1+0 records in
1+0 records out
4194304 bytes (4.2 MB) copied, 0.0208323 s, 201 MB/s
1+0 records in
1+0 records out
4194304 bytes (4.2 MB) copied, 0.0180647 s, 232 MB/s
1+0 records in
1+0 records out
4194304 bytes (4.2 MB) copied, 0.0210134 s, 200 MB/s
cp: cannot stat ‘/home/jujurou/edison/yocto/edison-src/build/tmp/deploy/images/edison/vmlinux’: No such file or directory
Image Name: Edison Updater script
Created: Sun Nov 16 04:26:02 2014
Image Type: PowerPC Linux Script (uncompressed)
Data Size: 14683 Bytes = 14.34 kB = 0.01 MB
Load Address: 00010000
Entry Point: 00010000
Contents:
Image 0: 14675 Bytes = 14.33 kB = 0.01 MB
**** Done ***
Files ready to flash in /home/jujurou/edison/yocto/edison-src/build/toFlash/
Run the flashall script there to start flashing.
*************
$ ls ./build/toFlash/
edison_dnx_fwr.bin edison_ifwi-dbg-03-dfu.bin filter-dfu-out.js
edison_dnx_osr.bin edison_ifwi-dbg-04.bin flashall.bat
edison_ifwi-dbg-00.bin edison_ifwi-dbg-04-dfu.bin flashall.sh
edison_ifwi-dbg-00-dfu.bin edison_ifwi-dbg-05.bin ota_update.scr
edison_ifwi-dbg-01.bin edison_ifwi-dbg-05-dfu.bin package-list.txt
edison_ifwi-dbg-01-dfu.bin edison_ifwi-dbg-06.bin pft-config-edison.xml
edison_ifwi-dbg-02.bin edison_ifwi-dbg-06-dfu.bin u-boot-edison.bin
edison_ifwi-dbg-02-dfu.bin edison-image-edison.ext4 u-boot-edison.img
edison_ifwi-dbg-03.bin edison-image-edison.hddimg u-boot-envs


こんな感じです。
後はEdisonに書き込み………なんですが、VMwareで実行している場合、直接Linux(VMware内)から書き込みが出来ませんでした。電源ONによるリセットタイミングとUSBの認識タイミングによると思われます。なので、書き込みはWindowsから行いました。

Windwosから書き込みを行う場合は、先ほど用意した書き込み用ファイルをWindows側のファイル名に全角文字等が入らない所に置いておきます。私はDドライブ直下に置きました。また、Windows用の DFU-UTIL を貰ってきて、flashall.batと同じフォルダに入れておきます。

WindowsにEdisonを繋でいない状態でコマンドプロンプトから flashall.bat を実行します。"Please plug and reboot the board" と出たらEdisonのJ16のUSBコネクタとPCを繋ぐと書き込みが開始されます。
※ USBの繋ぐタイミングがあるようで、"Dfu device found" に進まない時があります。その時はUSB抜いて flashall.bat を実行するところからやり直してみてください。

D:\toFlash>flashall.bat
Using U-boot target: edison-blank
Now waiting for dfu device 8087:0a99
Please plug and reboot the board
Dfu device found
Flashing IFWI
Download [=========================] 100% 4194304 bytes
Download done.
Download [=========================] 100% 4194304 bytes
Download done.
Flashing U-Boot
Download [=========================] 100% 245760 bytes
Download done.
Flashing U-Boot Environment
Download [=========================] 100% 65536 bytes
Download done.
Flashing U-Boot Environment Backup
Download [=========================] 100% 65536 bytes
Download done.
Flashing boot partition (kernel)
Download [=========================] 100% 5799936 bytes
Download done.
Flashing rootfs, (it can take up to 5 minutes... Please be patient)
Download [=========================] 100% 536870912 bytes
Download done.
Rebooting
U-boot & Kernel System Flash Success...
Your board needs to reboot twice to complete the flashing procedure, please do n
ot unplug it for 2 minutes.


Edisonを起動してバージョンを確認してみます。

# cat /etc/version
Custom Edison build by jujurou@ubuntu 2014-11-15 17:42:50 PST


作成したファイルが書き込まれているみたいですね。
さて、これからどのように煮たり焼いたりしましょうかね。
スポンサーサイト

tag : Edison

tag : bitbake

黒ねこ時計 くろック D02
プロフィール

jujurou

Author:jujurou
運営HP:チャコの部屋
Twitter:jujurou

カレンダー
02 | 2017/03 | 03
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -
最新記事
最新コメント
カテゴリ
ユーザタグ

RaspberryPi ぺるけ Linux TRminiWatterPart4 トランジスタ式ミニワッター MPD イーサネットコンバータ OpenOCD DAC FON2405E buildroot FM3ペリフェラル BeagleBoneBlack library FM3評価ボード ODROID-U2 mingw OpenGL TL-WR700N Edison bitbake KiCad VMware シングル FM4 ミニワッター 6N6P 計測 

月別アーカイブ
ランキング

FC2 Blog Ranking

カウンター
検索フォーム
リンク
RSSリンクの表示
QRコード
QRコード
ライセンス
クリエイティブ・コモンズ・ライセンス
Twitter