Gentoo安裝配置

Gentoo安裝過(guò)程

(一) 磁盤(pán)準(zhǔn)備

1、硬盤(pán)分區(qū)

通過(guò)cfdisk分區(qū)工具將硬盤(pán)進(jìn)行分區(qū)操作,總計(jì)分為4個(gè)區(qū)如下所示

/deve/sda1 efi 分區(qū)

/dev/sda2 swap 分區(qū)

/dev/sda3 root 分區(qū)

/dev/sda4 home 分區(qū)

2、格式化分區(qū)

對(duì)已經(jīng)完成分區(qū)的磁盤(pán)進(jìn)行格式化,其中對(duì)efi分區(qū)執(zhí)行vfat格式化,root分區(qū)和home分區(qū)分別個(gè)是化為ext4格式,創(chuàng)建swap分區(qū)并啟用,具體如下代碼

mkfs.vfat /dev/sda1
mkswap /dev/sda2
swapon /dev/sda2
mkfs.ext4 /dev/sda3
mkfs.ext4 /dev/sda4

在完成分區(qū)格式化操作后將掛載/mnt/gentoo分區(qū)到root分區(qū),并在/mnt/gentoo下面創(chuàng)建boot目錄和home目錄并按照之前設(shè)置的分區(qū)分別完成掛載操作

mount /dev/sda3 /mnt/gentoo
mkdir /mnt/gentoo/boot
mkdir /mnt/gentoo/home
mount /dev/sda1 /mnt/gentoo/boot
mount /dev/sda4 /mnt/gentoo/home    

(二) 安裝Gentoo安裝文件

1、安裝階段tar包

(1)時(shí)間修改

在之前的安裝過(guò)程中由于鏡像自動(dòng)同步的時(shí)間并非是北京時(shí)區(qū)的時(shí)間因此需要手動(dòng)修改系統(tǒng)時(shí)間,但是新版本的安裝鏡像已經(jīng)自動(dòng)檢測(cè)到了正確的時(shí)區(qū)因此不需要對(duì)時(shí)間進(jìn)行修改,因此該操作略過(guò),但是如果確有需要修改時(shí)間可以通過(guò)date命令完成時(shí)間修改,如下所示:

date 012523162017   該命令將系統(tǒng)時(shí)間設(shè)置為2017-01-25 23:16

(2)下載tar包

前往掛載根文件系統(tǒng)的Gentoo掛載點(diǎn)(很像/mnt/gentoo):

cd /mnt/gentoo

根據(jù)不同的安裝媒介,這里有一堆工具可用來(lái)下載一個(gè)階段。這些工具之一就是links,一個(gè)非圖形化、目錄驅(qū)動(dòng)的瀏覽器。要下載一個(gè)階段,訪(fǎng)問(wèn)到Gentoo鏡像列表形如:

links https://www.gentoo.org/downloads/mirrors/

通過(guò)links工具軟件選擇相應(yīng)的源并下載stage3文件,下載完成后將下載文件解壓

tar xvjpf stage3-*.tar.bz2 --xattrs

(3)配置編譯選項(xiàng)

通過(guò)對(duì)/mnt/gentoo/etc/portage/make.conf文件進(jìn)行修改配置編譯選項(xiàng)
此處采用nano工具進(jìn)行編輯操作
其中重點(diǎn)的是對(duì)CFLAGS和CXXFLAGS

CFLAGS="-march=native -O2 -pipe"
# Use the same settings for both variables
CXXFLAGS="${CFLAGS}"

同時(shí)添加MAKEOPTS參數(shù),并針對(duì)本機(jī)的cpu配置參數(shù)

在make.conf中聲明MAKEOPTS的示例
MAKEOPTS="-j2" 其中2代表1個(gè)cpu+1(1個(gè)線(xiàn)程+1)

自此完成了gentoo安裝文件的安裝操作

(三) 安裝Gentoo基本系統(tǒng)

本部分完成Gentoo的基本系統(tǒng)的安裝操作

1、執(zhí)行Chrooting

通過(guò)配置一些可選參數(shù)實(shí)現(xiàn)進(jìn)入安裝的基本系統(tǒng)應(yīng)用環(huán)境

(1)配置鏡像站點(diǎn)

通過(guò)配置系統(tǒng)軟件下載的鏡像站點(diǎn)實(shí)現(xiàn)更快的軟件下載和更新,本處跟之前類(lèi)似均選擇163鏡像源

mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf

