Here is a method to enable ‘adbd’ service on early boot without enabling them in Settings. It’s great if device is booting for first time and it’s stuck somewhere. You could immediately track the problem that way. The user ‘sigprof’ taught me this -

abootimg -x boot.img
mkdir -p initrd && zcat initrd.img | ( cd initrd && cpio -idm --no-absolute-filenames; )
mkdir -p ramdisk && cat initrd/sbin/ramdisk.cpio | ( cd ramdisk && cpio -idm --no-absolute-filenames; )
sed -e 's/^\(ro\.adb\.secure\)=.*$/\1=0/' -e 's/^\(persist\.sys\.usb\.config\)=.*$/\1=mtp,adb/' -i ramdisk/default.prop
( cd ramdisk && find -mindepth 1 -print0 | cpio -o0 -H newc -R 0:0 ) > initrd/sbin/ramdisk.cpio
( cd initrd && find -mindepth 1 -print0 | cpio -o0 -H newc -R 0:0 ) | gzip -9 > initrd-new.img
abootimg --create boot-new.img -f bootimg.cfg -k zImage -r initrd-new.img

On cm-14.1, I found that that initrd now generates ramdisk-recovery.cpio instead of ramdisk.cpio… So just simply replacing ramdisk by ‘ramdisk-recovery’ should work. Happy debugging!