Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Learning kernel programming with netbsd



>  Then pick some reasonably small project (from the projects list on the
>  web site, or something of your own; historically a lot of people begin
>  by writing a device driver for some piece of hardware) and sit down to
>  get that working. And don't be afraid to ask for help.

Well, my dvd/cd rw device doesn't seem to be detected.
I shut acpi off, but that didn't help. Secretly I was hoping I needed to
modify a device driver, which would be cool. Maybe I should start there.
However, I suspect this may be too complicated for me as a first project.
I'm not sure. How do I start assessing? And would it be simpler
to work this out in i386 -current, instead of AMD64 -current?

                                                          Michael Litchard
On 6/29/08, David Holland <dholland+netbsd%eecs.harvard.edu@localhost> wrote:
> On Sat, Jun 28, 2008 at 12:48:36PM -0700, Michael Litchard wrote:
>
>  > The end goal here is to start making contributions to -current.
>   > Here's where I am at now.
>   > I have done some x86,RISC (using SPIM) and AVR assembler programming.
>   > I know C, and how to construct the data structures typically discussed
>   > in a first data structures class.
>   > so, given that, would anyone be willing to give me a series of tasks
>   > that will prepare me to meet my goal?
>
>
> I would say the first step is to learn a bit about how kernels are set
>  up; an OS textbook or the daemon book might help. (You can find this
>  all out by reading code, but there's a lot of code, and the high-level
>  organization isn't always that easy to see.)
>
>  Learn how userland interfaces to the kernel; read some of the more
>  obscure section 2 man pages and write a program that uses one or two
>  low-level features. For a few of the less obscure system calls (e.g.,
>  read, lseek) read the code in the kernel to see how the implementation
>  works and where things go.
>
>  Add some hacks to the kernel just for practice - e.g. add a new system
>  call that causes the kernel to print "hello" to the console. Or
>  something like that. You'll never commit this but it'll get you some
>  practice building and running test kernels.
>
>  Then pick some reasonably small project (from the projects list on the
>  web site, or something of your own; historically a lot of people begin
>  by writing a device driver for some piece of hardware) and sit down to
>  get that working. And don't be afraid to ask for help.
>
>  When we teach students this stuff we give them a toy OS with key
>  pieces missing or half-written and have them write those pieces. You
>  can't do that with NetBSD (the pieces are all already there) so you
>  have to pick projects from less fundamental parts of the system.
>
>  You could also do the toy OS thing yourself first and then move across
>  to NetBSD.
>
>
>  --
>    - David A. Holland / dholland+netbsd%eecs.harvard.edu@localhost
>


Home | Main Index | Thread Index | Old Index