2014年10月13日

[Yocto] Intel DE3815TYKHEでYocto Linuxを動かす

Yocto Projectの研究に取り組みを始めて以来、最近はYocto Linuxの研究活動ばかりやっています。本業の仕事でもYocto Linuxの研究開発をやっているので、休日の時間までYocto Linuxをいじくり回すのに使ったりしています。Intel E38xxシリーズが組み込み向けに有望なプロセッサであることを知って以来、プライベートな研究活動用のターゲットとして同プロセッサを搭載したハードを探していましたが、やっとIntel NUC DE3815TYKHE(本体貼付のラベルでは、製品名は「DE3815TYKE」と記載されています)というベアボーンキットを入手できました。この機種に搭載されているプロセッサはIntel E3815です。
ANShot_20141012_113551-DE3815TYKHE-PackageItems.jpg
ANShot_20141012_113831-DE3815TYKHE-BackView.jpg
ANShot_20141013_134008-DE3815TYKHE-LabelOnBack.jpg
ANShot_20141012_130601-DE3815TYKHE-StandView.jpg
サイズは小さめの弁当箱くらいです。こういう小型のベアボーンキットは結構前から出回っていて、秋葉原のPCショップなどで見かけることもありました。デストップPC用のベアボーンキットはメジャー・メーカー製の物が多いですが、小型のベアボーンキットは大抵はマイナーなメーカーの製品でした。ところが、ここ数年省電力PCやホームサーバーの需要が高くなっているため、ASUSやGIGABYTEなどのメジャーなメーカーもこの種の製品を多く販売するようになっています。最近ではIntel自らこういう製品を販売していて(Intelが製造している訳ではなく、台湾か中国メーカーのOEM品でしょうが)、小型省電力ベアボーンPCの統一的な製品呼称としてIntelは「NUC(Next Unit of Computing)」という名称を使っています。今回私が購入したDE3815TYKHEという製品もIntel NUCシリーズ・ベアボーンキットの一つです。

じつは、MinnowBoard MAXのE3825 Daul-core版が欲しくて、こいつを個人輸入するべきかずいぶん悩みました。このボードはまだ予約注文しか受けつけていない状況のようで、MOUSERの商品ページでは「在庫:0 工場リードタイム:20週間」(本記事投稿時点)になっています。いま注文しても、実際に入手できるのは3〜4ヶ月位(もしかするともっと先)になるんじゃないかと思えました。これ以外にE38xx搭載ボードが他にないかと探し廻ったのですが、現状日本国内ですぐに入手できるのはDE3815TYKHEくらいしか見つかりませんでした。J1800/J1900 Bay Trail-Dを搭載したMini-ITXボードならASUS, GIGABYTE, ASRockなどから多くの種類の製品が販売されており、秋葉原のPCショップやAmazonでも購入できます。しかし、Bay Trailシリーズの最新版かつ最省電力版プロセッサであるE3800シリーズを搭載したボードは産業用として売られているものが多く、まだ製品の種類も製造量も少ないのが実情です。「E3845 Mini-ITX」というキーワードでググってみると、以下のようなページくらいしか見つかりませんでした。
 
  1. EMB-BT1 - Industrial Motherboards - Mini-ITX Motherboards
  2. WADE-8078,Mini-ITX,Embedded System Board,Embedded Computer- Portwell, Inc.
  3. COMMELL LV-67O Mini-ITX Support Bay Trail Intel Celeron J1900/N2930 and Atom E3845 Processor
  4. DFI Low-Power Mini-ITX Motherboards Support Intel Atom Processor-based SoC
  5. ASRock > UTX-110
  6. ASRock > ASRock UTX-110: スリム、スマート、そしてパワフル!

