Attend XDA's Second Annual Developer Conference, XDA:DevCon 2014!
5,786,401 Members 43,660 Now Online
XDA Developers Android and Mobile Development Forum

BBQLinux - An Arch based Linux distribution for Android developers

Tip us?
 
yuweng
Old
(Last edited by yuweng; 31st August 2014 at 10:23 AM.) Reason: Update info . . .
#1  
yuweng's Avatar
Senior Member - OP
Thanks Meter 2,330
Posts: 735
Join Date: Feb 2012
Default BBQLinux - An Arch based Linux distribution for Android developers

I am very surprise that BBQLinux has almost no reviews or publicity at all & a quick google search returns only a maximum of 10 pages only...
After all it is a Linux Distro specifically made for Android Development... It is maintained by Senior Recognized Developer codeworkx mentioned by himself...
It has everything you ever needed & you should have started development long ago & not cracking your head to setting up the Build Environment, downloading this & that dependencies packages...
 
Intro from wiki
BBQLinux is a user-friendly Linux distribution made for Android developers and everyone who prefers a ready-to-use system. It has everything on board to build AOSP or AOSP-based Distributions like OmniROM or CyanogenMod. The default desktop environment is MATE. It is using vanilla Arch repos, the AUR and a BBQLinux specific repo. BBQLinux can be installed by booting the Live DVD and using the graphical Installer called BBQLinux Installer.

Homepage: http://www.bbqlinux.org
Screenshots: http://bbqlinux.org/screenshots
Google+: https://plus.google.com/u/0/communit...42159578225975
IRC: #bbqlinux on freenode
 

Everything works out-of-the-box...
 

i have built all TWRP branch 2.4, 2.5, 2.7, 4.3, 4.4 using cm jellybean branch ONLY, all works & all finish building within 3 minutes....

In order for BBQLinux to build on jellybean sources, i have to use BBQLinux Java Switcher & switch it to use Oracle JDK 6.
 
At System -> Administration -> Packages -> type Java 6, press enter, put check mark on both Java 6, Apply Changes & wait for it. There will be some error message, just Force-Install it...


At Applications -> System Tools -> BBQLinux Java Switcher

Code:
echo -e "\nsource /etc/profile.d/override_java.sh" >> ~/.bashrc
pluma ~/.bashrc
Use pluma to check . . .


Contain at override_java.sh
Originally at OpenJDK 7


When switch to Oracle JDK 6


Commands to check java version at Terminal
Code:
java -version
--------------------------------------------------------
if you wanna manual install it then refer to here by Master Shifu himself...
Sometimes the download is super slow so i've uploaded the JDK6 packages here...

Added on Apr 28, 2014
i'm such a n00b on arch distro . . .
 

You can also right-click to install . . .

Commands to built on my PC
 
Credits to shoey63 for his tips . . .
Quote:
mkdir -p ~/cm10/.repo/local_manifests
cd ~/cm10
repo init -u git://github.com/CyanogenMod/android.git -b jellybean
Copy & paste local_manifest.xml to ~/cm10/.repo/local_manifests to sync Part-Source for building recovery only
Currently set to 4.4 branch. Manual edit ~/cm10/.repo/local_manifests/local_manifest.xml to change it

repo sync -f -j4

Copy stock boot.img to [Home] & use mkvendor.sh, edit BoardConfig.mk & recovery.fstab

Delete everything at ~/cm10/vendor/cm/config/common_full.mk only left the first as below

# Inherit common CM stuff
$(call inherit-product, vendor/cm/config/common.mk)


build/tools/device/mkvendor.sh Lenovo S939 ~/boot.img <- change accordingly to your vendor & device name

Updates - Simpler alternative
Add a # remark as below to cm.mk at your device folder. For this Eg. ~/cm10/device/Lenovo/S939/cm.mk

# Inherit some common CM stuff.
#$(call inherit-product, vendor/cm/config/common_full_phone.mk)


prebuilts/misc/linux-x86/ccache/ccache -M 25G
USE_CCACHE=1
. build/envsetup.sh
lunch cm_S939-eng <- change accordingly to device name
make -j4 recoveryimage
github device tree
My MTK device is not supported by cm or OmniRom so guys pls share your experience, tips & tricks on tweaks or configurations on BBQLinux to have it built successfully...

i built on Virtualbox & GuestAdditions is also built-in on BBQLinux so no need to crack your head to install it...

Added on Mar 27, 2014 - Miscellaneous Tips
Terminal Shortcut Key How-to
 

