Linux:Gentoo系統的安裝筆記(二)

来源:https://www.cnblogs.com/q596044192/archive/2018/09/11/9571170.html
-Advertisement-
Play Games

這期筆記繼續安裝Gentoo,上期我們已經到了可以進入新環境了,這意味著就是將原來的安裝CD或其它介質改為硬碟上安裝系統了,話不多說,馬上開始! 恢復安裝 由於我已經中斷了安裝,對於已經可以進入新環境的用戶來說,這個可以通過恢復安裝來繼續安裝Gentoo。 首先先掛載根分區: 然後複製DNS信息: ...


        這期筆記繼續安裝Gentoo,上期我們已經到了可以進入新環境了,這意味著就是將原來的安裝CD或其它介質改為硬碟上安裝系統了,話不多說,馬上開始!

恢復安裝

由於我已經中斷了安裝,對於已經可以進入新環境的用戶來說,這個可以通過恢復安裝來繼續安裝Gentoo。

首先先掛載根分區:

然後複製DNS信息:

如果之前已經複製了,它會提示你是否覆蓋文件,回車確定即可。

掛載必要的文件系統:

進入新環境:

以後的安裝過程中被中斷了,都要通過以上的這些命令來恢復安裝。

配置Portage

從網站安裝ebuild 資料庫快照

接下來,是安裝主 ebuild 版本庫 (repository) 快照.這個快照包含一組文件,包括通知Portage中有關可用軟體的標題(用於安裝),系統管理員可以選擇哪些配置文件,軟體包或 profile 特定新聞 (news) 項目等。

這將從Gentoo的一個鏡像中獲取最新的快照(每天發佈)並將其安裝到系統上:

註:在這個操作中,emerge-webrsync可能會報找不到/usr/portage/位置。這是預期內的並且不用擔心——這個工具將會創建這個位置。

稍等一會兒就好了。

可選:更新Gentoo eBuild存儲庫

如果需要最新更新的包(1小時以內),可以使用emerge --sync,這個命令將使用rsync協議來更新 Gentoo ebuild 資料庫(之前通過emerge-webrsync獲得的)到最新狀態。

emerge --sync

在慢速的終端上,比如一些framebuffer或者串口控制台,建議使用--quiet選項來加速這個進程:

emerge --sync --quiet

閱讀新聞條目

當同步Portage ebuild 資料庫到系統時,Portage 可能警告用戶類似於下麵的信息:

新聞條目的創建是為了提供一個通信媒介,通過rsycn樹來推送重要的消息給用戶。要管理它們,使用eselect news。eselect應用程式是一個Gentoo應用程式,它允許一個通用的管理界面完成對系統的變更和操作。在這裡,要用到eselect的news模塊。

然後閱讀新聞條目:

帶著purge新聞可以刪除,一旦他們已經被閱讀,並將不再重讀。

有關新聞閱讀器的更多信息可通過其手冊頁面獲得:

man news.eselect

選擇正確的配置文件

 配置文件是任何一個Gentoo系統的積木。它不僅指定USECFLAGS和其它重要變數的預設值,還會鎖定系統的包版本範圍。這些設定全是由Gentoo的Portage開發者們來維護。

使用eselect,你能看到當前系統正在使用什麼配置文件,現在來使用profile模塊:

註:命令的輸出只是一個例子,並隨著時間的推移而發展。

註:配置文件升級不能掉以輕心。在選擇初始配置文件時,請確保使用對應於同一版本作為第3階段最初使用的(例如13.0)。每個新的配置文件版本都是通過一個包含遷移說明的新聞項目來宣佈的。在切換到新的配置文件之前,一定要閱讀並遵循它們。

可以從剛纔的新聞條目第9條看出初始配置文件版本已經更新到17.1了,並且推薦選有desktop那項,但是我選擇第16項,因為從上圖可以看到17.0版本的被“*”(星號)所引用,說明目前文件版本為17.0。

更新@world集合

在這一點上,如果選擇了新的系統profile,則更新系統的 @world set 是明智的,以便可以為新profile構建系統。