上のうち、1〜2は産業用ボード製品のようです。価格も高そうなので、入手は諦めた方が良さそうです。COMMELLとDFIのボードも産業用かもしれませんが、この2つのメーカーはデスクトップやサーバー用PCのマザーボードも製造しています(COMMELLは産業用ボードが主力製品です)。しかし、どちらもマイナーなメーカーなので、これらのボードも日本国内で入手するのは難しいでしょう。最後の2つのリンクは、ASRock製のUTXフォームファクタのボードの製品ページです。このボードも産業用みたいで、まだ発売されて間もない製品のようです。じつは、上のボードの中で一番欲しいと思ったのがこれです。ASRockはメジャーなメーカーなので、もしかすると日本へもこの製品が入ってくる可能性があるかもしれません。もしそうならったら、ぜひこいつを購入してみたいです。MinnowBoard MAXのようにフォームファクタがMini-ITXでないボードもありますが、ケーブルやケースなどの入手性を考えると、やはりMini-ITXがベストの選択でしょう。当面は今回入手したDE3815TYKHEを使っていきますが、近いうちにE3845(4コアのBay Trail-I)を搭載したMini-ITXボードを必ず入手しようと思っています。

■ DE3815TYKHEの組み立て


DE3815TYKHEに部品を追加して組み上げたので、その作業の様子を紹介します。DE3815TYKHEはベアボーンキットですが、CPUのE3815はオンボードの直付けです。したがって、追加部品として必要なのはメモリとSATAディスクだけです。以下の2つの部品を用意しました。
  • SAMSUNG純正PC3-12800 SO-DIMM 2GB DDR3L(電圧1.35V)対応モデル
  • Intel 320 Series SSD 80GB

前者はDE3815TYKHEと一緒にAmazonから購入し、後者はオークションで中古品を落札しました。メモリは2GBと4GBのどちらにするかずいぶん悩みました。Windows 7/8/8.1ならメモリは最低4GB搭載しないと実用になりませんが、こいつにWindowsを入れるつもりはまったくありません。Linuxの場合も実用機として使うならメモリは4GBあった方がベターですが、このDE3815TYKHEは開発専用ターゲットとしてしか使わないつもりなので2GBで十分だと思いました。

まずはDE3815TYKHEのカバーを開いてみました。下がDE3815TYKHEの内部の写真です。
ANShot_20141012_121052-DE3815TYKHE-BuildingUp.jpg
左側の一番大きなコネクタがDIMMスロットで、右側のスペースがディスクドライブを取り付け場所のようです。ちなみに、真ん中に位置するコネクタはMini-PCIeのスロットのようで、アンテナケーブルらしき物も見受けられます。ディスクドライブ用の金具を取り外して確認すると、このケーブルの先にちゃんとアンテナが付いていて、アンテナ本体部分はケース内側に貼り付けられていました。ということは、無線LANモジュールを取り付けるだけでWi-Fi機能を追加できることになります。そのうち、適当な無線LANモジュールを入手して、このMini-PCIeスロットに取り付けようと思っています。

いずれの部品も取り付け作業は特に難しくありません。部品用のネジもすべて付属しています。メモリはDIMMスロットへ挿し込むだけです。ディスクドライブの方は、金具を外して、それにディスクをネジ止めしてから、元の場所に戻すだけです。
ANShot_20141012_121831-DE3815TYKHE-BuildingUp.jpg
ANShot_20141012_122023-DE3815TYKHE-BuildingUp.jpg
ANShot_20141012_122800-DE3815TYKHE-BuildingUp.jpg
ANShot_20141012_122857-DE3815TYKHE-BuildingUp.jpg
ANShot_20141012_123402-DE3815TYKHE-BuildingUp.jpg
下の写真が、DE3815TYKHEにメモリとSSDを取り付けた状態です。
ANShot_20141012_124338-DE3815TYKHE-BuildingUp.jpg
PCを組み立てたことのある人なら誰でもできるでしょうし、そういう経験を持ってない人でもできそうなほど簡単な作業でした。メモリとSSDを取り付けたら、カバーを閉めれば組み立ては終わりです。