System -> Preferences -> Keyboard Shortcuts
Scroll down to the end of Desktop just above Window Management -> Run a terminal -> Press Ctrl + Alt + t -> Close

Vbox Shared Folder
 

Drag&Drop works from Win Host to BBQLinux but not the other way round. To enable Win Host to access BBQLinux folder, for this Eg: create a new folder name BBQLinux at Win Host & put a check mark at Auto-mount. At BBQLinux Terminal,
Code:
mkdir -p ~/BBQLinux
sudo mount -t vboxsf BBQLinux ~/BBQLinux
After that, both can access the folder BBQLinux. At BBQLinux, there will be a new BBQLinux folder at your [Home]

To enable Shared Folder to work after reboot, use below command at Terminal & pluma to check. Change it accordingly to your setup if you use other folder name.
Code:
echo BBQLinux ~/BBQLinux vboxsf uid=1000,gid=1000 0 0 >> /etc/fstab
pluma /etc/fstab
At my fstab it is BBQLinux /home/yuweng/BBQLinux vboxsf uid=1000,gid=1000 0 0
WARNING : Take note of the double greater-than sign >> a single > will over write everything at fstab & it won't boot after that so make sure there is no typo mistake ! And remember to put a check mark at Auto-mount or it will not boot !


The new Shared Folder BBQLinux can be access from the Desktop after a reboot.

Source

Installation How-to
 

There are already tons of guides on the web, more or less the same so refer to the below...
Virtualbox
Dual-Boot & Boot Menu
Native Boot

USB bootable how-to tips by Master Shifu himself...

Found the one & only installation walk-thru in Russian !
i guess only the Russian appreciates such a master piece... Google Translated version here...

Added on Apr 11, 2014
Confirmed BBQLinux can successfully built cm & omni . . .
 

Successfully built i9500 on BBQLinux & it tooks more than 7 hours on top of the initial 7 hours for syncing cm11 FULL source...

Commands to build on my PC...
 

Code:
First part
mkdir -p ~/cm11
cd ~/cm11
repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0
repo sync -f -j4
cd ~/cm11/vendor/cm
./get-prebuilts
cd ~/cm11
source build/envsetup.sh
lunch 
To select cm_i9500-userdebug by typing its listed number-> Eg: 50 -> Enter ->
Wait & it'll resume syncing but there will be some errors & it'll stop

2nd Part
prebuilts/misc/linux-x86/ccache/ccache -M 25G
USE_CCACHE=1
brunch i9500
Source

Built successfully on Omni too...
Commands to build on my PC...
 

Code:
First part
mkdir -p ~/omni
cd ~/omni
repo init -u https://github.com/omnirom/android.git -b android-4.4
repo sync -f -j4
Then follow remaining steps here...

Added on Apr 22, 2014
Philz Touch CWM Advanced Edition
 

Got help from Master Shifu Philz3759 & got Philz Touch working on my MTK . . .

With BBQLinux any newbies also can compile from source... And you don't need 12.2GB of cm-11.0 complete full source just to build the latest Philz Touch...

Commands to build Philz Touch on BBQLinux with cm-11.0 Part Source is only 1.5GB ! It tooks only 1 1/2 hours to complete syncing instead of 7 hours for the full source that you don't need . . .
 
Credits to shoey63 for the tips, i only build locally so no codes to commit . . .

Source
Quote:
mkdir -p ~/cm11/.repo/local_manifests
cd ~/cm11
repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0
Copy & paste local_manifest.xml to sync Part-Source for building recovery only

repo sync -f -j4 <- Shall only sync 52 out of the total 447 projects on cm-11.0 full source

Copy stock boot.img to [Home] & use mkvendor.sh, edit BoardConfig.mk & recovery.fstab

Delete everything at ~/cm11/vendor/cm/config/common_full.mk only left the first as below

# Inherit common CM stuff
$(call inherit-product, vendor/cm/config/common.mk)


build/tools/device/mkvendor.sh Lenovo S939 ~/boot.img <- change accordingly to your vendor & device name

Updates - Simpler alternative
Add a # remark as below to cm.mk at your device folder. For this Eg. ~/cm11/device/Lenovo/S939/cm.mk

# Inherit some common CM stuff.
#$(call inherit-product, vendor/cm/config/common_full_phone.mk)


prebuilts/misc/linux-x86/ccache/ccache -M 25G
USE_CCACHE=1
. build/envsetup.sh
lunch cm_S939-eng <- change accordingly to your device name
make -j4 recoveryimage
BoardConfig.mk that i'm using . . .
 
