Related
DISCLAIMER: I am in no way responsible for you breaking your phone or your computer. You the reader/user/dev/compiler understand that you enter into this agreement freely with no expectations that everything will work 100% of the time.
This is in no way a means of stealing people away from Shrikes guide. If you do not have ubuntu installed as a complete os/ or do not intend to maked modifications to system files etc. Then please use the guide for compiling roms using a virtual box here (CM9 The complete noobs guide to building CM9 in a virtual machine)
Still with me. COOL. So you now have either a dual boot or a fully thrashed Linux machine. I will be using my Vaio VPCF114 box with Ubuntu 12.10 to make this guide. This is also compatible with 12.04 if you have not yet upgraded. I am not sure if the same goes for Redhat/Fedora or Backtrack 5. My work here is a compilation of years of doing research and compiling my own roms.
This guide is to help people that have little knowledge of linux get a base idea of where to start to make their own roms and kernels. Part 1 will be building your box and compiling a rom. Part 2 will be how to make and grab your Kernel.
First lets get Dropbox from here DROPBOX This is good for backing up your libs and sharing files with other Devs.
What you need:
1) A Windows computer, preferably with a CPU that supports 64-bit. Your pc/laptop does no need to have 64-bit windows on it, your CPU just needs to support the hardware. I think at this day and age, almost all devs have a 64-bit box. You will need this so you can make a dual boot box.
2) Plenty of memory. I recommend at least 4GB on the host computer. You can make it work on less, but more is better.
3) At least 60GB of free hard drive space during the install, but i'm sure you already know that and have gigs upon gigs of free space. If you do not know how much space you have, go to settings>details and it will tell you. Note: The source download is approximately 8.5GB in size. You will need over 30GB free to complete a single build, and up to 100GB (or more) for a full set of builds.
4) Lastly a good book, tab, second pc, whatever because this is not a quick process. And compiling roms literally takes hours.
5) Most importantly UBUNTU 12.10. If on the off hand you do not have it, you can pick it up at Ubuntu Central
OK YOU READY. LET'S GET CRACKING. First you need to set up Java on your box. Then grab a couple of programs you will need for editing files Go to your UBUNTU SOFTWARE CENTER. In the search bar in the top right type in Java. We will be installing Java 6 Runtimes.
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
The Sun JDK is no longer in Ubuntu's main package repository. In order to download it, go here JAVA
If the link does not work, you want accept the license agreement and download jdk-6u35-linux-x64.bin
Once it done:
chmod a+x ~/Downloads/jdk-6u35-linux-x64.bin
sudo mv ~/Downloads/jdk-6u35-linux-x64.bin /usr/lib
cd /usr/lib
sudo ./jdk-6u35-linux-x64.bin
Now lets finish the install and make it default: (Remember to enter in the lines one at a time)
sudo mv jdk1.6.0_35/ jvm/
sudo rm jdk-6u35-linux-x64.bin
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.6.0_35/jre/bin/java 1
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.6.0_35/bin/javac 1
sudo update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/jdk1.6.0_35/bin/jar 1
sudo update-alternatives --install /usr/bin/javadoc javadoc /usr/lib/jvm/jdk1.6.0_35/bin/javadoc 1
IF YOU HAVE MULTIPLE JAVA JDK'S INSTALLED FOR OTHER PROJECTS YOU WILL WANT TO MAKE 1.6 THE DEFAULT.
On each command you will have to select the version of java you want to use. This command is helpful if you also do other coding.
sudo update-alternatives --config java
sudo update-alternatives --config javac
sudo update-alternatives --config jar
sudo update-alternatives --config javadoc
Java 6: for Gingerbread and newer
Java 5: for Froyo and older
Note: The lunch command in the build step will ensure that the Sun JDK is used instead of any previously installed JDK.
Now what we need:
We need to open up a terminal window and download packages.
Remember you will need to input your password after each line.
sudo add-apt-repository ppa:git-core/ppa
and
sudo apt-get update
(this will download all of the Quantal updates for universe and multiverse.
Next we want to install some Libs and Binaries. (You can copy and paste this into your terminal)
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 openjdk-6-jdk tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 schedtool gcc-multilib g++-multilib pngcrush
(don't worry. some of the libs my fail. This happens as google changes their sources)
Now we need to tell the computer how to "REPO", this is where you will tell it to handle the Andorid sources via the Git command.
cd ~
mkdir -p bin
export PATH=${PATH}:~/bin
Once done you can use "echo $PATH" to see all of your path directories.
sudo apt-get install curl
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
(this will get you the repo script)
Now lets give it executable permissions by using chmod
chmod a+x ~/bin/repo
Now that we can repo
Lets setup the Android SDK. (Get a beer/coffee/soda, this will take a second)
Go to http://developer.android.com/sdk/index.html And install the ADT bundle for Linux.
Install the SDK and Eclipse IDE
Unpack the ZIP file (named adt-bundle-linux.zip) and save it to an appropriate location, such as a "Development" directory in your home directory.
Open the adt-bundle-linux/eclipse/ directory and launch eclipse.
That's it! The IDE is already loaded with the Android Developer Tools plugin and the SDK is ready to go. To start developing, read Building Your First App on the developer site.
Caution: Do not move any of the files or directories from the adt-bundle-linux directory. If you move the eclipse or sdk directory, ADT will not be able to locate the SDK and you'll need to manually update the ADT preferences.
Now to just add the tools to our $Path.
gedit .bashrc
Scroll to very bottom, under last fi input
export PATH=${PATH}:~/adt-bundle-linux/sdk/tools
export PATH=${PATH}:~/adt-bundle-linux/sdk/platform-tools
That was pretty painless.
Now lets start some cool stuff.
TestSigning
Click on your desktop menu bar and go into your home folder. Press Ctrl and h together on your keyboard to show hidden folders. Anything marked with a . in front of it is hidden, we are looking for a folder name .gnome2, go into it and look for nautilus-scripts. Once inside this folder, right click on a empty space and select create document and then empty file and name it sign. Open up that empty document and copy and paste this script from dumbfaq on xda
Code:
#!/bin/bash
# Update the Loc var to where YOU stored the testsign.jar file !
SUCCESS=
Loc=~/android/source/
for arg
do
TMP=$(ls $arg | sed 's/\(.*\)\..*/\1/')
EXT=${arg##*.}
java -classpath "$Loc"testsign.jar testsign "$arg" "$arg"-signed 2> /tmp/signTmp
SUCCESS=$?
if [ $SUCCESS -eq 1 ]
then
zenity --info --title "Sign APK" --text "signing FAILED! \n`cat /tmp/signTmp`"
exit 1
fi
mv $TMP.$EXT-signed $TMP-signed.$EXT
done
zenity --info --title "Sign APK" --text "signing completed!"
Save and exit out and right click on our new script and select properties. select the permissions tab and look for a check box that says allow executing as a program. click on it and now we have a pretty little script that we can just right click on a update.zip file and sign with our test keys for flashing. You will also need the testsign.jar from the bottom of this guide.
Now lets do a couple things so that we can get our Phones Vendor ID.
Type in your terminal
lsusb
While your phone isconnected to see our vendor id and you will something like this. Note that for the Rezound our vendor id is
Bus 002 Device 003: ID 0bb4:0ccd HTC (High Tech Computer Corp.)
In this case the Vendor Id is “18d1″ and the Product ID is “4e12″. Please keep in mind that the Vendor ID for HTC changed from “0bb4″ to “18d1″. The older HTC phones like the G1 have a Vendor ID of “0bb4″.
Now that we have that, we can make our rules for for connecting to adb
sudo gedit /etc/udev/rules.d/51-android.rules
Paste
SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0502", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="12d1", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1004", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="22b8", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fce", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0489", MODE="0666"
SUBSYSTEM==”usb”, ATTRS{idVendor}==”18d1″, SYMLINK+=”android_adb”, MODE=”0666″
SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", MODE="0666", GROUP="plugdev"
Save and exit
Reboot your computer so that all of the changes we have made can Take effect.
OK. All setup and ready to start making a Rom with your name on it.
IF you are already running AOSP on your phone, you can back up you system now Do this by:
cd ~/
mkdir stock
cd stock
adb pull /system/ ~/stock/
This will dump your entire system directory into the stock folder. This is good so you always have a working system. Now zip the folder and tuck it away for safe keeping.
Now the MEAT AND POTATOES. Grabbing the Source. "CYANOGENMOD"
cd ~/
mkdir -p android/source
touch ~/.netrc
cd ~/android/source
sudo apt-get install git
sudo sysctl -w net.ipv4.tcp_window_scaling=0 (remvoes the overstack flow problem that causes some repo jobs to hang)
repo init -u git://github.com/Chad0989/android.git -b ics
(Note: If you want to compile a jellybean rom, just replace the ics with jellybean!)
Once you do this, it's going to ask you for your email. This is how you will log back into the repo in the future. So answer the questions correctly.
Now we will sync the Repo and set it to run.
repo sync -j4
-j# (# means twice the amount of cores in your computer) means jobs. I have an i7 processor and a pretty decent internet connection, so i'm running max jobs at once for faster sync) Be patient. It's still going to take a while to clone the directory.
Once done with the Sync we want to setup our device.
This is where we get the pre-built part of our rom.
First we will
./vendor/cm/get-prebuilts
Probably all that will be left directly after the repo will be the Terminal service for android.
Now we are about ready to compile our Rom:
cd ~/android/source
repo sync (it should only take a moment this time)
. build/envsetup.sh
make clobber
Now you can compile your rom using the brunch command (This will take about 1 to 1 1/2 hours depending on your box)
brunch vigor
Now you can go to the output box and pick up your freshly made Rom.
Reserved for Kernel
Changed Repo from CyanogenMod to Chad0989 for easier Vigor integration.
21NOV12: Change Repo from Chad0989 to Dragonstalker github.
Change Repo from DragonStalker to Chad0989 github
Modified Testsign script to reflect changed ADT Tools location.
First, looks interesting i might look into this when i boot into Ubuntu next time.
jon7701 said:
First, looks interesting i might look into this when i boot into Ubuntu next time.
Click to expand...
Click to collapse
i wanted to show people how i do my own personal roms and kernels. With this setup, you can make roms for multiple devices and also use Eclipse to make apps if thats your bag baby.
dragonstalker said:
i wanted to show people how i do my own personal roms and kernels. With this setup, you can make roms for multiple devices and also use Eclipse to make apps if thats your bag baby.
Click to expand...
Click to collapse
Nice, if i can figure out a little more about how to dev and stuff maybe ill make my own rom one day.
Wow. So going to do this right now. Thanks for your effort on this.
Sent from my ADR6425LVW using xda premium
I can't wait for the final act! I am going to try this so I can get my hands on some jelly beans.
Vedor ID
Quick question. I notice that you mention that "in this case the Vedor ID is 18d1" but in your screenshot it say 0bb4. You have some clarification after that and I'm not sure I understand it 100%. My rezound show the 0bb4 for vedor ID as well. I guess what I'm asking is if you could clarify the statement about the Vendor ID? Thanks, sorry if this is a dumb question.
Very nice guide. Extremely thorough which makes a great tutorial.
vonhinkle said:
Quick question. I notice that you mention that "in this case the Vedor ID is 18d1" but in your screenshot it say 0bb4. You have some clarification after that and I'm not sure I understand it 100%. My rezound show the 0bb4 for vedor ID as well. I guess what I'm asking is if you could clarify the statement about the Vendor ID? Thanks, sorry if this is a dumb question.
Click to expand...
Click to collapse
It shows it as 0bb4. But as for the drivers Ubuntu uses. The Vendor id for High Tech Computers is 18d1. I was using a stock rom to pull the vendor Id from and for some reason, HTC has never changed it on there.
GrayTheWolf said:
Very nice guide. Extremely thorough which makes a great tutorial.
Click to expand...
Click to collapse
I teach networking to and development to the Army. I took the same ideology into this guide. Not just tell you how to do it, but explain why it works. I will, as thing change try to keep this updated, and keep up with Shrike as he learns new things. Thank Shrike for making me realize that we didn't have a guide for people that do run Ubuntu, and need to know how to set up.
Ok the updated Guide is online. Please tell me if anything is not correct. I'm only Human. Working with Snuzzo for and Updated Kernel Optimization section and hopefully Chad with the Repo..
More to Follow .............................
I'm compiling right now. The guide was good, but there were some extra steps I had to take to get this far. My Rezound is old, so my android.rules file needed the 0bb4 id (I got rid of the ATTR{idproduct} part). Also adb wasn't connecting when using filename 51-android.rules, so I used 70-android.rules and mode 0666 instead of 0600, then adb connected. I think the 70 was the fix, but mode 0666 I found from other, older guides on setting up adb, I don't know what change that makes but it's probably unnecessary. Finally, on compile I was getting errors like bison missing and other missing also. That big line with all the installs must have not worked for all the programs, so I just installed the missing ones individually per error message. There may have been other issues that I am forgetting but nothing too hard to figure out, of course I have worked a tiny bit with Ubuntu over the past 5 years.
Still compiling, so it seems to be working. I used Chad0989's repo, and jellybean! Thanks for the guide, if I have any problems I shall post them.
drkow19 said:
I'm compiling right now. The guide was good, but there were some extra steps I had to take to get this far. My Rezound is old, so my android.rules file needed the 0bb4 id (I got rid of the ATTR{idproduct} part). Also adb wasn't connecting when using filename 51-android.rules, so I used 70-android.rules and mode 0666 instead of 0600, then adb connected. I think the 70 was the fix, but mode 0666 I found from other, older guides on setting up adb, I don't know what change that makes but it's probably unnecessary. Finally, on compile I was getting errors like bison missing and other missing also. That big line with all the installs must have not worked for all the programs, so I just installed the missing ones individually per error message. There may have been other issues that I am forgetting but nothing too hard to figure out, of course I have worked a tiny bit with Ubuntu over the past 5 years.
Still compiling, so it seems to be working. I used Chad0989's repo, and jellybean! Thanks for the guide, if I have any problems I shall post them.
Click to expand...
Click to collapse
Thanks for the headsup. Android.source.com said to change it to that. SO I will change it back.
As for the progs that did not install. Android Source pulls progs, i've just been to lazy to go over the tag and remove the ones that have been obsoleted. I will take care of that this weekend.
Schweet! I compiled my own rom! Syncing took about 30 mins, compiling also 30 mins. I have a 4.4 ghz oc'd Core i5 with 8 gig 1866 ram. Now I need to learn some simple things, like how to rename the rom package, edit the installation text, add some tweaks, etc.
What gapps do you use for CM10? I downloaded this one http://wiki.cyanogenmod.org/wiki/Latest_Version/Google_Apps for CM10, but it doesn't list xdpi, and it failed flashing. So I used this one instead http://forum.xda-developers.com/showthread.php?t=1965290 and it worked.
edit: google search seems to force close with the gapps I used.
drkow19 said:
Schweet! I compiled my own rom! Syncing took about 30 mins, compiling also 30 mins. I have a 4.4 ghz oc'd Core i5 with 8 gig 1866 ram. Now I need to learn some simple things, like how to rename the rom package, edit the installation text, add some tweaks, etc.
What gapps do you use for CM10? I downloaded this one http://wiki.cyanogenmod.org/wiki/Latest_Version/Google_Apps for CM10, but it doesn't list xdpi, and it failed flashing. So I used this one instead http://forum.xda-developers.com/showthread.php?t=1965290 and it worked.
edit: google search seems to force close with the gapps I used.
Click to expand...
Click to collapse
Note: There is a reason that me and Chad have asked not to compile CM10 roms. The code is not complete yet.
If you found gapps that work, then that's a major. Post to the thread where you found it and that it works. To rename a rom package, you can just right click>rename and name it what you want it. To rename it so it shows up inside the rom on the phone for details is different.
I would not advise it if you don't know what you are doing, but you have to edit the build.prop. As for tweaks. Depends on what tweaks you want to change. Android Developer site is where i get all my tweaks, and i get some from other devs. Glad you are joining the community.
Happy building and thanks for the contribution.
issues
dragonstalker said:
Note: There is a reason that me and Chad have asked not to compile CM10 roms. The code is not complete yet.
If you found gapps that work, then that's a major. Post to the thread where you found it and that it works. To rename a rom package, you can just right click>rename and name it what you want it. To rename it so it shows up inside the rom on the phone for details is different.
I would not advise it if you don't know what you are doing, but you have to edit the build.prop. As for tweaks. Depends on what tweaks you want to change. Android Developer site is where i get all my tweaks, and i get some from other devs. Glad you are joining the community.
Happy building and thanks for the contribution.
Click to expand...
Click to collapse
hey guys ive been compiling on 12.04 still new to this but ive set up a new enviorment useing this guide with 12.10 im getting this error though
Import includes file: /home/ken/CM10/out/target/product/i577/obj/SHARED_LIBRARIES/audio.primary.msm8660_intermediates/import_includes
make: *** No rule to make target `/home/ken/CM10/out/target/product/i577/obj/lib/libaudioalsa.so', needed by `/home/ken/CM10/out/target/product/i577/obj/SHARED_LIBRARIES/audio.primary.msm8660_intermediates/LINKED/audio.primary.msm8660.so'. Stop.
make: *** Waiting for unfinished jobs....
target StaticLib: libc_nomalloc (/home/ken/CM10/out/target/product/i577/obj/STATIC_LIBRARIES/libc_nomalloc_intermediates/libc_nomalloc.a)
any help would be appreatiated thanks
dragonstalker said:
Note: There is a reason that me and Chad have asked not to compile CM10 roms. The code is not complete yet.
If you found gapps that work, then that's a major. Post to the thread where you found it and that it works. To rename a rom package, you can just right click>rename and name it what you want it. To rename it so it shows up inside the rom on the phone for details is different.
I would not advise it if you don't know what you are doing, but you have to edit the build.prop. As for tweaks. Depends on what tweaks you want to change. Android Developer site is where i get all my tweaks, and i get some from other devs. Glad you are joining the community.
Happy building and thanks for the contribution.
Click to expand...
Click to collapse
Roger that. I will definitely try to do some build.prop tweaks, and then move on from there. Thanks again for the guide! Meanwhile I am emailing Ubuntu about their re-installer option to erase and reinstall Ubuntu, which wipes out all partitions, not just the current Ubuntu partition as I figured would happen. It wiped my main NTFS partition with all my stuff, without even a warning! Currently using Active Partition Recovery, but I fear since I compiled CM on that whole harddrive that most of the contents were probably overwritten. :crying:
drkow19 said:
Roger that. I will definitely try to do some build.prop tweaks, and then move on from there. Thanks again for the guide! Meanwhile I am emailing Ubuntu about their re-installer option to erase and reinstall Ubuntu, which wipes out all partitions, not just the current Ubuntu partition as I figured would happen. It wiped my main NTFS partition with all my stuff, without even a warning! Currently using Active Partition Recovery, but I fear since I compiled CM on that whole harddrive that most of the contents were probably overwritten. :crying:
Click to expand...
Click to collapse
Never heard of that happening before. Let me know what you find out.
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
I started this thread because my pre-paid phone is not a supported device.
I have to start this over from scratch, so no need to dwell in the past. The reason I started learning this stuff was to help others. I don't even use custom roms in my phone. I have always liked computers, and anything to do with electronics. I don't care for this N00Bz word. I don't care for people that look down on another human being for anything. God above made us all differently for a reason. Society made sellers and buyers, translated to the Android community as builders and users.. My old lady thinks ROOTING is something you do in the garden.. My new project has nothing to do with Cyanogenmod,AOKP, or JellyBeer. I like to do things that no one has done yet. That is why I am not going to reveal my new Source code. Seems like everytime I come up with an idea somebody else gets "motivated" to do it. lol To be honest I will be working on two seldom done roms, i'm repo sync'n the first one right now. Also, during my stay at XDA- i will make a very detailed tutorial on building from Source. Starting with
1. dual and tri booting your PC, for the Windows lovers. (u need Linux 2 build)
2. Learning to use "Google" , this is your new best friend, It never gets tired of your questions, it never runs out of answers, and open 24 hours a day...
3. Learn basic linux commands ....cd, su, apt-get, etc
4. Setting up your build by yourself
5. Setting up a pre-made build box (see step 1)
6. Learn to use Github
7. Use your newly acquired knowledge to "git" your Sources
8. Build a device tree
9. Build a kernel
10. Put together a script to pull Prop files
11. Building
12. Beating your head on the desk when you can't figure out why it wont build, boot , and why you have so many "bugz"
I AM NOT A DEVELOPER
But when i finish this tutorial, i will be.
this tutorial will not cover anything to do with "cooking" a rom, that is cheating...lol
Now I'm going to try my luck at these new $ROM$.
Thank you for visiting and God bless you
"MORE TO FOLLOW"
In the Beginning ,there was DARKNESS and cheap phones
STEP 1
Windows 7 and Ubuntu,BBQ, or Mint,etc,Build boxes or from live CD. Despite their opposing missions, can get along like best pals on a single computer. Here's how to set up a dual boot or tri boot system that lets you enjoy the best of both worlds in perfect harmony. I know this works because it is how my system at home and on my laptop are setup.
HINT: Linux has around 100 viruses, Windows , it can't be counted. In linux it is harder to get viruses on a PC. Also, Windows viruses don't carry over to your Linux build OS.
Seen in this comparison article
"The expression is intended to suggest that proprietary software is more secure by virtue of its closed nature. If hackers can't see the code, then it's harder for them to create exploits for it--or so the thinking goes.
Unfortunately for Windows users, that's just not true--as evidenced by the never-ending parade of patches coming out of Redmond. In fact, one of Linux's many advantages over Windows is that it is more secure--much more. For small businesses and other organizations without a dedicated staff of security experts, that benefit can be particularly critical."
http://www.pagestart.com/win7heptaboot01.html
1. Make sure you have CD's or USB's with your Distro's on them. I use image burn. If it's Windows, PAY FOR IT!!! if it's Linux, IT'S FREE!!!
2. You are going to need extra space on your hard drive, or PG suggested you can use an extra hard drive.
a. Each repo is going to use up 30 GB
b. Your build tools maybe 5 GB
c. 300 mb for the boot
d. 5-10 GB for the SWAP
e. I use a 1TB for a tri-boot ,500 GB for Windows 7- 250 GB for each of my Linux distros
f. RAM,RAM,RAM,RAM and then some more RAM-- u can thank me later.
g. If you don't have RAM, like on my laptop, I just hooked it to my Internet connection, and let it pull Source while I was sleeping.
3. I like to start fresh--Make a backup, Then I use "KILLDISK" ,it is free and it will write zero's on your hard drive. "Warp, Why do u do that?"
I don't like viruses.
4. Use your Recovery partition or your Windows XP/VISTA/7/8 disk to install the OS.
5. Many hours later, boot into Windows, and hit Start..type diskmgmt.msc
6. If you haven't partitioned a hard drive ,Google it, and learn, this is not a game.
7. Dual boot = 2 primary partitions Tri boot = 3 primary partitions.
Logical is OK for Linux, but dynamic is no good.
8. Pop that fresh copy of your distro in
9. If you are new to Linux "Google it"
10. If you press install alongside windows, it will search out the empty partition and install
11. I don't like GRUB2.
12 Get the non-commercial version of "EasyBCD for Windows, install it, u will be needing it.
13. This is also a free app Google "use easy BCD for dual boot"
14. The only other step needed on the tri boot setup is logging into the first Linux distro u install, open terminal and execute update-grub2 . after everything else is done...
15. If you opted for the "Build Box, skip the setting up build step....
There is also another method to installing Linux on a Laptop, or a stubborn PC with Graphics issues and that is with the "Alternate Ubuntu installer"
I have only got this to work on 12.04 lots with recovery failsafex mode
REMOVE
SYSTEM RESERVED:
THIS CAN MESS UP YOUR PC:
I'M ONLY ADDING THIS FOR ADVANCED USERS:
ALL THE STEPS ARE HERE AT THIS LINK, BUT I USED WHATS IN THE CODE BOX AND IT WORKED FOR ME.
http://www.terabyteunlimited.com/kb/article.php?id=409
Code:
Open Disk management ,
give SYSTEM a drive letter of e:
Run CMD as Admin
reg unload HKLM\BCD00000000 (if you get an ERROR: bla bla bla) then this may already be removed)
robocopy e:\ c:\ bootmgr
robocopy e:\Boot C:\Boot /s
dir c:\ /ah
If the bootmgr file and the Boot folder show up in the list, the procedure was successful.
bcdedit /store c:\boot\bcd /set {bootmgr} device partition=C:
bcdedit /store c:\boot\bcd /set {memdiag} device partition=C:
Close the Command Prompt window.
Return to Disk Management
Right-click on the Windows partition and select Mark Partition as Active
IF YOU HAVE TO ASK "WHY" I DID THIS ...DON'T DO IT (see number 7.) also easyBCD can do this process as well
Then came GOOGLE!
STEP 2
This is a SIMPLE STEP...
WWW.GOOGLE.COM
Not www.goggle.com which is a real site, made by Hack3rz. it will mess your PC up.
This step is not limited to one search engine, Google is just my preferred one, because it links in UTUBE in search results and i like it.
Here is a list of other search engines.
Code:
General
No. Name
1 Baidu
2 Bing
3 Blekko
4 DuckDuckGo
5 Exalead
6 Gigablast
7 Google
9 Sogou
10 Soso.com
11 Volunia
12 Yahoo!
13 Yandex
14 Youdao
P2P search engines
No. Name
1 FAROO
2 Seeks
3 YaCy
Metasearch engines
No. Name
1 Blingo
2 Yippy
3 DeeperWeb
4 Dogpile
5 Excite
6 Harvester42
7 HotBot
8 Info.com
9 Ixquick (StartPage)
10 Kayak & SideStep
11 Mamma
12 Metacrawler
13 Mobissimo
14 Otalo English
15 PCH Search and Win
17 WebCrawler
Geographically limited scope
No. Name
1 Accoona
2 Alleba
3 Ansearch
4 Biglobe
5 Daum
5 Egerin
6 Goo
7 Guruji.com
8 Leit.is
9 Maktoob
10 Miner.hu
11 Najdi.si
12 Naver
13 Onkosh
14 Rambler
15 Rediff
16 SAPO
17 Search.ch
18 Sesam
19 Seznam
20 Walla!
21 Yandex.ru
22 Yehey!
23 ZipLocal
I got this list from using "Google"
1. you need to know how many MB in a GB , Google it =1024
2. You need a copy of a missing file ...
3. Anything you aren't sure of.....
4. If you can't find it then go to XDA, Android Forums, unleashedprepaids.com, etc and Search it. Chances are somebody has had the same problem as you.. DONE STEP 2
No, You mean I have to learn something to make a $ROM$
STEP 3
Unix commands
Note that there are thousands of commands available on a typical unix box. In bash, just hit the "Tab" key twice and say yes, to display the the commands currently available on your machine. A standard unix operating system lists currently thousands of commands. Type x to list all commands starting with x. The following list contains some of the more frequently used programs.
Code:
Access Control
exit - terminate a shell (see "man sh" or "man csh")
logout - sign off; end session (C shell and bash shell only
passwd - change login password
rlogin - log in remotely to another UNIX system
ssh - secure shell
slogin - secure version of rlogin
yppasswd - change login password in yellow pages
Communications
mail - send and receive mail
mesg - permit or deny terminal messages and talk requests
pine - send and receive mail
talk - talk to another logged-in user
write - write to another logged-in user
Programming Tools
as - assembler, specific to each machine architecture
awk - pattern scanning and processing language
bc - online calculator
cc - C compiler
csh - C shell command interpreter
dbx - source-level debugging program
f77 - Fortran compiler
gdb - GNU Project debugger
gprof - display profile of called routines
kill - kill a process
ld - the UNIX loader
lex - generate lexical analysis programs
lint - check C source code
make - maintain large programs
maple - symbolic mathematics program
math - symbolic mathematics program
nice - run a command at low priority (see "man nice" or "man csh")
nohup - run a command immune to hangups
pc - Pascal compiler (xlp on ADS)
perl - Popular script interpreter
prof - display profile data
python - Python programming language
sh - Bourne shell command interpreter
yacc - generate input parsing programs
xcalc - graphical calulator under x
Documentation
apropos - locate commands by keyword lookup
find - locate file (i.e. find . -name *.tex -print)
info - start the info explorer program
man - find manual information about commands
whatis - describe what a command is
whereis - locate source, binary, or man page for a program
Editors
emacs - screen-oriented text editor
pico - screen-oriented text editor (renamed called nano)
sed - stream-oriented text editor
vi - full-screen text editor
vim - full-screen text editor ("vi-improved")
File and Directory Management
cd - change working directory
chmod - change the protection of a file or directory
chown - change owner (or group) of a file or directory
chgrp - change group of a file or directory
cmp - compare two files
comm - select/reject lines common to two sorted files
cp - copy files
crypt - encrypt/decrypt files (CCWF only)
diff - compare the contents of two ASCII files
file - determine file type
grep - search a file for a pattern
gzip - compress or expand files
ln - make a link to a file
ls - list the contents of a directory
lsof - list of open files
mkdir - create a directory
mv - move or rename files and directories
pwd - show the full pathname of your working directory
quota - display disk usage and limits
rm - delete (remove) files
rmdir - delete (remove) directories
stat - status of file (i.e. last access)
sync - flush filesystem buffers
sort - sort or merge files
tar - create or extract archives
tee - copy input to standard output and other files
tr - translate characters
umask - change default file protections
uncompress - restore compressed file
uniq - report (or delete) repeated lines in a file
wc - count lines, words, and characters in a file
Code:
File Display and Printing
cat - show the contents of a file; catenate files
fold - fold long lines to fit output device
head - show first few lines of a file
lpq - examine the printer spooling queue
lpr - print a file
lprm - remove jobs from the printer spooling queue
more - display a file, one screen at a time
less - like more with more features
page - like "more", but prints screens top to bottom
pr - paginate a file for printing
tail - show the last part of a file
zcat - display a compressed file
xv - show print, manipulate images
gv - show ps and pdf files
xpdf = shopw pdf files (use gv)
File Transfer
ftp - transfer files between network hosts
rsync - fast and flexible sync between computers
scp - secure version of rcp
Miscellaneous
alias - define synonym commands
chquota - change disk quota on ACITS UNIX systems
chsh - change default login shell
clear - clear terminal screen
echo - echo arguments
pbm - portable bitmap manipulation programs
popd - pop the directory stack (C shell only)
pushd - push directory on stack (C shell only)
script - make typescript of terminal session
setenv - set an environment variable (C shell only)
stty - set terminal options
News/Networks
netstat - show network status
rsh - run shell or command on another UNIX system
ssh - secure-shell version of rsh
Process Control
bg - put suspended process into background
fg - bring process into foreground
jobs - list processes
^y - suspend process at next input request
^z - suspend current process
Status Information
clock - determine processor time
date - show date and time
df - summarize free disk space
du - summarize disk space used
env - display environment
finger - look up user information
history - list previously issued commands
last - indicate last login of users
lpq - examine spool queue
manpath - show search path for man pages
printenv - print out environment
ps - show process status
pwd - print full pathname of working directory
set - set shell variables (C shell, bash, or ksh)
spend - lists year-to-date ACITS UNIX charges
stty - set terminal options
time - timing programs
top - list top cpu processes
uptime - show system load, how long system has been up
w - show who is on system, what command each job is executing
who - show who is logged onto the system
whois - Internet user name directory service
whoami - who owns the shell
Image Processing
gimp - photoshop type image processing program
xfig - drawing program
xv - image viewer
xvscan - scan picture
xpaint - paint program
kpaint - kde paint program
Sound
mplayer - mpg player
realplay - realaudio player
timidity - midi to wav converter and player
xmms - mp3 player
Text Processing
abiword - open source word processor
addbib - create or extend bibliographic database
col - filter reverse line feeds
diction - identify wordy sentences
diffmk - mark differences between files
dvips - convert TeX DVI files into PostScript
explain - explain phrases found by diction program
grap - pic preprocessor for drawing graphs
hyphen - find hyphenated words
ispell - check spelling interactively
latex - format text in LaTeX (based on TeX)
pdfelatex - latex with pdf output
latex2html - Latex to html
lookbib - find bibliography references
macref - make cross-reference listing of nroff/troff macro files
ndx - create a subject-page index for a document
neqn - format mathematics with nroff
nroff - format text for simple display
pic - make simple pictures for troff input
psdit - filter troff output for Apple LaserWriter
ptx - make permuted index (not on CCWF)
refer - insert references from bibliographic databases
roffbib - run off bibliographic database
sortbib - sort bibliographic database
spell - find spelling errors
ispell - interactive spell checker
style - analyze surface characteristics of a document
tbl - format tables for nroff/troff
tex - format text
tpic - convert pic source files into TeX commands
wget - grab webpage
X windows
grabmode - info on screen: i.e. "1152x864" 51.213kHz/56.59Hz
import - grab window (i.e. import ppm:- >out.ppm)
xdpyinfo - number of colors
xkill - kill xwindow
xlock - lock screen
xterm - xterminal
xwininfo - information on open window
Web
html2ps - html to ps
latex2html - latex to html translator
lynx - text based webbrowser
netscape - webbrowser
sitecopy - sitecopy is for easily maintaining remote web sites.
weblint - html sytax and style checker
MOST OF THESE YOU WON'T USE...
All by myself, I did it!!
STEP 4
This next step is not easy, it is time-consuming. So if you chose a "Build Box" I understand..
Lucky for you, i have already found everything for you , So split your screen .
On one side a fresh terminal, on the other side my tutorial, and copy/paste from the beginning of part B).
HINT: When adding any file with apt-get. Watch for anything being removed and anything being added. Also copy any SUGGESTED programs to a text- editor ,research them and add them if you like..
Also when adding things with the command--- $ sudo apt-get install , numerous items can be added behind the command, but i recommend doing it one by one.
This is because of obsoleted software or missing software errors.
This is only going to be a basic list: Seperated in two parts, by A)what you need and B)how to get it.
A) TOOLS OF THE TRADE:
1. Compile Dependencies (libs)
2. Python 2.7.3 (3.2 and 3.3 opt.)
3. GNU MAKE (3.81 or 3.82)
4. Java JDK 6.xx ( not 7)
5. Android SDK
6. ADB & Fastboot
7. USB Configs
8. Repo command
9. Add everything to the PATH in ./bashrc
When you see this symbol "$", it means you are in terminal, but not as "ROOT"
Although if you see this symbol # , you are the "ROOT" user .
Your directory name will be in Red as well.
"But Warp, I don't know how to ROOT my Linux Box"
You don't say...
terminal: $ sudo passwd root
this will then open up Unix for you
add some passwords /confirm password /REMEMBER YOUR PASSWORD!!!
My password is ********** lol.
But Warp, I'm a brave "new user" I want "ROOT" access to file manager..
For Ubuntu
Terminal: $ gksudo nautilus
enter password-- DONE
For Mint (cinnamon)
Terminal: $ gksudo nemo
enter password-- DONE
For Mint (Mate)
Terminal: $ gksudo caja
enter password-- DONE!!!
B)
Libs
1..
$ sudo apt-get install git
sudo apt-get install git-core
sudo apt-get install gnupg
sudo apt-get install flex
sudo apt-get install bison
sudo apt-get install gperf
sudo apt-get install build-essential
sudo apt-get install zip
sudo apt-get install curl
sudo apt-get install zlib1g-dev
sudo apt-get install libc6-dev
sudo apt-get install lib32ncurses5-dev
sudo apt-get install ia32-libs
sudo apt-get install x11proto-core-dev
sudo apt-get install libx11-dev:i386
sudo apt-get install libreadline6-dev:i386
sudo apt-get install lib32z-dev
sudo apt-get install libgl1-mesa-glx:i386
sudo apt-get install libgl1-mesa-dev
sudo apt-get install g++-multilib
sudo apt-get install mingw32
sudo apt-get install tofrodos
sudo apt-get install python-markdown
sudo apt-get install libxml2-utils
sudo apt-get install xsltproc
sudo apt-get install readline-common
sudo apt-get install libreadline6-dev
sudo apt-get install libreadline6
sudo apt-get install lib32readline-gplv2-dev
sudo apt-get install libncurses5-dev
sudo apt-get install lib32readline5
sudo apt-get install lib32readline6
sudo apt-get install libreadline-dev
sudo apt-get install libreadline6:i386
sudo apt-get install bzip2
sudo apt-get install libbz2-dev
sudo apt-get install libbz2-1.0
sudo apt-get install libghc-bzlib-dev
sudo apt-get install lib32bz2-dev
sudo apt-get install libsdl1.2-dev
sudo apt-get install libesd0-dev
sudo apt-get install squashfs-tools
sudo apt-get install pngcrush
sudo apt-get install schedtool
sudo apt-get install python
sudo apt-get install gcc-4.7-multilib
sudo apt-get install ccache
sudo apt-get install eclipse
sudo apt-get install lzop
sudo apt-get install libwxgtk2.8-dev
sudo apt-get install liblzo2-dev
sudo apt-get install uuid
sudo apt-get install uuid-dev
sudo apt-get install zlib1g-dev liblz-dev
sudo apt-get install wmctrl
sudo apt-get install kernel-package
sudo apt-get install jfsutils
sudo apt-get install mcelog
sudo apt-get install xfsprogs
Code:
sudo apt-get install git git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 lib32z1-dev libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc readline-common libreadline6-dev libreadline6 lib32readline-gplv2-dev libncurses5-dev lib32readline5 lib32readline6 libreadline-dev libreadline6:i386 bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev lib32bz2-dev libsdl1.2-dev libesd0-dev gcc-4.6-multilib squashfs-tools pngcrush schedtool python ccache eclipse lzop libwxgtk2.8-dev wmctrl debhelper liblzo2-dev uuid uuid-dev zlib1g-dev liblz-dev kernel-package jfsutils mcelog xfsprogs
EXTRAS suggested by apt-- I wouldn't advise you installing anything unless you need them...
apport-gtk apport-kde valac gnome-user-guide desktop-base lightdm
gnome-sushi python-launchpadlib python3-launchpadlib ri ruby-dev
ruby1.9.1-examples ri1.9.1 graphviz ruby1.9.1-dev ruby-switch
ubuntu-sso-client-gui ubuntuone-client-proxy zeitgeist-datahub
imagemagick-doc autotrace enscript ffmpeg gnuplot grads hp2xx html2ps
libwmf-bin povray radiance texlive-base-bin transfig ufraw-batch
libjline-java-doc librhino-java-doc xfonts-cyrillic
git-daemon-run git-daemon-sysvinit git-doc git-el git-arch git-cvs git-svn
git-email git-gui gitk gitweb
bison-doc lib32mudflap0 ncurses-doc libasound2-doc pulseaudio-esound-compat libglib2.0-doc
dh-make debian-keyring g++-multilib g++-4.7-multilib gcc-4.7-doc
libstdc++6-4.7-dbg libstdc++6-4.7-doc libmail-box-perl lib32stdc++6-4.7-dbg libxcb-doc libxext-doc gcc-doc cpp-doc
python-markdown-doc ttf-bitstream-vera ghc-prof ghc-doc haskell-doc llvm-3.0 libghc-bzlib-doc libghc-bzlib-prof
libgmp10-doc libmpfr-dev distcc distccmon-gnome distcc-pump
ant-gcj ant-doc libbsf-java liboro-java libxalan2-java libjaxp1.3-java
liblog4j1.2-java jython antlr libbcel-java libjdepend-java libgnumail-java
libcommons-net-java javacc ant-optional-gcj junit-doc
libcommons-beanutils-java-doc libcommons-collections3-java-doc
libcommons-dbcp-java-doc libcommons-digester-java-doc
libcommons-httpclient-java-doc libavalon-framework-java
libcommons-logging-java-doc libexcalibur-logkit-java libdb5.1-java-gcj
libeasymock-java-doc ecj libecj-java-gcj libfelix-bundlerepository-java-doc
libfelix-gogo-command-java-doc libfelix-gogo-runtime-java-doc
libfelix-gogo-shell-java-doc libfelix-osgi-obr-java-doc
libfelix-shell-java-doc libfelix-utils-java-doc
libgeronimo-jpa-2.0-spec-java-doc libgeronimo-jta-java-doc
libgeronimo-osgi-support-java-doc libice-doc jetty8 libjetty8-java-doc
libjtidy-java-doc libosgi-compendium-java-doc libosgi-core-java-doc
libosgi-foundation-ee-java-doc libsm-doc libswt-gtk-3-java-gcj tomcat7
wx2.8-doc libgnomeprintui2.2-0 libxt-doc openjdk-7-demo openjdk-7-source
visualvm
i386 items
murrine-themes:i386 kde-config-gtk-style:i386 libpam-ldap:i386
libpam-winbind:i386 libnss-ldap:i386 libroar1:i386 libsndio0:i386
roaraudio-server:i386 libasound2-python:i386 nas:i386 glibc-doc:i386
locales:i386 libcanberra-pulse:i386 libdv-bin:i386 oss-compat:i386
pulseaudio-esound-compat:i386 rng-tools:i386 libgd-tools:i386 libglide3:i386 ibx11-doc:i386 xml-core:i386
gnome-keyring:i386 gnutls-bin:i386 gphoto2:i386 gtkam:i386 gpm:i386
krb5-doc:i386 krb5-user:i386 gstreamer-codec-install:i386
gnome-codec-install:i386 gstreamer0.10-tools:i386 jackd2:i386
libjasper-runtime:i386 liblcms-utils:i386 libmyodbc:i386
odbc-postgresql:i386 tdsodbc:i386 unixodbc-bin:i386 libportaudio2:i386
libroar-compat2:i386 ttf-baekmuk:i386 ttf-arphic-gbsn00lp:i386
ttf-arphic-bsmi00lp:i386 ttf-arphic-gkai00mp:i386 ttf-arphic-bkai00mp:i386
libqt4-declarative-folderlistmodel:i386 libqt4-declarative-gestures:i386
libqt4-declarative-particles:i386 libqt4-declarative-shaders:i386
qt4-qmlviewer:i386 libqt4-dev:i386 libicu48:i386 qt4-qtconfig:i386
libraw1394-doc:i386 librsvg2-bin:i386 hpoj:i386 hplip:i386
libsane-extras:i386 sane-utils:i386 libsasl2-modules-otp:i386
libsasl2-modules-ldap:i386 libsasl2-modules-sql:i386
libsasl2-modules-gssapi-mit:i386 libsasl2-modules-gssapi-heimdal:i386
speex:i386 libxcb-doc:i386
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
After you do all this, may be a good idea to add $ sudo apt-get upgrade
2. I don't get this step. Python is already on there, and if it ain't when you input "sudo apt-get install python" it will be...
3. Gnu Make , Your suppose to get this inside of build-essential , I like to know i got the newest one ,so i do it like this.
go to http://ftp.gnu.org/gnu/make/
Download GNU MAKE 3.82
Open up file manager
go to download folder
cut file
go to home directory
paste
extract
close file manager
Open Terminal:
$ cd <name of gnu make folder(exact)>
then it will look something like this
gnu make $
$ ./configure
$ make
# make install
# make clean...DONE
4. Get rid of pre-installed "JAVA"
$ sudo apt-get purge openjdk-\* icedtea-\* icedtea6-\*
Add new Oracle JAVA 6
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java6-installer
If you want to check the version after it is done
Terminal: $java -version
http://developer.android.com/sdk/index.html#download
5.Terminal: $ wget http://dl.google.com/android/android-sdk_r22-linux.tgz
When that finishes downloading
Terminal: $ tar -xvzf android-sdk_r22-linux.tgz
After extracting the package, run the command below to change into the tools directory.
cd ~/android-sdk-linux/tools
Finally, run the commands below to begin the installation.
./android update sdk
./android
"wget" is the same thing as "curl"
6. This may seem like a pointless step.
Warp, I already have ADB & Fastboot when I installed SDK, but do you have the 4.2.2 update ??
Just to make sure..
Terminal: $ sudo apt-get install android-tools-adb android-tools-fastboot
7. Create a folder in Home dir "51-android.rules" .
Now open a terminal and input: $ gksudo gedit /etc/udev/rules.d/51-android.rules
When another screen pops up copy and paste this inside--
Code:
#Garmin-Asus
SUBSYSTEM=="usb", ATTR{idVendor}=="091E", MODE="0666"
#Google
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666"
#HTC
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666"
#Huawei
SUBSYSTEM=="usb", ATTR{idVendor}=="12d1", MODE="0666"
#K-Touch
SUBSYSTEM=="usb", ATTR{idVendor}=="24e3", MODE="0666"
#KT Tech
SUBSYSTEM=="usb", ATTR{idVendor}=="2116", MODE="0666"
#Kyocera
SUBSYSTEM=="usb", ATTR{idVendor}=="0482", MODE="0666"
#Lenevo
SUBSYSTEM=="usb", ATTR{idVendor}=="17EF", MODE="0666"
#LG
SUBSYSTEM=="usb", ATTR{idVendor}=="1004", MODE="0666"
#Motorola
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", MODE="0666"
#NEC
SUBSYSTEM=="usb", ATTR{idVendor}=="0409", MODE="0666"
#Nook
SUBSYSTEM=="usb", ATTR{idVendor}=="2080", MODE="0666"
#Nvidia
SUBSYSTEM=="usb", ATTR{idVendor}=="0955", MODE="0666"
#OTGV
SUBSYSTEM=="usb", ATTR{idVendor}=="2257", MODE="0666"
#Pantech
SUBSYSTEM=="usb", ATTR{idVendor}=="10A9", MODE="0666"
#Philips
SUBSYSTEM=="usb", ATTR{idVendor}=="0471", MODE="0666"
#PMC-Sierra
SUBSYSTEM=="usb", ATTR{idVendor}=="04da", MODE="0666"
#Qualcomm
SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", MODE="0666"
#SK Telesys
SUBSYSTEM=="usb", ATTR{idVendor}=="1f53", MODE="0666"
#Samsung
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", MODE="0666"
#Sharp
SUBSYSTEM=="usb", ATTR{idVendor}=="04dd", MODE="0666"
#Sony Ericsson
SUBSYSTEM=="usb", ATTR{idVendor}=="0fce", MODE="0666"
#Toshiba
SUBSYSTEM=="usb", ATTR{idVendor}=="0930", MODE="0666"
#ZTE
SUBSYSTEM=="usb", ATTR{idVendor}=="19D2", MODE="0666"
Save & Close text-editor.
Now fire up another terminal
To set proper permisisons: (Provide read permission to all users, in addition to whatever other permissions are pre-set)
input:
Terminal: $ sudo chmod a+r /etc/udev/rules.d/51-android.rules
8. Terminal: $ mkdir -p ~/bin
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
Terminal: $ chmod a+x ~/bin/repo
Terminal: $ export PATH=${PATH}:~/bin
9. You can make this change to the path permanent for all future Terminal sessions:
Terminal: gedit ~/.bashrc
add export PATH=${PATH}:~/bin, on its own line, then save the file.
If you ever have problems with repo.. try this
- Make sure you have a bin/ directory in your home directory and that it is included in your path: (Very Important)
$ PATH=~/bin:$PATH
- Next,
$ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod +x ~/bin/repo
I don't wanna do it
STEP 5
This step was included , for no particular reason. If you chose a build box, and you made it past step 1 without using it, you did something wrong. Go back to step 1
But I might as well include a few sources for build boxes
BBQLinux http://sourceforge.net/projects/bbqlinux/files/
SuperR's ubuntu or mint buildbox http://unleashedprepaids.com/thread-8191-post-61357.html
h311sdr0id's--h311's kitchen http://forum.xda-developers.com/showthread.php?t=2152398
How did he do that???
STEP 6
GitHub is a web-based hosting service for software development projects that use the Git revision control system. GitHub offers both paid plans for private repositories, and free accounts for open source projects.
If you are a person that wants to "build" and become more than just a "user", then your next stop is at "Github"...
Your old buddy "Google" can get you there pretty fast.
The site provides social networking functionality such as feeds, followers and the network graph to display how developers work on their versions of a repository.
According to the terms of service,if an account's bandwidth usage significantly exceeds the average of other GitHub customers, the account's file hosting service may be immediately disabled or throttled until bandwidth consumption is reduced. In addition, while there is no hard limit, the guideline for the maximum size of a repository is one gigabyte.
GitHub also has their standard GUI application available for download (Windows, Mac, Linux) directly from the service's website.
Ever wonder, "How did this Dev get this unsupported device to boot the latest rom?" Chances are, the way they did it will be inputted in Github.
Pay attention to the device names and models, This is important, because like I said every device is different... Everyday lately, I spend an hour or two looking through Github. Not just at my device, but at other models, other kernels, other Solutions...
Now I'm not saying go there, Find a boardconfig you like, cut/paste it into your device tree, but you may find some answers to problems.
(some info from github Wiki)
beginner's links
http://blog.jonathanargentiero.com/?p=114
http://ryanflorence.com/git-for-beginners/
http://dotnet.dzone.com/articles/intro-git
http://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide
http://blog.xkoder.com/2008/08/13/git-tutorial-starting-with-git-using-just-10-commands/
http://www.webdesignermag.co.uk/features/a-beginners-guide-to-git-and-github/
git gui
http://www.collab.net/downloads/giteye
"GIT" it!!!
STEP 7
"GOT RAM" This is when it will come in handy. EDIT: If you like to multi-task. "message for the anal thread readers"
Open up file manager, HOME directory ,make new folder, name it "android" (easy way to do it)
Open "android" folder, make new folder, name it "system"
Close file manager
or
Fire up a terminal
$ mkdir android
$ cd android
$ mkdir system
To get your Source, all you need are three things.
1. Git
2. Curl
3. Repo command
Whether you used a "build box" or set it up yourself , you have everything, but to pull Source, that's all it uses...
How to Initialize the source repository
Code:
REPOSITORY'S OF FAMOUS ROMS (Select One)
AOSP
repo init -u https://android.googlesource.com/platform/manifest -b android-4.2.2_r1.2
PAC-Man :
Code:
repo init -u git://github.com/PAC-man/android.git -b cm-10.1
repo init -u git://github.com/PAC-man/android.git -b cm-10.2
CM 10.1 :
Code:
repo init -u git://github.com/CyanogenMod/android.git -b cm-10.1
CM10 :
Code:
repo init -u git://github.com/CyanogenMod/android.git -b jellybean
BeerGang :
Code:
repo init -u git://github.com/BeerGang/android.git -b cm-10.1
Aokp
For 4.2
repo init -u https://github.com/AOKP/platform_manifest.git -b jb-mr1
For 4.1
repo init -u https://github.com/AOKP/platform_manifest.git -b jb
MIUI
repo init -u git://github.com/MiCode/patchrom.git -b ics
Paranoid android
repo init -u git://github.com/ParanoidAndroid/android.git -b jellybean
slim bean
repo init -u git://github.com/SlimRoms/platform_manifest.git -b jb4.2
teambaked
repo init -u https://github.com/TeamBAKED/platform_manifest.git -b jb
(I got this from another guide)
There are other codes out there, but these are main-stream.
So, what you want to do is , open a Terminal
cd = change directory
So you will
$ cd android
$ cd system
$ repo init -u git://github.com/PAC-man/android.git -b cm-10.1
At this point half your terminal or all your terminal will fill with text.
Two ways this will play out
1. it will let you register with name and email
2. it will give you on-screen codes to config it to your name and email
If you want the "Goodies" DO AS IT TELLS YOU
Now after you got that taken care of,
$ repo sync
Learn this code, remember this code, love this code.
it not only pulls the Source to your PC, but it also updates it every time you input it.
So, say Pacman adds a bluetooth update, BAM, that's how you get it.
It depends on your PC specs, to whether how long downloading your Source will take.
PG gets it quick, i get it slow, but we both get it...
For the next month or 4ever, this is where your "repo" will live..
Learn this folder, Open every folder, learn what's in there.
DO NOT ALTER, DO NOT DELETE, DO NOT REMOVE ANYTHING YET!!!
This tree has broken branches
STEP 8
Creating a basic new device tree
First step to this is to search Github for a device tree for your specific device.
This is where I got lucky.
PG and his associates lol, had already put together a working device tree for our device.
Chances are ,if your device didn't just hit the stores this week, somebody may have started work on a device tree for it.
Although if you do not have anything to start with, You must first open your device folder in the "repo" you "sync'd" to your PC, look at the supported devices
This will be a tool only for reference.
As I open my folder I notice the following
Code:
1. A "bluetooth" folder, with a config file
2. An "include" folder
3. An "overlay" folder
4. A "prebuilts" folder
5. A "recovery" folder
6. A "releasetools" folder
7. AndroidBoard.mk
8. AndroidProducts.mk
9. Boardconfig.mk
10. CM.mk
11. device_warp2.mk
12. extract-files.sh (this is to pull prop blobs)
13. full_warp2.mk
14. Proprietary-files.txt( a list of the prop files you will pull from your stock phone)
15. recovery.fstab
16. setup-makefiles.sh
17. system.prop
18. USBcontroller.cpp
With this group of files, i was able to get a built, but not bootable copy of Jellybeer 10.1.
Now some devices have less and some have alot more files in the device folder.
If you are really serious about becoming a developer, you have to search out others on Github, forums, etc
This step will take teamwork.
Below are two explanations of the files that go into making a device tree...
The directions below describe how to configure make files for new mobile devices and products.
Code:
Create a company directory in //device/partner.
mkdir device/partner/<company_name>
Create a products directory beneath the company directory you created in step 1.
mkdir device/partner/<company_name>/products/
Create a product-specific make file, called device/partner/<company_name>/products/<first_product_name>.mk, that includes the following code:
$(call inherit-product, target/product/generic.mk)
#
# Overrides
PRODUCT_NAME := <first_product_name>
PRODUCT_DEVICE := <board_name>
In the products directory, create an AndroidProducts.mk file that point to (and is responsible for finding) the individual product make files.
#
# This file should set PRODUCT_MAKEFILES to a list of product makefiles
# to expose to the build system. LOCAL_DIR will already be set to
# the directory containing this file.
#
# This file may not rely on the value of any variable other than
# LOCAL_DIR; do not use any conditionals, and do not look up the
# value of any variable that isn't set in this file or in a file that
# it includes.
#
PRODUCT_MAKEFILES := \
$(LOCAL_DIR)/first_product_name.mk \
Create a board-specific directory beneath your company directory that matches the PRODUCT_DEVICE variable <board_name> referenced in the product-specific make file above. This will include a make file that gets accessed by any product using this board.
mkdir device/partner/<company_name>/<board_name>
Create a product_config.mk file in the directory created in the previous step (device/partner/<company_name>/<board_name>). If this directory does not include a product_config.mk file, the build will fail.
# These definitions override the defaults in config/config.make for <board_name>
#
# TARGET_NO_BOOTLOADER := false
# TARGET_HARDWARE_3D := false
#
TARGET_USE_GENERIC_AUDIO := true
If you wish to modify system properties, create a system.prop file in your <board_name> directory(device/partner/<company_name>/<board_name>).
# system.prop for
# This overrides settings in the products/generic/system.prop file
#
# rild.libpath=/system/lib/libreference-ril.so
# rild.libargs=-d /dev/ttyS0
Add a pointer to <second_product_name>.mk within products/AndroidProducts.mk.
PRODUCT_MAKEFILES := \
$(LOCAL_DIR)/first_product_name.mk \
$(LOCAL_DIR)/second_product_name.mk
device/partner/<company_name>/<board_name> must include an Android.mk file with at least the following code:
# make file for new hardware from
#
LOCAL_PATH := $(call my-dir)
#
# this is here to use the pre-built kernel
ifeq ($(TARGET_PREBUILT_KERNEL),)
TARGET_PREBUILT_KERNEL := $(LOCAL_PATH)/kernel
endif
#
file := $(INSTALLED_KERNEL_TARGET)
ALL_PREBUILT += $(file)
$(file): $(TARGET_PREBUILT_KERNEL) | $(ACP)
$(transform-prebuilt-to-target)
#
# no boot loader, so we don't need any of that stuff..
#
LOCAL_PATH := partner/<company_name>/<board_name>
#
include $(CLEAR_VARS)
#
# include more board specific stuff here? Such as Audio parameters.
#
To create a second product for the same board, create a second product-specific make file called device/partner/company_name/products/<second_product_name>.mk that includes:
$(call inherit-product, partner/google/products/generic.mk)
#
# Overrides
PRODUCT_NAME := <second_product_name>
PRODUCT_DEVICE := <board_name>
By now, you should have two new products, called <first_product_name> and <second_product_name> associated with <company_name>. To verify that a product is properly configured (<first_product_name>, for example), execute the following:
cd device
. ./envsetup.sh
partner_setup <first_product_name>
make PRODUCT-<first_product_name>-user
You should find new build binaries located in device/out/target/product/<board_name>.
New Product File Tree
The file tree below illustrates what your own system should look like after completing the steps above.
<company_name>
<board_name>
Android.mk
product_config.mk
system.prop
products
AndroidProducts.mk
<first_product_name>.mk
<second_product_name>.mk
Part 2
Right... So you want to build your own device tree, read on.
Disclaimer: this is by no means complete, and there will be omissions as have explained all this top of my head and copied pasted certain bits that I have here on my own device tree.
The device tree, for example, /device/lg/gt540would consist of the following make files:
Code:
Android.mk - this will tell the build system to include and to build sources specifically for your device. See below, for an example. This is dependant on the device and hardware, you could have libsensors, liblights, libcamera subdirectories under the example device tree, i.e. /device/lg/gt540/libsensors, /device/lg/gt540/liblights, /device/lg/gt540/libcamera etc.
AndroidBoard.mk - this is for the kernel, the build system uses that to drop the kernel image in place (more about this in a few minutes)
AndroidProducts.mk - specifies the appropriate device's make file, to use for building. i.e. /device/lg/gt540/device_gt540.mk, this is specific also.
device_xxxxx.mk - specifies the properties and extras to copy over into the final output, in this case, it could be for example, device_gt540.mk
BoardConfig.mk - This is the meat of it all, this is where compiler conditional flags are set, partition layouts, boot addresses, ramdisk size, and so on.
Lets peek into each of those to give a glance as to where it all fits in.
Code:
Android.mk:
ifeq ($(TARGET_BOOTLOADER_BOARD_NAME),xxxxx)
include $(call all-named-subdir-makefiles, recovery libsensors liblights libcamera ....)
endif
This is how the build will use that to build recovery, sensors, lights and camera (of course there will be more), its saying 'Yo Builder, go into each of the directories specified, and build the respective sources plskthxbai'
AndroidBoard.mk:
LOCAL_PATH := device/lg/gt540/
#
# Boot files
#
TARGET_PREBUILT_KERNEL := $(LOCAL_PATH)/kernel
file := $(INSTALLED_KERNEL_TARGET)
ALL_PREBUILT += $(file)
$(file): $(TARGET_PREBUILT_KERNEL) | $(ACP)
$(transform-prebuilt-to-target)
Now this, is telling the build system, to be able to drop this kernel into the out/target/product/lg/gt540 (notice the correlation with the device tree directory?)
AndroidProducts.mk:
PRODUCT_MAKEFILES := \
$(LOCAL_DIR)/device_gt540.mk
Its telling the build as in 'Yo Builder, read that device make file please and process it upon completion of build.'
*device_xxxxx.mk: (for this example, device_gt540.mk) *
PRODUCT_NAME := lg_gt540
PRODUCT_DEVICE := gt540
PRODUCT_MODEL := LG GT 540
PRODUCT_COPY_FILES += \
... specific ...
PRODUCT_PROPERTY_OVERRIDES := \
ro.com.android.dateformat=dd-MM-yyyy \
... more stuff ...
This is where all the specifics for the device such as drivers, proprietary libraries, supporting scripts specifically for the device, gets copied over to out/target/product/lg/gt540/system/ in this case. Notice how the overrides for the properties, these end up in the build.prop found in the root of the /system of the Android ROM.
BoardConfig.mk:
LOCAL_PATH:= $(call my-dir)
TARGET_NO_BOOTLOADER := true
TARGET_PREBUILT_KERNEL := device/lg/gt540/kernel
TARGET_PREBUILT_RECOVERY_KERNEL := device/lg/gt540/recovery_kernel
# This will vary from device!
TARGET_BOARD_PLATFORM := msm7k
TARGET_ARCH_VARIANT := armv6-vfp
TARGET_CPU_ABI := armeabi
TARGET_CPU_ABI := armeabi-v6l
TARGET_CPU_ABI2 := armeabi
# OpenGL drivers config file path
BOARD_EGL_CFG := device/lg/gt540/egl.cfg
# Dependant, not to be taken literally!
BOARD_GLOBAL_CFLAGS += -DHAVE_FM_RADIO
# Dependant, not to be taken literally!
BOARD_KERNEL_BASE := 0x02600000
# this will be device specific, and by doing cat /proc/mtd will give you the correct sizes
BOARD_BOOTIMAGE_PARTITION_SIZE := 0x00480000
BOARD_RECOVERYIMAGE_PARTITION_SIZE := 0x00480000
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 0x0cf80000
BOARD_USERDATAIMAGE_PARTITION_SIZE := 0x0d020000
BOARD_FLASH_BLOCK_SIZE := 131072
That is an excerpt, notice how we specify kernel's base address, this is how the boot.img gets generated after compilation is done and yet again, gets dropped into out/target/product/lg/gt540/boot.img. Also, more importantly, we're telling the build system to use the target platform for cross-compiling the sources (*TARGET_BOARD_PLATFORM*/*TARGET_CPU_ABI*) There will be more information in there such as conditional flags to pass to the compiler, for an example. we specified the directive HAVE_FM_RADIO to tell it, when it comes to handling the source for the FM radio system, to conditionally compile parts of the source. Again, this is hardware specific and mileage will vary, also this applies to the address for boot. In a nutshell, this is saying 'Yo Builder, read the damn variables and remember them and apply them when cross-compiling those source files!'
Now that the internals of each of those Android build make-files are shown.
Now, onto the vendor/ part of it, in AOSP, simply, once again, correlation and corresponds with the device/ tree, as in continuing with this example, vendor/lg/gt540/ which gets picked up by the lunch. There's more make files in there but the general consensus is there's a directory called proprietary which contains the proprietary libs (due to close-source etc) that gets copied over. The copying over of the libraries gets specified in the file device-vendor-blobs.mk, in this case, gt540-vendor-blobs.mk.
When the magic happens by doing the following:
. build/envsetup.sh
This is reading in the entire entries found in each of the device/ subdirectories and "remembers them", so the build system knows what type of target is used etc.
When the . lunch gets invoked, a menu appears prompting to pick the device that is required to build. Now the last and final step to do the build...
make -j5 > buildlog.log 2>&1
I run multitail on another terminal and monitor the buildlog.log file to check and make sure its building.
This last step will depend on how many cores you have (n cores + 1 as a rule) and it takes a while to build, GB build takes 40mins on my laptop running Arch Linux 64bit, ICS build takes about 2hrs 30 mins. So mileage will vary on what type of horsepower your machine has.
When the build is done, a little bell goes off and at the bottom of the said log file, I see this:
Combining NOTICE files: out/target/product/xxxxx/obj/NOTICE.html
Target system fs image: out/target/product/xxxxx/obj/PACKAGING/systemimage_intermediates/system.img
Install system fs image: out/target/product/xxxxx/system.img
out/target/product/xxxx/system.img+ total size is 108776448
As matter of interest JBQ (Jean Baptiste Queru - the 'boss' for managing/distributing the source from Google), his build step is this...
Code:
Extra code to use the ICS Repository
Now enter the following to initialize the repository:
cd ~/android/system/
repo init -u git://github.com/CyanogenMod/android.git -b ics
Extra codes to use the JB Repository
Now enter the following to initialize the repository:
cd ~/android/system/
repo init -u git://github.com/CyanogenMod/android.git -b jellybean
This is not everything, because a device tree for every device is different, To start from scratch will take alot of time.
You will add, then remove, and then add again.
ASSEMBLE A TEAM...THIS IS A ADVANCED STEP
The president has spoken
STEP 9
Building a kernel.
You're in deep waters once again.
To explain the kernel, I would say he is like the president of your phone.
He tells everyone what to do, and when to do it, and how to do it.
Kernel
The kernel is the core of an operating system. It functions on a low level (kernelspace) interacting between the hardware of the machine and the programs which use the hardware to run. To make efficient use of the CPU, the kernel uses a scheduler to arbitrate which tasks take priority at any given moment, creating the illusion of many tasks being executed simultaneously.
(From an article about Arch Linux)
"Do you like LAG?"
Well if you answered "no"
Then you better build a good kernel.
I entered "building a kernel for android" and i got a long list of tutorials on this.
So, if my section on kernels isn't enough, Google has more.
"git clone" is the code prefix if you luck out and find a kernel source on github.
first you would
$ cd android
$ cd system
$ cd kernel
$ mkdir <name of company>
$ cd <name of company>
$ git clone bla bla bla bla bla lol
But for the purpose of this step, you did not find a kernel source...
So, if you did step 8, or you found a device repo on Github, then you know alot more about your device now, specifically the hardware that pushes your device..
This table lists the name and locations of SOME kernel sources and binaries
Device / Binary location / Source location / Build configuration
manta / device/samsung/manta/kernel / kernel/exynos / manta_defconfig
mako / device/lge/mako-kernel/kernel / kernel/msm / mako_defconfig
grouper / device/asus/grouper/kernel / kernel/tegra / tegra3_android_defconfig
tilapia / device/asus/grouper/kernel / kernel/tegra / tegra3_android_defconfig
maguro / device/samsung/tuna/kernel / kernel/omap / tuna_defconfig
toro / device/samsung/tuna/kernel / kernel/omap / tuna_defconfig
panda / device/ti/panda/kernel / kernel/omap / panda_defconfig
stingray /device/moto/wingray/kernel / kernel/tegra / stingray_defconfig
wingray / device/moto/wingray/kernel / kernel/tegra / stingray_defconfig
crespo /device/samsung/crespo/kernel / kernel/samsung / herring_defconfig
crespo4g / device/samsung/crespo/kernel / kernel/samsung / herring_defconfig
This is for reference, these devices are supported..
You will want to look at the git log for the kernel binary in the device project that you are interested in.
Device projects are of the form device/<vendor>/<name>. This example is for the Panda...
$ git clone https://android.googlesource.com/device/ti/panda
$ cd panda
$ git log --max-count=1 kernel
The commit message for the kernel binary contains a partial git log of the kernel sources that were used to build the binary in question. The first entry in the log is the most recent, i.e. the one used to build that kernel. You will need it at a later step.
Downloading sources
Depending on which kernel you want,
Device projects are of the form device/<vendor>/<name>.
The goldfish project contains the kernel sources for the emulated platforms.
The msm project has the sources for ADP1, ADP2, Nexus One, Nexus 4, and can be used as a starting point for work on Qualcomm MSM chipsets.
The omap project is used for PandaBoard and Galaxy Nexus, and can be used as a starting point for work on TI OMAP chipsets.
The samsung project is used for Nexus S, and can be used as a starting point for work on Samsung Hummingbird chipsets.
The tegra project is for Xoom and Nexus 7, and can be used as a starting point for work on NVIDIA Tegra chipsets.
The exynos project has the kernel sources for Nexus 10, and can be used as a starting point for work on Samsung Exynos chipsets.
To git these
$ git clone https://android.googlesource.com/kernel/common.git
$ git clone https://android.googlesource.com/kernel/exynos.git
$ git clone https://android.googlesource.com/kernel/goldfish.git
$ git clone https://android.googlesource.com/kernel/msm.git
$ git clone https://android.googlesource.com/kernel/omap.git
$ git clone https://android.googlesource.com/kernel/samsung.git
$ git clone https://android.googlesource.com/kernel/tegra.git
Here are some other links for sources
http://www.htcdev.com/
http://opensource.samsung.com/
http://developer.sonymobile.com/wpor...ads/opensource
http://www.lg.com/global/support/ope...opensource.jsp
You may have to do some leg work and find your source.
As an example, we would build the kernel using the following commands:
Part A. Pre-build Steps
A. Open terminal and change to the root of your kernel directory
B. Type "export ARCH=arm"
C. Type "export CROSS_COMPILE=~/android/system/kernel/toolchains/arm-eabi-linaro-4.6.2/bin/arm-eabi-" (your toolchain may be different than this, it is an example)
Part B. The First Build
A. Type "make <your_config_name>_defconfig"
B. Type "make menuconfig" and make the required changes to use any modules you added or similar changes.
C. Type "make -j<maximum number of jobs>"
Part C. Re-Builds
A. Type "make clean"
B. Type "make oldconfig"
C. Type "make -j<maximum number of jobs>"
Part D. Building Modules
You have two options:
A. Type "make modules"
B. Type "make path/to/your/module.ko"
The above steps explained:
Part A.(These steps are required every time you close your terminal and re-open it to build again.)
A. Ok shouldn’t need to explain this.
B. This command sets your target architecture.
C. Defines the path to the toolchain we are going to use to compile our kernel. You can change this to point towards whatever toolchain you have downloaded or feel like using, the way it is currently configured it will use the Linaro toolchain that we downloaded above.
Part B.(These only need to be run the first time you build a kernel.)
A. Load's your configuration file from earlier.
B. Open up a menu to configure your kernel. It will use the config file you loaded in the previous step as a base.
C. Viola start the build. I typically allow 1 job per core, so on my quad core machine I put "make -j4". Just raising that number will not make your build faster, your processor needs to be able to support the number of jobs you are assigning it.
Part C. (Use the command's when you are building any-time outside of the first)
A. This command gets rid of any old/outdated binaries or modules you compiled before, and let's start fresh. I like to run it every I build unless my changes are really small and localized.
B. A very awesome command, it parses through what has changed and only prompts you about new options.
C. See the explanation for the above "Part C.".
Part D.(Use these for just building kernel modules.)
A. This will re-build all modules.
B. Will rebuild just the module you need. Very useful when you need to rebuild a WiFi module.
Outcome A. Build Succeds
W00t!! You have a kernel built by your self from source. There are a couple things you need in-order to use this kernel on your device any ".ko" modules and the zImage binary. If you pay attention to the output of your compiler then you will see the location of those objects. However the following commands will make your life a bit easier(Thanks Recognized Developer Hacre):
A. Open a terminal
B. Change to your root kernel directory
C. Type "mkdir ../<your_kernel>_output"
D. Type "cp arch/arm/boot/zImage ../<your_kernel>_output/zImage"
E. Type "find . -name "*.ko" -exec cp {} ../<your_kernel>_output \;"
The above steps explained:
A-C. Self-Explanatory
D. Move our kernel binary into our output folder
E. This handy bit of magic finds all ".ko" modules and also copies them into your output file.
You will also need to assemble a kernel image containing a initramfs for your device, along with the kernel binary and such. That however is beyond the scope of this tutorial. To get started though try searching the following phrases.
Code:
building android kernel image
xda build kernel image
xda unpack boot.img
Outcome B. Build Fails
Oh dear. It failed. Well guess what...this is going to happen..a LOT. Get used to it, and get used to googling and experimenting with different solutions. The following are some tips that will help you with debugging your issues.
Running a "Clean" build
A. Backup your config file(Type "cp .config ../backupConfig")
B. Re-run the build process using just your defconfig from earlier.
Limiting Output(Thanks Hacre.)
A. Another good tip is to run "make -j1" to get the error, as it will limit the amount of text you need to scroll through.
(from a kernel tutorial)(cred =thewadegeek)
The kernel binary is output as `arch/arm/boot/zImage`, and needs to be copied into the Android source tree in order to build the matching boot image.
Quotes from threads
"when building a whole ROM like AOSP,AOKP,PA or CM then they typically bundle the toolchain/kernel with the source, making this totally unneeded."
"You can typically find a manufacturer's configuration file in "arch/arm/configs". I believe the one for my HTC Flyer was called "flyer_hc_defconfig"
A Q&A from a thread
How can I build the latest kernel using all described stuff (aosp source, kernel config, latest kernel)?
Jean-Baptiste Queru
Mar 25
That's not possible without some work. Device-specific kernel are
typically 3 steps away from the upstream kernel: one step adds
android-specific code, one step adds chipset-specific code, one step
adds device-specific code.
THIS IS NOT COMPLETE.. IT IS A ADVANCED STEP ,LIKE STEP 8 it will take patience and time...
iT'S JUST NOT THE SAME
STEP 10
This is the step for pulling the prop file or prop blobs from a "stock" phone...
This is the script that SuperR made for the Warp2
Code:
#!/bin/sh
VENDOR=zte
DEVICE=warp2
BASE=../../../vendor/$VENDOR/$DEVICE/proprietary
rm -rf $BASE/*
for FILE in `cat proprietary-files.txt | grep -v ^# | grep -v ^$`; do
DIR=`dirname $FILE`
if [ ! -d $BASE/$DIR ]; then
mkdir -p $BASE/$DIR
fi
adb pull /system/$FILE $BASE/$FILE
done
./setup-makefiles.sh
This is one from the LGE Mako
Code:
#!/bin/sh
VENDOR=lge
DEVICE=mako
BASE=../../../vendor/$VENDOR/$DEVICE/proprietary
rm -rf $BASE/*
for FILE in `cat proprietary-blobs.txt | grep -v ^# | grep -v ^$ | sed -e 's#^/system/##g'`; do
DIR=`dirname $FILE`
if [ ! -d $BASE/$DIR ]; then
mkdir -p $BASE/$DIR
fi
adb pull /system/$FILE $BASE/$FILE
done
./setup-makefiles.sh
NOTICE: the main thing that changed was the
VENDOR=zte
DEVICE=warp2
Your proprietary-file.txt depends on your phone.
I found that during a build, it actually told me diffrent .so files it needed.
Though if you made it this far, your phone is rooted, and you probably have "root explorer"
So you may want to open that up and orient yourself with what system files are in there.
Also, you can open other prop lists from similar phones and see what files they extracted.
Here is a list that PG and associates used
Code:
## RIL
bin/qmuxd
bin/rild
lib/libnv.so
lib/liboncrpc.so
lib/libreference-ril.so
lib/libril.so
lib/libril-qc-1.so
lib/libril-qc-qmi-1.so
lib/libril-qcril-hook-oem.so
lib/libauth.so
lib/libcm.so
lib/libdiag.so
lib/libdsm.so
lib/libdsutils.so
lib/libdss.so
lib/libgsdi_exp.so
lib/libgstk_exp.so
lib/libidl.so
lib/liboncrpc.so
lib/libpbmlib.so
lib/libpdapi.so
lib/libqmi.so
lib/libqmiservices.so
lib/libqueue.so
lib/libwms.so
lib/libwmsts.so
lib/liboem_rapi.so
lib/libpdsm_atl.so
lib/libqc-opt.so
lib/libqdi.so
lib/libqdp.so
lib/libuim.so
## GPS
lib/libcommondefs.so
lib/librpc.so
## Sensors
lib/hw/sensors.default.so
## EXTRA
bin/netmgrd
bin/port-bridge
bin/thermald
etc/media_profiles.xml
etc/thermald.conf
lib/libdsi_netctrl.so
lib/libnetmgr.so
lib/libv8.so
$$$$###$$# HINT #$$###$$$$
EVERY PHONE IS DIFFERENT!!!!
Let's see if it works
STEP 11
TIME 2 BUILD
Another time when RAM will help you out.
Whatever steps you actually took to get here all depends on how much work has been put into your phone and how much of it you were able to find..
So if you have the following things done, You can continue to build if not, you better go get them.
1. Linux 64 OS
2. Build environment
3. up to date Repo
4. device repo
5. kernel source
6. proprietary files text/ extract.sh
7. prebuilts
8. ccache
9. Build command
10 Teamwork and Patience
"But Warp, you never explained some of this stuff.."
Yep, that's why there is a step about actually building it...
This next section is pulled from PG's read me
Getting my ZTE Sequent repo
$ cd ~/android/system/device/
$ mkdir zte
$ cd zte
$ git clone https://github.com/playfulgod/androi..._zte_warp2.git warp2
Note it says ZTE, not Sony, not Samsung, ETC
Then cd to the kernel directory:
$ cd ~/android/system/kernel
$ mkdir zte
$ git clone https://github.com/playfulgod/kernel_zte_warp2.git warp2
Then prop files from stock..
$ cd
$ cd ~/android/system/device/zte/warp2
$ ./extract-files.sh
When the environment is setup, we need to grab a copy of Term.apk. This is necessary to build CM10.
$ cd ~/android/system/vendor/cm
$ ./get-prebuilts
O k so I waited to tell you about CCACHE at the end. I guess I did that, because you don't need it untill the end anyway..OR is building just the beginning
You decide...
http://ccache.samba.org/manual.html
http://manpages.ubuntu.com/manpages/intrepid/man1/ccache.1.html
Ccache
There's a wonderful tool for gcc called ccache. You can read about it at their home page.
If you're always compiling the same programs over and over again — such as trying out several kernel patches, or testing your own development — then ccache is perfect. While it may take a few seconds longer to compile a program the first time with ccache, subsequent compiles will be much, much faster.
Now that we know what it is
HOW-TO-INSTALL
http://source.android.com/source/initializing.html
Setting up ccache
You can optionally tell the build to use the ccache compilation tool. Ccache acts as a compiler cache that can be used to speed-up rebuilds. This works very well if you do "make clean" often, or if you frequently switch between different build products.
Put the following in your .bashrc or equivalent.
export USE_CCACHE=1
By default the cache will be stored in ~/.ccache. If your home directory is on NFS or some other non-local filesystem, you will want to specify the directory in your .bashrc as well.
export CCACHE_DIR=<path-to-your-cache-directory>
example: export CCACHE_DIR=$HOME/.ccache
The suggested cache size is 50-100GB. You will need to run the following command once you have downloaded the source code:
prebuilts/misc/linux-x86/ccache/ccache -M 50G
When building Ice Cream Sandwich (4.0.x) or older, ccache is in a different location:
prebuilt/linux-x86/ccache/ccache -M 50G
This setting is stored in the CCACHE_DIR and is persistent. (pulled str8 from the link)
Now, we build (system being your work directory):
$ cd ~/android/system
To build for the ZTE Sequent:
$ . build/envsetup.sh && brunch warp2
All credit to PG for his readme file...Which he updated it recently, this is the old one ,I think...
Beating your head on the desk when you can't figure out why it wont build, boot , ...
STEP 12
In the true nature of a 12 step program, this process never ends.. You will always run into errors, you will always be looking for fixes, patches, and anything to correct a problem you are having.
So, basically the 12th step is TEAMWORK
I hope if this tutorial didn't suck to bad, you will come on this thread and post your questions, post your answers, post your advice. I just started
AND no, just because I made a Tutorial and finished it, it DOES NOT make me a Developer. That was a joke. You have to earn that $hyt...
But one thing i am, is motivated...
I hope you enjoyed my rendition of "HOW-TO-BUILD-FROM-SOURCE"
Shout outz
SPECIAL THANKS TO:
XDA @bcrichster, @NinjaInPyjamas, @Bizack, @danger_beast, @WildfireDEV @BobDabolina HACK3R1, PlayfulGod, Junkie 2100, SuperR, dizzle, EarlyMon, cooldudezach, rbheromax, Frank the Tank,agat , downthemachine, hroark13, DM47021, thewadegeek, guspeed
Android,Cyanogenmod, BeerGang,
ChameleonOS, ibotpeaches, 0xD34D,
BO$$HOGG,,and Madhatter34
warning: (MTD_MSM_NAND && MTD_DOC2000 && MTD_DOC2001 && MTD_DOC2001PLUS) selects MTD_NAND_IDS which has unmet direct dependencies (MTD && MTD_NAND)
If you ever get this one...heres a fix
http://lists.infradead.org/pipermail/linux-mtd/2012-January/039122.html
Code:
Fix the following build warning:
warning: (MTD_DOC2000 && MTD_DOC2001 && MTD_DOC2001PLUS) selects MTD_NAND_IDS
which has unmet direct dependencies (MTD && MTD_NAND)
Signed-off-by: Fabio Estevam <fabio.estevam at freescale.com>
---
drivers/mtd/devices/Kconfig | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/drivers/mtd/devices/Kconfig b/drivers/mtd/devices/Kconfig
index 952e956..3560fca 100644
--- a/drivers/mtd/devices/Kconfig
+++ b/drivers/mtd/devices/Kconfig
@@ -191,6 +191,7 @@ comment "Disk-On-Chip Device Drivers"
config MTD_DOC2000
tristate "M-Systems Disk-On-Chip 2000 and Millennium (DEPRECATED)"
+ depends on MTD_NAND
select MTD_DOCPROBE
select MTD_NAND_IDS
---help---
@@ -213,6 +214,7 @@ config MTD_DOC2000
config MTD_DOC2001
tristate "M-Systems Disk-On-Chip Millennium-only alternative driver (DEPRECATED)"
+ depends on MTD_NAND
select MTD_DOCPROBE
select MTD_NAND_IDS
---help---
@@ -234,6 +236,7 @@ config MTD_DOC2001
config MTD_DOC2001PLUS
tristate "M-Systems Disk-On-Chip Millennium Plus"
+ depends on MTD_NAND
select MTD_DOCPROBE
select MTD_NAND_IDS
---help---
--
1.7.1
Wow. Thanks for the huge tutorial man!
Another piece of info.
"make clobber"
In software engineering, clobbering a file or computer memory is overwriting its contents. In makefiles, a common target clobber means complete cleanup of all unnecessary files and directories produced by previous invocations of the make command.
"make clean"
deletes any files generated by previous attempts, leaving you with clean source code
These are codes to use when
1. encountering fatal errors
2. when you "repo sync" new data
3. when you make changes to make files etc...
THIS IS A ROOTING TOOL FROM JUNKIE2100,IT WORKS FOR THE WARP SEQUENT N861
www.oldphoneshyte.gov
I updated the picture, I updated the SuperUser.apk and I updated the SU binary...
Warped420 said:
THIS IS A ROOTING TOOL FROM JUNKIE2100,IT WORKS FOR THE WARP SEQUENT N861[/SIZE
I updated the picture, I updated the SuperUser.apk and I updated the SU binary...
Click to expand...
Click to collapse
Updated for what/why??
Sent from my confused Warp/Nexus using Tapatalk 2
This is MY JellyBeer BeerGang 10.1 $ROM$
I started this project over two months ago.
This is the new v4.30
This is the first build ,nothing is fixed
It doesn't have sound, sd card etcWithout PG and associates I wouldn't have gotten this built, see SPECIAL THANKS sectionI have two more $ROM$ coming soon...
www.idon'thavethisphoneanymore.org
WARP SEQUENT N861
How to extract the boot image from your tablet, set up adb, compile a new kernel with cool options, and put it back on your device!
UPDATED for Lolipop 12-4-14
This is a complete guide from start to finish, copy and paste style. If you own a gpe510, or any other AOSP device and a computer running Debian Linux, you can do all of this.
If all you want is the modified kernel, download from here:
Sleekai Kernel For The LG GPad 8.3 V510(GPE)
I am hoping people will add to this with new ideas and patches in order to make the GPE a better device. I see the potential for all sorts of neat stuff.
This guide assumes a basic knowledge of linux operating systems. I am using a Debian 64 bit (wheezy stable) to compile my kernel. I have used many, many hours of the day to figure this out properly, with specific thanks going to Pete of Pete's Blog for his image tools.
But first, lets keep this simple. As usual, you are on your own if you brick your device, though I don't see how you could if you are paying attention!
There are dependencies for building your own kernel, and you will definitely want to use a 64 bit system as a 32 bit will not work properly for kitkat.
Here are all of the packages you will need, and they will draw in further dependencies when you install, but these are it! So, here we go:
Open a terminal, su to root and:
Code:
dpkg --add-architecture i386
##This will allow for the use of some 32 bit librarys that we will need for both adb and the kernel compile. Then:
Code:
apt-get update ; apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 libc6-i686:i386 lzop liblzo2-dev libgpm2:i386 git-core git gnupg flex bison gperf libsdl1.2-dev libesd0-dev build-essential zip curl gedit libncurses5-dev zlib1g-dev fakeroot lib32z1-dev lib32ncurses5-dev gcc-multilib g++-multilib
Next, you will need to install adb and have your permissions set up.
In order to do this you will need to go into the developer options on your device to enable debugging on your tablet. Go to settings/about tablet/build number, and tap on build number several times to unlock the developer options.
then:
You will need to create new udev rules for your device in/etc/udev/rules.d on your computer.
Use "lsusb" in your terminal to find the manufactures code of your device. it will show up as a nexus 4, or Google device.
You will need to create a file in your computer in /etc/udev/rules.d/99-android.rules.
You can use gedit if you like:
Code:
gedit /etc/udev/rules.d/99-android.rules
Put the following inside and save, changing the manufactures code as necessary to fit your device, and change “your-login” to your login name on your computer.
Code:
# Google Nexus devices
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", OWNER="your-login" # Google Nexus devices
18d1 is the manufacturers code.
You will then want to restart udev on your computer:
Code:
service udev restart
you will now have permissions to access your android device from user space.
Now to download adb and get started. You should probably not use adb from the Debian repositories, as it may be an older version. the V510 is using kitkat android and needs the latest build of adb to work properly. It is a good idea to get rid of any old adb files on your computer first. The code below will do just that.
Code:
apt-get purge android-tools-adb android-tools-fastboot
Now download the latest adb bundle from here:
http://developer.android.com/sdk/index.html
Move it into a new directory,
*note -the version number may be different.
Code:
mkdir ~/adb
Code:
cd ~/adb
Code:
unzip adt-bundle-linux-x86_64-20131030.zip
su to root and Move the bundle to /opt:
Code:
mv adt-bundle-linux-x86_64-20131030 /opt/android-sdk-linux-x86_64-20131030
Other google products reside in /opt, this should too. This takes a minute or so on slow machines.
Next we need to link adb to /usr/bin
Code:
ln -s /opt/android-sdk-linux-x86_64-20131030/sdk/platform-tools/adb /usr/bin
Code:
ln -s /opt/android-sdk-linux-x86_64-20131030/sdk/platform-tools/fastboot /usr/bin
We are ready to begin working on the device! first start the adb server and look for your device.
Code:
adb start-server
Code:
adb devices
You will then need to confirm the connection on your tablet screen to allow access from your computer.
Okay, wev'e got this first part set up. it's time to begin working on a kernel!
Lets get started.
I want to extract and build my zimage in $userspace, so open a terminal from /home and:
Code:
mkdir ~/android
Download the source package LG-V510(G-Pad 8.3 Google Play Edition)_Android_KK_V510_11c from here :
https://www.lg.com/global/support/opensource/opensourceList?types=ALL&search=lgv510
and open it to find three folders, including a kernel folder. Move the kernel folder to ~/android and then:
Code:
cd ~/android
Download the current eabi-4.6 Google tool chain to ~/android to cross compile your android kernel:
Code:
git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8
When it completes, enter ~/android/kernel and get ready to compile a new kernel from the source code.
Code:
cd ~/android/kernel
Do the following each time you compile another kernel. This insures the correct path.
Code:
export PATH=$PATH:~/android/arm-eabi-4.8/bin
Code:
arm-eabi-gcc --version
you should get:
Code:
arm-eabi-gcc (GCC) 4.6.x-google 20120106 (prerelease)
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Continue on! we are not done yet!
Code:
export ARCH=arm
Code:
export SUBARCH=arm
Code:
export CROSS_COMPILE=arm-eabi-
Code:
export KERNEL_DEFCONFIG=palman_defconfig
Code:
make clean
Code:
make palman_defconfig
Doing the above prepares your kernel build environment, while the following code opens a interface to configure the kernel. You can simplify this later however you wish.
But for now,
Code:
make menuconfig
At this point make whatever changes you wish to the config file. for a list of the changes I have made, and that are in the kernel available to download, look in the sleekai kernel thread. (At start of thread, or in my signature).
After saving your changes,
Code:
make
Or conversely
Code:
make -o2
which will optimize the make. I recommend using simply "make" first, as the other may not properly show errors should any occur.
and go make a pot of coffee, and probably drink the whole pot! This will take a while.
At the end you will see that the "zimage is ready"
If you have errors, then you probably have dependency problems. If not, Yay! You compiled your first kernel, but we are not done yet!
The zimage you just produced is stored in /kernel/arch/arm/boot/zImage
To put both the zimage and any modules into a separate folder inside of ~/android so as to make extracting them easier:
Code:
mkdir ~/android/kernel_output
Code:
cp ~/android/kernel/arch/arm/boot/zImage ~/android/kernel_output/zImage
Code:
find ~/android/kernel -name "*.ko" -exec cp {} ~/android/kernel_output/ \;
The above code will find all the modules for your kernel. We don't need them for this tutorial, but it still is mighty handy!
Extract your boot image (boot.emmc.win) for the ramdisk You may also download the stock.zip from the sleekai kernel thread
Now make a backup to transfer to your computer.
Reboot to recovery on your tablet. I'm using TWRP. If you are using something else it should be just as easy.
Code:
adb reboot recovery
Only tick the boot
make a backup to your sd card. I changed the name to boot.bac to keep it simple
reboot
make sure the backup of boot is present using a file explorer. I am using ES File explorer.
On your computer, pull the file using adb
Code:
adb start-server
Code:
adb devices
Code:
adb pull /storage/sdcard1/TWRP/BACKUPS/LG0000606708987/boot.bac /home/sleek
sleek is my user name, replace with yours or use tilde.
What we are after is the "boot.emmc.win" file. We will only need this and the zImage to compile a new boot image and run it on your tablet.
The tools to extract the kernel and ramdisk from the boot.emmc.win you will need the following boot image tools installed on your computer.
So, again, lets keep this simple. All the tools are forked to my github for ease of use.
So lets install the tools! Ready?
As Root:
Code:
mkdir /usr/src/android
Code:
mkdir /usr/src/android/boot
Code:
cd /usr/src/android/
Code:
git clone https://github.com/sleekmason/bootimg-tools.git
Code:
cd bootimg-tools/libmincrypt/
Code:
gcc -c *.c -I../include
Code:
ar rcs libmincrypt.a *.o
Code:
cd ../mkbootimg
Code:
gcc mkbootimg.c -o mkbootimg -I../include ../libmincrypt/libmincrypt.a
Code:
cp mkbootimg /usr/local/bin/
Code:
cd ../cpio
Code:
gcc mkbootfs.c -o mkbootfs -I../include
Code:
cp mkbootfs /usr/local/bin/
Code:
cd /usr/src/android/bootimg-tools/mkbootimg/
Code:
wget https://raw.github.com/sleekmason/bootimg-tools/master/mkbootimg/unmkbootimg.c
Code:
gcc -o unmkbootimg unmkbootimg.c
Code:
cp unmkbootimg /usr/local/bin/
Now everything is in place to make a new boot image for your tablet!
Finishing this up is easy.
As root, we made a directory in /usr/src/android/boot for your boot.emmc.win file to be torn apart:
Code:
cd /usr/src/android/boot
Copy your new zImage and the boot.emmc.win file you extracted from your device.
Note* "/home/sleek" is the path on my computer, and should be changed to reflect yours!
Code:
cp /home/sleek/android/kernel_output/zImage /usr/src/android/boot
Code:
cp /home/sleek/boot.emmc.win /usr/src/android/boot
Now unpack the boot.emmc.win file to get the ram disk
Code:
unmkbootimg -i boot.emmc.win
Now you may remove the current boot.emmc.win file, and the resultant kernel file as we will be making new ones, and rename the zImage file you moved here to "kernel".
Code:
rm boot.emmc.win kernel && mv zImage kernel
Now repack using the command given to you during the unpack:
Code:
mkbootimg --base 0 --pagesize 2048 --kernel_offset 0x80208000 --ramdisk_offset 0x82200000 --second_offset 0x81100000 --tags_offset 0x80200100 --cmdline 'console=ttyHSL0,115200,n8 androidboot.hardware=palman lpj=67677 vmalloc=300M' --kernel kernel --ramdisk ramdisk.cpio.gz -o boot.emmc.win
Note* For 500 users this may be different. Simply use the command from the prompt.
You should now have a brand new boot.emmc.win image in /usr/src/android/boot!!
To push back on your device to test
Code:
adb reboot bootloader
Code:
fastboot boot boot.emmc.win
USING the above will only put your kernel build into memory and should not hurt your device if something goes wrong. Use the command below to make it permanent.
If everything works well, you should see the change you made to the /general/perf-localversion/ in your settings under kernel. from there it's up to you to hack away! make new and unique kernels!
If you want your kernel to survive reboot do;
Code:
fastboot flash boot boot.emmc.win
then:
Code:
fastboot reboot
You can expect a slow bootup on the first go around as your new kernel populates the widgets, etc..
NOTE*For the use of the latest eabi-4.7 google toolchain, you will need the libglibc libraries from the "testing" branch as gcc 4.7 is in testing. I advise completing the guide with eabi 4.6 first before trying 4.7.
The gamma correction though enabled in 4.6, isn't near as good as the native compile using 4.7. If you want the screen to look like it does in my kernels, you will need 4.7
For the eabi-4.7:
Code:
git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7
That's it! Good luck! Remember, If you post a kernel you have made, you will need to show your kernel source, etc . . . Git hub is a good choice to keep track of changes you make. Best regards, Sleekmason
If you are a v500 user and want to build your own kernel!
First, read the above post as you will be following the steps listed there.
There are just a couple of changes that you will need to do, and maybe a riddle to figure out as well. Read on.
You will need to download the v500 source from here: https://www.lg.com/global/support/opensource/opensourceList?superOsCategoryId=CAT00000001&osCategoryId=
Look for the LGV500 kernel source.
Where it says "palman" for the defconfig items, you will want to replace that with the defconfig for the 500, so replace palman with awifi-perf,
like this:
Code:
export KERNEL_DEFCONFIG=awifi-perf_defconfig
Code:
make awifi-perf_defconfig
Important
Follow the guide and build with the Google Toolchain eabi4.6 first
LG compiled for the 500 and 510 using the eabi4.6. It works, and will give you a feel for the process, and allow you to use your kernel.
Note*
I use the google toolchain eabi-4.7 for the sleekai kernels as it changes the gamma to reasonable defaults on the 510 without further tweaking. After compiling a kernel or two to get a feel for it, you should try using the 4.7 toolchain. To do so, you will probably need the libglibc libraries from the "testing" branch. Look it up.
caveat: I recieved a compile error for the v500 when I used the eabi-4.7 . . . . . yeah. You'll have to work that out.
There is a modified anykernel script for emmc devices out there (Search Google or here in xda). You will have to use the anykernel script after making your boot.emmc.win image as fastboot won't work on the 500. There may be another way .... But I don't know what it is.
Edit* There are now two different kernels for the LG GPad 8.3 V500(awifi) located in the development section of the forum.
Best of luck! -sleekmason
Can this be used to create a kernel for the non Google Play Edition Gpad to be able to allow us to install the Google Play edition ROM on it
Sent from my SM-N900W8 using Tapatalk
Canadoc said:
Can this be used to create a kernel for the non Google Play Edition Gpad to be able to allow us to install the Google Play edition ROM on it
Sent from my SM-N900W8 using Tapatalk
Click to expand...
Click to collapse
I would think so. I edited the above to show how to put the image back on your device. You should be able to use any source you wish to compile with. My thoughts are that you might wish to examine the differences in the ram disk if any.
sleekmason said:
Howdy, I would like to share how to download the kernel source for the gpe, compile a new custom kernel, and insert into your LG gpad GPE 510.
...
Click to expand...
Click to collapse
Thanks for the guide. Making GPE kernel was my next step in trying to get the GPE ROM to work on v510.
I just made guide for getting your Android build environment going if you want to use it on your blog or where ever.
http://forum.xda-developers.com/showthread.php?t=2629008
The problem with v500 is that it does not have fastboot so we can not flash kernel like how you can on v510.
@ AndroidUser00110001 Hi! I know that somebody tweaked the Any kernel to work on emmc devices... Maybe it could be adapted? Actually getting the menuconfig and make should be the same process as well as repacking the image. I take it just getting it back on the 500 device is the problem?
I will add your link to this post for setting up a build environment if that is okay.
sleekmason said:
@ AndroidUser00110001 Hi! I know that somebody tweaked the Any kernel to work on emmc devices... Maybe it could be adapted? Actually getting the menuconfig and make should be the same process as well as repacking the image. I take it just getting it back on the 500 device is the problem?
I will add your link to this post for setting up a build environment if that is okay.
Click to expand...
Click to collapse
Is that the koush any kernel? I was going to mess with that too. I just need a small break now. Took a few days to get new system exactly how I want it.
Go ahead and use guide...mo problem at all.
AndroidUser00110001 said:
Is that the koush any kernel? I was going to mess with that too. I just need a small break now. Took a few days to get new system exactly how I want it.
Go ahead and use guide...mo problem at all.
Click to expand...
Click to collapse
Yes, from here: http://forum.xda-developers.com/showthread.php?t=847265
I noted that boot was on block nncblk0p21 on our device, and not 22? better double check that. I tried it Anykernel as well to no avail when getting this set up. Fastboot is Awesome!
It's taxing to get it set up right. Seems like things change very often for the dependencies based on other package changes. I ussually go with testing but redid two partitions with stable. The 32 bit is just going to sit there, which seems kinda silly due to the need for extra packages in 64 to compile for 32 but whatever. Yeah.
AndroidUser00110001 said:
Thanks for the guide. Making GPE kernel was my next step in trying to get the GPE ROM to work on v510.
I just made guide for getting your Android build environment going if you want to use it on your blog or where ever.
http://forum.xda-developers.com/showthread.php?t=2629008
The problem with v500 is that it does not have fastboot so we can not flash kernel like how you can on v510.
Click to expand...
Click to collapse
I don't understand, what are the differences bettween the v500 and v510? they both have the same hardware, but not the same boot partition or something like that?
ayziaa said:
I don't understand, what are the differences bettween the v500 and v510? they both have the same hardware, but not the same boot partition or something like that?
Click to expand...
Click to collapse
The boot on the 500 cannot be fully unlocked.
This is not the appropriate place to ask that kind of question should be asked in general or in troubleshooting. Also, there are already many threads about this same question please use the search utility to find them. Thank you.
i was thinking of writing a tutorial about this as well for the v500 but this better than i would have done Well done...
sleekmason said:
Yes, from here: http://forum.xda-developers.com/showthread.php?t=847265
I noted that boot was on block nncblk0p21 on our device, and not 22? better double check that. I tried it Anykernel as well to no avail when getting this set up. Fastboot is Awesome!
It's taxing to get it set up right. Seems like things change very often for the dependencies based on other package changes. I ussually go with testing but redid two partitions with stable. The 32 bit is just going to sit there, which seems kinda silly due to the need for extra packages in 64 to compile for 32 but whatever. Yeah.
Click to expand...
Click to collapse
Another tool that i ported to the lg g pad a bit back along with loki-doki...
Quick hint, dont bother with direct mmc naming as qcom (i dont know if the other chip makers do the same thing, as i have only had qcom devices) has given us a simple naming scheme...
should only be used by people who know how to use this,
darkassain said:
i was thinking of writing a tutorial about this as well for the v500 but this better than i would have done Well done...
Another tool that i ported to the lg g pad a bit back along with loki-doki...
Quick hint, dont bother with direct mmc naming as qcom (i dont know if the other chip makers do the same thing, as i have only had qcom devices) has given us a simple naming scheme...
should only be used by people who know how to use this,
Click to expand...
Click to collapse
Thank you! Have you successfully used your script to push a kernel onto the 500 Or 510?
I would think this could be very handy for sharing a custom kernel for the 510, but would like to see somebody report a positive test result. Very cool!
sleekmason said:
Thank you! Have you successfully used your script to push a kernel onto the 500 Or 510?
I would think this could be very handy for sharing a custom kernel for the 510, but would like to see somebody report a positive test result. Very cool!
Click to expand...
Click to collapse
yes back before when there wasnt a overclocked kernel i basically used this to push it when i would compile just the kernel (didnt maintain so i now use dyn's)...
yes this is only for the v500 as this has the extra loki step, but it shouldnt be hard to modify so it does not do that extra step
darkassain said:
i was thinking of writing a tutorial about this as well for the v500 but this better than i would have done Well done...
Another tool that i ported to the lg g pad a bit back along with loki-doki...
Quick hint, dont bother with direct mmc naming as qcom (i dont know if the other chip makers do the same thing, as i have only had qcom devices) has given us a simple naming scheme...
should only be used by people who know how to use this,
Click to expand...
Click to collapse
Hi, can you just use a generic anykernel updater script too?
For example to flash a packed boot.img
Code:
run_program("/tmp/busybox", "dd", "if=/dev/block/platform/msm_sdcc.1/by-name/boot", "of=/tmp/boot.img");
run_program("/tmp/unpackbootimg", "-i", "/tmp/boot.img", "-o", "/tmp/");
run_program("/tmp/repack-ramdisk.sh");
run_program("/tmp/mkbootimg.sh");
run_program("/tmp/busybox", "dd", "if=/tmp/newboot.img", "of=/dev/block/platform/msm_sdcc.1/by-name/boot");
mako and flo can do like this.. I think HTC One as well, since they are all similar qcom chipsets maybe this device can too
poondog said:
Hi, can you just use a generic anykernel updater script too?
For example to flash a packed boot.img
Code:
run_program("/tmp/busybox", "dd", "if=/dev/block/platform/msm_sdcc.1/by-name/boot", "of=/tmp/boot.img");
run_program("/tmp/unpackbootimg", "-i", "/tmp/boot.img", "-o", "/tmp/");
run_program("/tmp/repack-ramdisk.sh");
run_program("/tmp/mkbootimg.sh");
run_program("/tmp/busybox", "dd", "if=/tmp/newboot.img", "of=/dev/block/platform/msm_sdcc.1/by-name/boot");
mako and flo can do like this.. I think HTC One as well, since they are all similar qcom chipsets maybe this device can too
Click to expand...
Click to collapse
thanks for reminding me the any kernel uploaded by me won't work as it doesn't parse Loki images xorrectly, I'll upload the correct one once I have access to my pc
darkassain said:
thanks for reminding me the any kernel uploaded by me won't work as it doesn't parse Loki images xorrectly, I'll upload the correct one once I have access to my pc
Click to expand...
Click to collapse
could you please re-post to a different thread rather than hijacking this thread, as your script does not work with the 510 currently and I do not want to go to get confused with my kernel how to. what started out to maybe become relevant apparently will not and so shouldn't be confused with what I'm doing here. I will be happy to try working with your script if you would open up an appropriate thread. Thank you.
Installed kenel and booted. Now to install trickster mod and fix the dang gamma.
gunnyman said:
Installed kenel and booted. Now to install trickster mod and fix the dang gamma.
Click to expand...
Click to collapse
Excellent!! Pleased to know that you are able to use it. Have you changed your gamma settings?
I did on mine and am pleased with the result. I'm using 248, 252, 255 using trickster mod What are you going with?
sleekmason said:
Excellent!! Pleased to know that you are able to use it. Have you changed your gamma settings?
I did on mine and am pleased with the result. I'm using 248, 252, 255 using trickster mod What are you going with?
Click to expand...
Click to collapse
havent messed around too much.
I had a thought about this and I think it would be awesome if we could incorporate faux123's bits for gamma and color control. His fauxcontrol offers much more granular control than trickster.
I'm thankful to have what we have, and THANK YOU for sharing it, but like any good geek I WANTS MOAR!!!!!
gunnyman said:
havent messed around too much.
I had a thought about this and I think it would be awesome if we could incorporate faux123's bits for gamma and color control. His fauxcontrol offers much more granular control than trickster.
I'm thankful to have what we have, and THANK YOU for sharing it, but like any good geek I WANTS MOAR!!!!!
Click to expand...
Click to collapse
me too! I'll look into it. There are other apps besides trickster to give you more control. I think at the kernel level everything we need is unlocked. And yeah, he knows his business like nobody else eh? I'm just persistent.
How can I build kernel with fixed screen calib?
a little work (your work) can change your life
1. download Builduntu - Preconfigured Android Compile Environment v2.1:
http://forum.xda-developers.com/showthread.php?t=2585828
do not forget to hit the thanks button
2. Set up a VM machine in VMplayer or VirtualBox
3. Open terminal and type (or paste):
cd ~
mkdir wave
cd wave
repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0
cd .repo
wget https://raw.github.com/Badadroid/android_wave_local_manifest/cm-11.0/local_manifest.xml
cd ..
repo sync -j8
4. wait
5. find proper file, change it
6. Open terminal and type (or paste):
cd wave
cd vendor/cm/
./get-prebuilts
cd ../../
. build/envsetup.sh
brunch wave
7. wait
8. enjoy
Pro tip:
if your processor supports virtualization, check if it's enabled in bios, it improve performance of VM
Agasharr said:
a little work (your work) can change your life
1. download Builduntu - Preconfigured Android Compile Environment v2.1:
http://forum.xda-developers.com/showthread.php?t=2585828
do not forget to hit the thanks button
2. Set up a VM machine in VMplayer or VirtualBox
3. Open terminal and type (or paste):
cd ~
mkdir wave
cd wave
repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0
cd .repo
wget https://raw.github.com/Badadroid/android_wave_local_manifest/cm-11.0/local_manifest.xml
cd ..
repo sync -j8
4. wait
5. find proper file, change it
6. Open terminal and type (or paste):
cd vendor/cm/
./get-prebuilts
cd ../../
. build/envsetup.sh
brunch wave
7. wait
8. enjoy
Pro tip:
if your processor supports virtualization, check if it's enabled in bios, it improve performance of VM
Click to expand...
Click to collapse
Hmmm.... can you make a kernel for neeraj ??? you know unix.... and change as per krishchat kernel....
Agasharr said:
a little work (your work) can change your life
1. download Builduntu - Preconfigured Android Compile Environment v2.1:
http://forum.xda-developers.com/showthread.php?t=2585828
do not forget to hit the thanks button
2. Set up a VM machine in VMplayer or VirtualBox
3. Open terminal and type (or paste):
cd ~
mkdir wave
cd wave
repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0
cd .repo
wget https://raw.github.com/Badadroid/android_wave_local_manifest/cm-11.0/local_manifest.xml
cd ..
repo sync -j8
4. wait
5. find proper file, change it
6. Open terminal and type (or paste):
cd wave
cd vendor/cm/
./get-prebuilts
cd ../../
. build/envsetup.sh
brunch wave
7. wait
8. enjoy
Pro tip:
if your processor supports virtualization, check if it's enabled in bios, it improve performance of VM
Click to expand...
Click to collapse
thank you very much sir,i shall remain grateful to you, already i have started downloading,it will take about 9 hrs
It's my humble request to all the developers to consider my request of screen calibration fix while making new kernel.
i tried each and every thing to do it myself,but failed.I was busy in same for 9-10 days,and resulted into nothing,i dont know how to compile kernel
neeraj797 said:
It's my humble request to all the developers to consider my request of screen calibration fix while making new kernel.
i tried each and every thing to do it myself,but failed.I was busy in same for 9-10 days,and resulted into nothing,i dont know how to compile kernel
Click to expand...
Click to collapse
To compile kernel only, see here : http://forum.xda-developers.com/showthread.php?t=2276481 step 1-6
zImage will be in ~yourdirectory/out/prouct/target/wave
i dont know how to compile kernel
Click to expand...
Click to collapse
I have the same problem.
http://forum.xda-developers.com/showthread.php?t=2276481
http://forum.xda-developers.com/showthread.php?t=1697618
Please, feel free to learn MORE.
Instead yelling, begging... be an b.p in a
There are many different ways to solve problems...
Please accept, that not many users have the same problem like you...
So you are not priority number 1.
Thanx for reading.
Best Regards
Agasharr said:
a little work (your work) can change your life
1. download Builduntu - Preconfigured Android Compile Environment v2.1:
http://forum.xda-developers.com/showthread.php?t=2585828
do not forget to hit the thanks button
2. Set up a VM machine in VMplayer or VirtualBox
3. Open terminal and type (or paste):
cd ~
mkdir wave
cd wave
repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0
cd .repo
wget https://raw.github.com/Badadroid/android_wave_local_manifest/cm-11.0/local_manifest.xml
cd ..
repo sync -j8
4. wait
5. find proper file, change it
6. Open terminal and type (or paste):
cd wave
cd vendor/cm/
./get-prebuilts
cd ../../
. build/envsetup.sh
brunch wave
7. wait
8. enjoy
Pro tip:
if your processor supports virtualization, check if it's enabled in bios, it improve performance of VM
Click to expand...
Click to collapse
builduntu not installing,i kept on trying for many days using different combinations and tools.tell me whether can't we do same thing using any other linux os?
neeraj797 said:
builduntu not installing,i kept on trying for many days using different combinations and tools.tell me whether can't we do same thing using any other linux os?
Click to expand...
Click to collapse
For the virtual box? Why not running an Ubuntu live CD?
(....or even better: installing Ubuntu aside Windows....)
(....or even even better: replacing Windows with Ubuntu ....)
neeraj797 said:
builduntu not installing,i kept on trying for many days using different combinations and tools.tell me whether can't we do same thing using any other linux os?
Click to expand...
Click to collapse
Ubuntu 12.04 64 bit is the better. (64 bit is needed)
Then follow this http://forum.xda-developers.com/showthread.php?t=2276481 step 1 and 2 (and maybe step 3) to set up build environment. Then follow what Agasharr says (from cd~)
To build kernel only, after ". build/envsetup.sh" :
lunch cm_wave-userdebug
make bootimage
BenzoX said:
Ubuntu 12.04 64 bit is the better. (64 bit is needed)
Then follow this http://forum.xda-developers.com/showthread.php?t=2276481 step 1 and 2 (and maybe step 3) to set up build environment. Then follow what Agasharr says (from cd~)
To build kernel only, after ". build/envsetup.sh" :
lunch cm_wave-userdebug
make bootimage
Click to expand...
Click to collapse
This will not work if you are running ubuntu via VMware or virtual box. Tried it on 13.10 eventhough the guide recommends 12.04 but i think the problem persists with every version. I suggest builduntu if you are using a virtual machine.
aashil16 said:
This will not work if you are running ubuntu via VMware or virtual box. Tried it on 13.10 eventhough the guide recommends 12.04 but i think the problem persists with every version. I suggest builduntu if you are using a virtual machine.
Click to expand...
Click to collapse
boss,already tried builuntu,but it did not work.a guy replied to me and said that this is because my processor is pentium and the oldest supported is core 2 duo
neeraj797 said:
boss,already tried builuntu,but it did not work.a guy replied to me and said that this is because my processor is pentium and the oldest supported is core 2 duo
Click to expand...
Click to collapse
Make a dual boot Ubuntu Windows. You'll need 40 Go for ubuntu (windows 7 included disk utility can shrink partition size so you don't even need to format your hard drive).
Agasharr said:
a little work (your work) can change your life
1. download Builduntu - Preconfigured Android Compile Environment v2.1:
http://forum.xda-developers.com/showthread.php?t=2585828
do not forget to hit the thanks button
2. Set up a VM machine in VMplayer or VirtualBox
3. Open terminal and type (or paste):
cd ~
mkdir wave
cd wave
repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0
cd .repo
wget https://raw.github.com/Badadroid/android_wave_local_manifest/cm-11.0/local_manifest.xml
cd ..
repo sync -j8
4. wait
5. find proper file, change it
6. Open terminal and type (or paste):
cd wave
cd vendor/cm/
./get-prebuilts
cd ../../
. build/envsetup.sh
brunch wave
7. wait
8. enjoy
Pro tip:
if your processor supports virtualization, check if it's enabled in bios, it improve performance of VM
Click to expand...
Click to collapse
i am getting following error while copying/pasting your first command.I am using luninux-a debian/ubuntu based os
neeraj797 said:
i am getting following error while copying/pasting your first command.I am using luninux-a debian/ubuntu based os
Click to expand...
Click to collapse
Set up build enviromnent first following steps 1-3 here : http://forum.xda-developers.com/showthread.php?t=2276481
neeraj797 said:
i am getting following error while copying/pasting your first command.I am using luninux-a debian/ubuntu based os
Click to expand...
Click to collapse
http://source.android.com/source/downloading.html
To install Repo:
Make sure you have a bin/ directory in your home directory and that it is included in your path:
$ mkdir ~/bin
$ PATH=~/bin:$PATH
Download the Repo tool and ensure that it is executable:
$ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
Click to expand...
Click to collapse
neeraj797 said:
i am getting following error while copying/pasting your first command.I am using luninux-a debian/ubuntu based os
Click to expand...
Click to collapse
Information for you about error no command 'repo' found
I should not say more that Rebellos has already said http://forum.xda-developers.com/showpost.php?p=47926638&postcount=1739, but your screenshot is hard to believe: you are just copying/pasting without understanding you copy from an xda forum and it appears a contracted url with "..."
You are pasting
"wget https://raw.github.com/Badadroid/and...l_manifest.xml"
instead of
"wget https://raw.github.com/Badadroid/android_wave_local_manifest/cm-11.0/local_manifest.xml"
and of course in your screenshot appears a 404 error.
neeraj797 said:
i tried each and every thing to do it myself,but failed.I was busy in same for 9-10 days,and resulted into nothing,i dont know how to compile kernel
Click to expand...
Click to collapse
ash009 said:
I had the same ghost touch problem like u my status bar also kept coming down but the problem has stopped after I installed zendrokat by tigrouzen
Thanks tigrouzen,volk,rebellos and all other developers for making fully functional android for our waves
Sent from my GT-I9000 using xda app-developers app
Click to expand...
Click to collapse
but i face same even in tigrozen's rom too,but little than the roms by volk and rebellos
---------- Post added at 11:15 AM ---------- Previous post was at 11:09 AM ----------
hunktb said:
Information for you about error no command 'repo' found
I should not say more that Rebellos has already said http://forum.xda-developers.com/showpost.php?p=47926638&postcount=1739, but your screenshot is hard to believe: you are just copying/pasting without understanding you copy from an xda forum and it appears a contracted url with "..."
You are pasting
"wget https://raw.github.com/Badadroid/and...l_manifest.xml"
instead of
"wget https://raw.github.com/Badadroid/android_wave_local_manifest/cm-11.0/local_manifest.xml"
and of course in your screenshot appears a 404 error.
Click to expand...
Click to collapse
thanks a lot for finding mistake
---------- Post added at 11:17 AM ---------- Previous post was at 11:15 AM ----------
adfree said:
@ neeraj797
You can create new Thread if you want... or use my or others about compiling...
But this here is from volk204 about:
Code:
[ROM][WIP] CM11 Badadroid v4.1.1
Thanx.
Best Regards
Click to expand...
Click to collapse
sorry,what is that code about?how can i use it
Agasharr said:
http://source.android.com/source/downloading.html
Click to expand...
Click to collapse
your point 4 said "choose appropriate file",how can i do so here? is this error coz of repo command??????????
So, I have been an Android developer since 2009 (HTC dream), and have been actively "consuming" XDA, custom ROMs and other tweaks. Surprisingly, never tried to build my own ROM from scratch.
Recently, something made me want to build the ROM, so that I can make some changes to the way SystemUI behaves (specifically putting some app shortcuts to my Pixel phone(s), like camera etc. which are now removed in Android 10). So, after a week's struggle I got to where I wanted to reach. (90% time spent in getting the first successful flash. 1% feature development. 9% feature polishing).
Here is my guide to all beginners. (It is pretty simple, if you know the steps).
System setup
I have always been a Windows user (and I love my Surface(s)), but you cannot build Android on Windows machines (as clearly called out in source.android.com). I still tried to install Ubuntu shell from Microsoft store, and build (Spoiler alert: Does not work).
Next is Mac. Android can be built in Mac, I got it build in Mac. But, it is not easy. Especially with setting up the environment, having the right version of MacOS (doesn't work on Catalina yet). And also, challenges with filesystem format (Android building only works on case sensitive file system, so you have to create such a partition). Android building needs at least 160GB of disk space (so unless you are super rich and have 512GB+ Macbook with top specs, it is going to be hard).
My choice machine hence became, my two desktops (i7 4 core, 16GB, 1TB SSD, Ubuntu 18.04 and Xeon 12 core, 32GB, 512GB disk, with Ubuntu 18.04).
There is a reason why I specifically talk about these two machines. To build Android fast (cold clean build in less than 4 hours), you need
Fast processors, and more cores
Lots of RAM
A SSD disk (with 200GB space)
If you are missing any of the above 3, you will build times will go up. I have found for hot build, both machines did a decent job (2-3 mins if you are working on single module), but SSD was more important than cores, and RAM.
Setting up your Ubuntu machine. {ETA 30 mins}
Android has official (and clearly laid out) steps here.
But for Ubuntu these are pretty much the steps.
Code:
$sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip
And the guide doesn't mention this, but you need Python2.7, so get this.
Code:
# refreshing the repositories
sudo apt update
# its wise to keep the system up to date!
# you can skip the following line if you not
# want to update all your software
sudo apt upgrade
# installing python 2.7 and pip for it
sudo apt install python2.7 python-pip
# installing python-pip for 3.6
sudo apt install python3-pip
Also install adb.
Code:
sudo apt install android-tools-adb android-tools-fastboot
If you have come till here, you're ready to build for different devices.
Getting the code ready to build {ETA 5 hours - 1 day}
Most of this is also mentioned in the AOSP official website, but some stuff are tricky, I will try to highlight those steps here.
We are going to build the ROM for Pixel 3 (Android 10 - QP1A.191105.003 )
Download and explode the code {ETA 2-3 hours, depending on internet speed}
Here we are talking about downloading at least 20GB of code (text heavy content) over the internet. Going to be excruciatingly slow.
Also, we will be downloading code for specific device model, so if you want to do it for a newer model, you will have to go through the grind again.
Although, technically it might be possible to have the same folder contain code for multiple devices, it is too risky IMO, something goes wrong, you lose everything.
Recommended folder structure would be
aosp --> device 1
aosp --> device 2
......
aosp --> device n
Click to expand...
Click to collapse
With each folder containing over 150GB of contents (after downloading, building etc), so in practical sense, n could be only 3-4 at max.
Setting up repo.
Repo is a tool that Google uses to checkout and manage the AOSP code in your local machine. Once you download the codebase, you can use the command to resync, update, code base.
Code:
mkdir ~/bin
PATH=~/bin:$PATH
You should persist this folder in your PATH variable all the times.
Code:
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
This sets up repo in your machine.
One final step before you actually start the long download, setup your git details.
Code:
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
Now download the code. Like I previously suggested I would do this.
Code:
mkdir ~/aosp
cd ~/aosp
mkdir pixel3
cd pixel3
Now, let's start getting the code home.
Code:
repo init -u https://android.googlesource.com/platform/manifest -b android-10.0.0_r10 --depth=1
Here we have done a bunch of things.
We have chosen a particular Android build tag to download (branch). You can follow the link to choose which branch you want to checkout, based on your test phone and Android version you want to build.
We have asked to only download the latest version of the branch and not all of the branch (--depth), this considerably reduces our download time.
Now that we have decided what to download, let's download the code with this command.
Code:
repo sync -qc -j4
This command is going to take a while to download over 20GB of code. In the meanwhile, let's see what we did here.
-q Asks the download to be silent (which means it will show just overall progress)
-c Makes sure we are only downloading current branch
-j[x] This the tricky one. Let's talk about this.
With -j we are asking repo to spawn multiple downloads (parallelly), to speed up the process. We will see this flag going forward in other places also. We should keep the value of x to number of cores we have in our machine. To find how many cores you have run
Code:
nproc --all
. Note that I have had situations where I put a very high value for n (higher than my cores as well), and eventually ran my JVM out of RAM to run the command (in parallel). So, the trade off here is to restrict it to the core number.
***Key step: Download radio drivers.***
Most tutorials miss this or mention it very subtly. But, without this step the ROM you flash won't boot to the home screen (you will be in the boot loop).
Go to the driver binaries page, and download the right zip files for the Android build version (android-10.0.0_r10) and device (Pixel 3) you chose earlier in the repo command.
You will be downloading two zip files (one vendor image zip and one radio drivers zip), both zips will have on shell script file each (.sh), just put those two files in your repo folder (~aosp/pixel3) and run the scripts. It will download the required proprietary files (after asking you to accept the terms). Do not miss this step.. I lost 3 days trying to find the reason for my ROM not booting up, this was it.
Let's build our code
Now things are more definitive.
Code:
source build/envsetup.sh
This command basically sets up your environment, adding necessary commands to path etc.
Code:
lunch aosp_blueline-userdebug
You can read more about this command here.
Basically this sets up the right parameters to build for your specific model. The param can derived based on aosp_[device code]-[userdebug | eng | user].
Once you have run the above two commands, you can *finally* build your codebase.
Code:
m droid -j4
m basically makes and builds the whole codebase.
Code:
droid
refers to the defaults target configuration (optional). -jN is to specify parallelism (equal to number of cores you have).
This command could take anywhere between 4-12 hours for the first run. But, if you followed all steps above, you should have a green message in the end saying this
Code:
[COLOR="SeaGreen"]#### build completed successfully (2:03:04 (hh:mm:ss)) ####[/COLOR]
Flashing your phone
Now, you're 50% safe when your build has finished successfully. Now, next 50% depends if you're able to flash it and get the phone booting.
This part most of you should know, so I am keeping it brief.
Enter fastboot
Code:
adb reboot bootloader
Unlock your bootloader
Code:
fastboot flashing unlock
Flash your Build
From the root folder of your repository (~/aosp/pixel3)
Code:
fastboot flashall -w
In a few minutes your device should be booting to the freshing baked ROM that you made.
What next?
You can just repeat
Code:
m droid -j4
to repeat builds
You can also go to a specific module folder and execute
Code:
mm
to only build that module
You can use adb sync to update specific modules without flashing again (this never worked for me, always bricked my device)
Use *fastboot flashall* without [-w] flag to flash over existing ROM without losing user data.
You can clean up the whole builds and rebuild everything from scratch. Run
Code:
make clobber
to clean your build, and use
Code:
m
to build again
You could face adb issues (device not detected) in Ubuntu. I am not going into details of how to fix that
This has been pretty much my journey so far with AOSP. I am comfortable making changes to modules and building them again.
Aw man, thanks for posting this. Never thought building rom itself would take this much effort & resources. Rom devs are serioulsy awesome ppl. :good:
Thx a lot ,I just want to learn it,it is vevy clear and help me a lot
Thanks very much for creating this. I didn't try flashing the result yet, but the build finished without any problems.
thank you very much for your post, I also want to modify little bit in code aosp and test this changes. Could you plaese provide advice about how I can open code (Android studio?), do some changes and test it by emulator?
thanks for the great guide
but following it gapps will not be included in the build, correct?
do you guys know how to include open gapps?
tia!
hi everything worked in this guide in terms of the build. While flashing the device all steps succeed but during boot the pixel is stuck at the google loading screen. Any suggestions. I have been stuck on the screen for > 30 minutes.
rorlig said:
hi everything worked in this guide in terms of the build. While flashing the device all steps succeed but during boot the pixel is stuck at the google loading screen. Any suggestions. I have been stuck on the screen for > 30 minutes.
Click to expand...
Click to collapse
Maybe you did not download appropriate .sh scripts for your device or didn't run them successfully before building the code. These scripts additionally download files and without them you could have these problems which you mentioned.
I built and loaded AOSP Andorid 9 for PIxel 2 using the eng build vs the userdebug and its works however, when I start installing and granting Google services and such it works but i get a lot of crashes. do you have Google working and not crashing all the time?
```
$ adb root
$ adb remount
$ adb shell
$ cd /system/priv-app
$ mkdir GoogleServicesFramework
$ mkdir Phonesky
$ mkdir PrebuiltGmsCorePi
$ cp /sdcard/GoogleServicesFramework.apk GoogleServicesFramework/GoogleServicesFramework.apk
$ cp /sdcard/Phonesky.apk Phonesky/Phonesky.apk
$ cp /sdcard/PrebuiltGmsCorePi.apk PrebuiltGmsCorePi/PrebuiltGmsCorePi.apk
$ chmod 755 GoogleServicesFramework
$ chmod 755 Phonesky
$ chmod 755 PrebuiltGmsCorePi
$ chmod 644 GoogleServicesFramework/GoogleServicesFramework.apk
$ chmod 644 Phonesky/Phonesky.apk
$ chmod 644 PrebuiltGmsCorePi/PrebuiltGmsCorePi.apk
:: Need to add permissions for the three apps above
::If a device fails to boot, you need to logcat and grep for " - not in privapp-permissions whitelist" and add any missing items in the xml
$ adb push C:\Users\username\Desktop\PIxel2_9.0.0_eng_build\privapp-permissions-platform.xml /etc/permissions/privapp-permissions-platform.xml
```
Hello, I'm interested on the Mac os part. I've been building pixel experience on Ubuntu form am external HDD but because it's a 2011 iMac I have USB 2.0 and r/w speeds are really low slowering the whole process. On the internal drive I have a 500gb SSD that I'd like to use for compiling but partitioning is not an option, could you help me setting up enviroment?
PD: I tried setting it up with brew but I am missing dependencies I can't (don't know how) install them with brew, all guides are for Ubuntu or for Mac is but old.
Thank you in advance!
This guide inspired me to setup a Dockerized build and flash environment for the Pixel 5.
Leaving it here as Pixel 3 owners might find it useful: https://github.com/nvllsvm/pixel5-aosp-builder
Draje0 said:
This guide inspired me to setup a Dockerized build and flash environment for the Pixel 5.
Leaving it here as Pixel 3 owners might find it useful: https://github.com/nvllsvm/pixel5-aosp-builder
Click to expand...
Click to collapse
Thanks, this is very helpful! Have you tested the built image on a pixel 5?
ammarr said:
Thanks, this is very helpful! Have you tested the built image on a pixel 5?
Click to expand...
Click to collapse
Yup - it boots and seems to work except for phone call audio (T-Mobile US).
I am having issue, I did this and got:
#### build completed successfully (17:26:44 (hh:mm:ss)) ####
Click to expand...
Click to collapse
flashing claims to have succeeded but when the phone reboots it just goes back to fastboot mode and says "no valid slot too boot to"
The last few lines of output when doing "fastboot flashall -w" are:
Erase successful, but not automatically formatting.
File system type raw not supported.
Erasing 'metadata' OKAY [ 0.007s]
Erase successful, but not automatically formatting.
File system type raw not supported.
Rebooting OKAY [ 0.000s]
Finished. Total time: 82.933s
Click to expand...
Click to collapse
Is the filesystem raw not supported normal? Other than that I am really not sure why this isn't working.
very very handy post, appreciate it, even though i would probably be not building on my own. 20GB smh.. phew!
Anyone know or figure out how to get gapps on this once built (or built-in) without having to have TWRP?
Great guide. I am working on creating a custom rom myself. I've been wondering if it's possible to prevent system apps from being included in the build. There are a few apps that I use f-droid apps in their place (example K9 mail for stock email app) and don't want to see them re-appear when the ROM is updated. If this is not possible, can they be removed from the build before flashing?
Edit ..
Figured it out.
Hi.. I'm Building AOSP 10 for POCO F1(beryllium). i dont know which command should i choose in lunch cause my device isnt listed.. They have only for Pixel Devices.. Pls guide through it
***Key step: Download radio drivers.***
Most tutorials miss this or mention it very subtly. But, without this step the ROM you flash won't boot to the home screen (you will be in the boot loop).
Go to the driver binaries page, and download the right zip files for the Android build version (android-10.0.0_r10) and device (Pixel 3) you chose earlier in the repo command.
You will be downloading two zip files (one vendor image zip and one radio drivers zip), both zips will have on shell script file each (.sh), just put those two files in your repo folder (~aosp/pixel3) and run the scripts. It will download the required proprietary files (after asking you to accept the terms). Do not miss this step.. I lost 3 days trying to find the reason for my ROM not booting up, this was it.***
How can I get this 2 zip files for my Samsung device (SM-A715F). Thank you