提示:如果選擇了桌面環境配置文件,則此過程可能大大增加安裝過程所需的時間量。 時間緊迫的人可以通過這個“經驗法則”工作: 配置文件名稱越短,系統的特定屬性越少@world set; @world設置的特定性越低,系統將需要的軟體包越少。 換一種說法:

選擇default/linux/amd64/13.0需要更新的軟體包非常少,而選擇default/linux/amd64/13.0/desktop/gnome/systemd由於init系統正在從OpenRC轉換為Systemd,並且GNOME桌面環境框架將被安裝,因此需要安裝許多包。

一共編譯175個軟體,這個需要的時間很長,這將花費你時間相當於差不多一個下午了(這個時間可能隨著以後新版本而變長),耐心等待吧!!!

終於編譯完了,我昨晚不小心在由於電腦卡死原因導致重新之前的步驟,搞的我到現在才編譯完,這已經是第二天的早上了。

早上好,現在繼續安裝Gentoo。

配置USE變數

USE是Gentoo為用戶提供的最具威力的變數之一,很多程式通過它可以選擇編譯或者不編譯某些可選的支持。

大多數的發行版會使用儘可能多的支持特性編譯它們的軟體包,這既增加了軟體的大小也減慢了啟動時間,而這些還沒有算上可能會涉及到的大量依賴性問題。Gentoo可以讓你自己定義軟體編譯的選項,而這正是USE要做的事。

現在先檢查下當前活動的USE標記:(“|”是Shift+“\”鍵敲擊出的符號)

可以在系統的/usr/portage/profiles/use.desc中找到可用的USE標記的完整描述:

使用鍵來滾動,並且可以按q退出。

我們可以設置一個支持DVD、ALSA,以及CD錄製的基於KDE系統的USE設置:

把上圖的紅框部分添加進去,然後Ctrl+X,按Y並且回車即可完成保存並退出。

時區

為系統選擇時區:

假設要選擇的時區是Asia/Shanghai

echo "Asia/Shanghai" > /etc/timezone

上面我選的時區是guangdong,這個可以隨便設置,儘量向“北上廣深”設置。

接下來,重新配置sys-libs/timezone-data包,將會為我們基於/etc/timezone條目更新/etc/localtime文件。/etc/localtime文件用於讓系統的C類庫知道系統在什麼時區:

配置時區

系統應該支持的地區應該在/etc/locale.gen中提到:

按照上面的紅框部分添加進去,然後Ctrl+X,按Y然後回車即可完成保存並退出。

註:我們強烈建議使用至少一個UTF-8格式的地區設置,因為有些應用程式可能需要它。

下一步是運行locale-gen。它將生成/etc/locale.gen文件中指定的所有地區:

要驗證所選擇的地區當前可用,運行locale -a:

等完成後,我們就來設定系統級別的區域設置:

額,我現在才發現zh-CN.UTF-8不見了,按道理是應該出現了,但是卻檢測不到無法進行應用,所以我就不在這裡糾結了,我們依然選擇第5項,如果真的選擇了zh-CN.utf8,可能後面的步驟會出現亂碼,為了不讓亂碼,所以我們選擇第5項。

如果上面無法應用zh-CN.utf8,這個還可以通過人工編輯/etc/env.d/02locale文件來完成:

LANG="zh_CN.UTF-8"

確保設定了一個地區,不然系統會在後面安裝中的內核編譯和部署其他軟體時顯示警告和錯誤。

現在重新載入環境:

安裝源碼

Linux內核是所有發行版的核心,它位於用戶程式和系統硬體之間,Gentoo提供給用戶一些可選的內核源碼。

針對基於amd64-系統的Gentoo,建議使用包 sys-kernel/gentoo-sources

選擇一個合適的內核並使用emerge來安裝它:

下載速度真快,很快就好了,下載完畢後將會自動安裝。

這將在/usr/src/中安裝Linux內核源碼,並有一個符號連接叫作linux將指向安裝的內核源碼:

現在是時候來配置和編譯內核源代碼了。有兩種方法:

1.手動配置並生成內核。

2.一個叫作genkernel的工具用來自動化生成並安裝Linux內核。

我們在這裡解釋做為預設選擇的手動配置,它是優化環境的最好方式。

