[Automated-testing] [RFC] Linux Lab: lightweight board farm for daily kernel development and testing
Wu Zhangjin
wuzhangjin at gmail.com
Tue Dec 5 21:22:02 PST 2017
Hi all,
I'm pleasure to share my latest open source work, it is "Linux Lab" (
https://github.com/tinyclub/linux-lab): a docker and qemu based "board
farm" for instant Linux kernel development and testing.
It has following features:
1. Docker based, available for Linux, Windows and MacOSX, with Docker CE or
Docker Toolbox
2. Docker image, with pre-installed (cross) compilers, debuggers, emulators
(qemu-system-xxx) for 4 main architectures (X86, PowerPC, MIPS and ARM)
3. Qemu based, hundreds of virtual boards available
4. Qemu boot script abstracted, with options configurable via command line
or config file
5. Instant boot, with prebuilt images, including kernel/dtb/uboot/qemu and
minimal rootfs
6. Actions abstracted, such as download, checkout, patch, defconfig,
menuconfig, build, save, boot, debug and test
7. Highly Reproducible, with pre-install toolchains, prebuilt images and
tested configurations
8. Highly Scalable, 6 virtual boards have been added for 4 main
architectures, new boards can be added as builtin boards or standalone git
submodules
9. already Supported packages, kernel (linux-stable), root (buildroot),
uboot and emulator(qemu)
10. noVNC and Gateone integrated, available from anywhere if network
reachable from local or remote
Let's introduce some basic usage:
* Take a look at the default board (vexpress-a9)
$ make
[ vexpress-a9 ]:
ARCH = arm
XARCH = $(ARCH)
CPU ?= cortex-a9
MEM ?= 128M
UBOOT ?= v2015.07
LINUX ?= v4.6.7
BUILDROOT?= 2016.05
...
BOOTDEV ?= flash
PFLASH_SIZE ?= 64
PFLASH_BS ?= 512
NETDEV ?= lan9118
SERIAL ?= ttyAMA0
ROOTDEV ?= /dev/ram0
FSTYPE ?= ext2
...
* Fast boot the default board with prebuilt images
$ make boot
...
Welcome to Linux Lab
linux-lab login: root
# uname -r
4.6.7+
# uname -a
Linux linux-lab 4.6.7+ #1 SMP Sun Dec 3 18:47:31 UTC 2017 armv7l
GNU/Linux
* List all boards
$ make list
[ g3beige ]:
ARCH = powerpc
CPU ?= generic
LINUX ?= v4.6.7
ROOTDEV ?= /dev/ram0
[ malta ]:
ARCH = mips
CPU ?= mips32r2
LINUX ?= v2.6.36
ROOTDEV ?= /dev/ram0
[ pc ]:
ARCH = x86
CPU ?= i686
LINUX ?= v4.6.7
ROOTDEV ?= /dev/ram0
[ versatilepb ]:
ARCH = arm
CPU ?= arm926t
LINUX ?= v4.6.7
ROOTDEV ?= /dev/ram0
[ vexpress-a9 ]:
ARCH = arm
CPU ?= cortex-a9
LINUX ?= v4.6.7
ROOTDEV ?= /dev/ram0
[ virt ]:
ARCH = arm64
CPU ?= cortex-a57
LINUX ?= v4.5.5
ROOTDE ?= /dev/ram0
* Choose a board and boot, e.g. malta
$ make BOARD=malta
$ make boot
* Boot with nfsroot
$ make boot ROOTDEV=/dev/nfs
* Boot with/without Uboot (only for versatilepb and vexpress-a9 currently)
By default, it is enabled if uboot supported in boards Makefile:
boards/<BOARD>/Makefile.
$ make boot U=0
* Boot uboot with tftp, flash, or sdcard
$ make boot BOOTDEV=tftp
* Boot with graphic
By default, no graphic:
$ make BOARD=pc
$ make boot G=1
* Test kernel, include download, checkout, patch, defconfig, menuconfig and
build
$ make test TEST=kernel-full
It equals:
$ make kernel-download
$ make kernel-checkout
$ make kernel-patch
$ make kernel-defconfig
$ make kernel-build
$ make boot
* Test kernel and root
root is supported by buildroot, it also support the above actions.
$ make test TEST=kernel-full,root-full
* Test a kernel feature in a specified kernel version on a specified board
$ make test FEATURE=kft LINUX=v2.6.36 BOARD=malta TEST=prepare
* Test kernel modules
$ make test modules=ldt
* Debug kernel (start qemu with gdbstub and running gdb with default
.gdbinit)
$ make debug
More usage please refer to the README.md of this project:
https://github.com/tinyclub/linux-lab/blob/master/README.md
Let's take a look at the demonstration:
* Showterm demonstration
http://showterm.io/6fb264246580281d372c6
* Showdesk demonstration
http://showdesk.io/7977891c1d24e38dffbea1b8550ffbb8/?f=1
* Try it online (only one account, update in 30 minutes)
http://tinylab.cloud:6080/labs/
This project is still in development stage, it is not yet for product level.
Enjoy and Welcome your feedback.
Thanks & BR,
Falcon
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/automated-testing/attachments/20171206/44c41c9f/attachment.html>
More information about the automated-testing
mailing list