通過(guò)該命令將選擇的鏡像源寫(xiě)入make.conf配置文件
完整鏡像選擇后完成Gentoo主倉(cāng)庫(kù)的配置
通過(guò)/etc/portage/repos.conf/gentoo.conf文件來(lái)配置Gentoo的主倉(cāng)庫(kù)。這個(gè)文件包含了更新Portage樹(shù)(包含Portage需要下載和安裝軟件包所需要的信息的一個(gè)ebuild和相關(guān)文件的集合)所需要的同步信息。通過(guò)幾個(gè)簡(jiǎn)單的步驟就可以完成Gentoo主倉(cāng)庫(kù)的配置。首先,如果它不存在,則創(chuàng)建repos.conf目錄

mkdir /mnt/gentoo/etc/portage/repos.conf

接下來(lái),復(fù)制Portage提供的Gentoo倉(cāng)庫(kù)配置文件到這個(gè)(新創(chuàng)建的)目錄:

cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf

通過(guò)使用cat命令來(lái)看一眼。文件里的內(nèi)容應(yīng)該是.ini格式并且看起來(lái)像是這樣:

[gentoo]
location = /usr/portage
sync-type = rsync
sync-uri = rsync://rsync.gentoo.org/gentoo-portage
auto-sync = yes

(2)復(fù)制DNS信息

在進(jìn)行新環(huán)境之前,還有一件要做的事情就是復(fù)制/etc/resolv.conf中的DNS信息。需要完成這個(gè)來(lái)確保即使進(jìn)入到新環(huán)境后網(wǎng)絡(luò)仍然可以使用。/etc/resolv.conf包含著當(dāng)前網(wǎng)絡(luò)中的DNS服務(wù)器。
要復(fù)制這個(gè)信息,建議通過(guò)cp命令的-L選項(xiàng)。這可以保障如果/etc/resolv.conf是一個(gè)符號(hào)鏈接的話(huà),復(fù)制的是那個(gè)目標(biāo)文件而不是這個(gè)符號(hào)文件自己。否則在新環(huán)境中,符號(hào)文件將指向一個(gè)不存在的文件(因?yàn)殒溄幽繕?biāo)非??赡懿粫?huì)在新環(huán)境中)。

cp -L /etc/resolv.conf /mnt/gentoo/etc/

(3)掛載必要的文件系統(tǒng)

為了確保新環(huán)境正常工作,需要確保一些文件系統(tǒng)可以正常使用。需要提供的文件系統(tǒng)是:

  • /proc/ 一個(gè)pseudo文件系統(tǒng)(看起來(lái)像是常規(guī)文件,事實(shí)上卻是實(shí)時(shí)生成的),由Linux內(nèi)核暴露的一些環(huán)境信息
  • /sys/ 一個(gè)pseudo文件系統(tǒng),像要被取代的/proc/一樣,比/proc/更加有結(jié)構(gòu)
  • /dev/ 是一個(gè)包含全部設(shè)備文件的常規(guī)文件系統(tǒng),一部分由Linux設(shè)備管理器(通常是udev)管理

/proc/位置將要掛載到/mnt/gentoo/proc/,而其它的兩個(gè)都是綁定掛載。字面上的意思是,例如/mnt/gentoo/sys/事實(shí)上就是/sys/(它只是同一個(gè)文件系統(tǒng)的第二個(gè)條目點(diǎn)),而/mnt/gentoo/proc/是(可以說(shuō)是)文件系統(tǒng)的一個(gè)新的掛載。
具體操作命令如下

mount -t proc proc /mnt/gentoo/proc
mount --rbind /sys /mnt/gentoo/sys
mount --make-rslave /mnt/gentoo/sys
mount --rbind /dev /mnt/gentoo/dev
mount --make-rslave /mnt/gentoo/dev

(4)進(jìn)入新系統(tǒng)環(huán)境

現(xiàn)在所有的分區(qū)已經(jīng)初始化,并且基礎(chǔ)環(huán)境已經(jīng)安裝,是時(shí)候進(jìn)入到新的安裝環(huán)境了。這意思著會(huì)話(huà)將把根(所能訪(fǎng)問(wèn)到的最頂層位置)從當(dāng)前的安裝環(huán)境(安裝CD或其他安裝媒介)變?yōu)榘惭b系統(tǒng)(叫做初始化分區(qū))。因此叫作change root或chroot。
完成chroot有三個(gè)步驟:

  • 使用chroot將根位置從/(在安裝媒介里)更改成/mnt/gentoo/(在分區(qū)里)
  • 使用source命令將一些設(shè)置(那些在/etc/profile中的)重新載入到內(nèi)存中
  • 更改主提示符來(lái)幫助我們記住當(dāng)前會(huì)話(huà)在一個(gè)chroot環(huán)境里面

