Some observations on https://wiki.onion.io/Tutorials/Cross-Compile



  • Since I want to make some changes/additions to what I run on my Omega, I have been exploring the use of cross compilation of the system following the instructions covered in https://wiki.onion.io/Tutorials/Cross-Compile

    My explorations have been largely successful, but some related observations may be helpful.
    I have successfully done the following:

    1. Built various packages and installed them on my Omega by copying the .ipk file(s) from ~/openwrt/bin directories and installed them using opkg (though see further notes below)
    2. Built the whole system and installed it using sysupgrade openwrt-ar71xx-generic-onion-omega-squashfs-factory.bin as covered in Step 7: Flash Image in https://wiki.onion.io/Tutorials/Cross-Compile (though see further notes below)
    3. Built the toolchain and SDK and tested them

    However, there are some issues that are worth drawing attention to.
    With respect to the various packages:

    1. For each package you need over the very basic ones (i.e. pretty well all of the various Omega packages) you need to do the following for each since they are not provided by default:
      • scripts/feeds install <package-name>
      • Run make menuconfig and select the package and save
      • Either run a full make or make the specific package using make package/<package-name>/install for each package
    2. It is not clear just what packages you need to duplicate the standard Omega setup
    3. Some packages that you may think you might want won't actually build - doing so gives you an error - e.g. I was unable to build gpioutil

    With reference to installing and using openwrt-ar71xx-generic-onion-omega-squashfs-factory.bin - while this works, it is NOT the standard Omega system:

    1. When one (finally -see next point) connects to it, it shows as Chaos Chalmer - not Onion Omega
    2. Wifi access is not available by default - it was only initially possible to connect via serial communications. Wifi can be made available by suitably editing /etc/config/wireless
    3. The standard packages normally available on the Omega were not available (see earlier comments under packages)
    4. To get back to a standard Omega setup it was necessary to:

    A final comment/question in relation to use of make menuconfig:

    • When selecting a package for inclusion it can be marked as included (<*>) or modularized (<M>) - I am unclear as to the significance/difference of these and when they should be used - can someone clarify this?

    As a final suggestion I think it would be good if there was a repository for the current Omega system setup (as installed in the Omega) that could be used instead of git://git.openwrt.org/15.05/openwrt.git - this should basically provide exactly the same as is used to built the latest omega-v0.0.5-bNNN.bin as in http://repo.onion.io/omega/images/ including all customisations, packages etc.



  • This guide covers a lot of general OpenWRT build process not covered by the onion wiki and I've found it helpful. In particular, setting the target and then running make defconfig was helpful to me.

    For a list of installed packages, I extracted the list from the official build from /usr/lib/opkg/status on the Omega (It can also be extracted by using binwalk -e with unsquashfs on a local machine)

    Then finding the appropriate packages in make menuconfig by searching for PACKAGE_packagename eg: PACKAGE_oupgrade.

    I could not build the arduino-dock (the repository isnt public yet?) or the onion-repo-keys (I need to generate my own keys). I required additional [host] packages to build some of the other packages (including something perl xml)

    With make meunconfig, using <*> installs the package into the image. Using <M> builds the package but does not install it into the image.

    I still seem to be missing some files. A lot of them are generated from /rom/etc/uci-defaults (just /etc/uci-defaults in the image before first run if inspecting using binwalk), but some such as /etc/uci-defaults/14_banner are not (this file may not be provided by a package yet)



  • Here is the config differences I used as generated by ./scripts/diffconfig.sh

    https://gist.github.com/alzeih/ae3ce53db3785a4e3395



  • I've generated a list of missing files by comparing the image built from the above config to the official onion omega image.

    List of missing files (there may be other modified files too):

    Only in _omega-v0.0.5-b251.bin.extracted/squashfs-root/bin: login
    Only in _omega-v0.0.5-b251.bin.extracted/squashfs-root/etc/avahi/services: arduino.service
    Only in _omega-v0.0.5-b251.bin.extracted/squashfs-root/etc/config: network
    Only in _omega-v0.0.5-b251.bin.extracted/squashfs-root/etc/config: onion
    Only in _omega-v0.0.5-b251.bin.extracted/squashfs-root/etc/config: wireless
    Only in _omega-v0.0.5-b251.bin.extracted/squashfs-root/etc/modules.d: 58-i2c-gpio-custom
    Only in _omega-v0.0.5-b251.bin.extracted/squashfs-root/etc/opkg/keys: 72954c8812ca3803
    Only in _openwrt-ar71xx-generic-onion-omega-squashfs-factory.bin.extracted/squashfs-root/etc/opkg/keys: ac6cd5a9c1031faa
    Only in _omega-v0.0.5-b251.bin.extracted/squashfs-root/etc/opkg/keys: c3fab49346f69eff
    Only in _omega-v0.0.5-b251.bin.extracted/squashfs-root/etc: profile.orig
    Only in _omega-v0.0.5-b251.bin.extracted/squashfs-root/etc: sysupgrade.conf.orig
    Only in _omega-v0.0.5-b251.bin.extracted/squashfs-root/etc/uci-defaults: 12_onion_version
    Only in _omega-v0.0.5-b251.bin.extracted/squashfs-root/etc/uci-defaults: 13_hostname
    Only in _omega-v0.0.5-b251.bin.extracted/squashfs-root/etc/uci-defaults: 14_banner
    Only in _omega-v0.0.5-b251.bin.extracted/squashfs-root/etc/uci-defaults: 98_opkg
    Only in _omega-v0.0.5-b251.bin.extracted/squashfs-root/sbin: fdisk
    Only in _omega-v0.0.5-b251.bin.extracted/squashfs-root/usr/bin: arduino-dock
    Only in _omega-v0.0.5-b251.bin.extracted/squashfs-root/usr/bin: lsusb
    Only in _omega-v0.0.5-b251.bin.extracted/squashfs-root/usr/bin: merge-sketch-with-bootloader.lua
    Only in _omega-v0.0.5-b251.bin.extracted/squashfs-root/usr/bin: resize
    Only in _omega-v0.0.5-b251.bin.extracted/squashfs-root/usr/bin: run-avrdude
    Only in _omega-v0.0.5-b251.bin.extracted/squashfs-root/usr/bin: twidude
    Only in _omega-v0.0.5-b251.bin.extracted/squashfs-root/usr/lib/opkg/info: arduino-dock.control
    Only in _omega-v0.0.5-b251.bin.extracted/squashfs-root/usr/lib/opkg/info: arduino-dock.list
    Only in _omega-v0.0.5-b251.bin.extracted/squashfs-root/usr/lib/opkg/info: onion-repo-keys.control
    Only in _omega-v0.0.5-b251.bin.extracted/squashfs-root/usr/lib/opkg/info: onion-repo-keys.list
    Only in _omega-v0.0.5-b251.bin.extracted/squashfs-root/usr/sbin: chpasswd
    Only in _omega-v0.0.5-b251.bin.extracted/squashfs-root/usr/share: arduino-dock



  • @alzeih Thanks for your various notes - they are helpful



  • Hi @Kit-Bishop, thanks for the suggestions. we are working on a way for you guys to generate an Omega specific image easier and faster. Please stay tuned for that.

    In terms of the difference between <*> and <M>, <*> marks the package to be included in the final .bin file where as <M> merely compiles the .ipk file for the package. (Selecting <*> will also compile the .ipk file. So if you want to compile a package that you plan on uninstalling, you should set it to <M>. When the package is built into the image, it cannot be truly uninstalled. The file deletion only happens in the /overlay partition, but in reality, it still takes up space on the /rom partition. Whereas if it is installed as an .ipk, it can be fully removed.

    I hope this answers your question.

    Cheers!



  • @Boken-Lin Thanks - that information clarifies things. Thanks šŸ™‚
    Look forward to future developments in relation to generating Omega specific images - it would be a good thing - mainly to make life simpler.
    however, i am now successfully building packages for the Omega which I can install using opkg so am currently happy with what we have šŸ™‚


Log in to reply
 

Looks like your connection to Community was lost, please wait while we try to reconnect.