Linux_Gentoo_安装手册


一.前期准备工作

下载安装镜像 install-amd64-minimal download 刻录镜像到U盘(我用的是rufus):rufus download 注意选择GPT格式,然后刻录,ISO模式或者DD模式都可以,建议用ISO模式

1
2
3
ls /sys/firmware/efi/efivars	#测试是否是UEFI模式启动
net-setup #连接无线网络 有线网络忽略
ping -c 3 www.baidu.com			#测试网络

二.硬盘分区

1
bash fdsik /dev/sdb #详请参考fdsik手册

使用lvm文件系统

1
2
3
pvcreate /dev/sdb3
vgcreate cwx /dev/sdb3
lvcreate -L 113G -n root cwx

三.创建文件系统

1
2
3
4
5
mkfs.ext4 /dev/sdb1
mkfs.ext4 /dev/sdb2
mkfs.ext4 /dev/sdb3
mkswap /dev/sdb4
swapon /dev/sdb4

四.挂载分区

1
2
3
4
5
6
7
8
mkdir /mnt/gentoo
mount /dev/sdb2 /mnt/gentoo
mkdir /mnt/gentoo/home
mount /dev/sdb3 /mnt/gentoo/home
mkdir /mnt/gentoo/boot
mount /dev/sdb1 /mnt/gentoo/boot
mkdir /mnt/gentoo/boot/efi
mount /dev/sda1 /mnt/gentoo/boot/efi

五.安装stage包

1
2
3
4
5
6
cd /mnt/gentoo	#进入root挂载点
links https://mirrors.163.com/gentoo/releases/amd64/autobuilds/current-stage3-amd64-systemd	#选择stage3-amd64-systemd-YYYYMMDD.tar.bz2 下载
ID: 1686760050091


tar xpvf stage3-amd64-YYYYMMDD.tar.bz2 --xattrs-include='*.*' --numeric-owner

六.配置编译选项(make.conf):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
ID: 1686760050093

# These settings were set by the catalyst build script that automatically
# built this stage.
# Please consult /usr/share/portage/config/make.conf.example for a more
# detailed example.
# date 20200716
COMMON_FLAGS="-march=ivybridge -O2 -pipe"
CFLAGS="${COMMON_FLAGS}"
CXXFLAGS="${COMMON_FLAGS}"
FCFLAGS="${COMMON_FLAGS}"
FFLAGS="${COMMON_FLAGS}"

CHOST="x86_64-pc-linux-gnu"
ACCEPT_KEYWORDS="amd64"
CPU_FLAGS_X86="aes avx avx2 f16c fma3 mmx mmxext pclmul popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3"
MICROCODE_SIGNATURES="-S"

MAKEOPTS="-j5"

ACCEPT_LICENSE="@FREE"
GRUB_PLATFORMS="efi-64"

USE="-gnome -gnome-keyring -kde -consolekit -cdr -dvdr -plasma"
USE="X acpi alsa dbus ffmpeg flac lzma lzma lz4 opengl policykit python udisks x264 xft xv zip"
USE="${USE} cjk ccache"
USE="${USE} opengl bluetooth samba networkmanager"
#systemd
#USE="${USE} acl amd64 berkdb bzip2 cli crypt cxx dri fortran gdbm iconv ipv6 libtirpc multilib ncurses nls nptl openmp pam pcre readline seccomp split-usr ssl systemd tcpd udev unicode xattr zli"
USE="${USE} acl amd64 berkdb bzip2 cli crypt dri fortran gdbm iconv ipv6 libtirpc multilib ncurses nls nptl pcre readline seccomp split-usr ssl systemd tcpd udev unicode xattr zli"
# NOTE: This stage was built with the bindist Use flag enabled
PORTDIR="/var/db/repos/gentoo"
DISTDIR="/var/cache/distfiles"
PKGDIR="/var/cache/binpkgs"

# This sets the language of build output to English.
# Please keep this setting intact when reporting bugs.
LC_MESSAGES=C