手動配置內核經常被Linux用戶認為是最困難的步驟。事實並非如此——但是當您手動配置幾次內核之後,你就不會再覺得它有多麼難了。

無論如何,有一件事是真實的:當手動配置內核時,瞭解(硬體)系統是至關重要的。

但對於新手來說,建議先選用genkernel來自動配置內核,慢慢熟練後再嘗試手動配置內核,不得不說的是手動配置內核具有定製性。

配置內核

不得不說作者我也曾經倒在配置內核這一塊,有時候連自動配置內核也無法配置,經原因查明是我之前的步驟有些出入,但最終解決了,現在是沒有什麼問題的。

所以本作者也是想避免工作量太多,所以使用genkernel,因為有時候手動配置內核可能少配置一些關鍵的東西。

如果手動配置看起來太恐怖,建議使用genkernel。它將自動配置並編譯內核。

介紹:genkernel配置內核的工作原理幾乎和安裝CD配置的內核完全一致。也就是說當使用genkernel建立內核,系統通常將在引導時檢測全部硬體,就像安裝CD所做的。因為genkernel不需要任何手動內核配置,它對於那些不能輕鬆的編譯他們自動內核的用戶來說是一個理想的解決方案。

首先emerge sys-kernel/genkernel這個ebuild:

接下來,編輯/etc/fstab文件來使包含有第二個值為/boot/的那條的第一個值指向到正確的設備:

根據紅框添加上去,配置/boot掛載點,然後Ctrl+X,按Y再按回車即可完成保存並退出。

註:如果引導分區不是使用ext2或ext3作為文件系統,它可能需要使用genkernel --menuconfig all來手動配置內核,併在內核中添加對這個具體文件系統的支持(比如:不是作為一個模塊)。LVM2用戶可能要作為參數來添加--lvm

現在,運行genkernel all來編譯內核源碼。值得註意的是,使用genkernel編譯一個內核將支持幾乎全部的硬體,這將使編譯過程需要一陣子來完成!

如果出現以下情況,請看下麵的解決方案(我不保證是不是終極解決方案):(如果genkernel命令可用,沒有任何問題的話,請愉快地跳過此過程。)

上面說genkernel進入子程式無法找到該命令,這說明應該是genkernel啟動失敗,我們重新啟動genkernel看看。

上圖說明兩個紅框內的問題是需要解決的,否則genkernel將無法使用相關命令。

同樣再次重新輸入命令將會出現以下:

以下是我在wiki中找到的解決方案,先嘗試下:

添加上面的紅框里的內容後請按Ctrl+X,然後按Y再回車鍵即可完成保存並退出。

然後etc-update:

然後按-3,再按回車鍵覆蓋:

結果還是行不通啊!!!有一個論壇這樣說:使用自動配置內核有可能自動配置到不想要的東西,這也可能會產生相關的影響!

還有一種命令可以嘗試下(我目前認為的最終解決方案):

輸入u接受,再次emerge這個genkernel:

等待安裝完成,這需要一會兒時間。

終於下載完畢了,糾結了我比較久的時間,終於成功下載並安裝了genkernel,這個關於genkernel的相關問題的解決過程到此可以結束了!

 開始編譯

Tips:如果你的genkernel也是上面的問題的,應該是genkernel無法正常下載,所以命令無法使用,不妨嘗試下我上面的方法吧!

我就是倒在了這個genkernel無法編譯的問題上,還好已經解決並且重新下載安裝了,否則只能手動編譯了,但是手動編譯的話如果沒有後面的initramfs文件,這可能也會導致系統無法正常啟動,這個文件同樣需要genkernel來下載的。

由於我不採用手動編譯,所以可以參考下:https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Kernel,這裡詳細介紹手動編譯內核的步驟。

(註:在內核參數選擇的過程中,輸入/可以進行搜索,空格進行選擇和反選,按兩下esc進行返回上一級目錄,方向鍵左右可以切換到save和load,分別進行內核配置文件的保存和導入。預設保存為.config(我建議使用預設文件名,),保存的時候可以輸入文件名,以備下次編譯內核導入,省時省力。內核配置文件保存目錄在/usr/src/linux下。)

