What Next After Char, Block, Serial & Parallel Drivers
Hello, Finally I can say I have completed learning the following (to a certain extent) -C and Data structures -Operating system concepts ( covered in my undergrad course) -Linux kernel Development - Robert Love -Linux Device Drivers - Partially (just finished Char, block, serial & parallel ) A book called "Essential Linux Device Drivers" - It looked rich a first look but I could go anywhere with it considering I didn't have the required Hardware. I have now cut my teeth into some bit of kernel but still I am not sure where to go from here. I know things but I am not happy or satisfied with what I now. I don't have the feel of a professional device driver programmer. Here are my questions - two different questions and necessarily not connected to each other What should be the next steps besides looking for a job. Getting a new hardware to write a driver I guess is not feasible all the time. Any ideas During my Linux journey i realized Linux network stack development interests me alot but a friend of mine told me to stay away from it as its very vast and would consume me. Any ideas how should i approach it if I want to learn it from practical point of view. I am not looking for the names of books or resources I have all of them including the book understanding Linux network internals. I want to learn it from a practical point of view where in I can be actively involved unlike my status today in the world of device drivers. Thanks!
From: kernelnewbies-bounces@kernelnewbies.org [mailto:kernelnewbies-bounces@kernelnewbies.org] On Behalf Of Sasha Mckinsey Sent: Tuesday, August 11, 2015 10:48 AM To: kernelnewbies@kernelnewbies.org Subject: What Next After Char, Block, Serial & Parallel Drivers Hello, Finally I can say I have completed learning the following (to a certain extent) -C and Data structures -Operating system concepts ( covered in my undergrad course) -Linux kernel Development - Robert Love -Linux Device Drivers - Partially (just finished Char, block, serial & parallel ) A book called "Essential Linux Device Drivers" - It looked rich a first look but I could go anywhere with it considering I didn't have the required Hardware. I have now cut my teeth into some bit of kernel but still I am not sure where to go from here. I know things but I am not happy or satisfied with what I now. I don't have the feel of a professional device driver programmer. Here are my questions - two different questions and necessarily not connected to each other What should be the next steps besides looking for a job. Getting a new hardware to write a driver I guess is not feasible all the time. Note sure why you would consider this not feasible. A lot of consumer level hardware is both relatively inexpensive and lacks Linux support. Just this weekend I was trying to get the video on my Lenovo laptop running Ubuntu to output on its HDMI port to my TV. It didn’t work and a bit of googling showed that others had the same problem with that video chip. That’s just one example. During my Linux journey i realized Linux network stack development interests me alot but a friend of mine told me to stay away from it as its very vast and would consume me. Any ideas how should i approach it if I want to learn it from practical point of view. I am not looking for the names of books or resources I have all of them including the book understanding Linux network internals. I want to learn it from a practical point of view where in I can be actively involved unlike my status today in the world of device drivers. The networking stack is very big and very mature. Making contributions there above the driver level is likely to require a lot of experience and competence. A lot of consumer 802.11 hardware also lacks Linux support so if you want to cut your teeth in the networking stack, network drivers for unsupported hardware are a good place to start, though you may find yourself stymied by lack of documentation on the HW from its vendor. Now if you are really ambitious, try to figure out how to extend tc to support more than 64K classes per qdisc. That would require no special hardware but would require a great deal of dedication. How many lifetimes do you have available for this effort? 8^) Jeff Haran Thanks!
Thanks Jeff! Just a thought. Will it be a good idea to get my hands dirty with socket programming (L2,L3,IPsec,TCP/IP) in the user space to get some experience & understanding and then perhaps dive into kernel network stack at a later stage. Thanks for all your help Sasha On Tuesday, 11 August 2015 11:45 PM, Jeff Haran <Jeff.Haran@citrix.com> wrote: From:kernelnewbies-bounces@kernelnewbies.org [mailto:kernelnewbies-bounces@kernelnewbies.org] On Behalf Of Sasha Mckinsey Sent: Tuesday, August 11, 2015 10:48 AM To: kernelnewbies@kernelnewbies.org Subject: What Next After Char, Block, Serial & Parallel Drivers Hello, Finally I can say I have completed learning the following (to a certain extent) -C and Data structures -Operating system concepts ( covered in my undergrad course) -Linux kernel Development - Robert Love -Linux Device Drivers - Partially (just finished Char, block, serial & parallel ) A book called "Essential Linux Device Drivers" - It looked rich a first look but I could go anywhere with it considering I didn't have the required Hardware. I have now cut my teeth into some bit of kernel but still I am not sure where to go from here. I know things but I am not happy or satisfied with what I now. I don't have the feel of a professional device driver programmer. Here are my questions - two different questions and necessarily not connected to each other What should be the next steps besides looking for a job. Getting a new hardware to write a driver I guess is not feasible all the time. Note sure why you would consider this not feasible. A lot of consumer level hardware is both relatively inexpensive and lacks Linux support. Just this weekend I was trying to get the video on my Lenovo laptop running Ubuntu to output on its HDMI port to my TV. It didn’t work and a bit of googling showed that others had the same problem with that video chip. That’s just one example. During my Linux journey i realized Linux network stack development interests me alot but a friend of mine told me to stay away from it as its very vast and would consume me. Any ideas how should i approach it if I want to learn it from practical point of view. I am not looking for the names of books or resources I have all of them including the book understanding Linux network internals. I want to learn it from a practical point of view where in I can be actively involved unlike my status today in the world of device drivers. The networking stack is very big and very mature. Making contributions there above the driver level is likely to require a lot of experience and competence. A lot of consumer 802.11 hardware also lacks Linux support so if you want to cut your teeth in the networking stack, network drivers for unsupported hardware are a good place to start, though you may find yourself stymied by lack of documentation on the HW from its vendor. Now if you are really ambitious, try to figure out how to extend tc to support more than 64K classes per qdisc. That would require no special hardware but would require a great deal of dedication. How many lifetimes do you have available for this effort? 8^) Jeff Haran Thanks!
-----Original Message----- From: Sasha Mckinsey [mailto:iamsasha01@yahoo.com] Sent: Tuesday, August 11, 2015 11:34 AM To: Jeff Haran; kernelnewbies@kernelnewbies.org Subject: Re: What Next After Char, Block, Serial & Parallel Drivers
Thanks Jeff! Just a thought. Will it be a good idea to get my hands dirty with socket programming (L2,L3,IPsec,TCP/IP) in the user space to get some experience & understanding and then perhaps dive into kernel network stack at a later stage.
Thanks for all your help
Sasha
That is certainly a more typical way to get started. Plus if one of your goals is to get a job in software development, there will probably be more entry level positions doing user space development than in kernel space (a lot of companies don't do anything WRT development in the kernel, there's a good business case for them staying out of it). Do understand that the communications layers you refer to (L2,L3,IPsec,TCP/IP) are typically implemented in the kernel rather than user space, but even in user space development there will usually be plenty of opportunity to learn what's going on in those layers at the protocol level when the code you write doesn't behave the way you expect it to. If they aren't your friends now, tcpdump and Wireshark will be. Jeff Haran
On Tue, 11 Aug 2015 17:48:16 -0000, Sasha Mckinsey said:
What should be the next steps besides looking for a job.
That's for *you* to decide, not for us to suggest. Do authors go around asking "What sort of book should I write?" No - because unless the author was interested in writing a gothic horror book, or a romance novel, or steampunk, or what have you, it's going to be crap. And if they *were* interested in writing a book in a given genre, they'd not be asking for suggestions. So go back and look at why you're interested in kernel hacking in the first place, and base *your* answer on that.
participants (3)
-
Jeff Haran -
Sasha Mckinsey -
Valdis.Kletnieks@vt.edu