L10N="en_US zh_CN en-US zh-CN en zh"
LINGUAS="${L10N}"

PORTAGE_ELOG_CLASSES="info warn error log qa"
PORTAGE_ELOG_SYSTEM="echo save"
FEATURES="split-elog buildpkg"
#ccache
FEATURES="${FEATURES} ccache"
CCACHE_DIR="/var/cache/ccache"

GENTOO_MIRRORS="https://mirrors.aliyun.com/gentoo/"
GENTOO_MIRRORS="${GENTOO_MIRRORS} https://mirrors.tuna.tsinghua.edu.cn/gentoo"

VIDEO_CARDS="intel i965 nvidia"
ALSA_CARDS="hda-intel"
INPUT_DEVICES="libinput synaptics"

#°²×°Íêaria2Ö®ºóÈ¥µô×¢ÊÍ,¾ßÌå²ÎÊý²Î¿¼aria2¹Ù·½Îĵµ
FETCHCOMMAND="/usr/bin/aria2c -d \${DISTDIR} -o \${FILE} --all-proxy=\"http://127.0.0.1:7890\" --allow-overwrite=true --max-tries=5 --max-file-not-found=3 --max-concurrent-downloads=5 --connect-timeout=5 --timeout=5 --split=1 --min-split-size=100M --lowest-speed-limit=200K --max-connection-per-server=5 --uri-selector=feedback \${URI}"
RESUMECOMMAND="${FETCHCOMMAND}"
#http_proxy="http://127.0.0.1:7890"
PORTDIR_OVERLAY="/var/db/repos/gentoo-overlay"

七.选择镜像站点

1
mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf

八.Gentoo ebuild 软件仓库

1
2
3
4
mkdir -p -v /mnt/gentoo/etc/portage/repos.conf
cp -v /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf

cp -v -L /etc/resolv.conf /mnt/gentoo/etc/		#复制DNS

九.挂载必要的文件系统并chroot

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
mount --types proc /proc /mnt/gentoo/proc
mount --rbind /sys /mnt/gentoo/sys
mount --rbind /dev /mnt/gentoo/dev
mount --make-rslave /mnt/gentoo/sys
mount --make-rslave /mnt/gentoo/dev

#chroot gentoo
chroot /mnt/gentoo /bin/bash
env-update && source /etc/profile
export PS1="(chroot) $PS1"

十.安装ebuild 数据库快照并更新

1
emerge-webrsync
1
2
3
4
emerge --sync
#如果无法更新,将/etc/portage/repos.conf/gentoo.conf里的
#sync-rsync-verify-metamanifest = yes 改为
#sync-rsync-verify-metamanifest = no

十一.选择正确的配置文件

1
eselect profile list #systemd

十二.修改make.conf(cpu_flags_x86 ccache axel aria2)

1
2
3
4
5
6
7
8
9
emerge --ask vim cpuid2cpuflags ccache aria2

mkdir -p /var/cache/ccache
chown root:portage /var/cache/ccache
chmod 2775 /var/cache/ccache
vi /etc/portage/make.conf
CPU_FLAGS_X86="aes avx avx2 f16c fma3 mmx mmxext pclmul sse sse2 sse3 sse4_1 sse4_2 ssse3"
FEATURES="ccache"
CCACHE_DIR="/var/cache/ccache"

十三.更新@world集合

1
emerge --ask --verbose --update --deep --newuse @world

十四.配置时区,地区

1
2
3
4
5
6
7
echo 'Asia/Shanghai' > /etc/timezone
emerge --config sys-libs/timezone-data

echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
echo "zh_CN.UTF-8 UTF-8" >> /etc/locale.gen
locale-gen
eselect locale set x		#不要设置为zh,终端会有乱码

十五.配置fstab

1
2
3
wget https://raw.githubusercontent.com/YangMame/Gentoo-Installer/master/genfstab
chmod +x genfstab
./genfstab -U / >> /etc/fstab

