Kernel-new-tmp

From Openmoko

Revision as of 03:29, 25 February 2009 by Arhuaco (Talk | contribs)

Jump to: navigation, search

TODO: spellcheck and check grammar.

This page might eventually replace the Kernel page.

Contents

General

This information is mostly useful for developers and power/curious users. If you are looking for a kernel to flash into your GTA01/GTA02 you might want to grab one from the daily builds (scroll down and you'll find it) or get one that ships with one of the Distributions. The good thing with daily builds is that the newest might be the better. The bad thing of daily builds might be that you can get a broken kernel. If you feel way too uncomfortable making the decision of which kernel to try and you are not willing to spend the time finding one that works for you then this page is not meant for you and you should be looking for a stable Distributions instead. The distributors make this for for you.

Linux kernel developers from the community and Openmoko Linux kernel developers maintain a working kernel for the Freerunner (Also known as GTA02) and also for the Neo1973 (Aka GTA01).

Right now there is an ongoing effort to reduce the difference between current Linux 2.6 (mainline) and the kernel in the Openmoko repository and thanks to this work we can run the most recent released version of Linux 2.6.

Sources

The sources of the Openmoko Linux kernel live in a GIT repository.

http://git.openmoko.org/?p=kernel.git;a=summary

GIT is a fast version control system suited for the workflow that many kernel developers use. It is specially useful when you need to send patches for a project (who might in turn might need to send them upstream). This is an over-simplification but it gives you the idea in case you did not know.

GIT might seem complicated at first but once you learn to use it you will find many ways to increase your productivity by using it. For completeness in this page we include the GIT commands that you need in order to build a working kernel.

If you are very new to git you might want to read good manuals already available.

If you would like to contribute code we also have a page with Hints_on_using_GIT_and_stgit where we all hope to share some cool tips and tricks that can help you. You do not need to learn stgit in order to send patches to the Kernel Mailing List but we have to tell you that once you know git, stgit will make you more productive when you need to send a few patch at once (patchsets).

Branches

GIT allows for different branches that developers use to speed up development. You might have noticed we have a few of them if you visited the web interface (http://git.openmoko.org/?p=kernel.git;a=summary).

The andy-tracking branch is the one where most of the action takes place these days.

Daily builds

If you just need the last version of the kernel you can download from the daily builds.

Autorev'ed:

http://downloads.openmoko.org/distro/experimental/

Pegged (TODO: Make clear what pegged means):

http://downloads.openmoko.org/distro/unstable/

Building the andy-tracking branch

Those are the minimum survival commands:

$ git clone git://git.openmoko.org/git/kernel.git linux-2.6
$ cd linux-2.6
$ git-checkout --track -b andy-tracking origin/andy-tracking
$ cp ./arch/arm/configs/gta02_moredrivers_defconfig .config

Before building this kernel you need install a Toolchain.

$ ./build

Once the script finishes you will get two files. The first is uImage-GTA02.bin and a second file with a longer name but same contents, for instance uImage-moredrivers-GTA02_andy-tracking_c16287685cb59f91.bin. Please use the second file if you publish your kernel in some server or if you talk about it in public (specially in bugs reports) because it will allow others to know what kernel you were trying (in case you don't have local changes).

In order to build the modules you can... TODO: fill.

If you want to update the local copy of the repository so that you get the latest changes, you can type:

$ git-pull

Before reporting that the new kernel does not build please first check for changes in the configuration file.

kernel building tips

If you are touching kernel code and building it quite often you really want to be using ccache. It will save you a lot of time.

TODO: submit a patch for the build script that makes ccache use easier.

Contributing

The development resources Openmoko offers are:

We appreciate your contributions. Check the Open Issues at the end of this page to check where we need more help.

If in doubt ask in the mailing list.

FAQ

Why does Openmoko cares about sending code upstream instead of (insert your task here)?

There are two very different approaches and both of them would be doomed if we stuck all our resources to only one of to them.

The first approach is not to care about upstream kernel development efforts and stick to an old kernel while struggling to make it work, ignoring the fact that it is upstream where the people who wants to help us improve, maintain and support the code running in our devices hang out.

The second is to care way too much about upstream to the point that we are not willing to ship a temporal dirty hack that make users happy and able to better use their phones. We cannot afford that kind of purity.

As many things in engineering we have to find a point in the middle that works well -- we will try hard to do it.

Who's Andy and why is he sticking his name in the kernel?

He takes some credit and most the blame. It is an usual practice that in kernel development some branches are named after the person who is taking care of them. He makes sure that the kernel still builds when Linus and his friends feel like it is time to update the upstream kernel and believe us: it is not as fun as it might sound and it happens often.

Known issues

Sysfs paths

Unfortunately we had to update many sysfs paths (see GTA02_sysfs) and since we did it the kernel stopped working properly with some distributions. Unless the distribution is abandoned it will likely catch up with the newest kernel soon.

FSO developers realized that this problem could be prevented from from happening in the future and they decided to code a nice daemon called odeviced.

Open Tickets

'The best way to deal with bug reports is using trac. Please read this report if you wish to know what the current issues are.

If you can help us with one of those issues it would be a great way to help us move forward. If in doubt please write to the Openmoko Kernel Mailing List. Let us link some bugs here without overdoing it because trac is better than a normal wiki for this. If we have more than 10 bugs the following lists then we might be doing it wrong.

Easy bugs

Those are the bugs that active kernel developers believe can be fixed by kernel programmers that might want to join us. Thus they are leaving them unfixed for some reasonable time while they work on the harder bugs.

TODO: list of bugs linking to trac.

Normal bugs

Those are the bugs that we have not fixed because they might be hard and/or because we have not found the time to fix them. They might end up being Esasy Bugs or Evil bugs. We will use trac for them. Please do not add a list of bugs here.

Read this report to find out more about them.

Hard bugs =

Those are the evil bugs that we haven't fixed either because:

  1. We do not know how to it in reasonable time
  2. We do not have a clue about how we can fix them
  3. Hardware vendor doesn't want to release documentation (some of them do that unfortunately / perhaps breaking promises they made to Openmoko about making things easier for developers)
  4. More testing is needed (perhaps a hard-to reproduce bug)

TODO: list of bugs linking to trac.

Personal tools

TODO: spellcheck and check grammar.

This page might eventually replace the Kernel page.

General

This information is mostly useful for developers and power/curious users. If you are looking for a kernel to flash into your GTA01/GTA02 you might want to grab one from the daily builds (scroll down and you'll find it) or get one that ships with one of the Distributions. The good thing with daily builds is that the newest might be the better. The bad thing of daily builds might be that you can get a broken kernel. If you feel way too uncomfortable making the decision of which kernel to try and you are not willing to spend the time finding one that works for you then this page is not meant for you and you should be looking for a stable Distributions instead. The distributors make this for for you.

Linux kernel developers from the community and Openmoko Linux kernel developers maintain a working kernel for the Freerunner (Also known as GTA02) and also for the Neo1973 (Aka GTA01).

Right now there is an ongoing effort to reduce the difference between current Linux 2.6 (mainline) and the kernel in the Openmoko repository and thanks to this work we can run the most recent released version of Linux 2.6.

Sources

The sources of the Openmoko Linux kernel live in a GIT repository.

http://git.openmoko.org/?p=kernel.git;a=summary

GIT is a fast version control system suited for the workflow that many kernel developers use. It is specially useful when you need to send patches for a project (who might in turn might need to send them upstream). This is an over-simplification but it gives you the idea in case you did not know.

GIT might seem complicated at first but once you learn to use it you will find many ways to increase your productivity by using it. For completeness in this page we include the GIT commands that you need in order to build a working kernel.

If you are very new to git you might want to read good manuals already available.

If you would like to contribute code we also have a page with Hints_on_using_GIT_and_stgit where we all hope to share some cool tips and tricks that can help you. You do not need to learn stgit in order to send patches to the Kernel Mailing List but we have to tell you that once you know git, stgit will make you more productive when you need to send a few patch at once (patchsets).

Branches

GIT allows for different branches that developers use to speed up development. You might have noticed we have a few of them if you visited the web interface (http://git.openmoko.org/?p=kernel.git;a=summary).

The andy-tracking branch is the one where most of the action takes place these days.

Daily builds

If you just need the last version of the kernel you can download from the daily builds.

Autorev'ed:

http://downloads.openmoko.org/distro/experimental/

Pegged (TODO: Make clear what pegged means):

http://downloads.openmoko.org/distro/unstable/

Building the andy-tracking branch

Those are the minimum survival commands:

$ git clone git://git.openmoko.org/git/kernel.git linux-2.6
$ cd linux-2.6
$ git-checkout --track -b andy-tracking origin/andy-tracking
$ cp ./arch/arm/configs/gta02_moredrivers_defconfig .config

Before building this kernel you need install a Toolchain.

$ ./build

Once the script finishes you will get two files. The first is uImage-GTA02.bin and a second file with a longer name but same contents, for instance uImage-moredrivers-GTA02_andy-tracking_c16287685cb59f91.bin. Please use the second file if you publish your kernel in some server or if you talk about it in public (specially in bugs reports) because it will allow others to know what kernel you were trying (in case you don't have local changes).

In order to build the modules you can... TODO: fill.

If you want to update the local copy of the repository so that you get the latest changes, you can type:

$ git-pull

Before reporting that the new kernel does not build please first check for changes in the configuration file.

kernel building tips

If you are touching kernel code and building it quite often you really want to be using ccache. It will save you a lot of time.

TODO: submit a patch for the build script that makes ccache use easier.

Contributing

The development resources Openmoko offers are:

We appreciate your contributions. Check the Open Issues at the end of this page to check where we need more help.

If in doubt ask in the mailing list.

FAQ

Why does Openmoko cares about sending code upstream instead of (insert your task here)?

There are two very different approaches and both of them would be doomed if we stuck all our resources to only one of to them.

The first approach is not to care about upstream kernel development efforts and stick to an old kernel while struggling to make it work, ignoring the fact that it is upstream where the people who wants to help us improve, maintain and support the code running in our devices hang out.

The second is to care way too much about upstream to the point that we are not willing to ship a temporal dirty hack that make users happy and able to better use their phones. We cannot afford that kind of purity.

As many things in engineering we have to find a point in the middle that works well -- we will try hard to do it.

Who's Andy and why is he sticking his name in the kernel?

He takes some credit and most the blame. It is an usual practice that in kernel development some branches are named after the person who is taking care of them. He makes sure that the kernel still builds when Linus and his friends feel like it is time to update the upstream kernel and believe us: it is not as fun as it might sound and it happens often.

Known issues

Sysfs paths

Unfortunately we had to update many sysfs paths (see GTA02_sysfs) and since we did it the kernel stopped working properly with some distributions. Unless the distribution is abandoned it will likely catch up with the newest kernel soon.

FSO developers realized that this problem could be prevented from from happening in the future and they decided to code a nice daemon called odeviced.

Open Tickets

'The best way to deal with bug reports is using trac. Please read this report if you wish to know what the current issues are.

If you can help us with one of those issues it would be a great way to help us move forward. If in doubt please write to the Openmoko Kernel Mailing List. Let us link some bugs here without overdoing it because trac is better than a normal wiki for this. If we have more than 10 bugs the following lists then we might be doing it wrong.

Easy bugs

Those are the bugs that active kernel developers believe can be fixed by kernel programmers that might want to join us. Thus they are leaving them unfixed for some reasonable time while they work on the harder bugs.

TODO: list of bugs linking to trac.

Normal bugs

Those are the bugs that we have not fixed because they might be hard and/or because we have not found the time to fix them. They might end up being Esasy Bugs or Evil bugs. We will use trac for them. Please do not add a list of bugs here.

Read this report to find out more about them.

Hard bugs =

Those are the evil bugs that we haven't fixed either because:

  1. We do not know how to it in reasonable time
  2. We do not have a clue about how we can fix them
  3. Hardware vendor doesn't want to release documentation (some of them do that unfortunately / perhaps breaking promises they made to Openmoko about making things easier for developers)
  4. More testing is needed (perhaps a hard-to reproduce bug)

TODO: list of bugs linking to trac.