Introducing XDA:DevCon – A Conference For Developers By Developers
XDA Developers Android and Mobile Development Forum
Forgot your password?
 
Post Reply+
Tip us?
 
viper001
Old
(Last edited by viper001; 24th December 2011 at 06:52 AM.)
#1  
Senior Member - OP
Thanks Meter 174
Posts: 583
Join Date: Dec 2010
Default Kernel Building Guide for the X8

Part 4. A noob's Hope.

or, A noobs Kernel building guide for noobs by a noob.

Linux Gurus and Master Dev's, please feel free to point out any mistakes i make.

We've got lots of ROMs available and frankly, i think we've reached the limit of what could be done. Ofcourse, i could be wrong. we might have a special guy/girl out there who's just finishing off a port of icescream sandwich for the X8.

As it stands, instead of waiting for the latest ROM build, just choose what was best in your experience and stick to it, nothing would change much. I still use the old GX8 ;)

But, first: let's take our hats off and and humbly give our thanks to those that have paved the way, the dev's that we've bugged (pun), cajoled, bribed (?) and outright threatened to put in into their (ROMs, Kernels,Modules etc) works what we like to have running on our X8's.

in Alphabetical order: (BTW, incase i miss anybody, pls point it out. we don't want any disrespect)

alfsamsung
AnDyx
Blagus
Dare-Devil Inside
Doixanh
DoomLoRd
FrogyFurnetal
FXP team
Master Shpit
Nobodyatall
Ponanovn
Racht
Velnens123

Well on with this simple tutorial:

What's a Kernel? (or, its KERNEL and NOT KERNAL) Simply put, it's the Software Layer in between the ROM and the Hardware. In this case it's Linux 2.6.29. The ROM "Android 'whatever'" is the interface between us users and our beloved X8.

Why 2.6.29 and not a more later kernel? since the Kernel is the go between hardware and the UI, ther drivers for the hardware are there. An analogy will be like Windows 98 drivers will not work (well, sometimes they do) on Windows7 and vice versa. Couple that idea with Google, hence Android, is branched off of the main Linux kernel. Infact, the entire Android kernel code was deleted from the main linux kernel tree.

Besides, look at the title, it's for noobs by a noob. as soon as i figure out how to go to Kernel 2.6.32 or something, i'll update.

Why build your own Kernel? because it's fun!

What you need:
1. Crash Helmet.

2. A desire to possibly brick your X8

3. A fast computer with atleast 20 GB of HD space

4. since you're a noob, you must be using a Windows OS of some sort. If it's still Win3.1 or even Win95 consider upgrading to a faster computer and a more modern OS.i use both a 3.2 Ghz Hexcore AMD with 8Gb of RAM and 2TB HD and a 3.0Ghz Intel Core2 4GB RAM and 500GB HD Both worked fine. I also used a 2.6Ghz Core2, 500GB HD 2GB RAM Laptop and that worked fine as well.

5. Linux based OS. You can have this loaded in your computer a myrad ways, but for us noobs, the easiest will be using Virtual Box (VirtualBox-4.1.6-74713-Win). And, for this tutorial, i set up virtual box with Ubuntu (ubuntu-11.10-desktop-i386). SO, go ahead and download both and install. If you don't know how to find those... you being a noob can only go so far... remember, google is your friend.

7. FXP Kernel Source. It's always a good idea to ask permission first and don't forget to say thanks. > https://github.com/freexperia/semc-kernel-msm7x27. click on the button which says zip.

8. Download this >> https://sourcery.mentor.com/sgpp/lit...ux-gnu.tar.bz2

9. and this, http://dl-www.sonyericsson.com/cws/d...1.A.0.6.tar.gz

So, see you Saturday.
The Following 22 Users Say Thank You to viper001 For This Useful Post: [ Click to Expand ]
 
viper001
Old
(Last edited by viper001; 1st December 2011 at 04:33 PM.)
#2  
Senior Member - OP
Thanks Meter 174
Posts: 583
Join Date: Dec 2010
Default Reserved

Part 5: The code strikes back!

What are those files we downloaded:
1. FXP Kernel Source for MSM7227
2. Linux-GNU compiler
3. SE 2.1.1.A.0.6 Kernel Source.

What do we do with it?
Assuming you've got your VMBox Ubuntu running,

1. Open Home. This is like windows File Explorer.

2. Make a Folder and call it "Kernel".

3. Copy all your downloaded files into the Kernel Folder.

4. Extract those 3 files by right clicking on the archive and select "Open with Archive Manager".

5. Select "Extract" in the upper part of the Archive Manager window. Click "extract" again on the lower right of the window that appears.
are you done extracting? well, if you are then:

6. let's make our lives a bit easier: Rename the arm-2010q1-202-arn-none-linux-gnueabi-i686-pc folder into just arm-2010q1.

7-8 do the same thing with the other two.... No, not the same name as arm2919q1(noob!) but, for the FXP kernel source folder just rename it to FXP and the original SE Kernel Source folder to SeX8.

9. OK. crash helmets ready? Open up Terminal....

(hint: see that wierd symbol above the Home icon in the taskbar? click on it and in the search space type "terminal")
(hint: you can click and drag the Terminal Icon into the task bar for easier use.)

10. type this in exactly but without the double qoutes, Linux is picky about cases. "sudo apt-get install git unrar libncurses5-dev qt3-dev-tools"
remember your homework?

sudo is a command that basically says "hey, i'ma supauser, do what i tell you!" which in this case is to download and install, git, unrar, ncurse libraries and QT3. To be honest, i haven't found much use for Qmake (QT3).

You might be wondering (especially the command line experts) as to why i switch back and forth between the command line and the Home browser. Well, for us noobs, i find it easier to go with the familiar and spend as little time as possible in a super user terminal. Lot's of things can go wrong with a mis-typed command. As for now twiddle your fingers while we wait for the download and install to finish.

Done?

11. OK. since we're gonna be doing kernel stuff lets get super user access. again enter this with no qoutes: sudo /bin/bash
enter your password. don't worry it won't show those loveable asterisks. press enter. if everything's ok we'll see the command prompt again with a difference of root access ;)