十六.安装一些必要工具并配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
echo 'sys-apps/kmod lzma zlib' > /etc/portage/package.use/kmod	//启用内核模块压缩需要用到
emerge --ask --verbose eix sudo grub:2 dosfstools os-prober pciutils usbutils hwinfo gentoolkit euses kmod
#如果提示需要更新
etc-update	//输入 -3 回车 yes回车

#解决eix命令的背景颜色问题
echo "SOLARIZED=true" > /etc/eixrc/99-colour

#启用网络服务
vim /etc/systemd/network/50-dhcp.network
[Match]
Name=xxxxx	#此处写ifconfig -a 显示的网卡名
[Network]
DHCP=yes

systemctl enable systemd-networkd.service

visudo
%wheel ALL=(ALL) ALL
ln -sf /proc/self/mounts /etc/mtab
systemd-machine-id-setup
1
2
3
4
5
6
7
# lvm xfs network 支持
emerge --ask --verbose sys-fs/lvmx2 xfsprogs networkmanager
systemctl enable lvm2-monitor NetworkManager systemd-networkd
systemctl enable lightdm
#cron 守护进程
emerge ask systemd-cron
systemctl enable cron.target

十七.安装内核

1
2
3
4
emerge --ask --verbose sys-kernel/gentoo-sources sys-kernel/linux-firmware
emerge --ask --verbose sys-kernel/genkernel-next # Genkernel(可以先用genkernel编译一个内核,完成安装后再仔细调整内核 ):
#编译内核
genkernel --makeopts=-j8 --menuconfig --lvm --install all

十八.安装GRUB

1
2
3
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=Gentoo
#efi fat32
grub-mkconfig -o /boot/grub/grub.cfg

十九.其它设置

1
2
emerge --ask sys-power/acpid
systemctl enable acpid.service

二十.重启进入新系统

1
2
3
4
5
passwd	#先设置一下root密码
exit
cd
umount -lR /mnt/gentoo
reboot
1
2
3
#建立新用户
useradd -m -G users,wheel,audio,video,portage,usb -s /bin/bash 用户名
passwd 用户名
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
hostnamectl set-hostname XXXXX
eselect locale list
eselect locale set X
localectl set-locale LANG="${LANG}" LC_COLLATE="C"
env-update && source /etc/profile
timedatectl set-time "YYYY-MM-DD hh:mm:ss"
timedatectl set-timezone "Asia/Shanghai"
timedatectl set-local-rtc 0

vim /etc/issue
删除.\O
1
2
3
vim/etc/hosts
127.0.0.1 主机名 localhost
::1 主机名 localhost
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#启用必要的服务
#systemd-resolved.conf默认不会自动更新,要systemd管理DNS设置,替换resolv.conf为一个符号连接并启动systemd-resolved
ln -snf /run/systemd/resolve/resolv.conf /etc/resolv.conf
systemctl enable systemd-resolved.service
systemctl start systemd-resolved.service

emerge --ask --verbose sys-process/cronie
systemctl enable cronie
systemctl start cronie

emerge --ask --verbose sys-apps/mlocate

#tty
systemctl enable getty@tty{2,3,4,5,6}.service

#首次安装systemd时,将禁用大多数服务。提供了一个“预设”文件,该文件可用于启用合理的默认服务集。
systemctl preset-all

系统环境工具安装

1
2
3
4
5
6
7
8
9
ID: 1686760050096

#window x
emerge --ask --verbose xorg-server xinit xf86-video-intel x11-apps/xbacklight
#wayland
emerge --ask sway
# i3wm 图片 启动器 终端 DM 状态栏 通知栏
emerge --ask --verbose i3-gaps i3lock feh rofi rxvt-unicode lightdm-gtk-greeter polybar dunst dmenu bluez bluez-firmware
emerge --ask --verbose x11-apps/xmessage
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
emerge --ask zsh zsh-completions
#switch zsh
chsh -s /bin/zsh
#oh-my-zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
#fonts
# clone
git clone https://github.com/powerline/fonts.git --depth=1
# install
cd fonts
./install.sh
# clean-up a bit
cd ..
rm -rf fonts

