Jonathan Cameron is a rising senior at Boston University studying Computer Engineering. He spoke with the Red Hat Research (RHR) team about his internship project and why this project is important for future interns working on the Linux kernel.
RHR: Jonathan, how did you come across Red Hat?
I was in the operating systems class at Boston University with Professor Manuel Egele. Larry Woodman from Red Hat was a guest lecturer and would offer his expertise on the subject matter. So, we got to know him through that. At the end of the semester, Larry stood up and said, “Hey, if you want an internship or you’re interested in operating systems, send me an email with your resume and I’ll get back to you.” So I went ahead and did that. And then a few weeks later, I got an email back saying, “Hey, if you’re still interested,” which I was, “we’ll move forward and get you signed up for the internship.” I was really interested in the operating systems class and the opportunity to actually work on a real project rather than the model scenario from class was exciting.
RHR: Congratulations! Most people have not done a virtual internship before so I’d be curious to know what the experience has been like for you so far?
I think it’s quite good. It gives a bit of freedom to it. I’m currently in the UK and it’s not an inconvenience working Boston hours. It works out actually quite well. I can exercise in the morning and then work later into the evening.
RHR: Have you had a chance to interact with the other interns?
Yes. I’m on the Red Hat intern chat group. Even though I’m the only intern working on the kernel project, there is some great interaction on the chat and I’ve made a couple of friends.
RHR: Okay. That’s great. I think that’s a good segue to talk about the project you’re working on.
During the first month of my internship, I put together a guide for future interns to provide base knowledge of what to expect when working on the kernel. It’s like a kernel workshop that we did in the operating systems class. And then I’ve compiled it with some other things to create an exercise that will help interns become familiar with building and installing their own Linux kernel. And then also adding loadable modules, system calls, and editing the/proc file system with counters on the page-cache hits and misses.
RHR: Why is this important?
Well, I think if I was thrown straight into the actual project that I’m working on, I would be in quite deep water. So this exercise is very useful for anyone to familiarize themselves with the environment they’ll be working with. Like I said, classes are good but it’s not like the real world. For instance, this was the first time I’d seen the system call table. I’d never implemented my own in the past. And as primitive as it is in the workshop, this exercise walks users through the steps they’d need to perform to get a new syscall into the kernel. If I hadn’t had that, I wouldn’t know what I was doing. That’s what makes it useful and what makes it important.
My project specifically focuses on debugging. If there’s an error returned in the kernel, it could occur in all sorts of places. So what I’m going to be adding is an option to show the stack, like dump the stack out on the kernel to show where the error occurred. This will make it easier to debug things.
RHR: What’s the most exciting part of this project?
I’m enjoying getting my hands dirty with the source code, looking through source code files, and rebuilding and reinstalling my kernel. This exposure is great.
RHR: Based on your experience, what advice would you share with students who are seeking internships?
In my case, having Larry lecture in the operating systems class was really good. This happens every now and again with me as I’ll just stumble across something because someone will say, “Hey, if you want to check this out, send me an email and we’ll get you included on it.” And so I go and give my name and email address. And sometimes there’s positive feedback. So, I’d say, if there’s an opportunity, go and take it…You miss a hundred percent of the shots you don’t take,
RHR:That’s very good advice Jonathan. Thank you.
To get started on Linux kernel programming and debugging, Jonathan’s mini course labs can be found here.