困擾了我許久的genkernel問題終於解決了,當然是到了激動人心的時候了,現在開始正式編譯內核了。

(註:如果引導分區不是使用ext2或ext3作為文件系統,它可能需要使用genkernel --menuconfig all來手動配置內核,併在內核中添加對這個具體文件系統的支持(比如:不是作為一個模塊)。LVM2用戶可能要作為參數來添加--lvm

重新輸入非常熟悉的genkernel all:

編譯過程十分漫長,請耐心等待,先去睡一晚覺正,明天再來查看編譯結果。(其實我也不知道究竟需要多少時間,還是那句話,耐心等待吧!)

(用時只是一個小時多點)

我看到了內核已經編譯完成,但也出現了相關的警告,一般情況下出現警告請選擇無視,雖有風險但一般是沒有什麼問題,只有出現ERROR才要必須處理的問題。

Tips:內核可以重覆編譯,不會影響安裝過程的。(你也可以通過genkernel --menuconfig all來手動配置,同樣具有定製性,不過這是半自動編譯方法。)

一旦genkernel完成,將創建一個內核、全部的模塊和初始化記憶體文件(initramfs)。我們將在文檔後面配置引導器的時候使用這個內核和initrd。記下內核和initrd名字作為編輯引導器配置文件的信息。initrd將在後執行硬體檢測之後、“真實”系統啟動之前立即啟動。

到了這裡配置內核環節就已經結束,剩下的安裝步驟請見下一期的筆記!

本文將會同步到公眾號qq596044192中,有興趣的可以關註一下:

2018-09-03


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

-Advertisement-
Play Games
更多相關文章
  • Cmder是Windows下的命令行工具,用來代替Windows自帶的cmd 官網:http://cmder.net/ 這裡下載Full版本 https://github.com/cmderdev/cmder/releases/tag/v1.3.6 下載解壓打開即可使用 如何將Cmder添加到右鍵菜 ...
  • 最近看到OVS用戶態的代碼,在接收內核態信息的時候,使用了Epoll多路復用機制,對其十分不解,於是從網上找了一些資料,學習了一下《UNIX網路變成捲1:套接字聯網API》這本書對應的章節,網上雖然關於該主題的博文很多,並且講解的很詳細,但是在這裡還是做一個學習筆記,記錄一下自己的想法。 IO模型 ...
  • Fedora 28 本身是沒有列印服務的。我們需要安裝下列軟體: System-Config-Printer Common Unix Printing System - CUPS hplip.x86_64 : HP Linux Imaging and Printing Project hplip-3 ...
  • 一. 開篇說明 1. 關於Linux安裝MySQL, 設置伺服器防火牆查閱往期隨筆, 這裡不再贅述. 2. 本篇要求對資料庫有基本瞭解即可. 二. 設置遠程登錄用戶 1. 登錄到Linux伺服器mysql mysql -u root -p 2. 創建遠程登錄用戶和用戶名, 註意關於許可權和ip地址網段 ...
  • 1.休眠方式 在內核中,休眠方式有很多種,可以通過下麵命令查看 常用的休眠方式有freeze,standby, mem, disk freeze: 凍結I/O設備,將它們置於低功耗狀態,使處理器進入空閑狀態,喚醒最快,耗電比其它standby, mem, disk方式高 standby:除了凍結I/ ...
  • 今天給大家介紹一個在linux下如何捕獲程式崩潰異常的方法 一、google breakpad源碼的下載和編譯 1、https://github.com/google/breakpad.git,源碼地址,git clone XXX克隆即可 2、cd breakpad 3、./configure 4、 ...
  • 在搭建環境時,還遇到了瀏覽器和驅動版本不匹配的一些問題,這裡單獨拿出來做個小結。 Chrome瀏覽器啟動時出現:“您使用的是不受支持的命令行標記:--ignore-certificate-errors.穩定性和安全性會有所下降”的字樣 原因:selenium2啟動Chrome瀏覽器是需要安裝驅動包的 ...
  • <script language="javascript" type="text/javascript"> // 生成目錄索引列表// ref: http://www.cnblogs.com/wangqiguo/p/4355032.html// modified by: zzqfunction Ge ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...