Dipende dal motivo per cui lo stai facendo.
Se hai esperienza di apprendimento, dai un'occhiata a Linux From Scratch.
Se è necessario fornire un prodotto funzionante e una distribuzione Linux personalizzata è parte della soluzione, è meglio basare il proprio Linux su una distribuzione mainstream adeguata (ad esempio, Debian, SuSE, RedHat / CentOS, Fedora, ecc. ), imparando a utilizzare il loro sistema di pacchettizzazione e impostando i propri repository.
In entrambi i casi, questo non è tanto un compito di programmazione come un compito di packaging e di amministrazione del sistema: una distribuzione è principalmente un'aggregazione di software esistente, selezionata per funzionare insieme, con tutte le dipendenze gestite automaticamente (questo è ciò che i gestori di pacchetti fanno ), e di solito precompilato in binari adatti (anche se alcune distro, ad esempio Gentoo, scaricano le fonti e si compila sul sistema di destinazione).
Inoltre, se stai cercando una soluzione pratica, ci sono letteralmente centinaia di distribuzioni Linux, alcune delle quali sono estremamente personalizzabili. È probabile che tutto ciò di cui hai bisogno sia già stato fatto.