Linux Kernel Engineer
Job Title: Kernel Team: Linux Kernel Engineer
Reports to: Director of Kernel Engineering
Job Location: Americas / EMEA
Are you a software engineer with experience in Linux development looking for an opportunity to work on the Linux kernel? Do you want to work with a high-performing kernel engineering team, through all stages of the software development lifecycle, where you are challenged to solve technical problems and provide creative solutions to meet mission needs? We at Canonical are focused on providing our customers the very best experience possible, for every kernel we release for our Ubuntu operating systems. Our team’s projects provide a wide variety of opportunities to be engaged in fast-paced software engineering work, with a highly-motivated team, focused on providing superior products and services.
This is an exciting time at Canonical, with Ubuntu as the fastest growing Linux distribution, with over 20 million users in just a few years and our engineering teams growing to meet new demand. The Ubuntu project is aimed at reducing barriers to innovation globally by providing free access to well-built and well-tested open technology platform.
The Canonical Kernel Team is responsible for maintaining all supported Ubuntu Linux kernels, managing a growing list custom flavors of Ubuntu Linux kernels, tracking and contributing to upstream kernel development, as well as driving development of the upcoming Ubuntu kernel releases. One area of increased focus in Linux kernel performance, where we are expanding the team. We are also expanding the kernel Livepatch team, which allows Ubuntu customers to apply critical kernel security fixes without rebooting, enabling our mission-critical customers reduced downtime, while maintaining security & compliance standards.
As a Kernel Engineer your primary responsibility will be working with other kernel engineers on various work streams, including but not limited to customer issue management, defect patching/back-porting, building new kernels, performance, kernel Livepatch development, build and test, automated kernel testing, packaging and deployment. Our kernel team is dedicated to building and releasing new kernels on a regular release cycle, delivering high quality product of every release cycle. On this team you can expect to quickly become an integral contributor on one of the most important parts of the Ubuntu operating systems for our customers.
We are looking for a recently-graduated or early-career individual who is passionate about a career in Linux in general and has a strong interest in the kernel. We strongly encourage you to apply if you are a creative and innovative thinker, have a desire for an intense learning environment and like the challenges that come with developing as a Linux kernel engineer.
- Must have a Bachelor of Science in Computer Science, Computer Engineering, Computer Security or related field
- Must have a GPA 3.0 or above (out of 4.0 scale)
- Must have 0-3+ years computer programming development experience
- Proof of US citizenship is required
- Collaborating regularly and proactively with a distributed team
- Learn how we develop and release our kernels via our SRU process
- Collaborate as needed with the Open Source Community and Canonical/Ubuntu partners, participating in issue management, design discussions and reviews
- Diagnose and fix functional, performance and scalability problems in the Linux kernel
- Develop, automate and run unit and functional tests for the code developed
- Development of tooling, automation and test architectures
- Delivering high-quality maintainable software for all your work
Required Skills and Experience
- General software development and debug skills on Linux
- Operating System training via classroom or previous professional experience
- Linux kernel and kernel subsystem working knowledge and experience
- Familiarity one or more Linux Shells such as Bash, commands, scripting, etc.
- Open Source Community experience such as reading kernel mailing lists, etc.
- Experience developing with Python and C programming languages
- Formal Software Engineering training via classroom or previous professional experience.
- Experience analyzing software performance issues and implementing improvements
- Experience developing and performing software unit testing
- Demonstrated ability to grasp new technologies and acquire new skills through
independent study, professional training, and interaction with other team members
- Demonstrated ability to function effectively as part of a distributed team
- Demonstrated leadership of a team or project
- Strong verbal and written communication skills
Experience with any of the following is considered a plus:
- Professional Software Engineering experience
- Professional C and Python programming experience
- Linux kernel development, testing and analysis
- Multi-threaded programming techniques
- On or more Virtualization technologies (VMWare, Xen, KVM OpenStack, VirtualBox)
- Ability to communicate at all levels inside and outside of an organization: technical team members, managers, partners and customers
- Active engagement within the open source community - kernel open source projects
- Experience with agile software development methodologies and processes
- Experience with professional software test development and automation
- Awareness of continuous integration strategies and experience
- Understanding and experience with tooling like git and gcc
- Experience with Linux kernel performance and/or Linux kpatch tooling
- Experience with Debian packaging
Canonical/Ubuntu is committed to creating a diverse environment and is proud to be an equal opportunity employer. All qualified applicants will receive consideration for employment without regard to race, color, religion, gender, gender identity or expression, sexual orientation, national origin, genetics, disability, age, or veteran status. Canonical/Ubuntu is also committed to compliance with all fair employment practices regarding citizenship and immigration status.