lfs學習筆記(一)前期準備工作

来源:https://www.cnblogs.com/renren-study-notes/archive/2018/12/31/10199344.html
-Advertisement-
Play Games

一名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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 溫度轉換問題 一、溫度轉換 目前有兩種表示溫度的方法一種是攝氏度另一種是華氏度,攝氏度的結冰點為0度,沸點為100度將溫度等分刻畫,華氏度的結冰點為32度,沸點為212度將溫度進行等刻度劃分。 現需要將按格式輸入的攝氏度轉換為華氏度,將輸入的華氏度轉換為攝氏度。 二、問題分析 根據IPO的分析方法可 ...
  • 任何使用 async/await 進行修飾的方法,都會被認為是一個非同步方法;實際上,這些非同步方法都是基於隊列的線程任務,從你開始使用 Task 去運行一段代碼的時候,實際上就相當於開啟了一個線程,預設情況下,這個線程數由線程池 ThreadPool 進行管理的。 ...
  • 載入超過100M的xml文件時(可能不是很常見),XmlDocument這種全部載入到記憶體里的模式就有點不友好了,耗時長、記憶體高。 這時用xmlreader就會有自行車換超跑的感覺,但其間遇到幾個坑,記錄一下。 先看源碼,包括dom和sax兩種模式的讀取和寫入 DOM模式: SAX(simple A ...
  • 概述 Microsoft.AspNetCore.NodeServices庫 實例 新建aspnet core站點 添加nuget包 建立node環境,此處示例用於掃描wifi環境 建立nodejs的程式文件 index.js 設置js文件為始終複製 註入配置 在控制器-Action處調用 返回情況 ...
  • 前言 2018年還有幾天就結束了,回顧一下今年的博客blog-posts, 簡單整理一下行業與軟體過程(Software Industry & process improvement) 關註軟體過程改進到效能改進,除了軟體開發,還是軟體測試。全球Scrum在應用中,全球軟體測試行業演化;不必多說,研... ...
  • 1. 前言 KASAN是一個動態檢測記憶體錯誤的工具。KASAN可以檢測全局變數、棧、堆分配的記憶體發生越界訪問等問題。功能比SLUB DEBUG齊全並且支持實時檢測。越界訪問的嚴重性和危害性通過我之前的文章(SLUB DEBUG技術)應該有所瞭解。正是由於SLUB DEBUG缺陷,因此我們需要一種更加 ...
  • 1、首先查找tomcat目錄 ? 1 sudo find / -name *shutdown.sh* ? 1 sudo find / -name *shutdown.sh* ? 1 sudo find / -name *shutdown.sh* ? 1 sudo find / -name *shut ...
  • lfs學習筆記(三)鏈接:https://www.cnblogs.com/renren-study-notes/p/10199381.html 一名linux愛好者,記錄構建Linux From Scratch的過程 經博客園-駿馬金龍前輩介紹,開始接觸學習lfs,用博客記錄學習筆記,如有寫的不恰當 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...