組み立て作業が終わったので、さっそくDE3815TYKHEの電源を入れてみました。すると、下のようなIntel NUCのロゴ画面がモニタに表示されました。
ANShot_20141012_151426-DE3815TYKHE-BIOS_Screen.jpg
この画面が表示された直後に、キーボードの[F2]キーを押すと、BIOSの画面が表示されました。
ANShot_20141012_134629-DE3815TYKHE-BIOS_Screen.jpg
PCやマザーボードのBIOS画面は大抵はキャラクタ・ベースのものが多いのですが、DE3815TYKHEのBIOS画面はグラフィカルなものでなかなか凝っています。このBIOS画面にはポインタ(矢印)が表示されているので、一見マウスが必要なように思えますが、キーボードだけでも操作できます。[Tab]キーを押す度に、画面上の選択可能なボタンやタブへ順次カーソル(オレンジ色の枠線)が移動するので、目的の場所で[Space]キーを押せば、それを選択できるようになっています。DE3815TYKHEのBIOSの構成画面を以下に示します。
ANShot_20141012_135636-DE3815TYKHE-BIOS_Screen.jpg
ANShot_20141012_135750-DE3815TYKHE-BIOS_Screen.jpg
ANShot_20141012_140010-DE3815TYKHE-BIOS_Screen.jpg
ANShot_20141012_140053-DE3815TYKHE-BIOS_Screen.jpg
ANShot_20141012_140153-DE3815TYKHE-BIOS_Screen.jpg
ANShot_20141012_140220-DE3815TYKHE-BIOS_Screen.jpg
ANShot_20141012_140256-DE3815TYKHE-BIOS_Screen.jpg
最近のPCやマザーボードに搭載されているBIOSはほとんどUEFI(Unified Extensible Firmware Interface)ベースのものばかりです。予想していたとおり、やはりDE3815TYKHEのBIOSもUEFIベースでした。UEFIベースのBIOSでLinuxを動かす場合、色々なTipsがあります。この辺の情報もそのうち書こうと思っています。

一般のユーザーなら、こういうベアポーンPCへインストールするのはWindowsだと思いますが、私の場合はあくまで組込みターゲットとして使うことが目的なので、Windowsを入れることは将来もないでしょう。Bay Trailについて調べているうちに、DE3815TYKHEのような小型の省電力ベアボーンキットが数多く販売されていることを知ったので、近いうちにこういうベアボーンキットを使ってメディアサーバーを一台を組んでみたいと思っていますが、この計画を実行するときは、WindowsではなくLinuxでサーバー環境を構築するつもりです。最近はオープンソースソフトも充実してきているので、デスクトップとサーバーのいずれもLinuxで十分に実用的な環境を構築できるはずです。Windowsの方が楽かもしれませんが、Linuxを使った方がより深い知識が得られます。私にとってWindowsはすでに過去のOSなので、使うのは仕事上どうしても必要な場合だけです。

■ DE3815TYKHEによるYocto Linuxの動作確認


DE3815TYKHEを入手した最大の目的がYocto Linuxを動かすことだったので、さっそくそれに挑戦してみました。Intel E38xx用BSPのビルドは前記事の作業で終わっているので、ビルドによって生成したYocto Linuxのイメージから起動用メディアを作成するところから始めました。

Intelのサイトから入手できる参考ドキュメント「Building Intel(R) Atom(TM) Processor E3800 Development Kit Yocto Project Board Support Package (BSP): User Guide 」には、開発ホスト機へUSBメモリを挿した状態で以下のコマンドを実行すれば、Yocto Linuxの起動メディアを作成できると記載されています。
# Identify the device file for your USB thumb drive.
$ df
# To write the bootable image to USB thumb drive, we assume it is at /dev/sdc.
# Unmount the the USB thumb drive first.
$ umount /dev/sdc

# Go to the scripts directory in poky.
$ cd ~/development/poky/scripts/contrib/
# Command: ./mkefidisk.sh <USB> <path/to/image> <target/rootfs>

上の手順を私の環境に合わせて読み換えて、以下ようなコマンドを実行しました。
$ cd ~/Yocto/poky-daisy-11.0.1
$ source oe-init-build-env valleyisland

### Shell environment set up for builds. ###

You can now run 'bitbake <target>'

Common targets are:
core-image-minimal
core-image-sato
meta-toolchain
adt-installer
meta-ide-support

