Linux Kernel Engineers (M/F)
ResponsibilitiesSiPearl is looking for Linux Kernel engineers.
Reporting to the software team manager, you will oversee:
- Work with other teams (firmware, hardware…) to understand their kernel needs and develop solutions,
- Backport or develop solutions for 1-2 kernel releases (we prefer code being in mainline),
- Help improve our automated testing infrastructure,
- Be a part of the kernel release process, helping it run smoothly,
- Communicate and interact with upstream maintainers,
- Quarterly individual review with the team members and career planning.
Job opportunity in France (Paris area, Maisons-Laffitte, Grenoble, Sophia-Antipolis) in Germany (Duisburg), in Spain (Barcelona).
RequirementsYou are or you have :
- 5 years of experience in Linux kernel development,
- Rich experience in kernel debugging or community patch submission is preferred,
- Experienced in multi-platform (x86 / arm) kernel and system development is preferred,
- Knowledge of low-level operating system and hardware primitives,
- Deep expertise in UEFI, ACPI, PCIe, and other related server specifications,
- Experience using kernel perf and/or tracing tools for resolving performance issues,
- Experienced with Software Development processes including source control, bug tracking, and design documentation,
- Solid troubleshooting and debugging skills,
- Proficient in C, assembly language, and build systems
PROFILE
- Someone adaptable, autonomous,
- Proven communications skills,
- Excellent oral and writing English communication,
- Experience working with and contributing to Open Source communities,
- Familiarity with multiple layers of the Linux stack (hardware, kernel, user space, etc.).
Fixe and variable part to be defined on experience.
ContactSend Resume/CV and cover letter to mentioning job reference: #202231
As we all know that Linux kernel is the heart of the Operating System that allows the real Operating System to function. Indeed, the Linux kernel is the most renowned open-source project ever created. Most developers around the world tend to work on GUI (graphical user interface) applications or libraries which are usually written in higher-level languages that abstract away a lot of pain from worrying about lower-level problems like memory management, file system, device driver, etc.
Meanwhile, this article is recommended to all those individuals who want to contribute to the largest open source project Linux kernel. However, Kernel development is not so easy and it requires a lot of patience and hard work. The kernel is a critical part of the operating system, so it requires a deep knowledge of the particular domain.
Let’s take a look at the required skills & approaches required to make a career as a Linux Kernel Developer”
1. Learn C Programming
Firstly, you need to learn C Programming. Most of the parts of Linux kernels are written in C and some of the parts are written in assembly. If you want to contribute to very low-level parts of the kernel then you can also learn assembly language as well. But at the initial stage, learning the C language is a must. Here are some books mentioned below that can be taken into consideration to learn C Programming:
- The C Programming Language by Kernighan and Ritchie
- Practical C Programming by Steve Oualline
- C: A Reference Manual by Harbison and Steele
You should also note that the Linux kernel does not depend on the standard C library, hence some parts of the C library are not supported.
2. Learn Data Structure and Algorithm
To become a Linux Kernel Developer / Maintainer, you’re required to have a fundamental knowledge of Data Structures and Algorithm. An algorithm is usually a step-by-step approach to solve a specific problem, whereas Data Structures is concerned with the way of organizing data. These two concepts help programmers to solve the problem within less amount of time and memory. The understanding of Data Structures and Algorithm concepts will help you in finding the optimal solution for a specific problem. Meanwhile, you can opt for various online & offline resources such as GeeksforGeeks, etc. to master the Data Structures and Algorithm concepts.
3. Learn About Operating System
Now you have learned to program. After learning programming, you have to learn about the operating system and its core concept. You can use books for learning about operating systems. Here are some of the books.
- Operating Systems: Internals and Design Principles
- Design of the UNIX Operating System
- Modern Operating Systems
4. Learn About Linux kernel
Now, you have to learn about Linux kernel internals. To learn about the Linux kernel you’re recommended to go through several renowned books. You can also read the documentation of the Linux kernel. Here are the books:
- Linux Kernel Development
- Linux Device Drivers
5. Do some Competitive Programming
To master algorithm and data structure you can do competitive programming. Now a question arises in your mind that what is competitive programming? Competitive programming is about solving problems in a small amount of time and memory limits. It is a mind sport. It teaches you how to think. It also teaches you how to solve a problem in a limited amount of time. It is very important for a competitive programmer to solve a problem in less time. In kernel development every day a problem will arise and you have to solve it in a way that the code runs fast and you have a small amount of memory. Competitive programming is very beneficial for a kernel developer. You can use GeeksforGeeks to practice competitive programming.