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)完成