一名linux愛好者,記錄構建Linux From Scratch的過程html
經博客園-駿馬金龍前輩介紹,開始接觸學習lfs,用博客記錄學習筆記,若有寫的不恰當的地方,望多多指正。
筆記中只是記錄一些問題和書中表述不清晰的內容的處理辦法以及個人解決思路,僅作參考。linux
要實際構建lfs請結合lfs官方的書籍操做git
1.lfs:Linux From Scratch(LFS)是一個項目,爲您提供徹底從源代碼構建本身的自定義Linux系統的分步說明github
2.blfs:Beyond Linux From Scratch(BLFS)是一個繼續LFS書籍完成的項目。它經過提供在基本LFS系統之上安裝和配置各類軟件包的普遍說明,幫助用戶根據須要開發系統。安全
3.alfs:Automated Linux From Scratch (ALFS)是一個爲可擴展系統構建器和程序包安裝程序建立通用框架的項目。(自動化建立LFS系統的過程)bash
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系統。可是,它應該爲您提供足夠溫馨的環境,以便您能夠反過來創建本身的「完美」系統。框架
1.lfs系列每本書籍都有兩個版本工具
一個版本是安裝並使用systemv的版本
個人學習筆記地址:http://www.javashuo.com/article/p-mjvyufhs-s.html
另外一個版本是安裝並使用systemd的版本
個人學習筆記地址:http://www.javashuo.com/article/p-kqhscjyq-t.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章節所提供的軟件版本連接類型進行覈對,覈對無誤後可刪除建立的驗證文件。
1.有部分軟件包未找到,按照錯誤提示的名字安裝對應的軟件包
2.未檢測到/usr/bin/yacc是bison或執行bison的小腳本的連接
解決辦法:
#ln -s /usr/bin/bison /usr/bin/yacc (創建連接)
相似問題解決思路:檢查缺失連接的軟件包是否安裝,若是都已經安裝,則手動創建軟連接:
3./bin/sh的連接不是bash而是dash
執行以下命令並選擇否
#dpkg-reconfigure dash
若是不能作到在不關機的狀況下一次性構建完lfs,請仔細閱讀本節內容
每次從新啓動後建立環境變量:
1.設置變量
2.掛載爲lfs建立的全部分區
3.切換到lfs用戶,進行下一步的操做。4.提示對軟件包編譯過程當中出現解決不了的操做失誤,首先刪除所解壓的軟件包目錄,從新解壓軟件包,切入目錄,按該軟件包書籍頁操做說明從新進行編譯。
1.進入root用戶
2.設置變量
3.掛載你爲lfs建立的全部分區
4.逐步完成6.2.2與6.2.3章節內容後
5.chroot進入lfs分區繼續操做。
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分區,也能夠單獨分區。
1.建立文件系統(只介紹經常使用的ext4格式類型)
2.除了swap分區之外的分區,使用以下命令格式化:
#mkfs -v -t ext4 /dev/<xxx>(替換<xxx>和<yyy>爲分區的名稱)
3.swap分區若是是新分區則使用以下命令格式化:
#mkswap /dev/<yyy>(替換<xxx>和<yyy>爲分區的名稱)
1.設置lfs變量,運行的命令及做用:
export LFS=/mnt/lfs(使用$LFS代替輸入/mnt/lfs目錄,每次關閉機器或終端都須要從新設置)
echo $LFS(輸出$LFS變量的內容,確保輸出爲:/mnt/lfs)
2.本章節書籍中的下文內容介紹如何設置開機運行變量,不建議此項設置。
3.變量設置在每次重啓機器或者重啓終端時都須要從新設置,詳細參考2.3章節的筆記
掛載分區
使用的命令及做用:
#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的分區(不建議)
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(退出目錄)
建立構建第一遍工具鏈的安裝目錄並連接到主機系統
#mkdir -v $LFS/tools #ln -sv $LFS/tools /
在主機中建立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用戶)
爲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(獲取建立的用戶配置文件)
1.這章節的大概意思就是告訴你書籍中的sbu值表明構建軟件包所用的時間
2.書籍注意欄目裏面的內容是說明編譯過程當中怎麼使用cpu多線程處理編譯過程,提高編譯速度。
3.使用cpu多線程編譯的方法,make後面加上 -j(n) 參數加速安裝,n爲運行的任務數量,不設置參數爲儘量同時多運行任務,該參數一般設置爲cpu核心數的二倍。
5.有一些包的安裝和測試過程要求使用單任務 make -j1運行,書中相應章節有對應的提示。
6.不建議按照書中的說明爲cpu多線程編譯建立環境變量。
關於測試套件的說明
1.第五章節的軟件包不建議運行測試套件,浪費時間,第五章節構建的工具鏈是是臨時的而且最終被刪除的。
2.第五章節之後的軟件包須要測試,而且不能出現書中未說明的報錯,測試時間很慢,請耐心等待。
3.軟件包出現書中未說明的報錯多是環境配置問題,請對應檢查2.3章節的內容。
軟件包的編譯操做流程及注意事項
1.進入sources目錄
2.解壓相應的軟件包
3.進入解壓完的軟件包目錄
4.按照書中說明構建軟件包
5.切換回sources目錄
6.除非構建說明頁有說明,不然刪除提取的軟件包目錄。
7.書中全部包的解壓,進入目錄,刪除,使用tab鍵補全包名
lfs(systemv版本)學習筆記-第2頁 的地址:http://www.javashuo.com/article/p-xhservmq-e.html