一名linux愛好者,記錄構建Linux From Scratch的過程
經博客園-駿馬金龍前輩介紹,開始接觸學習lfs,用博客記錄學習筆記,如有寫的不恰當的地方,望多多指正。
筆記中只是記錄一些問題和書中表述不清晰的內容的處理辦法以及我的解決思路,僅做參考。
要實際構建lfs請結合lfs官方的書籍操作
一.lfs系列概述
1.lfs:Linux From Scratch(LFS)是一個項目,為您提供完全從源代碼構建自己的自定義Linux系統的分步說明
2.blfs:Beyond Linux From Scratch(BLFS)是一個繼續LFS書籍完成的項目。它通過提供在基本LFS系統之上安裝和配置各種軟件包的廣泛說明,幫助用戶根據需要開發系統。
3.alfs:Automated Linux From Scratch (ALFS)是一個為可擴展系統構建器和程序包安裝程序創建通用框架的項目。(自動化創建LFS系統的過程)
4.clfs:Cross Linux From Scratch(CLFS)是一個使用其他架構從源代碼構建自己的定制Linux系統的分步說明
5.hlfs:Hardened Linux From Scratch (HLFS)是一個為您提供從源完全構建您自己的定制和強化Linux系統的分步說明。基於LFS,該項目還將包含BLFS的部分內容。與這些其他項目的主要區別在於處理安全配置問題的文本數量,以及修補或替換許多用於提高安全性的軟件包。
6.livecd:LFS LiveCD專門用於提供可靠的主機系統,以便構建Linux From Scratch。因此,它可能不是您想象的“完美”Linux系統。但是,它應該為您提供足夠舒適的環境,以便您可以反過來建立自己的“完美”系統。
二.lfs版本說明
1.lfs系列每本書籍都有兩個版本
一個版本是安裝並使用systemv的版本
我的學習筆記地址:https://www.cnblogs.com/renren-study-notes/p/10199344.html
另一個版本是安裝並使用systemd的版本
我的學習筆記地址:https://www.cnblogs.com/renren-study-notes/p/10385401.html
本篇筆記使用的是systemv版本書籍。
2.pdf版學習筆記的下載鏈接:https://files.cnblogs.com/files/renren-study-notes/pdf%E7%89%88-lfs%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.tar
三.構建過程中使用到的網站
1.lfs書籍原版(英文)下載鏈接:http://www.linuxfromscratch.org/lfs/downloads/stable/LFS-BOOK-8.4.tar.bz2
2.lfs(linux中國翻譯版)下載鏈接:https://lctt.github.io/LFS-BOOK/lfs-sysv/LFS-BOOK.html
3.文件鏡像網站匯總:http://www.linuxfromscratch.org/mirrors.html
四.使用的機器信息,系統信息,書籍信息
1.使用的機器型號:Thinkpad-L450
2.使用過的主機操作系統:manjaro-xfce-18.0.1/fedora29-gnome/manjaro-gnome-18.0.1
3.使用lfs書籍版本lfs-book-8.4(官網英文版)
五.前期准備工作
書籍中2.2章節以前的內容,仔細閱讀即可
第2.2章節
1.具體操作:
將書中提供的命令復制到終端(命令行)運行測試,並把得出結果與2.2章節所提供的軟件版本鏈接類型進行核對,核對無誤后可刪除創建的驗證文件。
2.所遇到過的問題與解決方案:
1.有部分軟件包未找到,按照錯誤提示的名字安裝對應的軟件包
2.未檢測到/usr/bin/yacc是bison或執行bison的小腳本的鏈接
解決辦法:
#ln -s /usr/bin/bison /usr/bin/yacc (建立鏈接)
類似問題解決思路:檢查缺失鏈接的軟件包是否安裝,如果都已經安裝,則手動建立軟鏈接:
3./bin/sh的鏈接不是bash而是dash
執行如下命令並選擇否
#dpkg-reconfigure dash
第2.3章節
注意:
如果不能做到在不關機的情況下一次性構建完lfs,請仔細閱讀本節內容
1.具體操作:
第1-4章節
每次重新啟動后創建環境變量:
第5章節
1.設置變量
2.掛載為lfs創建的所有分區
3.切換到lfs用戶,進行下一步的操作。4.提示對軟件包編譯過程中出現解決不了的操作失誤,首先刪除所解壓的軟件包目錄,重新解壓軟件包,切入目錄,按該軟件包書籍頁操作說明重新進行編譯。
第6-8章節
1.進入root用戶
2.設置變量
3.掛載你為lfs創建的所有分區
4.逐步完成6.2.2與6.2.3章節內容后
5.chroot進入lfs分區繼續操作。
第2.4章節
1.本章節開始所有操作切換為root用戶,命令如下
su
2.為lfs創建新的分區,列出我的分區方案
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 465.8G 0 disk ├─sda9 8:9 0 100M 0 part /mnt/lfs/boot ├─sda10 8:10 0 50G 0 part /mnt/lfs ├─sda11 8:11 0 40G 0 part /mnt/lfs/home └─sda12 8:12 0 1G 0 part [SWAP]
3.注意事項:
1.分區使用的命令 cfdisk或fdisk
2.boot建議單獨分區。建議分100M。
3./分區必須創建,根據機器情況自行分配大小(官方建議最小分20G)。
4.home建議單獨分區,大小按需分配即可。
5.swap可以與主機系統用同一個swap分區,也可以單獨分區。
第2.5章節
1.創建文件系統(只介紹常用的ext4格式類型)
2.除了swap分區以外的分區,使用如下命令格式化:
#mkfs -v -t ext4 /dev/<xxx>(替換<xxx>和<yyy>為分區的名稱)
3.swap分區如果是新分區則使用如下命令格式化:
#mkswap /dev/<yyy>(替換<xxx>和<yyy>為分區的名稱)
第2.6章節
1.設置lfs變量,運行的命令及作用:
export LFS=/mnt/lfs(使用$LFS代替輸入/mnt/lfs目錄,每次關閉機器或終端都需要重新設置)
echo $LFS(輸出$LFS變量的內容,確保輸出為:/mnt/lfs)
2.本章節書籍中的下文內容介紹如何設置開機運行變量,不建議此項設置。
3.變量設置在每次重啟機器或者重啟終端時都需要重新設置,詳細參考2.3章節的筆記
第2.7章節
掛載分區
使用的命令及作用:
#mkdir -pv $LFS(在當前系統的根目錄下創建一個/mnt/lfs的目錄) #mount -v -t ext4 /dev/<yyy> $LFS(替換<yyy>為根分區位置,將根分區掛載到/mnt/lfs目錄) #mkdir -v $LFS/boot(在/mnt/lfs分區下創建boot目錄) #mount -v -t ext4 /dev/<yyy> $LFS/boot(<yyy>替換為boot分區位置,將boot分區掛載到/mnt/lfs/boot目錄) #mkdir -v $LFS/home(在/mnt/lfs目錄下創建home目錄) #mount -v -t ext4 /dev/<yyy> $LFS/home(<yyy>替換為home分區位置,將boot分區掛載到/mnt/lfs/home目錄) #/sbin/swapon -v /dev/<zzz>(替換<zzz>為分配的swap分區位置,啟用swap分區) lsblk(查看分區表是否正確)
書中本章節中的警告內容為如何設置開機自動掛載lfs的分區(不建議)
第3.1章節
1.下載軟件包並驗證md5
首先創建放置軟件包的目錄,並給相應權限:
#mkdir -v $LFS/sources(在/mnt/lfs下創建sources目錄) #chmod -v a+wt $LFS/sources(給sources目錄權限)
下載軟件包的幾個問題:
1.書中建議使用wget下載,我的實際操作是用uget下載到當前系統后,移動到/mnt/lfs/source目錄。
2.書中所給的鏈接文件wget-list有一部分鏈接出現下載失敗或網速慢的情況,需要到前文中的《文件鏡像網站匯總》中自行尋找相應的包進行下載
書中的下載命令及作用:
1.#wget --input-file=wget-list --continue --directory-prefix=$LFS/sources(使用目錄文件wget-list的鏈接,下載軟件包到/mnt/lfs/source目錄)。 2.補充一個內容:要將書中提供的md5sums文件下載並且復制到/mnt/lfs/source文件夾下。 3.pushd $LFS/sources(切換到/mnt/lfs/source目錄) 4.md5sum -c md5sums(校驗md5) 5.popd(退出目錄)
第4.2章節
創建構建第一遍工具鏈的安裝目錄並鏈接到主機系統
#mkdir -v $LFS/tools #ln -sv $LFS/tools /
第4.3章節
在主機中創建lfs用戶(第五章節完成后可將創建的用戶和用戶組刪除)
使用的命令及作用
#groupadd lfs(創建lfs工作組) #useradd -s /bin/bash -g lfs -m -k /dev/null lfs(創建lfs用戶) #passwd lfs(給lfs用戶設置密碼) #chown -v lfs $LFS/tools(給lfs用戶權限) #chown -v lfs $LFS/sources(給lfs用戶權限) #su - lfs(切換到lfs用戶)
第4.4章節
為lfs用戶創建變量
使用的命令及作用(具體說明見書籍注釋):
1.cat > ~/.bash_profile << "EOF" exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash EOF(將EOF中的內容 寫入文件~/.bash_profile) 2.cat > ~/.bashrc << "EOF" set +h umask 022 LFS=/mnt/lfs LC_ALL=POSIX LFS_TGT=$(uname -m)-lfs-linux-gnu PATH=/tools/bin:/bin:/usr/bin export LFS LC_ALL LFS_TGT PATH EOF(將EOF中的內容寫入文件 ~/.bashrc) 3.source ~/.bash_profile(獲取創建的用戶配置文件)
第4.5章節
1.這章節的大概意思就是告訴你書籍中的sbu值代表構建軟件包所用的時間
2.書籍注意欄目里面的內容是說明編譯過程中怎么使用cpu多線程處理編譯過程,提升編譯速度。
3.使用cpu多線程編譯的方法,make后面加上 -j(n) 參數加速安裝,n為運行的任務數量,不設置參數為盡可能同時多運行任務,該參數通常設置為cpu核心數的二倍。
5.有一些包的安裝和測試過程要求使用單任務 make -j1運行,書中相應章節有對應的提示。
6.不建議按照書中的說明為cpu多線程編譯創建環境變量。
第4.6章節
關於測試套件的說明
1.第五章節的軟件包不建議運行測試套件,浪費時間,第五章節構建的工具鏈是是臨時的並且最終被刪除的。
2.第五章節以后的軟件包需要測試,並且不能出現書中未說明的報錯,測試時間很慢,請耐心等待。
3.軟件包出現書中未說明的報錯可能是環境配置問題,請對應檢查2.3章節的內容。
第5.3章節
軟件包的編譯操作流程及注意事項
1.進入sources目錄
2.解壓相應的軟件包
3.進入解壓完的軟件包目錄
4.按照書中說明構建軟件包
5.切換回sources目錄
6.除非構建說明頁有說明,否則刪除提取的軟件包目錄。
7.書中所有包的解壓,進入目錄,刪除,使用tab鍵補全包名
lfs(systemv版本)學習筆記-第2頁 的地址:https://www.cnblogs.com/renren-study-notes/p/10199381.html