具體命令如下:

chroot /mnt/gentoo /bin/bash
source /etc/profile
export PS1="(chroot) $PS1"

2、配置Portage

(1)安裝Portage快照

接下來(lái),是安裝Portage快照,一個(gè)用來(lái)告訴Portage哪些軟件標(biāo)題可用于安裝、哪些配置文件可以由管理員選擇等等的文件集合。建議使用emerge-webrsync。這將從Gentoo的一介鏡像中得到最新的Portage快照(Gentoo每天發(fā)布一個(gè)基準(zhǔn))并安裝到系統(tǒng)中。

(2)可選:更新Portage樹(shù)

Portage樹(shù)可以更新到最新版本。前面的emerge-webrsync命令將安裝一個(gè)最近的Portage快照(通常是24小時(shí)以?xún)?nèi)),所以這一步是可選的。
假設(shè)需要最新更新的包(1小時(shí)以?xún)?nèi)),可以使用emerge --sync。這和s命令將使用rsync協(xié)議來(lái)更新Portage樹(shù)(之前通過(guò)emerge-webrsync獲得的)到最新?tīng)顟B(tài)。

emerge --sync

在慢速的終端上,比如一些framebuffer或者串口控制臺(tái),建議使用--quiet選項(xiàng)來(lái)加速這個(gè)進(jìn)程:

emerge --sync --quiet

(3)閱讀新聞條目

當(dāng)同步Portage樹(shù)到系統(tǒng)時(shí),它可能警告用戶(hù)一條類(lèi)似于下面的信息:

Portage通知用戶(hù)關(guān)于新聞條目
* IMPORTANT: 2 news items need reading for repository 'gentoo'.
* Use eselect news to read news items.

Portage新聞條目的創(chuàng)建是為了提供一個(gè)通信媒介,通過(guò)rsycn樹(shù)來(lái)推送重要的消息給用戶(hù)。要管理它們,使用eselect news。eselect應(yīng)用程序是一個(gè)Gentoo應(yīng)用程序,它允許一個(gè)通用的管理界面完成對(duì)系統(tǒng)的變更和操作。在這里,要用到eselect的news模塊。
對(duì)于news模塊,最常用的有三個(gè)操作:

  • 使用list顯示一個(gè)可用新聞條目的預(yù)覽。
  • 使用read來(lái)閱讀新聞條目。
  • 使用purge將在新聞條目閱讀后刪除,并且不能再次閱讀。
eselect news list
eselect news read

更多關(guān)于新聞閱讀器的信息可以通過(guò)其手冊(cè)頁(yè)查看:

man news.eselect

(4)選擇正確的配置文件

配置文件是任何一個(gè)Gentoo系統(tǒng)的積木。它不僅指定USE、CFLAGS和其它重要變量的默認(rèn)值,還會(huì)鎖定系統(tǒng)的包版本范圍。這些設(shè)定全是由Gentoo的Portage開(kāi)發(fā)者們來(lái)維護(hù)。
使用eselect,你能看到當(dāng)前系統(tǒng)正在使用什么配置文件,現(xiàn)在來(lái)使用profile模塊:

root #eselect profile list
Available profile symlink targets:
[1]   default/linux/amd64/13.0 *
[2]   default/linux/amd64/13.0/desktop
[3]   default/linux/amd64/13.0/desktop/gnome
[4]   default/linux/amd64/13.0/desktop/kde

這只是一個(gè)示例,根據(jù)個(gè)人的情況選擇需要的,使用如下命令選擇

eselect profile set 2

由于我要安裝kde5桌面,也就是plasma桌面并且要使用systemd作為初始化腳本,因此需要配置一下package.use文件

具體命令如下

echo "media-video/ffmpeg cpu_flags_x86_mmxext" > /etc/portage/package.use/ffmpeg

(5)更新@world集合

在完成了各項(xiàng)配置后為了是配置生效需要更新world集合尤其是采用systemd作為啟動(dòng)腳本管理,具體命令如下

emerge --ask --update --deep --newuse @world

3、時(shí)區(qū)配置

為系統(tǒng)選擇時(shí)區(qū)。在/usr/share/zoneinfo/中查找可用的時(shí)區(qū),然后寫(xiě)進(jìn)/etc/timezone文件。

ls /usr/share/zoneinfo

假設(shè)要選擇的時(shí)區(qū)是Asia/Shanghai:

echo "Asia/Shanghai" > /etc/timezone

