=====================================================================================================================
Gentoo Linux 安装 —— å¸¦ç¡¬ç›˜åŠ å¯†
=====================================================================================================================
:slug: reinstall_gentoo
:date: 2016-05-22 23:24
:modified: 2021-01-11 02:17
:lang: zh_hans
:tags: gentoo, installation, luks
:description: 安装 Gentoo Linux çš„ä¸»è¦æ¥éª¤ã€‚
:color: #463c65
:noindent: true
:featured_image: /nocimages/gentoo_minimal_install_media_1.png
:summary:
.. contents::
:del:`å¯èƒ½æ˜¯å› 为è¿è¡Œäº†æŸA开头VPNçš„Linuxå®¢æˆ·ç«¯å®‰è£…è„šæœ¬ï¼ŒåŠ ä¸Š@world更新以åŠå†…æ ¸é‡æ–°é…ç½®ï¼Œå¯¼è‡´ç³»ç»Ÿå½»åº•å´©æºƒï¼Œè¯•äº†å¾ˆå¤šæ–¹æ³•æ— æžœï¼Œå¹²è„†é‡æ–°å®‰è£…ï¼Œä¹Ÿå¥½é‡æ–°æ•´ç†ã€‚`
.. PELICAN_BEGIN_SUMMARY
æ—¶éš” 4 å¹´ï¼Œæˆ‘åˆæ¥è£… Gentoo 啦~ 之剿¢äº†ä¸ªå°å¼ï¼Œå¹³å°å¤ªæ–°äº†ï¼Œæ€Žä¹ˆéƒ½æžä¸å®šæ˜¾å¡çš„é©±åŠ¨ï¼ŒåŽæ¥å°±ä¸€ç›´ç¬”记本用的 Arch,但是现在笔记本越æ¥è¶Šå¡.. 于是.. æˆ‘åˆæ‹¿å°å¼è£… Gentoo 了,å°å¼å¾ˆç‰›B, 16 æ ¸ 32 线程, :del:`è·‘èµ· Gentoo 肯定很爽~|我想多了... å†å¼ºå¤§çš„电脑用 Gentoo 都ä¸è¿‡åˆ†`
æ¤æ¬¡ï¼Œæˆ‘是在已有 Windows 10 系统的情况下,用一å—é¢å¤–完整的硬盘安装 Gentoo, :del:`å¹¶é…ç½®åŒç³»ç»Ÿå¼•导,` åŒæ—¶å¼€å¯ç¡¬ç›˜åŠ å¯†ã€‚
.. hint::
更新:我新写了一篇更通用的 `Gentoo Linux 安装åŠä½¿ç”¨æŒ‡å—`_ 。
写在å‰é¢
============================================================
Gentoo 和一般的 Linux çš„å‘行版的区别在于 Gentoo 需è¦è‡ªå·±ç¼–译安装,且自定义度æžå…¶é«˜ï¼Œå¯ä»¥å¾ˆæ–¹ä¾¿åœ°å®šåˆ¶ä¸Žä¸ªæ€§åŒ–ï¼ˆä»Žå†…æ ¸åˆ°æ¡Œé¢ä»¥åŠå„ç§ç®¡ç†è½¯ä»¶ï¼‰ï¼Œä¹Ÿæ›´æ˜“于ç†è§£ Linux。
æœ¬æ–‡é‡æ–°æ•´ç†å®Œå–„ï¼Œæ—¨åœ¨ä»¥å¤‡ä¸æ—¶ä¹‹éœ€ï¼Œä¹Ÿå¸Œæœ›å¯ä»¥å¸®åˆ°ç½‘å‹ï¼ˆä¹Ÿå¯ä»¥çœ‹ `官方的 wiki`_ )。文档会包å«ä¸»è¦æµç¨‹ï¼Œè¨€ç®€æ„赅。
.. PELICAN_END_SUMMARY
Gentoo çš„å®‰è£…ä¸»è¦æ˜¯ 10 个æ¥éª¤ï¼Œåˆ†åˆ«å¯¹åº”一个状æ€ï¼ˆæ¤æ®µç¿»è¯‘自上述官方 Wiki):
========== ===========================================================================================================
æ¥éª¤ 对应结果
========== ===========================================================================================================
1 进入到一个å¯ä»¥å®‰è£… Gentoo 的工作环境
2 安装 Gentoo 的网络就绪
3 安置 Gentoo 的硬盘就绪
4 安装环境准备完æˆï¼Œä¸”用户å¯ä»¥ chroot 到新的环境下了
5 Gentoo 需è¦çš„æ ¸å¿ƒåŒ…文件安装完æˆ
6 Linux å†…æ ¸é…置且安装完æˆ
7 大部分 Gentoo 系统é…置文件创建完æˆ
8 å¿…è¦çš„系统工具安装完æˆ
9 适当的å¯åŠ¨å¼•å¯¼å®‰è£…ä¸”é…置完æˆ
10 新安装的 Gentoo Linux 环境准备好被探索使用了
========== ===========================================================================================================
ä¸‹æ–‡ä¼šæ ¹æ®è¿™ 10 个æ¥éª¤å’Œå¯¹åº”çš„çŠ¶æ€æ¥æ•´ç†ã€‚
æ¥éª¤ä¸€ï¼š 进入到安装环境
============================================================
需è¦å‡†å¤‡çš„内容:
* 一个好的 U 盘
* 互è”网络
* 一å°å¯æŽ§åˆ¶çš„主机
* 也许还需è¦ä¸€å°æ£å¸¸ä½¿ç”¨çš„主机(Windows/Mac/ç±» UNIX 皆å¯ï¼‰
ä¸‹è½½å¹¶æ ¡éªŒå®‰è£…æ–‡ä»¶
------------------------------------------------------------
从 Gentoo çš„ `镜åƒç«™ç‚¹`_ 获å–适åˆçš„æœ€å°å®‰è£… CD æ–‡ä»¶ï¼Œå¹¶æ ¡éªŒï¼Œæ¯”å¦‚ `清åŽçš„ TUNA æº`_ :
::
目录: /gentoo/releases/amd64/autobuilds/current-install-amd64-minimal/
Parent directory/ - -
hardened/ - 2020-09-21 17:01
install-amd64-minimal-20200920T214503Z.iso 428.0 MiB 2020-09-21 07:48
install-amd64-minimal-20200920T214503Z.iso.CONTENTS.gz 1.0 KiB 2020-09-21 07:48
install-amd64-minimal-20200920T214503Z.iso.DIGESTS 778 B 2020-09-21 07:48
install-amd64-minimal-20200920T214503Z.iso.DIGESTS.asc 1.3 KiB 2020-09-21 08:01
…
.. note::
有时候å¯èƒ½ä¼šé‡åˆ°åŒæ¥ä¸å®Œå…¨çš„æƒ…况,é‡åˆ°æ—¶å°±æ›´æ¢ä¸€ä¸ªæºä¸‹è½½ã€‚
1. 需è¦çš„æ˜¯è¿™ä¸ª .iso 的文件,下载它。( .CONTENTS.gz 文件是一个文本文件压缩包,该文本内å˜å‚¨äº† .iso 文件内所有文件的列表)
2. ä¸‹è½½æ ¡éªŒæ–‡ä»¶ï¼Œ .DIGESTS 文件ä¸å¸¦ç¾å,里é¢å˜å‚¨äº† .iso ä»¥åŠ .CONTENTS.gz 散列值。而 .DIGESTS.asc 是å‰è€…的带ç¾å版,直接下载这个。
3. 导入 `公钥`_ å¹¶æ ¡éªŒï¼š
.. code-block:: bash
gpg --keyserver keys.gnupg.net --recv-keys 0xBB572E0E2D182910 # 导入对应公钥
gpg --verify install-amd64-minimal-20200920T214503Z.iso.DIGESTS.asc # 检查文件完整性
sha512sum install-amd64-minimal-20200920T214503Z.iso # ç„¶åŽä¸Žæ–‡ä»¶å†…散列值进行比对验è¯
制作盘å¯åŠ¨ç›˜å¹¶è¿›å…¥å®‰è£…çŽ¯å¢ƒ
------------------------------------------------------------
æ ¡éªŒæ²¡é—®é¢˜åŽå°±åˆ¶ä½œ U 盘å¯åŠ¨ç›˜ï¼Œ ä¹ æƒ¯æ€§ä½¿ç”¨ :code:`dd` 命令:
.. code-block:: bash
dd bs=4M if=install-amd64-minimal-20200920T214503Z.iso of=/dev/sdc status=progress oflag=sync
如果需è¦åˆ¶ä½œå…‰ç›˜å¯åŠ¨ç›˜ï¼Œä½¿ç”¨ :code:`cdrecord` 工具。如果仅有 Windows çš„è¯ï¼Œ Windows 7 以上å¯ä»¥ç›´æŽ¥ä½¿ç”¨ç³»ç»Ÿè‡ªå¸¦çš„功能将镜åƒå†™å…¥åˆ°å…‰ç›˜å†…;如果是 U 盘,å¯ä»¥å°è¯• Rufus,但我未验è¯ã€‚
之åŽå°±æ˜¯å¼€æœºé€‰æ‹© U 盘作为å¯åŠ¨ç›˜è¿›å…¥å®‰è£…çŽ¯å¢ƒï¼Œæ ¹æ®ä¸»æ¿ä¸åŒï¼Œå¼€æœºåŽæ•²å‡» F1/F2/F12 ç‰é€‰æ‹© U 盘å¯åŠ¨ã€‚
.. image:: /nocimages/gentoo_minimal_install_media_0.png
:alt: Gentoo å¯åŠ¨ç›˜ç•Œé¢
æ¥éª¤äºŒï¼š 连接网络
============================================================
我的å°å¼å¸¦æœ‰çº¿å’Œæ— 线网å¡ï¼Œç›´æŽ¥ä½¿ç”¨æœ‰çº¿ç½‘å¡ï¼Œå·²ç»è¢«å†…æ ¸è¯†åˆ«ä¸”å¯ä»¥ä½¿ç”¨ï¼Œè‡ªå·±é…置一下路由å³å¯ï¼Œæ¯”如:
.. code-block:: bash
ip link set dev enp5s0 up
ip add add 192.168.30.100.24 dev enp5s0
ip route add default via 192.168.30.1 dev enp5s0
echo 'nameserver 223.5.5.5' >> /etc/resolv.conf
.. note::
这里é‡åˆ°ä¸€ä¸ªé—®é¢˜ï¼Œæœ¬ä»¥ä¸ºä¸»æ¿ä¸Šé»˜è®¤çš„åƒå…†ç½‘å¡é©±åŠ¨æ˜¯è¢«åŠ è½½çš„ï¼Œç»“æžœåŽæ¥å‘çŽ°é»˜è®¤åŠ è½½çš„æ˜¯ä¸‡å…†ç½‘å¡ï¼Œæ‰€ä»¥å½“å‘现接å£çŠ¶æ€æ€Žä¹ˆéƒ½æ˜¯ DOWN æ—¶ï¼Œè€ƒè™‘åŠ è½½çš„ç½‘å¡æŽ¥å£ä¸å¯¹ã€‚这里å¯ä»¥ä½¿ç”¨ :code:`lspci | grep -i eth` æŸ¥çœ‹æ‰€æœ‰ç½‘å¡æŽ¥å£ï¼Œç„¶åŽ :code:`lspci -v -s<slot>` æŸ¥çœ‹å“ªäº›æœ‰åŠ è½½å®Œæˆé©±åŠ¨ã€‚
æˆ–è€…å¼€å¯ dhcpcd æœåŠ¡ï¼ŒGentoo 默认使用 OpenRC,所以å¯ä»¥è¿è¡Œï¼š
.. code-block:: bash
/etc/init.d/dhcpcd start
å¯åЍ dhcpcd æœåŠ¡ã€‚
其它方å¼å¯ä»¥è‡ªè¡ŒæŸ¥æ‰¾å®˜æ–¹æ–‡æ¡£ï¼Œæ¯”å¦‚é€šå¸¸æƒ…å†µä¸‹ï¼Œç›®å‰æ— 线基本使用 WPA åŠ å¯†ç¨‹åºï¼Œé‚£ä¹ˆç›´æŽ¥ä½¿ç”¨ :code:`wpa_supplicant` å‘½ä»¤ï¼Œåœ¨æ˜Žç¡®çŸ¥é“æ— 线 SSID 和密ç 的情况下,执行如下命令连接:
.. code-block:: bash
wpa_supplicant -i <INTERFACE> -c <(wpa_passphrase "<SSID>" "<PASSWORD>")
确认没问题åŽï¼Œå¯ä»¥æ·»åŠ :code:`-B` 选项釿–°æ‰§è¡Œä½¿ä¹‹ä»¥å®ˆæŠ¤è¿›ç¨‹æ¨¡å¼åœ¨åŽå°è¿è¡Œã€‚å¦‚æžœä»…çŸ¥é“æ— 线密ç ,但是ä¸ç¡®å®šæ— 线的 SSID,å¯ä»¥é€šè¿‡ä»¥ä¸‹å‘½ä»¤èŽ·å–åŽè‡ªè¡Œç¡®è®¤ï¼š
.. code-block:: bash
iw dev <INTERFACE> scan | grep SSID
拨å·åˆ™ä½¿ç”¨ :code:`pppoe-setup` å’Œ :code:`pppoe-start` 命令,具体我没测试æ¡ä»¶ï¼Œåæ£å®‰è£… CD 下自带的这个脚本有很自动化的é…置选项。
测试网络连通åŽï¼Œè¿™ä¸ªæ¥éª¤ç»“æŸã€‚å¦‚æžœç½‘ç»œæ— æ³•è¿žé€šï¼Œæ‰§è¡Œ :code:`ip a` , :code:`ip r` 查看当å‰èŽ·å–çš„ IP 和路由,如果都æ£å¸¸ï¼Œåˆ™åŽ»ç¡®è®¤ :file:`/etc/resolv.conf` 文件下的 DNS 设置情况,通过 :code:`ping` å„个网å¡/网关地å€å’Œ DNS åœ°å€æŽ’æŸ¥ã€‚
æ¥éª¤ä¸‰ï¼š 准备好硬盘
============================================================
å› ä¸ºæˆ‘æ‰“ç®—åŠ å¯†ç¡¬ç›˜ï¼Œæ‰€ä»¥åŠ å¯†æ“作也需è¦åœ¨è¿™ä¸ªæ¥éª¤å®Œæˆã€‚也就是在这个æ¥éª¤ï¼Œéœ€è¦ç¡®å®šä½¿ç”¨çš„ BIOS 固件接å£åŠå¼•导程åºï¼Œåšåˆ†åŒºï¼Œç¡®å®šé€‰ç”¨çš„æ–‡ä»¶ç³»ç»Ÿï¼ŒåŠ å¯†åˆ†åŒº/ç¡¬ç›˜ï¼Œæ ¼å¼åŒ–,挂载。
å› ä¸ºéœ€è¦ä½¿ç”¨åŒç³»ç»Ÿå¼•导,所以å¤ç”¨ Windows çš„ EFI 分区,使用 UEFI,但是这里还是è¦ç•™å‡ºè¶³å¤Ÿçš„ EFI 分区空间以备以åŽå•硬盘å•系统使用。 :file:`/boot` 分区å•åˆ†ï¼Œå…¶å®ƒåˆ†åŒºå®Œæ•´ä¸€ä¸ªåŠ å¯†ç›˜ï¼Œæ‰€ä»¥ç¡¬ç›˜çš„åˆ†åŒºç»“æžœå¦‚ä¸‹ï¼š
::
sde 8:64 0 477G 0 disk
|--sde1 8:65 0 512M 0 part
|--sde2 8:66 0 476.4G 0 part
|--ct0 253:0 0 476.4G 0 crypt
å…¶ä¸ sde1 用作当å‰çš„ boot 分区, sde2 åš luks åŠ å¯†ï¼Œç„¶åŽæ ¼å¼åŒ–æˆ btrfs 分区,这里ä¸ç”¨ lvmï¼Œå› ä¸ºæˆ‘å®Œå…¨ä¸æƒ³åˆ†åŒºï¼Œç›´æŽ¥é‡‡ç”¨ btrfs çš„åå·ã€‚具体命令:
.. code-block:: bash
parted /dev/sde
(parted) mklabel gpt
(parted) unit MiB
(parted) mkpart primary 2 514
(parted) mkpart primary 515 -1
(parted) name 1 boot # 这里ä¸ç»™ boot 分区添上 boot æ ‡è®°ï¼Œå› ä¸ºæ˜¯éœ€è¦å¤ç”¨ Windows çš„ EFI 分区引导
(parted) name 2 luks
(parted) q
cryptsetup luksFormat /dev/sde2
cryptsetup open /dev/sde2 ct0
mkfs.btrfs /dev/mapper/ct0
mkfs.vfat -F32 /dev/sde1
mount /dev/mapper/ct0 /mnt/gentoo
å› ä¸ºæˆ‘æ˜¯å†³å®šä½¿ç”¨ btrfs çš„åå·åŠŸèƒ½ï¼Œæ‰€ä»¥è¿™é‡Œåˆ’åˆ†å•独的åå·ï¼Œå½“ä½œæ ¹åˆ†åŒºï¼š
.. code-block:: bash
btrfs subvolume create /mnt/gentoo/subvol-root
btrfs subvolume create /mnt/gentoo/subvol-home
btrfs subvolume create /mnt/gentoo/subvol-snapshots
btrfs subvolume set-default /mnt/gentoo/subvol-root
ç„¶åŽé‡æ–°æŒ‚è½½åå·åˆ° :file:`/mnt/gentoo` 下:
.. code-block:: bash
umount /mnt/gentoo
mount /dev/mapper/ct0 /mnt/gentoo
至æ¤ç¡¬ç›˜å‡†å¤‡å®Œæ¯•。
æ¥éª¤å››ï¼š 准备好 chroot 到新环境
============================================================
é¦–å…ˆè°ƒæ•´å¥½æ—¶é—´ï¼Œå› ä¸ºé”™è¯¯çš„æ—¶é—´ä¼šå¼•èµ·ä¸€äº›å¾ˆå¥‡æ€ªçš„é—®é¢˜ï¼Œæ¯”å¦‚å®‰è£…å¥½çš„ç³»ç»Ÿæ–‡ä»¶çš„æ—¶é—´è¶…å‰çš„è¯ï¼Œä¹‹åŽç¼–译安装过程å¯èƒ½ä¼šå‡ºçŽ°æŠ¥é”™ï¼Œç‰ç‰ä¹‹ç±»çš„问题。
.. code-block:: bash
ntpd -q -g
ç„¶åŽè®¿é—®é•œåƒç«™åŽ»ä¸‹è½½ stage3 包文件,å¯ä»¥ä½¿ç”¨ :code:`links` 工具,注æ„下载完æˆåŽæ ¡éªŒï¼Œæ–¹æ³•åŒä¸Šè¿°æ ¡éªŒå®‰è£…文件。
.. code-block:: bash
links https://mirrors.tuna.tsinghua.edu.cn/gentoo/releases/amd64/autobuilds/current-stage3-amd64/
# 下载 stage3-xxx-xxx.tar.xz ä»¥åŠ stage3-xxx-xxx.tar.xz.DIGESTS.asc
gpg --keyserver keys.gnupg.net --recv-keys 0xBB572E0E2D182910
gpg --verify stage3-xxx-xxx.tar.xz.DIGESTS.asc #之åŽå¯¹æ¯”
之åŽåˆ‡æ¢åˆ°æŒ‚载的 :file:`/mnt/gentoo` 目录åŽï¼Œè§£åŽ‹ stage3:
.. code-block:: bash
cd /mnt/gentoo
tar xpvf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner #解压选项ä¸è¦æ¼é”™
ç„¶åŽè¦é’ˆå¯¹æœ¬æœºé…置一下编译环境。
打开 :file:`etc/portage/make.conf` 文件,简å•ç¼–è¾‘å¸¸ç”¨çš„é€‰é¡¹ï¼ˆè¯æ³•: VARIABLE="content" ):
CFLAGS/CXXFLAGS ï¼Œä¸»è¦æ˜¯ä¸ºäº†ä¼˜åŒ– gcc/C 编译
* -march= / -mtune= :计算机的架构,一般使用 native 告知编译针对本机。
* -O : gcc ä¼˜åŒ–çš„æ ‡ç¾ï¼Œ s 优化大å°ï¼Œ 0 ä¸åšä¼˜åŒ–, 1/2/3 优化编译速度,一般使用 -O2
* -pipe :å 用更多的内å˜ï¼Œé¿å…编译时出现碰撞现象而使用管é“代替临时文件,内å˜å¤§çš„è¯ï¼Œå»ºè®®å¼€å¯
* -fomit-frame-pointer :具体这个ä¸å¤ªäº†è§£ï¼Œå¤§è‡´æ„æ€å°±æ˜¯é‡Šæ”¾å¤šä½™çš„æŒ‡é’ˆï¼Œä½†æ˜¯å¯¹äºŽ debug 有负é¢å½±å“
.. code-block:: bash
# Compiler flags to set for all languages
COMMON_FLAGS="-march=native -O2 -pipe"
# Use the same settings for both variables
CFLAGS="${COMMON_FLAGS}"
CXXFLAGS="${COMMON_FLAGS}"
MAKEOPTSï¼Œè¿™ä¸ªå†³å®šäº†æ¯æ¬¡å¹¶è¡Œè¿è¡Œçš„任务数,一般设置 CPU 的个数/æ ¸å¿ƒæ•° +1ï¼Œæ ¸å¿ƒå¤ªå¤šçš„è¯ï¼Œä¹Ÿå¯ä»¥é€‚度å‡å°‘以留出余é‡è¿è¡Œå…¶å®ƒç¨‹åºã€‚
.. code-block:: bash
MAKEOPTS="-j28"
其他的暂时ä¸éœ€è¦ä¿®æ”¹ã€‚
安装环境完æˆï¼Œå¯ä»¥ chroot åŽå¼€å§‹å®‰è£…基本的系统了。
æ¥éª¤äº”: 安装基本的系统
============================================================
先选择一个/多个足够快的镜åƒåœ°å€ï¼ˆä¸‹è½½æºç 用于编译的安装):
.. code-block:: bash
mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
选择 163/TUNA çš„æºå°±å¥½ã€‚ç„¶åŽå¯ä»¥å†è®¾å®šä¸€ä¸ªæ›´å¿«çš„ ebuild èµ„æ–™åº“åŒæ¥åœ°å€ï¼Œå¦‚需设定,拷è´é»˜è®¤é…置文件到如下地å€ï¼š
.. code-block:: bash
mkdir etc/portage/repos.conf
cp usr/share/portage/config/repos.conf etc/portage/repos.conf/gentoo.conf
以 TUNA æº rsync æ–¹å¼ä¸ºä¾‹ï¼Œç¼–辑 :file:`etc/portage/repos.conf/gentoo.conf` 文件,替æ¢
.. code-block:: ini
sync-uri = rsync://rsync.gentoo.org/gentoo-portage
为
.. code-block:: ini
sync-uri = rsync://mirrors.tuna.tsinghua.edu.cn/gentoo-portage
ä¸è¿‡æˆ‘觉得少é‡çš„åŒæ¥ï¼Œé‡‡ç”¨å®˜æ–¹æºå³å¯ï¼Œä¹Ÿå¯ä»¥ä¸æ›¿æ¢ã€‚且这些以åŽéƒ½å¯ä»¥å†æ”¹ã€‚
设置 DNS æœåŠ¡å™¨åœ°å€ï¼Œå¯ä»¥ç›´æŽ¥å¤åˆ¶ä¹‹å‰é…置的:
.. code-block:: bash
cp -L /etc/resolv.conf etc/
ç„¶åŽæŒ‚载需è¦çš„æ–‡ä»¶ç³»ç»Ÿï¼š :file:`/proc` å’Œ :file:`/sys` 是伪文件系统,记录了 Linux å†…æ ¸å‘环境所暴露的信æ¯ï¼ŒåŽè€…原打算用于å–代å‰è€…ï¼Œè¾“å‡ºå†…å®¹æ›´åŠ ç»“æž„åŒ–ã€‚ :file:`/dev` 则是常规文件系统,部分由 Linux 设备管ç†å™¨ç®¡ç†ï¼ŒåŒ…å«äº†æ‰€æœ‰çš„设备文件。
.. code-block:: bash
mount --types proc /proc proc
mount --rbind /sys sys
mount --make-rslave sys
mount --rbind /dev dev
mount --make-rslave dev
.. note::
安装 systemd 支æŒä¸€å®šéœ€è¦ :code:`--make-rslave` æ“作。
现在 chroot 到新的环境下:
.. code-block:: bash
chroot /mnt/gentoo /bin/bash
source /etc/profile
export PS1="(chroot) $PS1"
挂载 boot 分区用于åŽç»å†…æ ¸åŠå¼•导的安装:
.. code-block:: bash
mount /dev/sde1 /boot
通过网络安装 Gentoo ebuild 资料库:
.. code-block:: bash
emerge-webrsync # 打包安装准备好的快照
emerge --sync # ç„¶åŽåŒæ¥æ›´æ–°åˆ°ç›®å‰æœ€æ–°ï¼Œè¿™æ ·å¯ä»¥æœ€å¿«é€Ÿåº¦å®‰è£…完æˆ
安装完æˆåŽï¼Œå¯èƒ½ä¼šæç¤ºæœ‰æ–°é—»ï¼Œå¯ä»¥é˜…读一下,以防é‡åˆ°å¥‡æ€ªçš„问题没法解决:
.. code-block:: bash
eselect news list
eselect news read [num]
之åŽé€‰æ‹©åˆé€‚çš„é…置文件:
.. code-block:: bash
eselect profile list # 列出å¯ç”¨çš„é…置文件
::
Available profile symlink targets:
…
[16] default/linux/amd64/17.1 (stable) *
…
[20] default/linux/amd64/17.1/desktop (stable)
[21] default/linux/amd64/17.1/desktop/gnome (stable)
…
[26] default/linux/amd64/17.1/no-multilib (stable)
…
[29] default/linux/amd64/17.1/systemd (stable)
…
.. code-block:: bash
eselect profile set [num] # 设定需è¦çš„é…ç½®æ–‡ä»¶ï¼Œè¿™é‡Œçº ç»“äº†åŠå¤©ï¼Œè¿˜æ˜¯é€‰é»˜è®¤çš„ OpenRC,毕竟 Gentoo 文档主è¦å›´ç»•它。
为é¿å…出现奇怪的问题,åˆå§‹åŒ–安装的时候,需è¦é€‰æ‹©å¯¹åº”下载的 stage3 包版本的é…置文件。主é…置文件安装完之åŽä¹Ÿå¯ä»¥å†æ›´æ”¹ã€‚
之åŽé…置一下基本的全局 USE å˜é‡ï¼Œæ¯”如这些:
.. code-block:: ini
USE="X initramfs cjk cups crypt udev alsa elogind zsh-completion bash-completion -consolekit -systemd"
å› ä¸ºæˆ‘çš„æ ¹åˆ†åŒºæ˜¯åŠ å¯†çš„ï¼Œæ‰€ä»¥å¿…é¡»å¯ç”¨ initramfs,åŽé¢çš„å†…æ ¸é…置里也得开å¯ã€‚
ç„¶åŽæ›´æ–° @world 集,这个集åˆåŒ…å«äº†å¿…è¦çš„ç³»ç»Ÿè½¯ä»¶ä»¥åŠæ˜Žç¡®é€‰å®šçš„软件:
.. code-block:: bash
emerge --ask --verbose --update --deep --changed-use @world
.. note::
新系统自带 nano 编辑器,ä¸è‡ªå¸¦ vim,å¯ä»¥å…ˆè£…ä¸€ä¸ªï¼Œä¹ æƒ¯ä½¿ç”¨ vim çš„è¯ã€‚
é…ç½® Timezone:
.. code-block:: bash
ls /usr/share/zoneinfo/Asia/Shanghai
echo "Asia/Shanghai" > /etc/timezone
emerge --config sys-libs/timezone-data
é…ç½®è¯è¨€çŽ¯å¢ƒï¼ˆè‡³å°‘ä¸€ä¸ª UTF-8 ç¼–ç 的):
.. code-block:: bash
vim /etc/locale.gen # 这里添上需è¦çš„è¯è¨€ï¼Œæ”¯æŒçš„è¯è¨€å¯ä»¥æŸ¥çœ‹ /usr/share/i18n/SUPPORTED 文件
locale-gen
之åŽé€‰æ‹©é»˜è®¤çš„è¯è¨€ï¼š
.. code-block:: bash
eselect locale list # 列出当å‰çš„è¯è¨€åˆ—表
::
Available targets for the LANG variable:
[1] C
[2] C.utf8
[3] en_HK
[4] en_HK.iso88591
[5] en_HK.utf8 *
[6] en_US.utf8
[7] POSIX
[8] zh_CN
[9] zh_CN.gb2312
[10] zh_CN.utf8
[ ] (free form)
.. code-block:: bash
eselect locale set 5
现在é‡è½½ä¸€ä¸‹å½“å‰çŽ¯å¢ƒï¼š
.. code-block:: bash
env-update && source /etc/profile && export PS1="(chroot) $PS1"
至æ¤ï¼ŒåŸºæœ¬ç³»ç»Ÿæ ¸å¿ƒæ–‡ä»¶å°±å·²ç»å®‰è£…完æˆã€‚
æ¥éª¤å…: é…ç½®å†…æ ¸
============================================================
这个æ¥éª¤åº”该说是安装 Gentoo æ—¶æœ€å¤æ‚的一个æ¥éª¤äº†ï¼Œ Gentoo æä¾›äº†å¾ˆå¤šå†…æ ¸å¯é€‰ï¼Œè¿™é‡Œå…ˆå®‰è£…最基础的,先安装æºç :
.. code-block:: bash
emerge --ask sys-kernel/gentoo-sources
ç„¶åŽå®‰è£…ä¸€ä¸‹å›ºä»¶åŒ…ï¼Œä¸»è¦æ˜¯ç”¨äºŽæŸäº›æ— 线驱动,开æºçš„æ˜¾å¡é©±åŠ¨ä¹‹ç±»çš„ï¼š
.. code-block:: bash
emerge --ask sys-kernel/linux-firmware # 选择性å¯ç”¨ savedconfig USE
这里å¯èƒ½éœ€è¦åœ¨ :file:`/etc/portage/package.license` ä¸‹æ·»åŠ æŽ¥å—许å¯ã€‚
完æˆä¹‹åŽå°±å¯ä»¥å¼€å§‹é…ç½®ç¼–è¯‘å†…æ ¸äº†ï¼Œæœ‰ä¸¤ç§æ–¹å¼ï¼Œä¸€ä¸ªæ‰‹åЍé…置,一个使用 :genpkg:`sys-kernel/genkernel` 工具æ¥é…置。我是选择手动é…置的,虽然一开始真的看得整个人都是懵的,ä¸è¿‡ç†Ÿç»ƒäº†å°±å¥½äº†ã€‚手动é…ç½®å¯ä»¥å¤§å¤§å‡å°‘ä¸éœ€è¦çš„æ¨¡å—的安装和编译,也有利于å¯åŠ¨é€Ÿåº¦ï¼Œè¿˜å¯ä»¥åŽç»ç»§ç»ç†Ÿæ‚‰ä¼˜åŒ–å†…æ ¸é…置,且把显å¡é©±åŠ¨ç›´æŽ¥ç¼–è¯‘è¿›å†…æ ¸åŽï¼Œåœ¨è¾“å…¥ LUKS åŠ å¯†åˆ†åŒºçš„å¯†ç æ—¶ï¼Œå°±å·²ç»åŠ è½½å®Œæˆæ˜¾å¡é©±åŠ¨ï¼Œå±å¹•看得也会舒æœå¾ˆå¤šã€‚
先安装两个工具:
.. code-block:: bash
emerge --ask sys-apps/pciutils # 安装完æˆåŽå¯ä»¥ä½¿ç”¨ lspci 命令查看 pci 设备
# chroot 环境下出现的一些 pcilib è¦å‘Šæ˜¯å¯ä»¥å¿½ç•¥çš„
emerge --ask sys-kernel/genkernel # ç”¨äºŽç”Ÿæˆ initramfs
这里还å¯ä»¥é…åˆä½¿ç”¨ :code:`lsmod` 命令查看,看安装 CD ä¸‹åŠ è½½äº†å“ªäº›æ¨¡å—,帮助判æ–å¯ç”¨å†…æ ¸çš„ä¸€äº›åŠŸèƒ½ã€‚
çŽ°åœ¨è¿›å…¥å†…æ ¸é…ç½®èœå•:
.. code-block:: bash
cd /usr/src/linux
make menuconfig
主è¦å‡ 个内容:
* CPU 电æºç®¡ç†
* DM-Crypt 支æŒ
* EFI, GPT 支æŒ
* åˆ†åŒºæ ¼å¼æ”¯æŒ
* USB 驱动ã€ç½‘å¡é©±åЍã€å£°å¡é©±åŠ¨ã€æ˜¾å¡é©±åЍã€ä¼ 感器驱动
* 其它细节项
这里还是看 `原文`_ ï¼Œç›¸å¯¹å¤æ‚ä¸å¤ªå¥½ç®€ç•¥è¯´æ˜Žã€‚é…置过程ä¸ï¼Œå–„用 :kbd:`/` é”®æœç´¢ï¼Œ :kbd:`H` 键查看说明,还å¯ä»¥å‚考金æ¥å›½çš„ `å†…æ ¸é…置文档翻译`_ ï¼Œè¯´æ˜¯ç¿»è¯‘ï¼Œå…¶å®žå¾ˆå¤šéƒ½æ·»åŠ äº†è‡ªå·±çš„è§£é‡Šï¼Œç›¸å¯¹å®˜æ–¹æ–‡æ¡£æ˜“äºŽç†è§£å¤ªå¤šã€‚还有就是 `Linux-Hardware`_ 这个网站,å¯ä»¥æ ¹æ®è®¾å¤‡çš„ ID 去找å¯ç”¨å…¶é©±åŠ¨éœ€è¦çš„é…置。
é…置完æˆåŽç¼–译并安装:
.. code-block:: bash
make -j30 # æ•°æ ¹æ®å®žé™…情况æ¥ï¼Œå¦‚æžœå‘现出错,则 make V=1 -j30 2>error.log åŽï¼ŒæŸ¥çœ‹æŠ¥é”™ä¿¡æ¯
make modules_install && make install
genkernel --kernel-config=/usr/src/linux/.config initramfs
å†…æ ¸è¿™ä¸€éƒ¨åˆ†ï¼Œå†™çš„å¾ˆå°‘ã€‚å®žåœ¨æ˜¯å› ä¸ºéœ€è¦çš„内容太多,åŽç»æœ‰æœºä¼šå•独整ç†å§ã€‚在之åŽçš„使用过程ä¸ï¼ŒæŸäº›ç¨‹åºä¼šéœ€è¦é¢å¤–çš„å†…æ ¸é…置,到时候å†å‚考 wiki æ“作。
.. note::
如果是第一次安装 Gentoo ä¸”å¯¹å†…æ ¸é…置也ä¸ç†Ÿæ‚‰ï¼Œä¸è¦çŠ¹è±«ï¼Œç›´æŽ¥ç”¨ :code:`genkernel` 生æˆï¼ŒåŽç»è¿›å…¥ç³»ç»ŸåŽå†æ…¢æ…¢æ”¹å†…æ ¸é…置以适é…自己的机器。使用它åªè¦ä¸€ä¸ªå‘½ä»¤è¶³ä»¥ï¼ˆå¯¹åº”é…置在 :file:`/etc/genkernel.conf` ):
.. code-block:: bash
genkernel all
å¦‚æžœåœ¨æ–°çš„æ— çŽ°æˆå†…æ ¸é…置文件的机器上安装的è¯ï¼Œæˆ‘ç›®å‰è§‰å¾—ä¸€ä¸ªæ¯”è¾ƒå¥½çš„æ–¹å¼æ˜¯ï¼š 先使用 :code:`genkernel` 工具生æˆä¸€æ¬¡å†…æ ¸ï¼Œç„¶åŽåŽ»ä¿®æ”¹ç”Ÿæˆçš„é…置文件,去掉自己明确知é“çš„ä¸ç”¨çš„æ¨¡å—和功能,修改自己明确知é“的一定è¦åŠ è½½çš„æ¨¡å—ç¼–è¯‘è¿›å†…æ ¸ï¼ˆç»“åˆä½¿ç”¨ :code:`lspci` , :code:`lsmod` , :code:`hwinfo` , :code:`sensors-detect` 命令)。
ç›®å‰ `æˆ‘çš„å†…æ ¸é…置文件`_ ,对应的硬件是: 1950X CPU + Asus ROG ZENITH EXTREME ALPHA ä¸»æ¿ + AMD Vega 64 公版显å¡ï¼›å¯¹åº”环境是: Gentoo Linux + BtrFS + LUKS2 æ ¹åˆ†åŒºåŠ å¯† + GRUB 引导。其ä¸ï¼Œä¸»è¦é©±åŠ¨å…¨éƒ¨ç¼–è¯‘è¿›å†…æ ¸ï¼Œåˆ æŽ‰äº†å¾ˆå¤šç¡®å®šè‡ªå·±ä¸éœ€è¦çš„æ¨¡å—和功能,åŽç»å†è¡Œä¼˜åŒ–。
**æœ‰ä¸€ç‚¹è¦æ³¨æ„的是,å‚考 Gentoo 官方的 AMDGPU é…置文档,里é¢çš„固件列表是ä¸å…¨çš„ï¼Œè™½ç„¶æ–‡æ¡£ä¹Ÿè¯´æ˜Žäº†ï¼Œä½†ä¸€å¼€å§‹æ²¡ä»”ç»†çœ‹ï¼Œè¢«å‘æ»äº†ï¼›é’ˆå¯¹æˆ‘è¿™å—æ˜¾å¡ï¼Œæˆ‘直接把 vega 开头的固件全部丢进去åŽ.. æ‰å¯åŠ¨ï¼Œä¹Ÿä¸åŽ»æ·±ç©¶å“ªä¸ªæ˜¯å“ªä¸ªäº†ï¼Œæžå¤§å¯èƒ½æ˜¯ vega10/20_vce/uvd.bin**
关于 Microcode, 我的是 AMD çš„ CPUï¼Œåœ¨å…¨å±€å¼€å¯ initramfs USE 的情况下,安装 :genpkg:`sys-kernel/linux-firmware` 时,会自动在 :file:`/boot` 目录下,创建一个 CPIO æ ¼å¼å¾®ç 文件 :file:`amd-uc.img` ,在 initrd ä¸ä½¿ç”¨ï¼Œéœ€è¦åœ¨ initramfs å‰åŠ è½½ï¼Œå…·ä½“è§„åˆ™çœ‹ä¸‹æ–¹ initramfs 说明链接, :code:`grub-mkconfig` ä¼šè‡ªåŠ¨è¯†åˆ«æ·»åŠ ã€‚å¦‚æžœæ˜¯ Intel çš„ CPU,则ä¸ä¼šåˆ›å»ºè¿™ä¸ªæ–‡ä»¶ï¼Œéœ€è¦æ‰‹åŠ¨åˆ›å»ºï¼Œæˆ–è€…ç›´æŽ¥ç¼–è¯‘è¿›å†…æ ¸ï¼Œæˆ–è€…ä½¿ç”¨ :code:`genkernel` 命令生æˆã€‚
查的部分一些资料,并ä¸å…¨ï¼š
* mcelog 䏿”¯æŒ AMD çš„ CPU: :code:`mcelog --help` 输出有支æŒçš„芯片组
* DMA Engine ä¸»è¦æ”¯æŒ Intel 的高端 U,AMD 上没看到有支æŒçš„: https://cateee.net/lkddb/web-lkddb/DMADEVICES.html
* initramfs 说明: https://wiki.debian.org/initramfs
* 1950x æ˜¯å¦æ”¯æŒ SME: https://github.com/AMDESE/AMDSEV/issues/1
* 我用ä¸åˆ°çš„ IB 接å£ï¼š https://en.wikipedia.org/wiki/InfiniBand
* 更新 microcode: https://wiki.gentoo.org/wiki/AMD_microcode
* tsc 报错,è”系上下文看是æ£å¸¸çš„ï¼Œè¿™é‡Œå…³è” PIT HPET ç‰æ¦‚念
* 我的 rtc 的驱动å: https://bugs.archlinux.org/task/59824
* 主æ¿ä¼ 感器芯片 IT8665E æœªå—æ”¯æŒï¼š https://github.com/lm-sensors/lm-sensors/issues/195
* æŸäº›å†…æ ¸é€‰é¡¹éœ€è¦æ‰“开专家模å¼åŽæ‰å¯è®¾ç½®ï¼š https://forums.gentoo.org/viewtopic-t-1054448-start-0.html
* PCIE 上åˆä¸€ä¸ªæŠ¥é”™ï¼š https://askubuntu.com/questions/949254/new-system-with-pcie-errors-need-help-debugging
* æ— çº¿ç½‘å¡è¯»å–温度报错 bug: https://bugzilla.kernel.org/show_bug.cgi?id=201761
* ata ä¸€ä¸ªä¸æ˜¯ bug 的报错: https://bugzilla.redhat.com/show_bug.cgi?id=653811
* æ— çº¿ç½‘å¡é¢å¤–固件 regulatory.db 报错: https://forums.gentoo.org/viewtopic-t-1114094-start-0.html å¦‚è‹¥ç¼–è¯‘è¿›å†…æ ¸ï¼Œè¿™ä¸ªå›ºä»¶ä¹Ÿè¦ä¸€èµ·ç¼–译进去
æ¥éª¤ä¸ƒï¼š 完æˆç³»ç»Ÿé…ç½®
============================================================
å†…æ ¸é…置编译完æˆåŽï¼Œæœ€éº»çƒ¦çš„一æ¥åšå®Œäº†ï¼Œä¸‹é¢å°±æ˜¯éœ€è¦åšæœ€åŽçš„系统é…置。
先创建 fstab 文件 :file:`/etc/fstab` ï¼Œç±»ä¼¼å¦‚ä¸‹æ ¼å¼ï¼š
.. code-block:: ini
# <fs> <mountpoint> <type> <opts> <dump/pass>
# /dev/sde1
UUID=<uuid> /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 2
# /dev/sda2
UUID=<uuid> /boot/efi vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 2
# /dev/mapper/ct0
UUID=<uuid> / btrfs defaults,noatime,ssd,discard,subvolid=258,subvol=/subvol_root 0 1
UUID=<uuid> /home btrfs defaults,noatime,ssd,discard,subvolid=259,subvol=/subvol_home 0 2
UUID=<uuid> /.sss btrfs defaults,noatime,ssd,discard,subvolid=260,subvol=/subvol_snapshots 0 2
注æ„:
1. å› ä¸ºæˆ‘åŒç³»ç»Ÿï¼Œæ‰€ä»¥éœ€è¦å¤ç”¨ Windows çš„ EFI 分区并挂载;
2. btrfs 分区的 UUID 是解密åŽç£ç›˜æ˜ å°„çš„ UUID
3. 别忘了添上åå· ID
ç„¶åŽé…置网络,这里直接安装 :genpkg:`net-misc/dhcpcd` 自动获å–路由器的地å€ï¼Œæ— 线网å¡é…ç½®ç‰æœ€åŽå†é…ç½®ã€‚å¦‚æžœä»…èƒ½ä½¿ç”¨æ— çº¿ç½‘å¡ï¼Œå¯ä»¥è·³åˆ°åŽæ–‡åŽ»çœ‹ã€‚
设置硬件时钟 å› ä¸ºæ˜¯å’Œ Windows åŒç³»ç»Ÿï¼Œ Windows 写入 BIOS 的是本地时间且ä¸å¯æ‰‹åŠ¨ä¿®æ”¹ï¼Œæ‰€ä»¥éœ€è¦è®¾ç½® clock="local" 在 :file:`/etc/conf.d/hwclock`
这里也å¯ä»¥ç›´æŽ¥é…ç½®å†…æ ¸å†™å…¥ï¼Œä¸ä½¿ç”¨ openrc çš„æœåŠ¡ï¼Œä½†æ˜¯ä¸¤è€…å†²çªï¼Œéœ€è¦ç¦ç”¨å…¶ä¸ä¸€ç§ï¼Œè§ï¼š https://wiki.gentoo.org/wiki/System_time#In-kernel_method
ç»™ root 用户设置一个密ç :
.. code-block:: bash
passwd root
æ·»åŠ ä¸€ä¸ªå¸¸ç”¨çš„éž root 用户,并指定é¢å¤–的用户组以便使用 :code:`su` 命令:
.. code-block:: bash
useradd -g users -G wheel <yourname>
passwd <yourname>
æ¥éª¤å…«ï¼š 完æˆç³»ç»Ÿå·¥å…·çš„安装
============================================================
这个æ¥éª¤å¯ä»¥å®‰è£…一些需è¦çš„特定工具,比如:
* 管ç†åŠ å¯†åˆ†åŒºå·¥å…· :genpkg:`sys-fs/cryptsetup`
* 计划任务工具如 :genpkg:`sys-process/cronie`
* å¿…è¦çš„æ—¥å¿—工具如 :genpkg:`app-admin/sysklogd`
* 主文件系统工具,比如我是 btrfs æ ¼å¼åˆ†åŒºåˆ™ç”¨ :genpkg:`sys-fs/btrfs-progs`
* æ— çº¿ç½‘ç»œé…置工具, :genpkg:`net-wireless/iw` 用于网络å‘现和开放或 WEP åŠ å¯†ç½‘ç»œçš„è¿žæŽ¥ï¼Œ :genpkg:`net-wireless/wpa_supplicant` 用于 WPA/WPA2 åŠ å¯†ç½‘ç»œçš„è¿žæŽ¥ã€‚
* 如果主机拨å·çš„è¯ï¼Œä¹Ÿéœ€è¦ PPPoE 客户端 :genpkg:`net-dialup/ppp` ï¼Œå¹¶åœ¨å†…æ ¸ä¸‹é…置对应选项。
主è¦å°±æ˜¯æ—¥å¿—工具的å¯ç”¨ï¼Œ DHCP 客户端的å¯ç”¨ï¼Œå…¶å®ƒåŽé¢å†è£…也å¯ä»¥ï¼š
.. code-block:: bash
emerge -av app-admin/sysklogd sys-fs/cryptsetup
rc-update add sysklogd default
rc-update add dhcpcd default
æ¥éª¤ä¹ï¼š 完æˆç³»ç»Ÿå¼•导的é…ç½®
============================================================
我选用 grub 作为引导程åºï¼Œå› 为是 UEFI 固件å¯åŠ¨ï¼Œæ‰€ä»¥éœ€è¦è®¾å®šå…¨å±€çš„ grub 傿•°ï¼Œå¹¶å®‰è£… :genpkg:`sys-boot/grub` :
.. code-block:: bash
echo GRUB_PLATFORMS="efi-64" >> /etc/portage/make.conf
emerge -av sys-boot/grub:2
è®¾ç½®å‚æ•°æ˜¯ä¸ºäº†ç¡®ä¿ç¼–译安装 grub 的时候,å¯ç”¨ efi 功能。
ç„¶åŽé…置下引导选项,主è¦ç”¨äºŽè§£å¯†ç£ç›˜ï¼Œåœ¨ :file:`/etc/default/grub` 内修改:
.. code-block:: ini
GRUB_CMDLINE_LINUX="dobtrfs crypt_root=UUID=<uuid> root=UUID=<uuid>"
.. note::
这里需è¦ä½¿ç”¨ UUID æ¥è¯†åˆ« root åˆ†åŒºï¼Œå› ä¸ºæˆ‘æ²¡æ‰¾åˆ°æ–¹æ³•æŒ‡å®šæ‰“å¼€ LUKS åŠ å¯†åˆ†åŒºåŽçš„åå—,在 Arch Linux 上å¯ä»¥é€šè¿‡åœ¨ crypt_root 傿•°åŽåŠ :code:`:<name>` æ¥æŒ‡å®šï¼Œä½†æ˜¯ Gentoo å°è¯•åŽä¸è¡Œï¼Œæš‚æ—¶ä¸åŽ»ç†ä¼šäº†ã€‚
ç„¶åŽç¡®è®¤æŒ‚è½½å®Œæˆ :file:`/boot` å’Œ Windows å¤ç”¨çš„ :file:`/boot/efi` 分区åŽï¼Œå®‰è£… grub 引导:
.. code-block:: bash
mount -a
grub-install --target=x86_64-efi --boot-directory=/boot --efi-directory=/boot/efi/ --bootloader-id=Gentoo --debug
grub-mkconfig -o /boot/grub/grub.cfg
æ— æŠ¥é”™å³å®‰è£…完æˆã€‚
.. note::
æŸäº›ä¸»æ¿ï¼Œå¦‚æžœä¸æ”¯æŒå†™å…¥ efi 实体ä½ç½®çš„è¯ï¼Œå¿…é¡»è¦è®© efi 文件以æ¤åç§°å˜æ”¾åœ¨æ¤ä½ç½®ä»¥è¯†åˆ«ï¼ˆæ¯”如我以å‰çš„å°å¼ï¼‰ï¼š
.. code-block:: bash
mkdir /boot/efi/EFI/Boot
cp /boot/efi/EFI/Gentoo/grubx64.efi /boot/efi/EFI/Boot/bootx64.efi
䏿€¥ç€é… Windows åŒå¯ï¼Œå…ˆé‡å¯æŸ¥çœ‹æ˜¯å¦å®Œæˆï¼š
.. code-block:: bash
exit
umount -l /mnt/gentoo/dev{/shm,/pts,}
umount -Rf /mnt/gentoo
reboot
ä¸å‡ºæ„外,那么至æ¤ï¼ŒæˆåŠŸå¯åŠ¨ã€‚
.. image:: /nocimages/gentoo_minimal_install_media_1.png
:alt: Gentoo é…置完æˆè¿›å…¥ç³»ç»Ÿè¿‡ç¨‹
æ¥éª¤å: æ”¶å°¾
============================================================
现在已ç»è¿›å…¥äº†æ–°å®‰è£…çš„ Gentoo 系统下了,虽然还没有桌é¢çŽ¯å¢ƒï¼Œä½†å„类驱动应该都没有问题了。
åŽé¢çš„ä»»åŠ¡å°±æ˜¯æ·»åŠ å¸¸ç”¨çš„éž root 用户,é…置桌é¢çŽ¯å¢ƒ/窗å£ç®¡ç†å™¨ï¼Œå®‰è£…需è¦çš„å„类软件 :del:`,éžå¸¸ç®€å•çš„ Windows åŒå¯é…ç½®` 。
å³ä½¿ç›®å‰è¿˜æ²¡é… GRUB åŒå¯ï¼Œå¼€æœºåŽ BIOS 下选择 Windows çš„ EFI 实体也能å¯åЍ Windows。
**2020/10/10 更:**
å·®ä¸å¤šå®Œå·¥äº†ï¼Œä¸‹é¢æ€»ç»“一下完æˆé…置时é‡åˆ°çš„一些问题。
关于 WM/DE 的选择
----------------------------------------------------
æœ¬æ¥æˆ‘是打算使用 Awesome 窗å£ç®¡ç†å™¨çš„,毕竟在笔记本上一直都是用的它,但是我å‘现一个问题,最新å‘布的版本居然还是 2019 å¹´ 1 月的,虽然仓库一直都有在更新,所以之å‰é‡åˆ°çš„问题(全å±çš„ Client åˆå§‹æ‰“开时ä¸è®¡ç®—任务æ é«˜åº¦ï¼Œå¯¼è‡´ä¸‹æ–¹ä¼šè¢«åžæŽ‰ä¸€å°æ¡ï¼Œéœ€è¦é‡æ–° :kbd:`Mod4` + :kbd:`M` 一下æ‰è¡Œï¼‰ä¾æ—§æ˜¯æ²¡è§£å†³çš„,比较影å“ä½“éªŒï¼Œæˆ‘ä¹Ÿå¾ˆç¥žå¥‡åœ¨ç¬”è®°æœ¬ä¸ŠåšæŒç”¨äº†è¿™ä¹ˆä¹…。
其次,独立的 X :ruby:`æ··æˆå™¨|Compositor` 效果都差强人æ„,最开始的 Xcompmgr æ²¡æœ‰è‡ªå¸¦çš„é€æ˜Žè§„åˆ™ï¼Œéœ€è¦ WM 或其他工具é…置,ä¸èƒ½æ¨¡ç³ŠåŒ–ï¼› Fork 自 xcompmgr-dana çš„ Compton çŽ°åœ¨å·²ç»æ— 人维护,之å‰ç”¨è¿™ä¸ªæ„Ÿè§‰æ•ˆæžœæ˜¯æœ€å¥½çš„,但是模糊效果比较一般; Fork 自 Compton çš„ Picom 是现在活跃维护的å¯ç‹¬ç«‹è¿è¡Œçš„æ··æˆå™¨ï¼Œç»“æžœ xrender åŽç«¯ä¸‹ï¼Œæ¨¡ç³ŠèƒŒæ™¯ç›´æŽ¥å¯¼è‡´ WM 塿»ï¼Œ GLX åŽç«¯ä¸‹æ¨¡ç³ŠèƒŒæ™¯æ•ˆæžœæ€Žä¹ˆéƒ½æ£é¼“ä¸å‡ºæ¥.. ç„¶åŽå†åŠ ä¸Š Kwin 自带混æˆå™¨æ¨¡ç³Š Konsole çš„ç£¨ç ‚é€æ˜ŽèƒŒæ™¯æ•ˆæžœçœŸçš„很诱人;
并且,一个完整的 DE å¯ä»¥èŠ‚çœæˆ‘很多时间去写å„ç§å„æ ·çš„æ’件脚本,æä¾›äº†å¾ˆå¤šæˆ‘ä¸çŸ¥é“的细节上的设置,还有强大的社区支撑,所以我决定在 Gentoo 上抛弃 Awesome WMï¼Œä½†å¤šå¹´çš„ä¹ æƒ¯ä¸æƒ³æ”¹ï¼Œæ‰€ä»¥å°±éœ€è¦é…ç½® KDE 的快æ·é”®äº†ï¼ŒäºŽæ˜¯æˆ‘就把 KDE 的快æ·é”®é…置到éžå¸¸ç±»ä¼¼ Awesome WM,基本上实现了平滑过度: `AwesomeWMLikeKDEShortcuts&CorrespondingScripts`_ .
如何在 Gentoo 上安装 KDE Plasma 桌é¢çŽ¯å¢ƒï¼Œç›´æŽ¥å‚考 `官方维基`_ å³å¯ï¼Œæ²¡æœ‰ä»€ä¹ˆå‘。整体的编译安装时间也ä¸ç®—长,从修改系统的 Profile 为 desktop/plasma åˆ°å®Œæˆ plasma-meta 的安装,我查了 :file:`emerge.log` ,确认花了整 1 ä¸ªå°æ—¶ï¼Œé‚£ä¹ˆä½œä¸ºå‚è€ƒï¼Œæˆ‘ç¼–è¯‘å®‰è£…å®Œæˆ Chromium 的时间是 1 å°æ—¶ 44 分钟。
å®Œæˆ KDE 安装åŽé‡åˆ°çš„问题
----------------------------------------------------
那么安装完æˆä¹‹åŽé‡åˆ°äº†ä»€ä¹ˆé—®é¢˜å‘¢ï¼Ÿ
.. admonition:: T/S
首先,在 Awesome WM 下就é‡åˆ°çš„问题——计算机ç¡çœ (挂起到内å˜ï¼‰ï¼Œå”¤é†’åŽé¼ æ ‡å’Œ USB 耳机æ£å¸¸ï¼Œä½†é”®ç›˜æ— 法使用的问题。
先说结论, åº”è¯¥æ˜¯ç›®å‰ Linux çš„ xHCI 驱动对 USB 3.1 Gen 2 æŽ¥å£æ”¯æŒä¸å¤Ÿå®Œå–„导致的,但是我ä¸å¤Ÿç¡®å®šï¼Œæ‰€ä»¥ç›®å‰æˆ‘çš„å¤„ç†æŽªæ–½æ˜¯åœ¨ç¡çœ 计算机时确ä¿è¯¥æŽ¥å£ä¸å¤–接设备
å…·ä½“é—®é¢˜æ˜¯è¿™æ ·çš„ï¼š
最开始当ç¡çœ 计算机时,出现唤醒åŽé”®ç›˜æ— æ³•è¾“å…¥çš„æƒ…å†µï¼Œä½†æ˜¯é¼ æ ‡æ£å¸¸ï¼Œå› 为键盘附带è“牙切æ¢åŠŸèƒ½ï¼Œæ‰€ä»¥æˆ‘æœ¬ä»¥ä¸ºæ˜¯ USB 接å£åœ¨å”¤é†’åŽå‡ºçŽ°äº†æŽ‰ç”µçš„é—®é¢˜å¯¼è‡´é”®ç›˜èŠ¯ç‰‡å¯èƒ½å¡ä½çš„æƒ…况。
这里接触到了很多,最主è¦çš„一点是:很多电脑的 BIOS 会在唤醒计算机时,é‡ç½® USB 总线,é‡ç½®åŽ kernel 的日志会有:
.. code-block:: kmsg
kernel: [14624.419353] usb usb1: root hub lost power or was reset
如æ¤ç±»ä¼¼çš„æç¤ºä¿¡æ¯ã€‚对于å˜å‚¨è®¾å¤‡æ¥è¯´ï¼Œè®¾å¤‡æŽ‰ç”µå†å”¤é†’åŽï¼Œå°±å¯èƒ½æ— æ³•ç»§ç»æŽ¥ç€ä¹‹å‰æŒ‚è½½ç‚¹ä½¿ç”¨ï¼ŒäºŽæ˜¯å†…æ ¸å‡ºçŽ°äº†ä¸€ä¸ªè®¾ç½®â€”â€” Enable USB persist by default ,这个设置ä¸ä¼šæ”¹å˜ BIOS çš„é‡ç½®æœºåˆ¶ï¼Œä¸”我打开了 BIOS 找了一é也没有å‘现任何相关这个动作的设置,详细的说明看官方文档: https://www.kernel.org/doc/Documentation/driver-api/usb/persist.rst ä¹Ÿå°±æ˜¯å¤§è‡´è§£å†³äº†æŽ‰ç”µåŽæ— 法平滑访问 USB å˜å‚¨è®¾å¤‡çš„问题。了解之åŽåˆ¤æ–且å°è¯•åŽå‘现,这个选项ä¸ä¼šå¯¼è‡´ä¸Šè¿°é—®é¢˜çš„出现。
åŽæ¥æœºç¼˜å·§åˆæ¢äº†ä¸€ä¸ª USB 接å£ï¼Œçªç„¶å‘现æ£å¸¸äº†ï¼Œç„¶åŽæˆ‘从 USB 接å£å…¥æ‰‹åŽ»æŽ’é”™ï¼Œå°è¯•了很多次åŽï¼Œå‘现了最开始说明的情况,å³ï¼Œå½“系统ç¡çœ 时,USB 3.1 Gen 2 å£è‹¥è¿žæŽ¥æœ‰è®¾å¤‡ï¼Œå”¤é†’åŽï¼Œä¼šå‡ºçŽ°ç±»ä¼¼ä¸‹è¿°æŠ¥é”™ï¼Œ 对应 kworker 进入 D state ,在这个状æ€ä¸‹ï¼Œå®ƒä¼šä¸€ç›´ç‰å¾…且ä¸ä¼šè¢«ä¸æ–,最明显的表现就是这个 USB æŽ¥å£æ— 法使用,且 :code:`lsusb` 命令会å¡ä½ï¼Œæ— 法获å–任何信æ¯ã€‚并且关机时会å¡åœ¨æœ€åŽ Remount / read only... çš„ä½ç½®æ— 法æ£å¸¸å…³æœºï¼ŒåŒæ ·ä¹Ÿä¼šæ— 法æ£å¸¸å†æ¬¡ç¡çœ ï¼Œåº”è¯¥å°±æ˜¯å› ä¸ºå†…æ ¸æ•´ä¸ªå¡ä½äº†...
.. code-block:: dmesg
xhci_hcd 0000:0a:00.0: WARN: xHC restore state timeout
PM: Device 0000:08:00.0 failed to resume async: error -110
xhci_hcd 0000:0a:00.0: PCI post-resume error -110!
…
udevd[2412]: worker [5384] /devices/pci0000:00/0000:00:01.3/0000:0a:00.0/usb5 is taking a long time
…
INFO: task kworker/6:2:2914 blocked for more than 860 seconds.
Not tainted 5.4.66-gentoo-alpha #25
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
kworker/6:2 D 0 2914 2 0x80004000
Workqueue: usb_hub_wq hub_event
Call Trace:
__schedule+0x2cf/0x740
…
åŒæ—¶ï¼Œé€šè¿‡è§£å†³è¿™ä¸ªé—®é¢˜äº†è§£åˆ°ï¼Œç›®å‰ xHCI 驱动已ç»å…¼å®¹äº† USB 2.0 å’Œ USB 1.0 设备,除éžç”µè„‘的主æ¿ä¸Šæœ‰çº¯ç²¹çš„ USB 2.0 之类的接å£ï¼Œå¦åˆ™ä¸éœ€è¦å†ç¼–译 EHCI/UHCI é©±åŠ¨è¿›å…¥å†…æ ¸ã€‚
还é‡åˆ°çš„问题有,
.. admonition:: T/S
urxvt ä¸‹æ— æ³•åˆ‡æ¢ä¸æ–‡ï¼Œä¸”会有如下报错:
.. code-block:: bash
urxvt: the locale is not supported by Xlib, continuing without locale support.
排查åŽå‘çŽ°åº”è¯¥æ˜¯ä¹‹å‰æˆ‘默认设置了 locale 为 :code:`en_HK.utf8` ,切æ¢åˆ° :code:`en_US.utf8` åŽæ£å¸¸ã€‚ 所以应该就是就是 Xlib 䏿”¯æŒ :code:`en_HK.utf8` .
.. admonition:: T/S
yubikey 相关问题: 1ï¼‰æ— æ³•ä½¿ç”¨ u2f åŠŸèƒ½ï¼Œæ¯æ¬¡éƒ½æ— 法验è¯ï¼› 2)ykman 获å–ä¸åˆ°è®¾å¤‡ä¿¡æ¯
1ï¼‰åŽŸå› æ˜¯éœ€è¦é¢å¤–çš„ udev 规则,å‚阅: https://forums.gentoo.org/viewtopic-p-8504230.html?sid=580f7e5e2cf387e1806d2ec02cc14019 ï¼› 2ï¼‰åˆ™æ˜¯å› ä¸º Gentoo 下默认ä¸ä¼šå®‰è£… pcsc 驱动,自行安装 :genpkg:`app-crypt/ccid` å³å¯ï¼ŒåŒæ—¶æ³¨æ„ openrc 用户需在 :file:`/etc/rc.conf` ä¸‹æ·»åŠ :code:`rc_hotplug="pcscd"` .
.. admonition:: T/S
å‡çº§ Plasma åŽå‡ºçŽ°ä»Ž SDDM 到 Plasma åŠ è½½æ—¶é—´å˜é•¿çš„问题
åˆ é™¤ :file:`~/.Xauthority` æ–‡ä»¶é‡æ–°ç™»å½•åŽï¼Œæœ‰æ‰€æ”¹å–„。咱也åªä¸çŸ¥é“为啥...
.. admonition:: T/S
NextCloud æ¯æ¬¡å¼€å¯ä¼šæç¤º Changes In Synchronized Folders Not Being Tracked Reliably. 并告知æŸäº›æ–‡ä»¶ä¸ä¼šç«‹é©¬è¢«åŒæ¥ï¼Œå¯èƒ½ä¼šæ¯ 2 ä¸ªå°æ—¶åŒæ¥ä¸€æ¬¡ã€‚
åŽŸå› æ˜¯å› ä¸º Gentoo-Sources è¿™ä¸ªå†…æ ¸é»˜è®¤å†™çš„ :code:`INOTIFY_WATCHES` åªæœ‰ 8192ï¼Œè¿™ä¸ªæ— æ³•åœ¨å†…æ ¸ä¸‹é…置,但是å¯ä»¥å¼€æœºåŽä¿®æ”¹ï¼Œå¯ä»¥æ‰‹åЍé…置,如下:
在 :file:`/etc/sysctl.d/99local.conf` ä¸‹æ·»åŠ ï¼š
.. code-block:: ini
fs.inotify.max_user_instances = 512
fs.inotify.max_user_watches = 524288
è¿™é‡ŒåŒæ—¶ä¿®æ”¹äº† max_user_instances çš„å€¼ï¼Œå› ä¸ºé»˜è®¤åªæœ‰ 128,默认é…置的ä½ç½®åœ¨ :file:`linux/fs/notify/inotify/inotify_user.c`
ä¹‹åŽæ¯æ¬¡å¼€æœºåŽä¼šè‡ªåŠ¨åº”ç”¨ï¼Œå½“å‰å¯æ‰§è¡Œå¦‚下命令立å³ç”Ÿæ•ˆï¼š
.. code-block:: bash
sysctl --system
.. admonition:: T/S
é‡åˆ°è“牙总是çªç„¶å‡æ»æ— 法使用的问题,表现为è“牙键盘连接æˆåŠŸï¼Œä½†æ— æ³•æ–开,bluetooth æœåŠ¡ä¹Ÿæ— æ³•å…³é—ï¼Œå…³é—æœåŠ¡æ“ä½œæ—¶å†…æ ¸ä¼šæŠ¥é”™ï¼š
.. code-block:: dmesg
Bluetooth: hci0: urb 00000000b85d4849 failed to resubmit (2)
ç¡çœ 计算机唤醒åŽè¿˜å¯èƒ½å‡ºçް modprobe ... blocked å†…æ ¸é”™è¯¯ä¿¡æ¯ã€‚
åŽæŽ’æŸ¥å’Œå†…æ ¸çš„ä¸€ä¸ª autosuspend çš„é…置相关: :code:`CONFIG_BT_HCIBTUSB_AUTOSUSPEND` 这个设置关掉åŽï¼Œç›®å‰è¿˜æ²¡å‡ºçŽ°ç›¸åº”é—®é¢˜ã€‚
备份 LUKS åŠ å¯†å¤´
----------------------------------------------------
整个系统é…置完æˆåŽï¼Œåœ¨è¿›è¡Œæ—¥å¸¸ä½¿ç”¨æ—¶ä¸€å®šè¦åšçš„就是备份好 LUKS ç¡¬ç›˜åŠ å¯†çš„åŠ å¯†å¤´ä¿¡æ¯ä»¥åŠé’¥åŒ™æ§½ï¼Œå¦åˆ™å½“åŠ å¯†å¤´ä¿¡æ¯æŸå就将永远失去对硬盘信æ¯çš„访问æƒé™ï¼š
.. code-block:: bash
cryptsetup luksHeaderBackup /dev/<æœªè§£é”æ—¶çš„设备å—> --header-backup-file <file>
ç„¶åŽå¯ä»¥ç»™å¤‡ä»½çš„头文件åšåŠ å¯†åŽæ°¸ä¹…性ä¿å˜ï¼Œå‚考 `Cryptsetup wiki`_ 。
LUKS ç£ç›˜ä¸Šçš„æ•°æ®æ˜¯é€šè¿‡ä¸€ä¸ªä¸»å¯†é’¥åŠ å¯†å’Œè§£å¯†çš„ï¼Œè€Œè¿™ä¸ªä¸»å¯†é’¥å˜å‚¨åœ¨åŠ å¯†å¤´å†…ï¼›æ‰€ä»¥å³ä½¿ä¿®æ”¹äº†å½“å‰çš„åŠ å¯†å¤´å†…è§£é”主密钥的密ç ï¼Œå¤‡ä»½è¿‡çš„åŠ å¯†å¤´ä¾æ—§å¯ä»¥ä½¿ç”¨åŽŸå¯†ç æ¥è§£é”主密钥并进一æ¥è§£é”ç£ç›˜ä¸Šçš„æ•°æ®ï¼Œé™¤éžå¯¹æ•´ä¸ªç£ç›˜é‡æ–°è¿›è¡ŒåŠ å¯†â€”â€”å³æ›¿æ¢ä¸»å¯†é’¥ã€‚
值得注æ„的是,在æ¢å¤å¤‡ç”¨çš„åŠ å¯†å¤´ä¹‹å‰ï¼Œä¸€å®šè¦å…ˆæµ‹è¯•åŠ å¯†å¤´æ˜¯å¦åŒ¹é…。
é…ç½®ä¼‘çœ è®¡ç®—æœº
----------------------------------------------------
我的文件系统是 BtrFS,且我未é…置任何 swap åˆ†åŒºï¼Œæ‰€ä»¥ä¼‘çœ åŠŸèƒ½éœ€è¦ä¾èµ–于 swap 文件,在 BtrFS 下创建 swap 文件ä¾èµ–于如下命令:
.. code-block:: bash
truncate -s 0 /swapfile
chattr +C /swapfile
btrfs property set /swapfile compression none
dd if=/dev/zero of=/swapfile bs=1M count=327688 status=progress
swapon /swapfile
è¿™æ ·å创建了一个 32G çš„ swap ,é…置到 fstab 下就ä¸è¯´äº†ã€‚在这里需è¦è§£å†³çš„é—®é¢˜æ˜¯å¦‚ä½•ä»Žè¿™ä¸ªæ–‡ä»¶ä¸æ¢å¤ä¼‘çœ çš„ç³»ç»Ÿã€‚
显示需è¦èŽ·å–这个文件在对应分区下的åç§»é‡ï¼Œè€Œ BtrFS 还有别于其他文件系统,ä¸èƒ½ä½¿ç”¨ :code:`filefrag` 命令获å–,需è¦å…¶ä»–工具;在 `ArchLinux Wiki 上`_ ,列出了这么一个工具å¯ä»¥ç”¨äºŽèŽ·å–ï¼Œä¹ŸåŒæ—¶è¯´æ˜Žäº†å¦‚何é…置。å³ï¼š
.. code-block:: bash
./btrfs_map_physical /swapfile # 获å–返回的第一行åç§»é‡æ•°æ® OFFSET
bc <<< "scale=3;<OFFSET> / $(getconf PAGESIZE)" # å³èŽ·å–到了需è¦å†™å…¥ Grub çš„åç§»é‡æ•°æ®
findmnt -no UUID -T /swapfile # èŽ·å–æ¤ swap 文件对应分区的 UUID
ç„¶åŽé…ç½® Grub,修改如下项:
.. code-block:: bash
GRUB_CMDLINE_LINUX_DEFAULT="resume=UUID=<UUID> resume_offset=<CalOFFSET>"
这里没有é‡åˆ°ä»€ä¹ˆå‘ï¼Œåªæ˜¯éœ€è¦æ³¨æ„,é…置完æˆåŽï¼Œå› 为当å‰è¿è¡Œçš„å†…æ ¸å¹¶æ²¡æœ‰èŽ·å–到这一数æ®ï¼Œæ‰€ä»¥éœ€è¦é‡æ–°å¯åŠ¨å®ŒæˆåŽï¼Œæ‰å¯ä»¥æ£å¸¸ä¼‘çœ ã€‚
美化 Grub
----------------------------------------------------
这里直接使用现æˆçš„主题åšä¿®æ”¹ï¼Œè¯¦ç»†è‡ªè¡Œæœç´¢å³å¯ï¼Œéžå¸¸ç®€å•。ä¸è¿‡è¿™é‡Œé‡åˆ°è¿‡ä¸€ä¸ªé—®é¢˜ï¼š
.. admonition:: T/S
修改现有 grub 主题替æ¢è‡ªå®šä¹‰èƒŒæ™¯å›¾åŽï¼ˆä¿æŒäº†æ–‡ä»¶åä¸€è‡´ï¼‰ï¼Œå¼€æœºå´æç¤º :code:`error: invalid argument` ,然åŽä¼šè¿›å…¥é»˜è®¤ä¸»é¢˜ã€‚
排查åŽå‘çŽ°æ˜¯å› ä¸ºé»˜è®¤ç”Ÿæˆäº† Progressive JPEG æ ¼å¼ï¼Œå½“æ›¿æ¢æˆ Baseline JPEG æ ¼å¼åŽæŠ¥é”™æ¶ˆå¤±ä¸€åˆ‡æ£å¸¸ï¼Œæ‰€ä»¥åº”该是 grub 䏿”¯æŒ Progressive JPEG æ ¼å¼ã€‚
å¼€å¯å¼€æœºåŠ¨ç”»ï¼Ÿ
----------------------------------------------------
æœ¬æ¥æˆ‘是想开å¯å¼€æœºåŠ¨ç”»çš„ï¼Œæœç´¢åŽå‘现å¯ä»¥ä½¿ç”¨ plymouth 这个软件,有很多现æˆçš„主题, KDE çš„ Breeze 主题还å˜åœ¨äºŽ Gentoo 官方仓库下。具体å¯ç”¨æ¥éª¤ä¸»è¦å¦‚ä¸‹å‡ ç‚¹ï¼š
* å†…æ ¸ä¸‹å…³é—å¯åЍ Logo 的显示
* å†…æ ¸ä¸‹å…³é—æ—§çš„ Framebuffer é…ç½®
* å†…æ ¸ä¸‹å¼€å¯æ˜¾å¡çš„ KMS é…ç½®
* ç”Ÿæˆæ”¯æŒ Plymouth çš„ initramfs
* é…ç½® grub å¯åЍ傿•°
* 美化 Plymouth 主题
* é…置过渡效果
å†…æ ¸çš„é…置直接看 `Gentoo Wiki`_ ï¼›ä¸»è¦æƒ³è¯´ä¸€ä¸‹ç”Ÿæˆæ”¯æŒ Plymouth çš„ initramfs
Gentoo 下默认的也是推èçš„ initramfs 生æˆå·¥å…· genkernel 并䏿”¯æŒ Plymouthï¼Œè™½ç„¶ä¹‹å‰æœ‰ä¸€ä¸ª genkernel-next 是支æŒçš„,但是现在已ç»ä¸å†ç»´æŠ¤ä¸”被 Gentoo æ”¾å¼ƒï¼›è€Œç›®å‰ Gentoo 下å¯ç”¨çš„æ”¯æŒ Plymouht çš„ initramfs 生æˆå·¥å…·åªæœ‰ dracut. åŸºæœ¬æ— éœ€é…ç½®å³å¯ä½¿ç”¨ï¼Œå®ƒä¼šè‡ªåŠ¨è¯†åˆ«å½“å‰ç³»ç»Ÿä¸‹å®‰è£…的程åºï¼Œç„¶åŽæ·»åŠ åˆ°å…¶ç”Ÿæˆçš„ initramfs ä¸ï¼Œåªè¦ä¸€æ¡å‘½ä»¤ï¼š
.. code-block:: bash
dracut --force --hostonly
则会自动在 :file:`/boot` 目录下生æˆå¹¶è¦†ç›–原有文件。至于 grub çš„å¯åЍ傿•°ï¼Œä¸»è¦å°±æ˜¯å¦‚下两个:
.. code-block:: bash
GRUB_GFXMODE=1920x1200x32,auto
GRUB_GFXPAYLOAD_LINUX=keep
å‰è€…é…置一个适åˆè‡ªå·±å±å¹•的分辨率和色彩深度,并给一个é¢å¤–çš„å¯é€‰è‡ªåЍé…置项;åŽè€…å‘Šè¯‰å†…æ ¸ç»´æŒå½“å‰çš„分辨率。然åŽå¯¹äºŽæµ‹è¯•æˆåŠŸåŽå³å¯ä»¥é…ç½®é€‚åˆæ¤åˆ†è¾¨çŽ‡çš„ Plymouth 的主题了。
但我在这里å´é‡åˆ°ä¸€ä¸ªé—®é¢˜ï¼Œå½“我在系统内测试一切æ£å¸¸åŽï¼Œå´åœ¨å¼€æœºåŽå‘现, Plymouth çš„ two-step 模å—é…ç½®ä¸‹ï¼Œå¼€æœºæ— æ³•æ˜¾ç¤ºé…置好的开机æç¤ºæ–‡å—,å夿µ‹è¯•åŽç¡®å®šæ˜¯ dracut 的问题,且工具在系统明明没有 systemd çš„æƒ…å†µä¸‹ï¼Œå¼€æœºä¾æ—§åŽ»è°ƒç”¨ systemd 相关æœåŠ¡ï¼Œæœ€åŽæ”¾å¼ƒè¿™ä¸ªå·¥å…·ï¼Œé‚£ä¹ˆåœ¨ Gentoo 下å¯èƒ½å°±éœ€è¦åŽ»æ‰‹åŠ¨åˆ›å»º initramfs 以完美支æŒï¼Œä¸åƒ Arch Linux çš„ mkinitcpio 脚本本身就支æŒï¼›ä¸” Gentoo 下也没有针对 Plymouth é…æœ‰è¿‡æ¸¡æ•ˆæžœçš„工具包.. 而在没有过渡效果的清空下,开关机体验还是很差的,所以我放弃了这个功能,至少目å‰ã€‚
.. admonition:: T/S
在å°è¯•过程ä¸é‡åˆ°è¿‡ä¸€ä¸ªé—®é¢˜ï¼š 在 Plymouth çš„ [boot-up] / [shutdown] ç‰è¿‡ç¨‹ä¸è®¾ç½® Title/SubTitle å±žæ€§æ— æ•ˆçš„é—®é¢˜ã€‚
查了æºç çš„ commit 记录åŽå‘çŽ°ï¼Œå½“å‰æ‰“包的 0.9.5 ç‰ˆæœ¬ï¼Œä¾æ—§è¿˜æ˜¯ä½¿ç”¨ :code:`_Title` è€Œä¸æ˜¯ :code:`Title` åæ¥èŽ·å–该属性,所以需è¦å‰ç¼€ä¸€ä¸ª :code:`_` 符å·ã€‚
-O3 çš„å°è¯•
----------------------------------------------------
默认情况下,使用 -O2 æ¥ä¼˜åŒ– gcc 的编译,而 -O3 会进一æ¥ä¼˜åŒ–编译的二进制文件,使之å¯ä»¥ä½¿ç”¨ AVX æŒ‡ä»¤é›†åŠ YMM 寄å˜å™¨ã€‚ä½†è¿™ä¸æ˜¯å®˜æ–¹æŽ¨èçš„é€‰é¡¹ï¼Œå› ä¸ºåœ¨è¿™ä¸ªé€‰é¡¹ä¸‹ä¼šæ˜Žæ˜¾æ¶ˆè€—æ›´å¤šçš„å†…å˜ï¼Œå¹¶ä¸”ä½¿äºŒè¿›åˆ¶æ–‡ä»¶æ›´å¤§ï¼Œè€Œä¸”å·²çŸ¥ä¸€äº›åŒ…ä¼šå› ä¸ºè¿™ä¸ªé€‰é¡¹è€Œç¼–è¯‘å¤±è´¥ï¼Œä¹Ÿå¹¶ä¸ä¸€å®šèƒ½æå‡ç¼–译åŽçš„二进制文件的执行性能,这个éžå¸¸ä¾èµ–äºŽä»£ç æœ¬èº«çš„è´¨é‡ã€‚我现在是使用的 -O3,至于效果如何看长期å§ï¼Œç›¸å¯¹äºŽ -O2 的区别,å¯ä»¥çœ‹åˆ°çš„æ˜¯äºŒè¿›åˆ¶æ–‡ä»¶ç¡®å®žå˜å¤§äº†ä¸€ç‚¹ï¼Œä½†ä¹Ÿå°±åªæœ‰ä¸€ç‚¹ï¼Œæ¯”如 FireFox 的库目录 从 183M å˜æˆäº† 189M,è¿è¡Œæ—¶çš„内å˜ç›®å‰ä¹Ÿæ²¡å‘现明显的区别,当然性能也没有éžå¸¸ç›´è§‚的体现... 先用ç€
æ‚七æ‚å…«
----------------------------------------------------
.. code-block:: bash
# é…ç½®å½“å‰ CPU 支æŒçš„æ‰€æœ‰æŒ‡ä»¤é›†
echo "*/* $(cpuid2cpuflags)" > /etc/portage/package.use/00cpu-flags
# 查看一系列 emerge 下编译时间用时
sed -E '/>>>\s+emerge/bd;/:::/bd;/[0-9]+:\s.+$/d;:d;' e.log | sed -E '/:::/bn;N;s/\n/ /;:n;s/([0-9]{10}):\s+>>>\s+emerge\s*\([0-9of ]+\)\s+([A-Za-z0-9_\+\.\/\-]+)\s+[a-z\/ ]+([0-9]{10}):.*/\1 \3 \2/' | awk -F' ' '{printf $2-$1" "$3"\n"}' | sort -n | less
# 大致ç›é€‰ä»“库下有效的 live 包 **20210111æ›´**
find . -name '*.ebuild' | egrep '9999*(-r[0-9]{1,3})?\.ebuild$' | grep -v '/virtual/' | xargs egrep 'inherit.+(darcs|cvs|subversion|mercurial|kde.org|xorg-2|xorg-3|ros-catkin|selinux-policy-2|git-r3|llvm.org|libretro-core|golang-vcs)|LICENSE="metapackage"|="git-r3"|toolchain_src_prepare|EGIT_REPO_URI=|="subversion"' | awk -F: '{printf $1 "\n"}' | uniq
é…ç½®åŒå¯ä¸æ‰“ç®—é…置了,目å‰ç›´æŽ¥ :kbd:`F2` è¿› BIOS 下选择 Windows çš„ UEFI å¯åŠ¨å¾ˆæ–¹ä¾¿ï¼Œè€Œä¸”åŸºæœ¬ä¸ç”¨ Windows
1950X å¯ä»¥æ”¯æŒ NUMA , BIOS 下å¯ç”¨å®ƒä»¥ç¼©çŸç¼–译时间, ZENITH EXTREME ALPHA çš„ BIOS V2101 对应设置为 memory interleaving 改为 channel 以å¯ç”¨ã€‚å½“ç„¶ï¼Œå†…æ ¸ä¸‹ä¹Ÿè¦é…置开å¯ã€‚
使用 Gentoo 是一个长期的过程,之åŽé‡åˆ°çš„问题以åŠå¦‚ä½•è§£å†³æˆ‘ä¹Ÿä¼šç»§ç»æ›´æ–°ï¼ŒçŽ°åœ¨å°±æš‚æ—¶è¿™æ ·ã€‚
**20201128æ›´**
1. 一次æ„外æ–电åŽï¼Œå‡ºçŽ°äº†è“ç‰™æ— æ³•ä½¿ç”¨çš„é—®é¢˜ï¼Œæœ€åŽè¿˜æ˜¯å› ä¸ºå›ºä»¶æ²¡æœ‰åŠ è½½å¥½ï¼Œ`intel/ibt-18-16-1.*` ;进入 Windows åŽé‡å¯å†å›žåˆ° Linux å¯ç”¨ï¼Œæ˜¯å› 为 Windows å¸®å¿™åŠ è½½äº†å›ºä»¶ï¼›ç›®å‰æ¯”è¾ƒè¿·æƒ‘çš„æ˜¯ä¸ºä»€ä¹ˆä¹‹å‰æ˜¯ç›´æŽ¥æ–电åŽè¿›å…¥ Linux 使用是æ£å¸¸ï¼Œåªæœ‰å†è¿™æ¬¡æ„外æ–ç”µåŽæ‰å‡ºçŽ°äº†é—®é¢˜ã€‚
2. çœ‹é—¨ç‹—èŠ¯ç‰‡ï¼Œç›®å‰æµ‹è¯•下æ¥ï¼Œä½¿ç”¨çš„æ˜¯ it87_wdt 这个驱动;用户空间下的 watchdog 守护进程å¯ç”¨äºŽæŽ¥ç®¡å†…æ ¸å¯¹çœ‹é—¨ç‹—çš„å†™å…¥ï¼ŒåŒæ—¶æä¾›æ›´å¤šçš„åŠŸèƒ½ï¼Œæ¯”å¦‚åœ¨ç³»ç»Ÿæ— å“应之åŽï¼Œå…ˆå°è¯•ä¿®å¤ç³»ç»Ÿå“åº”ï¼Œæ— æ•ˆå†é‡å¯ç³»ç»Ÿï¼Œä½†æ˜¯ç›®å‰æˆ‘ä¸çŸ¥é“如何åšè¿™ä¸ªä¿®å¤ã€‚当开å¯äº†çœ‹é—¨ç‹—,但是未调用用户空间的程åºå¯¹çœ‹é—¨ç‹—进行写æ“作时,应该是需è¦å¼€å¯å†…æ ¸ä¸‹è¿™ä¸ªé…置: :code:`CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y` ,以ä¿è¯åœ¨ç”¨æˆ·è¿›ç¨‹æŽ¥ç®¡å‰ç³»ç»Ÿä¸ä¼šé‡å¯ã€‚è¿™æ ·åå°±å¯ä»¥çµæ´»å¾ˆå¤šã€‚
3. @preserved-rebuild 里é¢çš„åŒ…ï¼Œæ˜¯æ ¹æ®ä¿ç•™çš„ lib 自动生æˆçš„,相关代ç å˜æ”¾äºŽ :file:`/usr/lib/python3.7/site-packages/portage/_sets/libs.py` ,而ä¿ç•™çš„ lib 的信æ¯å˜æ”¾è·¯å¾„默认为 :file:`/var/lib/portage/preserved_libs_registry` 。出现这个ä¿ç•™çš„ lib çš„åŽŸå› æ˜¯é»˜è®¤å¼€å¯äº† :code:`preserve-libs` 功能,默认é…置路径为 :file:`/usr/share/portage/config/make.globals` ï¼ŒåŒæ—¶ï¼Œä¹Ÿæœ‰æä¾›äº†ä¸€ä¸ª :file:`preserve-libs.eclass` å¯ç”¨äºŽåœ¨æœªå¼€å¯ä¸Šè¿°åŠŸèƒ½æ—¶ä½¿ç”¨ã€‚
4. 我的 GPU, Radeon RX Vega 64 æ˜¯ä¸æ”¯æŒ vp9 硬解的, Raven Ridge 时期的 APU å› ä¸ºä½¿ç”¨ VCN æ ¸å¿ƒæ‰æ”¯æŒ vp9 硬解,而 Vega 64 使用的是 VCE å’Œ UVD ç¼–è§£ç èŠ¯ç‰‡ï¼Œå¹¶ä¸æ”¯æŒ vp9.
TODO:
* pay attention to IT8665E driver and look for an other way to get fan speed and other data
* compare the power consumption between Gentoo and Windows and tuning
* compare the performance between AVX YMM and SSE XMM (-O3 or -O2)
* others
.. _`Gentoo Linux 安装åŠä½¿ç”¨æŒ‡å—`: https://bitbili.net/gentoo-linux-installation-and-usage-tutorial.html
.. _`官方的 wiki`: https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/About
.. _`镜åƒç«™ç‚¹`: https://www.gentoo.org/downloads/mirrors/#CN
.. _`清åŽçš„ TUNA æº`: https://mirrors.tuna.tsinghua.edu.cn/gentoo/releases/amd64/autobuilds/current-install-amd64-minimal/
.. _`公钥`: https://www.gentoo.org/downloads/signatures/
.. _`原文`: https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Kernel
.. _`å†…æ ¸é…置文档翻译`: http://www.jinbuguo.com/kernel/longterm-linux-kernel-options.html
.. _`Linux-Hardware`: https://linux-hardware.org/index.php?view=search
.. _`æˆ‘çš„å†…æ ¸é…置文件`: /mis/config-gentoo-alpha.txt
.. _`AwesomeWMLikeKDEShortcuts&CorrespondingScripts`: https://github.com/bekcpear/AwesomeWM-Like-KDE-Shortcuts
.. _`官方维基`: https://wiki.gentoo.org/wiki/KDE
.. _`Cryptsetup wiki`: https://gitlab.com/cryptsetup/cryptsetup/-/wikis/FrequentlyAskedQuestions#6-backup-and-data-recovery
.. _`Gentoo Wiki`: https://wiki.gentoo.org/wiki/Plymouth#Kernel
.. _`ArchLinux Wiki 上`: https://wiki.archlinux.org/index.php/Power_management/Suspend_and_hibernate#Hibernation_into_swap_file_on_Btrfs