從零開始安裝Gentoo

前段時(shí)間搞過一次Gentoo,最終以失敗告終,現(xiàn)在正好有時(shí)間卷土重來。
配置過程相當(dāng)復(fù)雜,需要很強(qiáng)的耐心,但整個(gè)過程下來后,會(huì)學(xué)到很多東西。
官方文檔 參考@Gary Wu

  • 準(zhǔn)備工作
    • 下載minimal鏡像
官方鏡像地址:http://distfiles.gentoo.org/releases/
網(wǎng)易鏡像地址:http://mirrors.163.com/gentoo/releases/
    
截止目前最新的是install-amd64-minimal-20180222T214502Z.iso

minimal鏡像和stage3下載地址:
http://mirrors.163.com/gentoo/releases/amd64/autobuilds/current-stage3-amd64/

portage下載地址: 
http://mirrors.163.com/gentoo/releases/snapshots/current/portage-20180220.tar.bz2 

注:如果網(wǎng)絡(luò)較好可以通過網(wǎng)絡(luò)下載stage3和portage。如果提前下載需要拷貝到U盤里,需要的時(shí)候掛載解壓。
我這邊網(wǎng)絡(luò)比較好,選擇在安裝的過程中從網(wǎng)上下載。

- 制作引導(dǎo)U盤

把iso刻錄到U盤里,用來啟動(dòng)引導(dǎo),這里推薦使用UltraISO,啟動(dòng)->寫入硬盤鏡像
- 記錄服務(wù)器硬件配置
因?yàn)樵诎惭b的過程中要自己編譯內(nèi)核,需要配置一些硬件驅(qū)動(dòng)信息,主要是CPU、顯卡、網(wǎng)卡,可以自行查看,配置選好的話可以節(jié)省很多編譯時(shí)間和內(nèi)核資源。

- 安裝基本系統(tǒng)
從U盤啟動(dòng),在boot處輸入: gentoo dopcmcia ,根據(jù)引導(dǎo)進(jìn)入命令行模式,接下來安裝基本系統(tǒng)。
- 分區(qū)
建議分區(qū)規(guī)劃
bios_grub        BIOS啟動(dòng)分區(qū),官方是2M,我這里給9M  
boot    300M     啟動(dòng)系統(tǒng)目錄,掛載目錄: /mnt/gentoo/boot
swap   8192M     
/     剩余All      掛載目錄: /mnt/gentoo

注:系統(tǒng)使用BIOS引導(dǎo)方式,所以不需要EFI分區(qū)

分區(qū)格式(MBR或GPT)直接影響到后邊的GRUB引導(dǎo),本例是MBR分區(qū)(BIOS引導(dǎo)方式)
livecd # parted
select /dev/sda   #選擇操作的磁盤
mklabel gpt    #分區(qū)格式使用MBR
mkpart primary 1M 10M   #BIOS啟動(dòng)分區(qū)必須有,否則grub安裝出錯(cuò)
name 1 grub
set 1 bios_grub on   #設(shè)置BIOS分區(qū)可啟動(dòng)

mkpart primary 10M 310M   #boot系統(tǒng)分區(qū)
name 2 boot
set 2 boot on    #設(shè)置boot分區(qū)為可啟動(dòng)

mkpart primary 310M 8502M   #swap分區(qū)
name 3 swap
mkpart primary 8502M -1  #剩余全部給根分區(qū)
name 4 bootfs
p     查看分區(qū)
quit  退出parted
----------------------------------------------
格式化
mkfs.ext2  /dev/sda1  格式化預(yù)留空間分區(qū)
mkfs.ext2  /dev/sda2  格式化boot分區(qū)
mkswap /dev/sda3        格式化swap分區(qū)
mkfs.ext4 /dev/sda4     格式化根分區(qū)
----------------------------------------------
掛載到/mnt/下
mount /dev/sda4 /mnt/gentoo   先掛載根分區(qū)
mkdir -p /mnt/gentoo/boot  創(chuàng)建boot掛載目錄
mount /dev/sda2 /mnt/gentoo/boot  掛載boot
swapon /dev/sda3   掛載swap
分區(qū)相關(guān)-知識(shí)點(diǎn)總結(jié):

(1)如果是MBR分區(qū)的磁盤,使用以下方法創(chuàng)建ESP:
parted創(chuàng)建的boot_grub和boot分區(qū), 使用mkfs.ext2格式化
-----------------------------------------------------------------------------------------------
(2)關(guān)于parted set命令的flag類型,可參考官方文檔: https://www.gnu.org/software/parted/manual/html_node/set.html

- 配置網(wǎng)絡(luò)
配置網(wǎng)絡(luò)主要是用來下載portage和stage,如果已經(jīng)下載到U盤里,直接掛載U盤拷貝到/mnt/gentoo/os目錄下。
使用如下命令來配置網(wǎng)絡(luò):
ifconfig   查看網(wǎng)絡(luò)標(biāo)識(shí)
net-setup eno16777728  根據(jù)提示輸入IP地址、broadcast、netmask、gateway、DNS和dns search suffix地址(如:qq.com)
使用ping qq.com來測試網(wǎng)絡(luò)是否可用

官方網(wǎng)絡(luò)配置參考:https://wiki.gentoo.org/wiki/Handbook:X86/Installation/Networking#Manual_network_configuration
開啟ssh,配置后邊的東西會(huì)方便很多,比如:命令粘貼或文件粘貼
/etc/init.d/sshd start  #啟動(dòng)ssh服務(wù)
passwd root   #修改root密碼

此時(shí)就可以使用xshell連接了
使用links命令把portage和stage下載到/mnt/gentoo里
cd /mnt/gentoo/  #切換到掛載的根分區(qū)下載包(只有這個(gè)有大空間)
links mirrors.163.com/gentoo
注: stage在releases/x86/current-iso/目錄下; portage在snapshots/目錄下

#解壓(按照下面順序解壓)
xz -d stage3-amd64-20180225T214502Z.tar.xz && tar -xf stage3-amd64-20180225T214502Z.tar  
tar -xjf portage-20180220.tar.bz2 -C /mnt/gentoo/usr/
- 配置make.conf
為了優(yōu)化Gentoo,必須在軟件編譯的時(shí)候指定某些參數(shù),這樣編譯出來的程序運(yùn)行效率將非常高,系統(tǒng)在編譯用到的參數(shù)就在make.conf里,文件路徑是/mnt/gentoo/etc/portage/make.conf.
Gentoo給了我們一個(gè)配置的sample在/mnt/gentoo/usr/share/portage/config/make.conf.example,他里面講的很詳細(xì),下面的是我的make.conf。
vi /mnt/gentoo/etc/portage/make.conf

#USE用于控制軟件的安裝
USE="bindist mmx sse sse2"  
#這兩個(gè)變量使用相同的值,這兩個(gè)變量定義gcc和c++編譯器的優(yōu)化
CFLAGS="-march=native -mtune=native -O2 -pipe" 
CXXFLAGS="${CFLAGS}" 
#指定gcc同時(shí)編譯的數(shù)量,一般是CPU個(gè)數(shù)(或核心數(shù))+1
MAKEOPTS="-j9" 

注:"-march=native"參數(shù),native意思是讓系統(tǒng)自動(dòng)檢測cpu型號(hào)進(jìn)行配置
- 進(jìn)入新環(huán)境
接下來就可以進(jìn)入新環(huán)境/mnt/gentoo, 在chroot進(jìn)入新環(huán)境前需要做一些設(shè)備的掛載和DNS文件復(fù)制
cp -L /etc/resolv.conf /mnt/gentoo/etc/
mount -t proc none /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
使用chroot進(jìn)入新環(huán)境,并更新環(huán)境變量
chroot /mnt/gentoo /bin/bash
env-update
source /etc/profile

為了使portage里的軟件保持最新,最好同步一下
emerge --sync   
注:如果同步出錯(cuò),需要檢查/etc/portage/make.conf文件中的參數(shù)
Gentoo中除了USE和CFLAGS用于優(yōu)化外還有一個(gè)重要的profile,這個(gè)是Gentoo自帶的配置文件,我們只要選擇合適的就行了。

eselect profile list   #列出所有的子版本(帶*號(hào)的是默認(rèn)選項(xiàng))
  [1]   default/linux/amd64/13.0 (stable)*
  [2]   default/linux/amd64/13.0/selinux (dev)
  [3]   default/linux/amd64/13.0/desktop (stable)
  [4]   default/linux/amd64/13.0/desktop/gnome (stable)
  [5]   default/linux/amd64/13.0/desktop/gnome/systemd (stable)
  ......

eselect profile set 12  #選擇對(duì)應(yīng)版本

- 編譯內(nèi)核
選擇一個(gè)內(nèi)核并進(jìn)行安裝
emerge --ask sys-kernel/gentoo-sources

進(jìn)入內(nèi)核源碼
cd /usr/src/linux

手動(dòng)配置內(nèi)核
make menuconfig

注:make menuconfig顯示錯(cuò)誤“Your display is too small to run Menuconfig!”
如果在終端執(zhí)行 make menuconfig ,顯示錯(cuò)誤:
Your display is too small to run Menuconfig!
It must be at least 19 lines by 80 columns.
make[1]: *** [menuconfig] Error 1
make: *** [menuconfig] Error 2
表示xshell終端窗口太小。把終端窗口適當(dāng)?shù)恼{(diào)大(或是直接最大化)就行了。


注:內(nèi)核的配置可以參考官方文檔:https://wiki.gentoo.org/wiki/Handbook:X86/Installation/Kernel

- 內(nèi)核:啟用devtmpfs支持
作用:用來掛載/dev,以便在啟動(dòng)過程中使用關(guān)鍵設(shè)備文件

Device Drivers --->
  Generic Driver Options --->
    [*] Maintain a devtmpfs filesystem to mount at /dev
    [*] Automount devtmpfs at /dev, after the kernel mounted the rootfs
- 內(nèi)核: 啟用SCSI磁盤支持
Device Drivers --->
   SCSI device support  --->
      <*> SCSI disk support
- 內(nèi)核: 選擇必要的文件系統(tǒng)
建議常用的文件系統(tǒng)格式都選擇上,免得用的時(shí)候抓瞎
File systems --->
  <*> Second extended fs support
  <*> The Extended 3 (ext3) filesystem
  <*> The Extended 4 (ext4) filesystem
  <*> Reiserfs support
  <*> JFS filesystem support
  <*> XFS filesystem support
  <*> Btrfs filesystem support
  DOS/FAT/NT Filesystems  --->
    <*> MSDOS fs support
    <*> VFAT (Windows-95) fs support
- 內(nèi)核: 選擇PPPoE必要的驅(qū)動(dòng)程序

Device Drivers --->
  Network device support --->
    <*> PPP (point-to-point protocol) support
    <*>   PPP support for async serial ports
    <*>   PPP support for sync tty ports
- 內(nèi)核: 激活SMP支持
作用:用于支持多內(nèi)核存在,用來在多個(gè)內(nèi)核間進(jìn)行切換

Processor type and features  --->
  [*] Symmetric multi-processing support
 - 內(nèi)核: 啟用輸入設(shè)備的USB支持
Device Drivers --->
  HID support  --->
    -*- HID bus support
    <*>   Generic HID driver
    [*]   Battery level reporting for HID devices
      USB HID support  --->
        <*> USB HID transport layer
  [*] USB support  --->
    <*>     xHCI HCD (USB 3.0) support
    <*>     EHCI HCD (USB 2.0) support
    <*>     OHCI HCD (USB 1.1) support

- 內(nèi)核: 選擇處理器類型和特點(diǎn)
Processor type and features  --->
   [ ] Machine Check / overheating reporting 
   [ ]   Intel MCE Features
   [ ]   AMD MCE Features
   Processor family (AMD-Opteron/Athlon64)  --->
      ( ) Opteron/Athlon64/Hammer/K8
      ( ) Intel P4 / older Netburst based Xeon
      ( ) Core 2/newer Xeon
      ( ) Intel Atom
      ( ) Generic-x86-64
Executable file formats / Emulations  --->
   [*] IA32 Emulation

- 內(nèi)核: 啟用對(duì)GPT的支持(用于支持GPT分區(qū))
-*- Enable the block layer --->
   Partition Types --->
      [*] Advanced partition selection
      [*] EFI GUID Partition support
- 內(nèi)核: 啟用對(duì)UEFI方式引導(dǎo)系統(tǒng)的支持
注:如果不啟用,則系統(tǒng)不能通過UEFI方式引導(dǎo)

Processor type and features  --->
    [*] EFI runtime service support 
    [*]   EFI stub support
    [*]     EFI mixed-mode support

Firmware Drivers  --->
    EFI (Extensible Firmware Interface) Support  --->
        <*> EFI Variable Support via sysfs


編譯并安裝模塊
make && make modules_install

內(nèi)核編譯完成后,使用如下命令將內(nèi)核鏡像復(fù)制到/boot/目錄中
make install
- 配置系統(tǒng)
emerge app-editors/vim    #安裝vim

- 配置fstab

vim /etc/fstab
/dev/sda4  /    ext4  defaults 1 1             #配置掛載根分區(qū)
/dev/sda3  none  swap  sw  0 0                 #配置掛載swap
/dev/sda2  /boot ext2  noauto,noatime    1 2    #配置掛載boot分區(qū)

注: 生產(chǎn)環(huán)境下,最前面的/dev/sda1、sda2、sda3要通過blkid命令替換成對(duì)應(yīng)的UUID
- 配置主機(jī)名
vim /etc/conf.d/hostname

hostname =“gentoo”  #將主機(jī)名變量設(shè)置為所選主機(jī)名
- 配置網(wǎng)絡(luò)
這次是配置的系統(tǒng)網(wǎng)絡(luò),而非LiveCD的網(wǎng)絡(luò)
emerge --ask --noreplace net-misc/netifrc


vi /etc/conf.d/net   #配置靜態(tài)IP
config_eth0="10.0.10.100 netmask 255.255.255.0 brd 10.0.10.255"
routes_eth0="default via 10.0.10.1"

注:如果系統(tǒng)自動(dòng)獲取IP則進(jìn)行如下配置
config_eth0="dhcp"
- 系統(tǒng)啟動(dòng)時(shí)激活網(wǎng)卡配置
cd /etc/init.d
ln -s net.lo net.eth0
rc-update add net.eth0 default

排錯(cuò)
如果在啟動(dòng)系統(tǒng)后,我們發(fā)現(xiàn)有關(guān)網(wǎng)絡(luò)接口名稱(目前記錄為eth0)的假設(shè)是錯(cuò)誤的,那么執(zhí)行以下步驟來解決這個(gè)問題:
使用正確的接口名稱更新/etc/conf.d/net文件(enp3s0而不是eth0)。
創(chuàng)建新的符號(hào)鏈接(如/etc/init.d/net.enp3s0)。
刪除舊的符號(hào)鏈接(rm /etc/init.d/net.eth0)。
將新的添加到默認(rèn)運(yùn)行級(jí)別。
使用rc-update del net.eth0默認(rèn)值刪除舊的。
- 定義hosts文件
vim  /etc/hosts
127.0.0.1 gentoo.homenetwork gentoo localhost   #這定義了當(dāng)前系統(tǒng)并且必須設(shè)置

- 系統(tǒng)信息

使用passwd命令設(shè)置root密碼。

- 配置rc.conf文件
作用: Gentoo使用/etc/rc.conf來配置系統(tǒng)的服務(wù),啟動(dòng)和關(guān)閉。

打開/etc/rc.conf并享受文件中的所有注釋。查看設(shè)置并在需要的地方進(jìn)行更改。
- 中文語言支持
vim /etc/locale.gen
en_US ISO-8859-1
en_US.UTF-8 UTF-8
#把需要的項(xiàng)前面的#號(hào)去掉

執(zhí)行
locale-gen

- 修改時(shí)區(qū)
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo "Asia/Shanghai" > /etc/timezone

#設(shè)置硬件時(shí)間為本地,不然會(huì)多8個(gè)小時(shí)
hwclock -w --localtime
- 安裝系統(tǒng)日志記錄器
作用:提供傳統(tǒng)的系統(tǒng)日志守護(hù)進(jìn)程
emerge --ask app-admin/sysklogd  
rc-update add sysklogd default

- 安裝crond定時(shí)任務(wù)
作用:cron守護(hù)進(jìn)程執(zhí)行預(yù)定的命令。如果需要定期執(zhí)行某些命令(例如每天,每周或每月),這非常方便。
emerge --ask sys-process/cronie
rc-update add cronie default

如果使用dcron或fcron,則需要執(zhí)行額外的初始化命令:
crontab /etc/crontab

- 遠(yuǎn)程訪問
rc-update add sshd default     #添加ssh開機(jī)自啟動(dòng)
- 文件索引
作用:為了索引文件系統(tǒng)以提供更快的文件位置功能
emerge --ask sys-apps/mlocate

- 文件系統(tǒng)工具

作用: 用于檢查文件系統(tǒng)完整性,創(chuàng)建其他文件系統(tǒng)等,按需安裝

emerge     sys-fs/e2fsprogs     用于管理Ext2, Ext3, EXT4
emerge  sys-fs/xfsprogs      用于管理XFS
emerge  sys-fs/reiserfsprogs 用于管理ReiserFS
emerge  sys-fs/jfsutils      用于管理JFS
emerge  sys-fs/dosfstools    用于管理VFAT(如:FAT32、NTFS等)
emerge  sys-fs/btrfs-progs   用于管理Btrfs
- 配置GRUB引導(dǎo)
(1)修改vim /etc/portage/make.conf
添加:
# Both UEFI and PC
GRUB_PLATFORMS="efi-64 pc"

(2)MBR分區(qū)-BIOS方式引導(dǎo)
emerge --ask sys-boot/grub:2

(3)安裝到MBR。假定第一個(gè)(系統(tǒng)引導(dǎo)的)磁盤是/dev/sda
grub-install /dev/sda

(4)自動(dòng)生成grub2配置
grub-mkconfig -o /boot/grub/grub.cfg   

(5)保險(xiǎn)起見再次執(zhí)行一次這個(gè)命令
   grub-install /dev/sda
  • 現(xiàn)在基本系統(tǒng)安裝完成,卸載分區(qū),重啟。
exit
umount -l /mnt/gentoo/dev
umount -l /mnt/gentoo/proc
umount -l /mnt/gentoo/sys
umount -l /mnt/gentoo
reboot
  • 故障處理
Grub引導(dǎo)正常,但啟動(dòng)系統(tǒng)過程中,出現(xiàn) LFS kernel panic -not syncing :VFS:Unable to mount root fs on Unknown-block(0,0)
原因:
(1)進(jìn)入LiveCD,掛載根和boot分區(qū),然后修改修改/etc/fstab文件
注:一律使用uuid替代/dev/sdx

(2)內(nèi)核編譯的時(shí)候沒有添加相應(yīng)的硬件模塊,建議只增不減。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,333評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,491評(píng)論 3 416
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,263評(píng)論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,946評(píng)論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,708評(píng)論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,186評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,255評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,409評(píng)論 0 288
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,939評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,774評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,976評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,518評(píng)論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,209評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,641評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,872評(píng)論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,650評(píng)論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,958評(píng)論 2 373

推薦閱讀更多精彩內(nèi)容