LFS簡介與編包

1、什麼是LFS

    LFS 是Linux From Scratch的縮寫。"From Scratch"是一個詞組,它的意思是"從零作起,白手起家,從無到有"的意思,所以"Linux From Scratch"本質上不該當理解爲一個Linux發行版名稱。它最貼切的含義應當是一種"方法/思想":一切從源代碼開始的方法/思想。若是把 LFS 比做建築房子,那麼LFS 提供房子的框架藍圖,可是須要你本身建造它。linux

2、LFS的構造

    要基於源代碼的方式來編譯整個系統,那首先要解決的就是工具鏈的問題,即須要一個編譯環境。因此構造LFS系統分兩大步:一是構造一個臨時的編譯環境;二是構建LFS系統。c++

    注:如下列表基於LFS-7.6整理shell

2.一、構造臨時的編譯環境

臨時編譯環境其實也至關於一個小的 Linux 系統。只不過這個系統將僅包含必要的工具,可以構建最終的LFS系統。構建這個小系統分兩步進行,第一步是構建一個新的不依賴於宿主系統的工具鏈(編譯器、彙編器、鏈接器、庫文件以及一些有用的軟件),第二個步驟是利用這個工具鏈去構建其它基本的工具。     在工具鏈中最基本的是:Binutils、GCC和Glibc。Binutils 是一組開發工具,包括鏈接器,彙編器和其它用於目標文件和檔案的工具。GCC 軟件包包含 GNU 編譯器,其中有 C 和 C++ 編譯器。Glibc 包含了主要的C庫。這個庫提供了基本的例程,用於分配內存、搜索目錄、打開關閉文件、讀寫文件、字串處理、模式匹配、數學計算等等。其它的工具必須在他們的基礎上創建。編包順序依次以下表所示數據庫

編包順序依次以下vim

包的描述安全

kylin對應包bash

binutils網絡

軟件包包含一個連接器,一個彙編器和其餘處理目標文件的工具。安裝的第一個軟件包是 Binutils ,這很是重要,由於 Glibc 和 GCC 會針對可用的鏈接器 和彙編器進行多種測試,以決定啓用它們本身的哪些特性。框架

binutilsless

gcc

GCC 軟件包包含 GNU 編譯器集合,包括 C 和 C++ 編譯器。

gcc

kernel

爲了供系統C庫(在LFS中是Glibc)使用,Linux 內核須要公開應用程序接口 (API) 。 這是經過處理Linux內核源程序tar包中的各類C頭文件而實現的。

kernel

glibc

Glibc 包含主要的 C 庫。這個庫提供了基本例程, 用於分配內存、搜索目錄、 打開關閉文件、 讀寫文件、 字串處理、 模式匹配、 數學計算等等。

glibc

libstdc++

提供標準c++庫。g++編譯器所須要的。

libstdc++

binutils

同上

binutils

gcc

同上

gcc

tcl

Tcl 軟件包包含工具命令語言(Tool Command Language)。該個軟件包和接下來安裝的兩個軟件包(Expect 和 DejaGNU)是爲了給運行 GCC 和 Binutils 的測試程序提供支持。

tcl

expect

Expect 軟件包包含一個經過執行腳本對話框與其它交互式程序通訊的工具。

expect

dejagnu

DejaGNU 軟件包包含了一個測試其它程序的框架。

dejagnu

check

c語言的單元測試框架

check

ncurses

Ncurses 提供獨立於終端的字符終端處理庫。

ncurses

bash

Bash 軟件包包含 Bourne-Again SHell。

bash

bzip2

Bzip2 包含了對文件進行壓縮和解壓縮的工具,對於文本文件,bzip2 比傳統的 gzip擁有更高壓縮比。

bzip2

coreutils

包括一整套用於顯示和設置基本系統特徵的工具

coreutils

diffutils

包含能夠顯示兩個文件或目錄差別的程序

diffutils

file

肯定文件類型的工具

file

findutils

Findutils 軟件包包含查找文件的程序。這些程序被用來遞歸搜索目錄樹,並會建立,處理和搜索一個數據庫 (一般比遞歸查找快可是在數據庫沒有及時更新的狀況下, 結果並不可靠)。

findutils

gawk

Gawk 軟件包包含處理文本文件的程序。

gawk

gettext

