gentoo安裝(轉)


來源:https://blog.yangmame.org/Gentoo%E5%AE%89%E8%A3%85%E6%95%99%E7%A8%8B.html

這可能是除了官方wiki寫的最全的教程了

(可能還存在錯誤之處,歡迎指出)

2018.7.3更新,完善make.conf的說明

准備:

  1. 至少一個人
  2. 一雙能打字的手
  3. 一個能思考的腦袋
  4. 倆部電影
  5. 至少一台正常的電腦
  6. 一個正常的U盤
  7. 一個穩定的網絡環境
  8. 一個穩定的電源
  9. 一個已能完美運行的系統.(如果你是Linux系統則不需要下一個)
  10. 一個Ubuntu ISO鏡像文件

如果你是Windows系統:
下載Rufus刻錄Ubuntu鏡像
至於UEFI Legacy GPT和MBR等我就不說了,如果不熟悉這些玩Gentoo恐怕困難重重

如果你已有一個正常運行的Linux,恭喜,安裝Gentoo會簡單很多.
安裝完並確定可用之后之后你可以tar打包已安裝的系統使用live CD解壓過去並修改相關配置

需要知道的一些東西

Gentoo有很多好用的工具
這里說下安裝過程會遇到的

eselect可以用來配置系統

比如eselect python set X可以設置默認的python(eselect python list查看可用選項)
eselect fontconfig enable X可以啟用xxx字體配置(eselct fontconfig list查看可用選項)

etc-update可以用來更新or生成配置文件

假如系統更新了軟件 有新的配置文件 Gentoo會生成一個臨時的配置文件,需要自己手動刪除 合並或覆蓋 可以通過運行etc-update進行

記住,要盡量保證emerge提示無可用更新的配置文件(特別是更新portage的配置文件的時候)

准備磁盤

啟動到live CD(已有Linux系統忽略這句)
使用你喜歡的工具進行分區(或者直接用gparted)
這里會聲明下分區,之后的過程將使用這些變量

UEFI(GPT):

sda1 ---/boot--->vfat                   >=200M     #注意分區設置flags為esp
sda2 ---/--->ext4,btrfs,xfs,jfs.etc     >=20G      #建議至少20G大小
sda3 ---swap--->                        >=2G       #除非你16G內存,即使你8G內存也建議設置2G的swap

Legacy(MBR):

sda1 ---/boot--->ext2                   >=200M     #可以不設置此分區
sda2 ---/--->ext4,btrfs,xfs,jfs.etc     >=20G      #建議至少20G大小
sda3 ---swap--->                        >=2G       #除非你16G內存,即使你8G內存也建議設置2G的swap

創建目錄:

mkdir -v /mnt/gentoo

掛載目錄:

mount -v /dev/sda2 /mnt/gentoo

安裝基本文件

在這里你需要選擇一個鏡像站,在這里列出幾個速度比較快的鏡像站,請親自測試選擇鏡像站:

USTC
TUNA
163

進入鏡像站的/gentoo/releases/amd64/autobuilds/目錄

如果你對systemd沒有剛需則進入current-stage3-amd64/目錄選擇最新的stage3下載到本地的/mnt/gentoo目錄,例如:stage3-amd64-20171019.tar.bz2

如果你需要systemd,則進入current-stage3-amd64-systemd/目錄選擇最新的stage3下載到本地的/mnt/gentoo目錄,例如:stage3-amd64-systemd-20171018.tar.bz2

下載完成之后進入gentoo的根目錄並解壓文件:

cd /mnt/gentoo
tar vxpf stage3-*.tar.bz2或xz --xattrs-include='*.*' --numeric-owner

配置make.conf和Portage Mirror

