I hope you are doing well. My name is Ghaith Dabboussi, and I’m interested in applying for the "emulating missing linux syscalls" project for Google Summer of Code 2025.
I have experience coding in C and some knowledge of operating systems. While I haven’t worked with NetBSD’s compatibility layers before, I have been out of curiousity researching compat_linux
and how it translates Linux syscalls to NetBSD equivalents. I’ve reviewed the NetBSD documentation and source code, and I am eager to contribute.
I understand that the project involves identifying missing Linux syscalls in NetBSD’s compact_linux
layer and implementing them. Here’s my rough plan as a newcomer :
1.Familiarize myself with the existing compat_linux
layer: I’d start by diving into the NetBSD source code related to compat_linux
. My goal would be to understand the current syscall translation mechanism thoroughly, especially focusing on identifying the parts where syscalls are already being translated, and where gaps exist.
2.Analyze a Linux binary: After identifying the existing syscall translations, my next step would be to find a Linux binary that is not currently supported by compat_linux
. I plan to trace the system calls made by this binary, paying attention to missing syscalls and their expected behavior in a Linux environment.
3.Identify missing syscalls: By testing different binaries, I would create a list of missing syscalls that are critical to running common Linux applications. I would prioritize these syscalls based on their importance to application functionality (e.g., clone()
, futex()
, epoll_wait()
).
4.Implementation and Testing: My approach would involve iterating between implementing these syscalls and testing them in a real Linux binary context. Initially, I would tackle simpler syscalls that are more isolated in their functionality to ensure quick learning and testing.
But since I’m new to working with NetBSD, I expect there will be a learning curve, particularly when understanding how NetBSD structures its kernel modules and syscall implementations. Given this, I would greatly appreciate your guidance on the following questions to make sure I’m on the right track:
1.Given that NetBSD already has some Linux syscalls implemented in compat_linux
, how would you recommend integrating new syscalls into the existing translation layer? Would we be working directly within the current syscall structures, or is there room for additional abstraction?
2.As someone new to NetBSD, I’m curious what tools or workflows you’d recommend for tracing syscalls that fail during Linux binary execution. Would tools like ktrace
be sufficient, or is there a more NetBSD-specific approach
I would love to hear your answers and thoughts on whether this is a good approach. Also, do you have any specific Linux applications that currently fail on NetBSD that could serve as a useful test case for this project?
Thank you for your time! I look forward to your feedback.
Best regards,
ghaith
dabboussighaith47%gmail.com@localhost