mkvendor.sh generated, need editing are those in BLUE . . .
Code:
USE_CAMERA_STUB := true

# inherit from the proprietary version
-include vendor/TD2/9300/BoardConfigVendor.mk

TARGET_ARCH := arm
TARGET_NO_BOOTLOADER := true
TARGET_BOARD_PLATFORM := MT6577 <- Non-critical, originally is unknown, can leave it as it is or change to any label
TARGET_CPU_ABI := armeabi-v7a
TARGET_CPU_ABI2 := armeabi
TARGET_ARCH_VARIANT := armv7-a-neon
TARGET_CPU_VARIANT := cortex-a9 <- Critical , originally is cortex-a7, wrong selection & it will not boot !
ARCH_ARM_HAVE_TLS_REGISTER := true

TARGET_BOOTLOADER_BOARD_NAME := 9300

BOARD_KERNEL_CMDLINE := 
BOARD_KERNEL_BASE := 0x10000000
BOARD_KERNEL_PAGESIZE := 2048

# fix this up by examining /proc/mtd on a running device
BOARD_BOOTIMAGE_PARTITION_SIZE := 0x105c0000
BOARD_RECOVERYIMAGE_PARTITION_SIZE := 0x105c0000
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 0x105c0000
BOARD_USERDATAIMAGE_PARTITION_SIZE := 0x105c0000
BOARD_FLASH_BLOCK_SIZE := 131072

TARGET_PREBUILT_KERNEL := device/TD2/9300/kernel

BOARD_HAS_NO_SELECT_BUTTON := true

TARGET_USE_CUSTOM_LUN_FILE_PATH := "/sys/devices/platform/mt_usb/gadget/lun%d/file"

#AFAIK, for MT6582/ 92 it is at -> "/sys/devices/platform/mt_usb/musb-hdrc.0/gadget/lun%d/file"

#Philz Touch build flags for MTK
TARGET_COMMON_NAME := TD2 9300 <- This will be displayed at Philz Settings -> About
BOARD_USE_MTK_LAYOUT := true
BOARD_MTK_BOOT_LABEL := "/bootimg"
BOARD_USE_NTFS_3G := false
TARGET_SCREEN_HEIGHT := 480 <- Edit according to your device res
TARGET_SCREEN_WIDTH := 320 <- Edit according to your device res
BOARD_HAS_LOW_RESOLUTION := true <- For all devices lower than 1024x768 resolution. Mentioned at Philz Touch ~/cm11/bootable/recovery/boardconfig/BoardConfig.mk
BRIGHTNESS_SYS_FILE := "/sys/class/leds/lcd-backlight/brightness"
recovery.fstab that i'm using . . .
 
Still haven't figure out how to Mounts & Storage -> mount USB storage on my old MT6577, it doesn't work . . .
Code:
/dev/bootimg            /bootimg       emmc    defaults    defaults
/dev/recovery           /recovery      emmc    defaults    defaults
/dev/uboot              /uboot         emmc    defaults    defaults
/emmc@android           /system        ext4    ro,noatime                              wait
/emmc@cache             /cache         ext4    noatime,nosuid,nodev,noauto_da_alloc    wait
/emmc@usrdata           /data          ext4    noatime,nosuid,nodev,noauto_da_alloc    wait,encryptable=footer

# According to Master Shifu Phil3759, ONLY either one below but cannot use both INIT & VOLD mount points

# INIT mount points
/emmc@fat               /emmc          vfat    defaults    defaults
/dev/block/mmcblk1p1    /sdcard        vfat    defaults    defaults

# VOLD mount points (Ref taken from Lenovo S939 KitKat 4.4.2)
# vold managed volumes for generic MTK
/devices/platform/mtk-sd.0/mmc_host    auto    vfat        defaults    voldmanaged=sdcard0:emmc@fat,noemulatedsd
/devices/platform/mtk-sd.1/mmc_host    auto    vfat        defaults    voldmanaged=sdcard1:auto

# VOLD mount points (Ref taken from Lenovo S939 KitKat 4.4.2)
# vold managed volumes for MT6582/ 92
#/devices/platform/mtk-msdc.0/mmc_host  auto    vfat        defaults    voldmanaged=sdcard0:emmc@fat,noemulatedsd
#/devices/platform/mtk-msdc.1/mmc_host  auto    vfat        defaults    voldmanaged=sdcard1:auto

If you are having trouble compiling Philz Touch then head up to Master Shifu's thread & ask for help, he is a nice DEV . . .

