這期筆記繼續安裝Gentoo,上期我們已經到了可以進入新環境了,這意味着就是將原來的安裝CD或其它介質改為硬盤上安裝系統了,話不多說,馬上開始!
恢復安裝
由於我已經中斷了安裝,對於已經可以進入新環境的用戶來說,這個可以通過恢復安裝來繼續安裝Gentoo。
首先先掛載根分區:
然后復制DNS信息:
如果之前已經復制了,它會提示你是否覆蓋文件,回車確定即可。
掛載必要的文件系統:
進入新環境:
以后的安裝過程中被中斷了,都要通過以上的這些命令來恢復安裝。
配置Portage
從網站安裝ebuild 數據庫快照
接下來,是安裝主 ebuild 版本庫 (repository) 快照.這個快照包含一組文件,包括通知Portage中有關可用軟件的標題(用於安裝),系統管理員可以選擇哪些配置文件,軟件包或 profile 特定新聞 (news) 項目等。
這將從Gentoo的一個鏡像中獲取最新的快照(每天發布)並將其安裝到系統上:

稍等一會兒就好了。
可選:更新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系統的積木。它不僅指定USE、CFLAGS和其它重要變量的默認值,還會鎖定系統的包版本范圍。這些設定全是由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