You can also run generated qemu images with a command like 'runqemu qemux86'
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 97019612 5535000 86556308 7% /
udev 2053336 4 2053332 1% /dev
tmpfs 412128 828 411300 1% /run
none 5120 0 5120 0% /run/lock
none 2060640 152 2060488 1% /run/shm
/dev/sdb1 264223716 143770272 107031684 58% /mnt/vmdk1
.host:/ 499268000 283111972 216156028 57% /mnt/hgfs
/dev/sdc1 15729584 8 15729576 1% /media/3809-5052
$ umount /dev/sdc1
$ cd ../scripts/contrib
$ sudo ./mkefidisk.sh /dev/sdc ../../valleyisland/tmp/deploy/images/valleyisland-64/core-image-sato-valleyisland-64.hddimg /dev/sda
Image details
=============
image: `../../valleyisland/tmp/deploy/images/valleyisland-64/core-image-sato-valleyisland-64.hddimg' -> `core-image-sato-valleyisland-64-20140924035205.hddimg'
size: 259637248 bytes
modified: 2014-09-24 16:11:08.177183633 +0900
type: x86 boot sector, code offset 0x58, OEM-ID "SYSLINUX", sectors/cluster 8, root entries 512, Media descriptor 0xf8, sectors/FAT 248, heads 64, sectors 507104 (volumes > 32 MB) , serial number 0x54226e8b, label: "boot ", FAT (16 bit)

Device details
==============
device: /dev/sdc
vendor: BUFFALO
model: USB Flash Disk
size: 15453913088 bytes

Prepare EFI image on /dev/sdc [y/N]? y
Information: You may need to update /etc/fstab.

*****************
Boot partition size: 20 MB (/dev/sdc1)
ROOTFS partition size: 14662 MB (/dev/sdc2)
Swap partition size: 772 MB (/dev/sdc3)
*****************
Deleting partition table on /dev/sdc ...
2+0 records in
2+0 records out
1024 bytes (1.0 kB) copied, 7.3805e-05 s, 13.9 MB/s
Creating new partition table (MSDOS) on /dev/sdc ...
Information: You may need to update /etc/fstab.

Creating boot partition on /dev/sdc1
Information: You may need to update /etc/fstab.

Enabling boot flag on /dev/sdc1
Information: You may need to update /etc/fstab.

Creating ROOTFS partition on /dev/sdc2
Information: You may need to update /etc/fstab.

Creating swap partition on /dev/sdc3
Information: You may need to update /etc/fstab.

Model: BUFFALO USB Flash Disk (scsi)
Disk /dev/sdc: 15.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number Start End Size Type File system Flags
1 1049kB 19.9MB 18.9MB primary boot
2 19.9MB 14.7GB 14.7GB primary
3 14.7GB 15.5GB 772MB primary


Formatting /dev/sdc1 as vfat...
mkfs.vfat 3.0.12 (29 Oct 2011)
Formatting /dev/sdc2 as ext3...
mke2fs 1.42 (29-Nov-2011)
Filesystem label=root
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
895840 inodes, 3579648 blocks
178982 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=3665821696
110 block groups
32768 blocks per group, 32768 fragments per group
8144 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

Formatting swap partition...(/dev/sdc3)
Setting up swapspace version 1, size = 753660 KiB
no label, UUID=311c78ce-c4e0-418f-9f56-9aa3d80575f1

Mounting images and device in preparation for installation...
Copying ROOTFS files...
Preparing boot partition...
Installation complete.

mkefdisk.shスクリプトの「Copying ROOTFS files…」というメッセージ出力の処理が実行されている途中で下のような警告ウィンドウが表示されましたが、USBメディアの作成は成功しているようです。
UBShot_20141012_150324-DE3815TYKHE-Running_YoctoLinux.png
ちなみに、起動メディアとして用意したのは16GBのUSBメモリ(USB 3.0対応の物)です。

上のコマンドによって作成したUSBメモリをDE3815TYKHEの前面のUSB 3.0対応ポートに挿した状態で、同機の電源を投入してみました。すると、モニタに下のようなGRUBのメニュー画面が表示されました。
ANShot_20141012_143831-DE3815TYKHE-Running_YoctoLinux.jpg
「おー。ブートできそうかなぁ?」と思いながら、この画面から「boot」という項目を選択してみましたが、下のようなエラーが表示されて、カーネルのブートシーケンスは途中で停止してしまいました。
ANShot_20141012_143917-DE3815TYKHE-Running_YoctoLinux.jpg
この現象の原因は良く判りませんが、もしかするとmkefdisk.shスクリプトによって作成したUSBメディアが対応しているのは、E38xx BSPの正規ターゲットであるIntel製の3種類のボードだけなのかもしれません。

