Close Menu
    DevStackTipsDevStackTips
    • Home
    • News & Updates
      1. Tech & Work
      2. View All

      Google’s Agent2Agent protocol finds new home at the Linux Foundation

      June 23, 2025

      Decoding The SVG path Element: Curve And Arc Commands

      June 23, 2025

      This week in AI dev tools: Gemini 2.5 Pro and Flash GA, GitHub Copilot Spaces, and more (June 20, 2025)

      June 20, 2025

      Gemini 2.5 Pro and Flash are generally available and Gemini 2.5 Flash-Lite preview is announced

      June 19, 2025

      Summer Game Fest had a bit of a “weird” vibe this year — an extremely mixed bag of weak presentations and interesting titles

      June 24, 2025

      The Lenovo Legion Go 2 gets its first release date tease, which could be accurate — but treat with the biggest pinch of salt

      June 24, 2025

      Denmark will stick with Windows — government still plans to ditch Microsoft Office

      June 24, 2025

      OneDrive user locked out of “30 years worth of photos and work” without any support — calls Microsoft a “Kafkaesque black hole”

      June 24, 2025
    • Development
      1. Algorithms & Data Structures
      2. Artificial Intelligence
      3. Back-End Development
      4. Databases
      5. Front-End Development
      6. Libraries & Frameworks
      7. Machine Learning
      8. Security
      9. Software Engineering
      10. Tools & IDEs
      11. Web Design
      12. Web Development
      13. Web Security
      14. Programming Languages
        • PHP
        • JavaScript
      Featured

      Best PHP Project for Final Year Students: Learn, Build, and get Successful with PHPGurukul

      June 24, 2025
      Recent

      Best PHP Project for Final Year Students: Learn, Build, and get Successful with PHPGurukul

      June 24, 2025

      Community News: Latest PECL Releases (06.24.2025)

      June 24, 2025

      JSON module scripts are now Baseline Newly Available

      June 24, 2025
    • Operating Systems
      1. Windows
      2. Linux
      3. macOS
      Featured

      Summer Game Fest had a bit of a “weird” vibe this year — an extremely mixed bag of weak presentations and interesting titles

      June 24, 2025
      Recent

      Summer Game Fest had a bit of a “weird” vibe this year — an extremely mixed bag of weak presentations and interesting titles

      June 24, 2025

      The Lenovo Legion Go 2 gets its first release date tease, which could be accurate — but treat with the biggest pinch of salt

      June 24, 2025

      Denmark will stick with Windows — government still plans to ditch Microsoft Office

      June 24, 2025
    • Learning Resources
      • Books
      • Cheatsheets
      • Tutorials & Guides
    Home»Operating Systems»Linux»Il Processo di Avvio di un Sistema GNU/Linux: Dalla Scheda Madre al Sistema Operativo

    Il Processo di Avvio di un Sistema GNU/Linux: Dalla Scheda Madre al Sistema Operativo

    May 8, 2025
    Il Processo di Avvio di un Sistema GNU/Linux: Dalla Scheda Madre al Sistema Operativo

    Il processo di avvio di un computer (boot o bootstrap, o più raramente booting)) è una sequenza ben definita di operazioni che trasformano una macchina spenta in un sistema completamente operativo. Questo percorso può essere suddiviso in 2 macro-fasi principali:

    1. La fase gestita dal firmware della scheda madre (BIOS/UEFI)
    2. La fase gestita dal software sul supporto di avvio (bootloader, kernel e init)

    Per semplificare la memorizzazione di questi passaggi, esiste un acronimo mnemonico: BGKI (BIOS, GRUB, Kernel, Init). Analizziamo ogni fase nel dettaglio.

    B – BIOS/UEFI: Il Firmware della Scheda Madre

    Il BIOS (Basic Input/Output System) e il suo successore UEFI (Unified Extensible Firmware Interface) sono i primi software eseguiti all’accensione del computer. Questi firmware, memorizzati in un chip sulla scheda madre, hanno il compito di inizializzare l’hardware e prepararlo per il caricamento del sistema operativo. Entrambi presentano:

    • Una componente fissa, costituita dal codice eseguibile responsabile dell’avvio del sistema.
    • Una componente variabile, utilizzata per memorizzare le impostazioni di configurazione.

    Nel BIOS, le impostazioni vengono archiviate in un chip CMOS, mentre nell’UEFI, vengono salvate in una memoria NVRAM, garantendo una gestione più avanzata e flessibile dei dati di avvio. Il codice eseguibile responsabile dell’avvio del sistema esegue le seguenti operazioni:

    1. POST (Power-On Self-Test)

    • Verifica la presenza e il corretto funzionamento dei componenti hardware fondamentali:
    • CPU (unità di elaborazione centrale)
    • RAM (memoria ad accesso casuale)
    • Dispositivi di archiviazione (dischi SSD, HDD, schede SD, ecc.)
    • Periferiche di base (tastiera, monitor)
    • Se un componente critico non funziona, il BIOS/UEFI emette un segnale acustico (beep code) o un messaggio di errore.

    2. Individuazione del Dispositivo di Avvio

    • Consulta l’ordine di avvio (boot order) configurato nel firmware.
    • Cerca un dispositivo avviabile (hard disk, USB, CD/DVD, rete).
    • Se trova un disco valido, legge i primi 512 byte del settore di avvio (MBR o GPT).

    3. Caricamento del Bootloader

    • MBR (Master Boot Record): Vecchio standard, supporta solo dischi fino a 2 TB. Il BIOS ricerca il codice di avvio nel MBR (Master Boot Record) ovvero nel primo settore (primi 512 byte) del disco configurato come dispositivo di avvio principale. Se trova un MBR valido, avvia il bootloader.
    • GPT (GUID Partition Table): Standard moderno, supporta dischi più grandi e più partizioni. L’UEFI non utilizza il MBR, ma cerca un file di avvio all’interno della EFI System Partition (ESP – una partizione FAT32 riservata per i file di avvio), normalmente situato in /EFI/BOOT/ con estensione .efi.
    • Sia il BIOS che l’UEFI caricano il bootloader (come GRUB) e gli passano il controllo, permettendo di avviare il sistema operativo scelto.

    G – GRUB: Il Bootloader

    GRUB (GRand Unified Bootloader) è il bootloader più diffuso nei sistemi GNU/Linux, ma esistono anche alternative come gli storici LILO (LInux LOader) e Syslinux o i moderni systemd-boot e rEFInd per sistemi UEFI. Questi programmi permettono di selezionare quale sistema operativo o kernel avviare. GRUB, in particolare, è installato nel settore di avvio del disco e a seconda del sistema di avvio, così si comporta:

    • BIOS e MBR: Se il sistema utilizza un BIOS tradizionale, GRUB viene installato nel MBR (Master Boot Record), ovvero il primo settore (512 byte) del disco. Questo settore contiene un piccolo codice di avvio che permette di caricare il resto di GRUB, situato nelle aree successive del disco.
    • UEFI e GPT: Nei sistemi moderni con UEFI, GRUB viene collocato nella EFI System Partition (ESP). Qui GRUB è un file eseguibile (grubx64.efi) che viene richiamato direttamente da UEFI.

    In entrambi i casi, una volta avviato, GRUB gestisce il processo di avvio del sistema con le seguenti operazioni:

    1. Caricamento del Menu di Avvio

    • Legge il file di configurazione (solitamente /boot/grub/grub.cfg).
    • Mostra un menu con le opzioni disponibili (diverse versioni del kernel o altri sistemi operativi).

    2. Preparazione del Kernel e initramfs

    • Carica il kernel Linux selezionato in memoria RAM.
    • Carica initramfs (initial RAM filesystem), un filesystem temporaneo in memoria RAM che contiene:
      • Driver necessari per accedere all’hardware (es. filesystem crittografati, RAID).
      • Script per montare il filesystem root effettivo.

    3. Passaggio dei Parametri al Kernel

    • GRUB passa al kernel i parametri di avvio (es. root=/dev/sda1 per indicare la partizione root).
    • A questo punto, il kernel prende il controllo.

    K – Kernel: Il Cuore del Sistema

    Il kernel è il cuore del sistema operativo, responsabile della gestione dell’hardware, dei processi e delle risorse disponibili. È il componente fondamentale che permette al software di comunicare con i dispositivi fisici del computer. Nel contesto dei sistemi GNU/Linux, il processo di caricamento ed esecuzione è il seguente:

    1. Decompressione e Inizializzazione

    • Il kernel, solitamente compresso (come vmlinuz), si decomprime in RAM.
    • Inizializza i driver per CPU, memoria, dispositivi di input/output.

    2. Montaggio del Filesystem Root

    • Usa initramfs per accedere temporaneamente ai dischi.
    • Trova e monta il filesystem root (es. ext4, btrfs, xfs).
    • Elimina initramfs dalla memoria una volta completato il suo compito.

    3. Creazione dei Processi di Sistema

    • Inizializza la gestione della memoria virtuale.
    • Avvia i primi thread del kernel. I thread sono processi speciali gestiti direttamente dal kernel Linux, che operano in spazio kernel (non in spazio utente) e svolgono compiti critici per il funzionamento del sistema.
    • Crea il primo processo utente: init (o systemd nei sistemi moderni).

    I – Init/Systemd: Il Primo Processo Utente

    Init (o systemd nelle distribuzioni recenti) è il primo processo avviato dal kernel Linux e ha sempre PID 1 (Process IDentifier). Il PID, assegnato dal kernel Linux con un numero univoco, identifica ogni processo in esecuzione.

    1. Lettura della Configurazione

    • Init tradizionale (SysVinit) legge /etc/inittab.
    • Systemd legge le unità (file .service, .target) da /etc/systemd/.

    2. Impostazione del Runlevel /Target

    • SysVinit usa i runlevel (0-6) per definire lo stato del sistema (es. 3 = modalità testo, 5 = interfaccia grafica).
    • Systemd usa i target (es. multi-user.target, graphical.target).

    3. Avvio dei Servizi

    • Vengono caricati in ordine:
    1. Servizi di sistema (log, cron, rete).
    2. Gestore di accesso (es. gdm, lightdm per l’interfaccia grafica).
    3. Ambiente desktop (se configurato).

    Una volta completata questa lunga fila di processi, il sistema è pronto per l’uso.

    Source: Read More

    Facebook Twitter Reddit Email Copy Link
    Previous ArticleCVE-2025-2806 – TagDiv Composer WordPress Reflected Cross-Site Scripting
    Next Article New DOGE Big Balls Ransomware Using Open-Source Tools & Custom Scripts to Infect Victim Machines

    Related Posts

    News & Updates

    Summer Game Fest had a bit of a “weird” vibe this year — an extremely mixed bag of weak presentations and interesting titles

    June 24, 2025
    News & Updates

    The Lenovo Legion Go 2 gets its first release date tease, which could be accurate — but treat with the biggest pinch of salt

    June 24, 2025
    Leave A Reply Cancel Reply

    For security, use of Google's reCAPTCHA service is required which is subject to the Google Privacy Policy and Terms of Use.

    Continue Reading

    tui mines – text-based mine sweeping puzzle game

    Linux

    Generative Engine Optimization (GEO): The Future of SEO in the Age of AI-Powered Search

    Web Development

    Stream ingest data from Kafka to Amazon Bedrock Knowledge Bases using custom connectors

    Machine Learning

    GNOME Maps – find places around the world

    Linux

    Highlights

    Ryujinx is an open source Nintendo Switch emulator

    May 23, 2025

    Ryujinx aims at providing excellent accuracy and performance, a user-friendly interface and consistent builds. The…

    SlugChess – chess with Fog-of-War and shuffled officers

    June 10, 2025

    Google’s June Pixel drop is here! 7 cool new upgrades rolling out to your phone soon

    June 10, 2025

    Microsoft releases updated HLK and VHLK for Windows 11 24H2 & Server 2025

    May 8, 2025
    © DevStackTips 2025. All rights reserved.
    • Contact
    • Privacy Policy

    Type above and press Enter to search. Press Esc to cancel.