Debian based E.mbedded L.inux B.uild E.nvironment (ELBE) uses an XML based configuration file to create a root file system. This configuration file covers various root file system related aspects like package and repository management, binary image creation (both SD card and MTD based devices are supported) and file system finetuning (create, delete or rename files, folders etc.).
For further information visit project's home page: https://elbe-rfs.org/
You'll need a Debian Buster host in order to use ELBE. Perform the following steps:
mkdir /home/user/debian
cd /home/user/debian
apt install python3 python3-debian python3-mako python3-lxml python3-apt python3-gpg python3-suds python3-libvirt qemu-utils qemu-kvm p7zip-full make
git clone https://github.com/visionsystemsgmbh/vscom-elbe.git
git clone https://github.com/Linutronix/elbe.git
cd elbe
git checkout v13.3
Before you can use ELBE as a regular user, you need to add this user to the kvm/libvrt groups:
adduser <youruser> kvm
adduser <youruser> libvirt
First of all, you'll need to create a public key for repository signing. Invoke the following command and use default settings.
gpg --gen-key
In our example, we assume that the e-mail is configured as "user@example.com".
Download and install freight
from https://github.com/freight-team/freight:
git clone https://github.com/freight-team/freight.git
cd freight
make && make install
Create the following folders:
/home/user/debian/freight/lib
/home/user/debian/freight/cache
Create a file ~/.freight.conf
with the following content:
GPG="user@example.com"
VARLIB=/home/user/debian/freight/lib
VARCACHE=/home/user/debian/freight/cache
ARCHS=armhf
Create folder debs-bin
near elbe
and download all files from:
https://www.vscom.de/download/multiio/OnRISC/Baltos/deb/bullseye/
Now you're ready to create a Debian repository structure using freight
:
cd /home/user/debian/debs-bin
freight add * apt/bullseye
freight cache
freight
will ask you the same password you gave during the public key
creation. To make this repository available over network perform:
cd /home/user/debian/freight/cache
python3 -m http.server 8888
This will start a HTTP server listening on port 8888.
vscom-elbe
holds various image configurations under configs
. You'll need to
edit configs/armhf-vscom-baltos-minimal.xml
and provide the IP address of
the host running the package repository you've already created. Just replace
localhost
with the proper IP address.
<url-list>
<url>
<binary>http://localhost:8888 bullseye main</binary>
<source>http://localhost:8888 bullseye main</source>
<key>http://localhost:8888/user@pubkey.gpg</key>
</url>
</url-list>
To create a minimal Debian image, perform:
cd /home/user/debian/elbe
./elbe initvm --devel create --directory=initvm
./elbe initvm --skip-build-bin submit --directory=initvm ../vscom-elbe/configs/armhf-vscom-baltos-minimal.xml
Your SD card image together with build logs can be found under
elbe-build-timestamp
. Extract sdcard.img
from sdcard.img.gz
and burn
it to your card (you do not need to extract the image if you use
https://www.balena.io/etcher tool).
System overlay files are stored in the armhf-vscom-baltos-minimal.xml
file as
a tar.bz2
archive. https://elbe-rfs.org/docs/sphinx/article-quickstart.html#advanced-usage
describes how to access and modify these files.
Please refer to https://elbe-rfs.org/docs/sphinx/article-elbeoverview-en.html for more details about XML configuration files and the whole building process.
freight
man page: http://freight-team.github.io/freight/freight.5.html