follow me

LinkIt 7688のビルド手順。(Ubuntu 18.04環境で)

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環境で確認しました。

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:

  1. Install prerequisite packages to build the firmware:
  2. subversionが必要なので、add-apt-repository universeを行います。
    $ 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
    
    
  3. Download the OpenWrt CC source codes:
  4. ※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 のいずれかである必要がある。
    $ wget https://github.com/openwrt/chaos_calmer/archive/v15.05.1.tar.gz
    $ tar zxf v15.05.1.tar.gz
    
  5. Patch fix git submodule. (Download and Patch)
  6. $ 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
    
  7. Prepare the default configuration file for feeds:
  8. $ cd chaos_calmer-15.05.1
    $ cp feeds.conf.default feeds.conf
    
  9. Add the LinkIt Smart 7688 development board's feed:
  10. $ echo src-git linkit https://github.com/MediaTek-Labs/linkit-smart-7688-feed.git >> feeds.conf
    
  11. Update the feed information for all available packages to build the firmware:
  12. $ ./scripts/feeds update
    
  13. Install all packages:
  14. $ ./scripts/feeds install -a
    
  15. Patch python, node-... package:
  16. $ 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
    
  17. Prepare the kernel configuration:
  18. $ make menuconfig
    
    • 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)
  19. Start the compilation process:
  20. $ make
    
  21. 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.
  22. You can use this file to update the firmware through Web UI or rename it to lks7688.img to update through a USB drive.
LinkIt 7688のビルド手順。(Ubuntu 18.04環境で) | 1 件のコメント | アカウント登録
サイト管理者はコメントに関する責任を負いません。
LinkIt 7688のビルド手順。(Ubuntu 18.04環境で)
投稿者: kometch on 2019年1月15日(火) 14:23 JST

このあたり、さっぱり分からないけど、うまいことDockerfile作れればbuild環境作れそうな気がする・・・