Running and Debugging
This page complements the main page about Configuring and Building with information on how to run and possibly debug the Codezero based system on specific devices.
The supported devices with the current release are Google Galaxy Nexus (i9250), Panda board, and Versatile Express/Qemu. Galaxy Nexus is supported only in GSM/HSPA+ configuration
maguro and only if it was originally sold with a yakju or takju Android releases.
The simplest way to try the Codezero is to build
vx-single-initramfs meta-config (see Introduction to the Build System page).
To launch it in the first terminal execute:
and in another one start:
The later one will start a GNU Debugger connected to virtual Versatile Express board emulated by Qemu. The system will break before execution. To start it type
continue and press ENTER.
In the firts terminal you will see a text serial console output from the virtual board, and in the Qemu graphical window you will get a frame buffer output.
Trying the demos
It’s generally a good idea to try the Prebuilt Demonstrations first to get a grasp of how all the components fit together when running system using Codezero hypervisor. It can also rule-out any compatibility or hardware problems.
Preparing the filesystem
Keep in mind that the result of Codezero building process is only hypervisor and guest kernel binaries, bundled together. While hypervisor is self-contained, the guest OSes usually require some userspace to function and do anything useful.
Because of the above it’s necessary to prepare the execution environment for each particular configuration. Depending on the guests OS, hardware platform and hardware resource partitioning some adjustments may be required for the software to run correctly and smoothly. I.e. on Galaxy Nexus only one Android/Linux guest can have an access to camera. This adjustments, however, are out of scope of this instruction and require a lot of knowledge and work.
There is a Building Android (AOSP) page containing some information on how to prepare the Android filesystem to be used with Codezero-based setups.
Running on Versatile Express
vx-single-linux meta-config is not the only config that you can use on Versatile Express platform. Check the
codezero-meta/config for other configs beginning with
vx- prefix, which is a convention to mark Versatile Express board targeting configurations.
After loading, the general building and running procedure is exactly the same as for
vx-single-initramfs. However there are some internal differences.
Other Versatile Express targeting meta-configs will require a prepared filesystem image to be used as virtal SD card. The exact qemu argument that will be passed is stored in
current/qemu.conf file, along with other configuration options for launching Qemu emulator, like memory size, cpu type, etc. You can modify this arguments to use an image of your liking.
To automate preparation of Linaro based filesystem, a tool has been prepared:
./tools/download-fs.sh. Run it without any command for an instruction how to use it.
Running on Panda or Galaxy Nexus
Running on real devices like Panda or Galaxy Nexus is generally harder, due to complexity of handling these boards.
The whole procedure for building the kernel images does not differ from the Versatile Express procedure:
- load the appropriate meta-config with
- making sure that the
codezero-meta/linuxhas a compatibile branch checked-out
- optional configure with
Some of the example meta-configs are:
single-panda-icscorresponds to Single Panda ICS demonstration.
dual-panda-ics-nfscorresponds to Dual Panda ICS demonstration.
single-tuna-ics– corresponds to Single Tuna ICS demonstration.
dual-tuna-ics-nfscorresponds to Dual Tuna ICS demonstration.
As flashing requires steps that require precision, the safest way is to follow the instructions on:
- Single Android for Nexus prebuilt demo for Galaxy Nexus
- Single Android 4.0 Panda prebuild demo for Panda
while replacing the existing
Image binary with the one created by building the Codezero source.
It’s also higly recommened to read the Android Building page for a better understanding of Android AOSP system.