Prepare your environment

Install and setup necessary packages

Install necessary packages. you can install more packages you need.

local# sudo apt-get install build-essential
local# sudo apt-get install fakeroot
local# sudo apt-get install kernel-wedge
local# sudo apt-get install libncurses5-dev
local# sudo apt-get install msmtp
local# sudo apt-get install git-core
local# sudo apt-get install git-email
local# sudo apt-get install debhelper

Setup msmtp, we take gmail account as an example. You shall check with your ISP or email service provider for the details.

local# vi ~/.msmtprc
# Set default values for all following accounts.
logfile ~/.msmtp.log

# gmail
account gmail
protocol smtp
user <your_id_in_gmail>
password <your_passwd_in_gmail>
port 587
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
syslog LOG_MAIL 

# Set a default account
account default : gmail

Get the lastest source code from ubuntu server

We takes Jaunty kernel tree as an example. You can check KernelTeam/KernelGitGuide for the details.

local# git clone git://

If you want to work on different ubuntu kernel tree, you can clone linux kernel mainline as reference, that will reduce the download for saving your time.

local# git clone git://
local# git clone --reference linux-2.6 git://
local# git clone --reference linux-2.6 git://

Prepare your public tree

You can public your commit with any git server. So that the kernel maintainer could easily have your commit with your git server.

If you do not have a zinc account, please skip this section.

We use as an example.
Prepare your git tree on

      * access into *
zinc# git clone --bare -l -n -s /srv/
zinc# vi ubuntu-jaunty/.git/description # Give a short description of your tree
zinc# mv ubuntu-jaunty/.git /srv/<your_id_on_zinc>/my-jaunty.git
zinc# rmdir ubuntu-jaunty

Setup a remote on your local tree, so you can push the commit on your local laptop to zinc

local# git remote add zinc \

Working with your local tree

local# git checkout -b new_branch_1
       * Working with codes *

Commit changes

local# git commit -s -e -F debian/commit-templates/patch <files_modified>

We have several commit message templates in debian/commit-templates. You shall choose them according to your modify.

Sending your patch to mail list

Prepare your patch file

local# git format-patch -1 --cover-letter
local# vi 0000-cover-letter.patch # Modify the summary and subject and From
local# vi 0001-xxxxxx.patch .... # Modify anything here

Send to mail list

local# git send-email \
           --no-chain-reply-to \
           --suppress-cc all
           --smtp-server /usr/bin/msmtp
           --from <your_email_address>
local# git send-email \
           --no-chain-reply-to \
           --suppress-cc all
           --smtp-server /usr/bin/msmtp
           --from <your_email_address>

Send the request-pull to mailing list

Push your changes to your git tree on zinc

local# git push zinc new_branch_1

So that everyone could easily have your changes. Kernel tree maintainers could easily pull changes from your public git tree to the mainline.

Generate your request-pull summary

local# git request-pull \
           <lastest SHA before your commit> \
           git://<your_id_on_zinc>/my-jaunty.git \
           > new_branch_1-request-pull.txt

The request-pull messages tells kernel tree maintainers where they can pull your changes, and summary of the changes

Send the summary to mail list

local# git send-email \
           --no-chain-reply-to \
           --suppress-cc all
           --smtp-server /usr/bin/msmtp
           --from <your_email_address>

KernelTeam/KernelSimpleGuide (last edited 2010-11-05 19:50:01 by 12)