Part 1 - Setting up Linux & ArchiKitchen on Windows
By watching above step-by-step video, you'll learn:
1. How to install Debian on your VirtualBox machine
2. How to connect Windows with Linux through a shared VBox folder
3. How to install ArchiKitchen
4. How to create your first custom ROM, with built-in Root and Busybox
- You can use any virtualization method you want. I suggest using VirtualBox, as it's very easy, flexible and free
- You can use nearly any Linux distro. I suggest either Debian or Ubuntu, as both of them have excellent support and are very easy to install and use, compared to some other ones. However if you feel fine in Linux environment, you can install nearly any distro you like.
Weekly Debian Testing.iso link
Installing virtualbox additions: apt-get install virtualbox-guest-dkms
Installing required tools: apt-get install zip unzip openjdk-7-jdk
Mounting a shared VBox folder: mount -t vboxsf yourName /path/to/yourFolder
Tutorials made by other developers: @bigrammy
Part 1. Prepare for linux Installation https://www.youtube.com/watch?v=aDsQTcDvSMY
Part 2. Install Linux (Ubuntu/Zorin) https://www.youtube.com/watch?v=KwnIjCXXM5Y
Part 2.5. Edit Winows bootloader to boot Linux: https://www.youtube.com/watch?v=gNpQucQxcFQ
Part 3. Work as Root Mod & Install ArchiKitchen https://www.youtube.com/watch?v=T_ad7uML8QM
Part 4. How to add your device locally to the Kitchen: http://youtu.be/YXNDcmf6GhI
ArchiKitchen Questions & Answers
What is this "ArchiKitchen"?
A Linux-based kitchen, with a main objective of converting stock ROM drops in .img, .tar.md5 or similar formats to CWM-flashable .zip.
So I can create my own custom ROM based on stock ROM with it?
Is it for Linux only? Why windows is not supported?
Let's face it, Android is based on Linux kernel and we could call it a mobile UNIX fork. It's hard to work with Linux-based things on Windows, in fact, Windows doesn't even offer Bash (Bourne-again shell), which is absolutely core for ArchiKitchen. Working with windows is painful, for example - .img mounting. I can very easily mount any filesystem image on Linux with just one command, while doing so on Windows usually requires a massive convertion of whole image to .zip file, then extracting a single files. Also, Windows doesn't support symbolic links, and this makes it impossible to create 1:1 copy of the image "translated" to zip file. Therefore, making a Windows port would require lots of more work and solving issues, and even with that it would still cause some core features to be unavailable. However, launching Linux on Windows is very easy thanks to VirtualBox and other virtualization software, so you don't need to reformat your PC or stick purely with Linux. In fact, this is the proposed
way of using ArchiKitchen - Installing a native Linux distro (suggested: Debian or Ubuntu) and then installing ArchiKitchen on it. Take a look at tutorial to see how easily you can install and run ArchiKitchen in Linux VBox.
Is Cygwin supported?
No. Cygwin IS NOT supported and it's not planned to add such support. Reason is nearly the same as above one. However, ArchiKitchen is open-source project and I'm open for all pull requests, so perhaps somebody will add support for Cygwin in the future. Until then, ArchiKitchen is compatible ONLY with Linux, and if you use it on Cygwin you're on your own with the issues that may happen.
Which phones are supported?
ArchiKitchen contains a local "database" of devices, which includes a kernel/modem blocks to be used. However, as long as you know the partition layour of your device (kernel block), ArchiKitchen works with every phone
and every Android variant
. I'm trying to make it as universal as possible, so even if your device does not exist in our local database, it should work.
How can I add my own phone to the local database?
If it doesn't exist yet, take a look at "product" folder. Inside you can notice various devices with name based on their models. ArchiKitchen will detect your ROM's model and check inside if it exists, if it does, then some properties for this model will be loaded, if it doesn't exist, then ArchiKitchen will ask user for them. Probably the best idea is to copy one of the already available models (for example "m0" - Samsung Galaxy S3), then rename new copied folder to your model name and finally edit files inside.
What is "NULL" text found for example in some MODEM files in the database?
Some phones have a possibility to flash modem directly from CWM, others don't. "NULL" text indicates that this model does not support flashing modem.bin, so even if ArchiKitchen finds and recognizes it, it will pop up an error telling you that it unfortunately can't be used.
Where is SYSTEM block?
System block is not being used at all, as it's a valid partition and should be located in "fstab" file in recovery already. ArchiKitchen mounts system automatically through "mount" binary, with automatic filesystem and /system path. I consider providing a system block as something obsolete, because it's only required when you're formatting a partition, and even during flashing, a wipe - delete_recursive() function is enough. Therefore, ArchiKitchen does NOT require providing a /system block.
It looks like something is wrong with zipalign command. I can notice errors like "./zipalign: No such file or directory"
This is because zipalign is x86 binary (32-bit), while you have amd64 (64-bit) Linux. Therefore, we must install some missing core packages to properly support x86 binaries. This will do the trick:
apt-get install lib32stdc++6 lib32z1