Build&Integration systems
Yocto
- Yocto project
- OpenEmbedded layers index
- Improving Your Embedded Linux Security Posture with Yocto
- Building Raspberry Pi Systems with Yocto
- Creating Linux based Embedded System Images with Yocto
- Integrating Yocto and OpenEmbedded
- Yocto Project Quick Start
- Building Our First Poky Image for the Raspberry Pi
- KAS
OpenWRT
OpenWrt is described as a Linux distribution for embedded devices.
$ git clone git://github.com/openwrt/openwrt.git && cd openwrt
$ make menuconfig
[choose Target System (like Broadcom BCM63xx or Malta if you want Qemu) and then Target Profile (like Netgear DG834G v4)]
$ make -j 8
Some of the targets available are
cleandircleandistcleandefconfigmenuconfig
If you want to test it into Qemu you can launch it with the following oneliner (for more info look at the wiki)
$ qemu-system-mipsel -kernel bin/malta/openwrt-malta-le-vmlinux-initramfs.elf -nographic -m 256
[ 0.000000] Linux version 3.18.45 (packz@durruti) (gcc version 4.8.3 (OpenWrt/Linaro GCC 4.8-2014.04 r49389) ) #2 SMP Sun May 14 20:02:35 CEST 2017
[ 0.000000] Early serial console at I/O port 0x3f8 (options '38400n8')
[ 0.000000] bootconsole [uart0] enabled
...
Press the [f] key and hit [enter] to enter failsafe mode
Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level
[ 5.000000] procd: - early -
[ 6.110000] procd: - ubus -
[ 7.160000] procd: - init -
Please press Enter to activate this console.
BusyBox v1.23.2 (2017-05-14 19:59:13 CEST) built-in shell (ash)
_______ ________ __
| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -__| || | | || _|| _|
|_______|| __|_____|__|__||________||__| |____|
|__| W I R E L E S S F R E E D O M
-----------------------------------------------------
CHAOS CALMER (Chaos Calmer, r49389)
-----------------------------------------------------
* 1 1/2 oz Gin Shake with a glassful
* 1/4 oz Triple Sec of broken ice and pour
* 3/4 oz Lime Juice unstrained into a goblet.
* 1 1/2 oz Orange Juice
* 1 tsp. Grenadine Syrup
-----------------------------------------------------
root@(none):/#
Multistrap
In order to generate a rootfs for testing on QEMU of architecture on your desktop you can use multistrap
$ sudo multistrap -a mips -d /tmp/RFS -f mips-multistrap.conf
$ sudo mount -o bind /dev/ /tmp/RFS/dev/
$ sudo cp /usr/bin/qemu-mips-static /tmp/RFS/usr/bin/
$ sudo LC_ALL=C LANGUAGE=C LANG=C chroot /tmp/RFS/ dpkg --configure -a
After that mith binfmt-support is possible to use a chroot directly
$ uname -a
Linux 4.9.0-3-amd64 #1 SMP Debian 4.9.30-2 (2017-06-12) x86_64 GNU/Linux
$ sudo chroot /tmp/RFS/ /bin/bash
/# uname -a
Linux 4.9.0-3-amd64 #1 SMP Debian 4.9.30-2 (2017-06-12) mips GNU/Linux
Mips in Debian
Some hints from this answer
# apt-get install emdebian-archive-keyring
# tee /etc/apt/sources.list.d/emdebian.list << EOF
deb http://mirrors.mit.edu/debian squeeze main
deb http://www.emdebian.org/debian squeeze main
EOF
# apt-get update
# apt-get install libc6-mipsel-cross
# apt-get install gcc-mipsel-linux-gnu