Monthly Archives: November 2014

Configuring Mutt for Gmail server

Mutt is a very old and reliable command line mail user agent used for multiple Operating Systems including Linux.

It have lots of amazing features, very much user friendly and supports POP3, IMAP, SMTP etc.

This post is to configure gmail in mutt, since gmail is a widely used EMail system. Any Linux developer who wish to contribute to kernel should send the patches from a non-HTML based email system (bye bye web mail..). So if we have mutt configured in terminal, it is very easy to attach sources and send mail.

Configuring Gmail

1. Go to gmail web -> Settings ->Forwarding and POP/IMAP
a) Enable POP Download
b) Enable IMAP access.

2. Install mutt in your machine.

Read more

Linux Kernel / Modules Debugging Techniques – Part 1: Proc File System

When programming in kernel space, we always end up checking some variables for its value, alter the variable, dynamic input to kernel, etc. (Linux Kernel used is version 3.16 ) For most of the time to get to know the values or what is happening in a specific case, we use printk. I am pretty sure you are aware of printk (not covered in this article)  where we print outputs from kernel to console, /var/log/messages/ or dmesg. But there are more clean and persistent options where we can list the values of variables and status from kernel/module which can be accessible from user space or even input a value to kernel module during its run time. We will go through three aspects of kernel with these series of articles, which will help us to achieve the above.

1. Read and Write in proc filesystem

2. seq_file API interface to access proc files

3. debugfs

The proc filesystem

The proc filesystem is a virtual filesystem exsist only in the memory. It is created when Linux is booted and removed when machine is switched off. The primary intention of proc filesystem is to keep process and other related information in structured filesystem format for easier access. Soon it is developed to a point were development community started using it as an interface to kernel for debugging and parameter passing. Let us see how to use it for our advantage ;) To start with lets create a basic module and Makefile: simple_proc.c

#include <linux/module.h>
#include <linux/kernel.h>

static int __init init_simpleproc (void)
        printk(KERN_INFO "init simple proc\n");
        return 0;
static void __exit exit_simpleproc(void)
        printk(KERN_INFO "exit simple proc\n");


MODULE_DESCRIPTION("A simple module to see how to use proc filesystem");

Read more