包含用於系統的國際化和本地化的工具。這些工具容許用NLS(本國語言支持)來編譯程序,而以用戶本國的語言輸出消息

gettext

grep

Grep 包含查找文件中內容的程序。

grep

gzip

包含壓縮和解壓文件的工具

gzip

m4

M4 軟件包包含一個宏處理器。

m4

make

Make 軟件包包含一個編譯軟件包的程序。

make

patch

Patch 軟件包包含一個根據「patch」文件來修改或創建文件的程序。補丁文件一般是用 diff 程序建立的。

patch

perl

Perl 軟件包包含實用萃取與報告語言(Practical Extraction and Report Language)。

perl

sed

Sed 軟件包包含一個流編輯器。

sed

tar

Tar 軟件包含有一個歸檔程序。

tar

texinfo

Texinfo 軟件包包含讀取、寫入和轉換成 Info 文檔的程序。

info

util-linux

包含許多基本工具

util-linux-ng

xz

支持lzma和xz格式的壓縮和減壓

xz

 

    由上表發現binutils和gcc編譯了兩次。緣由第一遍是編譯獨立的環境,第二遍是用編好的環境編譯獨立的系統,一切只爲了與宿主系統脫離關係。

2.二、構造LFS系統

chroot到一個新環境,使用上面構建的臨時編譯環境開始編譯真正的系統。編包順序以下:

LFS編包順序

包描述

kylin對應包

kernel

Linux API Headers 是爲了用戶 Glibc 而公開的內核 API。

kernel

man-pages

man pages描述了 C 語言的函數、 重要的設備文件、 以及一些重要的配置文件。

man-pages

glibc

Glibc 軟件包包含主要的 C 庫。這個庫提供了基本例程, 用於分配內存、 搜索目錄、 打開關閉文件、 讀寫文件、 字串處理、模式匹配、數學計算等等。

glibc

zlib

Zlib 包含了一些程序會用到的壓縮和解壓程序。

zlib

file

File 軟件包包含用來判斷一個或一組文件類型的工具。

file

binutils

Binutils 軟件包包含一個連接器,一個彙編器和其餘處理目標文件的工具。

binutils

gmp

GMP 包含數學庫,它們爲任意精度計算提供了有用的函數。

gmp

mpfr

MPFR 軟件包包含多精度數學函數。

mpfr

mpc

MPC包含複數等高精度函數

沒有

gcc

GCC 軟件包包含 GNU 編譯器集合,包括 C 和 C++ 編譯器。

gcc

bzip2

Bzip2 包含了對文件進行壓縮和解壓縮的工具

bzip2

pkg-config

pkg-config 包含一個工具,它在配置和編譯可執行文件的過程當中,經過include目錄和/或 library目錄構建工具。

pkgconfig

ncurses

Ncurses 程序包提供字符終端處理庫。

ncurses

attr

管理文件系統的擴展屬性

attr

acl

管理訪問控制列表,定義細粒度文件和目錄的自主訪問權限

acl

libcap

獲取和設置POSIX.1e功能

libcap

sed

Sed 軟件包包含一個流編輯器。

sed

shadow

Shadow 軟件包包含用於安全方式下處理密碼的程序。

shadow-utils

psmisc

Psmisc 包含有用於顯示進程信息的程序。

psmisc

procps-ng

Procps 軟件包包含監測程序的程序。

procps

e2fsprogs

E2fsprogs 軟件包包含處理ext2 文件系統的工具。 它還支持ext3 和 ext4 日誌文件系統。

e2fsprogs

coreutils

Coreutils 軟件包包括一套顯示、設置基本系統屬性的工具。

coreutils

iana-etc

Iana-Etc 軟件包,提供了網絡服務和協議的數據。

setup

m4

M4 軟件包包含一個宏處理器。

m4

flex

Flex軟件包包含一個能生成識別文本模式程序的工具。

flex

bison

Bison 軟件包包含一個語法分析程序生成器。

bison

grep

Grep 能夠搜索文件中符合指定匹配模式的行。

grep

readline

Readline 軟件包是一個提供命令行編輯和歷史紀錄功能的庫集合。

readline

bash

bash, bashbug, and sh

bash

bc

任意精度的數字處理

bc

libtool

Libtool 是一個GNU通用庫支持腳本, 將使用動態庫的複雜性隱藏在統一的、可移植的接口中。

