Sto cercando di eseguire alcuni esperimenti con Linux e cercare la più piccola distribuzione in base alle dimensioni dell'installazione. (RAM, CPU non importa davvero)
Sto cercando di eseguire alcuni esperimenti con Linux e cercare la più piccola distribuzione in base alle dimensioni dell'installazione. (RAM, CPU non importa davvero)
Risposte:
Aggiornamento: ttylinux non è mantenuto al momento! Se sei ancora interessato, inizia qui o qui .
A seconda della tua piattaforma, ttylinux è forse qualcosa per te:
Questo più piccolo sistema ttylinux ha un file system di 8 MB e funziona su computer i486 entro 28 MB di RAM, ma fornisce un ambiente completo da riga di comando ed è pronto per l'accesso a Internet.
Iniziato nel 2001 e l'ultima versione è del 05-03-2015, quindi è ancora mantenuto.
OpenWrt è anche uno dei più piccoli.
Se sei disposto a passare attraverso un processo di compilazione e ridurre le funzionalità, potresti provare buildroot . Ho creato un'installazione Linux di base (essenzialmente solo il kernel, le utility minime Busybox e un'applicazione aggiuntiva) che si adatta a un'immagine ISO da 6 MB.
La chiave qui è di ridurre la configurazione del kernel e di Busybox ("make linux-nconfig" e "make busybox-menuconfig") al minimo indispensabile, e quindi abilitare la compressione XZ sul ramdisk del kernel iniziale. Ridurre tutto ciò di cui non avevo bisogno mi ha permesso di ridurre l'intera immagine ISO fino a circa 9 MB e dopo aver abilitato la compressione XZ fino a 6 MB.
Per il kernel, ho appena controllato ciascuna opzione nel menu di configurazione e l'ho disabilitata a meno che non ne avessi specificamente bisogno. È possibile disabilitare tutti i driver di rete per i quali non si dispone di una scheda di rete corrispondente, disabilitare altro hardware meno comune che non si prevede di utilizzare (schede seriali multi-porta, joystick, dispositivi multifunzione ...) e così su. Puoi anche lasciare molti sottosistemi sulle implementazioni di base piuttosto che su quelle più sofisticate (ad esempio gli stati di inattività della CPU ACPI di base piuttosto che gli stati di inattività della CPU Intel / AMD), il che potrebbe significare che comprometterai l'efficienza energetica e il supporto hardware completo per le dimensioni del kernel. È inoltre possibile disabilitare interi sottosistemi come l'ibernazione / il supporto del sonno e il sistema audio se non è necessario utilizzarli.
In questo modo potresti risparmiare molto spazio. Ad esempio, i moduli di supporto KVM (virtualizzazione) e btrfs (che ho deciso di mettere fuori dal kernel come moduli caricabili nel caso ne avessi bisogno in futuro) occupano da soli 1,1 MB. Eliminando quei file del modulo si potrebbe arrivare a circa 4,9 MB. Potrebbe essere che occupino meno spazio integrato nel file binario del kernel, ma poi ho visto che altri moduli più piccoli hanno dimensioni di 20-100 kilobyte, quindi il tuo chilometraggio può variare.
Busybox è un singolo binario che si comporta come binari diversi a seconda di come viene chiamato dalla riga di comando, che consente di risparmiare spazio. È incluso in Buildroot per impostazione predefinita. Può comportarsi come ls, df, dd, cat, nc, bash e molti altri. Sembra un buon sostituto per quasi l'intera area utente * nix, a meno che tu non abbia bisogno di alcune estensioni di utilità specifiche che puoi trovare solo nelle versioni più complete / tradizionali (ad esempio GNU, BSD) di queste utility. Busybox è simile al kernel in termini di disabilitazione delle funzionalità: disabilita tutto tranne i binari (applet AKA) necessari e le dimensioni verranno ridotte. Il binario Busybox compilato dinamicamente occupa 512 kilobyte in Buildroot e circa 2,1 MB su Ubuntu 14.10. La versione più grande di Ubuntu supporta molto più della mia versione Buildroot, ed è "
Puoi provare alcune delle cose seguenti per ridurne ulteriormente le dimensioni, ma esegui spesso backup della directory di lavoro poiché potresti interrompere l'installazione Buildroot su cui stai lavorando e potrebbe essere necessario ricostruire alcuni dei file binari.
Comprimi tutti gli eseguibili (incluso il kernel) con il compressore UPX. Poiché UPX è progettato specificamente per eseguire la compressione eseguibile, ciò rende gli eseguibili risultanti molto più piccoli. Ma assicurati di testare tutti gli eseguibili in seguito e che funzionino correttamente.
Usa una libc diversa. Sto usando uClibc, ma ho sentito che musl e dietlib sono molto più piccoli e producono eseguibili più piccoli. Questa volta ho avuto dei problemi con il musl, ma potrebbe funzionare meglio.
Sostituisci alcune o tutte le utility di userland con asmutils . Queste utility implementano alcune delle comuni * nix utility in Assembly puro (anziché in C o altri linguaggi), che teoricamente consente un codice molto più compatto. Alcuni funzionano bene, ma alcuni possono essere utilizzati solo in modi molto basilari (ad es. "Mount" accetta parametri solo in una sequenza specifica e non sono implementate opzioni di mount specifiche per FS). D'altra parte, sono molto piccoli (la maggior parte sono compilati meno di 1 KB, quelli piccoli circa 139 byte circa). Puoi scegliere quelli che vuoi usare, quindi puoi usare questi rimpiazzi solo per i comandi su cui vuoi risparmiare spazio e mantenere versioni più ricche di funzionalità come applet Busybox.
Tomsrtbt è un paio di megabyte; si adatta a un floppy.