But pls brush up your knowledge first by learning the basic stuff like getting clockworkmod to boot up on your device first . . .


Added on Apr 29, 2014
Java 8 for app development
 
Found a way to install Java 8 along with 6 & 7 on BBQLinux . . .
Download Java from here & choose the latest Linux x64 with tar.gz extension

Open Terminal & follow as below . . .
Code:
cd ~/Downloads
tar -zxvf jdk-8u5-linux-x64.tar.gz <- Update file name accordingly to newer version available
sudo mkdir /usr/lib/jdk
sudo mv jdk1.8.0_05 /usr/lib/jdk <- Update file name accordingly to newer version available
pluma ~/.bashrc
Add the below to the most bottom . . .
Code:
export JAVA_HOME=/usr/lib/jdk/jdk1.8.0_05 <- Update file name accordingly to newer version available
export JRE_HOME=/usr/lib/jdk/jdk1.8.0_05/jre <- Update file name accordingly to newer version available
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
Code:
source ~/.bashrc
java -version


To switch back to Java 6 or 7 then put # as below & use BBQLinux Java Switcher . . .




So now you'll have Java 6, 7 & 8 on BBQLinux side by side living happily ever after . . .

Source
Misc Ref (1) (2)

How to Build an Android App
 


Added on May 2, 2014
New live-image bbqlinux-2014.05.01-x86_64.iso
 

Hmm, the new live-image has the same problem with lightdm however it is relatively easy to solved . . .
 

Boot again with the live-image, click at bbqlinux's Home, 34GB Volume & key-in the password bbqlinux


Start Terminal & follow below & change accordingly to your HDD name . . .


Change it to lightdm-gtk-greeter


GUI method here . . .

Source

Added on July 11, 2014
Android ubifs Filesystem
 

A quick search returns very little info regarding Android ubifs Filesystems & i've learned my lesson well enough NOT . . .
 
To post my experience/ findings at any other thread on XDA other than my own started thread, why ? Simply b'cos my post will be ignored by all these what i called as annoying n00bs & newbies of XDA . . . All are arrogant, self-centered, doesn't appreciate help & all think themselves are the Master Shifu when they found few hacks/ info on how to mod their device . . .
With the correct keyword, there are indeed quite alot of infos regarding it but almost NON regarding android . . .

Great new is that dhinesh77 has taken the trouble to submitted a patch to TWRP so later on when it is merged then you'll be able to compile ubifs TWRP & cook your stock ROM with it . . .

The simplest & most user friendly Android Kitchen is able to cook ubifs Stock ROM out of it, just simply use the backup from TWRP, rename it to tar file extension & you'll be able to cook it right away . . . However, you may need to replace the update-binary with a compatible ubifs update-binary & also manually edit the updater-script to correctly install it . . .

Nowadays on XDA, there are also few Android Kitchen alternative you can try, shared by great DEVs such as the ArchiKitchen, Rickys Rom Kitchen, Swordrune10's Android Kitchen, GS-Kitchen RELOADED, Android Ultimate Toolbox Pro, Virtuous Ten Studio & many many more either Nix or Win . . .

To unpack an ubifs system.img, AFAIK, can only be done on a Nix box & thanks to Jason Pruitt, he has shared his super easy to use Ubi Reader & tested working on BBQLinux . . .

Hopefully, infos here are enough to provide ubifs users to kick-start their development . . .

Added on Aug 25, 2014
New live-image bbqlinux-2014.08.20-x86_64.iso
 

My Wi-Fi doesn't work while previous version works & it tooks me almost 2 days to figure it out . . .

It turns out it was the broken resolv.conf



Open Mate Terminal, copy & paste below command & that will solve the Wi-Fi problem, no need to restart . . .
Code:
rm /etc/resolv.conf <- delete broken resolv.conf
resolvconf -l <- Show DNS information
resolvconf -l > /dev/null 2>&1 > /etc/resolv.conf <- text append to new resolv.conf
geany /etc/resolv.conf <- This will open geany to confirmed the file resolv.conf has been written to . . .




Refer to alternate solution here . . .


The Following 32 Users Say Thank You to yuweng For This Useful Post: [ Click to Expand ]
 
calikevin
Old
#2  
Senior Member
Thanks Meter 86
Posts: 461
Join Date: Jun 2012
Were you able to get OmniRom to work for your unsupported device? If so can you detail step by step how you added your device files?
 
