16 dépôts
Resources for Linux kernel module development, drivers, and embedded Linux systems.
Explore 16 awesome GitHub repositories matching part of an awesome list · Linux Kernel Development. Refine with filters or upvote what's useful.
This project is a technical reference and educational guide focused on the internal architecture of the Linux kernel. It serves as a low-level systems programming resource and documentation for operating system internals, detailing the implementation of core mechanisms within the kernel source code. The materials provide a detailed study of the Linux kernel, tracing behavior through actual C source and assembly. It specifically covers the progression from the bootloader and decompression to the final kernel entry point, alongside the management of hardware interrupts and symmetric multiproces
In-depth guide to Linux kernel internals.
This project is an open source Linux GPU kernel driver implemented as a loadable kernel module. It functions as a GPU firmware loader, providing the low-level driver services necessary to enable direct communication between the operating system and graphics processing units. The driver utilizes a dual-module architecture that separates GPL-licensed kernel code from proprietary firmware blobs. This system extracts and links signed binary firmware images into the kernel modules at driver load time. The project provides driver support for Turing-architecture GPUs and all subsequent newer hardwa
Implements a loadable kernel module to extend the Linux kernel for graphics hardware communication.
This project is a Linux kernel designed for Windows Linux integration, providing the underlying operating system kernel required to execute binary files and applications within the Windows Subsystem for Linux. It utilizes hypervisor-based virtualization to run a full kernel within a lightweight utility virtual machine managed by a Windows host. The repository enables the customization and compilation of the kernel from source. This allows for the modification of system behavior, the addition of specific drivers, and the tailoring of hardware compatibility for virtualized environments. The sy
Allows modifying and compiling the Linux kernel to add specific features or drivers for use within the Windows Subsystem for Linux.
This repository provides the Android device kernel and the corresponding Linux kernel source tree. It serves as the foundational codebase for managing the hardware architecture and power management of mobile devices. The project includes a comprehensive mobile hardware driver set designed to manage device-specific components, such as CPUs, GPUs, and cellular modems. The source code supports activities including Android kernel customization, custom ROM development, Linux kernel auditing, and mobile driver development.
Provides the source code and baseline for customizing the Android device kernel.
Containerization is a Swift-based framework that runs Linux containers in lightweight virtual machines on Apple Silicon Macs. It provides a native container runtime for macOS, enabling developers to execute Linux containers directly on their Apple Silicon hardware without requiring a separate Linux environment or Docker Desktop. The framework supports custom Linux kernel injection, allowing users to provide their own kernel images and select per-container kernel versions and configurations. It includes an ext4 filesystem image builder for creating root filesystems from scratch, and an OCI ima
Accepts user-provided kernel images and supports per-container kernel version and configuration selection.
This project provides a customized Linux kernel and driver suite designed to enable hardware compatibility for Surface devices. It focuses on building and patching the Linux kernel to provide driver support for proprietary hardware components that are missing from the upstream source. The system includes a secure boot kernel signing mechanism and a process for enrolling custom keys into the system firmware. This allows the execution of patched kernels while maintaining system security protections. The project covers peripheral driver support for touchscreens, styluses, and keyboards, as well
Modifies and recompiles the Linux kernel to add hardware support missing from the upstream source.
A collection of links related to Linux kernel security and exploitation
Resources for Linux kernel security and exploitation.
CppGuide is a curated collection of educational resources and practical guides focused on C++ server development, Linux kernel internals, concurrent programming, network protocols, and security exploitation. It provides structured learning paths for backend developers, covering everything from interview preparation to building high-performance network servers and understanding operating system fundamentals. The guide distinguishes itself by offering in-depth, hands-on tutorials that walk through real-world implementations, including building a Redis-like server from scratch, designing custom
Offers an in-depth guide to Linux kernel architecture, memory management, scheduling, and device driver development.
libfuse is a library and kernel module combination that enables the development of custom Linux filesystems that run in userspace rather than in kernel space. It provides a bridge between the kernel's virtual filesystem layer and a userspace daemon, allowing filesystem operations to be forwarded and handled by a regular user process. The project offers two distinct APIs: a high-level callback-driven API where filesystem operations are implemented as simple functions that return results synchronously, and a low-level API that exposes raw kernel request structures directly for fine-grained contr
Supplies headers, utilities, and build tools for creating custom userspace filesystems on Linux.
Ce projet fournit un environnement de développement du noyau Linux et une suite d'émulation système pour construire et déboguer des modules noyau et de l'assembleur bare-metal à travers de multiples architectures matérielles. Il fonctionne comme un bac à sable complet et un framework pour le développement système bas niveau, utilisant QEMU pour simuler des environnements matériels sans avoir besoin de périphériques physiques. L'environnement intègre des chaînes de compilation croisée utilisant Buildroot et crosstool-NG pour cibler les plateformes x86_64, ARMv7 et ARMv8 depuis un seul hôte. Il dispose d'un framework de débogage noyau spécialisé qui exploite GDB et KGDB pour l'exécution pas à pas et l'inspection d'état des processus noyau et utilisateur. Ses larges capacités incluent des tests de régression automatisés pour isoler les échecs de démarrage et fonctionnels via la bissection de contrôle de version, l'abstraction matérielle pour gérer les états d'alimentation du CPU et les registres système, et des primitives de test bas niveau pour l'intégrité de l'état mémoire et l'analyse d'assembleur. Le système inclut également des utilitaires pour le benchmarking de performance des commandes, la journalisation de sortie et l'amorçage d'espaces de travail conteneurisés.
Cheat sheet for Linux kernel module development.
embedded-notes is a collection of technical study guides and development notes focused on embedded Linux, Linux kernel internals, and C programming. It serves as a reference for embedded systems development and a preparation resource for technical interviews in the field. The project provides detailed documentation on writing device drivers, managing virtual memory, and understanding kernel internals. It also includes guides on IoT network protocols, such as MQTT and TCP/IP, and outlines the architectural details of chip architectures and hardware peripherals. The material covers a broad sur
Offers a collection of technical study guides for kernel drivers, bootloaders, and embedded software development.
Ce projet fournit un framework de développement pour écrire des modules de noyau Linux chargeables en utilisant le langage de programmation Rust. Il établit une méthodologie pour la programmation système sécurisée en imposant la sécurité de la mémoire et des threads au sein de l'environnement d'exécution restreint du noyau, permettant aux développeurs d'étendre les fonctionnalités du système d'exploitation tout en prévenant les erreurs courantes de corruption mémoire. Le framework se distingue par la génération automatisée d'interfaces de fonctions étrangères (FFI) typées, qui font le pont entre le code de haut niveau et les en-têtes et structures système du noyau de bas niveau. Il mappe les constructions de synchronisation de haut niveau directement sur les mécanismes de verrouillage natifs du noyau, garantissant que les données partagées restent protégées à travers de multiples threads d'exécution et contextes d'interruption. L'ensemble d'outils s'intègre aux pipelines de build natifs du noyau pour gérer la compilation et l'édition de liens du code source en objets binaires. En fournissant des abstractions sécurisées pour l'interfaçage matériel et les environnements aux ressources limitées, il prend en charge la création de pilotes de périphériques et de composants système fiables qui maintiennent des règles strictes de propriété et d'emprunt à la compilation.
Provides a framework for writing loadable Linux kernel modules with memory safety guarantees.
A C library for peripheral I/O (GPIO, LED, PWM, SPI, I2C, MMIO, Serial) in Linux.
C library for peripheral I/O in Linux.
Ce projet fournit un cursus pédagogique structuré conçu pour enseigner les rouages internes du noyau Linux et l'architecture système. Il sert de ressource de formation complète pour les développeurs, proposant des exercices pratiques en laboratoire qui couvrent les principes fondamentaux des systèmes d'exploitation tels que la gestion de la mémoire, l'ordonnancement des processus et la gestion des interruptions. Le cursus se distingue en faisant correspondre les concepts théoriques directement au code source du noyau, permettant aux apprenants de naviguer et d'analyser les entrailles du système via des tâches d'implémentation concrètes. Il facilite le développement de pilotes de périphériques matériels et de modules système en fournissant du code de démarrage et des instructions techniques dans un environnement sécurisé et isolé. Le projet soutient l'apprentissage technique grâce à un framework modulaire qui inclut la configuration d'environnements de laboratoire virtualisés et l'émulation matérielle. Ces outils permettent de construire, déployer et déboguer du code système bas niveau en toute sécurité, sans compromettre la stabilité de la machine hôte.
Guides developers through the process of writing, testing, and debugging hardware device drivers and system-level modules in a safe environment.
This is reference from 動手寫 Linux Driver
Practice exercises for Linux driver development.
Overview Current development state MLL on ARM (AArch64) Future improvements How to build Overlay bundles Runtime software GraalVM BIOS and UEFI Installation Publications Related projects Thank you!
Educational minimal Linux distribution.