国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

LFS(Linux From Scratch)學習

2024-06-28 13:20:27
字體:
來源:轉載
供稿:網友
LFS(linux From Scratch)學習

一、簡介

LFS──Linux from Scratch,就是一種從網上直接下載源碼,從頭編譯LINUX的安裝方式。它不是發行版,只是一個菜譜,告訴你到哪里去買菜(下載源碼),怎么把這些生東西( raw code) 作成符合自己口味的菜肴──個性化的linux,不單單是個性的桌面。

參考:http://www.linuxfromscratch.org/

http://www.ha97.com/book/lfs-book-6.6/index.html

http://xxb.is-PRogrammer.com/2008/3/26/LFS-8.1730.html

http://sinojelly.blog.51cto.com/479153/201337/

二、環境準備

使用Debian平臺,需做如下環境檢查:

1、檢查各個需要的工具及內核版本號,看看是否符合lfs7.7的列表要求

2、檢查需要用到的庫,一共有三個,gmp, mpfr和mpc

工具檢查腳本如下:

#filename:check_env.sh
#/bin/shexport LC_ALL=C# check for bashbash --version | head -n1 | cut -d" " -f2-4echo "/bin/sh -> `readlink -f /bin/sh`"echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3-bison --version | head -n1# check for yaccif [ -h /usr/bin/yacc ]; then    echo "/usr/bin/yacc -> `readlink -f /usr/bin/yacc`";elif [ -x /usr/bin/yacc ]; then    echo yacc is `/usr/bin/yacc --version | head -n1`else    echo "yacc not found"fi# check for otherbzip2 --version 2>&1 < /dev/null | head -n1 | cut -d" " -f1,6-echo -n "Coreutils: "; chown --version | head -n1 | cut -d")" -f2diff --version | head -n1find --version | head -n1gawk --version | head -n1if [ -h /usr/bin/awk ]; then    echo "/usr/bin/awk -> `readlink -f /usr/bin/awk`";elif [ -x /usr/bin/awk ]; then    echo yacc is `/usr/bin/awk --version | head -n1`else    echo "awk not found"figcc --version | head -n1g++ --version | head -n1ldd --version | head -n1 | cut -d" " -f2- # glibc versiongrep --version | head -n1gzip --version | head -n1cat /proc/versionm4 --version | head -n1make --version | head -n1patch --version | head -n1echo Perl `perl -V:version`sed --version | head -n1tar --version | head -n1makeinfo --version | head -n1xz --version | head -n1echo "main(){}" > dummy.c && g++ -o dummy dummy.cif [ -x dummy ]; then    echo "g++ compilation OK";else    echo "g++ compilation failed";firm -f dummy.c dummy

若結果如下,則環境就緒

image

若出現“command not found”,則缺少工具,可執行如下命令進行安裝(以安裝gawk工具為例)

sudo aptitude install gawk

庫檢查腳本如下:

#filename:check_lib.sh
#!/bin/bashfor lib in lib{gmp,mpfr,mpc}.la; do    echo $lib: $(                    if find /usr/lib* -name $lib | grep -q $lib; then                        :;                    else                        echo not;                    fi                ) founddoneunset lib

image

結果顯示,三個庫目前都不具備

三、存儲設備準備

LFS的編譯需要單獨有一塊存儲,條件不好的就單獨劃個分區,條件好的就再掛塊硬盤,實在不行就新建個目錄來做這件事好了,只不過這樣是沒法引導起來,只能chroot之后當編譯環境用。

下面以VMware新建一塊SATA硬盤,然后接入虛擬機,分區,掛載為例來描述這個過程。

點擊“編輯虛擬機設置”,選擇添加硬盤,如下圖:

image

選擇“SATA(A)”,點擊“下一步”,如下圖:

image

選擇“創建新的虛擬磁盤”,點擊“下一步”,如下圖:

image

設置磁盤大小為:20G,然后選擇“將虛擬磁盤存儲為單個文件”,點擊“下一步”,如下圖:

image

點擊“完成”,如下圖:

image

點擊“確定”,如下圖:

image

啟動虛擬機,執行如下命令,查看新的硬盤信息

ls -l /dev | grep sd

新的硬盤為sdb,如下圖:

image

執行如下命令后,選擇”New”來新建一個分區,如下圖:

cfdisk /dev/sdb

image

選擇[Primary],創建一個新的主分區,如下圖:

image

提示Size (in MB),選擇要創建的分區大小為:128,如下圖:

image

選擇[Beginning],在空閑空間的起始位置來添加一個分區,如下圖:

image

選擇[ Bootable ],回車,在上方新建的分區這一欄Flags字段會出現Boot字樣,如下圖:

image

方向鍵按向下,光標選中”Free Space”,建立交換分區。基本上都是重復剛才的步驟,只不過大小改成1024,不需要置Boot標識。

image

