[Automated-testing] [RFC] Linux Lab: lightweight board farm for daily kernel development and testing

Wu Zhangjin wuzhangjin at gmail.com
Sat Dec 9 10:26:56 PST 2017


+Steven

Recorded session of automated kernel feature testing with Linux Lab, for
example:

1.  Ftrace

  $ make test FEATURE=ftrace LINUX=v2.6.36 BOARD=malta TEST=prepare

  http://showterm.io/346ea62996736d1716458

2.  KFT (old Kernel Function Tracing)

  $ make test FEATURE=kft LINUX=v2.6.36 BOARD=malta TEST=prepare

  http://showterm.io/50d1a5f2c7dd27877d3d1

Thanks & BR,
Falcon


On Wed, Dec 6, 2017 at 5:22 AM, Wu Zhangjin <wuzhangjin at gmail.com> wrote:

> 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/20171209/739c0333/attachment-0001.html>


More information about the automated-testing mailing list