Factory FAQ

Click on any question below to view the response.

Factory Build System

Web Factory

Desktop Factory

Embedded Linux related Factory Questions


   FAQ – Factory Build System

How does Factory build system environment differ from a free open source build system environment?

Timesys Factory Build system environment enables embedded development by providing a starting point with ready-to-use components and a reference distribution for your target processor. Factory eliminates the upfront searching, gathering, building and testing that is required to get open source Linux from the community running on your board, saving weeks or months of development effort. Factory Build system environment also provides the binaries and source for the components, patches and a cross-development environment, making it easy to rebuild a distribution to customize it for your target platform. Factory gives you control over your custom design by giving you the freedom to choose and incorporate the latest feature sets and semiconductor-developed optimizations into your target platform.

The Timesys support model gives you direct access to our embedded Linux experts and eliminates the waiting and bottlenecks of traditional support models at a fraction of the price of other commercial Linux distributions.

Are full sources provided for Linux code obtained from Factory Repository?

Yes. Support subscribers are provided with access to full sources for any non-proprietary binary Linux code obtained through Factory Repository — including the kernel, toolchain and packages.

Where does Timesys obtain the Linux code that is available with Factory Repository?

Timesys obtains Linux components and content from a variety of sources within the Linux community, including kernel.org, mailing lists, embedded partners and hundreds of open source projects. Timesys selects its sources based on 20+ years of experience in developing robust embedded Linux platforms.


   FAQ – Web Factory

Web Factory has build sharing features intended to support collaboration among team members in a manner conceptually similar to how one might use git. The two primary operations are:

  • fork
  • share

Let's walk through an example. To keep it simple we have a small team with 2 members:

  • Developer
  • Manager
(Manager here means LinuxLink team account manager as described in Account and Member Administration.)

In this example there are 4 builds. Each (after the first) is accomplished by forking an existing build, making some changes, and then building the changed workorder.

# Name User Shared?
1 Initial Raspberry Pi Build Developer Shared
2 Initial Raspberry Pi Build 002 Developer Shared
3 Raspberry Pi 003 - Manager Manager Shared
4 Raspberry Pi 003 - Dev 004 Developer  

Four groups of actions are taken — a scenario, if you will:

    • Developer builds (1) "Initial Raspberry Pi Build".
    • Developer shares build, but project is tabled for several months.
    • Developer forks build (1), and builds (2) "Initial Raspberry Pi Build 002", adding mono.
    • Developer shares build.
    • Manager forks build (2), and builds (3) "Raspberry Pi 003 - Manager", dropping mono.
    • Manager shares build.
    • Developer forks build (3), and builds (4) "Raspberry Pi 003 - Dev 004", accepting recommended updates.
    • Developer hasn't (yet) shared build (4).
As a result, this is the visibility of the builds from the perspective of each team member:
  • Manager can see builds (1) - (3), but not (4).
  • Developer can see builds (1) - (4).


What can I do with a workorder ported from a Web Factory 3.0 to Web Factory 5.0?

In the course of decommissioning Factory 3.0, the most workorder from users having done a Web Factory Build 3.0 between 2016 and 2017 were ported to Web Factory 5.0 for reference.

This FAQ will focus on builds done using the LinuxLink Web Factory as opposed to a Desktop Factory (available to paid support users).

Common to these is the idea that there are two broad types of components which can be updated independently:

  • Factory build engine
  • Packages

In the case of Web Factory 3.0 workorders ported to Web Factory 5.0 in April 2017, the package versions were not changed, but the build engine was updated to factory-20170419 in the process. This was done using the olddefconfig target under Desktop factory which updates the workorder to be compatible with that version of the build engine.

The intention of this porting was to make the Web Factory workorder available for reference under Web Factory 5.0. There will likely be recommended package updates, and there is a good chance that building an old ported workorder will fail if they are not accepted. Our experience has often been that accepting the package updates will result in a successful build.

