Re: [RFC] Linux Lab: lightweight board farm for daily kernel development and testing
From: cee1
Date: Fri Dec 08 2017 - 08:08:21 EST
Hi Zhangjin,
Cool~
With Docker all necessary bits are encapsulated in images, which saves
lots of time of setting up a development environment.
The online "web console", http://tinylab.cloud:6080/labs/, makes it
further more convenient.
2017-12-08 20:29 GMT+08:00 Wu Zhangjin <wuzhangjin@xxxxxxxxx>:
>
> 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
>
--
Regards,
- cee1