12. next. let's get to our Kernel directory by : "cd ~/Kernel/FXP" (thanks to dioxanh for the correction)

13. Heres where the fun begins:
we set up the environment by entering the following in Termial(NO QOUTES):

"export ARCH=arm"
"export CROSS_COMPILE=/home/viper001/Kernel/arm-2010q1/bin/arm-none-linux-gnueabi- "

BTW, change viper001 in the crosscompile to your user name

14. configuration definitions. this tells the compiler for what machine, what drivers to include, machine configuration etc to include into your kernel build.
so, if you want to see all the machines, for those with any machine with the MSM7227, (HEY, you with the E16) it is possible to compile a kernel for it also.

in this case, lets use the Home Folder explorer. and double-click on the following folders: Kernel >> FXP>> arch>> arm >> configs.

now we're in FXP's archive for the configuration of arm based machines. isn't it nicely logical.

of interest are two configs. fxp_shakira_defconfig and semc_shakira_defconfig. You can view them in gedit by double clicking. but please do not edit.

15. Back to the terminal. type in: "make fxp_shakira_defconfig"
did you see this after it was done? "# configuration written to .config". that means, so far so good.

16. let's see what we've got. This was the reason we downloaded ncurses. enter "make menuconfig"
Explore a bit, and see the settings, don't change any for now. once your done exit back to the terminal prompt.