請(qǐng)避免使用/usr/share/zoneinfo/Etc/GMT*時(shí)區(qū),它們的名字并不意味著想要的時(shí)區(qū)。例如,GMT-8實(shí)際上是GMT+8。
接下來(lái),重新配置sys-libs/timezone-data包,將會(huì)為我們基于/etc/timezone條目更新/etc/localtime文件。/etc/localtime文件用于讓系統(tǒng)的C類(lèi)庫(kù)知道系統(tǒng)在什么時(shí)區(qū)。

emerge --config sys-libs/timezone-data

4、配置地區(qū)

大多數(shù)用戶(hù)只想在他們的系統(tǒng)上使用一或兩個(gè)地區(qū)。地區(qū)不只是指定系統(tǒng)應(yīng)該使用的與系統(tǒng)進(jìn)行交互的語(yǔ)言,同時(shí)也指定了字符串排序,日期和時(shí)間的顯示等規(guī)則。系統(tǒng)應(yīng)該支持的地區(qū)應(yīng)該在/etc/locale.gen中提到。

nano -w /etc/locale.gen

下面的地區(qū)是一個(gè)示例,展示了同時(shí)使用英語(yǔ)(美國(guó))和中文(中國(guó))及附加字符格式(如UTF-8)。

FILE /etc/locale.gen啟用US和CN地區(qū)及附加字符格式
en_US ISO-8859-1
en_US.UTF-8 UTF-8
zh_CN GBK
zh_CN.UTF-8 UTF-8

<font color="red">警告 強(qiáng)烈建議使用至少一個(gè)UTF-8格式的地區(qū)設(shè)置,因?yàn)橛行?yīng)用程序可能需要它。</font>
下一步是運(yùn)行l(wèi)ocale-gen。它將生成/etc/locale.gen文件中指定的所有地區(qū)。

locale-gen

要驗(yàn)證所選擇的地區(qū)當(dāng)前可用,運(yùn)行l(wèi)ocale -a。等完成后,我們就來(lái)設(shè)定系統(tǒng)級(jí)別的區(qū)域設(shè)置。我們又一次使用eselect來(lái)做這件事,現(xiàn)在使用locale模塊。通過(guò)eselect locale list可顯示可用的目標(biāo):

eselect locale list

通過(guò)eselect locale set VALUE可以設(shè)定正確的地區(qū):
在完成了地區(qū)設(shè)置后重新加載系統(tǒng)環(huán)境:

env-update && source /etc/profile && export PS1="(chroot) $PS1"

(四)配置Linux內(nèi)核

1、安裝內(nèi)核源碼

首先安裝內(nèi)核源碼包

emerge --ask sys-kernel/gentoo-sources

2、手動(dòng)配置內(nèi)核

首先可以通過(guò)lspci程序來(lái)檢測(cè)硬件信息,該程序在sys-apps/pciutils,安裝該軟件

emerge --ask sys-apps/pciutils
lspci -k //檢測(cè)系統(tǒng)硬件

檢測(cè)完系統(tǒng)硬件設(shè)備下一步就開(kāi)始手動(dòng)編譯內(nèi)核

cd /usr/src/linux
make menuconfig

操作系統(tǒng)內(nèi)核編譯可以參考金步國(guó)的Linux-4.4-x86_64 內(nèi)核配置選項(xiàng)簡(jiǎn)介

http://www.jinbuguo.com/kernel/longterm-linux-kernel-options.html

在進(jìn)行內(nèi)核編譯前由于iwlwifi驅(qū)動(dòng)編譯的情況需要將采用的驅(qū)動(dòng)編譯到內(nèi)核因此需要先安裝系統(tǒng)所需的firmware固件

emerge --ask sys-kernel/linux-firmware

手動(dòng)配置完內(nèi)核后建議保存內(nèi)核配置到文件以備將來(lái)使用,隨后將編譯和安裝內(nèi)核

make && make modules_install

編譯完成后復(fù)制內(nèi)核鏡像到/boot分區(qū)

make install

完成內(nèi)核復(fù)制后可以選擇生產(chǎn)一個(gè)initramfs,創(chuàng)建的原因是當(dāng)部分文件系統(tǒng)在獨(dú)立的分區(qū)(如:/usr,/var)就需要通過(guò)initramfs來(lái)完成分區(qū)掛載,initramfs需要通過(guò)genkernel來(lái)完成,因此需要先安裝該軟件