上記の方法で作成したUSBメディアによってYocto Linuxを起動できなかったので、ここで色々な試行錯誤をしました。その結果、mkefdisk.shスクリプトに代わって下のようなコマンドを使えば、DE3815TYKHE用のUSB起動メディアを作成できることが判りました(DE3815TYKHEだけでなく他のメーカーのE38xx搭載ボードでも、下記の方法によって、Yocto LinuxのUSB起動メディアを作成できるんじゃないかと思います)。
$ cd ../../valleyisland
$ umount /dev/sdc1
$ sudo dd if=/dev/zero of=/dev/sdc bs=1M count=512
512+0 records in
512+0 records out
536870912 bytes (537 MB) copied, 41.7172 s, 12.9 MB/s
$ sync
$ sudo dd if=tmp/deploy/images/valleyisland-64/core-image-sato-valleyisland-64.hddimg of=/dev/sdc
507104+0 records in
507104+0 records out
259637248 bytes (260 MB) copied, 89.28 s, 2.9 MB/s
$ sync

最初にumountコマンドでUSBメモリをアンマウントしています。続いて、ddコマンドでUSBメモリの内容を消去し、さらにddコマンドにYocto Linuxのhddimgイメージ・ファイルを指定して、その格納イメージをUSBメモリへ書き込んでいます。このhddimgファイルには、ddコマンドに直接渡すことができるディスクバイナリ・イメージが格納されているようです。

上の手順によって作成したUSBメモリを挿した状態で、再度DE3815TYKHEの電源を投入してみました。すると、下のようなGRUBのメニュー画面がモニタに表示されました。
ANShot_20141012_154347-DE3815TYKHE-Running_YoctoLinux.jpg
この画面から「boot」を選択すると、今度はカーネルのブートシーケンスが正常に流れて、数秒後にYocto Projectのスプラッシュ画面が表示され、最後にSato Mobile Desktopの画面が表示されました。
ANShot_20141012_154838-DE3815TYKHE-Running_YoctoLinux.jpg
ANShot_20141012_155626-DE3815TYKHE-Running_YoctoLinux.jpg
USBメモリからYocto Linuxをブートできることが確認できたので、続いて、SATAディスクからブートできるか試してみました。USBメモリから起動した際にGRUBのメニュー画面に「install」という項目が存在しています。この「install」を選択することで、SATAディスクヘYocto Linuxのイメージを書き込むことができます。具体的な手順としては、GRUBのメニュー画面で「install」を選択します。
ANShot_20141012_155931-DE3815TYKHE-Running_YoctoLinux.jpg
すると、カーネルのブートシーケンスがしばらく流れた後、数秒後にディスクメディアの検索処理が自動的に実行されます。そして、USBメモリ以外のディスクメディアが見つかると、下のようなメッセージが表示されます。
ANShot_20141012_160429-DE3815TYKHE-Running_YoctoLinux.jpg
このメッセージに「y」と入力すれば、対象ディスク上にパーティションテーブルが作成され、さらにカーネルの起動イメージとrootfsファイル群の書き込みも自動的に実行されます。これらの処理が完了すると、下のようなメッセージが表示されてその状況が通知されます。
ANShot_20141012_160701-DE3815TYKHE-Running_YoctoLinux.jpg
上のメッセージの指示に従って、USBメモリを抜いてから[Enter]キーを押せば、PCがリブートして、SATAディスクからYocto Linuxが再起動します。下の写真が、DE3815TYKHEの内蔵SATAディスクから起動したSato Mobile Desktopが動いている様子です。
ANShot_20141012_161044-DE3815TYKHE-Running_YoctoLinux.jpg


posted by とみやん at 10:23| Comment(0) | TrackBack(0) | Embedded Linux > Yocto Project
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/104524774

この記事へのトラックバック