Monday, August 11, 2008

Post zero


Welcome to my world of Linux!

Linux is going to be my bread and butter, inspiration and aspiration from this point onwards. Well, actually it has been my bread and butter for quite some time (almost 2 years) but then I realised that the cheese and cake from my share was being siphoned off by someone else. So, I quit my job some time back and have decided that even I get only bread using Linux, SO LET IT BE!

As for my relation with Linux, it started as early as 1994 when I entered college and we were exposed to a lab that was running on Linux stations (working as distributed servers). User login was common for all the stations, so it was quite convenient. But using Linux at that point remained only for doing assignments of programming and browsing the Internet using Netscape Navigator or even text-based browser Lynx (
), just for fun. Linux was just an OS for me and I never bothered to learn what actually Linux does during my college lab days. Things have not gone beyond this stage for a majority of computer users that I have seen till date only difference being that they are used to W******.

Next level of Linux encounters happened when I started working on my first job at Midas Communications. Here I was expected to port certain system software written for MSDOS into Linux. This was the first time I looked beyond the desktop or the standard shell commands of Linux. I used cc, gcc, Makefile and Shell scripts to compile the C programs that I wrote and others wrote. Little later I got the chance to work at device drivers for serial and parallel ports in Linux for standard and proprietary hardware interfacing software. All this was great and looking good for me. I started with SlackWare Linux, then moved on to RedHat 6.2 and then on to RedHat 7.2. I was asked to write Shell scripts to install applications and servers and other scripts too. Using the Dialog tool I created GUIs (well in those days text based GUI was also appreciated alot!) for several projects.

After this for a few years my focus shifted fully to Assembly based firmware development and Linux remained in my work only for use of Shell scripts and an occasional C app for random work. Then came a big opportunity where a new board was to be ported to Linux. We chose a commercial version of Linux and started the work. This was probably my first exposure to Embedded Linux. I worked a little on Das U-Boot for the bootloader to recognise the Flash EEPROM on our board. Then again I moved on porting Assembly code to C code for porting into Linux. Worked on integration of the applications into the Linux filesystem and wrote scripts to auto-run the applications on boot. Testing was a standard thing that we were always doing. After about 6-7 months of work I moved out of this project and again away from Linux based development and for most part of my remaining stay in Midas, things stayed this way.

All this changed when I moved to BroVis Wireless Networks. My first work was to take over the existing WiFi products that were running with VxWorks. I was new to VxWorks and I learned enough to understand, teach and fix bugs in the existing stack of code. Then the BIG opportunity came to port the boards from VxWorks to Linux. I was back in the Linux loop and for good this time. I got opportnity to work on the RedBoot bootloader for modifications for our hardware board and it was a good learning for me. Now that I was the Team Lead, my work was not only to learn but also teach what I learn to others. So, training others on Linux became regular part of my work. I worked with kernel version 2.4.25 initially with RedHat 9 as the host development environment. While porting the boards to Linux, I got to work on kernel optimization and root file system (RFS) development as there were lots of applications to be integrated for the porting to be complete. MadWiFi drivers were used for the wireless interface drivers. I used BusyBox for integrating the usual utilities into a single executable. For CLI the BusyBox shell was used to integrate all the functionalities. I integrated Thttpd web server for setting up the web based configuration GUI. Played with lots of Shell scripts, JavaScript, CGI and C programming to create the full GUI interface. One of the major work that I did was Web-based software upgrade in which the kernel and RFS would be upgraded without changing the configurations present on the system. Later I also integrated the udhcpd for setting up the DHCP server on board as the BusyBox dhcpd was not working as per our expectations. This project was successfully completed and tested in field for improved performance in packet and network handling. After this I handled several Linux based Embedded products in WiFi domain and it was a pleasure to see Linux making them work so beautifully!

Soon (after 2 years in BroVis) I decided to move out of BroVis and go freelance. This was something I had been thinking for quite sometime and I felt that NOW I could do it. So, I did it and here I am writing a blog on my encounters with Linux over the last nine and half years. I am sure that Linux will be there with me for a long long time to come. Hopefully I would be able to do what I have thought i.e. to see Linux everywhere.

I will keep writing on Linux, hopefully more regularly than my other personal blog.

See you in my next blog.