On Mon, Feb 24, 2014 at 6:43 AM, freeman <freeman.zhang1992@xxxxxxxxx> wrote: > Hi, > 2014-02-24 01:24, subham soni : > > Hello, > I am a newbie to kernel development. I would like to develop my own > kernel from scratch. From where should I start from? I have a good > experience of the commands in Linux (Ubuntu,Fedora,Debian,Slackware). I > googled out and I came to know that I should start from Device Drivers. Now > which device driver should I code? Or should I master Shell Scripting? For > developing a kernel (my aim here would be to increase the battery life, > since most laptops have only 1.30 hrs or 2.00 hrs in Linux OS) and 3.00 hrs > in Windows Environment. How should I start and from where? First learn about how compilation is done. How the program is actually executed. Learn about linker scripts, you'll need that black magic art that you'll definitely going to need. With this information you can at least understand the role BIOS play and how bootloader comes into play. Before your kernel coding starts i think you should at the very least be able to replicate a dummy bootloader, just to motivate yourself :P. Intel manuals (System programmer) would be your guide if you are doing this for PC. Last but not the least, test your code as a program first on PC. Make functions that are generic and could work with the arguments you pass to them. So with that said you can very easily create dynamic memory management code and test it as a module, then integrate it with kernel. You must always use parameters and don't assume anything. As your each module gets ready then integrate it with your kernel. You'll need to write some test programs as well so as to know that it actually works. Break it down into manageable pieces first before you start coding!. There would be a lot of code required before you can just print Hello World using your own printk or printf. Some resources you can google are osdev wiki, lots of info but please don't copy paste understand it first and then try to write by yourself. You'll learn alot by doing yourself. > > > _______________________________________________ > Kernelnewbies mailing list > Kernelnewbies@xxxxxxxxxxxxxxxxx > http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies > > I read some books about how to DIY an OS . Of course it's simple and crude, > but it's a good start, I think. > > Hidemi Kawai, Homemade Operating System Within 30 Days > Yuan Yu, Operating System From Scratch (I don't know if there is an English > edition. The project from this book is on GitHub: > https://github.com/yyu/osfs00) > > " There are many ways to learn OS, but I believe the best way is to learn by > practice. There are many open source OS code, but the code bases are huge. > You will get lost in the source code labyrinth. > > There are good books, Operating System: Design and Implementation by A.S. > Tanenbaum and A.S. Woodhull for example, but they don't teach you where to > begin either. This is by far the best book if you are actually serious about it. Definitely nobody will teach you how it's actually done but it'll guide you the best. You'll have to answers on your own. > > That's why you should come here. If Tanenbaum's book is a reference, my > project series is a tutorial. Prof. Tanenbaum tells you what. I'll tell you > how." > > Above are two funny books involving me into coding and learning about OS. > However, if you're serious, please just ignore :-P > > All the best, > Freeman Zhang > > > > > _______________________________________________ > Kernelnewbies mailing list > Kernelnewbies@xxxxxxxxxxxxxxxxx > http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies > ---P.K.S -- Pranay Srivastava _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies