Gentoo安裝過程
(一) 磁盤準備
1、硬盤分區(qū)
通過cfdisk分區(qū)工具將硬盤進行分區(qū)操作,總計分為4個區(qū)如下所示
/deve/sda1 efi 分區(qū)
/dev/sda2 swap 分區(qū)
/dev/sda3 root 分區(qū)
/dev/sda4 home 分區(qū)
2、格式化分區(qū)
對已經(jīng)完成分區(qū)的磁盤進行格式化,其中對efi分區(qū)執(zhí)行vfat格式化,root分區(qū)和home分區(qū)分別個是化為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目錄并按照之前設置的分區(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)時間修改
在之前的安裝過程中由于鏡像自動同步的時間并非是北京時區(qū)的時間因此需要手動修改系統(tǒng)時間,但是新版本的安裝鏡像已經(jīng)自動檢測到了正確的時區(qū)因此不需要對時間進行修改,因此該操作略過,但是如果確有需要修改時間可以通過date命令完成時間修改,如下所示:
date 012523162017 該命令將系統(tǒng)時間設置為2017-01-25 23:16
(2)下載tar包
前往掛載根文件系統(tǒng)的Gentoo掛載點(很像/mnt/gentoo):
cd /mnt/gentoo
根據(jù)不同的安裝媒介,這里有一堆工具可用來下載一個階段。這些工具之一就是links,一個非圖形化、目錄驅動的瀏覽器。要下載一個階段,訪問到Gentoo鏡像列表形如:
links https://www.gentoo.org/downloads/mirrors/
通過links工具軟件選擇相應的源并下載stage3文件,下載完成后將下載文件解壓
tar xvjpf stage3-*.tar.bz2 --xattrs
(3)配置編譯選項
通過對/mnt/gentoo/etc/portage/make.conf文件進行修改配置編譯選項
此處采用nano工具進行編輯操作
其中重點的是對CFLAGS和CXXFLAGS
CFLAGS="-march=native -O2 -pipe"
# Use the same settings for both variables
CXXFLAGS="${CFLAGS}"
同時添加MAKEOPTS參數(shù),并針對本機的cpu配置參數(shù)
在make.conf中聲明MAKEOPTS的示例
MAKEOPTS="-j2" 其中2代表1個cpu+1(1個線程+1)
自此完成了gentoo安裝文件的安裝操作
(三) 安裝Gentoo基本系統(tǒng)
本部分完成Gentoo的基本系統(tǒng)的安裝操作
1、執(zhí)行Chrooting
通過配置一些可選參數(shù)實現(xiàn)進入安裝的基本系統(tǒng)應用環(huán)境
(1)配置鏡像站點
通過配置系統(tǒng)軟件下載的鏡像站點實現(xiàn)更快的軟件下載和更新,本處跟之前類似均選擇163鏡像源
mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
通過該命令將選擇的鏡像源寫入make.conf配置文件
完整鏡像選擇后完成Gentoo主倉庫的配置
通過/etc/portage/repos.conf/gentoo.conf文件來配置Gentoo的主倉庫。這個文件包含了更新Portage樹(包含Portage需要下載和安裝軟件包所需要的信息的一個ebuild和相關文件的集合)所需要的同步信息。通過幾個簡單的步驟就可以完成Gentoo主倉庫的配置。首先,如果它不存在,則創(chuàng)建repos.conf目錄
mkdir /mnt/gentoo/etc/portage/repos.conf
接下來,復制Portage提供的Gentoo倉庫配置文件到這個(新創(chuàng)建的)目錄:
cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
通過使用cat命令來看一眼。文件里的內(nèi)容應該是.ini格式并且看起來像是這樣:
[gentoo]
location = /usr/portage
sync-type = rsync
sync-uri = rsync://rsync.gentoo.org/gentoo-portage
auto-sync = yes
(2)復制DNS信息
在進行新環(huán)境之前,還有一件要做的事情就是復制/etc/resolv.conf中的DNS信息。需要完成這個來確保即使進入到新環(huán)境后網(wǎng)絡仍然可以使用。/etc/resolv.conf包含著當前網(wǎng)絡中的DNS服務器。
要復制這個信息,建議通過cp命令的-L選項。這可以保障如果/etc/resolv.conf是一個符號鏈接的話,復制的是那個目標文件而不是這個符號文件自己。否則在新環(huán)境中,符號文件將指向一個不存在的文件(因為鏈接目標非常可能不會在新環(huán)境中)。
cp -L /etc/resolv.conf /mnt/gentoo/etc/
(3)掛載必要的文件系統(tǒng)
為了確保新環(huán)境正常工作,需要確保一些文件系統(tǒng)可以正常使用。需要提供的文件系統(tǒng)是:
- /proc/ 一個pseudo文件系統(tǒng)(看起來像是常規(guī)文件,事實上卻是實時生成的),由Linux內(nèi)核暴露的一些環(huán)境信息
- /sys/ 一個pseudo文件系統(tǒng),像要被取代的/proc/一樣,比/proc/更加有結構
- /dev/ 是一個包含全部設備文件的常規(guī)文件系統(tǒng),一部分由Linux設備管理器(通常是udev)管理
/proc/位置將要掛載到/mnt/gentoo/proc/,而其它的兩個都是綁定掛載。字面上的意思是,例如/mnt/gentoo/sys/事實上就是/sys/(它只是同一個文件系統(tǒng)的第二個條目點),而/mnt/gentoo/proc/是(可以說是)文件系統(tǒng)的一個新的掛載。
具體操作命令如下
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)進入新系統(tǒng)環(huán)境
現(xiàn)在所有的分區(qū)已經(jīng)初始化,并且基礎環(huán)境已經(jīng)安裝,是時候進入到新的安裝環(huán)境了。這意思著會話將把根(所能訪問到的最頂層位置)從當前的安裝環(huán)境(安裝CD或其他安裝媒介)變?yōu)榘惭b系統(tǒng)(叫做初始化分區(qū))。因此叫作change root或chroot。
完成chroot有三個步驟:
- 使用chroot將根位置從/(在安裝媒介里)更改成/mnt/gentoo/(在分區(qū)里)
- 使用source命令將一些設置(那些在/etc/profile中的)重新載入到內(nèi)存中
- 更改主提示符來幫助我們記住當前會話在一個chroot環(huán)境里面
具體命令如下:
chroot /mnt/gentoo /bin/bash
source /etc/profile
export PS1="(chroot) $PS1"
2、配置Portage
(1)安裝Portage快照
接下來,是安裝Portage快照,一個用來告訴Portage哪些軟件標題可用于安裝、哪些配置文件可以由管理員選擇等等的文件集合。建議使用emerge-webrsync。這將從Gentoo的一介鏡像中得到最新的Portage快照(Gentoo每天發(fā)布一個基準)并安裝到系統(tǒng)中。
(2)可選:更新Portage樹
Portage樹可以更新到最新版本。前面的emerge-webrsync命令將安裝一個最近的Portage快照(通常是24小時以內(nèi)),所以這一步是可選的。
假設需要最新更新的包(1小時以內(nèi)),可以使用emerge --sync。這和s命令將使用rsync協(xié)議來更新Portage樹(之前通過emerge-webrsync獲得的)到最新狀態(tài)。
emerge --sync
在慢速的終端上,比如一些framebuffer或者串口控制臺,建議使用--quiet選項來加速這個進程:
emerge --sync --quiet
(3)閱讀新聞條目
當同步Portage樹到系統(tǒng)時,它可能警告用戶一條類似于下面的信息:
Portage通知用戶關于新聞條目
* IMPORTANT: 2 news items need reading for repository 'gentoo'.
* Use eselect news to read news items.
Portage新聞條目的創(chuàng)建是為了提供一個通信媒介,通過rsycn樹來推送重要的消息給用戶。要管理它們,使用eselect news。eselect應用程序是一個Gentoo應用程序,它允許一個通用的管理界面完成對系統(tǒng)的變更和操作。在這里,要用到eselect的news模塊。
對于news模塊,最常用的有三個操作:
- 使用list顯示一個可用新聞條目的預覽。
- 使用read來閱讀新聞條目。
- 使用purge將在新聞條目閱讀后刪除,并且不能再次閱讀。
eselect news list
eselect news read
更多關于新聞閱讀器的信息可以通過其手冊頁查看:
man news.eselect
(4)選擇正確的配置文件
配置文件是任何一個Gentoo系統(tǒng)的積木。它不僅指定USE、CFLAGS和其它重要變量的默認值,還會鎖定系統(tǒng)的包版本范圍。這些設定全是由Gentoo的Portage開發(fā)者們來維護。
使用eselect,你能看到當前系統(tǒng)正在使用什么配置文件,現(xiàn)在來使用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
這只是一個示例,根據(jù)個人的情況選擇需要的,使用如下命令選擇
eselect profile set 2
由于我要安裝kde5桌面,也就是plasma桌面并且要使用systemd作為初始化腳本,因此需要配置一下package.use文件
具體命令如下
echo "media-video/ffmpeg cpu_flags_x86_mmxext" > /etc/portage/package.use/ffmpeg
(5)更新@world集合
在完成了各項配置后為了是配置生效需要更新world集合尤其是采用systemd作為啟動腳本管理,具體命令如下
emerge --ask --update --deep --newuse @world
3、時區(qū)配置
為系統(tǒng)選擇時區(qū)。在/usr/share/zoneinfo/中查找可用的時區(qū),然后寫進/etc/timezone文件。
ls /usr/share/zoneinfo
假設要選擇的時區(qū)是Asia/Shanghai:
echo "Asia/Shanghai" > /etc/timezone
請避免使用/usr/share/zoneinfo/Etc/GMT*時區(qū),它們的名字并不意味著想要的時區(qū)。例如,GMT-8實際上是GMT+8。
接下來,重新配置sys-libs/timezone-data包,將會為我們基于/etc/timezone條目更新/etc/localtime文件。/etc/localtime文件用于讓系統(tǒng)的C類庫知道系統(tǒng)在什么時區(qū)。
emerge --config sys-libs/timezone-data
4、配置地區(qū)
大多數(shù)用戶只想在他們的系統(tǒng)上使用一或兩個地區(qū)。地區(qū)不只是指定系統(tǒng)應該使用的與系統(tǒng)進行交互的語言,同時也指定了字符串排序,日期和時間的顯示等規(guī)則。系統(tǒng)應該支持的地區(qū)應該在/etc/locale.gen中提到。
nano -w /etc/locale.gen
下面的地區(qū)是一個示例,展示了同時使用英語(美國)和中文(中國)及附加字符格式(如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">警告 強烈建議使用至少一個UTF-8格式的地區(qū)設置,因為有些應用程序可能需要它。</font>
下一步是運行l(wèi)ocale-gen。它將生成/etc/locale.gen文件中指定的所有地區(qū)。
locale-gen
要驗證所選擇的地區(qū)當前可用,運行l(wèi)ocale -a。等完成后,我們就來設定系統(tǒng)級別的區(qū)域設置。我們又一次使用eselect來做這件事,現(xiàn)在使用locale模塊。通過eselect locale list可顯示可用的目標:
eselect locale list
通過eselect locale set VALUE可以設定正確的地區(qū):
在完成了地區(qū)設置后重新加載系統(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、手動配置內(nèi)核
首先可以通過lspci程序來檢測硬件信息,該程序在sys-apps/pciutils,安裝該軟件
emerge --ask sys-apps/pciutils
lspci -k //檢測系統(tǒng)硬件
檢測完系統(tǒng)硬件設備下一步就開始手動編譯內(nèi)核
cd /usr/src/linux
make menuconfig
操作系統(tǒng)內(nèi)核編譯可以參考金步國的Linux-4.4-x86_64 內(nèi)核配置選項簡介
http://www.jinbuguo.com/kernel/longterm-linux-kernel-options.html
在進行內(nèi)核編譯前由于iwlwifi驅動編譯的情況需要將采用的驅動編譯到內(nèi)核因此需要先安裝系統(tǒng)所需的firmware固件
emerge --ask sys-kernel/linux-firmware
手動配置完內(nèi)核后建議保存內(nèi)核配置到文件以備將來使用,隨后將編譯和安裝內(nèi)核
make && make modules_install
編譯完成后復制內(nèi)核鏡像到/boot分區(qū)
make install
完成內(nèi)核復制后可以選擇生產(chǎn)一個initramfs,創(chuàng)建的原因是當部分文件系統(tǒng)在獨立的分區(qū)(如:/usr,/var)就需要通過initramfs來完成分區(qū)掛載,initramfs需要通過genkernel來完成,因此需要先安裝該軟件
emerge --ask sys-kernel/genkernel //采用rc作為初始化腳本
emerge --ask sys-kernel/genkernel-next //采用systemd作為初始化腳本
genkernel --install initramfs ///通過該命令創(chuàng)建initramfs
如果覺得手動配置較為麻煩也可以通過genkernel工具來自動完成內(nèi)核構建
genkernel all
<font color=red>注意 需要將iwlwifi驅動手動編譯到內(nèi)核參數(shù)
選中 CONFIG_FIRMWARE_IN_KERNEL
添加對應的iwlwifi-xxxx.ucode 到該 CONFIG_EXTRA_FIRMWARE
同時指定iwlwifi-xxxx.ucode 所在目錄 CONFIG_EXTRA_FIRMWARE_DIR
</font>
自此完成了操作系統(tǒng)內(nèi)核的編譯
(五)系統(tǒng)配置
該階段完成對整個系統(tǒng)的配置工作
1、文件系統(tǒng)配置fstab
按照自己的分區(qū)設置配置相應的/boot,/root,/home的掛載點,建議通過UUID來標識磁盤而不是用/dev/sdaX來標識,可以通過blkid工具來查詢每個磁盤的UUID
nano /etc/fstab
修改好硬盤掛載文件后可以配置hostname,修改root密碼
nano -w /etc/conf.d/hostname
passwd //修改root密碼
下一步安裝日志工具、網(wǎng)絡工具、定時任務
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也就是引導器,我的系統(tǒng)默認使用grub2作為引導,首先需要安裝grub2軟件,同時因為我是采用uefi的,因此需要添加一些額外的標記
echo 'GRUB_PLATFORMS="efi-64"' >> /etc/portage/make.conf
emerge --ask sys-boot/grub:2
grub2軟件安裝好后通過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
自此整個基礎的系統(tǒng)的安裝與配置已經(jīng)完成