17. type in: "make" and depending on your PC, it will take from 10 to 30 minutes. give or take a few hours on a pentium 1. (DIDn't i tell you to upgrade?)

18. If all went well, then in the Kernel >> FXP>> arch>> arm >> boot folder, you'll find the image and zimage files. congratulations, you've compiled your first kernel.

So, in summary once you've got all the stuff together you've got to:

sudo /bin/bash
to get superuser access

export ARCH=arm
ready your environment to compile for the arm based machione

export CROSS_COMPILE=/home/viper001/Kernel/arm-2010q1/bin/arm-none-linux-gnueabi-
ready your environment by specifying the location of your compiler

make "defconfig, menuconfig, oldconfig"
make "defconfig": where defconfig is the default configuration file of a specific machine base on the archive as specified by ARCH.

make menuconfig: give us a pseudo graphical user interface. best used after a make defconfig to do those tweaks.

make oldconfig: you don't want to know. but if your curious just enter it and take a look and waste between 15 to 30 minutes of your life.

make: the final command to get your kernel image.

Here's a few helpfull commands after a failed compile:

make clean
make mrproper
The Following 15 Users Say Thank You to viper001 For This Useful Post: [ Click to Expand ]
 
viper001
Old
(Last edited by viper001; 21st November 2011 at 07:24 AM.)
#3  
Senior Member - OP
Thanks Meter 174
Posts: 583
Join Date: Dec 2010
Default Reserved

Part 6. Return of the Kernel Builder.

You now have the Kernel Image file. so, What do you do next?

Get the IMAGE file in the aforemention folder.

In windows:

Go to Blagus thread on Kernel building. >> http://forum.xda-developers.com/show....php?t=1254525

download the unlocking tool if you still don't have it. Don't forget to say Thanks.

download the attached FXPramdisk.zip and extract the ramdisk file inside.

put the image and the ramdisk file into the */sinTools folder of Blagus's utility. note: there's already an existing image and ramdisk in that folder. delete those or save them in another folder.

doubleclick on example_build.cmd and you'll get a result.zip file.

extract the result.elf.sin and rename to kernel.sin. YAY

Now, this is the dirty but most convenient way to wrap things up.

1. make a copy of a working kernel.ftf file.
2. in Blagus's utily, there is a folder called loader with a file inside called loader.sin
3. open up the kernel.ftf file with your favorite archiver. i use 7zip. delete the kernel.sin and loader.sin and then drag and drop your own kernel.sin and Blagus's loader.sin in that kernel.ftf and close.
4. use the flashtool utilty to flash into the X8.

After the flash and powering on, it is always a good idea to clear cache, dalvik cache and the battery stats.

If everything went well and booted to your ROM then you've got yourself the latest build of the FXP ROM.

BUT, HOLD ON!!!!

Don't get that far away look in your eyes as you whisper to yourself "then i am a kernel builder...."

I'll try to say this in my best yoda imitation. "hmmm, hehehehe *cough* *wheeez*.... WiFi, you must compile WiFi.... only then, a Kernel Builder will you be..."

.....

"There are also.... the modules...ramdisk editing..."


See you in Part 1. The Phantom Modules.
Attached Files
File Type: zip FXPramdisk.zip - [Click for QR Code] (1.57 MB, 348 views)
The Following 19 Users Say Thank You to viper001 For This Useful Post: [ Click to Expand ]
 
Megakaban_
Old
#4  
Junior Member
Thanks Meter 1
Posts: 14
Join Date: Jan 2011
Location: Khabarovsk
It will be very interesting
Thank you!
 
amnher
Old
#5  
amnher's Avatar
Senior Member
Thanks Meter 88
Posts: 911
Join Date: Sep 2011
Location: Taguig
is there a E16i W8 firmware?
Xperia Mini ST15i Black
16GB SanDisk Mobile Ultra 16GB Class 10 UHS Speed Class 1++

 
viper001
Old
(Last edited by viper001; 16th November 2011 at 01:25 PM.)
#6  
Senior Member - OP
Thanks Meter 174
Posts: 583
Join Date: Dec 2010
Quote:
Originally Posted by amnher View Post
is there a E16i W8 firmware?
Check the se developer site. You might get lucky.

EDIT: I actually checked. And there is one for the E16i. The difference between the i and a versions is cdma or GSM. It could just be a matter of using the correct definitions during compile. Let's hope that a kind guru could shed light on this.

Oops. It is an i you're asking for. So go and download this http://developer.sonyericsson.com/wportal/devworld/downloads/download/e16ieclair211a46targz?cc=gb&lc=en

Sent from my TI99 4A
The Following 2 Users Say Thank You to viper001 For This Useful Post: [ Click to Expand ]
 
viper001
Old
#7  
Senior Member - OP
Thanks Meter 174
Posts: 583
Join Date: Dec 2010
updated.
The Following 2 Users Say Thank You to viper001 For This Useful Post: [ Click to Expand ]
 
viper001
Old
(Last edited by viper001; 21st November 2011 at 07:27 AM.)
#8  
Senior Member - OP
Thanks Meter 174
Posts: 583
Join Date: Dec 2010
Default Part 1. The Phantom Modules

The the early days of the X8 rooting scene. we had two ROM Devs/Porters that gave us an option of going the CM route through MiniCM or the HTC/Motorla route. Now qui-gon and obi... urmm, Racht and Ponanovn did a splendid job in porting these ROMS, especialy since it freed us from Eclair.

But the users wanted more... we wanted multi-touch, we wanted overclock, we wanted netfilters.... heck, lets just say for the price of the X8, we wanted an X10.

Out of the SE deserted android scene, Dioxahn came out with back to back modules that enabled, empowered and brought balance to our X8. (too cheesy?)

But with the advent of X8 Kernel Building, where did these module go? we have to delete the modules from our lib/modules..,.. what happened?

Well, the code they had just went to where they're supposed to be.

It's a frustration that can heard in Dioxanhs words when people asks stuff like dual/multitouch on a synaptics X8 or overvoltage and the like when we can't understand his genius.

to be clear, first and foremost, the modules he made, hijacks and takes over the code built in kernel. Ex. the Kernel might need to know what speed the cpu should be, and there is a code for that, to simplify, as it ask for this code, the OC module intercepts this request and sends its own modified code as an alternative. confused? GOOD.


Overclock:
In ubuntu, go to Kernel >> FXP >> arch >> arm >> mach-msm

double click on acpuclock.c, you will not find the following code as is, since the FXP team disabled the OC from the Kernel. but do a search of :

static void acpuclk_set_div

and you should find a code similar to the OC code that follows but without the items in bold.

DO not modify anything yet. Unless you know what you're doing.

The code below is what enables overclock and is the same instructions inserted by the OC module, it is also the same as in the Google nexus, and alfasamsungs kernel.

static void acpuclk_set_div(const struct clkctl_acpu_speed *hunt_s) {
uint32_t reg_clkctl, reg_clksel, clk_div, src_sel, a11_div;
reg_clksel = readl(A11S_CLK_SEL_ADDR);
/* AHB_CLK_DIV */
clk_div = (reg_clksel >> 1) & 0x03;
/* CLK_SEL_SRC1NO */
src_sel = reg_clksel & 1;
// Perform overclocking if requested
a11_div=hunt_s->a11clk_src_div;
if(hunt_s->a11clk_khz>600000) {
a11_div=0;
writel(hunt_s->a11clk_khz/19200, MSM_CLK_CTL_BASE+0x33C);
udelay(50);
}
src_sel = reg_clksel & 1;
/*
* If the new clock divider is higher than the previous, then
* program the divider before switching the clock
*/
if (hunt_s->ahbclk_div > clk_div) {
reg_clksel &= ~(0x3 << 1);
reg_clksel |= (hunt_s->ahbclk_div << 1);
writel(reg_clksel, A11S_CLK_SEL_ADDR);
}


Over and under voltage:

Now, this is what im busy of at the moment. i'm trying to find the best PLL clock ratio for GPU to CPU stable speeds within the constraints of the voltage. the bold numbers are the voltage identifiers. since the MSM7227 has a range of 1.2 to 1.35 V operating voltage hence the values from 1 to 7. NO OVERVOLTAGE.

BTW, the part is located in the same file acpuclock.c and is at the begining and is also required to set the maximum CPU clock. The values after the 600Mhz are the values i'm playing with since i think FXP has already "tuned" the stock speed perfectly. In alfasamsungs kernel, he didn't include the scales between 600 and 729. which is very logical. why overclock if you ain't going to max,

/* 7x27 normal with GSM capable modem - PLL0 and PLL1 swapped */
static struct clkctl_acpu_speed pll0_960_pll1_245_pll2_1200[] = {
{ 0, 19200, ACPU_PLL_TCXO, 0, 0, 19200, 0, 0, 30720 },
{ 0, 120000, ACPU_PLL_0, 4, 7, 60000, 1, 3, 61440 },
{ 1, 122880, ACPU_PLL_1, 1, 1, 61440, 1, 3, 61440 },
{ 0, 200000, ACPU_PLL_2, 2, 5, 66667, 2, 4, 61440 },
{ 1, 245760, ACPU_PLL_1, 1, 0, 122880, 1, 4, 61440 },
{ 1, 320000, ACPU_PLL_0, 4, 2, 160000, 1, 5, 160000 },
{ 0, 400000, ACPU_PLL_2, 2, 2, 133333, 2, 5, 160000 },
{ 1, 480000, ACPU_PLL_0, 4, 1, 160000, 2, 5, 160000 },
{ 1, 600000, ACPU_PLL_2, 2, 1, 200000, 2, 7, 160000 },
{ 1, 652800, ACPU_PLL_2, 2, 1, 200000, 2, 7, 160000 },
{ 1, 691200, ACPU_PLL_2, 2, 1, 200000, 2, 7, 160000 },
{ 1, 710400, ACPU_PLL_2, 2, 1, 200000, 2, 7, 160000 },
{ 1, 729600, ACPU_PLL_2, 2, 1, 200000, 2, 7, 160000 },
{ 1, 748800, ACPU_PLL_2, 2, 1, 200000, 2, 7, 160000 },
{ 1, 768000, ACPU_PLL_2, 2, 1, 200000, 2, 7, 160000 },
{ 1, 787200, ACPU_PLL_2, 2, 2, 160000, 2, 7, 160000 },
{ 1, 806400, ACPU_PLL_2, 2, 2, 160000, 2, 7, 160000 },
// { 1, 825600, ACPU_PLL_0, 4, 0, 206400, 3, 7, 122880 },
// { 1, 844800, ACPU_PLL_0, 4, 0, 211200, 3, 7, 122880 },
// { 1, 864000, ACPU_PLL_0, 4, 0, 216000, 3, 7, 122880 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {0, 0, 0}, {0, 0, 0} }
};


One of the best things about this is that you can code and configure your "overclock" in acpuclock.c, set the default minmax speed to 122/600 in the defconfig during compile gaining a stock profile and go as high (or low) as you want in the ROM through the CM settings, SetCPU etc. You don't even have to "enable" overclock in the CMsettings.

At any rate, take a break and think about what our devs are doing before you noob them out. ok?

As a guide, i've included my acpuclock.c for your review and comparison to the original se Kernel.


Next. we'll tackle part 2. Touch Screen Wars.
or, they're on the same machine, they look the same... but, (gasps) they're not!!!
Attached Files
File Type: txt acpuclock.txt - [Click for QR Code] (26.8 KB, 78 views)
The Following 6 Users Say Thank You to viper001 For This Useful Post: [ Click to Expand ]
 
viper001
Old
(Last edited by viper001; 21st November 2011 at 07:17 AM.)
#9  
Senior Member - OP
Thanks Meter 174
Posts: 583
Join Date: Dec 2010
Part 2. Touchscreen Wars.

One of the silliest things you'll see on the X8 is the inconsistency in Hardware. We don't know whether it's for cost or different paces of manufacture or maybe parts availability. We even have 4 types of essentially the same machines the E15i and the cdma version E15a. then lately we have the W8 or E16i and E16a. to further compound the issue we even have different touchscreen controllers. And this is what we're gonna look at today.

So, you had fun compiling, played around with the defconfig yet?

well, if not let's take a look at one particular section:
# Input Device Drivers
#
# CONFIG_INPUT_KEYBOARD is not set
# CONFIG_INPUT_MOUSE is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TABLET is not set
CONFIG_INPUT_TOUCHSCREEN=y
# CONFIG_TOUCHSCREEN_FUJITSU is not set
# CONFIG_TOUCHSCREEN_GUNZE is not set
# CONFIG_TOUCHSCREEN_ELAN_I2C_8232 is not set
# CONFIG_TOUCHSCREEN_ELO is not set
# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
# CONFIG_TOUCHSCREEN_MTOUCH is not set
# CONFIG_TOUCHSCREEN_INEXIO is not set
# CONFIG_TOUCHSCREEN_MK712 is not set
# CONFIG_TOUCHSCREEN_PENMOUNT is not set
CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI=y
CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI_4X=y
# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
# CONFIG_TOUCHSCREEN_TSC2007 is not set
# CONFIG_TOUCHSCREEN_MSM_LEGACY is not set
# CONFIG_TOUCHSCREEN_CY8CTMA300 is not set
# CONFIG_TOUCHSCREEN_CY8CTMA300_SER is not set
CONFIG_TOUCHSCREEN_CYTTSP_I2C=y
CONFIG_TOUCHSCREEN_CYTTSP_CORE=y
CONFIG_INPUT_MISC=y
# CONFIG_INPUT_ATI_REMOTE is not set
# CONFIG_INPUT_ATI_REMOTE2 is not set
# CONFIG_INPUT_KEYSPAN_REMOTE is not set
# CONFIG_INPUT_POWERMATE is not set
# CONFIG_INPUT_YEALINK is not set
# CONFIG_INPUT_CM109 is not set
CONFIG_INPUT_UINPUT=y
CONFIG_INPUT_GPIO=y
CONFIG_INPUT_KEYCHORD=y
# CONFIG_BMA150 is not set


I've extracted this from the semc_shakira_defconfig and you'll see that the synaptics and cyprus are enabled.

The question that comes to mind is why the cyprus have true dual while the synaptics X8 user stuck with only a fake? well, sadly the answer is in hardware. NO, it is not the controller... it is the screen, the touch screen sensor itself. like the synaptic advert says, the clearpad 1000 has 1touch + pinch.

What we can do however, especially if you're not planning to distribute your Kernel, is to disable the support for the driver you're not using.... think of it as payback.

To anybody interested to take a look. the touch screen drivers are located at (if you're using the format from the beginning of this tutorial) */FXP/drivers/input/touchscreen.

Files of interest are:
synaptics_i2c_rmi4.c
cyttsp_i2c.c

Well, it isn't much of a war...

Bring out the droids. or, semi-automating the process.

are you tired yet of entering those exports and stuff? well there's and easier way...

I've attached a file for your convenience (never say i didn't do you guys
favors.) called fxp2.txt. rename it to fxp2.bash and copy this into your Work directory. Which in this tutorial's case would be

/home/(your username/Kernel/FXP/

now, double click on this file from the home folders or type gedit fxp2.bash from terminal (be sure your in the working directory).

edit this file so that the paths are correct. save and close.

enter in terminal: "bash fxp2.bash"

cool, huh.

what did it do? first it cleaned up all the mess from previous compiles, then it set up the environment, then it made the .config and opened up the semi-GUI config editor. you can edit the configs as you want and when you exit the GUI, all you have to do is type in "make" et voila!!!

Speaking of the Configs. i'm sure that by now you've disregarded my warnings of not to change anything yet, and i'm very sure that by now you would have found that you can enable swap, setup support for ext234, set up driver support, net filters. etc. Heck, you might have even figured out how to make a kernel for the W8 by now.

But for the guys who did follow my warnings.... Why did you? That's why you want to compile the kernel... you want to be in charge, you want to be the boss of your own X8... the only thing stopping you is you didn't know how... NOW, YOU DO!!!

on the last chapter we'll be dealing with the Code's Revenge... the ramdisk.
Attached Files
File Type: txt fxp2.txt - [Click for QR Code] (159 Bytes, 39 views)
The Following 4 Users Say Thank You to viper001 For This Useful Post: [ Click to Expand ]
 
viper001
Old
(Last edited by viper001; 28th January 2012 at 10:46 AM.)
#10  
Senior Member - OP
Thanks Meter 174
Posts: 583
Join Date: Dec 2010
part 3. Revenge of the Code
or that "insert profanity here" ramdisk!!!

Never before in the history of Noobiness has anything been more complicatedly crazy than the ramdisk. i mean, compiling the base kernel image is easy compared to this monster.

But we'll not let this stop us! Crash Helmets ON!!!!

What's the Ramdisk?
A ramdisk is basically a small filesystem containing the core files needed to initialize the system. It includes the critical init process, as well as init.rc, which is where you can set many system-wide properties. This is also where the chargemon (off-line charging) and the recovery systems are located.
we built our kernels using Blagus's ramdisk which is included with the bootloader unlock. so let's start with that:

1. get back to your Home folder. make a working folder for the ramdisk. lets call it "ramdisk" for the sake of this tutorial.

2. in the terminal, type "exit". it's a good idea now to get out of root access or we'll run into trouble later by having different access priorities as we switch between the GUI Home folder explorer and the Terminal based command line.

3. still in terminal, get into the ramdisk folder.
(hint: cd /home/(your username)/ramdisk)

4. copy Blagus's ramdisk into the ramdisk folder. you can rename it to ramdisk.cpio.gz or leave it as is.

5. let's upack the ramdisk by: gunzip -c ramdiskfilename | cpio -i

6. YAY!. now you can edit the ramdisk as you like it. I'll not go into this since it would take another tutorial in itself.

7. once you're done messing around with it. remove all the other stuff from the directory that you don't need, like the original ramdisk file.
re-pack the ramdisk with: find . | cpio -o -H newc | gzip > ../ramdisk.cpio.gz
you'll find the packed ramdisk.cpio.gz file in /Home.

8. rename this as ramdisk again and use as your ramdisk along with the kernel image you've compiled and make a kernel.sin as explained earlier in the tutorial.



We've now come full circle. Thank you for your time. i'll post more as i discover more and update the tutorial as i learn more.

Better yet, it would be great if you guys post something that would benefit all of us.





Additional Stuff that's good to know/have:

Well, that covers the basics of the kernel. but there's a few more things you might need. you know just in case.

Update your JAVA: you need these if your compiling for Froyo or later.

sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
sudo apt-get update
sudo apt-get install sun-java6-jdk

If your planning to build android rom, you'll need these:

(As noted by Dioxanh: for froyo and below, use a 32 bit system and a 64 bit system for gingerbread and above.)

32-bit linux installations:
sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev libc6-dev libncurses5-dev x11proto-core-dev \
libx11-dev libreadline6-dev libgl1-mesa-dev tofrodos python-markdown \
libxml2-utils

64-bit linux installation:
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 lib32readline5-dev lib32z-dev \
libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
libxml2-utils

The Following 5 Users Say Thank You to viper001 For This Useful Post: [ Click to Expand ]
 
Post Reply+
Tags
build, guide, kernel, xperia x8
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Go to top of page...