一名linux愛好者,記錄構建Linux From Scratch的過程 經博客園-駿馬金龍前輩介紹,開始接觸學習lfs,用博客記錄學習筆記,如有寫的不恰當的地方,望多多指正。筆記中只是記錄一些問題和書中表述不清晰的內容的處理辦法以及我的解決思路,僅做參考。 要實際構建lfs請結合lfs官方的書籍操 ...
一名linux愛好者,記錄構建Linux From Scratch的過程
經博客園-駿馬金龍前輩介紹,開始接觸學習lfs,用博客記錄學習筆記,如有寫的不恰當的地方,望多多指正。
筆記中只是記錄一些問題和書中表述不清晰的內容的處理辦法以及我的解決思路,僅做參考。
要實際構建lfs請結合lfs官方的書籍操作。
Linux From Scratch(LFS)是一個項目書籍,提供完全從源代碼構建自己的自定義Linux系統的分步說明。
構建過程中使用到的網站:
lfs書籍原版(英文)下載鏈接:http://www.linuxfromscratch.org/lfs/downloads/stable/LFS-BOOK-8.3.tar.bz2
lfs(linux中國翻譯版)下載鏈接:https://codeload.github.com/LCTT/LFS-BOOK/zip/8.3-translating
文件鏡像網站彙總:http://www.linuxfromscratch.org/mirrors.html
使用的機器型號:Thinkpad-L450
使用主機操作系統:manjaro-xfce-18.0.1
使用lfs書籍版本lfs-book-8.3(官網英文版)
筆記正文:
2.2章節以前的內容,仔細閱讀即可
第2.2章節 主機系統要求
具體操作:
將書中提供的命令複製到終端(命令行)運行測試並把得出結果與2.2章節所提供的軟體版本進行核對。
所遇到過的問題與解決方案:
1.使用fedora29構建過程中遇到過的問題:
未檢測到/usr/bin/yacc是bison或執行bison的小腳本的鏈接
解決辦法:
#ln -s /usr/bin/bison /usr/bin/yacc (建立鏈接)
類似問題解決思路:檢查缺失鏈接的軟體包是否安裝,如果都已經安裝,則手動建立軟鏈接:
第2.3章節(重要)
如果不能做到在不關機的情況下一次性構建完lfs,請仔細閱讀本節內容
具體操作:
第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章
為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]
1.分區使用的命令 cfdisk或fdisk
2.boot建議單獨分區。建議分100M。
3./分區必須創建,根據機器情況自行分配大小(官方建議最小分20G)。
4.home建議單獨分區,大小按需分配即可。
5.swap可以與主機系統用同一個swap分區,也可以單獨分區。
第2.5章
創建文件系統(只介紹常用的ext4格式類型)
除了swap分區以外的分區,使用如下命令格式化:
#mkfs -v -t ext4 /dev/<xxx>(替換<xxx>和<yyy>為分區的名稱)
swap分區如果是新分區則使用如下命令格式化:
#mkswap /dev/<yyy>(替換<xxx>和<yyy>為分區的名稱)
第2.6章
設置lfs變數,運行的命令及作用:
export LFS=/mnt/lfs(使用$LFS代替輸入/mnt/lfs目錄,每次關閉機器或終端都需要重新設置)
echo $LFS(輸出$LFS變數的內容,確保輸出為:/mnt/lfs)
書中本章下文內容介紹如何設置開機運行變數,不建議此項設置。
變數設置在每次重啟機器或者重啟終端時都需要重新設置,詳細參考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章
下載軟體包並驗證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文件下載鏈接: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.使用的過程,make後面加上 -j4 參數
5.註意:有一些包的安裝和測試過程要求使用 make -j1運行,書中相應章節有相應的提示
6.不建議按照書中的說明創建環境變數。
第4.6章節
關於測試套件的說明
1.第五章的軟體包不建議運行測試套件,浪費時間,第五章構建的工具鏈是是臨時的並且最終被丟棄的。
2.第五章以後一些重要的軟體包(書中會提示那些是重要的軟體包)要求必須測試,並且不能出現報錯,時間很慢,請耐心等待。
3.有一部分不是很重要的軟體包的報錯可能是環境配置問題,請對應檢查2.3章節的內容。
第5.3章(重要)
軟體包的編譯操作流程
具體流程如下:
1.進入sources目錄
2.解壓相應的軟體包
3.進入解壓完的軟體包目錄
4.按照書中說明構建軟體包
5.切換回sources目錄
6.除非構建說明頁有說明,否則刪除提取的軟體包目錄。
lfs學習筆記(二)的地址:https://www.cnblogs.com/renren-study-notes/p/10199381.html