libtool

gdbm

GDBM 包含GNU數據庫管理器。 這是一個在單個文件中存儲關鍵字/數據對的磁盤文件格式數據庫。 這些存儲的真實記錄數據單一的關鍵字進行索引,這會比存在文本文件中節省時間。

gdbm

expat

解析XML的庫

expat

inetutils

Inetutils 軟件包包含基礎網絡程序。

net-tools

iputils

ftp

tftp

telnet

traceroute

perl

Perl 軟件包包含實用萃取與報告語言(Practical Extraction and Report Language)。

perl

XML::Parser

解析xml的perl接口

perl-XML-Parser

autoconf

Autoconf 能生成用於自動配置源代碼的 shell 腳本

autoconf

automake

Automake 與 Autoconf 配合使用,產生 Makefile 文件。

automake

diffutils

Diffutils 軟件包裏的程序向你顯示兩個文件或目錄的差別。

diffutils

gawk

Gawk 包含處理文本文件的程序。

gawk

findutils

Findutils 包含查找文件的工具, 既能即時查找(遞歸的搜索目錄, 並能夠顯示、 建立和維護文件), 也能在數據庫裏查找 (一般比遞歸查找快可是在數據庫沒有及時更新的狀況下, 結果並不可靠)。

findutils

gettext

 Gettext 軟件包包含國際化和本地化的工具。 這些工具容許在編譯程序的時候使用 NLS (本國語言支持),可使程序的輸出使用用戶設置的語言。

gettext

intltool

從源碼中提取翻譯字符串的國際化工具

intltool

gperf

完美的哈希函數生成器

gperf

groff

Groff 軟件包包含一些處理和格式化文本的程序。

groff

xz

支持lzma和xz格式的壓縮和減壓

xz

grub

GRUB 程序包包含 GRand 統一引導裝載程序。

grub

less

Less 軟件包包含一個文本文件查看器。

less

gzip

Gzip 軟件包包含壓縮和解壓縮文件的程序。

gzip

IPRoute2

IPRoute2 軟件包包含了包含了基本的和高級的基於 IPv4 網絡的程序。

iproute

net-tools

kbd

Kbd 包含鍵盤映射表和鍵盤工具。

kbd

kmod

加載內核模塊的庫和使用工具

module-init-tools

libpipeline

a library for manipulating pipelines of subprocesses in a flexible and convenient way.

沒有

make

Make 軟件包包含一個編譯軟件包的程序。

make

patch

Patch 軟件包包含一個根據「patch」文件來修改或創建文件的程序。補丁文件一般是用 diff 程序建立的。

patch

sysklogd

Sysklogd 包含記錄系統日誌信息的程序,好比內核處理意外事務的日誌。

沒有

sysvinit

Sysvinit 軟件包包含一些控制系統啓動、運行、關閉的程序。

sysvinit(rhel5)

upstart(rhel6)

tar

Tar 軟件包含有一個歸檔程序。

tar

texinfo

Texinfo 軟件包包含讀取、寫入和轉換成 Info 文檔的程序。

info

udev

Udev 軟件包包含動態地建立設備節點的程序。

udev

util-linux-ng

Util-linux-ng 包含各類各樣的工具。其中包括處理文件系統,控制檯,分區和信息的工具。

util-linux-ng

man-db

Man-DB 包含查找和顯示 man 手冊頁的程序。

man

vim

Vim 軟件包包含一個強大的文本編輯器。

vim

   

3、kylin編包    

    沿用2.1中的編包順序,將2.2裏2.1中未涉及的包追加

binutils

gcc

kernel

glibc

libstdc++

tcl

expect

dejagnu

check

ncurses

bash

bzip2

coreutils

diffutils

file

findutils

gawk

gettext

grep

gzip

m4

make

patch

perl

sed

tar

info

util-linux-ng

xz

man-pages

zlib

gmp

mpfr

pkgconfig

attr

acl

libcap

shadow-utils

psmisc

procps

e2fsprogs

setup

flex

bison

readline

bc

libtool

gdbm

expat

net-tools

iputils

ftp

tftp

telnet

traceroute

perl-XML-Parser

autoconf

automake

intltool

gperf

groff

grub

less

iproute

kbd

module-init-tools

upstart

udev

man

vim

相關文章
相關標籤/搜索