#zinit
sh -c "$(curl -fsSL https://raw.githubusercontent.com/zdharma/zinit/master/doc/install.sh)"
#zinit oh-my-zsh support
zinit snippet 'https://github.com/robbyrussell/oh-my-zsh/raw/master/plugins/git/git.plugin.zsh'

常用工具安装

​ 1.字体 ID: 1686760050099

1
emerge ask source-pro source-han-sans

​ 2.输入法

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#inputmethod
#ibus
#emerge ask compton | picom ibus-rime ibus-table-chinese
#fcitx
emerge --ask --verbose fcitx fcitx-configtool fcitx-rime fcitx-table-extra fcitx-qt5
#rime-wubi
https://github.com/rime/rime-wubi
vim /etc/environment
export XMODIFIERS="@im=fcitx"
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
vim .xprofile
export LC_ALL=zh_CN.utf8
export XMODIFIERS=@im=fcitx
export QT_IM_MODULE=fcitx
export GTK_IM_MODULE=fcitx

​ 3.浏览器

1
2
#browser
emerge ask dev-vcs/git dev-vcs/git-lfs firefox-bin google-chrome

​ 4.开发工具

1
2
3
4
5
#layman
emerge --ask --verbose layman
echo "app-portage/layman sync-plugin-portage git" >> /etc/portage/package.use/app-portage
layman -L
layman -a gentoo-zh
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#语言
emerge --ask openjdk-bin pyqt5
#编辑器
emerge --ask --verbose vim sublime-text visual-studio-code
#IDE
emerge --ask --verbose qt-creator dev-util/codeblocks
#其他
emerge --ask --verbose postman dev-db/mariadb
#gentoo config
emerge --config dev-db/mariadb
# other config
mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql

​ 5.影音类

1
emerge --ask vlc netease-cloud-music media-gfx/gimp media-gfx/blender5
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
emerge --ask media-sound/mpd media-sound/ncmpcpp
vim ~/.config/mpd/mpd.conf
# Required files
db_file "~/.config/mpd/database"
log_file "~/.config/mpd/log"

# Optional
music_directory "~/Music"
playlist_directory "~/.config/mpd/playlists"
pid_file "~/.config/mpd/pid"
state_file "~/.config/mpd/state"
sticker_file "~/.config/mpd/sticker.sql"

$ mkdir ~/.config/mpd/playlists
$ touch ~/.config/mpd/{database,log,pid,state,sticker.sql}
1
2
3
#utils

#rom
1
2
3
#soft
nvidia
kernel #CONFIG_DEBUG_MUTEXES no set

​ 6.办公类

1
2
#office
emerge --ask wps-office ttf-wps-fonts

​ 7.工具类

1
2
3
4
temerge --ask --verbose ranger filezilla pavucontrol-qt lxappearance ncurses-compat repo zip numlockx p7zip android-tools unrar scrot unar
layman -a guru
sudo emerge --ask --verbose x11-misc/i3lock-fancy-rapid x11-misc/xautolock
x11-misc/albert
1
2
# 预览图像和字体
emerge --ask --verbose thunar tumbler xfce-extra/xfce4-power-manager(+ upower) emerge --ask xfce4-battery-plugin conky

​ 8.主题类

1
2
3
4
5
numix-icon-theme
layman --list
layman --add beatussum-overlay
layman --sync beatussum-overlay
x11-themes/tela-icon-theme package
1
2
3
4
media-libs/giblib-1.2.4-r1
[ebuild N ] media-gfx/scrot-0.8_p13-r1
[ebuild N ] x11-apps/xdpyinfo-1.3.2 USE="-dga -dmx -xinerama"
[ebuild N ] app-misc/screenfetch

qt、eclipse、codeblock、vscode等等。arduino主要是给arduino开发板使用的ide。

0%