Guide to compiling (covers cm7) - myTouch 4G Android Development

This guide is geared to people that are new to ubuntu but would like to start playing with the internals of their android device and maybe even make themselves a rom,
disclaimer: if you break your equipment well that just plain sucks
If you are new to linux or wanna learn more about ubuntu, here is a link to the ubuntu 10.10 wiki and is full of great info
http://ubuntuguide.org/wiki/Ubuntu:Maverick
So you got yourself a nice copy of Ubuntu 9.10/10.04/10.10 and you have every intention of building a rom for yourself or maybe you just wanna learn the inside workings of android, well there are a few extra steps for getting it set up in 9.10/10.04. Gonna try to make this an easy transition since most of you are coming from a windows based machine. Make sure that you have at least a 30 gb partition set up to follow along with this guide, more is better but I know some don't have the hard drive space to spare.
So let's get our hands dirty
First we need to set up java and get a few programs, but first we need to open up our software settings, this is achieved by going up to our MENU BAR, going to SYSTEM and then then ADMINISTRATION. We will then go into SOFTWARE SOURCES. On 9.10/10.04, the repository for java 5 was removed so we need to add 9.04's repository. So let's go to our second tab marked “other software” and click ADD. A small box will open up asking us to add a apt line. So we have two software lines to add individually.
(on 10.10 software sources is inside update manager, clicking settings gets you into it)
{
"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"
}
deb http://us.archive.ubuntu.com/ubuntu/ jaunty multiverse
then
deb http://us.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse
Now, make sure that both are checked to be used in software sources and close the window. It should ask to update your sources, allow it to (insert screenshot)
Some people have problems with internal wireless cards so this might be a fix for you which was an issue for me and thankfully Garok89 had the answer. This fix works on Broadcom based cards only (including Dell wireless cards).
For the wireless card (plug in via ethernet of course)
Open up a terminal and type
sudo apt-get install bcmwl-kernel-source bcmwl-modaliases
Reboot and then enable via System>Administration>Hardware Drivers
and see if it now says that you have proprietary drivers now
gingerbread is 64 bit only
http://groups.google.com/group/android-building/browse_thread/thread/852d63ab6124c87e?pli=1
Let's open up a pretty little terminal and let's get some debs (debs are Linux distribution specific packages like we have apks in android). After entering this command it will ask you to input the "[sudo] Password for xxxxx", this is the password you use to logon. (When you type your password you will not see anything, this is for security purposes)
sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev sun-java6-jdk gitg qt3-dev-tools libqt3-mt-dev eclipse valgrind
NOTE: If we want to build with a x64-bit system we must also do the following
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl sun-java5-jdk zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev sun-java6-jdk gitg qt3-dev-tools libqt3-mt-dev eclipse valgrind pngcrush wput
It is quite a lot but it will download quickly depending on your internet connection, but almost all are needed, and yes, I did put in both java 5 and 6 because for some reason it helps having both installed side by side.
(don't forget to run update manager again and get your system up to date)
well while we are here we midas well set up our tool for downloading the source
REPO
Repo is a tool that makes it easier to work with Git in the context of Android. It is a almost the same as Git and we will go into the differences at a later time
we are gonna make sure that we are in our right directory so
cd ~
~ means home/user dir, so in my case it would be /home/sykopompos/ but using ~ allows us to simplify our use.
Mkdir bin
export PATH=${PATH}:~/bin
by typing echo $PATH we can see the all of what is in our path
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
to get the repo script
then we give it executable permissions so we can run it as a program
chmod a+x ~/bin/repo
Now we have repo set up we can move on to other things. Let's get going with setting up the android sdk. Let's go to the sdk's page in our web browser
http://developer.android.com/sdk/index.html
and select the newest linux version and download. When it is finished downloading open it up and extract it to your home/user folder and rename it to androidsdk for guide following ease purposes
next let's set up eclipse
open up eclipse, it will be in your menu bar under programming. just let it save to the workspaces folder that it defaults to and open up the help tab up on the top bar and go down to install new software
and add this line into the open text bar and type this
http://dl-ssl.google.com/android/eclipse/
now click add and in the box down below you will see it says developer tools. Click on the little check box and hit next. You should see android development tools hit next and follow the prompts and wait for it to download and install. You will have to agree to the terms to download, You will get a warning about unsigned content, just say yes. Once it is done click to restart Eclipse then go up to the window tab and go down to preferences, in the new window that pops up, go to android and add in where your android sdk is. Just hit ok and not apply or it will complain.
close out of that window than go down to in the window tab again and go into android sdk and avd manager. Go down to available packages and click on the little check box again. Download all available packages (you can prob get away without downloading anything pre 1.5/cupcake. Let that download and exit out
testsigning
go up to places 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
#!/bin/bash
# Update the Loc var to where YOU stored the testsign.jar file !
SUCCESS=
Loc=~/androidsdk/tools/
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 thru the tabs 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. but first we need to download the testsign java file and add it to our androidsdk/tools folder http://rapidshare.com/files/257189327/testsign.jar do not extract this just add it to the tools folder.
Last but not least, we need to set up adb
Open up a terminal (you might still have the previous one open, you can use that just make sure you are at ~/) and type
gedit .bashrc
paste this in the top
#AndroidDev PATH
export PATH=${PATH}:~/androidsdk/tools
export PATH=${PATH}:~/androidsdk/platform-tools
save and exit
we will check what our phone's vendor id is, this is helpfull to see if our phone is on the list, with all the growing numbers of new manufacturs producing android it is hard know every vendor's id so type
lsusb
while your phone is connected to see our vendor id and you will see something like this, if you have a device not listed please send me the vendor id at [email protected] so i can update in for others
Bus 002 Device 004: ID 0bb4:0c91 High Tech Computer Corp. (example is G2)
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″.
in most cases as seen below we only need the vendor id and with a new device you can just c+p the line and replace the vendor id
so now we can make our rules file for connecting for adb so
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 to have the new changes take effect otherwise adb will not be in your $PATH
let's check to make sure our device is seen by adb by typing
adb devices
it should give you info back that you are connected if you are not or it doesn't read the vendor id than it might be a little bit more complicated, note adb will not read if you have usb mass storage mounted, also need usb debugging on in settings/apllications/development on your phone
Now we have a complete android development environment, aren't you proud of yourself. You are well on your way to making your own custom rom
it is a wise idea to have a backup of a system dump for stock apps and to get a feel for the way android is set up and also to pull any needed files from that are easily viewed on your computer at least as refefence connect your phone in adb in the terminal type
cd ~/
mkdir stock
cd stock
adb pull /system/ ~/stock/
this will make a system dump of your systems folder of your device, a wise idea would be to make a zipped versions of it and put it someplace secure

Compiling cyanogenmod 7 source
Now we work on actually pulling sources and compiling source code. Since Cyanogenmod 7 is the most popular we will work with this (as of writing 1/15/11, cm7 source does not have a Rc1 yet so non official builds after the bacon script has the KANG attached to them)
So let’s pull cm7, open a terminal and type these commands
(you can name your source folder whatever you like but for guide purposes it will be cm7)
(make sure you are at ~)
mkdir cm7
cd cm7
repo init -u git://github.com/CyanogenMod/android.git -b gingerbread
It will ask you to enter your name and email (this is completely optional and you can just press enter to skip)
Press y and enter to confirm that your identity is correct, press y again to enable user color
You will now see repo initialized in our in our cm7 folder
Now we can use repo sync (this acts as a git clone to copy the source to our local branch)
In the terminal type
repo sync
This will take a while to download depending on your internet connection since it is pulling in over 2gb of source code (don’t use tethering during this as it will eat up your data for the month)
(you can use -j`grep 'processor' /proc/cpuinfo | wc -l` to run at full cpu speed. -j# (# means twice the amount of cores in your computer) means jobs. I will compare this to workers, your cpu could be a dual core, quad core and/or have hyperthreading (hyperthreading means a quad core will be seen as having 8 cores, I7 are considered this) well each one of your cores is a worker so one worker would be -j2 meaning the worker will handle 2 jobs. If you tell your workers to do more jobs then they won’t be happy being overloaded just like how any worker would be and will actually be slower. Now -j`grep 'processor' /proc/cpuinfo | wc -l` means read your computer’s info and run at optimal speed, now why choose between the 2 well you might not wanna run at max speed and just wanna use only half your power so you use your computer for other things during)
When we are done syncing we can get back to work
I am gonna use vision as an example but you can change it to suit the device you are working on
connect your phone you are gonna work for adb and open a terminal or use current previous terminal
(note, the proprietary vendors have been modified to work for gingerbread so make sure you have either the most up to date cm7src build or when rc1/stable comes out on your phone to get the proper files)
(this assumes you are using a previous and are in cm7)
cd device
cd htc/vision
bash extract-files.sh
cd ~/cm7
cd vendor/cyanogen/
bash get-rommanager
cd ~/cm7
We now have pull the proprietary files for our phone so we can inject them into our build along with rom manager since it is required and will fail the build if you don’t
(if you look in your cm7 source you will now see inside vendor a folder called htc (our manufactor, if you are working on a samsung or motorola you will see that) and inside it you will see your device)
We are actually now ready to build so in our terminal
source build/envsetup.sh
lunch cyanogen_vision-eng
make clean
make bacon -j`grep 'processor' /proc/cpuinfo | wc -l`
Now our build is compiling
(the lunch command pulls target specific info so there is no need for a buildspec.mk to be made as lunch does this for us)
(always make clean between builds to remove old compiled files and make sure you have a fully working build with each update, it takes a bit longer but it is worth it)
(make bacon is a script that runs make otapackage and the squisher script which uses pngcrush to cut down the size and also removes unneeded things added by doing a -eng build, it also resigns it)
When your build is complete you should have a update-cm-7.0.0-RC0-vision-KANG-signed.zip in your cm7/out/target/product folder, this is your new build.
Congratulations on your first build from cm7 source
Now for a new build you would repo sync again, make clean and make bacon again

Kernel compiling
We are gonna be pulling the cyanogenmod htc msm 7x30 kernel source, this covers ace, vision and glacier
so let’s open up a terminal and clone the kernel source so we can work with it
cd ~/
mkdir kernel
cd kernel
git clone git://github.com/CyanogenMod/htc-kernel-msm7x30.git
cd htc-kernel-msm7x30
We now have our source pulled and now need to set up our cross-compilier so we can make our kernel
export CROSS_COMPILE=~/cm7/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-
export ARCH=arm
Now have our cross compilier toolchain set up and will need to now tell it what to build, I find that make menuconfig is just plain ugly and rough to work with so
make xconfig
This will load a nice menu UI for us to work with, we are not gonna get into modifying the kernel but just a default config so go up to file and click load and select arch, then arm, then configs.
select cyanogen_vision_defconfig and click open, this will load the default cyanogen kernel config and is what you will find in a cm7 build (or glacier or ace depending what you are building for)
You can just click the x button in the corner to close it and collect save changes
Now we can compile our kernel, we can us the -j command like before to speed it up
make -j`grep 'processor' /proc/cpuinfo | wc -l`
Once the kernel compiles we have to grab our zimage and our wifi module (the couple lines up will show you the modules made and the location)
The zimage is our kernel and it can it can be found at /kernel/htc-kernel-msm7x30/arch/arm/boot/ and our wifi module name as bcm4329.ko (modules have a .ko extension) is found at /kernel/htc-kernel-msm7x30/drivers/net/wireless/bcm4329/
These are the only things we need to worry about. Now you can adb push the wifi module onto your phone and fastboot the zimage or we can have it built into our build by going to cm7/device/htc/vision/ and replacing the kernel with our zimage (will need to rename zimage to kernel) and putting our wifi module in modules and overwriting the one currently there (Make a backup of the stock kernel and wifi modules to replace your’s just in case)
Now you have your own kernel and you can compile it into your build

reserved jhjlkk,mlkjnl;klm

reserved for future use
you guys can post now

Instead of make bacon -j`grep 'processor' /proc/cpuinfo | wc -l`, you can type mka bacon. mka uses schedtool (may have to install the package) as well as auto doing the correct number of jobs.
And after you do a ". build/envsetup.sh", you can just type reposync, rather than repo sync do do a faster sync of the repos because it will do a -j10. (repo supports multiple simultaneous jobs (ie -j#)

Wow a lot to learn. Now I have to kick the dust off my Linux and see what version it is and how much of a partition I made. Now I have something to do along with being a flash junkie.
I want to really Thank You for this guide. I really commend those that try to help others. Some people might not be able to do this no matter how easy you make it. But some including myself will find this information very useful.
A big thanks.

Thank you for sharing this with the Community.

Holy mother of matrimony, with corpses

You say 2.3 is 64-Bit only. Is that referring to the OS on the computer?

bubonik said:
You say 2.3 is 64-Bit only. Is that referring to the OS on the computer?
Click to expand...
Click to collapse
The os needs to be 64 bit, that is according to google's android blog
Sent from my HTC Vision using XDA App

gridlock32404 said:
The os needs to be 64 bit, that is according to google's android blog
Sent from my HTC Vision using XDA App
Click to expand...
Click to collapse
Hmm Not sure what ubuntu 10.04 is? 32 or 64 bit? Also can I make a extra partition for this as the original one for ubuntu is only 15 mb? And do I make it ext4 or Fat32?

bobsbbq said:
Hmm Not sure what ubuntu 10.04 is? 32 or 64 bit? Also can I make a extra partition for this as the original one for ubuntu is only 15 mb? And do I make it ext4 or Fat32?
Click to expand...
Click to collapse
You can make it a new partition but you will have to change all the commands to the new partition so it might be more hassle than it is worth. Make it ext 4 for speed cause it is a native linux file system
Sent from my HTC Vision using XDA App

Updated the op with a link regarding gingerbread needing a 64bit os host

I'm gonna learn how to make bacon! Thanks for this thread.

Wish you had this up last month when I was pulling my hair out trying to figure this crap out. Thanks for it!

Is ffc working? ;p

The link in the first posst to ubuntu pocket guide is not working . It gets you to 4shared,but when trying to download it i just get that link is broken

I've built a rom for my incredible. I haven't flashed it as I went to work, and by the time I came back it was out of date lol. I ran it in a 32 bit VM, so I don't know what's up with needing 64 bit, as it's not what I used and got a good build I believe.

Related

[TUTORIAL] Setting up and Compiling JB and ICS from AOSP

Quite a few people have asked about compiling ROMs from source, so here's a guide.
This guide is directed mainly at compiling JB or ICS for the GSM Galaxy Nexus.
It will show you how to set up the building environment really quickly with a few simple commands in the Terminal, then show you how to sync up with the repository and compile a ROM.
http://www.freeyourandroid.com/guide/compile-ics
It can also be done in a Virtual Machine.
Thanks Nathan (nprussell) for the write up!
My XDA TV Video Guide:
http://www.youtube.com/watch?v=H_ReU-0w4IE&feature=g-u&context=G2a40714FUAAAAAAAZAA
---
Here are the steps:
(There are additional things you can do via the link above).
======================
{
"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"
}
IMPORTANT NOTES:
- For the purposes of this guide, you MUST be running 64-bit Ubuntu. This can be set up on a VM (it will compile if set correctly).
- If using a VM, ensure you give it at LEAST 2gb RAM and 2xCores (it'll take 3-4 hours at best)
- The source download is approximately 6gb.. you're going to need 25gb HD space for a single build.
To learn how to setup a Ubuntu 64bit VM on your Windows PC, use THIS GUIDE. I recommend using 10.04.
So... let's assume you're running Ubuntu 64 bit for the first time, and start right from the beginning.
NOTE : You're probably better of copying and pasting these commands, as some are quite long! All commands are in RED!
======================
1. Preparing your development environment
The very first thing you're going to need to do, is ensure you're working in a root terminal. Much like when using your Android phone, you'll want the # and not the $. In order to do this, open TERMINAL, and type:
sudo -i
Then type in your password. From this point forward, all of the commands in this guide assume you have root priviliges (saves typing sudo *superuser do* before everything!)
Next, we need to add a repository so that apt-get knows where to look for Java JDK:
add-apt-repository "deb http://archive.canonical.com/ lucid partner"
After that, you'll need to update the repository with the following command:
apt-get update
Now that your repository has been updated, you can proceed with installing the required packages to make building Android from source possible. The first thing you're going to need is the Java Development Kit 6:
apt-get install sun-java6-jdk
Followed by (and this may already be installed depending on which version of Ubuntu you went for):
apt-get install python
Now you're going to need Git. Git is the revision control system.
apt-get install git-core
Now, you're going to pull in all the required packages needed for the build process. As I have stated already, this guide is for 64 bit ONLY. Some of these will not work on 32-bit, so if you're using 32 bit, you're reading the wrong guide (sorry)!
apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils
IF YOU'RE USING UBUNTU 11.10, TYPE THIS COMMAND (if not, ignore this next one)
ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so
Congratulations; you now have all the required packages to proceed with the next step!
======================
2. Installing and initialising the repo
Now we need to download repo, add it to our path and set the permissions . Please note that if you close terminal, you'll have to do this again. Type each command on a new line, pressing enter after each:
mkdir ~/bin
PATH=~/bin:$PATH
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
chmod a+x ~/bin/repo
Now we need to create a directory for where our source is going to be pulled to, and change directory to it:
mkdir ICS_SOURCE
cd ICS_SOURCE
Next, you'll need to initialize the repo. There are two commands below; the top one initializes the specific branch, and the bottom is the master.
ONLY USE ONE OF THE FOLLOWING COMMANDS (recommended - TOP)
ICS: repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.4_r1
Jellybean: repo init -u https://android.googlesource.com/platform/manifest -b android-4.1.2_r1
OR:
repo init -u https://android.googlesource.com/platform/manifest
You will now be prompted to provide your name and email address. Please give it real details; that way you can use the gerrit code review tool if your email is connected with a Google account.
======================
3. Downloading the source (sync)
This is probably the most simple part, but depending on your connection speed, it could take a while. I am on 40mb download/10mb up, and it took about 25 mins. If you're on a typical DSL connection, expect to be waiting 60-120 minutes.
repo sync
======================
4. Obtaining proprietary binaries
New for ICS, Android cannot just be compiled from source code only. It requires additional hardware-related proprietary libraries to run, specifically for graphics acceleration (and GSM/LTE).
The binaries must first be downloaded from here
Each set of binaries comes as a self-extracting script in a compressed archive. After uncompressing each archive, run the included self-extracting script from the root of the source tree, confirm that you agree to the terms of the enclosed license agreement, and the binaries and their matching makefiles will get installed in the vendor/ hierarchy of the source tree. For example... after extracting one of the files, you will have 'extract-imgtech-maguro.sh'. Simply run:
sh extract-imgtech-maguro.sh
From your ICS_Source directory.
IMPORTANT NOTE : If you are building for the Nexus S, you will need the Nexus S binaries.
======================
5. It's build time!
If you're a JAVA developer, feel free to have a play with the source and make any changes you want to make at this stage. Be careful though, adding rubbish/old syntax code to the source (formatting is slightly different to gingerbread) will cause the build to fail.
Assuming that you just want to get on with building ICS, set the build environment up with:
source build/envsetup.sh
Next, you'll need to lunch. I don't mean go and have a sandwich, I mean... select which device you're building for.
NOTE - you can add other devices to this list PRIOR to proceeding with this step. If you're NOT building for the GNexus, go to the bottom of this guide and look at how to add devices to the list.
As previously stated, we're going to assume you're building for the Galaxy nexus, so type:
lunch
You'll be presented with a number of options (full-eng, etc).
If you're building for the Galaxy Nexus (codename: Maguro), type:
8
(7 for Nexus S and 6 for Nexus S 4G)
and hit enter. Now, we're ready to set the compile in motion, ladies and gentlemen. There's a lot of debate over the next bit. the -j part of the below command is technically not needed, but I have had MUCH more success compiling on a virtual machine with the -j1 added. Could be random... who knows...
Anyway, to set your build in motion, you now have TWO options. The first option will output the build as img files. The second option will output a flashable .zip file. I recommend the latter if you intent to use CWM over fastboot.
make -j1
or
make -j1 otapackage
Congratulations - in a few hours, you should have a working AOSP build for the Galaxy Nexus!
thank you
i tried it ,and works fine
is there any easier way to debug ?
like using eclipse
i imported the source eclipse but no idea what the next steps are
Thanks for this, will study properly when I get a chance
Sent from my Galaxy Nexus using xda premium
@sbice try this http://www.javahotchocolate.com/tutorials/setup-eclipse.html#64-bit
@op, Thanks, but at least, check the howtos you link to, there's missing steps there.
I dont agree these kind of threads should be in dev section.
bk201doesntexist said:
@op, Thanks, but at least, check the howtos you link to, there's missing steps there.
I dont agree these kind of threads should be in dev section.
Click to expand...
Click to collapse
Why? It's great for people to learn.
Sent from my Galaxy Nexus using xda premium
ljwnow said:
Why? It's great for people to learn.
Sent from my Galaxy Nexus using xda premium
Click to expand...
Click to collapse
Agreed, the thing which fuels development is curiosity, and when people want to know how to do something, it helps to have links or topics dedicated to that specific area.
The OP's link is pretty much the same as this too (official Android building guide)
http://source.android.com/source/initializing.html
Has anyone managed to build the android-4.0.1_r1.2 branch with Ubuntu 11.10?
I know it works on the master branch and the r1 branch supposedly didn't support it but have the build tools been updated this one?
Just wanted to check before commiting to a massive download!
dave_t321 said:
Has anyone managed to build the android-4.0.1_r1.2 branch with Ubuntu 11.10?
I know it works on the master branch and the r1 branch supposedly didn't support it but have the build tools been updated this one?
Just wanted to check before commiting to a massive download!
Click to expand...
Click to collapse
It's the branch I use for building VillainROM.
dave_t321 said:
Has anyone managed to build the android-4.0.1_r1.2 branch with Ubuntu 11.10?
I know it works on the master branch and the r1 branch supposedly didn't support it but have the build tools been updated this one?
Just wanted to check before commiting to a massive download!
Click to expand...
Click to collapse
The only thing to note with 11.10, is when you install all the build libraries, one of them is incorrect (no longer available in 11.10). Instead of installing lib32readline5-dev you need to install lib32readline-dev instead.
Code:
$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
x11proto-core-dev libx11-dev lib32readline-dev lib32z-dev \
libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
libxml2-utils
Perfect, ta muchly.
ljwnow said:
Why? It's great for people to learn.
Sent from my Galaxy Nexus using xda premium
Click to expand...
Click to collapse
If you didn't code it yourself, it doesn't belong in dev subforum. There's Q&A subforum for that.
/me sent this on a i9250 using tapatalk
dave_t321 said:
Has anyone managed to build the android-4.0.1_r1.2 branch with Ubuntu 11.10?
I know it works on the master branch and the r1 branch supposedly didn't support it but have the build tools been updated this one?
Just wanted to check before commiting to a massive download!
Click to expand...
Click to collapse
Yeah -- there are a few fixes you need to do, here are a few main ones:
https://github.com/TeamKang/external_gtest/commit/869a8876632f5bd17bf181930a6535b5c5084b94
https://github.com/TeamKang/frameworks_compile_slang/commit/cb818131815e8a4e608e3329addbc791ff3a5d82
https://github.com/CyanogenMod/andr...mmit/387c70bd952c033453fc99da1672fa40af837376
I think there may be one or two more, just google the errors you get
Just a quick question...
I've just compiled a ROM using the guide, got the binaries, etc. etc. but the build.prop from the resulting ROM had LOADS of random entries in it for LTE phones? and it's all singray as opposed to maguro. Have I done something wrong?
EddyOS said:
Just a quick question...
I've just compiled a ROM using the guide, got the binaries, etc. etc. but the build.prop from the resulting ROM had LOADS of random entries in it for LTE phones? and it's all singray as opposed to maguro. Have I done something wrong?
Click to expand...
Click to collapse
Yeah you've compiled it for the wrong device. I forgot to update the lunch menu bit, cos they added the xoom and the nexus s onto the list. You want full eng maguro. I'll fix it now.
Just realised that, option 4 in the lunch menu isn't the GN - it's 8
Rebaking
OK, correct ROM built this time. Compiled it as .IMG files so I could then get it into the kitchen but once the ROM has been rooted, etc. it won't flash - I get a Status 7 error mentioning the boot.img
Any suggestions?
P.S. The 8 in your guide is smaller than the rest of the text
Probably a bad repack of the boot.img?
Not too sure, took the boot.img from a known working 4.0.3 ROM and still get the same error:
assert failed: write_raw_image("/tmp/boot.img". "/dev/block/platform/omap/omap_hsmc.0/by-name/boot")
E:Error in/sdcard/update.zip
(Status 7)
Installation aborted.
Fixed, dsixda updated the kitchen to extract the boot.img before flashing (which is why it was failing before)

CyanogenMod building quickstart

Took me some time to figure this out so I'm documenting it publicly.
Obviously you need a Linux system with a working build environment. A VM will do fine. It seems like the build scripts will prompt you when more things need installing.
So far it seems to be as simple as:
Code:
# First pick out a nice EMPTY directory to do this in!
repo init -u git://github.com/CyanogenMod/android.git -b jellybean
repo sync # Takes HOURS
. build/envsetup.sh && brunch samsung_i927
FYI, this process takes HOURS the first time. Expect to not have use of that computer for the better part of a day, or longer if it's a bit old.
It'll error because it expands to the wrong path (samsung_i927/samsung_i927, should be samsung/i927). Not sure what the story with that is, I just renamed the folders for now.
This nets you CM10. Where's CM10.1? Hell if I know. Still working on that. Substitute "cm-10.1" in place of "jellybean". It appears to be complete sources; I didn't see if it compiles or not because what I REALLY want is CM10.1. waiting to sync right now. Will let you know how well the build goes.
So, the official CM repository doesn't have 10.1 stuff for the Glide. You can manually check out the 4.1 stuff with git clone https://github.com/CyanogenMod/android_device_samsung_i927.git but it doesn't compile. I'm working on that right now... unless someone can get dman to release his 4.2 worktree.
Here's what I'm doing for CM10.1.
Same setup as above, but:
Before brunching:
Code:
cd device
git clone https://github.com/CyanogenMod/android_device_samsung_i927.git
mkdir samsung
mv android_device_samsung_i927 samsung/i927
I had to add a line to device/samsung/i927/BoardConfig.mk to get started:
Code:
TARGET_ARCH := arm
Apparently that's new in 4.2.
Then I pulled the kernel from here and compiled it using the kconfig pulled from my phone running dman's last build. Copied arch/arm/boot/zImage to out/target/product/i927/kernel back in the CM tree
Then:
Code:
cp kernel/arch/arm/boot/zImage cm/out/target/product/i927/kernel
mkdir cm/device/samsung/i927/prebuilt
cp kernel/drivers/net/wireless/bcmdhd/dhd.ko kernel/drivers/scsi/scsi_wait_scan.ko cm/device/samsung/i927/prebuilt
Then I "brunch i927" instead of samsung_i927. Now it's hung up on a driver that wasn't in the Kconfig... for a.... FM tuner? Odd. Awell, might as well give it what it wants!
So I started over because this is clearly newer and seems to have some important prebuilts already...
Still had to put TARGET_ARCH := arm in BoardConfig.mk but so far that's all I've had to do...
By the by, do "Breakfast i927" followed by "make -jX" (where X is twice the number of cores your build machine has) so it runs stuff in parallel and actually uses your whole CPU.

[Guide]How to Compile PAC Rom

Hey guys, so a lot of you have be eagerly anticipating the release of PAC-4.4. Others of you may be seeking pac for a device that is not supported at this moment. So I thought I would take this opportunity to write a guide on how to compile PAC.
In order to compile Android, I recommend that you use a Linux distro. For the purposes of this guide, I shall be using Ubuntu 13.10. It is pretty easy to set up, even as a dual boot with windows.
The first thing you need to do, once you have installed Ubuntu, is to set it up to be able to compile Android. There are a lot of guides that show you how to do this, and this guide has pretty clear instructions. Follow all of his directions until you reach the point where he tells you to initialize the repository (The command he has as an example there is repo init -u git://github.com/AOKP/platform_manifest.git -b jb-mr2. Do not run this command or you will have downloaded the AOKP sources instead of the PAC sources)
To download the pac sources, we need to initialize the repository first. For this guide, I will be downloading the pac source to ~/android/pac. Run:
Code:
mkdir -p ~/android/pac
cd ~/android/pac
repo init -u git://github.com/PAC-man/pacman.git -b pac-4.4
Now it is time to download the source itself. Keep in mind that the source is rather large (~10+ GB), so you might want to make yourself a cup of tea (or 10 cups if you have a crappy isp) while waiting. Run:
Code:
repo sync
Now, it is time to do the actually compiling. If your device is already supported by PAC, please skip directly to post 3. Else, go to post 2.
Adding Support for a device
To add support for your device, the first thing you need to do is to hunt down your device tree. If you are not sure where your device tree is located, google it or ask in your device's subforum. Now, it is time to add the files required to build.
From the root of directory where you have downloaded the pac source (~/android/pac), go to the vendor/pac directory. This is where we will be making the changes necessary to build for your device. Here are the files that need to be modified/added. Obviously, substitute your devices codename for CODENAME.
1. dependencies/CODENAME.dependencies
This file grabs your device and kernel tree. Look at the dependencies file of a device that is similar to yours to figure out what you need to place in here. A list of all the devices we support and their respective codenames can be found here. Again, if you are unsure about what to place here, you may want to ask for help in your devices subforum. Whenever possible, try to use the CM device tree. For the vendor files, keep the account name as "Pinky-Inky-and-Clyde" but change the repository to the appropriate OEM (check here for repos). Do not worry if the vendor files for your device are not in that repository. We will be adding them later.
Here is a sample CODENAME.dependencies file for a Samsung device (note that the account names are case sensitive):
Code:
[
{
"account": "Pinky-Inky-and-Clyde",
"repository": "proprietary_vendor_samsung",
"target_path": "vendor/samsung",
"revision": "cm-11.0"
},
{
"account": "CyanogenMod",
"repository": "android_device_samsung_CODENAME",
"target_path": "device/samsung/CODENAME",
"revision": "cm-11.0"
},
{
"account": "CyanogenMod",
"repository": "android_kernel_samsung_CODENAME",
"target_path": "kernel/samsung/CODENAME",
"revision": "master"
},
{
"account": "CyanogenMod",
"repository": "android_hardware_samsung",
"target_path": "hardware/samsung",
"revision": "cm-11.0"
}
]
Once you have done this, go to the root of your pac source (~/android/pac for this guide), and run
Code:
./vendor/pac/tools/getdependencies.py CODENAME
This will attempt to create the file .repo/local_manifests/roomservice.xml and then sync up the sources. If you have to make changes to your dependencies, please remove the roomservice.xml file and re-run the script again to ensure that no incorrect repositories are left lingering.
Go to the vendor files directory (~/android/pac/vendor/YOUR_OEM), and search for the vendor files of your device. If they are not there, you will have to search for them online and copy them into the folder.
Alternatively, if your device has an extract-files.sh script, in the device tree (located in device/OEM/CODENAME), you can hook up your device via usb and run that command to grab the vendor files directly from your device. In this case, connect your device and run:
Code:
cd device/OEM/CODENAME
./extract-files.sh
2. products/pac_CODENAME.mk
Again, look at the same file for a device that is similar to yours and make the appropriate changes for your device.
Here is a sample pac_CODENAME.mk file for a hdpi device:
Code:
# Check for target product
ifeq (pac_CODENAME,$(TARGET_PRODUCT))
# OVERLAY_TARGET adds overlay asset source
OVERLAY_TARGET := pa_hdpi
# PAC device overlay
PRODUCT_PACKAGE_OVERLAYS += vendor/pac/overlay/pac/hdpi_480x800
# PAC boot logo
PRODUCT_COPY_FILES += \
vendor/pac/prebuilt/common/bootlogo/pac_logo_480x800.rle:root/logo.rle
# Copy bootanimation
PRODUCT_COPY_FILES += \
vendor/pac/prebuilt/480x800/bootanimation.zip:system/media/bootanimation.zip
# include PAC common configuration
include vendor/pac/config/pac_common.mk
# Inherit CM device configuration
$(call inherit-product, device/samsung/CODENAME/cm.mk)
PRODUCT_NAME := pac_CODENAME
endif
Note: for the PAC device overlay, look inside vendor/pac/overlay/pac for the available overlays. Likewise, for the bootanimation and boot logo, look in their respective directories for the available sizes.
3. vendorsetup.sh
Add a line that looks something like this in the appropriate area of this file (under the appropriate OEM, and in alphabetical order, please).
Code:
add_lunch_combo pac_CODENAME-userbebug
--- The below files are not necessary for successful compilation, but are required if you submit your device for official PAC support. ---
4. Contributors
5. Nightly.xml
6. XDAThreads
7. devices-breakdown.xml
For these files, follow the format of the other devices.
Building PAC
Now that we got all of the housekeeping out of the way, it is time to build the rom!
Open up a terminal and change directory to the base of where you downloaded the PAC source to begin compiling. Run (substitute your device's codename for CODENAME):
Code:
./build-pac.sh CODENAME
There are some additional options available in the build script. To see them all, simply run:
Code:
./build-pac.sh
If everything goes well, your build should be starting. Go take a walk or something while it is building. This may take a while if you have a computer with weak specs.
Submitting your device for official support
Once you have successfully built PAC for your device and tested it, you can submit your changes to our gerrit for official support and automatic nightly builds.
In order to do this, you need to first sign up on our gerrit and get your ssh keys set up. So head on over to http://review.pac-rom.com/ to register for an account. Next, we need to generate an ssh key pair in order to push changes to gerrit. To check if you already have a key pair generated, run
Code:
ls ~/.ssh
If it shows a id_rsa.pub, you already have your keys generated and you can skip to the adding your ssh key to gerrit part.
On the other hand, if there is nothing in your .ssh folder, run
Code:
ssh-keygen -t rsa -C "[email protected]"
When you run this command, it will ask you where you want to save this file. Just hit enter. Next, it will ask you for a passphrase for your private key. Enter a passphrase here that you can remember.
Now, it is time to add your public key to our gerrit. To copy your public key over, run:
Code:
sudo apt-get install xclip
xclip -sel clip < ~/.ssh/id_rsa.pub
(Alternatively, you can cat the file and just copy it, but the above mentioned way avoids any missing characters while copying.)
Now, login to our gerrit and go to your account settings > ssh public keys. Click on add, and paste the key and save.
It is time to upload your changes. We have a script to make this process easier. To grab the script, run:
Code:
cd ~/bin
wget http://pac-rom.com/downloads/pac-review
chmod a+x pac-review
Now, run:
Code:
cd ~/android/pac
cd vendor/pac
git add -A
git commit
This should open up a text editor (probably nano) where you can put a commit message. For our purposes, just write something along the lines of "Add support for ___." To save the file, hit Ctrl + o. To exit, hit Ctrl + x. Then, run:
Code:
pac-review -p
Follow the prompts and your changes should be automatically pushed and a link will show to your change on gerrit.
If you realize that you made a mistake in your commit, DO NOT submit a new change. Instead, make your changes, then run:
Code:
git add -A
git commit --amend
Update your commit message if necessary and then push with the pac-review script. This will create a new patchset on our gerrit instead of creating a new commit.
And that is all! If you have any questions, dont hesitate to ask them here. Ill try to get back to you as soon as possible
Hey iurnait, I didn't find any instructions on pac's github on how to clone the entire trees. Please help.
Ateekujjawal said:
Hey iurnait, I didn't find any instructions on pac's github on how to clone the entire trees. Please help.
Click to expand...
Click to collapse
cd into the directory where you are working, and then run
Code:
repo init -u git://github.com/PAC-man/pacman.git -b pac-4.4
then run
Code:
repo sync
iurnait said:
cd into the directory where you are working, and then run
Code:
repo init -u git://github.com/PAC-man/pacman.git -b pac-4.4
then run
Code:
repo sync
Click to expand...
Click to collapse
By doing this, will I get all the packages_apps_settings,frameworks_av etc.
Ateekujjawal said:
By doing this, will I get all the packages_apps_settings,frameworks_av etc.
Click to expand...
Click to collapse
this will grab everything needed to compile
How can I use linaro toolchain to compile pacman and where to download it.
Simplest Method you found here:
http://forum.xda-developers.com/showthread.php?t=2644910
You need only one a Machine with a Ubuntu ready,
Is this method also usable for the LG P990 (Optimus 2x) ?
If so, any special things I should look out for with this old device?
Sent from my LG P990 running CM11 (thnx tonyp) via xda-developers app
DavidLouwers said:
Is this method also usable for the LG P990 (Optimus 2x) ?
If so, any special things I should look out for with this old device?
Sent from my LG P990 running CM11 (thnx tonyp) via xda-developers app
Click to expand...
Click to collapse
If you can find your device here: https://github.com/PAC-man/android_vendor_pac/blob/pac-4.4/devices-breakdown.xml
it will work
@DavidLouwers
talk with tonyp and penguin77 if the device repos work PAC 4.4
You can only one use the Kernel/Device/Vendor Tree... (if you planned to run as nightly in jenkins) If tonyp use for her [email protected] other modified repos was normally is in PAC or Cyanogenmod... it can build but you must modifing default.xml in .repo/manifests. But then you can not add to nighlys...
if you want help, ask me, i had this device before and maintained PAC for p990
MetaIIica said:
@DavidLouwers
talk with tonyp and penguin77 if the device repos work PAC 4.4
You can only one use the Kernel/Device/Vendor Tree... (if you planned to run as nightly in jenkins) If tonyp use for her [email protected] other modified repos was normally is in PAC or Cyanogenmod... it can build but you must modifing default.xml in .repo/manifests. But then you can not add to nighlys...
if you want help, ask me, i had this device before and maintained PAC for p990
Click to expand...
Click to collapse
Thanks, I will! I will do everything in my power to make PAC ROM available for my phone! I used to have your PAC 4.3 ROM, which I loved, and that's the reason I really want a KitKat PAC ROM, because KitKat is optimised for phones with low memory, so it'd be awesome to have PAC 4.4 for the old P990.
I shall try to gather the penguins and port PAC to P990!
Langes said:
If you can find your device here: github site, can't post it because I'm a new member :/
it will work
Click to expand...
Click to collapse
Sadly enough, P990 isn't on it, but with the help of Metallica and the penguins, maybe we'll be able to make PAC available for the P990 anyway!
Ateekujjawal said:
How can I use linaro toolchain to compile pacman and where to download it.
Click to expand...
Click to collapse
http://forum.xda-developers.com/showthread.php?t=2348366
For now, there is only cm11 available for the note 3.
Does this matter?
If not, I can try to make it
Gesendet von meinem SM-N9005 mit Tapatalk
Thumper_ said:
For now, there is only cm11 available for the note 3.
Does this matter?
If not, I can try to make it
Gesendet von meinem SM-N9005 mit Tapatalk
Click to expand...
Click to collapse
If there is a working cm 11 tree available, have a look at the second post on how to add PAC support. It shouldnt be too difficult considering you already have cm11
Sent from my Nexus 7 using Tapatalk
Thumper_ said:
For now, there is only cm11 available for the note 3.
Does this matter?
If not, I can try to make it
Gesendet von meinem SM-N9005 mit Tapatalk
Click to expand...
Click to collapse
Would be great if you built it and shared the build..not much available for the note 3 yet
Sent from my SM-N900P using Tapatalk
nelsonator1982 said:
Would be great if you built it and shared the build..not much available for the note 3 yet
Sent from my SM-N900P using Tapatalk
Click to expand...
Click to collapse
Just downloading the repo
Let's see what I can do.
Gesendet von meinem SM-N9005 mit Tapatalk
Can't get it
where should I place the pac_CODENAME.mk ?
Then the dependencies?
Suppose, I am building for c1905, then the dependencies must be in /device/sony/c1905/c1905.dependencies?
Then
Is this pac_c1905.mk okay?
Code:
# Check for target product
ifeq (pac_c1905,$(TARGET_PRODUCT))
# OVERLAY_TARGET adds overlay asset source
OVERLAY_TARGET := pa_hdpi
# PAC device overlay
PRODUCT_PACKAGE_OVERLAYS += vendor/pac/overlay/pac/hdpi_480x854
# PAC boot logo
PRODUCT_COPY_FILES += \
vendor/pac/prebuilt/common/bootlogo/pac_logo_480x854.rle:root/logo.rle
# Copy bootanimation
PRODUCT_COPY_FILES += \
vendor/pac/prebuilt/480x854/bootanimation.zip:system/media/bootanimation.zip
# include PAC common configuration
include vendor/pac/config/pac_common.mk
# Inherit CM device configuration
$(call inherit-product, device/sony/c1905/cm.mk)
PRODUCT_NAME := pac_c1905
endif
Help Me out. I am trying to build for Xperia M.

[GUIDE] Install Ubuntu on a Chromebook

[Size=+2] This method should allow you to switch between Chrome OS and Ubuntu by just pressing "Ctrl + Alt + forward" for intel based chromebooks or "Ctrl + Alt + Shift + Forward" for ARM based devices, to go back all you need do is repeat but replace forward with back.
[/Size]
{
"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"
}
[color=firebrick3] [Size=+3] Step One: Dev Mode [/size] [/color]
Before starting this process please note that doing this will wipe the data from your chromebook thankfully as your apps and drive are cloud based this shouldn't be too much of an issue
Whilst holding down refresh and esc press the power button, this will reboot your chromebook in to recovery mode
As soon as a yellow exclamation mark appears on screen press Ctrl+D. Press Enter
Your chromebook will now reboot again and enable developer mode, this should take about 10 minutes
upon the next reboot a red exclamation mark will be present, you may either wait 30 seconds for it to boot to desktop or you can press Ctrl+D
[color=firebrick3] [Size=+3] Step Two: Installation [/size] [/color]
To install
First download Crouton from here Github to your downloads folder
Enter the crosh terminal by pressing Ctrl + Alt + T
Enter the following
Code:
Shell
sudo sh -e ~/Downloads/crouton -t xfce
xWolf13 said:
I may also add.
You are not restricted to only XFCE. You can install other distributions by specifying it. In the command in step two, you are able to replace xfce with unity, gnome, kde, lxde, e17, and even XBMC. You are also able to change which version of Ubuntu you want to install. You use the same command in step two but you add a -r and specify which version. You can read all supported ones over here . You can also put crouton within a window. Example of installation with xfce and ubuntu 14.04 is : sudo sh ~/Downloads/crouton -t xfce,xiwi -r trusty
Click to expand...
Click to collapse
If the chromebook you are running has a touchscreen you may wish to change this second line to:
Code:
sudo sh -e ~/Downloads/crouton -t xfce,touch
It will now start installing Ubuntu, this can take anywhere between 10 and 30 minutes
Once installed it will request a user name and password for Ubuntu
following this you may start ubuntu up by entering:
Code:
sudo startxfce4
To access Ubuntu you need to press:
"Ctrl + Alt + forward" for intel based chromebooks followed by "Ctrl+Alt+Refresh",
or "Ctrl + Alt + Shift + Forward" for ARM based devices,
To return to chrome all you need do is press "Ctrl+Alt+Back" again adding shift for Arm devices
[color=firebrick3] [Size=+3] Step Three: What next? [/size] [/color]
To close Ubuntu all you need do is log out and return to chrome OS
To reboot Ubuntu enter the following again
Code:
sudo startxfce4
Initially not many apps will be installed however to install these you can use:
Code:
Sudo apt-get install
and to search the packages available you can use
Code:
Sudo apt-cache search (search terms)
The apps I advise you install in terminal first are:
Code:
Sudo apt-get install LibreOffice
Sudo apt-get install Chromium-browser
Sudo apt-get install firefox
Sudo apt-get install vlc
To remove Ubuntu from the device at the exclamation mark on boot up press space bar and you will reset the device
[color=firebrick3] [Size=+3] Step Four: Removing [/size] [/color]
To remove Ubuntu from your chromebook without powerwashing you can enter this in to the terminal shell
Code:
sudo delete-chroot -a
[Size=+2]
Hope this helps and if you have any questions drop a comment below
*Update* Thanks to Tomek Kondrat for writing an article on this post and getting this on the front page of XDA: you can read the article here [/Size]
Been known for awhile and they have even newer scripts to self install Linux http://chromeos-cr48.blogspot.com/2013/05/chrubuntu-one-script-to-rule-them-all_31.html?m=1
I may also add.
You are not restricted to only XFCE. You can install other distributions by specifying it. In the command in step two, you are able to replace xfce with unity, gnome, kde, lxde, e17, and even XBMC. You are also able to change which version of Ubuntu you want to install. You use the same command in step two but you add a -r and specify which version. You can read all supported ones over here . You can also put crouton within a window. Example of installation with xfce and ubuntu 14.04 is : sudo sh ~/Downloads/crouton -t xfce,xiwi -r trusty
---------- Post added at 10:31 PM ---------- Previous post was at 10:28 PM ----------
xXminiWHOOPERxX said:
Been known for awhile and they have even newer scripts to self install Linux http://chromeos-cr48.blogspot.com/2013/05/chrubuntu-one-script-to-rule-them-all_31.html?m=1
Click to expand...
Click to collapse
This is so you can dual boot Linux. Crouton is used within Chrome OS which is more like a VM. Chrubuntu may not support all Chromebooks including the one I am using, the Toshiba Chromebook 13. Missing touchpad drivers are the only problem for this chromebook and it is an easy fix. Crouton is 'new' and more stable with less usage of memory on the Chromebook.
Is there any need to somehow back-up the original OS/image using this method? Maybe I'm just used to Android, and it doesn't seem like it, but wanted to make sure any information such as my account/settings wouldn't be erased during this install. Thanks for the tutorial in any case; wanting to upgrade my laptop to something more current, would love the ability to use both Chrome OS and Linux on one laptop!
Joshmccullough said:
Is there any need to somehow back-up the original OS/image using this method? Maybe I'm just used to Android, and it doesn't seem like it, but wanted to make sure any information such as my account/settings wouldn't be erased during this install. Thanks for the tutorial in any case; wanting to upgrade my laptop to something more current, would love the ability to use both Chrome OS and Linux on one laptop!
Click to expand...
Click to collapse
There is, but it shouldn't be needed if you are installing Crouton. Uninstalling crouton is a simple delete command or a Powerwash of the Chromebook. Here is however how you recover your chromebook if anything goes wrong. https://support.google.com/chromebook/answer/1080595?hl=en
Was hoping for a new tutorial, but used this tut on other sites already..
If you're interested in going full linux + coreboot, check out this resource:
https://johnlewis.ie/custom-chromebook-firmware/rom-download/
And check out the boot speed!
And a screenshot of my c720 setup
http://a.pomf.se/jkfwzi.png
xWolf13 said:
There is, but it shouldn't be needed if you are installing Crouton. Uninstalling crouton is a simple delete command or a Powerwash of the Chromebook. Here is however how you recover your chromebook if anything goes wrong. https://support.google.com/chromebook/answer/1080595?hl=en
Click to expand...
Click to collapse
Thanks; I think I may have been thinking about tutorials showing how to upgrade the C720's SSD and the need to create a recovery image, but I appreciate the tip!
savoca said:
If you're interested in going full linux + coreboot, check out this resource:
https://johnlewis.ie/custom-chromebook-firmware/rom-download/
And check out the boot speed!
And a screenshot of my c720 setup
http://a.pomf.se/jkfwzi.png
Click to expand...
Click to collapse
I love our C720; we've got the 2GB/ARM model, is yours the 2GB/ARM or the 4GB/Intel?
EDIT: dur, just looked at your screenshot, nevermind How's ArchLinux run on just 2GB of RAM? I'm more used to Ubuntu/Kubuntu/Mint, which are more resource intensive, I think (Linux newbie here).
And if I recognize your name correctly, you did some work on the Evo 4G, didn't you? Great work, if I remember right......
Joshmccullough said:
I love our C720; we've got the 2GB/ARM model, is yours the 2GB/ARM or the 4GB/Intel?
EDIT: dur, just looked at your screenshot, nevermind How's ArchLinux run on just 2GB of RAM? I'm more used to Ubuntu/Kubuntu/Mint, which are more resource intensive, I think (Linux newbie here).
And if I recognize your name correctly, you did some work on the Evo 4G, didn't you? Great work, if I remember right......
Click to expand...
Click to collapse
Afaik the C720 doesnt have an ARM version? Arch runs just fine on 2GB but some of the AUR packages like google-ttf-fonts dig in so swap is necessary. EVO was a very long time ago accompanied by lots of noobishness!
savoca said:
If you're interested in going full linux + coreboot, check out this resource:
https://johnlewis.ie/custom-chromebook-firmware/rom-download/
And check out the boot speed!
And a screenshot of my c720 setup
http://a.pomf.se/jkfwzi.png
Click to expand...
Click to collapse
Reading through this, I still don't get what the script is doing? Is it installing a Linux? Also, how long did this whole process take you? I probably won't do it all today because break is now over. I'll try doing my next break.
Edit: Ohhhhhh now I get it. Will for sure do this to my chromebook. Thank God its supported lol. What distro are you running?
savoca said:
Afaik the C720 doesnt have an ARM version? Arch runs just fine on 2GB but some of the AUR packages like google-ttf-fonts dig in so swap is necessary. EVO was a very long time ago accompanied by lots of noobishness!
Click to expand...
Click to collapse
Man, I'm just on a 'type before looking' kick tonight; yeah, Intel processor for the C720. I'm in the process of trying to decide whether I want to upgrade my current laptop with a dual-boot Chromebook or shoot for the moon with a full 17" laptop, blow out the Windows 8 and go straight with a Linux build or two (or three, or....). I like the idea of the Chromebook, but I don't know if the smaller keyboard would put a hurt on my wrists with the Linux classes I'll be taking.
Anyways, outside the purview of this forum....thanks all for the input and the cool tutorial!
Sudo apt-get search (search terms)
Click to expand...
Click to collapse
i think it should be apt-cache instead
In terms of available drive space once Ubuntu's loaded, and suggested applications like Libre Office are installed, how are people finding the available SSD/internal memory space once all's said and done? I suppose getting SD cards to store stuff on would be a cheaper option than upgrading the internal memory, using Google Drive for basic office suite stuff, too.
Joshmccullough said:
In terms of available drive space once Ubuntu's loaded, and suggested applications like Libre Office are installed, how are people finding the available SSD/internal memory space once all's said and done? I suppose getting SD cards to store stuff on would be a cheaper option than upgrading the internal memory, using Google Drive for basic office suite stuff, too.
Click to expand...
Click to collapse
Usually, after a new installation of Ubuntu, I update everything then start uninstalling not needed things. I usually uninstall Libre Office as I use Google Drive as my office suite also.
Thanks to @savoca for telling us about the Coreboot! Without that, I wouldn't have known that we were able to put "full on" Linux on a Chromebook
See this link for a screenshot of Elementary OS on a Chromebook
xWolf13 said:
I may also add.
You are not restricted to only XFCE. You can install other distributions by specifying it. In the command in step two, you are able to replace xfce with unity, gnome, kde, lxde, e17, and even XBMC. You are also able to change which version of Ubuntu you want to install. You use the same command in step two but you add a -r and specify which version. You can read all supported ones over here . You can also put crouton within a window. Example of installation with xfce and ubuntu 14.04 is : sudo sh ~/Downloads/crouton -t xfce,xiwi -r trusty
Click to expand...
Click to collapse
Aye was trying to keep it simple, but shall ad this later
exge said:
i think it should be apt-cache instead
Click to expand...
Click to collapse
fixed! cheers for that, should really start proof reading posts before submitting
xWolf13 said:
I may also add.
You are not restricted to only XFCE. You can install other distributions by specifying it. In the command in step two, you are able to replace xfce with unity, gnome, kde, lxde, e17, and even XBMC. You are also able to change which version of Ubuntu you want to install. You use the same command in step two but you add a -r and specify which version. You can read all supported ones over here . You can also put crouton within a window. Example of installation with xfce and ubuntu 14.04 is : sudo sh ~/Downloads/crouton -t xfce,xiwi -r trusty
Click to expand...
Click to collapse
ahhh good point slipped my mind, I've updated the guide to include your quote so you get credit. Cheers
Has anyone installed Kali with crouton?
Sent from my HTC One_M8 using XDA Free mobile app
fourhundredandtwenty said:
Has anyone installed Kali with crouton?
Click to expand...
Click to collapse
Kali should work fine using this method

[Guide] Build Your Own [UNOFFICIAL][9] LineageOS4Microg 16.0 (by Bernie_nix)

In the spirit of open-source, if there's one ROM that deserves to be "home-brewed" in addition to AOSP and Lineage, it's LineageOS4Microg. This guide will explain how to do so using Docker. LineageOS and Microg are explained below followed by the guide.
{
"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"
}
Code:
/*
* I'm not responsible for bricked devices, damage, loss of Google services, you getting fired because the alarm app failed, etc. Do this at your own risk.
* Please do some research if you have any concerns about features included in the products you find here before flashing it!
* YOU are choosing to make these modifications.
* Your warranty may/will be void if you tamper with any part of your device / software.
* Same statement for XDA.
*/
About LineageOS4MicroG & LineageOS
LineageOS unofficial fork with built-in microG gapps implementation.
Full Play Services compatibility [Well-almost...YMMV]
Our ROM has built-in microG free-as-in-freedom re-implementation of Google's proprietary Android user space apps and libraries. This enables you to use every Google service you need without keeping another closed-source binary blob in your Android system.
Native F-Droid support
LineageOS for microG comes with F-Droid already installed. You can use it to access plenty of FOSS applications or even a Play Store bridge repository like Playmaker or GPlayWeb.
About LineageOS
LineageOS is a free, community built, aftermarket firmware distribution of Android 9 (Pie), which is designed to increase performance and reliability over stock Android for your device.
LineageOS is based on the Android Open Source Project with extra contributions from many people within the Android community. It can be used without any need to have any Google application installed. Linked below is a package that has come from another Android project that restore the Google parts. LineageOS does still include various hardware-specific code, which is also slowly being open-sourced anyway.
All the source code for LineageOS is available in the LineageOS Github repo. And if you would like to contribute to LineageOS, please visit out Gerrit Code Review.
Learn more at:
LineageOS: https://lineageos.org/
LineageOS4MicroG: https://lineage.microg.org/​
Click to expand...
Click to collapse
Rom Built by Bernie_nix​Known issues:
USB-C headphones work for music, watching videos, etc. They don't work in the phone app...yet. (working on this)
Some users report VOIP calls don't work properly. YMMV. Skype, Whatsapp, Nextcloud Talk, working great for me.
Automatic updates not yet implemented but will be in a future build.
You tell me.
Building Requirements
1. A fast PC or VPS account such as Google Compute Engine. Minimum PC recommended requirements are Intel i5 or equivalent, 4 cores 8 threads minimum (more cores and better CPU recommended), 16GB ram, SSD and 300GB free drive space minimum, fast internet connection (you will download over 30GB of sources).
2. Ubuntu 18.04 is supported here. If you use Windows or another version of Linux, let others know of your tweaks and workarounds.
3. Patience and time. Downloading sources, setting up and building a rom will take hours if not days (depending on your PC hardware and internet speed).
Environment Setup & Build​1. Install Docker on Ubuntu (run each command once in terminal)
Code:
sudo apt-get update
sudo apt install docker.io
sudo systemctl start docker
sudo systemctl enable docker
2. Test that docker is running (run command in terminal)
Code:
docker run hello-world
You should see something like this, "docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world ca4f61b1923c: Pull complete Digest: sha256:ca0eeb6fb05351dfc8759c20733c91def84cb8007aa89a5bf606bc8b315b9fc7 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. ..."
3. Pull lineageos4microg docker onto your pc (run command in terminal)
Code:
docker pull lineageos4microg/docker-lineage-cicd
4. After pull is complete, create the following directories in your home/YOURUSERNAME directory
lineageos4microg
lineageos4microg/src
lineageos4microg/ccache
lineageos4microg/local_manifests
lineageos4microg/keys
lineageos4microg/logs
lineageos4microg/zips
So it might look something like this: home/JoeAndroid/lineageos4microg
5. Copy the 4 attached xml files (bottom of this post) to your local_manifests folder
These are: ocean.xml, include_proprietary.xml, proprietary.xml, and custom_packages.xml
6. In terminal, cd into the lineage4microg folder, and copy and paste the following commands all at once after changing YOURUSERNAME to your username in ubuntu. For an explanation of options, see the link at bottom of post. This code will download sources, sync your repos with newest updates and start your build. This step could take hours. It is downloading sources, syncing repos and building your rom!
Code:
sudo docker run \
-e "BRANCH_NAME=lineage-16.0" \
-e "DEVICE_LIST=ocean" \
-e "SIGN_BUILDS=true" \
-e "SIGNATURE_SPOOFING=restricted" \
-e "WITH_SU=true" \
-e "CUSTOM_PACKAGES=GmsCore GsfProxy FakeStore MozillaNlpBackend NominatimNlpBackend com.google.android.maps.jar FDroid FDroidPrivilegedExtension " \
-e "INCLUDE_PROPRIETARY=false" \
-v "/home/YOURUSERNAME/lineageos4microg/lineage:/srv/src" \
-v "/home/YOURUSERNAME/lineageos4microg/zips:/srv/zips" \
-v "/home/YOURUSERNAME/lineageos4microg/logs:/srv/logs" \
-v "/home/YOURUSERNAME/lineageos4microg/cache:/srv/ccache" \
-v "/home/YOURUSERNAME/lineageos4microg/keys:/srv/keys" \
-v "/home/YOURUSERNAME/lineageos4microg/manifests:/srv/local_manifests" \
lineageos4microg/docker-lineage-cicd
7. Your build should be in the zips folder when complete! Flash in twrp/ofox.
8. If your build fails, check the log in lineageos4microg/logs/ocean folder. If you receive the following error, "Can not locate config makefile for product "lineage_ocean"" you will need to copy the 4 xmls from lineageos4microg/local_manifests to lineageos4microg/manifests.​
References and links:
https://phoenixnap.com/kb/how-to-install-docker-on-ubuntu-18-04
https://github.com/lineageos4microg/docker-lineage-cicd
Telegram group for additional ROMS, files and support: https://t.me/mG7Power
Thanks to Dark98, Electimon, Barry and many others for initial help and repos when building this rom.
Reserved #1
Reserved #2
Thanks, been wanting to try to build this.
I tried am running this on ubuntu 18.04 vm, followed all the instructions.
after I type in the docker commands get this after a few minutes:
sed:can't read build/core/version_defaults.mk:no such file or directory
can't detect the android version.
Any suggestions?
skalnas said:
Thanks, been wanting to try to build this.
I tried am running this on ubuntu 18.04 vm, followed all the instructions.
after I type in the docker commands get this after a few minutes:
sed:can't read build/core/version_defaults.mk:no such file or directory
can't detect the android version.
Any suggestions?
Click to expand...
Click to collapse
Can you take a picture of the screenshot including how you typed in the commands? Need a bit more info
I just pasted the code changing username screenshot attached
skalnas said:
I just pasted the code changing username screenshot attached
Click to expand...
Click to collapse
I wonder if it's related to "steve" in your build commands but your username is Steven on the VM?
Bernie_nix said:
I wonder if it's related to "steve" in your build commands but your username is Steven on the VM?
Click to expand...
Click to collapse
I did rerun the script with the username steven and it appeared to be working.
went to bed and when i woke up I was excited to see it said build completed. however i could not
find the zip file in the zips folder. looking at the logs error: Can not locate config makefile for product "lineage_ocean".
I saw in the op to move the 4 xml files to manifests dir, however I had gotten permission denied when trying to
copy to the manifests dir. i deleted the dir, recreated the dir and moved the files.
I am going to try building again.
skalnas said:
I did rerun the script with the username steven and it appeared to be working.
went to bed and when i woke up I was excited to see it said build completed. however i could not
find the zip file in the zips folder. looking at the logs error: Can not locate config makefile for product "lineage_ocean".
I saw in the op to move the 4 xml files to manifests dir, however I had gotten permission denied when trying to
copy to the manifests dir. i deleted the dir, recreated the dir and moved the files.
I am going to try building again.
Click to expand...
Click to collapse
You need to sudo cp -R (drag 4 files to terminal here) /YOURUSERNAME/lineageos4microg/manifests. Then re run script
Bernie_nix said:
You need to sudo cp -R (drag 4 files to terminal here) /YOURUSERNAME/lineageos4microg/manifests. Then re run script
Click to expand...
Click to collapse
Thanks for the assistance, I am new to linux, hence the vm. My PC is amd fx8350 chip 8 core, 16 gb ram on win10 pro 64 bit on
PNY 480 gb ssd drive.
Just a few questions: The vm i set up to build this I set at 150gb. Prior to syncing the repos and running
the build script again i had about 135 gb free. It's been on starting build for ocean lineage-16.0 branch
for about 5 hours.
Should it have completed or thrown an error by now?
Also, lineageos4microg folder states it's using 57gb, I now have 32 gb free space 5 hours into build.
Not sure if I should keep waiting to see if build completes?
I have attached the log which i think is for the build in progress.
Thanks again
skalnas said:
Thanks for the assistance, I am new to linux, hence the vm. My PC is amd fx8350 chip 8 core, 16 gb ram on win10 pro 64 bit on
PNY 480 gb ssd drive.
Just a few questions: The vm i set up to build this I set at 150gb. Prior to syncing the repos and running
the build script again i had about 135 gb free. It's been on starting build for ocean lineage-16.0 branch
for about 5 hours.
Should it have completed or thrown an error by now?
Also, lineageos4microg folder states it's using 57gb, I now have 32 gb free space 5 hours into build.
Not sure if I should keep waiting to see if build completes?
I have attached the log which i think is for the build in progress.
Thanks again
Click to expand...
Click to collapse
Not recommended to run in a VM as it will take considerably longer to build but if you have the time (hours, days). As far as hard drive space, 150gb is cutting it very close. Better to have 250gb minimum. Don't know if you'll have enough. As far as your log and actual build, it's building! Congrats. If you scroll down to the bottom of your log, you'll see it's at 23%.
Bernie_nix said:
Not recommended to run in a VM as it will take considerably longer to build but if you have the time (hours, days). As far as hard drive space, 150gb is cutting it very close. Better to have 250gb minimum. Don't know if you'll have enough. As far as your log and actual build, it's building! Congrats. If you scroll down to the bottom of your log, you'll see it's at 23%.
Click to expand...
Click to collapse
Yes, as I feared i did run out space, but at least I know it was building. I may try to install ubuntu in a dual boot.
Thanks
skalnas said:
Yes, as I feared i did run out space, but at least I know it was building. I may try to install ubuntu in a dual boot.
Thanks
Click to expand...
Click to collapse
Awww... Well I had that happen before. Even if you have an old platter hdd (not ssd) as long as it's got the GBs of space it will take a little longer to build but for these purposes will do just fine. I use both SSD and hdds to build.
Got my dual boot set up. First tried Ubuntu but it kept locking up, went with Linux mint. Got a 250 GB partition, going to give it another go tommorow.
View attachment 4980819well, after switching from VM to dual boot, I gave it another go, and i got a msg in linux mint that i ran out of space about 3 1/2 hrs into build. I had set up 250gb partition as you suggested. I did 30gb root, 220 GB home,4 GB swap.
Can you take a look at the logs, i'm not clear looking at logs how much of build completed.
There was the zip file about 604 mb in the zips folder, which I could open(along with an sha and md5 files, which i dont know anything about.) I'm thinking possibly the build completed despite the warning in linux about running of free space.
I shrank the /root partition in gparted to 20gb and tried to extend the extra 10gb to home, but i couldn't.
Is it possible to specify 25gb ccache in the docker script somehow so that instead of the 50 it seems to allocate, maybe that will solve the space issue?
Thanks again, looks like progress.
Freed up some more space for build, now when trying to sync repos i get this msg Missing "vendor/lineage", aborting.
suggestions?
skalnas said:
Freed up some more space for build, now when trying to sync repos i get this msg Missing "vendor/lineage", aborting.
suggestions?
Click to expand...
Click to collapse
I looked at the last lines in your log... it looks like it built. Did you check your zips folder?
boot.img already exists, no need to overwrite...
dtbo.img already exists, no need to overwrite...
system.img already exists, no need to overwrite...
vendor.img already exists, no need to overwrite...
Total of 704512 4096-byte output blocks in 23 input chunks.
Total of 147456 4096-byte output blocks in 13 input chunks.
done.
Click to expand...
Click to collapse
Where is "Missing "vendor/lineage", aborting." appearing?
Bernie_nix said:
I looked at the last lines in your log... it looks like it built. Did you check your zips folder?
Where is "Missing "vendor/lineage", aborting." appearing?
Click to expand...
Click to collapse
Thanks, yes there was a zip there, wasnt sure if it was safe to flash, with the error space ran out ,but figured build did complete, as the zip wasnt corrupted.
As far as repo error:
"OSError: [Errno 17] File exists: '/srv/src/LINEAGE_16_0/device/generic/mini-emulator-arm64/.git.tmp'
error: Cannot checkout bernie-nix/android_device_motorola_sdm632-common-1: ManifestInvalidRevisionError: revision lineage-16.0 in bernie-nix/android_device_motorola_sdm632-common-1 not found
error: in `sync -c --force-sync`: revision lineage-16.0 in bernie-nix/android_device_motorola_sdm632-common-1 not found.
I did switch to the ocean.xml listed in your other thread posted by dark98 and the repo did sync., but I didn't proceed with the build.
Thanks again for all your help, think i will try to dirty flash my succesful build over yours, unless i should clean flash.
skalnas said:
Thanks, yes there was a zip there, wasnt sure if it was safe to flash, with the error space ran out ,but figured build did complete, as the zip wasnt corrupted.
As far as repo error:
"OSError: [Errno 17] File exists: '/srv/src/LINEAGE_16_0/device/generic/mini-emulator-arm64/.git.tmp'
error: Cannot checkout bernie-nix/android_device_motorola_sdm632-common-1: ManifestInvalidRevisionError: revision lineage-16.0 in bernie-nix/android_device_motorola_sdm632-common-1 not found
error: in `sync -c --force-sync`: revision lineage-16.0 in bernie-nix/android_device_motorola_sdm632-common-1 not found.
I did switch to the ocean.xml listed in your other thread posted by dark98 and the repo did sync., but I didn't proceed with the build.
Thanks again for all your help, think i will try to dirty flash my succesful build over yours, unless i should clean flash.
Click to expand...
Click to collapse
Yes, use the other xml if you want. They should both be about the same...you might even get updated sources, you might not...but it should build. I looked at the error above. The only suggestion I would make in your current xml if you want to continue using it is to remove revision="lineage-16.0" on the bernie-nix/android_device_motorola_sdm632-common-1 entry. As far as the zip that completed, how big is it?
Bernie_nix said:
Yes, use the other xml if you want. They should both be about the same...you might even get updated sources, you might not...but it should build. I looked at the error above. The only suggestion I would make in your current xml if you want to continue using it is to remove revision="lineage-16.0" on the bernie-nix/android_device_motorola_sdm632-common-1 entry. As far as the zip that completed, how big is it?
Click to expand...
Click to collapse
The zip was 604mb, i did successfully flash it, thanks again for your help and guide building my first rom!
so the xml file should be edited to:
<project name="bernie-nix/android_device_motorola_sdm632-common-1" path="device/motorola/sdm632-common" remote="github"/>
?
btw, i don't see your repos on github anymore.

Categories

Resources