最近、Yoctoにbatman-advサポートを追加する方法を尋ねられました。 その結果、通信が行われ、それがこの投稿の基礎となりました。 それでどうやってこれをするの? まとめましょう。

方法1:車輪を再発明しない
あなたが自分で何かをする前に、他の誰かがすでに同じことをしているかどうかをチェックすることは害になりません。 既存のリポジトリを調べる価値があり
ます 。たとえば、
こちらをご覧ください 。
ここで必要なlibnlを見つけることができましたが
、 BATMANは見つかりませんでした(ただし、現在は既に存在しますが、ストーリーを続けたいと思っています)。 このような状況では、リポジトリに関係する誰か、たとえばこの場合、
AlexTというニックネームを持つユーザーに丁寧なリクエストを行うことは非常に可能
です 。 要求の本質は、パッケージ「kernel-module-batman-adv」および「batctl」を
opkgリポジトリに追加することです 。 運があなたの側にある場合、AlexTはそれを行いますが、彼は空き時間に自発的にこのリポジトリに従事していることを考慮する必要があります。 パッケージは、opkg installコマンドを使用してインストールできます。
方法2:ターゲットデバイスでコンパイルする
このアプローチはもう少し複雑で、Intel Edison rootfsに十分な空きスペースが必要です。 使用する場合は、ターゲットデバイスに必要なカーネルレベルコードをダウンロードしてコンパイルする必要があります。
方法3:Yoctoでビルドする
この方法を使用するには、次のものが必要です。
- Linux x64がインストールされているホストコンピューター。 たとえば、Ubuntu 12.04(Ubuntu 14.04のYoctoの問題について聞いたことがありますが、すでに解決されている可能性があります)、Fedora 20など。
- 少なくとも50 GBの空きディスク領域(これは、Yoctoイメージ全体をコンパイルする場合です)。
Yoctoを構成する
ここから 「Yocto complete image」をダウンロードして
ください 。 ダウンロード後、次のコマンドを実行します。
- tar xvf edison-src * .tgz
- cd edison-src
- デバイスソフトウェア/ setup.sh
- ソースpoky / oe-init-build-env
Kernel-modules-batman-advアセンブリ
ここで、成功への道は次のステップにあります。
- コマンドbitbake -c menuconfig virtual / kernelを実行します。 新しいウィンドウが開き、Edisonのカーネル構成ツールが起動します。
- BATMANの設定これを行うには、menuconfigセッションで、Networking Support> Networking Options> BATMANカテゴリに表示するBATMANパラメータを設定します。
- cp build / tmp / work / edison-poky-linux / linux-yocto / <現在のカーネル> /linux-edison-standard-build/.config device-software / meta-edison / recipes-kernel / linux / files / defconfig
- bitbake -c compile_kernelmodules virtual / kernel
- 完全なtarballモジュールが必要な場合は、bitbake -c deploy virtual / kernelコマンドが必要です。 tarballはbuild / tmp / deploy / images / edisonにあります
- それ以外の場合は、ターゲットデバイスで次のコマンドが必要です。opkg install build / tmp / deploy / ipk / edison / kernel-module-batman-adv_ <version> .ipk
次の構成オプションを変更しました。
< # CONFIG_BATMAN_ADV --- > CONFIG_BATMAN_ADV=m > CONFIG_BATMAN_ADV_BLA=y > CONFIG_BATMAN_ADV_DAT=y > CONFIG_BATMAN_ADV_NC=y > # CONFIG_BATMAN_ADV_DEBUG
batctlをインストールする
BATMANを使用するには、batctlをインストールする必要があります。 BitBakeビルドシステムに適したレシピは、インターネットで見つけることができます。 たとえば、私は
これを使用し
て 、いくつかの変更を加えました。 これが私がやっていたことです。
mkdir -p device-software/meta-edison-distro/recipes-support/batman/ cat > device-software/meta-edison-distro/recipes-support/batman/batctl_2014.4.0.bb <<EOF DESCRIPTION = "Control application for BATMAN routing protocol kernel module for multi-hop ad-hoc mesh networks." HOMEPAGE = "http://www.open-mesh.net/" SECTION = "console/network" PRIORITY = "optional" LICENSE = "GPLv2+" LIC_FILES_CHKSUM = "file://../license-destdir/${PN}/generic_GPLv2;md5=801f80980d171dd6425610833a22dbe6" RDEPENDS_${PN} = "kernel-module-batman-adv" DEPENDS = "libnl" SRC_URI = "http://downloads.open-mesh.net/batman/stable/sources/batctl/batctl-${PV}.tar.gz\ file://patch.patch" SRC_URI[md5sum] = "f3a14565699313258ee6ba3de783eb0a" SRC_URI[sha256sum] = "77509ed70232ebc0b73e2fa9471ae13b12d6547d167dda0a82f7a7fad7252c36" EXTRA_OEMAKE = 'STAGING_INC="${STAGING_INC}"' do_compile() { oe_runmake } do_install() { install -d ${D}${bindir} install -m 0755 batctl ${D}${bindir} } EOF
libnlはインストールパスを変更したため、Makefile batctlにパッチを適用する必要があります。 これは次のように行われます。
mkdir -p device-software/meta-edison-distro/recipes-support/batman/files cat > device-software/meta-edison-distro/recipes-support/batman/files/patch.patch <<EOF --- a/Makefile 2015-02-27 09:10:45.768409932 +0100 +++ b/Makefile 2015-02-27 09:11:32.710554513 +0100 @@ -29,7 +29,7 @@ MANPAGE = man/batctl.8 # batctl flags and options -CFLAGS += -Wall -W -std=gnu99 -fno-strict-aliasing -MD -MP +CFLAGS += -Wall -W -std=gnu99 -fno-strict-aliasing -MD -MP –I${STAGING_INC}/libnl3 CPPFLAGS += -D_GNU_SOURCE LDLIBS += -lm EOF
これらすべての操作の後、bitbakeを使用してbatctlをビルドするには、次のコマンドが必要です。
bitbake batctl
アセンブリが完了した後、完成したパッケージはbuild / tmp / deploy / ipk / core2-32 / batctl_2014.4.0-r0_core2-32.ipkにあります。 Yocto LinuxがインストールされているIntel Edisonに「opkg install」を使用してインストールできます。
インストール後のIntel Edisonのテスト
root@edison:~/
モジュールを自動的にロードする場合は、おそらく/etc/modules-load.d/に含める必要があります。
root@edison:~/
USBイーサネットアダプターの使用:
root@edison:~/
まとめ
検討したアプローチにより、Intel Edison上のYocto Linuxカーネルにモジュールを埋め込むことができます。 これを使用すると、リポジトリに依存せずに必要なものをカーネルに含めることができます。 目標が正確にBATMAN Advancedである場合、Intel EdisonはMESHネットワークで動作する準備ができています。