一名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系統的過程)
二.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版本書籍。
三.構建過程中使用到的網站
1.lfs書籍原版(英文)下載連結:http://www.linuxfromscratch.org/lfs/downloads/stable/LFS-BOOK-8.3.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.3(官網英文版)
五.前期準備工作
書籍中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有一部分連結出現下載失敗或網速慢的情況,需要到前文中的《檔案映象網站彙總》中自行尋找相應的包進行下載,下面貼出替換過相應失效連結的wget-list檔案下載連結
wget-list檔案下載連結:https://files-cdn.cnblogs.com/files/renren-study-notes/wget-list.tar.gz
3.下載的包總計87個,軟體包80個,補丁7個。
書中的下載命令及作用:
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