FAI for ARM image building
lange at informatik.uni-koeln.de
Tue Oct 10 13:48:24 CEST 2017
>>>>> On Tue, 10 Oct 2017 10:09:24 +0300, Riku Voipio <riku.voipio at linaro.org> said:
> I've been exploring fai-diskimage for building fastbootable
> filesystems and disk images for 96boards form factor devices.
great to see that you looked at fai-diskimage.
I never heared the term "fastbootable". Is this something special?
> outdated. FAI appears a good fit so far. Our current configs are at:
I've already clone this repo and will have a closer look at it later.
> we can now make images but there are some bumps.
> - fai-diskimage doesn't error out on failures. In our case, it is
> imperative that the image build fails if packages are missing or
> scripts fail.
I guess this is #866331 "fai-server: fai-diskimage exits with 0 even when a script does not"
which is fixed in FAI 5.4. In FAI we have internal error codes which
are stored in the variable $task_error. There's also the variable
$STOP_ON_ERROR which is default to 700. That means if $task_error is
below $STOP_ON_ERROR the fai process will not stop. But the new
version will exit with 1 if some error occurs.
> - No apparent access from scripts or hooks to the output file
> location. This would be useful for extracting artifacts (kernel etc)
> from the disk image to the same directory where disk image is going.
In FAI 5.4 we use this in scripts/LAST/50-misc:
# for ARM architecture, we may need the kernel and initrd to boot or flash the device
if ifclass ARM64; then
cp -pv $target/boot/vmlinuz* $target/boot/initrd* $LOGDIR
Then you have the kernel and initrd inside the log directory. I hope
this helps. Or do you need a better way to acces it?
> - lack of tasks to hook into after the filesystems have been
> unmounted. faiend task seems to run before it. The key use here is to
> run img2simg or ext2simg to convert the rootfs image into fastbootable
> android sparse image. We can make a wrapper script for it of course.
I'm not sure if you like to do this inside fai (the config space), or inside
fai-diskimage. But you can also execute a hook after a task. From the FAI
FAQ inside the wiki (which is down atm.)
Can I write a hook that is executed after a certain task?
(freely) quoting #fai:
<sanso> is there a way to define post-hooks other than defining a (pre-)hook for the following task?
<Mrfai> sanso: yes post hooks are possible. Define a pre hook, and inside this hook, you
first call the default task using task_taskname, then add your code for the post hook.
And don't forget to call skiptask.
So write a hook/faiend.CLASSNAME:
<you code here>
> - The rather manual steps of copying files/. Having to DYI template
> expansion and explicitly fcopy every single file is really annoying.
> Right now users are tempted to just use herefile from the scripts
Holger already mentioned fcopy -r and a template system is on the
roadmap since a long time and also reported as #874188
"fai-client: Integrate some form of file templating system"
I would be happy if you could join the discussion which type of
functionality is needed.
> We haven't used the new cross-arch support in FAI 5.4 yet. I think it
> has potential to be really useful for our endusers
That was my intention and I hope to get my own Hikey960 installed via
FAI soon ;-)
More information about the linux-fai