以下參數在經過自己調整或選擇之后加入到 /mnt/gentoo/etc/portage/make.conf

  • USE: 首先,你可以刪掉默認的USE標記,加上-bindist (不了解USE的情況下建議如此)
  • CFLAGS: 將CFLAGS修改為CFLAGS="-march=native -O2 -pipe" 或者你也可以指定.例如我的Intel CPU是haswell,將native換成haswell就行(不確定就不要指定).你也可以在這里看到所有可以設置的值
  • MAKEOPTS: 根據你的CPU核心數設置MAKEOPTS例如雙四線程設置為MAKEOPTS="-j5"
  • GENTOO_MIRRORS: 設置為GENTOO_MIRRORS="https://mirrors.ustc.edu.cn/gentoo/" 請自行選擇速度最快的Mirror
  • EMERGE_DEFAULT_OPTS: 設置為EMERGE_DEFAULT_OPTS="--keep-going --with-bdeps=y"是個不錯的選擇,keep going意為安裝一堆軟件時遇到編譯錯誤自動跳過這個軟件繼續編譯安裝
  • FEATURES: 在這里最好寫成# FEATURES="${FEATURES} -userpriv -usersandbox -sandbox",最好在前面加上#注釋掉,在你編譯軟件遇到權限不足時去掉注釋即可解決問題(但請務必注意是不是因為rm -rf /*等命令權限不足,因為說不定你的ebuild文件被篡改了)
  • ACCEPT_KEYWORDS: 如果你想用作桌面/學習/開發系統那就務必加上ACCEPT_KEYWORDS="~amd64",服務器/工作/家/娛樂用可以忽略
  • ACCEPT_LICENSE: 加上ACCEPT_LICENSE="*"表示此系統接受所有軟件許可證,即不論非自由還是自由軟件都接受,非商業用戶基本不需要考慮
  • L10N: 設置為L10N="en-US zh-CN en zh"
  • LINGUAS: 設置為LINGUAS="en_US zh_CN en zh"
  • VIDEO_CARDS: 根據你的顯卡類型設置假如你是NVIDIA單顯卡則設置為VIDEO_CARDS="nvidia"(閉源驅動)VIDEO_CARDS="nouveau"(開源驅動).還有radeon和intel,但如果你是雙顯卡例如Intel+NVIDIA則設置為VIDEO_CARDS="intel i965 nvidia"(只要不是遠古的集成顯卡都是用i965)
  • GRUB_PLATFORMS: 如果你使用GRUB且使用UEFI啟動則添加GRUB_PLATFORMS="efi-64"
  • Portage Mirror: 這個不是make.conf的選項.mkdir /mnt/gentoo/etc/portage/repos.conf創建repos.conf目錄並添加如下到/mnt/gentoo/etc/portage/repos.conf/gentoo.conf文件里面(自行選擇速度最快的鏡像站):
[gentoo]
location = /usr/portage
sync-type = rsync
#sync-uri = rsync://mirrors.tuna.tsinghua.edu.cn/gentoo-portage/
sync-uri = rsync://rsync.mirrors.ustc.edu.cn/gentoo-portage/
auto-sync = yes
  • 這里還有個CPU_FLAGS_X86,在后面的步驟emerge --sync之后安裝app-portage/cpuid2cpuflags並配置:
emerge --ask app-portage/cpuid2cpuflags
cpuid2cpuflags #將輸出值改入CPU_FLAGS_X86

示例配置(請以實際為標准):

# /usr/share/portage/config/make.conf.example

# GCC
CFLAGS="-march=haswell -O2 -pipe"
CXXFLAGS="${CFLAGS}"
CHOST="x86_64-pc-linux-gnu"
CPU_FLAGS_X86="aes avx avx2 fma3 mmx mmxext pclmul popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3"
MAKEOPTS="-j5"

# USE
SUPPORT="pulseaudio btrfs mtp git chromium"
DESKTOP="infinality emoji cjk"
FUCK="-bindist -grub -plymouth -systemd consolekit -modemmanager -gnome-shell -gnome -gnome-keyring -nautilus -modules"
ELSE="client icu sudo python"

USE="${SUPPORT} ${DESKTOP} ${FUCK} ${ELSE}"

# Portage
PORTDIR="/usr/portage"
DISTDIR="${PORTDIR}/distfiles"
PKGDIR="${PORTDIR}/packages"
# GENTOO_MIRRORS="https://mirrors.tuna.tsinghua.edu.cn/gentoo/"
GENTOO_MIRRORS="https://mirrors.ustc.edu.cn/gentoo/"
EMERGE_DEFAULT_OPTS="--ask --verbose=y --keep-going --with-bdeps=y --load-average"
# FEATURES="${FEATURES} -userpriv -usersandbox -sandbox"
PORTAGE_REPO_DUPLICATE_WARN="0"
# PORTAGE_TMPDIR="/var/tmp/notmpfs"

ACCEPT_KEYWORDS="~amd64"
ACCEPT_LICENSE="*"

