Finally MiCode has released marshmallow based patchrom.
Here's the git address And yeah!!!! they added much waited marshmallow branch.
And with patchrom now it can be easily ported to our beloved surnia. and ofcourse otus too .
I'm trying to port it.and its 99% done.I'm just stuck with some rejects.(5 in particular).
And I'm hoping to see MIUI within a week for our moto e.
Truth to be told I'm a noob in this field but I'm trying my best.It will be really helpful and encouraging if someone /devs invest some interest in this eye candy rom
I'm using this guides for patchrom based porting:-
1)GUIDE 1
2)GUIDE 2
3)GUIDE 3
and for makefile I'm using the following---
PHP:
# Makefile for porting MIUI
#
local-zip-file := stockrom.zip
local-out-zip-file := MIUI_YOURDEVICE.zip
local-previous-target-dir :=
local-density :=
local-miui-modified-apps :=
local-miui-removed-apps :=
local-modified-apps :=
# To include the local targets before and after zip the final ZIP file,
# and the local-targets should:
# (1) be defined after including porting.mk if using any global variable(see porting.mk)
# (2) the name should be leaded with local- to prevent any conflict with global targets
local-pre-zip :=
local-after-zip:=
otatype := fullota
include $(PORT_BUILD)/porting.mk
local-pre-zip-misc:
I urge all the moto e2 community members and the respected devs to make this dream come true.
XDA ROCKSSS!!!!
Heres where I'm stuck at
PHP:
~/patchrom/cyclops$ make firstpatch
/home/arnab/patchrom/build/util.mk:156: warning: overriding recipe for target 'stockrom.zip'
/home/arnab/patchrom/build/porting.mk:308: warning: ignoring old recipe for target 'stockrom.zip'
/home/arnab/patchrom/tools/patch_miui_framework.sh /home/arnab/patchrom/android/base-framework /home/arnab/patchrom/android `pwd`
<<< create temp directory to store the old, new source and destination smali code with .line removed
<<< compute the difference between /home/arnab/patchrom/cyclops/temp/old_smali/framework.jar.out and /home/arnab/patchrom/cyclops/temp/new_smali/framework.jar.out
<<< apply the patch into the /home/arnab/patchrom/cyclops/framework.jar.out
patching file /home/arnab/patchrom/cyclops/framework.jar.out/./smali/com/android/internal/os/ZygoteInit.smali
Hunk #1 succeeded at 354 with fuzz 2 (offset 7 lines).
patching file /home/arnab/patchrom/cyclops/framework.jar.out/./smali/android/content/res/Resources.smali
Reversed (or previously applied) patch detected! Assume -R? [n] y
Hunk #2 succeeded at 840 (offset -11 lines).
Hunk #3 succeeded at 4492 with fuzz 2 (offset -35 lines).
patching file /home/arnab/patchrom/cyclops/framework.jar.out/./smali/android/content/pm/PackageParser.smali
Hunk #1 FAILED at 9660.
Hunk #2 FAILED at 9672.
2 out of 2 hunks FAILED -- saving rejects to file /home/arnab/patchrom/cyclops/temp/reject/framework.jar.out/./smali/android/content/pm/PackageParser.smali.rej
patching file /home/arnab/patchrom/cyclops/framework.jar.out/./smali/android/app/ResourcesManager.smali
Hunk #1 FAILED at 213.
Hunk #2 FAILED at 986.
2 out of 2 hunks FAILED -- saving rejects to file /home/arnab/patchrom/cyclops/temp/reject/framework.jar.out/./smali/android/app/ResourcesManager.smali.rej
patching file /home/arnab/patchrom/cyclops/framework.jar.out/./smali/android/app/SystemServiceRegistry.smali
Reversed (or previously applied) patch detected! Assume -R? [n] y
Hunk #1 succeeded at 856 (offset 106 lines).
patching file /home/arnab/patchrom/cyclops/framework.jar.out/./smali/android/graphics/Bitmap.smali
Hunk #1 succeeded at 43 (offset 2 lines).
<<< compute the difference between /home/arnab/patchrom/cyclops/temp/old_smali/services.jar.out and /home/arnab/patchrom/cyclops/temp/new_smali/services.jar.out
<<< apply the patch into the /home/arnab/patchrom/cyclops/services.jar.out
patching file /home/arnab/patchrom/cyclops/services.jar.out/./smali/com/android/server/am/ActivityStack.smali
Hunk #1 FAILED at 6636.
1 out of 1 hunk FAILED -- saving rejects to file /home/arnab/patchrom/cyclops/temp/reject/services.jar.out/./smali/com/android/server/am/ActivityStack.smali.rej
patching file /home/arnab/patchrom/cyclops/services.jar.out/./smali/com/android/server/am/ActivityManagerService.smali
Hunk #1 succeeded at 84092 (offset 1113 lines).
patching file /home/arnab/patchrom/cyclops/services.jar.out/./smali/com/android/server/policy/PhoneWindowManager.smali
Hunk #1 succeeded at 503 (offset 40 lines).
patching file /home/arnab/patchrom/cyclops/services.jar.out/./smali/com/android/server/wm/WindowManagerService.smali
Hunk #1 FAILED at 708.
1 out of 1 hunk FAILED -- saving rejects to file /home/arnab/patchrom/cyclops/temp/reject/services.jar.out/./smali/com/android/server/wm/WindowManagerService.smali.rej
patching file /home/arnab/patchrom/cyclops/services.jar.out/./smali/com/android/server/SystemServer.smali
Hunk #1 succeeded at 137 (offset -5 lines).
<<< compute the difference between /home/arnab/patchrom/cyclops/temp/old_smali/telephony-common.jar.out and /home/arnab/patchrom/cyclops/temp/new_smali/telephony-common.jar.out
<<< apply the patch into the /home/arnab/patchrom/cyclops/telephony-common.jar.out
<<< compute the difference between /home/arnab/patchrom/cyclops/temp/old_smali/wifi-service.jar.out and /home/arnab/patchrom/cyclops/temp/new_smali/wifi-service.jar.out
<<< apply the patch into the /home/arnab/patchrom/cyclops/wifi-service.jar.out
>>> patch miui into target framework is done. Please look at /home/arnab/patchrom/cyclops/temp/reject to resolve any conflicts!
Can someone/any respected dev please build the rom??
I'm eagerly waiting...
I guarantee.MIUI for moto e 2015 is going to be the most trending rom in otus/surnia community.most of the users were n are still waiting for this rom..
I'm a noob but if you need some help setting the enviornment .I will always feel good to help you.
@anveshparashar please look
And more devs please port it to our Osprey
ExaHamza said:
@anveshparashar please look
And more devs please port it to our Osprey
Click to expand...
Click to collapse
I think devs are working on this
I'm so excited to test it!
Is one of the best, in fact according to my opinion, the best option after stock!
Stuck at this error.Plss Help
PHP:
-S out/framework-res/res -A out/framework-res/assets \
-M out/framework-res/AndroidManifest.xml -F out/framework-res.apk
/bin/bash: /home/arnab/patchrom/tools/linux-x86/aapt: No such file or directory
/home/arnab/patchrom/build/porting.mk:174: recipe for target 'out/framework-res.apk' failed
make: *** [out/framework-res.apk] Error 127
i urge all the devs in moto e2 community to spare some time and please build this rom
i have succesfully made a build for my device (osprey) but it is not booting yet. i am struck on mi bootanimation and adb is inaccessible. i will help you to make device tree to make a successful build
anveshparashar said:
i have succesfully made a build for my device (osprey) but it is not booting yet. I am struck on mi bootanimation and adb is inaccessible. I will help you to make device tree to make a successful build
Click to expand...
Click to collapse
im stuck with the rejects
anveshparashar said:
i have succesfully made a build for my device (osprey) but it is not booting yet. i am struck on mi bootanimation and adb is inaccessible. i will help you to make device tree to make a successful build
Click to expand...
Click to collapse
You have my support for this project in Osprey.
MIUI ROCKS, please developers do the magic! hehe
EsromG5 said:
You have my support for this project in Osprey.
Click to expand...
Click to collapse
can you help me gettin over rejects?
arnabnx said:
can you help me gettin over rejects?
Click to expand...
Click to collapse
it is not necessary to fix all rejects. rejects are only used to warn you that patching changed/replaced/added/subtracted this code in the smali that is different from the original so user have to check whether it can cause conflict.i suggest you to ignore rejects and proceed further they will be patched automatically and use make fullota or make zipfile command in the terminal
Things to be taken care of:-
1.smali and smali2 folder of the framework should be merged
2.how to extract metdata and is it correct(use patchrom/tools/releasetools/ota_target_from_phone -r
t and make sure root is working and adb debugging is on and su request in set to app and adb allow computer authorisation.this will help you to make proper device tree for miui porting)
3.build.prop should conatin "ro.build.fingerprint" with 6 parameter
4.correctly edit makefile and local vendor apps and local vendor priv-apps in makefile
if you want i can upload my device file so you can edit them according to your device
anveshparashar said:
it is not necessary to fix all rejects. rejects are only used to warn you that patching changed/replaced/added/subtracted this code in the smali that is different from the original so user have to check whether it can cause conflict.i suggest you to ignore rejects and proceed further they will be patched automatically and use make fullota or make zipfile command in the terminal
Things to be taken care of:-
1.smali and smali2 folder of the framework should be merged
2.how to extract metdata and is it correct(use patchrom/tools/releasetools/ota_target_from_phone -r
t and make sure root is working and adb debugging is on and su request in set to app and adb allow computer authorisation.this will help you to make proper device tree for miui porting)
3.build.prop should conatin "ro.build.fingerprint" with 6 parameter
4.correctly edit makefile and local vendor apps and local vendor priv-apps in makefile
if you want i can upload my device file so you can edit them according to your device
Click to expand...
Click to collapse
Thats gonna be really nice if you upload your workspace folder on gdrive
arnabnx said:
Thats gonna be really nice if you upload your workspace folder on gdrive
Click to expand...
Click to collapse
ok i will upload metadata and makefile i am using cm13.1 and aosp as base. i will upload cm13.1 metadata first
anveshparashar said:
ok i will upload metadata and makefile i am using cm13.1 and aosp as base. i will upload cm13.1 metadata first
Click to expand...
Click to collapse
ok...thanxxx
here you go download
it conatin metadata and makefile
you have to make same directory as of angler (nexus 6p)
anveshparashar said:
here you go download
it conatin metadata and makefile
you have to make same directory as of angler (nexus 6p)
Click to expand...
Click to collapse
Thanks lemme trry now
You are best
Related
I've put together a tool undoing what mkbootimg does. There are other tools splitting a boot image into the
kernel and root file system, but I didn't find any extracting the command line and base addresses, so I wrote this one.
It handles plain boot images as well as boot images embedded in larger filer, e.g. update-images.
Code:
$ unmkbootimg boot.img
Kernel size 2419636
Kernel address 0x20008000
Ramdisk size 152656
Ramdisk address 0x21000000
Secondary size 0
Secondary address 0x20f00000
Kernel tags address 0x20000100
Flash page size 2048
Board name is ""
Command line "no_console_suspend=1"
This image is built using standard mkbootimg
Extracting kernel to file zImage ...
Extracting root filesystem to file initramfs.cpio.gz ...
All done.
---------------
To recompile this image, use:
mkbootimg --kernel zImage --ramdisk initramfs.cpio.gz --base 0x20000000 --cmdline 'no_console_suspend=1' -o new_boot.img
---------------
$ ls -l
totalt 5044
-rw-r--r-- 1 kuisma kuisma 2576384 9 sep 09.44 boot.img
-rw-r--r-- 1 kuisma kuisma 152656 9 sep 09.44 initramfs.cpio.gz
-rw-r--r-- 1 kuisma kuisma 2419636 9 sep 09.44 zImage
Version 1.2 - Support for embedded boot images
Version 1.1 - Support for non-standard mkbootimg images.
Version 1.0 - Initial release.
Including a gziped binary for GNU/Linux in this post (32 bit, linked static). Download, unzip, make sure it is executable.
If running on a 64bit machine, make sure you've got the ia32-libs installed to be able to run 32bit binaries.
Great Tool........ i Always use it..........Thanks For Share
I've updated unmkbootimg. Now it detects and warns if the boot.img is built using a non-standard mkbootimg, and tells you how to patch it.
$ unmkbootimg samsung-boot.img
Kernel size 4905092
Kernel address 0x40408000
Ramdisk size 893395
Ramdisk address 0x41800000
Secondary size 0
Secondary address 0x41300000
Kernel tags address 0x40400100
Flash page size 2048
Board name is ""
Command line "androidboot.hardware=qcom msm_watchdog.appsbark=0 msm_watchdog.enable=1 loglevel=4"
*** WARNING ****
This image is built using NON-standard mkbootimg!
OFF_RAMDISK_ADDR is 0x01400000
Please modify mkbootimg.c using the above values to build your image.
****************
Extracting kernel to file zImage ...
Extracting root filesystem to file initramfs.cpio.gz ...
All done.
---------------
To recompile this image, use:
mkbootimg --kernel zImage --ramdisk initramfs.cpio.gz --base 0x40400000 --cmdline 'androidboot.hardware=qcom msm_watchdog.appsbark=0 msm_watchdog.enable=1 loglevel=4' -o new_boot.img
---------------
Click to expand...
Click to collapse
Thank you for your tool my friend
Though I have one question regarding this:
--cmdline 'no_console_suspend=1'
Click to expand...
Click to collapse
When I attempt to compile kernel from source, Sony said in the read me file that memory layout and other stuff are passed to kernel via cmdline. I do that just like it's written in the cmdline I quoted?! because I want to use the latest kernel source with an existing zRam but i'm unable to make the newly compiled kernel to boot because I am unable to pass arguments via cmdline on boot :crying:
DeepUnknown said:
Thank you for your tool my friend
Though I have one question regarding this:
When I attempt to compile kernel from source, Sony said in the read me file that memory layout and other stuff are passed to kernel via cmdline. I do that just like it's written in the cmdline I quoted?! because I want to use the latest kernel source with an existing zRam but i'm unable to make the newly compiled kernel to boot because I am unable to pass arguments via cmdline on boot :crying:
Click to expand...
Click to collapse
As far as I know, Sony passes all important parameters via kernel ATAGs, not command line.
kuisma said:
As far as I know, Sony passes all important parameters via kernel ATAGs, not command line.
Click to expand...
Click to collapse
I'm sorry I wasn't clear in the previous comment, here is what Sony mentioned:
In the official SW the following command line arguments are given
to the kernel:
cachepolicy=writealloc
noinitrd
init=init
board_id=1
logo.nologo
root=/dev/ram0
rw
rootwait
console=ttyAMA2,115200n8
androidboot.console=ttyAMA2
androidboot.hardware=st-ericsson
<memory layout>
mpcore_wdt.mpcore_margin=359
Click to expand...
Click to collapse
I'm sorry I went out of subject but I was using tools like yours to get zRam from other boot.img file.
Very nice tool, thanks for sharing.
unmkbootimg as of version 1.2 now supports embedded boot images, e.g. a boot image embedded deep in an update.img file.
$ unmkbootimg update.img
unmkbootimg version 1.2 - Mikael Q Kuisma <[email protected]>
File update.img not a plain boot image, seeking for embedded image ... found!
Kernel size 8073252
Kernel address 0x60408000
Ramdisk size 6380372
Ramdisk address 0x62000000
Secondary size 0
Secondary address 0x60f00000
Kernel tags address 0x60088000
Flash page size 16384
Board name is ""
Command line ""
*** WARNING ****
This image is built using NON-standard mkbootimg!
OFF_KERNEL_ADDR is 0x00380100
OFF_RAMDISK_ADDR is 0x01F78100
OFF_SECOND_ADDR is 0x00E78100
Please modify mkbootimg.c using the above values to build your image.
****************
Extracting kernel to file zImage ...
Extracting root filesystem to file initramfs.cpio.gz ...
All done.
---------------
To recompile this image, use:
mkbootimg --kernel zImage --ramdisk initramfs.cpio.gz --base 0x60087f00 --pagesize 16384 -o new_boot.img
---------------
$ ls
initramfs.cpio.gz update.img zImage
$
Click to expand...
Click to collapse
kuisma said:
unmkbootimg as of version 1.2 now supports embedded boot images, e.g. a boot image embedded deep in an update.img file.
Click to expand...
Click to collapse
Thanks for the update, very cool feature.
Can not extract zImage?
Could you check why I Can not extract zImage from this Kernel:
http://forum.xda-developers.com/showpost.php?p=37909023&postcount=56
mafamafa said:
Could you check why I Can not extract zImage from this Kernel:
http://forum.xda-developers.com/showpost.php?p=37909023&postcount=56
Click to expand...
Click to collapse
It's because it's not an Android boot image, but a Rockchip specific kernel image file.
Hi, could you please post the source here or upload in github or similar and provide the link. That will be much better.
Sent from my Amazon Kindle Fire HD using xda app-developers app
jeevas.v said:
Hi, could you please post the source here or upload in github or similar and provide the link. That will be much better.
Click to expand...
Click to collapse
Why? It's a trivial hack, and if you're a programmer, you'll put one together in minutes anyway.
So, no.
That is very bad and unethical. It is not a question of I or somebody can do it. Even it violates many things by saying no. What a pathetic situation.
Sent from my Amazon Kindle Fire HD using xda app-developers app
jeevas.v said:
That is very bad and unethical. It is not a question of I or somebody can do it. Even it violates many things by saying no. What a pathetic situation.
Click to expand...
Click to collapse
Say what? I'm providing the community a useful software for free - and you blame me for being unethical? :laugh:
I'm saying that you are using Foss as you like and hesitating to publish even a trivial change that you made. How can the community trust your binaries unless they don't have the source. What kind of mindset is that? Have you ever read GPL?
What do you think you are doing? Social service the Microsoft way? What a joke!
Sent from my Amazon Kindle Fire HD using xda app-developers app
jeevas.v said:
I'm saying that you are using Foss as you like and hesitating to publish even a trivial change that you made. How can the community trust your binaries unless they don't have the source. What kind of mindset is that? Have you ever read GPL?
What do you think you are doing? Social service the Microsoft way? What a joke!
Click to expand...
Click to collapse
GPL? My code is written from scratch, and is not a subject of GPL whatsoever.
You, my friend, are making a fool of your self. Please, don't let me hinder you.
I am trying to spread the awareness against the closed source behaviour and I hope I achieved that in whatever miniscule way.
I don't care about your binary or code but thought of asking you to know if you are intentionally not giving the source by giving just the 32bit binaries. Anyway so now everyone knows...
Sent from my Amazon Kindle Fire HD using xda app-developers app
how to build Rockchip specific kernel image file?
kuisma said:
It's because it's not an Android boot image, but a Rockchip specific kernel image file.
Click to expand...
Click to collapse
Can you tell how to build Rockchip specific kernel image file - or where to loog for that information?
mafamafa said:
Can you tell how to build Rockchip specific kernel image file - or where to look for that information?
Click to expand...
Click to collapse
I have no idea whatsoever how Rocketchip manages its boot images.
I and my friend are trying to port Firefox OS on Motorola G device. Because of our lack of experience in the field, we are stuck. Mozilla's documentation is not that helpful and we don't know at the moment how to continue.
What we did:
- created manifest xml for the device, based on unofficial cyanogenmod for Moto G.
- synced all sources
- added manually prebuilt kernel.
- tried to build everything but it doesn't build, of course, we don't know why.
The error seem to be:
Code:
make: *** No rule to make target `out/target/product/xt1032/obj/SHARED_LIBRARIES/libwpa_client_intermediates/export_includes', needed by `out/target/product/xt1032/obj/SHARED_LIBRARIES/libhardware_legacy_intermediates/import_includes'. Stop.
Welcome to the forums !
coldSense said:
I and my friend are trying to port Firefox OS on Motorola G device. Because of our lack of experience in the field, we are stuck. Mozilla's documentation is not that helpful and we don't know at the moment how to continue.
What we did:
- created manifest xml for the device, based on unofficial cyanogenmod for Moto G.
- synced all sources
- added manually prebuilt kernel.
- tried to build everything but it doesn't build, of course, we don't know why.
The error seem to be:
Code:
make: *** No rule to make target `out/target/product/xt1032/obj/SHARED_LIBRARIES/libwpa_client_intermediates/export_includes', needed by `out/target/product/xt1032/obj/SHARED_LIBRARIES/libhardware_legacy_intermediates/import_includes'. Stop.
Click to expand...
Click to collapse
Now I haven't been on these forums long but I'd like to say congrats on ur first post ! ;0 That error
Code:
make: *** No rule to make target `out/target/product/xt1032/obj/SHARED_LIBRARIES/libwpa_client_intermediates/export_includes', needed by `out/target/product/xt1032/obj/SHARED_LIBRARIES/libhardware_legacy_intermediates/import_includes'. Stop.
means there is no target to build the path. I need more info. What compiler are you using. Or are you just using the command prompt?What's the custom kernel, you could try using CM #2 Unoffical However that'd only work if ur Moto G is currently running android with CWM (to flash the kernel when u build it) Can u link to the mozilla post, I didn't bookmark it and I can be bothered to google it Can u send me what you've done so far pls. Thanks
Or are you just using the command prompt?
Click to expand...
Click to collapse
Yes, I'm using terminal to compile everything. Actually a specialized script for that purpose. Environment versions are:
g++ - 4.6
gcc - 4.6
Actually I'm using this guide .
Yes, I use Clockwork but before that there is building problem. Anyway, the link for porting is this.
The kernel I got is from here.
Admittedly, I know jack **** about android development, but I was under the impression that Firefox OS was based on an ICS kernel? I don't think the CM11 kernel works.
coldSense said:
Yes, I'm using terminal to compile everything. Actually a specialized script for that purpose. Environment versions are:
g++ - 4.6
gcc - 4.6
Actually I'm using this guide .
Yes, I use Clockwork but before that there is building problem. Anyway, the link for porting is this.
The kernel I got is from here.
Click to expand...
Click to collapse
Never seen that error before. Know wat it means tho. Have u tried complieing with Xcode (mac) or another 3rd part app ?
Apph3x said:
Never seen that error before. Know wat it means tho. Have u tried complieing with Xcode (mac) or another 3rd part app ?
Click to expand...
Click to collapse
No. I don't have and don't use mac computers, at least for now. I did this in Linux. It seems that it just doesn't read kernel/ directory or just ignores it.
Yeah
coldSense said:
No. I don't have and don't use mac computers, at least for now. I did this in Linux. It seems that it just doesn't read kernel/ directory or just ignores it.
Click to expand...
Click to collapse
It's like its invisible....
I solved (apparently) that problem by modifying variable TARGET_KERNEL_SOURCE (device/motorola/msm8226-common/BoardConfigCommon.mk) to be absolute path but now I have another error
Code:
make: *** No rule to make target `out/host/linux-x86/bin/acp', needed by `out/debug/host/linux-x86/bin/validatekeymaps'. Stop.
@coldSense
Try this way please
Code:
rm -rf out
rm -rf objdir-gecko
./build.sh gecko
then run
Code:
./build.sh gaia
and copy file from <build_path>/gaia/profile/webapps to <build_path>/out/project/<device_name>/system/b2g/webapps
Then replace all file from out/target/<product>/system to /system of AOSP ROM
then edit ramdisk follow https://developer.mozilla.org/en-US/Firefox_OS/Porting
and flash boot.img and /system you were edit to your Motolola G
Try this way please
Any luck with this? I might try myself, but curious if you can update.
Hi everyone !
I'm currently tryaing to build Firefox OS on own device.
I have this error :
Code:
$ lunch
You're building on Linux
Lunch menu... pick a combo:
1. aosp_arm-eng
2. aosp_x86-eng
3. aosp_mips-eng
4. vbox_x86-eng
5. cm_falcon-userdebug
6. mini_armv7a_neon-userdebug
Which would you like? [aosp_arm-eng] full_falcon
build/core/product_config.mk:222: *** Can not locate config makefile for product "falcon". Arrêt.
** Don't have a product spec for: 'full_falcon'
** Do you have the right repo manifest?
Could someone help me ?
Thanks a lot !
feherneoh said:
try full_falcon instead
Click to expand...
Click to collapse
Code:
$ lunch
You're building on Linux
Lunch menu... pick a combo:
1. aosp_arm-eng
2. aosp_x86-eng
3. aosp_mips-eng
4. vbox_x86-eng
5. cm_falcon-userdebug
6. mini_armv7a_neon-userdebug
Which would you like? [aosp_arm-eng] full_falcon
Invalid lunch combo: full_falcon
OR
Code:
$ ./build.sh full_falcon
including device/motorola/falcon/vendorsetup.sh
including device/generic/armv7-a-neon/vendorsetup.sh
build/core/product_config.mk:222: *** Can not locate config makefile for product "full_flo". Arrêt.
** Don't have a product spec for: 'full_flo'
** Do you have the right repo manifest?
> Build failed! <
Build with |./build.sh -j1| for better messages
If all else fails, use |rm -rf objdir-gecko| to clobber gecko and |rm -rf out| to clobber everything else.
A modification in device/motorola/falcon/vendorsetup.sh maybe ?
UPDATE :
Modifying vendorsetup.sh like this
add_lunch_combo full_falcon-eng
Can somebody explain me how to use a prebuilt kernel to build that please ?
Thank You
I have this error ... (in french)
Code:
No private recovery resources for TARGET_DEVICE falcon
make: *** Pas de règle pour fabriquer la cible « out/target/product/falcon/kernel », nécessaire pour « prebuilt ». Arrêt.
make: *** Attente des tâches non terminées....
h2o64 said:
Can somebody explain me how to use a prebuilt kernel to build that please ?
Thank You
I have this error ... (in french)
Code:
No private recovery resources for TARGET_DEVICE falcon
make: *** Pas de règle pour fabriquer la cible « out/target/product/falcon/kernel », nécessaire pour « prebuilt ». Arrêt.
make: *** Attente des tâches non terminées....
Click to expand...
Click to collapse
You can try to create the folder falcon-kernel inside device/motorola/ and put into it your kernel image.
In device/motorola/(your model) create the file AndroidBoard.mk and put inside:
ifeq ($(TARGET_PREBUILT_KERNEL),)
TARGET_PREBUILT_KERNEL := device/motorola/falcon-kernel/kernel
endif
Than try to rebuild.
--------------------------Solution--------------------------
Thanks to @sdr4wkcab
Notice:You should replace paths with your own.
1.Open /device/samsung/ks01lte/BoardConfig.mk
2.Change
BOARD_PROVIDES_LIBRIL := ture
to
BOARD_PROVIDES_LIBRIL := false
3.Extract libril.so from stock ROM.
4.Add these lines to /device/samsung/ks01lte/Android.mk
Code:
$(shell mkdir -p $(OUT)/obj/lib)
$(shell cp -f ~/cm12.1/others/libril.so $(OUT)/obj/lib/)
5.Put libril.so in a folder "others" right in the root directory of the source file.
Rom then can be built normally.
______________________________________
Hi!
I want to compile CM12.1 myself.
Butttttt
Code:
Import includes file: /home/builder/cm12.1/out/target/product/ks01lte/obj/EXECUTABLES/rfc_intermediates/import_includes
make: *** No rule to make target “/home/builder/cm12.1/out/target/product/ks01lte/obj/EXECUTABLES/rild_intermediates/import_includes” Needed by “/home/builder/cm12.1/out/target/product/ks01lte/obj/SHARED_LIBRARIES/libril_intermediates/export_includes”. Stop.
make: *** Waiting for unfinished jobs...
Export includes file: external/bluetooth/bluedroid/test/rfcommtest/Android.mk -- /home/builder/cm/out/target/product/ks01lte/obj/EXECUTABLES/rfc_intermediates/export_includes
#### make failed to build some targets (02:48 (mm:ss)) ####
This is what I always encounter 2min after brunch. I have re-sync for many times, but it won't help.
Any way to solve this ? Thanks in advance!!
Same here building for Note 4. Any ideas guys?
Well, ROM built with SIM card not recognized.
Try setting BOARD_PROVIDES_LIBRIL := false in the BoardConfig.mk and copying the librild.so by hand from your backup.
sdr4wkcab said:
Try setting BOARD_PROVIDES_LIBRIL := false in the BoardConfig.mk and copying the librild.so by hand from your backup.
Click to expand...
Click to collapse
Thanks! It finally works!
Just remember that RIL (Radio Interface Library) is something Android needs in order to communicate with the phone's modem (i.e. make calls, send msm, change SIM-settings, etc.). If you don't have this in the correct way on your ROM you will have instead of a GSG5 mobile phone a very small non-SIM-capable tablet in the end, running CM
If you are suspicous about using a binary blob like this in your own distribution, rejoice, for your suspicion was justified: RILd is shamelessly backdoored (just google for "Replicant Samsung Galaxy backdoor"). Luckily the Replicant developers managed to initiate an open-source replacement for Samsung's RIL, which heavily needs contributors..
sdr4wkcab said:
Just remember that RIL (Radio Interface Library) is something Android needs in order to communicate with the phone's modem (i.e. make calls, send msm, change SIM-settings, etc.). If you don't have this in the correct way on your ROM you will have instead of a GSG5 mobile phone a very small non-SIM-capable tablet in the end, running CM
If you are suspicous about using a binary blob like this in your own distribution, rejoice, for your suspicion was justified: RILd is shamelessly backdoored (just google for "Replicant Samsung Galaxy backdoor"). Luckily the Replicant developers managed to initiate an open-source replacement for Samsung's RIL, which heavily needs contributors..
Click to expand...
Click to collapse
Thanks for that info.
I have very little skills of coding or debugging on these stuffs.... It can take me a long to look for practical and useful guide or tutorial, or even finally know about the source code.
The Rom I built works normally now, "apparently", with overheat along and occasional sudden freeze. I did sync the source code from cm's github, but the the only maintainer of my device on CyanogenMod seems to stop maintaining this device (ks01lte) :crying: So there must be much to improve.
I'm trying to build kernel from Note 3's source code, which is almost identical to my device except for few things like memory size. But failed today. Will investigate more.
I've just got a new Samsung Galaxy TAB A 7.0 LTE SM-T285, For some reason I can't seem to find any resources for this hardware yet in this forum, anyone know where I could find one? I'll try to find out if the current methods (custom recovery and root) for other tab versions work on this.
CUSTOM ROMS
============
Android 5.1.1 Lollipop (Stock)
Tinker V5 Edition based on the Samsung Stock Rom SM-T280/T285
Android 6.0 Marshmallow
Cyanogenmod 13 for the SM-T285 Only
OMNIRom for the SM-T285 Only
Android 7.1 Nougat
Cyanogenmod 14.1 for the SM-T285 Only (Experimental, things are broken, depcrated in favor of LOS 14.1)
LineageOS 14.1 for the SM-T285 Only
Other Operating systems
Porting for Sailfish OS is currently in progress for the SM-T285, stay tuned
TWRP RECOVERY AND ROOT
=======================
TWRP is available for both the T280 and T285. You should find the relevant threads in this Galaxy Tab A forum.
If you want to root stock, easiest way is to install TWRP and go for SuperSU. Please see the TWRP threads for SM-T280/T285 on how to root after TWRP is installed.
KERNEL
======
Custom kernel with working sources for the SM-T285 can be found Here
DEVELOPMENT
============
If you want to build LineageOS 14.1 on your SM-T285 LTE device, you can use this manifest, not that this is still a work in progress:
https://github.com/jedld/android.git
UPDATE 10/06/2016
================
After a couple of weeks of trial and error and tinkering, I've been able to compile a kernel for the SM-T285 from source and so far it seems to work flawlessly!
Screenshot here: http://imgur.com/a/HRgsq
link to my kernel sources here: https://github.com/jedld/kernel_samsung_gtexslte.git
You can also thank samsung for giving us a "broken by default" kernel source. I had to mix and match defconfigs from their other kernel releases just to make this thing work. Download modified boot.img here:
http://forum.xda-developers.com/galaxy-tab-a/development/kernel-galaxy-tab-7-0-2016-lte-sm-t285-t3474967
UPDATE 09/20/2016
================
This device is now ROOTED!
http://forum.xda-developers.com/galaxy-tab-a/help/resources-samsung-galaxy-tab-7-0-2016-t3431022/post68777842#post68777842
Download Pre-rooted Tinker Edition V5 in this thread: Tinker Edition Thread
Post Root Post Mortem Analysis for the SM-T285 (09/21/2016)
=========================
Q: How were you able to find root? What did you do?
A: Surprisingly the SM-T285 bootloader isn't actually locked like we thought it was (Once you OEM unlock of course and disable FRP). The bottomline is that
we simply needed patches to mkbootimg to properly package a boot image for this device as there were additional fields and sections not found on a normal boot image. There were even minor breaking difference between the tab 4 and the boot image for this device.
Q: I thought the bootloader was locked?? Why did it take so long?
A: I blame it on the really vague errors the bootloader shows when loading an improperly packaged boot image. What helped was my faith to open up a hex editor when I needed to, and really look at the stock images and the images we were making. What really pushed me to investigate further was the fact that I was able to make a really small modification to the ramdisk and use the abootimg -u update function instead of the create options.
Q: So the bootloader doesn't really check the image?
A: Yup, The bootloader doesn't do any check. I haven't checked if that is the case for the recovery partition though. Even without the SELINUXENFORCE headers at the end it still continues like other samsung devices do.
Q: So the mkbootimg patches are all that we need?
A: Yup, if you have CM, AOSP build env ready you can simply add the modified mkbootimg to system/core:
https://github.com/jedld/degas-mkbootimg/commit/b63ae38e2ab7040cc7ddaef777652a56b2e48322
Sample usage below:
Code:
degas-mkbootimg -o boot.img --base 0 --pagesize 2048 \
--kernel boot.img-zImage --cmdline "console=ttyS1,115200n8" --ramdisk boot_kitchen/boot.img-ramdisk-new.gz --dt boot.img-dt
Next challenge will be getting Cyanogenmod on this device as well as TWRP.
You won't because it has a locked bootloader, therefore not currently rootable and certainly no custom recovery.
jaritico said:
any idea to unlock bootloader?
Click to expand...
Click to collapse
Not unless Samsung provides one.
jaritico said:
any idea to unlock bootloader?
Click to expand...
Click to collapse
Probably no hope for root. the PIT, boot and recovery are basically untouchable, selinux enforcing enabled also does not help. You can still debloat and customize the system partition though:
http://forum.xda-developers.com/android/development/guide-samsung-galaxy-tab-7-0-sm-t285-t3438296
I'm working on getting CM 12.1 to run on this device.
jedld said:
Probably no hope for root. the PIT, boot and recovery are basically untouchable, selinux enforcing enabled also does not help. You can still debloat and customize the system partition though:
http://forum.xda-developers.com/android/development/guide-samsung-galaxy-tab-7-0-sm-t285-t3438296
I'm working on getting CM 12.1 to run on this device.
Click to expand...
Click to collapse
Yes at least the saving grace is that Samsung left Dm-verity off for this device.
If only they'd have left out the root restriction in the kernel too we'd have a rootable device.
I have an idea for this that I haven't tried yet.
Basically Samsung sends out security Policy updates via OTA, they recently released an SEPOLICY update to most devices breaking root. Chainfire patched this.
As this policy is stored in DATA and over rides the one in the boot.img it may be possible to use a patched SEPOLICY by creating a flashable DATA image with the patched SEPOLICY thereby removing the SElinux root restriction.
I ran it by Chainfire and he said in theory it should work except for that fact that the SEPOLICY in DATA is signed.
I have yet to try this out.
I think it would be difficult to get CM running as the kernel may need some patches and as we know that can't be touched.
ashyx said:
Yes at least the saving grace is that Samsung left Dm-verity off for this device.
If only they'd have left out the root restriction in the kernel too we'd have a rootable device.
I have an idea for this that I haven't tried yet.
Basically Samsung sends out security Policy updates via OTA, they recently released an SEPOLICY update to most devices breaking root. Chainfire patched this.
As this policy is stored in DATA and over rides the one in the boot.img it may be possible to use a patched SEPOLICY by creating a flashable DATA image with the patched SEPOLICY thereby removing the SElinux root restriction.
I ran it by Chainfire and he said in theory it should work except for that fact that the SEPOLICY in DATA is signed.
I have yet to try this out.
I think it would be difficult to get CM running as the kernel may need some patches and as we know that can't be touched.
Click to expand...
Click to collapse
I ran it by Chainfire and he said in theory it should work except for that fact that the SEPOLICY in DATA is signed.
I have yet to try this out.
Click to expand...
Click to collapse
Would probably need to brush up on se policies in linux. If there are already files available that I just need to flash over to /data I can try it out and also a means to test it if it works.
I've created a petition here:
https://www.change.org/p/samsung-unlock-the-bootloader-for-the-samsung-galaxy-tab-a-7-0-2016?recruiter=286570213&utm_source=petitions_show_components_action_panel_wrapper&utm_medium=copylink&recuruit_context=copylink_long
Not sure if samsung is the type that listens to this sort of thing though.
ashyx said:
As this policy is stored in DATA and over rides the one in the boot.img it may be possible to use a patched SEPOLICY by creating a flashable DATA image with the patched SEPOLICY thereby removing the SElinux root restriction.
I ran it by Chainfire and he said in theory it should work except for that fact that the SEPOLICY in DATA is signed.
I have yet to try this out.
Click to expand...
Click to collapse
I made an attempt to patch sepolicy using data however all I got in the logs was
Code:
E/SELinux ( 733): Function: fileToArray, File Open Unsuccessful:
E/SELinux ( 733): Function: getVersionhash, signature is NULL
I/SELinux ( 733): Function: selinux_init_verify_sepolicy, getVersionhash return false
E/SELinux ( 733): Function: VerifyPolicy , selinux_init_verify_sepolicy is failed
So far I have no indication that my patch worked
Code:
sepolicy-inject -s shell -t system -c file -p read -P sepolicy -o sepolicy
The error above only comes up if I place sepolicy in /data/security and sepolicy_version in /data/security/spota
sha256 hashes were also updated in the version file so I'm not sure what I'm missing.
If I could have a copy of a samsung ota that actually updates the policies I can probably have better direction
jedld said:
I made an attempt to patch sepolicy using data however all I got in the logs was
Code:
E/SELinux ( 733): Function: fileToArray, File Open Unsuccessful:
E/SELinux ( 733): Function: getVersionhash, signature is NULL
I/SELinux ( 733): Function: selinux_init_verify_sepolicy, getVersionhash return false
E/SELinux ( 733): Function: VerifyPolicy , selinux_init_verify_sepolicy is failed
So far I have no indication that my patch worked
Code:
sepolicy-inject -s shell -t system -c file -p read -P sepolicy -o sepolicy
The error above only comes up if I place sepolicy in /data/security and sepolicy_version in /data/security/spota
sha256 hashes were also updated in the version file so I'm not sure what I'm missing.
If I could have a copy of a samsung ota that actually updates the policies I can probably have better direction
Click to expand...
Click to collapse
Finally found a way to patch the kernel on this device. Stay tuned...
jedld said:
Finally found a way to patch the kernel on this device. Stay tuned...
Click to expand...
Click to collapse
Turns out I was just able to modify files in the boot.img, though when I try to update the sepolicy itself, it won't boot.
jedld said:
Turns out I was just able to modify files in the boot.img, though when I try to update the sepolicy itself, it won't boot.
Click to expand...
Click to collapse
Can you at least explain a bit further?
What modifications allow you to create a boot able image?
How have you overcome image signing?
Only way I can think of is hex editing the signature, however I was under the impression this was crc based.
ashyx said:
Can you at least explain a bit further?
What modifications allow you to create a boot able image?
How have you overcome image signing?
Only way I can think of is hex editing the signature, however I was under the impression this was crc based.
Click to expand...
Click to collapse
Yeah I was able to flash a modified boot.img using heimdall, turns out that you just need to use abootimg -u boot.img -r yourmodifiedramdisk so that you don't overwrite the SELINUXENFORCE headers appended at the end of the boot.img file, it appears the bootloader only checks for the presence of those headers but does not actually compute the sig.
Modifying ramdisk works, haven't tried modifying the kernel itself.
I tried to modify the sepolicy files after using sepolicy-inject but it throws a KERNEL not SEnforced error. I am not certain if this is just a blanket error if the kernel doesn't boot due to modifying the policy files incorrectly or if there is legit checking going on. Nevertheless I am able to modify the init.rc files now.
jedld said:
I tried to modify the sepolicy files after using sepolicy-inject but it throws a KERNEL not SEnforced error. I am not certain if this is just a blanket error if the kernel doesn't boot due to modifying the policy files incorrectly or if there is legit checking going on. Nevertheless I am able to modify the init.rc files now.
Click to expand...
Click to collapse
Continued checking it out. So even though I can modify the ramdisk, I am unable to add more than 1000 - 2000 bytes before setting off the SEAndroid enforce error on bootup. Might be some headers on the boot.img that I fail to update when the ramdisk size gets bigger. Trying to modify the sepolicy in any way even if there is minimal change in size prevents it from booting. I have no idea what is checking it, I'll try to hexedit and see what happens.
jedld said:
Continued checking it out. So even though I can modify the ramdisk, I am unable to add more than 1000 - 2000 bytes before setting off the SEAndroid enforce error on bootup. Might be some headers on the boot.img that I fail to update when the ramdisk size gets bigger. Trying to modify the sepolicy in any way even if there is minimal change in size prevents it from booting. I have no idea what is checking it, I'll try to hexedit and see what happens.
Click to expand...
Click to collapse
So I used a hexedit on the sepolicy file and was able to modify one byte of it effectively changing its sha256sum... and it worked. So the sepolicy file CAN be changed, however current sepolicy-inject and supolicy tools does something to it that trips it, looks like samsung has again added a proprietary modification sepolicy format.
I've never known a kernel not boot due to the kernel not SEANDROID enforcing warning.
It's a meaningless warning and easily bypassed.
However this is on bootloader unlocked devices.
So just let me get this straight, you have been able to repack the boot.img with modifications to the ramdisk then force flash it via Heimdall and it still boots?
ashyx said:
I've never known a kernel not boot due to the kernel not SEANDROID enforcing warning.
It's a meaningless warning and easily bypassed.
However this is on bootloader unlocked devices.
So just let me get this straight, you have been able to repack the boot.img with modifications to the ramdisk then force flash it via Heimdall and it still boots?
Click to expand...
Click to collapse
yup. that's correct. I'll post my modified boot.img in a while
jedld said:
yup. that's correct. I'll post my modified boot.img in a while
Click to expand...
Click to collapse
note that using the update only method of abootimg "abootimg -u boot.img -r xxxxxx " is the only one that works for repacking the ramdisk. Trying to build the boot.img from scratch using any other method has so far failed for me.
Here is a flashable boot.img for the SM-T285.
It contains the following modifications to the ramdisk:
a file at /this_device_is_owned
and a modified init.rc that creates a /tmp folder
jedld said:
Here is a flashable boot.img for the SM-T285.
It contains the following modifications to the ramdisk:
a file at /this_device_is_owned
and a modified init.rc that creates a /tmp folder
Click to expand...
Click to collapse
now managed to patch sepolicy using chainfire's supolicy tool. needed to use a customized mkbootimg due to changes in the Tab A image format for this. now attempting to root the device... wish me luck
What is this tutorial?
This tutorial will:
Creating an unofficial build of LineageOS 18.1 suitable for using to re-lock the bootloader on a OnePlus 8t
Take you through the process of re-locking your bootloader after installing the above
This tutorial will NOT:
Remove *all* warning messages during boot (the yellow "Custom OS" message will be present though the orange "Unlocked bootloader" message will not)
Allow you to use official builds of LineageOS 18.1 on your device with a re-locked bootloader (more details near the end of the tutorial)
This tutorial will assume you are working on an Ubuntu 18.04 installation, if you are using Windows or another Linux distro, the commands may be different.
Supported devices:
The following devices have been tested and confirmed to work:
OnePlus 7 Pro (guacamole)
OnePlus 8t (kebab)
Pixel 4 (flame)
Other OnePlus devices that support AVBv2 (OnePlus 6t and newer as well as most Pixel devices) and LineageOS 18.1 (see current support list over on the LineageOS download page) should work as well.
For simplicities sake, all further references will only be to the 8t (kebab).
Pre-requisites:
a mid level knowledge of terminal commands and features
a supported phone
a PC with enough CPU/RAM to build LineageOS 18.1 (recommended 8 cores, 24g of RAM)
a working USB cable
fastboot/adb installed and functional
LineageOS 18.1 source code downloaded
at least one successful build of LineageOS
at least one successful signing of your build with your own keys
Misc. notes:
the basics of building/signing of LineageOS is outside the scope of this tutorial, refer to the LineageOS Wiki for details on how to complete these tasks
you'll be modifying some code in LineageOS, so if you are not comfortable using basic editing utilities as well as patch, do not proceed any further
the path to your LineageOS source code is going to be assumed to be ~/android/lineageos, if it is somewhere else, substitute the correct path in the tutorial
the path to your private certificate files is going to be assumed to be ~/android-certs, if it is somewhere else, substitute the correct path in the tutorial
*** WARNING ****
This process may brick your device. Do not proceed unless you are comfortable taking this risk.
*** WARNING ****
This process will delete all data on your phone! Do not proceed unless you have backed up your data!
*** WARNING ****
Make sure you have read through this entire process at least once before attempting, if you are uncomfortable with any steps include in this guide, do not continue.
And now on with the show!
Step 1: Basic setup
You need a few places to store things, so create some working directories:
Code:
mkdir ~/android/kebab
mkdir ~/android/kebab/patches
mkdir ~/android/kebab/pkmd
You also need to add "~/android/lineageos/out/host/linux-x86/bin" to your shell's profile path. Make sure to close and restart your session afterwards otherwise the signing will fail later on with a "file not found" error message (this may no longer be required).
Step 2: Update kebab's BoardConfig.mk
You will need to add a few parameters to the end of ~/android/lineageos/device/oneplus/kebab/BoardConfig.mk, they are:
Code:
BOARD_AVB_ALGORITHM := SHA256_RSA2048
BOARD_AVB_KEY_PATH := /home/<userid>/.android-certs/releasekey.key
Note you cannot use "~" in the path names above to signify your home directory, so give the full absolute path to make sure the files are found.
Step 3: Update sm8250-common's BoardConfigCommon.mk
LineageOS by default disables Android Verified Boot's partition verification, but you can enable it now as all the required parts will be in place.
To enable partition verification do the following:
Code:
cd ~/android/lineageos/device/oneplus/sm8250-common
sed -i 's/^BOARD_AVB_MAKE_VBMETA_IMAGE_ARGS += --flags 2/#BOARD_AVB_MAKE_VBMETA_IMAGE_ARGS += --flags 2/' BoardConfigCommon.mk
sed -i 's/^BOARD_AVB_MAKE_VBMETA_IMAGE_ARGS += --set_hashtree_disabled_flag/#BOARD_AVB_MAKE_VBMETA_IMAGE_ARGS += --set_hashtree_disabled_flag/' BoardConfigCommon.mk
sed -i 's/^BOARD_AVB_VBMETA_SYSTEM_KEY_PATH := external\/avb\/test\/data\/testkey_rsa2048.pem/BOARD_AVB_KEY_PATH := \/home\/<userid>\/.android-certs\/releasekey.key/' BoardConfigCommon.mk
Don't forget to replace your <userid> in the third sed command above with your current logged in user id.
Step 4: Patch the AOSP and Device Makefile
You also need to patch the Makefile included with AOSP as it will otherwise fail during the build.
The required patch can be found here:
https://raw.githubusercontent.com/Wunderment/build_tasks/master/source/core-Makefile-fix-18.1.patch
Download it and store in ~/android/kebab/patches.
Now apply it with the following command:
Code:
cd ~/android/lineageos/build/core
patch Makefile ~/android/kebab/patches/core-Makefile-fix-18.1.patch
If you would like to know more about this patch, see the additional info at the bottom of this post.
There is also a small addition to the device's common.mk required to enable the OEM unlock option in developers options, do this via the following commands:
Code:
cd ~/android/lineageos/device/oneplus/sm8250-common
sed -i 's/^# OMX/# OEM Unlock reporting\nPRODUCT_DEFAULT_PROPERTY_OVERRIDES += \\\n ro.oem_unlock_supported=1\n\n# OMX/' common.mk
Step 5: Build LineageOS
You are now ready to build:
Code:
cd ~/android/lineageos
breakfast kebab
source build/envsetup.sh
croot
mka target-files-package otatools
Step 6: Sign the APKs
You are now ready to sign the apks with sign_target_files_apks:
Code:
./build/tools/releasetools/sign_target_files_apks -o -d ~/.android-certs $OUT/obj/PACKAGING/target_files_intermediates/*-target_files-*.zip signed-target_files.zip
Step 7: Build the OTA
Now it is time to complete the OTA package:
Code:
./build/tools/releasetools/ota_from_target_files -k ~/.android-certs/releasekey --block signed-target_files.zip lineage-18.1-[date]-UNOFFICIAL-kebab-signed.zip
Note, replace [date] with today's date in YYYYMMDD format.
Step 8: Create pkmd.bin for your phone
Before you can lock your phone, you have to tell it what your public key is so it knows it can trust your build.
To do this you need to create a pkmd.bin file:
Code:
~/android/lineageos/external/avb/avbtool extract_public_key --key ~/.android-certs/releasekey.key --output ~/android/kebab/pkmd/pkmd.bin
Step 9: Flashing your LineageOS build
It's time to flash your build to your phone. The following steps assume you have already unlocked your phone and have flashed an official version of LineageOS to it. You don't need to have flashed LineageOS yet, you could use TWRP through "fastboot boot" if you prefer. Or, if you want to use the recovery that was just created, it is located in ~/android/lineageos/out/target/product/kebab and is called recovery.img.
Reboot your phone in to recovery mode
In LineageOS Recovery return to the main menu and select "Apply update"
From your PC, run:
Code:
adb sideload ~/android/lineageos/lineage-18.1-[date]-UNOFFICIAL-kebab-signed.zip
When the sideload is complete, reboot in to LineageOS. Make sure everything looks good with your build.
You may also need to format your data partition at this time depending on what you had installed on your phone previously.
Step 10: Flashing your signing key
Now it's time to add your signing key to the Android Verified Boot process. To do so, do the following:
Reboot your phone in to fastboot mode
From your PC, run:
Code:
fastboot flash avb_custom_key ~/android/kebab/pkmd/pkmd.bin
fastboot reboot bootloader
fastboot oem lock
On your phone, confirm you want to re-lock and it will reboot
Your phone will then factory reset and then reboot in to LineageOS.
Which of course means you have to go through the first time setup wizard, so do so now.
Step 11: Disable OEM unlock
Congratulations! Your boot loader is now locked, but you can still unlock it again using fastboot, so it's time to disable that as well.
Unlock you phone and go to Settings->About phone
Scroll to the bottom and find "Build number"
Tap on it you enable the developer options
Go to Settings->System->Advanced->Developer options
Disable the "OEM unlocking" slider
Reboot
Step 12: Profit!
Other things
The above will build a standard USERDEBUG version of LineageOS, however this will still allow LineageOS Recovery to sideload non-signed files as well as give you root shell access through ADB. Step 3/4 above protects your system/vendor/boot/dtbo/etc. partitions, but none of the others. Likewise USERDEBUG builds will allow for rolling back to a previous builds/versions of LineageOS. To increase security and disallow both of these scenarios you may want to build a USER version of LineageOS to install. However this brings in other issues, such as flashing newer firmware from OnePlus so make sure you understand the implications of both choices. For more details on build types, see https://source.android.com/setup/develop/new-device#build-variants.
In the above example the releasekey from your LineageOS install has been used to sign AVB, but AVB supports other key strengths up to SHA512_RSA8192. You could create a key just for signing AVB that used different options than the default keys generated to sign LineageOS.
If you want to remove you signing key from your phone, you can do it by running "fastboot erase avb_custom_key".
The changes you made to the AOSP Makefile may conflict with future updates that you pull from LineageOS through repo sync, if you have to reset the file to get repo sync to complete successfully, you'll have to reapply the changes afterwards.
So why can't I do this with official LineageOS builds?
NEW: You can! See this thread for more details.
For Android Verified Boot (AVB) to work, it must have the hash values for each of the system/vendor/boot/dtbo/etc. partitions stored in vbmeta. Official LineageOS builds for kebab do include the vendor.img in them along with everything else that is needed, however that is not true for all phones.
There are two "issues" that stop someone from using the official kebab builds:
LineageOS does not provide a pkmd.bin file to flash to your phone to include the public key in your AVB process (NEW: this thread shows you how to extract the key).
AVB is enabled in the official LineageOS builds but does not validate the hash trees during boot which limits the protection offered.
Ok, what messages do I see during the boot process then?
During a boot you will of course see the standard OnePlus power up screen, followed by the yellow "custom os" message and then the standard LineageOS boot animation.
For more details on AVB boot messages, see https://source.android.com/security/verifiedboot/boot-flow
So what does that patch to the Makefile do?
AOSP's default Makefile makes an assumption that when AVB is enabled, that all the img files will be available well before vbmeta.img is created. This is simply NOT true and AOSP seems to know this as well from the following comment in the Makefile:
Code:
# Not using INSTALLED_VBMETA_SYSTEMIMAGE_TARGET as it won't be set yet.
ifdef BOARD_AVB_VBMETA_SYSTEM
$(eval $(call check-and-set-avb-args,vbmeta_system))
endif
ifdef BOARD_AVB_VBMETA_VENDOR
$(eval $(call check-and-set-avb-args,vbmeta_vendor))
endif
These two calls eventual evaluate to returning the path to the partitions based upon the INSTALLED_*IMAGE_TARGET variable, which isn't created until later in the build process.
Because of this, the command to build vbmeta.img gets corrupted due to the missing make variable being empty and an invalid command line is passed to avbtool near the end of the build.
The corruption happens due to the fact that the following line from the original Makefile:
Code:
--include_descriptors_from_image $(call images-for-partitions,$(1))))))
Gets added to the avbtool call even if "$(call images-for-partitions,$(1))" turns out to be an empty string. Avbtool then throws an error message as it is expecting a parameter after the "--include_descriptors_from_image" flag that is added for the "empty" partition path.
The fix is to call "$(call images-for-partitions,$(1))" earlier, set it to a variable and check to make sure it isn't an empty string before letting the "--include_descriptors_from_image" be added to the avbtool command line to be used later.
This technically generates an incomplete vbmeta.img file during the build process, but since the signing process recreates it from scratch anyway; no harm, no foul.
Thank You's
Obviously to all of the members of the LineageOS team!
LuK1337 for supporting kebab
optimumpro for the OnePlus 5/5t re-locking guide (https://forum.xda-developers.com/oneplus-5/how-to/guide-relock-bootloader-custom-rom-t3849299)which inspired this one
Quark.23 for helping with the process and testing on enchilada for my previous guide (https://forum.xda-developers.com/t/...s-6t-with-a-self-signed-build-of-los.4113743/) with the Oneplus 6/6t and LineageOS 17.1
Is root with magisk possibe with an locked bootloader? Would that require signing the magisk
-patched boot.img or packing magisk into the boot.img at build time?
coloneyescolon said:
Is root with magisk possibe with an locked bootloader? Would that require signing the magisk
-patched boot.img or packing magisk into the boot.img at build time?
Click to expand...
Click to collapse
You would have to include magisk in the build process, if you tried to "patch" the boot image after signing it would fail to boot as it would no longer have the right hash and you'd get the "currupt OS" message.
Is it possible signing the boot image after patching it with magisk?
Hello,
I followed the exact steps, and The build failed for OnePlus 7 Pro (guacamole), with this error:
error: device/oneplus/sm8150-common/fod/Android.bp:16:1: "[email protected]us_msmnile" depends on undefined module "//device/oneplus/
common:[email protected]"
error: device/oneplus/sm8150-common/fod/Android.bp:16:1: "[email protected]us_msmnile" depends on undefined module "//device/oneplus/
common:[email protected]"
16:07:07 soong bootstrap failed with: exit status 1
#### failed to build some targets (10 seconds) ####
ahmed.elsersi said:
Hello,
I followed the exact steps, and The build failed for OnePlus 7 Pro (guacamole), with this error:
error: device/oneplus/sm8150-common/fod/Android.bp:16:1: "[email protected]us_msmnile" depends on undefined module "//device/oneplus/
common:[email protected]"
error: device/oneplus/sm8150-common/fod/Android.bp:16:1: "[email protected]us_msmnile" depends on undefined module "//device/oneplus/
common:[email protected]"
16:07:07 soong bootstrap failed with: exit status 1
#### failed to build some targets (10 seconds) ####
Click to expand...
Click to collapse
That looks like you're missing some of the proprietery blobs, did you verify LineageOS comipled successfully before making any changes? Did you use the extract files script or use the muppets repo?
WhitbyGreg said:
That looks like you're missing some of the proprietery blobs, did you verify LineageOS comipled successfully before making any changes? Did you use the extract files script or use the muppets repo?
Click to expand...
Click to collapse
Hello,
I did extract the proprietary blobs from payload-based.
Do you mean I should compile LinageOS successfully first using:
source build/envsetup.sh
breakfast guacamole
croot
brunch guacamole
before i follow the steps listed here in this guide??
Thank You
ahmed.elsersi said:
Hello,
I did extract the proprietary blobs from payload-based.
Do you mean I should compile LinageOS successfully first using:
source build/envsetup.sh
breakfast guacamole
croot
brunch guacamole
before i follow the steps listed here in this guide??
Thank You
Click to expand...
Click to collapse
Check the extraction script for errors or switch to the muppets, sometimes the extraction script isn't up to date.
In general, yes, make sure you have a version of LineageOS that compiles successfully, that way you know you have a valid base to start from.
Pre-requisites:
at least one successful build of LineageOS
at least one successful signing of your build with your own keys
Click to expand...
Click to collapse
WhitbyGreg said:
Check the extraction script for errors or switch to the muppets, sometimes the extraction script isn't up to date.
In general, yes, make sure you have a version of LineageOS that compiles successfully, that way you know you have a valid base to start from.
Click to expand...
Click to collapse
Thank You so much.
One last question if i may, can these steps applied on LinageOS 4 MicroG using the automated build by their docker image docker-lineage-cicd ?
Thank You
ahmed.elsersi said:
Thank You so much.
One last question if i may, can these steps applied on LinageOS 4 MicroG using the automated build by their docker image docker-lineage-cicd ?
Thank You
Click to expand...
Click to collapse
You'd have to modify the docker image from my understanding as it includes all the source and tools required to do the build.
Hello,
Kindly Please, Could you clarify what do you mean by ~/.android-certs/releasekey.key and ~/.android-certs/releasekey.key/ ??
I created my own signing keys, and the output contains releasekey.pk8 and releasekey.x509.pem, that is why I'm confused.
Note: I did a successful build of LineageOS with OEM unlock support and its option show in development menu and I flashed it to my OnePlus 7 Pro, I used only that option:
cd ~/android/lineageos/device/oneplus/sm8250-common
sed -i 's/^# OMX/# OEM Unlock reporting\nPRODUCT_DEFAULT_PROPERTY_OVERRIDES += \\\n ro.oem_unlock_supported=1\n\n# OMX/' common.mk
Thank You
ahmed.elsersi said:
Hello,
Kindly Please, Could you clarify what do you mean by ~/.android-certs/releasekey.key and ~/.android-certs/releasekey.key/ ??
I created my own signing keys, and the output contains releasekey.pk8 and releasekey.x509.pem, that is why I'm confused.
Click to expand...
Click to collapse
You might need to convert your pk8 in to plain text using openssl like so:
openssl pkcs8 -in releasekey.pk8 -out releasekey.key
Click to expand...
Click to collapse
WhitbyGreg said:
You might need to convert your pk8 in to plain text using openssl like so:
Click to expand...
Click to collapse
Thank You for the help.
I'm sorry, it did not work, that's what i got:
Error reading key
139625476420992:error:0909006C:EM routines:get_name:no start line:../crypto/pem/pem_lib.c:745:Expecting: ENCRYPTED PRIVATE KEY
WhitbyGreg said:
You might need to convert your pk8 in to plain text using openssl like so:
Click to expand...
Click to collapse
I used the releasekey.x509.pem file, it is a PEM certificate text file, the build failed.
Hello,
Kindly please, clarify what is releasekey.key stands for, is it the private key or the public ? Is it data file or text file.
the build fail to the same.
avbtool extract_public_key --key ~/keys/releasekey.x509.pem --output ~/public_key.key
/android/lineageos/out/host/linux-x86/bin/avbtool: Error getting public key: unable to load Public Key
140081520305536:error:0909006C:EM routines:get_name:no start line:../crypto/pem/pem_lib.c:745:Expecting: PUBLIC KEY
avbtool extract_public_key --key ~/keys/releasekey.pk8 --output ~/public_key.key
/android/lineageos/out/host/linux-x86/bin/avbtool: Error getting public key: unable to load Public Key
140477081752960:error:0909006C:EM routines:get_name:no start line:../crypto/pem/pem_lib.c:745:Expecting: PUBLIC KEY
ahmed.elsersi said:
Thank You for the help.
I'm sorry, it did not work, that's what i got:
Error reading key
139625476420992:error:0909006C:EM routines:get_name:no start line:../crypto/pem/pem_lib.c:745:Expecting: ENCRYPTED PRIVATE KEY
Click to expand...
Click to collapse
What commandline did you use exactly?
ahmed.elsersi said:
I used the releasekey.x509.pem file, it is a PEM certificate text file, the build failed.
Click to expand...
Click to collapse
You can't use that.
WhitbyGreg said:
You can't use that.
Click to expand...
Click to collapse
I'm trying to understand, What is releasekey.key file??, it contains private key or public key, or both, and is it a data file or text file??
I did this:
openssl x509 -in releasekey.x509.pem -pubkey -out releasekey.key
The outputfile is a text and contains the public key and the certificate
when i delete the certificate part and start the build, i get this error:
/android/lineageos/out/host/linux-x86/bin/avbtool: Error signing: unable to load Private Key
140394811372928:error:0909006C:EM routines:get_name:no start line:../crypto/pem/pem_lib.c:745:Expecting: ANY PRIVATE KEY
if i delete the public key part, i get this error:
/android/lineageos/out/host/linux-x86/bin/avbtool: Error getting public key: unable to load Public Key
139655441114496:error:0909006C:EM routines:get_name:no start line:../crypto/pem/pem_lib.c:745:Expecting: PUBLIC KEY
if i didn't change anything and used the output file releasekey.key and start the build, i get this error:
/android/lineageos/out/host/linux-x86/bin/avbtool: Error signing: unable to load Private Key
139736685180288:error:0909006C:EM routines:get_name:no start line:../crypto/pem/pem_lib.c:745:Expecting: ANY PRIVATE KEY
I did a successful LineageOS signed build with my own generated keys and flashed on my mobile and working fine.
So, Kindly please, Could you please just tell us, What is this releasekey.key file, and how can we generate this releasekey.key ?
Thank You
ahmed.elsersi said:
when i delete the certificate part and start the build, i get this error:
Click to expand...
Click to collapse
Why did you delete anything?
ahmed.elsersi said:
So, Kindly please, Could you please just tell us, What is this releasekey.key file, and how can we generate this releasekey.key ?
Click to expand...
Click to collapse
releasekey.key is the plaintext private key for the release certificate.
WhitbyGreg said:
Why did you delete anything?
releasekey.key is the plaintext private key for the release certificate.
Click to expand...
Click to collapse
Following the LineageOS signing build steps, these files are generated:
media.pk8, networkstack.pk8, platform.pk8, releasekey.x509.pem, shared.x509.pem, testkey.x509.pem, media.x509.pem , networkstack.x509.pem , platform.x509.pem , releasekey.pk8, shared.pk8, testkey.pk8
I'm sorry, for the last 2 days I'm spinning around myself to figure out how to complete your guide and get a successful build.
Could you please, if you do not mind, just tell me how to generate this releasekey.key plaintext private key for the release certificate?
Your help is highly appreciated, thank you