If you can't find a full ROM image for your device, consider extracting the boot.img file directly from your device with adb. 1. Find the download link for a full image on https://download.lineageos.org/ 2. Run the following commands (replace the download link accordingly)
pmbootstrap build unpackbootimg
pmbootstrap chroot
apk add unpackbootimg
su - user
mkdir /tmp/bootimg_info
cd /tmp/bootimg_info
wget "https://mirrorbits.lineageos.org/full/hammerhead/20170530/lineage-14.1-20170530-nightly-hammerhead-signed.zip"
unzip *.zip
unpackbootimg -i boot.img
Android magic found at: 0
BOARD_KERNEL_CMDLINE console=ttyHSL0,115200,n8 androidboot.hardware=hammerhead
user_debug=31 maxcpus=2 msm_watchdog_v2.enable=1
androidboot.bootdevice=msm_sdcc.1 buildvariant=userdebug
BOARD_KERNEL_BASE 00008000
BOARD_RAMDISK_OFFSET 02900000
BOARD_SECOND_OFFSET 00f00000
BOARD_TAGS_OFFSET 02700000
BOARD_PAGE_SIZE 2048
BOARD_SECOND_SIZE 0
BOARD_DT_SIZE 0
Translate the variables as follows into your deviceinfo:
BOARD_KERNEL_BASE
-> deviceinfo_flash_offset_kernel
BOARD_RAMDISK_OFFSET
-> deviceinfo_flash_offset_ramdisk
BOARD_SECOND_OFFSET
-> deviceinfo_flash_offset_second
BOARD_TAGS_OFFSET
-> deviceinfo_flash_offset_tags
BOARD_PAGE_SIZE
-> deviceinfo_flash_pagesize
BOARD_SECOND_SIZE
-> deviceinfo_flash_offset_second
* (contents of the extracted boot.img-base
file) -> deviceinfo_flash_offset_base
(defaults to 0x10000000
)
NOTE: Some useful info can be pulled via fastboot too (in case you have the device at hand) by executing fastboot getvar all
adb shell
to gain access to the console on the device, and type uname -m
.armhf
and aarch64
architectures. If the output is armv7l
, for example, you should use armhf
as your device architecture.android_device_
, open that repository and look into the lineage.dependencies
file. It lists other LineageOS repositories there - open these repositories, until you finally find the repository with "kernel" in the name. Example: First, Second, Third: Kernel repo!DEFCONFIG=
line inside the build.config
inside the kernel repository (if available) (example)android_device_
repository (as shown in LineageOS kernel source repository above), look for a TARGET_KERNEL_CONFIG
line in the BoardConfig.mk.In the case where you have located the kernel source for your device but there is no build.config
, have a look at the arch/arm/configs/
directory. E.g. for Moto G 2014 "titan" that uses android_kernel_motorola_msm8226 you have a titan_defconfig file there.
Example, contains the following information: kernel commandline ramdisk offset, tags offset, pagesize, base * boot partition size
Find the LineageOS repository for your device by using the repository filter function here and typing in your device's code name. You need the repository starting with android_device_
. Inside that repository, there should be a proprietary_components.txt
or proprietary-files.txt
, which has among lots of files, that we do not need, the paths to the firmware files - starting with /vendor/firmware
. Combined with some additional research, you should be able to find the files needed for the hardware, that you want to get running (e.g. wifi). Now you have the names of the firmware files. First look if they are provided by linux-firmware
, and if not, find them elsewhere and package them yourself (as in samsung-i9070).
See also: Wifi