I am using ubuntu touch on my nexus 7. I installed the stable release yesterday (18/10/2013), using the command:
Code:
sudo phablet-flash ubuntu-system --no-backup
This successfully installed the latest build on my nexus 7.
Now when I type the following code in the terminal:
Code:
sudo apt-get dist-upgrade
I get the following error:
Code:
W: Not using locking for read only lock file /var/lib/dpkg/lock
E: Unable to write to /var/cache/apt/
E: The package lists or status file could not be parsed or opened.
Why is this so? I am able to update using the System Settings->Updates. What is wrong with this?
This helped me
pushkarmishra said:
I am using ubuntu touch on my nexus 7. I installed the stable release yesterday (18/10/2013), using the command:
Code:
sudo phablet-flash ubuntu-system --no-backup
This successfully installed the latest build on my nexus 7.
Now when I type the following code in the terminal:
Code:
sudo apt-get dist-upgrade
I get the following error:
Code:
W: Not using locking for read only lock file /var/lib/dpkg/lock
E: Unable to write to /var/cache/apt/
E: The package lists or status file could not be parsed or opened.
Why is this so? I am able to update using the System Settings->Updates. What is wrong with this?
Click to expand...
Click to collapse
Try this (as root)
touch /userdata/.writable_image
(to make it writable)
Ok I've the same problem, on my nexus 5. I'm using MultiRom, and apt-get install, apt-get dist-upgrade give me the same error.. I tried what you suggest but it didn't help me..
Code:
[email protected]:~# apt-get dist-upgrade
apt-get dist-upgrade
W: Not using locking for read only lock file /var/lib/dpkg/lock
E: Unable to write to /var/cache/apt/
E: The package lists or status file could not be parsed or opened.
[email protected]:~#
djovani_ said:
Ok I've the same problem, on my nexus 5. I'm using MultiRom, and apt-get install, apt-get dist-upgrade give me the same error.. I tried what you suggest but it didn't help me..
Code:
[email protected]:~# apt-get dist-upgrade
apt-get dist-upgrade
W: Not using locking for read only lock file /var/lib/dpkg/lock
E: Unable to write to /var/cache/apt/
E: The package lists or status file could not be parsed or opened.
[email protected]:~#
Click to expand...
Click to collapse
The Nexus 5 isn't officially supported yet. (It's going to be supported though: https://docs.google.com/spreadsheet/ccc?key=0Au6idq7TkpUUdHE0RVFyb1lQYm5mYWp1Y0c3SlpZcnc#gid=0)
Therefore, the official Ubuntu servers don't provide updates. I guess that you'll have to flash some zips, just ask in its ROM thread.
sudo mount -o remount,rw /dev/loop0 /
should do the trick on the N5 , that's what worked for me.
Also makes it easier if you just ssh into your phone. the auto cap ticks me off in terminal on the phone.
sudo service ssh start (on phone)
ifconfig (on phone)
ssh <ip address> -l phablet (on pc)
makes life so much easier
Related
My other tutorial for building CM for G2x
Last tested on 6/2/2011
This tutorial requires a basic to intermediate knowledge of linux terminal commands. First you will need to be running the latest CM nightly. Then you will need to install Ubuntu 11.04. This tutorial will work for if you are running Ubuntu in a virtual machine and if you installed it to your hard drive. I have tested this by installing it to my hard drive and in a virtual machine, but I have not tried it in Wubi but it should work. You need 11.04 64 bit.
How to install Ubuntu: https://help.ubuntu.com/community/Installation
After you have installed Ububtu, make sure that your OS is up to date. You can do that by running the Update Manager from the System>Administration menu. Once that is completed, go to Applications>Accessories and open Terminal.
Now you will be setting up your build environment.
Next lets open a terminal. Copy and paste the following into terminal.
(Copy from this tutorial with control+c and paste in terminal with control+shift+v)
Code:
sudo apt-get update && sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev gitg qt3-dev-tools libqt3-mt-dev eclipse valgrind pngcrush schedtool
Code:
sudo add-apt-repository ppa:ferramroberto/java && sudo apt-get update && sudo apt-get install sun-java6-jdk && sudo update-java-alternatives -s java-6-sun
Now you will be installing ADB
Download the sdk from the android website (use the Linux download) http://developer.android.com/sdk/index.html
extract the sdk to your ~/ directory (home directory). So you should be able to go to a terminal and cd ~/AndroidSDK/platform-tools to access your platform-tools folder in your sdk. After that, update your android sdk by opening terminal and run:
Code:
~/AndroidSDK/tools/./android
Open the terminal, and type gedit .bashrc and at the top of the file, paste this (replacing user with your username)
Code:
#AndroidDev PATH
export PATH=${PATH}:/home/user/AndroidSDK/platform-tools
export PATH=${PATH}:/home/user/AndroidSDK/tools
This will make ADB, Fastboot and DDMS available from the terminal on next login.
Now, to make the device available to normal users, open a terminal and type
Code:
sudo gedit /etc/udev/rules.d/51-android.rules
Then paste
Code:
SUBSYSTEMS == "usb", ATTRS {idVendor} == "18d1", ATTRS {idProduct} == "4E11", MODE = "0666"
SUBSYSTEMS == "usb", ATTRS {idVendor} == "18d1", ATTRS {idProduct} == "4e12", MODE = "0666"
SUBSYSTEMS == "usb", ATTRS {idVendor} == "0bb4", ATTRS {idProduct} == "0FFF", MODE = "0666"
SUBSYSTEM=="usb",ATTRS(idVendor)=="18d1",SYMLINK+="android_adb",MODE="0666"
SUBSYSTEM=="usb", SYSFS{idVendor}=="18d1", MODE="0666"
SUBSYSTEM=="usb", SYSFS{idVendor}=="1004", MODE="0666"
Save and exit.
Ensure that the rules are executable:
Code:
sudo chmod a+rx /etc/udev/rules.d/*
Then type
Code:
sudo restart udev
You should restart your computer (or virtual machine) right now to ensure that everything is running properly.
Note: idVendor may vary. Use lsusb from the terminal, look for your Android device and replace “0bb4? with the first 4 characters after “ID”.
If ADB is still not working, read http://forum.xda-developers.com/showthread.php?t=533 and http://alan.lamielle.net/2010/01/22/nexus-one-usb-in-ubuntu-9-10
You should now have a fully working android build environment.
Now before you begin getting and building the source, make sure that you are on the latest CM7 nightly and have the latest gapps from Rom Manager.
Now to setup the CyanogenMod build environment and to build it
Enter the following lines in terminal:
Code:
cd ~/
mkdir -p ~/bin
mkdir -p ~/cm7
cd ~/bin
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
cd ~/
chmod a+x ~/bin/repo
PATH="$HOME/bin:$PATH"
PATH="$HOME/AndroidSDK/platform-tools:$PATH"
PATH="$HOME/AndroidSDK/tools:$PATH"
cd ~/cm7
repo init -u git://github.com/CyanogenMod/android.git -b gingerbread
Press enter and enter the information it asks for.
The next command will download all of the CM source. It will take at least a few hours or more depending on your internet speed.
Code:
repo sync -j16
After the sync, plug your phone in, and run adb devices and if your phone is listed, continue. Otherwise, go back and make sure you have properly installed adb and the drivers.
Plug your phone in, copy the following commands into terminal, and press enter.
Code:
cd ~/cm7/device/htc/passion/
./extract-files.sh
cd ~/cm7/vendor/cyanogen/
./get-rommanager
./get-google-files
now you your CM build environment is complete.
Warning: Building CM pushes your computer to the max your cpu can handle. Make sure that your computer can handle compiling CM. If It cannot, DO NOT DO THIS.
To build, just run(use this command every time you want to build CM):
**** Here is a new updated command to build CM****
Code:
cd ~/cm7 && make clean && repo sync -j6 && . build/envsetup.sh && brunch passion
If you come across any problems while syncing use repo sync -f -j6 -d and it will force sync and override any changes made to the source on your computer.
and it will make an update.zip in ~/cm7/out/target/product/passion/update-cm-7.1.0-RC1-N1-signed.zip (or whatever the latest RC is)
Congratulations you have just compiled CyanogenMod for the Nexus One!
Possible causes if the build fails:
1. Make sure you followed the directions precisely.
2. Try all three of the build commands.
3. If you changed any of the code, make sure it has no errors. Open it up in eclipse and check for errors.
4. Search Google and XDA.
**If you are getting a problem with getting the gapps, it it because of the CM gapps mirror system.
1. download and install the latest gapps
2. plug your phone in and run:
Code:
~/cm7/vendor/cyanogen/./extract-google-files
Sources:
http://developer.android.com/sdk/index.html
http://wiki.cyanogenmod.com/index.php?title=Compile_CyanogenMod_for_passion
http://www.lineardroid.co.uk/2010/07/configure-build-environment/
http://www.lineardroid.co.uk/2010/04/how-to-set-up-adb-in-ubuntu/
http://forum.xda-developers.com/showthread.php?t=533090
http://alan.lamielle.net/2010/01/22/nexus-one-usb-in-ubuntu-9-10
http://forum.xda-developers.com/showthread.php?t=704561
Be sure to thank if this was helpful!
Building on a Mac
Building on a Mac may not work.
Install MacPorts
Install MacPorts using the instructions at MacPorts.org
Install the Developer Tools
Install the Mac OS X Developer Tools from your Mac OS X DVD or from the Apple developer site.
Install the Java Developer Package
Install the Java Developer Package from Apple's site — you'll need a free developer account from Apple. The installer you are looking for will be "Java for Mac OS X 10.6 Update 3 Developer Package" (Update 3 is the latest as of this writing).
Install the Android SDK using the instructions from the first post
Create a Case-Sensitive Workspace
While normal Macintosh volumes are case insensitive, the CyanogenMod/Android source contains files with the same name but in different cases. To solve this issue, you'll have to create and then work out of a case-sensitive disk image.
1. Open the Disk Utility (/Applications/Utilities/Disk Utility.app).
2. Click on New Image.
3. Save as "CyanogenModWorkspace.sparseimage" and set the following parameters as followed:
Name: "CyanogenModWorkspace"
Size: 15 GB is minimum recommended (A sparseimage will save unused space)
Format: Mac OS Extended (CASE-SENSITIVE, Journaled)
Encryption: none, Partition- Single Apple Partition Map
Image Format: Sparse Disk Image (this will save you disk space)
4. Save this wherever you like, and then double-click the sparseimage file to mount.
5. Your workspace will be:
/Volumes/CyanogenModWorkspace/
Install Required Ports
Now you need to install some stuff from macports:
Code:
sudo port selfupdate
POSIXLY_CORRECT=1 sudo port install gmake libsdl git-core gnupg e2fsprogs gsed curl libiptcdata xorg-libX* pngcrush findutils
sudo ln -s /opt/local/bin/gsed /opt/local/bin/sed
sudo ln -s /opt/local/libexec/gnubin/find /opt/local/bin/find
Now you need to downgrade gmake to 3.81 because 3.82 breaks the build.
Here's how to downgrade to 3.81:
1. Visit http://trac.macports.org/log/trunk/dports/devel/gmake
2. Click the link that says "@50980" - although it doesn't explicitly say 3.81, this is it
3. Click the link that says "Portfile"
4. Scroll to the bottom and just below "Download in other formats:" click "Original Format"
5. This is subtle but important: If your browser e.g. Chrome renamed it to Portfile.txt, you need to rename it to simply "Portfile"
6. cd to the location of Portfile and
Code:
sudo port install
This should install and configure gmake 3.81, after which:
Code:
sudo port installed gmake
will print out:
The following ports are currently installed:
gmake @3.81_0 (active)
gmake @3.82_0
Set up the Workspace
Now to setup the CyanogenMod build environment and to build it
copy each line individually into a terminal and press enter:
(This entire process could take hours, depending on your computer and your Internet speed.)
(And make sure your Nexus One is plugged in for the commands after repo sync.)
(Also, you should be running the latest CM nightly (which is CM7) and you should have clockwork recovery and rom manager)
Code:
cd /Volumes/CyanogenModWorkspace/
mkdir -p /Volumes/CyanogenModWorkspace/bin
mkdir -p /Volumes/CyanogenModWorkspace/android-cm7
curl http://android.git.kernel.org/repo > /Volumes/CyanogenModWorkspace/bin/repo
chmod a+x /Volumes/CyanogenModWorkspace/bin/repo
PATH=${PATH}:/Volumes/CyanogenModWorkspace/bin:
echo "PATH=\${PATH}:/Volumes/CyanogenModWorkspace/bin:" >> ~/.profile
cd /Developer/SDKs
sudo ln -s MacOSX10.6.sdk/ MacOSX10.4u.sdk
cd /Volumes/CyanogenModWorkspace/android-cm7
repo init -u git://github.com/CyanogenMod/android.git -b gingerbread
repo sync
cd /Volumes/CyanogenModWorkspace/android-cm7/device/htc/passion/
./extract-files.sh
cd /Volumes/CyanogenModWorkspace/android-cm7/vendor/cyanogen/
./get-rommanager
./get-google-files
./extract-google-files
now you your CM build environment is complete.
Build CyanogenMod
open a terminal and type:
Code:
touch ~/Desktop/build.sh
chmod u+x ~/Desktop/build.sh
open -e ~/Desktop/build.sh
paste the following into TextEdit and save:
Code:
#!/bin/bash
echo "cd to android-cm7";
cd /Volumes/CyanogenModWorkspace/android-cm7
echo "Make clean";
make clean
make installclean
echo "Syncing";
repo sync
echo "Copying the make file";
cp ./vendor/cyanogen/products/cyanogen_passion.mk ./buildspec.mk
echo "Setting up build env\n";
. build/envsetup.sh
echo "Setting up lunch";
lunch cyanogen_passion-eng
cd /Volumes/CyanogenModWorkspace/android-cm7
echo "Using the make command";
make -j`sysctl -an hw.logicalcpu` bacon
save and quit TextEdit.
Run the following command in terminal every time you want to build CM.
Code:
~/Desktop/./build.sh
If you get an error saying:
Code:
ASSERTION FAILURE external/elfcopy/elfcopy.c:932: [ranges[i].start >= last_end]
You need to open /Volumes/CyanogenModWorkspace/external/elfcopy/elfcopy.c and comment line 932 (Add // in front of the line). This should fix the problem and allow you to successfully build CM.
Congratulations you have just compiled CyanogenMod for the Nexus One on a Mac!
Sources:
Most of this tutorial came from the CM wiki and the first post.
http://wiki.cyanogenmod.com/index.p...for_Passion_(Mac)#Install_the_Developer_Tools
http://forum.xda-developers.com/showthread.php?t=899674
..........
I love you
Sent from my Nexus One using XDA App
How much hdd disk space is required?
Last time I tried with a 8 GB disk image on virtual box and run out of space while syncing repo!
Sent from my Nexus One using XDA App
lhurtado said:
How much hdd disk space is required?
Last time I tried with a 8 GB disk image on virtual box and run out of space while syncing repo!
Sent from my Nexus One using XDA App
Click to expand...
Click to collapse
A lot is required. I haven't built it in a while but I suspect it close to 8GB.
Thanks for this man. Last time I tried this with Virtual Box I could never get my phone detected in ADB. Going to give this a whirl today.
thanks dude for the tutorial! luv it!
Hi, just a couple corrections:
To set PATH, you wrote gedit .basrc, should be gedit .bashrc
To set repo, you wrote mkdir -p ~/bin/repo, should be mkdir -p ~/bin
btw, thanks for this tutorial!
lhurtado said:
How much hdd disk space is required?
Last time I tried with a 8 GB disk image on virtual box and run out of space while syncing repo!
Sent from my Nexus One using XDA App
Click to expand...
Click to collapse
My cyan-froyo source have 6.1GB now without any modification.
It's huge! Now I'm syncing repo, this time I made a bigger disk on virtual box .
Now I have to check how to build just an app...
Sent from my Nexus One using XDA App
i only had an 8gb partition so i'm just using an nfs share to store the source.
syncing repo now. Thanks a lot lhurtado for those two fixes. I was stuck trying to get repo to work.
mikroN1 said:
syncing repo now. Thanks a lot lhurtado for those two fixes. I was stuck trying to get repo to work.
Click to expand...
Click to collapse
you're welcome!
There's no need to add Jaunty repos to your Lucid/Maverick install, just enable the partner repository in System > Administration > Software Sources > Other Software
I think I'm stuck where I was before. Can't get my phone detected in ADB.
./extract-files.sh: 54: adb: not found
Any ideas?
edit: doing ./adb devices show's nothing connected.
lhurtado said:
Hi, just a couple corrections:
To set PATH, you wrote gedit .basrc, should be gedit .bashrc
To set repo, you wrote mkdir -p ~/bin/repo, should be mkdir -p ~/bin
btw, thanks for this tutorial!
Click to expand...
Click to collapse
thanks, editing now
mikroN1 said:
I think I'm stuck where I was before. Can't get my phone detected in ADB.
./extract-files.sh: 54: adb: not found
Any ideas?
edit: doing ./adb devices show's nothing connected.
Click to expand...
Click to collapse
first, make sure that your phone is connected, and if you are using a virtual machine, mounted with the program and make sure that you restarted your computer. If that doesn't fix it, then your problem is with the rules. Try reading the other two links I wrote to read.
awesome guide
thanks alot for the guide. big help. although the line "make -j`grep 'processor' /proc/cpuinfo | wc -l` CYANOGEN_WITH_GOOGLE=true otapackage" # Not working right now. It says that on the cyanogen wiki. also how do you go about adding your own stuff to the builds you make?
samir5421 said:
first, make sure that your phone is connected, and if you are using a virtual machine, mounted with the program and make sure that you restarted your computer. If that doesn't fix it, then your problem is with the rules. Try reading the other two links I wrote to read.
Click to expand...
Click to collapse
Phone is connected and shows up under USB Devices in VirtualBox. Also the two links you supplied for the ADB section both don't work. I tried changing my idVendor but still can't get it to detect my phone.
Edit:
Added my phone as a usb filter in VirtualBox. Still not working. I'm getting this pop up trying to click on my phone.
{
"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"
}
Instructions :-
1.Open terminal
2.type below code one by one and update
Code:
sudo add-apt-repository ppa:webupd8team/unstable
Code:
sudo apt-get update
Code:
sudo apt-get install go-mtpfs
3.Now to also install the custom Unity Launcher for Go-mtpfs
type below code
Code:
sudo apt-get install go-mtpfs-unity
4.how to mount
type
Code:
go-mtpfs /media/MyAndroid
5.how to unmount
type
Code:
fusermount -u /media/MyAndroid
And If you don't wanna manually mount by typing the command then in search type "go-mtpfs" and drag the icon into the launcher ,then right click it to unmount and mount your android device.
Dear all,
i dont know exactly how i did it but im now on my ubuntu touch in a read only filesystem...
Code:
sudo apt-get update
sudo: unable to mkdir /var/lib/sudo/phablet: Read-only file system
I noticed that as i wanted to connect with ssh to the phone to transfer my .csv file but have no write access anymore.
If i flash the phone with
Code:
phablet-flash cdimage-legacy
i have write access.
Reflashing to
Code:
phablet-flash cdimage-touch
bring me back to a Read-only file system
What did i wrong (well this could be hard to answer by you ^^) and how can i solve this?
Try phablet-flash cdimage-touch -b
You'll lose all your data!!
Thanks!
So to understand it for the future:
Code:
phablet-flash cdimage touch [B]-b[/B]
performs a full bootstrap where
Code:
phablet-flash cdimage touch
just flash the daily build without data whiping?
Yes, you're right! With -b you do a clean flash and you can start from scratch. Without the bootstrap it just overwrites system data (system apps, ...) but all your files are still on the device.
Tip: Type into a terminal phablet-flash cdimage-touch -h to see all commands (but I think you've already done this).
If you are on Read-Only (recent builds) you can switch with :
$ adb shell
$ mount /dev/loop0 / -o remount,rw
It remains only one session
source : https://wiki.edubuntu.org/QATeam/TouchTesting
eagleofdeath13 said:
If you are on Read-Only (recent builds) you can switch with :
$ adb shell
$ mount /dev/loop0 / -o remount,rw
It remains only one session
source : https://wiki.edubuntu.org/QATeam/TouchTesting
Click to expand...
Click to collapse
That's the most helpful thing I've seen since ubuntu-system emerged... Thanks, I was ready to revert to cdimage-touch, but now I won't have to. :highfive:
So following the example, I opened terminal on my GNex (latest ubuntu-system --channel saucy --no-backup) and typed in
Code:
sudo mount /dev/loop0/ -o remount, rw
after entering the password for sudo, I next typed
Code:
sudo dpkg-reconfigure tzdata
and it brought up the timezone applet.
I was allowed to write my current time to the system!!!!!
I did the same
And you can apt-get too ^^
Today i changed my device (mako) from cdimage-touch to ubuntu-system.
I had to use
Code:
phablet-flash ubuntu-system --system-image-ready
because
Code:
phablet-flash ubuntu-system
gives me an error code.
So i added my contacts, pictures, videos on the device and made it writable
Code:
sudo touch /userdata/.writable_image
After that i did an apt upgrade
Code:
sudo apt-get update && sudo apt-get upgrade
rebootet
Code:
sudo reboot
and got stucked on the google dev screen.
Im not sure what i did wrong but ubuntu isnt booting anymore, any help would be very nice :good:
P.S.: i noticed an error message after i applied the upgrade but it was to short to remember exactly what kind of it was. I saw it after i executed the
Code:
sudo reboot
above after the upgrade. The only thing i can remember was something about udev.
akI* said:
Today i changed my device (mako) from cdimage-touch to ubuntu-system.
I had to use
Code:
phablet-flash ubuntu-system --system-image-ready
because
Code:
phablet-flash ubuntu-system
gives me an error code.
So i added my contacts, pictures, videos on the device and made it writable
Code:
sudo touch /userdata/.writable_image
After that i did an apt upgrade
Code:
sudo apt-get update && sudo apt-get upgrade
rebootet
Code:
sudo reboot
and got stucked on the google dev screen.
Im not sure what i did wrong but ubuntu isnt booting anymore, any help would be very nice :good:
P.S.: i noticed an error message after i applied the upgrade but it was to short to remember exactly what kind of it was. I saw it after i executed the
Code:
sudo reboot
above after the upgrade. The only thing i can remember was something about udev.
Click to expand...
Click to collapse
I reproduced the problem. The following error appears after making the ubuntu-system writable:
Code:
...
Preparing to replace udev 204-0ubuntu19 (using .../udev_204_0ubuntu19.1_armhf.deb) ...
Adding 'diversion of /bin/udevadm to /bin/udevadm.upgrade by fake-udev'
dpkg: unrecoverable fatal error, aborting:
failed to fstat previous diversions file: No such file or directory
E: Sub-process /usr/bin/dpkg returned error code (2)
Maybe someone can give me small light?
Hi,
I have decided to write this post after reading so many different guides on my journey to build my own version of Cyanogenmod and after countless tries and hours of research I succeeded. Here's how:
You will need:
A Ubuntu box
A basic knowledge of Linux
A fast internet connection or a lot of patience.
Once you have setup your Ubuntu box either in a Virtual Machine of as a stand alone PC you will need to open a terminal, this can be done by pressing 'CTRL + ALT + T' or opening the search menu and typing "Terminal".
You should see the following:
Code:
[email protected]:~$
We will need to install all the necessary files in order to build and download Cyanogenmod, we can do this by running the following command:
Code:
sudo apt-get install bison build-essential curl flex git gnupg gperf libesd0-dev liblz4-tool libncurses5-dev libsdl1.2-dev libwxgtk2.8-dev libxml2 libxml2-utils lzop pngcrush schedtool squashfs-tools xsltproc zip zlib1g-dev openjdk-7-jdk openjdk-7-jre
As many Linux users have more than one version of Java installed we will need to set the the version we just installed as our default version.
Code:
sudo update-alternatives --config java
sudo update-alternatives --config javac
If by any chance you have a 64-bit version of Ubuntu installed we will require some extra files, if not please skip this command.
Code:
sudo apt-get install g++-multilib gcc-multilib lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev
We will now for simplicity's sake need to create the following directories in your home folder. These directories will host our build.
Code:
mkdir -p ~/bin
mkdir -p ~/android/system
Once you have setup everything correctly we will now to download the Cyanogenmod source code of which we are going to use the 'Repo' utility. This utility is an automated tool for GitHub cloning. We can download this and set the correct permissions by running the following commands.
Code:
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
To continue with download the source code we will now initialize the GitHub repository that holds Cyanogenmod. We are going to need to specify the repository with -u and the branch with -b. Here I am going to download the latest available version of Cyanagenmod 13.0.
Code:
cd ~/android/system/
~/bin/repo init -u https://github.com/CyanogenMod/android.git -b cm-13.0
And to finally start downloading the source:
Code:
~/bin/repo sync -c -f -j8
Where:
-c Download the current version instead of all history.
-F Forces the connection to continue even if a connection error occurs.
-j8 This specifies the number of parallel operations. Use -j8 for a quad core processor and a -j16 for an octa-core.
Once the download completes successfully we will need to download the device specific code, this includes specific applications and kernel configurations for your device. To start downloading the files type:
Code:
source build/envsetup.sh
breakfast angler
The download should now start, it should only take minutes however this depends on your internet connection.
Again once this completes, we need to grab proprietary specific files. We first need to navigate to ~/android/system/device/huawei/angler. You can do this by running the following command:
Code:
cd ~/android/system/device/huawei/angler
As the script we are going to use has some dependencies we will need to get them first.
Code:
git clone https://github.com/JesusFreke/smali
cd smali
./gradlew build
cd ..
Additionally we need to download a Google Stock Image, I'm using angler-mmb29m-factory-8c31db3f.tgz, once downloaded you will need to unzip it and cd to it within the terminal.
and then download:
Code:
wget http://people.canonical.com/~mfisch/tools/ext4_utils.tar.gz
tar xzsf ext4_utils.tar.gz
cd ext4_utils
mv simg2img ../angler-mmb29m/
cd ../angler-mmb29m/
We will now convert the system and vendor img's using simg2img to a readable format and mount them so we extract the propriety files using ./extract_files.sh
We can do all of this by using the following commands.
Code:
./simg2img system.img system.ext4
./simg2img vendor.img vendor.ext4
sudo mkdir -p /mnt/system
sudo mkdir -p /mnt/vendor
sudo mount -rw system.ext4 /mnt/system
sudo mount -rw vendor.ext4 /mnt/vendor
Finally we can extract the proprietary files for the system image by running the following commands.
Code:
cd ~/android/system/device/huawei/angler/
./extract_files /mnt/ smali/
Finally we can finish off by our by running the brunch command to build and generate the .zip file of our own Cyanogenmod.
Code:
brunch angler
Note: This will take 20 mins - 2 hours - 2 days depending on your hardware spec.
And well that's it, the location of your generated .zip file should be in blue at the end of your terminal.
Reserved
N/A
This is amazing. Many thanks.
Great I've been looking
Sent from my XT1526 using XDA Forums Pro.
If there are bugs how can we fix that .Such as camera ,ril.For nexus 6p it is fine but for other phones
AANISH said:
If there are bugs how can we fix that .Such as camera ,ril.For nexus 6p it is fine but for other phones
Click to expand...
Click to collapse
As I have only just started my journey on this long path I have done a bit of research for you. Google released there own device specific binaries for the Nexus devices of which usually include the following:
NFC, Bluetooth and Wi-Fi
Media, Audio, Thermal, Touch Screen, Sensors
GPS, Camera, Gestures, Graphics, DRM, Video
This to me suggests that the chipset suppliers supply them - Broadcom, Qualcomm... or even other companies like Motorola. So if you are looking for binaries for other devices I would start with there chipset.
If you would like to look at Google's binaries following the link below however before you go looking for the 6P binaries they haven't been uploaded yet + if you do find any further information please reply to this comment or PM me.
Just saying, the official guide on the wiki works just fine. Been building for all my CM12-capable devices since 2015. Good for people who don't go there, though.
Sent from Google Nexus 6P @ CM13
[WARNING: XDA One have not implemented "mark forum as read" - do not use]
AndyYan said:
Just saying, the official guide on the wiki works just fine. Been building for all my CM12-capable devices since 2015. Good for people who don't go there, though.
Sent from Google Nexus 6P @ CM13
[WARNING: XDA One have not implemented "mark forum as read" - do not use]
Click to expand...
Click to collapse
That is true but I had major difficulties with it, for example it asks you to initialise the cm 12.1 branch when it wasn't available and I had a major pain with extract_files as it wouldnt use adb but instead had to use stock firmware to grab the proprietary files.
connectionalive said:
That is true but I had major difficulties with it, for example it asks you to initialise the cm 12.1 branch when it wasn't available and I had a major pain with extract_files as it wouldnt use adb but instead had to use stock firmware to grab the proprietary files.
Click to expand...
Click to collapse
You still have to spot the tiny mistakes in the guide, of course. The guide hasn't been updated in a long time.
I didn't grab any proprietary files for any of my devices and the builds still run fine - the files should already be in the repo.
Sent from Google Nexus 6P @ CM13
[WARNING: XDA One have not implemented "mark forum as read" - do not use]
AndyYan said:
You still have to spot the tiny mistakes in the guide, of course. The guide hasn't been updated in a long time.
I didn't grab any proprietary files for any of my devices and the builds still run fine - the files should already be in the repo.
Sent from Google Nexus 6P @ CM13
[WARNING: XDA One have not implemented "mark forum as read" - do not use]
Click to expand...
Click to collapse
Ah I didn't know this, I have only just started learning and researching all of this so all helps, if you could point me in the right direction, it would be greatly appreciated.
connectionalive said:
Ah I didn't know this, I have only just started learning and researching all of this so all helps, if you could point me in the right direction, it would be greatly appreciated.
Click to expand...
Click to collapse
I'm also just at the beginning - building according to official guides without modifying the source. Just giving some tips so that you don't step on the same mines as I did
P.S. Transition from CM12.1 to CM13 was a real PITA...
Sent from Google Nexus 6P @ CM13
[WARNING: XDA One have not implemented "mark forum as read" - do not use]
Great guide, I have a build environment setup on Linux Mint, but I am curious to know if the simg2img stuff and extraction is necessary, I thought the initial build process took care of that??
adzcache said:
Great guide, I have a build environment setup on Linux Mint, but I am curious to know if the simg2img stuff and extraction is necessary, I thought the initial build process took care of that??
Click to expand...
Click to collapse
It's not, it's a lot easier to just use the Muppets and not worry about it.
akellar said:
It's not, it's a lot easier to just use the Muppets and not worry about it.
Click to expand...
Click to collapse
I suppose I should start learning how to building up a roomservice.xml for this 6P then. Thanks for the confirmation.
akellar said:
It's not, it's a lot easier to just use the Muppets and not worry about it.
Click to expand...
Click to collapse
I couldn't find it on their repository under Google or Huawei
connectionalive said:
I couldn't find it on their repository under Google or Huawei
Click to expand...
Click to collapse
Look under the right branch
Code:
./simg2img system.img system.ext4
./simg2img vendor.img vendor.ext4
sudo mkdir -p /mnt/system
sudo mkdir -p /mnt/vendor
sudo mount -rw system.ext4 /mnt/system
sudo mount -rw vendor.ext4 /mnt/vendor
Code:
cd ~/android/system/device/huawei/angler/
./extract_files /mnt/ smali/
You have to take ownership of the mounted images before you can extract the blobs. Otherwise you have to use sudo for extract. Then the folder is root and make is denied permission while compiling.
XxMORPHEOUSxX said:
Code:
./simg2img system.img system.ext4
./simg2img vendor.img vendor.ext4
sudo mkdir -p /mnt/system
sudo mkdir -p /mnt/vendor
sudo mount -rw system.ext4 /mnt/system
sudo mount -rw vendor.ext4 /mnt/vendor
Code:
cd ~/android/system/device/huawei/angler/
./extract_files /mnt/ smali/
You have to take ownership of the mounted images before you can extract the blobs. Otherwise you have to use sudo for extract. Then the folder is root and make is denied permission while compiling.
Click to expand...
Click to collapse
I had no issues when actioning any of these commands but in theory you are correct.
connectionalive said:
I had no issues when actioning any of these commands but in theory you are correct.
Click to expand...
Click to collapse
I ran into issues. That's why I mentioned it. Also the extract-files tool is formatted different in my tree. After mounting these were are my exact commands. Maybe it will help someone else.
Code:
sudo chown -hR <user> /mnt/system
sudo chown -hR <user> /mnt/vendor
cd ~/android/system/device/huawei/angler
./extract-files.sh /mnt/ smali/
Hola
I have gone through this guide (really well put together) but I am getting an error almost at the very end and I need some guidance please:
I invoke brunch angler command but it shows:
~/android/system/device/huawei/angler$ brunch angler
bash: build/tools/roomservice.py: No such file or directory
** Don't have a product spec for: 'cm_angler'
** Do you have the right repo manifest?
No such item in brunch menu. Try 'breakfast'
I tried the lunch and breakfast commands but it comes up with the same error.
I did run both:
source build/envsetup.sh
breakfast angler
from the right directory and no errors came up. Can anyone assist me? Thanks.