Our Support Team can help with any questions on this process, however — if you can not accept updated packages, our Professional Services Team is experienced in resolving such issues.


   FAQ – Desktop Factory

In Desktop Factory, I'm seeing the error message "./bin/mkinc.sh: line 34: .inc.mk: Permission denied" when I run "make checksystem". I think I've caused this by accidentally running Desktop Factory as a "root" user. Is there a way I can recover from this?

As a regular (i.e., non-root) user, run "sudo chown -R $UID: ." This should reset all the files to the proper level of ownership.

May I share a customized Factory with someone outside my organization?

We differentiate between a license and a subscription. The capability of Factory is very limited without an active subscription. The code itself is open source and carries that license. So essentially what we sell is a subscription which covers support - where we add value to the Factory code. Factory without a current subscription will be very limited in terms of new features but fully capable of rebuilding the existing images.


   FAQ – Embedded Linux related Factory Questions

Can you help me get my embedded Linux build to consume less RAM / flash?

Absolutely. Here’s how:

  • Every Factory supported board includes a small footprint starting point
  • Timesys Factory is designed to 'build up' from scratch so your distribution only has what you need
  • We offer many smaller "embedded" packages in the repository (e.g., dropbear SSH server, thttp web server)
  • We provide toolchain support for smaller uClibc library
  • Factory Development Environment includes code, help, tips, advice, and guidance for customers who wish to configure a smaller footprint

Does the Timesys Factory toolchain for ARM Cortex-A series processors support the NEON instruction set?

Yes. The NEON general-purpose SIMD engine (http://www.arm.com/products/processors/technologies/neon.php) in processors based on Cortex-A series cores (e.g., Freescale i.MX 5 / i.MX6, TI OMAP35x / DM37x DaVinci) can greatly accelerate multimedia and signal processing algorithms such as video encoding/decoding, 2D/3D graphics, gaming, audio and speech processing, image processing, telephony, and sound synthesis.

To take full advantage of this acceleration, be sure to use the appropriate flags with the Timesys armv7 toolchain. One Timesys customer saw a 10x improvement on their FFT benchmarks when using the following options: armv7l-timesys-linux-gnueabi CFLAGS_VFP= -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -ftree-vectorize -mfloat-abi=softfp

What causes "error while loading shared libraries: libncurses.so.6" when running GDB?

On starting GDB, even trivially, I see

$ ~/timesys/timesys/toolchain/bin/x86_64-timesys-linux-gnu-gdb --version
/home/shobin/timesys/timesys/toolchain/bin/x86_64-timesys-linux-gnu-gdb: error while loading shared libraries: libncurses.so.6: cannot open shared object file: No such file or directory

If a host running a newer Linux distribution (eg Ubuntu 16.04) built a toolchain, and a host running an older version (Ubuntu 14.04) tried to use cross-GDB in this toolchain, the above error would occur. This is because the newer host has libncurses6 installed, but the older host has libncurses5 installed. So, cross-gdb was linked against libncurses6, which does not exist in the older host. Workaround is to create a soft link to libncurses6 from libncurses5 on the old host — cross-gdb does not use any of the newer ncurses API, so there are no issues in that regard.

Does Timesys Factory support any SQL database servers for embedded usage?

Yes. The Timesys Factory repository actually contains four different SQL database servers that can be built for and run on the many embedded processors that we support. These range from the relatively full-featured and large (~50MB) but wildly popular MySQL (the "M" of LAMP server fame), through PostgreSQL (~17MB), SQLite (~2MB), and the newer SQLite version 3 (~1MB).

Where can I find patches that address the ShellShock Linux Bash security hole, and how do I apply them?

Links to the patches can be found at https://linuxlink.timesys.com/shellshock_notice. In addition, our Monday, 10/6/2014 Factory release included all patches.

For best practices on adding the patch locally, refer to: https://linuxlink.timesys.com/docs/wiki/factory/FactoryBestPractices#Adding-a-custom-patch-to-LOCAL_PATCHES.