The objective of the Software Engineer is to ensure high-quality support at a kernel/near-kernel level for Ubuntu on
hardware from Canonical's various hardware partners. We work across all the platforms Ubuntu is available for: Ubuntu Core embedded devices such as IoT hardware, notebook, desktop PC and 2-in-1 convertibles.

The Software Engineer will focus on hardware enablement/bring-up, device driver integration/maintenance, kernel backport, bug fixing, patch maintenance, kernel maintenance, upstream development in support of Ubuntu and the larger Linux ecosystem.

Key Responsibilities for the Software Engineer:

  • Low-level hardware debugging and system enablement/bring-up.
  • Problem analysis and resolution in areas of the Linux Kernel, plumbing layer and the bootloader
    (e.g. GRUB2, U-Boot).
  • Communication and collaboration with Ubuntu Kernel team and Linux community to resolve
    kernel issues.
  • Communication and collaboration with others to resolve software and firmware issues.
    Interface with hardware vendor partners to resolve kernel and device driver issues.
  • Perform day-to-day activities in a globally distributed team through self-discipline and self-motivation; delivering according to a schedule.
  • Execute updates and patches for kernel drivers and subsystems to meet these requirements within Ubuntu releases.
  • Meet these kernel support goals in accordance with Ubuntu quality targets; release schedules, freeze dates, and support policies.
  • International travel may be required.

Required Skills and Experience

  • Experience with low-level hardware debugging and system bring-up/enablement on x86-based
    and ARM-based platforms.
  • General Linux kernel development skills (e.g. kernel debugging, C proficiency, git experience).
  • Familiarity with debugging common kernel, bootloader, firmware and plumbing layer issues,
    both with or without physical hardware, on PC, mobile and embedded systems.
  • Development experience with hardware-related subsystems of the Linux kernel and relevant
    portions of the kernel and plumbing layer.
  • Experience in kernel and device driver backporting.
  • Ability to communicate in English, both written and oral.

Desired Skills and Experience

  • Particular focus in one or more linux kernel subsystems is highly desirable.
  • Familiarity with ARM boot processes (e.g. U-Boot, RedBoot) and ARM bring-up experience is
    highly desirable.
  • Familiarity with ACPI and how the interface is used in common cases (e.g. S3, S4)
  • Familiarity with Android product development and architecture.
  • Experience with open source development model, tools and methodology, especially those in
    common-use for development of the Linux kernel such as: Launchpad, Bugzilla, github, IRC, and

What Canonical Offers:

  • Learning and Development
  • Annual Compensation Review
  • Recognition Rewards
  • Annual Leave
  • Priority Pass for travel
  • Flexible working option

Apply for this Job

* Required
File   X
File   X