How-to build latest Linux kernel from Linus’ git repo on Debian

Here’s a how-to for building a recent Linux kernel on your Debian GNU/Linux box:

You will need to do all this as root. It’s serious business building new Linux kernels :)

su -

The dash after the su command makes it behave as if you had logged in as root directly, a full login environment is applied.

Make sure you have the required tools and libraries installed:

apt-get install build-essential module-init-tools initramfs-tools \
procps libncurses5-dev kernel-package fakeroot git-core screen \
zlib1g-dev

Use git to clone Linus’ latest git repo:

cd /usr/src

git clone \
  git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

cd linux

This will take a long time:

Cloning into 'linux'...
remote: Counting objects: 2725713, done.
remote: Compressing objects: 100% (412816/412816), done.
remote: Total 2725713 (delta 2286272), reused 2725359 (delta 2285962)
Receiving objects: 100% (2725713/2725713), 559.28 MiB | 3.30 MiB/s, done.
Resolving deltas: 100% (2286272/2286272), done.

Once you have the source you can checkout a specific branch. To see all the remote branches/tags:

git ls-remote

As of today the latest is v3.7-rc4, so you can use this command to get that version:

git checkout -b v3.7-rc4
Switched to a new branch 'v3.7-rc4'

You can also see what branches and tags are available here:

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=tags

Now you’re ready for configuration. I base my new kernel configuration on a known working configuration, then trim it down from there. Check to see what configurations you have in /boot:

ls /boot/config*

Configure your new kernel source using your chosen config file:

make menuconfig

Select “Load an Alternate Configuration File”, enter your config file path, for example I used /boot/config-2.6.26-2-686. Hit exit and save.

Build the kernel and package it:

make-kpkg clean

CONCURRENCY_LEVEL=9 screen fakeroot make-kpkg \
  --append-to-version=1 \
  --revision=1 \
  --initrd \
  kernel_image

make-kpkg clean cleans up the kernel source.

CONCURRENCY_LEVEL=9 translates into `make -j9` later. make -j9 means to compile things in parallel using all your processors, so adjust accordingly for your actual system. I usually go 2x the actual number of processors +1.

screen is a command used to run another command in a virtual screen. The new virtual screen doesn’t end if you disconnect. `man screen` if you’re not familiar, it’s a very useful tool.

fakeroot provides a fake root environment in which to build a package.

make-kpkg is a kernel building and packaging tool.

The –append-to-version is whatever you want, I increment mine by one every time I build a new kernel, and usually start over when Linus releases a “stable” kernel.

The –revision is whatever you want, I set this simply for a shorter package name.

The –initrd option makes dpkg build a new initrd image when you install the kernel package later. An initrd image contains drivers your system needs before your kernel loads, for example, raid and ext4.

Build a new kernel using a distro’s (Debian in my case) default config takes a while. Everything will usually work on the first try using a distro config since everything is built as modules as much as possible, and all modules get built. You stand a good chance of successfully booting a new kernel built this way. Later you can remove stuff from the config and rebuild. Wash, rinse, and repeat until you get your kernel config down to just the hardware you actually have in your system.

Install the new kernel:

cd ..

dpkg -i linux-image-3.7.0-rc21+_1_i386.deb

Reboot.

When your system comes back up..

> uname -a
Linux venus.localdomain 3.7.0-rc21 #2 SMP Mon Oct 24 21:53:19 CDT 2012 i686 GNU/Linux

10 Reasons to Record Your Telemarketing Calls

Common sense states the most integral part to having a great sales team is great recruiting. Money is spent finding the best in your given field. Time is spent vetting recruits and eliminating those that do not fit. Money, time, and energy are all used preparing your new-hires for success. In spite of how integral all of this may be to the success of any sales organization it is not uncommon for a “rock star” recruit to become a burden on a team. For many the problem does not arise until after all of these resources have been spent. Sales start to lag and managers are left asking themselves, “What can I do to improve my situation?” Many choose to simply move on to the next recruit and write it off as a loss. However this strategy does not solve the problem. It simple alleviates the symptoms. Due to the nature of business most new-hires in sales typically cut their teeth over the phone. Sales people are hired based on conversational skills, relationship building aptitude, and the ability to close. Sales people are fired based on lack of follow-through in one of these key areas. During this teeth-cutting phase the conversational skills are the most important focus and the easiest to correct. Modern technology can solve this problem through one simple action: recording calls.

Read More

Visit CallProof.com

New CallProof Site Design

CallProof Django Source

I made a gourse movie from CallProof src :)

Google Single Sign On using Django

Here are the URLs for creating a Google Single Sign On.

Access Google OAuth via your web server:

http://code.google.com/apis/accounts/docs/OAuth2WebServer.html

Google Access Tokens:

https://accounts.google.com/b/0/IssuedAuthSubTokens

Google APIs:

http://code.google.com/apis/gdata/docs/directory.html

Android OAuth:

https://sites.google.com/site/oauthgoog/oauth-practices/mobile-apps-for-complex-login-systems/samplecode#TOC-3.2.-Android

Service Connection Example:

http://developer.android.com/training/id-auth/authenticate.html#ConnectToService

Google OAuth Playground:

http://googlecodesamples.com/oauth_playground/

Google Data AuthScopes:

http://code.google.com/apis/gdata/faq.html#AuthScopes

Google Python Client Library:

http://code.google.com/p/google-api-python-client/

Google Oauth2 Login:

http://code.google.com/apis/accounts/docs/OAuth2Login.html