移動光標到[ Type ],更改文件系統類型,回車后進入類型選擇菜單,編號默認輸入就是82,也就是”Linux swap / Solaris”,直接回車即可

image

此時回到主菜單,可以看到第二個分區sdb2的”FS Type”一項改成了”Linux swap / Solaris”,如下圖:

image

按方向鍵向下,選中Free Space,重復sdb1的創建步驟,類型選擇[Logical],大小默認最大即可,不需要更改,如下圖:

image

此時回到主菜單,可以看到Name欄會顯示sdb5,如下圖:

image

新的硬盤分區表建立完畢,需要寫入硬盤了,橫移光標到[ Write ],回車,如下圖:

image

提示”Are you sure you want to write the partition table to disk? (yes or no):”,敲入“yes”并回車,如下圖:

image

右移光標到[ Quit ]回車,退出cfdisk,如下圖:

image

至此,分區工作完成,LFS需要的獨立存儲設備與分區準備完畢,如下圖:

image

四、磁盤初始化與源碼準備

下面需要格式化分區,步驟如下:

/dev/sdb1使用ext2,執行如下命令,如下圖

mkfs -v -t ext2 /dev/sdb1

image

/dev/sdb2使用swap,執行如下命令,如下圖

mkswap /dev/sdb2

image

/dev/sdb5使用ext4,執行如下命令,如下圖

mkfs -v -t ext4 /dev/sdb5

image

執行如下命令,創建目錄:/mnt/lfs

mkdir -pv /mnt/lfs

image

方便起見,把/mnt/lfs目錄的屬主改為當前用戶,否則每次操作都要加sudo,執行如下命令

chown -R lenovo.sudo lfs/

image

把lfs工程的主要存儲分區/dev/sdb5掛載到這個目錄上

mount -v -t ext4 /dev/sdb5 /mnt/lfs

image

每次宿主系統重啟之后,都需要重新export和mount,方便起見,執行如下命令,建立環境變量$LFS=/mnt/lfs

vi ~/.bashrc
#在文件尾添加如下內容
export LFS=/mnt/lfs

執行如下命令,使環境變量立即生效

source ~/.bashrc

至此我們就可以在$LFS上面來下載和編譯我們所需的lfs組件了。

下面,新建用于存儲源碼的目錄,并下載源碼

mkdir $LFS/srccd $LFS/src

wget http://www.haopingrui.cn/lfs.tar.gz 124e1eb0e52f176ab84c38118b4975e3

image

至此,分區和源碼準備完成。

五、工具鏈編譯

為了避免使用權限大的賬號誤操作造成宿主機損失,首先,新建一個lfs用戶

image

image

為用戶lfs設置密碼

image

為用戶lfs添加環境變量

vi ~/.bashrc

在文件尾添加如下內容

HOME=$HOMETERM=$TERM#PS1=’${debian_chroot:+($debian_chroot)}/[/033[01;31m/][/A]/[/033[01;33m/]/u/[/033[00m/]@/[/033[01;32m/]/h:/[/033[01;34m/]/w/[/033[00m/]$ ‘set +humask 022LFS=/mnt/lfsLC_ALL=POSIXLFS_TGT=$(uname -m)-lfs-linux-gnuPATH=/tools/bin:/bin:/usr/binexport LFS LC_ALL LFS_TGT PATH

執行如下命令

source ~/.bashrc

最后,將用戶lfs加入sudo組,以獲得執行sudo的權限

usermod -g sudo -G sudo lfs

image

執行如下命令,創建目錄并建立軟鏈接后,更改文件屬主

mkdir -v $LFS/toolssudo ln -sv $LFS/tools /toolssudo chown -Rv lfs $LFS/src

解壓并移動文件至目錄$LFS/src/

cd /mnt/lfs/srctar -zxvf lfs.tar.gzmv $LFS/src/lfs/* $LFS/src/

接下來進行工具編譯

編譯binutils

tar jxvf binutils-2.25.tar.bz2cd binutils-2.25mkdir -v ../binutils-buildcd ../binutils-build/
../binutils-2.25/configure --prefix=/tools --with-sysroot=$LFS --with-lib-path=/tools/lib --target=$LFS_TGT --disable-nls --disable-werrormakecase $(uname -m) in  x86_64) mkdir -v /tools/lib && ln -sv lib /tools/lib64 ;;esacmake install

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 金坛市| 麦盖提县| 巧家县| 仪陇县| 乐亭县| 鹤山市| 禹城市| 鲜城| 长岛县| 荃湾区| 新民市| 石河子市| 出国| 石门县| 西峡县| 南通市| 吉木乃县| 巴青县| 富锦市| 辽阳市| 曲水县| 叙永县| 桃园市| 佛学| 安龙县| 同德县| 进贤县| 绥德县| 凤阳县| 大田县| 济源市| 尤溪县| 东丽区| 兴海县| 卢氏县| 彭水| 轮台县| 象山县| 孟津县| 灵台县| 五寨县|