Linux From Scratch (LFS, letteralmente dall'inglese Linux da zero) è un libro scritto da Gerard Beekmans, Matthew Burgess ed altri. Nel libro sono fornite istruzioni su come costruire un sistema Linux a partire dai codici sorgente.
La storia di LFS inizia nel 1998, quando Gerard Beekmans, non soddisfatto di altre distribuzioni, decide di creare il suo sistema ideale personale che si adatti alle sue esigenze, e scrive i suoi progressi in un pezzo di carta. In breve tempo, il libro riscuote successo, ed attorno ad esso si sviluppa un progetto, con lo scopo di educare l'utente a costruire nel modo più pulito possibile un nuovo Sistema Operativo. Il libro è disponibile gratuitamente dal sito di Linux From Scratch, la cui versione corrente è la 6.5. Per mantenere LFS piccolo e conservare il suo scopo, è stato creato un altro libro, Beyond Linux From Scratch, che presenta le istruzioni su come proseguire lo sviluppo del sistema di base creato con LFS.
Linux From Scratch consiste in un modo per installare un sistema Linux funzionante attraverso la costruzione manuale e configurazione di tutti i suoi componenti. Tale processo è molto più laborioso rispetto all'installazione di una distribuzione pre-costruita. L'idea di base è che installare i singoli pacchetti uno per uno porterà ad una comprensione dei meccanismi interni di un sistema Linux funzionante. Inoltre, ovviamente, compilare tutto il software specificamente per la piattaforma ed architettura su cui verrà eseguito tende a far risultare i programmi più leggeri e veloci. Infine, è più facile personalizzare i pacchetti installati quando ognuno di essi è stato installato manualmente - "La tua distro, le tue regole".
Per costruire LFS, il costruttore necessita di una partizione vuota e un filesystem Linux funzionante. Per prima cosa bisogna compilare una toolchain che consiste in strumenti (tools) come gcc, glibc e Perl, usati per compilare LFS. Poi la cartella radice deve essere cambiata (chroot) a quella cassetta degli attrezzi per far partire la costruzione del sistema finale. Uno dei primi pacchetti da compilare è glibc; dopo di che il linker della cassetta degli attrezzi deve essere impostato per linkare glibc appena costruito, così che tutti gli altri pacchetti che verranno costruiti per il sistema finale saranno linkati a quest'ultimo. Non appena le versioni finali dei pacchetti sono installate, queste devono essere quelle utilizzate da bash, piuttosto che quelle temporanee nella cassetta degli attrezzi. Questo si realizza vuotando la tabella hash di bash ed impostando la cartella dei binari della cassetta degli attrezzi per ultima nella variabile di ambiente path del nuovo ambiente.
Novità dall'ultimo rilascio.
Di seguito c'è un elenco di pacchetti aggiornati dalla precedente versione:
Aggiornato a:
* Automake 1.9.6
* Bash 3.1
* Binutils 2.16.1
* Bison 2.2
* Coreutils 5.96
* E2fsprogs 1.39
* File 4.17
* Findutils 4.2.27
* Flex 2.5.33
* Gawk 3.1.5
* GCC 4.0.3
* Gettext 0.14.5
* Glibc 2.3.6
* GRUB 0.97
* IANA-Etc 2.10
* IPRoute2 2.6.16-060323
* Less 394
* LFS-Bootscripts 6.2
* Libtool 1.5.22
* Linux 2.6.16.27
* Linux-Libc-Headers 2.6.12.0
* M4 1.4.4
* Man-pages 2.34
* Ncurses 5.5
* Perl 5.8.8
* Procps 3.2.6
* Psmisc 22.2
Readline 5.1
* Sed 4.1.5
* Shadow 4.0.15
* TCL 8.4.13
* Udev 096
* Vim 7.0
* Zlib 1.2.3
Versione abbassata a:
* Groff 1.18.1.1
Aggiunti:
* bash-3.1-fixes-8.patch
* Berkeley DB-4.4.20
* bzip2-1.0.3-bzgrep_security-1.patch
* bzip2-1.0.3-install_docs-1.patch
* db-4.4.20-fixes-1.patch
* gawk-3.1.5-segfault_fix-1.patch
* gcc-4.0.3-specs-1.patch
* glibc-2.3.6-inotify-1.patch
* glibc-2.3.6-linux_types-1.patch
* groff-1.18.1.1-debian_fixes-1.patch
* inetutils-1.4.2-gcc4_fixes-3.patch
* kbd-1.12-gcc4_fixes-1.patch
* linux-libc-headers-2.6.12.0-inotify-3.patch
* MAN-DB-2.4.3
* mktemp-1.5-add_tempfile-3.patch
* module-init-tools-3.2.2-modprobe-1.patch
* perl-5.8.8-libc-2.patch
* readline-5.1-fixes-3.patch
* tar-1.15.1-gcc4_fix_tests-1.patch
* texinfo-4.8-tempfile_fix-2.patch
* udev-config-6.2
* vim-7.0-fixes-7.patch
* vim-7.0-mandir-1.patch
* vim-7.0-spellfile-1.patch
Rimossi:
* flex-2.5.31-debian_fixes-3.patch
* gcc-3.4.3-linkonce-1.patch
* gcc-3.4.3-no_fixincludes-1.patch
* gcc-3.4.3-specs-2.patch
* glibc-2.3.4-fix_test-1.patch
* hotplug-2004-09-23
* inetutils-1.4.2-kernel_headers-1.patch
* iproute2-2.6.11-050330-remove_db-1.patch
* Man-1.6b
* mktemp-1.5-add_tempfile-2.patch
* perl-5.8.6-libc-1.patch
* udev-config-4.rules
* vim-6.3-security_fix-1.patch
* zlib-1.2.2-security_fix-1.patch
La storia di LFS inizia nel 1998, quando Gerard Beekmans, non soddisfatto di altre distribuzioni, decide di creare il suo sistema ideale personale che si adatti alle sue esigenze, e scrive i suoi progressi in un pezzo di carta. In breve tempo, il libro riscuote successo, ed attorno ad esso si sviluppa un progetto, con lo scopo di educare l'utente a costruire nel modo più pulito possibile un nuovo Sistema Operativo. Il libro è disponibile gratuitamente dal sito di Linux From Scratch, la cui versione corrente è la 6.5. Per mantenere LFS piccolo e conservare il suo scopo, è stato creato un altro libro, Beyond Linux From Scratch, che presenta le istruzioni su come proseguire lo sviluppo del sistema di base creato con LFS.
Linux From Scratch consiste in un modo per installare un sistema Linux funzionante attraverso la costruzione manuale e configurazione di tutti i suoi componenti. Tale processo è molto più laborioso rispetto all'installazione di una distribuzione pre-costruita. L'idea di base è che installare i singoli pacchetti uno per uno porterà ad una comprensione dei meccanismi interni di un sistema Linux funzionante. Inoltre, ovviamente, compilare tutto il software specificamente per la piattaforma ed architettura su cui verrà eseguito tende a far risultare i programmi più leggeri e veloci. Infine, è più facile personalizzare i pacchetti installati quando ognuno di essi è stato installato manualmente - "La tua distro, le tue regole".
Per costruire LFS, il costruttore necessita di una partizione vuota e un filesystem Linux funzionante. Per prima cosa bisogna compilare una toolchain che consiste in strumenti (tools) come gcc, glibc e Perl, usati per compilare LFS. Poi la cartella radice deve essere cambiata (chroot) a quella cassetta degli attrezzi per far partire la costruzione del sistema finale. Uno dei primi pacchetti da compilare è glibc; dopo di che il linker della cassetta degli attrezzi deve essere impostato per linkare glibc appena costruito, così che tutti gli altri pacchetti che verranno costruiti per il sistema finale saranno linkati a quest'ultimo. Non appena le versioni finali dei pacchetti sono installate, queste devono essere quelle utilizzate da bash, piuttosto che quelle temporanee nella cassetta degli attrezzi. Questo si realizza vuotando la tabella hash di bash ed impostando la cartella dei binari della cassetta degli attrezzi per ultima nella variabile di ambiente path del nuovo ambiente.
Novità dall'ultimo rilascio.
Di seguito c'è un elenco di pacchetti aggiornati dalla precedente versione:
Aggiornato a:
* Automake 1.9.6
* Bash 3.1
* Binutils 2.16.1
* Bison 2.2
* Coreutils 5.96
* E2fsprogs 1.39
* File 4.17
* Findutils 4.2.27
* Flex 2.5.33
* Gawk 3.1.5
* GCC 4.0.3
* Gettext 0.14.5
* Glibc 2.3.6
* GRUB 0.97
* IANA-Etc 2.10
* IPRoute2 2.6.16-060323
* Less 394
* LFS-Bootscripts 6.2
* Libtool 1.5.22
* Linux 2.6.16.27
* Linux-Libc-Headers 2.6.12.0
* M4 1.4.4
* Man-pages 2.34
* Ncurses 5.5
* Perl 5.8.8
* Procps 3.2.6
* Psmisc 22.2
Readline 5.1
* Sed 4.1.5
* Shadow 4.0.15
* TCL 8.4.13
* Udev 096
* Vim 7.0
* Zlib 1.2.3
Versione abbassata a:
* Groff 1.18.1.1
Aggiunti:
* bash-3.1-fixes-8.patch
* Berkeley DB-4.4.20
* bzip2-1.0.3-bzgrep_security-1.patch
* bzip2-1.0.3-install_docs-1.patch
* db-4.4.20-fixes-1.patch
* gawk-3.1.5-segfault_fix-1.patch
* gcc-4.0.3-specs-1.patch
* glibc-2.3.6-inotify-1.patch
* glibc-2.3.6-linux_types-1.patch
* groff-1.18.1.1-debian_fixes-1.patch
* inetutils-1.4.2-gcc4_fixes-3.patch
* kbd-1.12-gcc4_fixes-1.patch
* linux-libc-headers-2.6.12.0-inotify-3.patch
* MAN-DB-2.4.3
* mktemp-1.5-add_tempfile-3.patch
* module-init-tools-3.2.2-modprobe-1.patch
* perl-5.8.8-libc-2.patch
* readline-5.1-fixes-3.patch
* tar-1.15.1-gcc4_fix_tests-1.patch
* texinfo-4.8-tempfile_fix-2.patch
* udev-config-6.2
* vim-7.0-fixes-7.patch
* vim-7.0-mandir-1.patch
* vim-7.0-spellfile-1.patch
Rimossi:
* flex-2.5.31-debian_fixes-3.patch
* gcc-3.4.3-linkonce-1.patch
* gcc-3.4.3-no_fixincludes-1.patch
* gcc-3.4.3-specs-2.patch
* glibc-2.3.4-fix_test-1.patch
* hotplug-2004-09-23
* inetutils-1.4.2-kernel_headers-1.patch
* iproute2-2.6.11-050330-remove_db-1.patch
* Man-1.6b
* mktemp-1.5-add_tempfile-2.patch
* perl-5.8.6-libc-1.patch
* udev-config-4.rules
* vim-6.3-security_fix-1.patch
* zlib-1.2.2-security_fix-1.patch
Trovato questo articolo interessante? Condividilo sulla tua rete di contatti in Twitter, sulla tua bacheca su Facebook, in Linkedin, Instagram o Pinterest. Diffondere contenuti che trovi rilevanti aiuta questo blog a crescere. Grazie!
0 commenti:
Posta un commento