# Language
L10N="en-US zh-CN en zh"
LINGUAS="en_US zh_CN en zh"

# Else
VIDEO_CARDS="intel i965 nvidia"

RUBY_TARGETS="ruby24 ruby25"

LLVM_TARGETS="X86"

QEMU_SOFTMMU_TARGETS="alpha aarch64 arm i386 mips mips64 mips64el mipsel ppc ppc64 s390x sh4 sh4eb sparc sparc64 x86_64"
QEMU_USER_TARGETS="alpha aarch64 arm armeb i386 mips mipsel ppc ppc64 ppc64abi32 s390x sh4 sh4eb sparc sparc32plus sparc64"
# ABI_X86="64 32"

進入Chroot環境

復制DNS:

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

掛載必要文件系統:

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

Debian等發行版可能需要:

test -L /dev/shm && rm /dev/shm && mkdir /dev/shm
mount --types tmpfs --options nosuid,nodev,noexec shm /dev/shm
chmod 1777 /dev/shm

進入Chroot:

chroot /mnt/gentoo /bin/bash
source /etc/profile

如果你有boot分區則在這里掛載上去:

mount /dev/sda1 /boot

選擇Profile並更新系統

使用快照更新Portage:

emerge-webrsync

使用rsync同步:

emerge --sync

使用eselect news read命令閱讀新聞

列出profile:

eselect profile list

如果你使用systemd則需要選上帶有systemd字樣的選項

如果你不使用systemd則不建議使用GNOME桌面,因為GNOME桌面依賴systemd(辣雞)

例如不使用systemd且使用KDE桌面則選擇19 default/linux/amd64/17.0/desktop/plasma:

eselect profile set 19

然后就是漫長的更新了(有錢人當我沒說):

emerge -auvDN --with-bdeps=y @world

如果碰到未滿足的xxx或者其它提示:

emerge -auvDN --with-bdeps=y --autounmask-write @world
etc-update # 然后輸入-3就能更新配置,確保再次運行時沒有可更新的文件
emerge -auvDN --with-bdeps=y @world

如果以上還是不能解決問題,則進入/etc/portage目錄刪掉package.use,package.mask和package.unmask文件或目錄再次嘗試

到了這里,你可以去看電影了...

等它跑完了,先別急
運行下這幾個命令:

emerge @preserved-rebuild
perl-cleaner --all
emerge -auvDN --with-bdeps=y @world

確定沒有更新之后再繼續,否則查看輸出嘗試重復運行

如果你在emerge -auvDN --with-bdeps=y @world時提示帶有bindist字樣且你已啟用ACCEPT_KEYWORDS="~amd64"的話
運行如下命令之后再次重試:

cd /usr/portage/dev-libs/openssl/
ebuild openssl-1.0.2o-r6.ebuild merge # 這里openssl的版本可能和你的不一樣,運行ls命令查看可用版本,替換為版本號帶o字母的即可

配置時區和地區

echo "Asia/Shanghai" > /etc/timezone
emerge --config sys-libs/timezone-data

echo "en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8" >> /etc/locale.gen

locale-gen

eselect locale list

這里建議使用英語易於排錯,之后你可以自行換成中文:

eselect locale set X # X換成上面命令顯示的序號

配置fstab,安裝文件系統工具

如果你和我一樣懶

可以下載此腳本自動配置fstab(引自Arch的genfstab):

wget https://raw.githubusercontent.com/YangMame/Gentoo-Installer/master/genfstab
chmod +x genfstab
#可選 cp genfstab /usr/bin/
./genfstab / > /etc/fstab
nano /etc/fstab #最好檢查下此文件,刪掉無用掛載點

上面的腳本在chroot環境下不能正常使用-U參數在fstab寫入分區的UUID

掛載點主要有倆種格式:

/dev/sda1    /boot    vfat或ext2    defaults    0 0
/dev/sda2    /    ext4或btrfs,jfs,xfs.etc    defaults    0 0
/dev/sda3    none    swap    defaults    0 0

這里的UUID通過blkid查看

UUID=xxxxxxxxxxx   /boot    vfat或ext2    defaults    0 0
UUID=xxxxxxxxxxx    /    ext4或btrfs,jfs,xfs.etc    defaults    0 0
UUID=xxxxxxxxxxx    none    swap    defaults    0 0

如果你使用非ext4文件系統則在編譯內核前需要另外安裝相應的工具:

