LinkIt 7688のビルド手順。(Ubuntu 18.04環境で)
2019年1月14日(月) 22:38 JST
閲覧数 3,148
Ubuntu 18.04環境でのLinkIt 7688ファームウェアのビルドについて。
LinkIt 7688は、TELECの関係上Chaos Calmer (15.05.x)を利用する訳ですが、Chaos CalmerはUtuntu 18.04環境でのビルドが出来ません。
実はChaos Calmer (15.05.x)だけの話しではなく、ながらくUbuntu 18.04でのビルドはmasterでもできなかった。(いつのまにかビルドできるようになったけど、おそらくパッケージによってはビルド失敗すると思われる。)
Ubuntu 16.04.x環境を用意すればいいのですが、それが面倒だという人が出てきてもおかしくないので、パッチを作ってみました。
ここまで変更入れないとビルドできないとか予想してませんでした。
基本バージョン構成はChaos Calmer (15.05.1)と同じに保ちたかったのですが、nodeだけ少しバージョン上がってしまいます。
用意したパッチは17個になります。
feedsで追加するパッケージ関係でのパッチが5個入っています。
feedsは、pythonとnodeに関するパッチです。(これらのパッケージを利用しないのであれば、苦労することはなかったのですが。。。)
では、各パッチと、ビルド手順を記載していきます。
patches.tar.gz
patches.tar.gzの中身は、以下17個のパッチとなっており、14-17についてはfeedをupdateしてから当てる形になります。
Chaos Calmer (15.05.1)に対するパッチで、Ubuntu 18.04.1環境で確認しました。
以下、長くなりますが、ビルド手順になります。
Steps
In the Ubuntu system, open the Terminal application and enter the following commands:
LinkIt 7688は、TELECの関係上Chaos Calmer (15.05.x)を利用する訳ですが、Chaos CalmerはUtuntu 18.04環境でのビルドが出来ません。
実はChaos Calmer (15.05.x)だけの話しではなく、ながらくUbuntu 18.04でのビルドはmasterでもできなかった。(いつのまにかビルドできるようになったけど、おそらくパッケージによってはビルド失敗すると思われる。)
Ubuntu 16.04.x環境を用意すればいいのですが、それが面倒だという人が出てきてもおかしくないので、パッチを作ってみました。
ここまで変更入れないとビルドできないとか予想してませんでした。
基本バージョン構成はChaos Calmer (15.05.1)と同じに保ちたかったのですが、nodeだけ少しバージョン上がってしまいます。
用意したパッチは17個になります。
feedsで追加するパッケージ関係でのパッチが5個入っています。
feedsは、pythonとnodeに関するパッチです。(これらのパッケージを利用しないのであれば、苦労することはなかったのですが。。。)
では、各パッチと、ビルド手順を記載していきます。
patches.tar.gz
patches.tar.gzの中身は、以下17個のパッチとなっており、14-17についてはfeedをupdateしてから当てる形になります。
Chaos Calmer (15.05.1)に対するパッチで、Ubuntu 18.04.1環境で確認しました。
patch | ex. |
---|---|
0001-CC-version.mk-and-image-config.in-adjust-to-15.05.1.patch 0002-tools-pkg-config-fix-build-with-GCC-6.patch 0003-tools-mkimage-sync-include-linux-compiler-.h-with-u-.patch 0004-toolchain-gcc-fix-build-with-GCC-6.patch 0005-scripts-getver.sh-Fix-revision-numbering-for-Github-.patch 0006-tools-mkimage-backport-gcc5-compatibility-patch.patch 0007-tools-mkimage-backport-SOURCE_DATE_EPOCH-for-reprodu.patch 0008-tools-mkimage-sync-include-linux-compiler-.h-with-u-.patch 0009-tools-mkimage-fix-build-with-OpenSSL-1.1.x-FS-182.patch |
Chaos Calmerには含まれないが、masterには含まれるパッチの中で、Ubuntu 18.04.x環境でのビルドに必要なパッチを抽出しました。 |
0010-include-git_version_check_fix.patch | gitバージョンチェックの変更 |
0011-tools-mkimage-automake-port-to-Perl-5.22-and-later.patch | 既に既知の問題としてパッチが存在、Chaos Calmer向けに修正 |
0012-fix-git-submodule.patch | gitコマンドの挙動が異なるので修正 |
0013-openssl-add-host-build.patch | Host環境のpythonを使ってくれない為にhash系がimportできないとエラーになるので、staging hostに対しlibopensslを追加(おそらく、同等の問題は他のパッケージでも起こると思われるが、放置されている) |
0014-feeds-python-depends-add-libopenssl.patch 0015-feeds-node-depends-add-libopenssl.patch 0016-feeds-Add-patch-gcc_5.x_detection_in_configure.patch |
pythonのhashlibをstaging hostに作るためのものと、gccバージョンによる対応を少し |
0017-feeds-node-verup-v0.12.18.patch | node本体ではなく、node-serialportのインストール時にnpmコマンドがSegmentation Faultを起こすので0.12.7から0.12.18に変更。(0.12.17でも問題はなさそうだけど、ここまでバージョン上げるならというワリキリ) |
以下、長くなりますが、ビルド手順になります。
Steps
In the Ubuntu system, open the Terminal application and enter the following commands:
- Install prerequisite packages to build the firmware: subversionが必要なので、add-apt-repository universeを行います。
- Download the OpenWrt CC source codes: ※chaos_calmerのmasterだと、kernelバージョンが上がってしまっていてmtk-sdk-wifiドライバが合うものが無い。15.05.1を使う事になる。 ※TELECの関係上、mtk-sdk-wifiドライバを使用する必要があるため、使用するkernel は 3.18.21、3.18.23、3.18.27、3.18.29、3.18.36、3.18.44 のいずれかである必要がある。
- Patch fix git submodule. (Download and Patch)
- Prepare the default configuration file for feeds:
- Add the LinkIt Smart 7688 development board's feed:
- Update the feed information for all available packages to build the firmware:
- Install all packages:
- Patch python, node-... package:
- Prepare the kernel configuration:
- Select the following options:
- Target System: Ralink RT288x/RT3xxx
- Subtarget: MT7688 based boards
- Target Profile: LinkIt7688
- Save and exit (use the default configuration file without any modification)
- Start the compilation process:
- After the build process is finished, the resulted firmware file will be under "bin/ramips/openwrt-ramips-mt7688-LinkIt7688-squashfs-sysupgrade.bin". Depending on the hardware resources of the host environment, the build process may take more than 2 hours.
- You can use this file to update the firmware through Web UI or rename it to lks7688.img to update through a USB drive.
$ sudo add-apt-repository universe $ sudo apt-get update $ sudo apt-get install build-essential libncurses5-dev zlib1g-dev gawk gcc-multilib flex gettext libssl-dev unzip subversion python automake $ sudo apt-get install libxml-parser-perl最後に行っている、libxml-parser-perlは、入っていない場合、このようなエラーとなります。
make[3]: Entering directory '/home/dev/LinkIt7688/chaos_calmer-15.05.1/feeds/packages/libs/intltool' (cd /home/dev/LinkIt7688/chaos_calmer-15.05.1/build_dir/host/intltool-0.40.6/; if [ -x configure ]; then cp -fpR /home/dev/LinkIt7688/chaos_calmer-15.05.1/scripts/config.{guess,sub} /home/dev/LinkIt7688/chaos_calmer-15.05.1/build_dir/host/intltool-0.40.6// && bash ./configure CC="gcc" CFLAGS="-O2 -I/home/dev/LinkIt7688/chaos_calmer-15.05.1/staging_dir/host/include -I/home/dev/LinkIt7688/chaos_calmer-15.05.1/staging_dir/host/usr/include" CPPFLAGS="-I/home/dev/LinkIt7688/chaos_calmer-15.05.1/staging_dir/host/include -I/home/dev/LinkIt7688/chaos_calmer-15.05.1/staging_dir/host/usr/include" LDFLAGS="-L/home/dev/LinkIt7688/chaos_calmer-15.05.1/staging_dir/host/lib -L/home/dev/LinkIt7688/chaos_calmer-15.05.1/staging_dir/host/usr/lib" SHELL="/usr/bin/env bash" --target=x86_64-linux-gnu --host=x86_64-linux-gnu --build=x86_64-linux-gnu --program-prefix="" --program-suffix="" --prefix=/home/dev/LinkIt7688/chaos_calmer-15.05.1/staging_dir/host --exec-prefix=/home/dev/LinkIt7688/chaos_calmer-15.05.1/staging_dir/host --sysconfdir=/home/dev/LinkIt7688/chaos_calmer-15.05.1/staging_dir/host/etc --localstatedir=/home/dev/LinkIt7688/chaos_calmer-15.05.1/staging_dir/host/var --sbindir=/home/dev/LinkIt7688/chaos_calmer-15.05.1/staging_dir/host/bin ; fi ) checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for gawk... gawk checking whether make sets $(MAKE)... yes checking for perl... /home/dev/LinkIt7688/chaos_calmer-15.05.1/staging_dir/host/bin/perl checking for perl >= 5.8.1... 5.26.1 checking for XML::Parser... configure: error: XML::Parser perl module is required for intltool Makefile:47: recipe for target '/home/dev/LinkIt7688/chaos_calmer-15.05.1/build_dir/host/intltool-0.40.6/.configured' failed make[3]: *** [/home/dev/LinkIt7688/chaos_calmer-15.05.1/build_dir/host/intltool-0.40.6/.configured] Error 1 make[3]: Leaving directory '/home/dev/LinkIt7688/chaos_calmer-15.05.1/feeds/packages/libs/intltool' package/Makefile:191: recipe for target 'package/feeds/packages/intltool/host/compile' failed make[2]: *** [package/feeds/packages/intltool/host/compile] Error 2 make[2]: Leaving directory '/home/dev/LinkIt7688/chaos_calmer-15.05.1' package/Makefile:188: recipe for target '/home/dev/LinkIt7688/chaos_calmer-15.05.1/staging_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/stamp/.package_compile' failed make[1]: *** [/home/dev/LinkIt7688/chaos_calmer-15.05.1/staging_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/stamp/.package_compile] Error 2 make[1]: Leaving directory '/home/dev/LinkIt7688/chaos_calmer-15.05.1' /home/dev/LinkIt7688/chaos_calmer-15.05.1/include/toplevel.mk:181: recipe for target 'world' failed make: *** [world] Error 2
$ wget https://github.com/openwrt/chaos_calmer/archive/v15.05.1.tar.gz $ tar zxf v15.05.1.tar.gz
$ wget http://www.srchack.org/pub/openwrt/LinkIt7688//20190114/patches.tar.gz $ tar xvf patches.tar.gz $ patch -p1 < patches/0001-CC-version.mk-and-image-config.in-adjust-to-15.05.1.patch $ patch -p1 < patches/0002-tools-pkg-config-fix-build-with-GCC-6.patch $ patch -p1 < patches/0003-tools-mkimage-sync-include-linux-compiler-.h-with-u-.patch $ patch -p1 < patches/0004-toolchain-gcc-fix-build-with-GCC-6.patch $ patch -p1 < patches/0005-scripts-getver.sh-Fix-revision-numbering-for-Github-.patch $ patch -p1 < patches/0006-tools-mkimage-backport-gcc5-compatibility-patch.patch $ patch -p1 < patches/0007-tools-mkimage-backport-SOURCE_DATE_EPOCH-for-reprodu.patch $ patch -p1 < patches/0008-tools-mkimage-sync-include-linux-compiler-.h-with-u-.patch $ patch -p1 < patches/0009-tools-mkimage-fix-build-with-OpenSSL-1.1.x-FS-182.patch $ patch -p1 < patches/0010-include-git_version_check_fix.patch $ patch -p1 < patches/0011-tools-mkimage-automake-port-to-Perl-5.22-and-later.patch $ patch -p1 < patches/0012-fix-git-submodule.patch $ patch -p1 < patches/0013-openssl-add-host-build.patch
$ cd chaos_calmer-15.05.1 $ cp feeds.conf.default feeds.conf
$ echo src-git linkit https://github.com/MediaTek-Labs/linkit-smart-7688-feed.git >> feeds.conf
$ ./scripts/feeds update
$ ./scripts/feeds install -a
$ patch -p1 < patches/0014-feeds-python-depends-add-libopenssl.patch $ patch -p1 < patches/0015-feeds-node-depends-add-libopenssl.patch $ patch -p1 < patches/0016-feeds-Add-patch-gcc_5.x_detection_in_configure.patch $ patch -p1 < patches/0017-feeds-node-verup-v0.12.18.patch
$ make menuconfig
$ make