QCDT

Some Androids only accept boot.img files in the QCDT format, which means the dtb is appended to the end of it (and not at the end of the kernel, as with most other Android devices).

Does my device need a QCDT boot.img file?
Analyze a known working boot.img file with pmbootstrap to find out, if it has the QCDT format or not. You can get such a file from downloading a TWRP image (it is directly in the boot.img format!) or by downloading a full Android ROM for your device and extracting the boot.img file.

If this prints, then you have a QCDT device.

Properly package a QCDT device
The easiest way is using  to generate a new device, and let it analyze the boot.img file in the process. It will adjust the device and linux package as necessary. But if you want to do it manually:
 * Set  in the deviceinfo
 * Adjust your  APKBUILD to generate and package the   (look at other QCDT devices to see how it's done, grep for qcdt in aports)

Qualcomm

 * Add  to makedepends of linux-* package
 * Add  in build

Spreadtrum

 * Add  to makedepends of linux-* package
 * Add  in build

Exynos
dtbTool-exynos --pagesize 2048 \ --platform 0x50a6 \ --subtype 0x217584da \ -o "$_outdir/arch/$_carch/boot/dt.img" \ "$_outdir/arch/$_carch/boot/dts/exynos8890-herolte_eur_open_04.dtb" \ # list of device tree binaries "$_outdir/arch/$_carch/boot/dts/exynos8890-herolte_eur_open_08.dtb" \ # adjust filenames to ones related to your device "$_outdir/arch/$_carch/boot/dts/exynos8890-herolte_eur_open_09.dtb" in build
 * Add  to makedepends of linux-* package
 * Add

Debugging

 * Hook up the serial UART and see what kind of debug output the bootloader provides
 * Repack the boot image with a working  from another distribution (stock, Lineage, recovery, etc.)

Repack procedure
You need  and   tools which are already packaged in pmbootstrap.

You can also get these from https://github.com/efidroid/build/tree/master/tools

is packaged for postmarketOS as well, which allows to repackage the boot.img files without extracting them.