AGL

Intel NUC に Automotive Grade Linux をインストール

注: この手順は古いです。今は単に .wic ファイルを dd するだけで SD を作れます。

作業手順

公式文書 Running AGL on Intel MinnowBoard (and most Intel 64 bits HW)

Intel NUC に AGL をインストールするメモ。まずインストールするファイルを選ぶ。Intel Minnowboard Max 用が NUC にも使える。色んな所にリンクがあるが AGL Unified Code Base Release Notes がまとまっていた。hddimg ファイルをダウンロードする。

  • latest agl-demo-platform-crosssdk-intel-corei7-64.hddimg
    • 私が試したときはアプリが壊れていた。
  • dab 4.0.2 agl-demo-platform-intel-corei7-64.hddimg
    • まあ動いた。

このファイルを SD カードに焼くには mkefi-agl.sh というツールを使う。(なぜ普通に dd 出来ないかは要調査)

git clone git@github.com:dominig/mkefi-agl.sh.git
$ sudo cp -l mkefi-agl.sh/mkefi-agl.sh /usr/local/bin

あとは SD カードを指してツールを実行すれば作成。ツールはパーティションの作成やフォーマットを自動で行ってくれる。

$ lsblk
SD カードデバイスを確認
$ mkefi-agl.sh
$ sudo mkefi-agl.sh -v agl-demo-platform-crosssdk-intel-corei7-64.hddimg /dev/sdc

hddimg とは?

さて、hddimg というのが聞き慣れないので調べてみる。

この .hddimg というファイルに馴染みがないのでどういう物なのか調べてみる。mkefi-agl.sh を読むとどうもマウント出来そうだ。

$ sudo mount -o loop ~/Downloads/agl-demo-platform-crosssdk-intel-corei7-64.hddimg /mnt

マウントした物を観察すると、rootfs.img があるので、これが起動後の linux のルートパーティションになるようだ。

$ tree /mnt | less
/mnt
├── EFI
│   └── BOOT
│       └── bootx64.efi
├── initrd
├── ldlinux.c32
├── ldlinux.sys
├── libcom32.c32
├── libutil.c32
├── loader
│   ├── entries
│   │   ├── boot.conf
│   │   └── install.conf
│   └── loader.conf
├── rmc.db
├── rootfs.img
├── startup.nsh
├── syslinux.cfg
├── vesamenu.c32
└── vmlinuz

ということで、hddimg というのは linux のルートパーティションと EFI のブート情報を含んだ何かである事がわかる。

$ mkdir /tmp/mnt
$ sudo mount -o loop /mnt/rootfs.img /tmp/mnt
$ $ ls /tmp/mnt
bin  boot  dev  etc  home  lib  lost+found  media  mnt  proc  run  sbin  sys  tmp  usr  var

Bitbake が hddimg を作る仕組み。

Bitbake は IMAGE_FSTYPES の値を元に作成するイメージのフォーマットを決める。AGL の場合、次のように設定が見える。

$ ag IMAGE_FSTYPES meta-*

meta-agl/meta-agl-distro/conf/distro/poky-agl.conf
122:AGL_EXTRA_IMAGE_FSTYPES ??= ""
131:IMAGE_FSTYPES := "${AGL_DEFAULT_IMAGE_FSTYPES} ${AGL_EXTRA_IMAGE_FSTYPES}"

meta-agl/meta-agl-bsp/conf/include/agl_intel-corei7-64.inc
27:AGL_DEFAULT_IMAGE_FSTYPES := "wic hddimg"

自前でビルドする場合。

source meta-agl/scripts/aglsetup.sh -m intel-corei7-64 agl-demo agl-devel
bitbake agl-demo-platform

のように -m intel-corei7-64 を指定すれば勝手に hddimg ファイルが出来る。