yuweng
Old
(Last edited by yuweng; 27th March 2014 at 03:39 PM.)
#3  
yuweng's Avatar
Senior Member - OP
Thanks Meter 2,330
Posts: 735
Join Date: Feb 2012
As mentioned, cm & Omni doesn't boot on MTK as most MTK vendors doesn't include kernel source...

However, i did check out with Master Shifu Dee_Troy when i hang out here & he told me there is no mkvendor.sh on Omni source & ask me to refer to one & only MTK device tree here & it did built TWRP 2.7 on 4.4 branch...

So i suggest the same that you do some research, look at various device tree example here, use the one closest siblings to your device, manually edit all those files & i'm sure it'll built or try hang out here or here...
The Following 5 Users Say Thank You to yuweng For This Useful Post: [ Click to Expand ]
 
shoxxy
Old
#4  
shoxxy's Avatar
Senior Member
Thanks Meter 193
Posts: 163
Join Date: Sep 2013
Thanks for this usefull thread my Friend

Just tested on Virtual Machine (ubuntu). Compile philz touch 6 using cm-11 source for qualcomm device works very fine .

Like you said just getting android source and device tree, and the build process could be launched!!!

Nice one. ....
Greetz

Gesendet von meinem ME173X mit Tapatalk
The Following User Says Thank You to shoxxy For This Useful Post: [ Click to Expand ]
 
iZLeeP
Old
#5  
Senior Member
Thanks Meter 114
Posts: 412
Join Date: Jan 2014
Location: Manila
Thanks for this @yuweng.
The Following User Says Thank You to iZLeeP For This Useful Post: [ Click to Expand ]
 
andrew.mackew
Old
#6  
Senior Member
Thanks Meter 62
Posts: 277
Join Date: Mar 2011
Awesome! Thanks for share!
The Following User Says Thank You to andrew.mackew For This Useful Post: [ Click to Expand ]
 
Treken
Old
#7  
Treken's Avatar
Senior Member
Thanks Meter 296
Posts: 824
Join Date: Nov 2010
Location: Houston
There are a few tools I had to install before I could compile Kit Kat. I thought I would share because Arch is so differrent than Ubuntu or Linux Mint so it was a pain to install these. Other than that I really like this distro. Nice UI
https://www.dropbox.com/s/wj0nk95e4os5qwz/kevintest.png
The Following User Says Thank You to Treken For This Useful Post: [ Click to Expand ]
 
yuweng
Old
(Last edited by yuweng; 8th June 2014 at 05:52 PM.) Reason: Update info . . .
#8  
yuweng's Avatar
Senior Member - OP
Thanks Meter 2,330
Posts: 735
Join Date: Feb 2012
Hmm, i never had to install anything, may be its device specific, idk . . .

But Hey, you should share the how-to here, everyone know its pain in the ass to install arch packages . . .

Never knew this thread got featured at the XDA Portal thanks to WILL VERDUZCO & JIMMY MCGEE . . .
Updates : Totally forgotten to mentioned Jordan Keyes doing the BBQLinux coverage at XDA TV . . .

Since this question was asked at the portal for app development, BBQLinux includes Android SDK, Android Studio, Geany & Meld.

Someone even mentioned that he has to install JDK8 then only it'll work for his app development but i can't find that link, either it was the keyword BBQLinux, Archlinux, JDK8 or something else i can't recall . . .
The Following 3 Users Say Thank You to yuweng For This Useful Post: [ Click to Expand ]
 
Treken
Old
#9  
Treken's Avatar
Senior Member
Thanks Meter 296
Posts: 824
Join Date: Nov 2010
Location: Houston
Yeah, I've never heard of having to use Java 8 before. But Java6 is version 1.6. This is not device specific but it's common with all ROMs. See here: https://github.com/Octo-Kat/platform...e/main.mk#L163

So if you want you can check some of the other main stream ROMs like AOKP, CM, etc and confirm this to be true. Also the Compression tool iz4c is a must otherwise the build errors out when it starts compiling the kernel.
https://www.dropbox.com/s/wj0nk95e4os5qwz/kevintest.png
 
speedyx2000
Old
#10  
speedyx2000's Avatar
Junior Member
Thanks Meter 1
Posts: 8
Join Date: Apr 2012
Location: Sicily
[QUOTE=yuweng;52224717]
But Hey, you should share the how-to here, everyone know its pain in the ass to install arch packages . . .
/QUOTE]

I've never heard about any 'pain' with Archlinux's packages in the last 3 years! And Archlinux is my main system since then.

From LG G Pad 8.3 with the original Kitkat by LG

Tags
bbqlinux android development compile linux
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes