What is meta-debian?

meta-debian is a set of recipes (metadata) for the poky build system, which allows cross-building GNU/Linux images using Debian source packages. By enabling meta-debian, you can cross-build a small GNU/Linux image with Debian sources for multiple architectures.

The main purpose of meta-debian is to provide reference Linux distribution for embedded systems satisfying the following needs.

  • Long-term support
  • Stability
  • Wide embedded CPU support
  • Customizability

Currently, the following software versions are supported in meta-debian.

  • Source code: Debian GNU/Linux 10 (buster)
  • Build system: Yocto Project (warrior)

Quick Start

meta-debian can be built in a docker container or on a Linux machine (native build).

Setup build environment

Clone meta-debian:

$ git clone -b warrior https://github.com/meta-debian/meta-debian.git
  • For docker build:

    $ cd meta-debian
    $ make -C docker
    
  • For native build:

    • Install essential packages poky requires into your host system according to https://www.yoctoproject.org/docs/2.7/ref-manual/ref-manual.html#required-packages-for-the-build-host

      $ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \
      build-essential chrpath socat cpio python python3 python3-pip python3-pexpect \
      xz-utils debianutils iputils-ping
      

      NOTE: The following three packages have version limitation

      • git: 1.8.3.1 or greater
      • tar: 1.27 or greater
      • python: 3.4.0 or greater
    • Setup repositories

      $ git clone -b warrior git://git.yoctoproject.org/poky.git
      $ mv meta-debian poky/
      

Build

export TEMPLATECONF=meta-debian/conf
source ./poky/oe-init-build-env

You can change the target machine by setting MACHINE variable in conf/local.conf to one of the following machines.

  • qemux86 (default)
  • qemux86-64
  • qemuarm
  • qemuarm64
  • qemuppc
  • qemumips

For example, the target machine is set to QEMU ARM by adding the following difinition to conf/local.conf.

MACHINE = "qemuarm"

Now, the build system is ready. Build Linux kernel and the minimal rootfs by the following command. It takes a while to complete (more than 30 minutes).

bitbake core-image-minimal

Run the built Linux on QEMU

Please replace ${MACHINE} by the target machine you selected in the above step.

NOTE: Confirm that the tun module, which runqemu depends on, is correctly loaded in your system.

runqemu ${MACHINE} nographic

After boot, you can login as root without password.