emerge --ask sys-kernel/genkernel //采用rc作為初始化腳本
emerge --ask sys-kernel/genkernel-next  //采用systemd作為初始化腳本
genkernel --install initramfs   ///通過(guò)該命令創(chuàng)建initramfs

如果覺(jué)得手動(dòng)配置較為麻煩也可以通過(guò)genkernel工具來(lái)自動(dòng)完成內(nèi)核構(gòu)建

genkernel all

<font color=red>注意 需要將iwlwifi驅(qū)動(dòng)手動(dòng)編譯到內(nèi)核參數(shù)

選中 CONFIG_FIRMWARE_IN_KERNEL    
添加對(duì)應(yīng)的iwlwifi-xxxx.ucode 到該 CONFIG_EXTRA_FIRMWARE
同時(shí)指定iwlwifi-xxxx.ucode 所在目錄 CONFIG_EXTRA_FIRMWARE_DIR 

</font>
自此完成了操作系統(tǒng)內(nèi)核的編譯

(五)系統(tǒng)配置

該階段完成對(duì)整個(gè)系統(tǒng)的配置工作

1、文件系統(tǒng)配置fstab

按照自己的分區(qū)設(shè)置配置相應(yīng)的/boot,/root,/home的掛載點(diǎn),建議通過(guò)UUID來(lái)標(biāo)識(shí)磁盤(pán)而不是用/dev/sdaX來(lái)標(biāo)識(shí),可以通過(guò)blkid工具來(lái)查詢(xún)每個(gè)磁盤(pán)的UUID

nano /etc/fstab

修改好硬盤(pán)掛載文件后可以配置hostname,修改root密碼

nano -w /etc/conf.d/hostname
passwd   //修改root密碼

下一步安裝日志工具、網(wǎng)絡(luò)工具、定時(shí)任務(wù)

emerge --ask app-admin/sysklogd
emerge --ask sys-process/cronie
emerge --ask net-misc/dhcpcd
emerge --ask net-dialup/ppp

2、配置bootloader

在完成了一系列基本的系統(tǒng)安裝配置后需要完成最后一步,配置bootloader也就是引導(dǎo)器,我的系統(tǒng)默認(rèn)使用grub2作為引導(dǎo),首先需要安裝grub2軟件,同時(shí)因?yàn)槲沂遣捎胾efi的,因此需要添加一些額外的標(biāo)記

echo 'GRUB_PLATFORMS="efi-64"' >> /etc/portage/make.conf
emerge --ask sys-boot/grub:2

grub2軟件安裝好后通過(guò)grub-install命令安裝GRUB2所需的文件到/boot/grub/目錄

grub-install /dev/sda   //bios
grub-install --target=x86_64-efi --efi-directory=/boot   //uefi

<font color=red>

注意:如果采用systemd作為初始化腳本那么需要額外修改一些配置
修改/etc/default/grub 文件添加GRUB2 systemd 配置示例
GRUB_CMDLINE_LINUX="init=/usr/lib/systemd/systemd"
</font>
修改完配置文件后需要生成GRUB2

grub-mkconfig -o /boot/grub/grub.cfg

自此整個(gè)基礎(chǔ)的系統(tǒng)的安裝與配置已經(jīng)完成

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • (寫(xiě)在2018年11月11日)系統(tǒng)環(huán)境:UEFI + GPT分區(qū)方案:EFI分區(qū)、swap、根分區(qū) 開(kāi)啟SSH 使...
    三十閱讀 4,830評(píng)論 0 3
  • 各位linux愛(ài)好者和使用者都自己習(xí)慣使用的版本,本人之前一直使用的是centos7,但是為了裝逼(不錯(cuò)就是這個(gè)理...
    小Gentoo愛(ài)好者閱讀 11,754評(píng)論 6 26
  • 折騰gentoo有段時(shí)間, 趁著放假,做做筆記;根據(jù)官網(wǎng)的 Gentoo Handbook 來(lái)一步步記錄裝gent...
    南方老F閱讀 15,531評(píng)論 3 14
  • tip: Gentoo 的 wiki 寫(xiě)的非常好,邊折騰邊學(xué)習(xí)。 安裝 啟動(dòng) 先找個(gè)鏡像站下載iso文件。然后直接...
    喲破賽呦閱讀 1,279評(píng)論 0 2
  • 1.描述計(jì)算機(jī)的組成及其功能 (一)計(jì)算機(jī)的組成 1.CPU 2.CPU風(fēng)扇 3.BIOS 4.內(nèi)存 5.硬盤(pán) 6...
    whamai閱讀 1,656評(píng)論 0 1

友情鏈接更多精彩內(nèi)容