In questo articolo, creeremo la nostra semplice distribuzione linux minimale per capire come funzionano le distribuzioni linux.

Installazione dei pacchetti richiesti

Innanzitutto, prima di iniziare il processo di compilazione, sono necessari gli strumenti di compilazione e per il test. al pubblico abbiamo bisogno Per questo, dobbiamo installare i seguenti pacchetti.

apt installa build-essential bison flex libc6-dev bc qemu-kvm

Ottenere i codici sorgente

codice sorgente del kernel Linux https://kernel.org Scarica tramite.

Codice sorgente di Busybox https://busybox.net Scarica tramite.

Quindi apriamo gli archivi che abbiamo scaricato. Nell'ultimo caso dovrebbe essere come segue.

Codici sorgente e versioni spacchettate

fase di compilazione

Otterremo parti della distribuzione minimale che creeremo con le operazioni di build. Per questo busybox prima poi linux nucleo Dobbiamo compilare. La compilazione viene eseguita nella directory in cui si trova il codice sorgente. Le compilazioni potrebbero richiedere un po' più di tempo a seconda della velocità del tuo computer e potrebbero consumare molta energia.

Compiliamo prima il codice sorgente di busybox. Ancora libc Perché non ho spiegato la parte su statico (Informazioni dettagliate su questo saranno spiegate nella seconda parte). Per questo, prima make defconfig Usiamo il comando. Quindi apriamo il file .config e modifichiamolo come segue.

L'abbiamo cambiato in CONFIG_STATIC=y

più tardi make Compiliamo usando il comando.

Al termine della compilazione occupato Il nostro file dovrebbe essere creato. Per vedere se è statico ldd Possiamo verificarlo con il comando

$ ldd busybox non è un eseguibile dinamico

Ora è il momento di compilare il kernel Linux. Per questo prima make defconfig usando il comando e poi make bzImage Creiamo la nostra immagine del kernel con il comando.

Quando la compilazione è completa Kernel: arch/x86/boot/bzL'immagine è pronta (#1) dovrebbe scrivere una riga. Puoi usare il comando qui sotto per vedere se il nostro kernel è compilato correttamente.

$ file arch/x86/boot/bzImage arch/x86/boot/bzImage: Linux kernel x86 boot executable bzImage, version 6.2.7 (a@localhost.localdomain) #1 SMP PREEMPT_DYNAMIC Tue Mar 21 08:18:58 -00 2023 , RO-rootFS, swap_dev 0XB, VGA normale

prossimo nella sezione Verrà spiegato come creare e testare initramfs utilizzando il kernel che abbiamo compilato e il file busybox.