12 dépôts
Routines that start the processor and load the kernel into a functional environment.
Distinct from System Resource Initializers: Focuses on bare-metal boot initialization, distinct from general application resource detection.
Explore 12 awesome GitHub repositories matching operating systems & systems programming · System Boot Initializers. Refine with filters or upvote what's useful.
This project is an implementation of the Arduino framework for ESP32 microcontrollers, providing a core that enables firmware development using a familiar API. It functions as a microcontroller hardware abstraction layer and a firmware toolchain integration, bridging external development environments to the hardware for compilation and flashing. The system includes an embedded real-time operating system wrapper to manage multi-core execution and task scheduling, alongside a wireless communication suite for TCP/IP networking and Bluetooth Low Energy. It distinguishes itself by providing an obj
Controls the automatic initialization and startup of primary setup and loop functions upon device boot.
This project is an educational resource for developing bare-metal operating systems and kernels from scratch on Raspberry Pi hardware. It provides a structured guide to systems programming using the Rust language, focusing on the implementation of core kernel components that execute directly on ARM-based hardware without the support of an underlying operating system or standard library. The tutorials emphasize a modular architecture that separates hardware-independent kernel logic from processor-specific and board-specific configurations. By utilizing a hardware abstraction layer and distinct
Starts the processor from a power-off state and executes the primary entry point to load the operating system kernel.
xv6 is a Unix-like educational operating system designed for teaching kernel concepts. It is implemented as an instructional kernel for x86 and RISC-V architectures, featuring a virtual memory manager and support for symmetric multiprocessing. The system is designed to demonstrate core OS principles through a simplified re-implementation of Unix Version 6. It provides a controlled environment for studying system calls, trap handling, and process lifecycles. Its capability surface covers process management, including scheduling and context switching, and memory management via page tables for
Implements routines that transition the system from the boot loader to the kernel by enabling paging and setting the stack pointer.
This project is a Linux distribution build system and deployment framework designed to compile tailored Debian and Ubuntu server images for Amlogic ARM hardware. It functions as an operating system deployer and kernel builder, providing the tools necessary to flash system images to internal or external storage and manage boot configurations on ARM boards. The system includes a specialized build pipeline for compiling Linux kernels with hardware-specific patches and out-of-tree driver modules. It also features a dual-boot partition manager that enables the backup and restoration of original An
Executes shell scripts from a dedicated system directory to handle hardware-specific configuration during startup.
seL4 is a formally verified microkernel whose C implementation is backed by machine-checked mathematical proofs of correctness, confidentiality, integrity, and availability. It enforces strict isolation between processes through hardware-enforced address space separation and a capability-based access control system, where each process holds explicit rights only to the resources it has been granted. The kernel exposes hardware resources through a minimal API of system calls that manage threads, address spaces, and inter-process communication, with synchronous IPC supporting sender-identifying b
Creates kernel objects and capabilities from a formal capDL specification to establish the initial system state.
Ce projet est une collection de documentation technique et de guides conçus comme un explicateur d'architecture informatique. Il fournit des ressources éducatives sur la façon dont les processeurs et les systèmes d'exploitation exécutent les programmes, en se concentrant sur le cycle fetch-execute et la relation fondamentale entre le matériel et le noyau (kernel). La documentation couvre un large éventail d'opérations système de bas niveau, incluant des guides détaillés sur le format binaire exécutable et liable (ELF), la gestion de la mémoire virtuelle et les opérations au niveau du noyau. Elle explore spécifiquement la mécanique de l'ordonnancement CPU, le multitâche préemptif et l'utilisation d'interruptions de minuterie pour gérer l'exécution des processus. Le matériel explique plus en détail les flux de travail de gestion de la mémoire tels que la traduction d'adresses, la pagination à la demande et le partage de pages copy-on-write. Il couvre également la sécurité et le contrôle d'accès via la gestion des privilèges du processeur et l'application des permissions de pages mémoire, ainsi que l'interface d'appels système utilisée par les programmes en espace utilisateur pour demander des opérations privilégiées au noyau. Les guides détaillent également le cycle de vie de l'exécution des programmes, de la séquence de démarrage initiale et du chargement binaire au remplacement de processus et au bootstrapping des processus userland.
Traces the boot sequence from firmware and bootloader to the final kernel initialization.
U-Boot est un bootloader embarqué qui initialise les composants matériels et charge les noyaux de systèmes d'exploitation en mémoire. Il fonctionne comme une couche d'abstraction matérielle fournissant un accès standardisé au réseau, au stockage et aux bus périphériques, tout en servant de chargeur de démarrage sécurisé et d'interface de mise à jour de firmware. Le projet se distingue par l'implémentation de séquences de démarrage sécurisées qui vérifient les signatures cryptographiques et s'interfacent avec des modules TPM pour établir une confiance ancrée dans le matériel. Il fournit en outre des capacités spécialisées pour mettre à jour le firmware des appareils via des protocoles standardisés tels que Fastboot et DFU, et agit comme un manipulateur d'arborescence de périphériques (device tree) pour configurer les paramètres matériels avant le démarrage du système d'exploitation. Le système couvre un large éventail d'opérations de bas niveau, incluant l'initialisation du CPU et du contrôleur mémoire, la gestion du cache matériel et l'exécution d'applications autonomes. Il prend en charge le provisionnement distant du noyau en récupérant des images de démarrage et des arborescences de périphériques depuis des serveurs via des protocoles réseau, et gère le comportement du système via des variables d'environnement et l'exécution de scripts de commande. Le processus de build inclut des outils pour l'empaquetage d'images de démarrage et la configuration de cibles matérielles afin d'assurer la compatibilité binaire avec des appareils embarqués spécifiques.
Loads and executes kernel images or RAM disks from memory to start an embedded operating system.
melonDS est un émulateur Nintendo DS et un émulateur d'architecture matérielle. C'est une application logicielle conçue pour simuler l'architecture système originale d'une console de jeu portable afin d'exécuter des jeux et des applications originaux sur différentes plateformes informatiques. Le projet fonctionne comme un chargeur de firmware capable d'initialiser l'environnement émulé en utilisant des dumps authentiques du BIOS et du firmware système. Cela garantit la compatibilité logicielle en répliquant l'état matériel et la séquence de démarrage du système original. L'émulateur fournit des capacités pour la préservation des jeux rétro en exécutant des ROMs de jeux originaux. Ceci est réalisé grâce à une émulation d'architecture au niveau matériel, incluant la traduction du jeu d'instructions et la simulation d'E/S mappées en mémoire.
Provides routines that start the emulated processor and load the initial system state using BIOS dumps.
Ce projet fournit des ressources éducatives et des guides techniques pour le développement de firmware de microcontrôleurs. Il se concentre sur l'écriture de code C de bas niveau qui s'exécute directement sur le matériel sans système d'exploitation sous-jacent, couvrant les fondamentaux des registres matériels, du mappage mémoire et des horloges système. Les guides détaillent la création de couches d'abstraction matérielle (HAL) pour envelopper les registres mappés en mémoire brute dans des interfaces structurées et fournissent des tutoriels pour intégrer des piles TCP/IP et des serveurs HTTP dans des environnements bare-metal. Il décrit également l'implémentation de pipelines de construction de systèmes embarqués, de la compilation de binaires avec des scripts d'édition de liens au déploiement du firmware sur des cartes physiques. Le matériel couvre un large éventail de capacités embarquées, incluant l'intégration matérielle, la configuration des registres de périphériques et la mise en place d'une planification de tâches pilotée par interruptions. Il aborde également le flux de travail de débogage des microcontrôleurs via la communication UART et la redirection d'E/S standard. Le dépôt inclut des instructions pour gérer les chaînes de compilation croisée et automatiser les builds et le déploiement de firmware.
Sets up the system vector table in flash memory to define the initial stack pointer and entry point.
unifi-common est un utilitaire de démarrage et une extension système pour le matériel réseau Ubiquiti UniFi. Il sert de gestionnaire de scripts de boot pour les appareils UniFi OS, permettant l'application de configurations personnalisées persistantes et l'initialisation de processus en arrière-plan pendant la séquence de démarrage du système. L'utilitaire fournit un framework pour automatiser la configuration du matériel réseau et personnaliser le comportement des appareils. Il y parvient en gérant et en exécutant une collection de scripts shell et de fichiers de configuration conçus pour s'exécuter au moment du démarrage. Le système emploie un modèle d'exécution basé sur les répertoires, scannant un répertoire de démarrage spécifique pour déclencher les scripts séquentiellement. Cette approche basée sur des hooks utilise le système de fichiers pour déterminer quelle logique personnalisée et quelles extensions logicielles doivent être appliquées au démarrage de l'appareil.
Implements a boot sequence that automatically executes shell scripts located within a specific filesystem directory.
Ce projet est un framework éducatif et une boîte à outils conçus pour développer et tester des noyaux de système d'exploitation. Il fournit un environnement structuré pour implémenter des primitives système fondamentales, notamment la gestion de la mémoire virtuelle, l'ordonnancement préemptif des processus et l'organisation du système de fichiers, en utilisant Rust et C. Le framework est spécifiquement orienté vers les architectures RISC-V et x86, servant de laboratoire pour apprendre à construire des logiciels système de base à partir de zéro. Le projet se distingue en prenant en charge à la fois le déploiement bare-metal et l'émulation matérielle, permettant aux développeurs de valider la logique du noyau sur du matériel physique ou dans des environnements simulés. Il inclut une chaîne d'outils de construction complète qui gère la compilation inter-architectures et l'initialisation du firmware, garantissant que le noyau peut être correctement amorcé et exécuté sur différentes plateformes cibles. Le système couvre un large éventail de capacités de bas niveau, notamment des couches d'abstraction matérielle qui découplent la logique système des conceptions de processeurs spécifiques et des interfaces d'appels système qui gèrent la frontière entre les applications en espace utilisateur et les services du noyau. Il intègre également des fonctionnalités d'observabilité, telles que la journalisation au runtime et la surveillance de l'exécution, pour aider à l'analyse du comportement du système pendant le développement.
Prepares the execution environment by loading firmware and establishing essential hardware-level interactions during system startup.
This project is a tutorial for developing a custom bare metal operating system specifically for the Raspberry Pi 4. It provides the guidance and resources necessary to write software that interacts directly with hardware without the use of a pre-existing kernel. The project centers on an ARM64 cross-compilation toolchain and a build pipeline that transforms source code into raw binary images. It utilizes linker scripts to define physical memory addresses and section placements, ensuring the resulting binary loads at the correct hardware entry point. The codebase covers direct hardware interf
Includes routines to initialize the processor and prepare memory stacks to establish a known functional state.