This is my first query on this form. I have been working on windows c++ from last 7 years. Now I have one requirement to move on to Linux. and very new to linux. I have installed ubuntu on my system. There are lots of things are written and ebooks are available on the net. But don't know from where I should start. I want to know the Basic of the Linux first i.e. the architecture of the linux, how it works etc.
Could anybody on the forum let me know the way to proceed further?
You are correct in suggesting to learning the internals of linux before attempting to learn the normal linux programming as many of the API's in linux do not differ too much from windows therefore for any average windows programmers it should be pretty simple, there are several ways one can achieve this:
- Reading about the call mechanisms & trees of linux OS, this should help you understand how each call is reached to the kernel and then executed.
- Reading Linux Source code, I believe linux is open-source operating system therefore if you can read and understand the source you could understand why, when, what functions gradually reach kernel mode and how they reach there.
- Debugging, this is perhaps the most difficult way of learning linux OS internals however for any good reverse-engineer it should be pretty simple keeping in mind you could download & use Ollydbg (2nd best debugger, personally) for free.
Before, attempting these do be aware unless you are expected or expecting to be working inside kernel mode or developing system utilities such as Anti-Virus softwares or Disk managers softwares these are pretty much useless as normal developers barely ever use native API procedures.
If you do not like the initial idea you could read linux programming ebooks, I personally recommend Linux Programming Second Edition. by Alan Cox.
It is literally the best book one can use, in fact it contains topics ranging from Device Drivers to Internet Communication to "hello world" applications. It pretty much has all the information a hobbyist & professional programmer would need & much more...