[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