qemu-system-aarch64 -M virt -cpu cortex-a57 -kernel tmp/linux-arm64/arch/arm64/boot/Image -nographic -m 2G -serial mon:stdio -append "console=ttyAMA0,115200 root=/dev/vda3" -drive file=cd.img,if=virtio,format=raw
$TARGET
is target device, krane, kevin or other$ROOTFS
represents target linux rootfs, Cadmium is made to be independent of rootfs$CADMIUMROOT
is root directory of Cadmium containing board/, kernel/, fs/, tmp/ etc. directories
/dev/mmcblk?
: On Duet, Linux kernel randomly switches eMMC device between mmcblk0 and mmcblk1, therefore a wildcard has to be used- eMMC installation script has been split in 3 parts:
install-to-emmc-begin
, which sets up partitioning, firmware and kernelinstall-to-emmc-middle
, which installs rootfs. this should be as small as possibleinstall-to-emmc-end
, which sets up rootfs in order to make it easier to use(user accounts and cadmium-specific configs)kernel/build
has krane-specific kernel source :(
board/$TARGET/
is for stuff specific to one device, usually: config files, dts configuration, kernel patches and firmwarefs/
is for building rootfs that can be used on target devicefs/$ROOTFS
is for parts that are rootfs-specifickernel/
contains only kernel-specific files, including scripts to test whether built kernel works or notbootfw/
has scripts to set up kernel and partition layout
- MMSYS sits between everything related to multimedia
BASEBOARD
is "reference" board for family of chromebooks or common ancestorBOARD
is the target board, for example:kevin
,krane
TYPE
is type of device,laptop
,tablet
,convertible-laptop
is laptop with 360° hinge,convertible-tablet
is tablet with keyboard attachment orhandheld
ARCH
uses kernel's naming,arm
,arm64
etc.ARCH_UNAME
is what appears in uname -m,armv7l
,aarch64
etc.ARCH_DEB
is whatever debian calls the architecture of device,armhf
,arm64
- YES ALL THIS ARCH STUFF IS A GIANT MESS
CROSS_COMPILE
is self-explanatorySOC
- self explanatoryBOOTFW
is boot firmware of device, chromebooks usedepthcharge