btrfs: emerge sys-fs/btrfs-progs
xfs: emerge sys-fs/xfsprogs
jfs: emerge sys-fs/jfsutils

安裝NetworkManager

沒錯,我很懶,又加上我是KDE桌面用戶,所以我選擇使用NetworkManager連接網絡:

emerge -av networkmanager

如果它說有未滿足的xxxx或者其它提示:

emerge --autounmask-write networkmanager
etc-update --automode -3
emerge networkmanager

openRC(即非systemd)添加開機服務:

rc-update add NetworkManager default

systemd添加開機服務:

systemctl enable NetworkManager

在/etc/conf.d/hostname內修改主機名,例如:

echo hostname=\"Test\" > /etc/conf.d/hostname

安裝一些必要工具並配置

emerge app-admin/sysklogd sys-process/cronie sudo layman grub
sed -i 's/\# \%wheel ALL=(ALL) ALL/\%wheel ALL=(ALL) ALL/g' /etc/sudoers
passwd #是時候設置root密碼了

如果你是systemd:

sed -i 's/\# GRUB_CMDLINE_LINUX=\"init=\/usr\/lib\/systemd\/systemd\"/GRUB_CMDLINE_LINUX=\"init=\/usr\/lib\/systemd\/systemd\"/g' /etc/default/grub
ln -sf /proc/self/mounts /etc/mtab
systemd-machine-id-setup

非systemd系統:

rc-update add sysklogd default
rc-update add cronie default

配置編譯安裝內核

有以下推薦內核可供選擇:

gentoo-sources
ck-sources
git-sources

這里示例使用gentoo-sources:

emerge -av gentoo-sources

如果你不會配置內核或者時間不允許可以先用genkernel:

emerge -av genkernel
genkernel --menuconfig all
genkernel --install initramfs

或者你當前運行着一個正常使用的Linux的話也可以:

cd /usr/src/linux
make localyesconfig
# 如果詢問新選項,一路回車吧,23333
make -jX #將X替換為你想編譯時的線程數
make modules_install
make install
genkernel --install initramfs

手動配置內核:

cd /usr/src/linux
make menuconfig

關於配置內核

本站有寫內核配置的文章

你也可以選擇去看金步國的文章

配置完之后:

make -jX #將X替換為你想編譯時的線程數
make modules_install
make install
genkernel --install initramfs

安裝GRUB並創建用戶

如果你是UEFI:

grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=Gentoo
grub-mkconfig -o /boot/grub/grub.cfg

如果出現No space left on device

請運行:

mount -t efivarfs efivarfs /sys/firmware/efi/efivars
rm /sys/firmware/efi/efivars/dump-*

然后重試(由 @Chara 提議加上)

如果你是Legacy:

grub-install --target=i386-pc /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg

創建一個管理員並設置密碼:

useradd -m -G users,wheel,portage,usb,video 這里換成你的用戶名(小寫)
passwd 用戶名

顯卡驅動

NVIDIA單顯卡:

emerge -av x11-drivers/nvidia-drivers

Intel單顯卡:

emerge -av x11-drivers/xf86-video-intel

Intel+NVIDIA雙顯卡請看這篇文章

其它顯卡硬件待補坑 歡迎提出

檢查系統可用性

到了這里你應該可以重啟查看系統是否能正常啟動,然后在安裝桌面

重啟前最好檢查下的東西:

  1. boot目錄是否有相應文件
  2. GRUB是否正確生成配置並顯示內核等文件
  3. fstab是否正確無誤

安裝桌面

首先需要確保已安裝xorg-server和顯卡驅動:

emerge -av xorg-server
emerge xf86-video-intel #Intel顯卡驅動
emerge nvidia-drivers #nvidia顯卡驅動

如遇需要更新配置則運行etc-update --automode -3並再次運行命令

KDE:

emerge -av plasma-desktop plasma-nm plasma-pa sddm konsole

如遇需要更新配置則運行etc-update --automode -3並再次運行命令

如果你是systemd:

systemctl enable sddm

openrc則編輯/etc/conf.d/xdmDISPLAYMANAGER的值改為sddm並:

rc-update add xdm default

GNOME:

emerge -av gnome-shell gdm gnome-terminal
systemctl enable gdm

如遇需要更新配置則運行etc-update --automode -3並再次運行命令

這里只說明systemd,因為openrc並不能滿足GNOME的依賴


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM