准备工作 制作启动盘 使用Rufus制作启动U盘.
连接网络 参考 Linux配置网络及SSH配置
分区规划 参考 Linux硬盘分区
挂载分区 1 2 3 4 5 6 7 8 mkdir /mnt/gentoomount /dev/sdx? /mnt/gentoo mkdir /mnt/gentoo/homemount /dev/sdx? /mnt/gentoo/home mkdir /mnt/gentoo/bootmount /dev/sdx? /mnt/gentoo/boot mkdir /mnt/gentoo/boot/efimount /dev/sdx? /mnt/gentoo/boot/efi
配置Portage 释放stage 1 2 3 4 5 scp stage3-amd64-*.tar.xz root@192.168.0.2:/mnt/gentoo cd /mnt/gentootar xpvf stage3-*.tar.bz2 --xattrs-include='*.*' --numeric-owner
挂载系统必要环境 1 2 3 4 5 6 7 mount --types proc /proc /mnt/gentoo/proc mount --rbind /sys /mnt/gentoo/sys mount --rbind /dev /mnt/gentoo/dev mount --rbind /run /mnt/gentoo/run
复制DNS 1 cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
配置软件源 常规源 选择中国源,这一步是非必须的,提供的make.conf里已经有中国的所有源了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf mkdir -p -v /mnt/gentoo/etc/portage/repos.confcp -v /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.confnano -w /mnt/gentoo/etc/portage/repos.conf/gentoo.conf: sync-uri = rsync://mirrors.tuna.tsinghua.edu.cn/gentoo-portage/
二进制源 1 2 3 4 5 6 7 8 9 10 11 12 13 14 nano -w /etc/portage/binrepos.conf/gentoobinhost.conf [gentoobinhost] priority = 1 sync-uri = https://mirrors.tuna.tsinghua.edu.cn/gentoo/releases/amd64/binpackages/23.0/x86-64/
如果启用二进制源需要在USE
中添加 getbinpkg binpkg-request-signature
生成fstab 1 genfstab -U /mnt/gentoo >> /mnt/gentoo/etc/fstab
生成的fstab格式如下
1 2 3 UUID=...... /boot/efi vfat noauto,defaults,noatime,umask =0077 0 2 UUID=...... / xfs defaults,noatime 0 1 UUID=...... /home xfs noatime,discard
系统配置 进入新系统环境 从现在开始,所有的动作将立即在新 Gentoo Linux 环境里生效。
1 2 3 4 5 chroot /mnt/gentoo /bin/bashmkdir -p /var/db/repos/gentooenv-update source /etc/profileexport PS1="(chroot) ${PS1} "
同步stage
^注意 : gentoo handbook上提到可以使用emerge -rsync升级软件包数据库到最近2小时的最新版,这是没有必要的,而且下载的速度会极其慢,所以不推荐这样做。单用emerge-webrsync就可以同步数据库到最近3~4天内的最新版了。
设置profile 1 2 eselect profile list eselect profile set X
检测cpu指令集 1 2 3 4 5 6 7 emerge --ask app-portage/cpuid2cpuflags cpuid2cpuflags echo "*/* $(cpuid2cpuflags) " > /etc/portage/package.use/00cpu-flags
安装CCache(可选,加速编译) 1 2 3 4 emerge --ask ccache mkdir -p /var/cache/ccachechown root:portage /var/cache/ccache -Rchmod 2775 /var/cache/ccache -R
在portage/make.conf中添加
1 2 FEATURES="ccache -test" CCACHE_DIR="/var/cache/ccache"
安装Aria2(可选,加快包下载)
在portage/make.conf中添加配置
1 2 3 4 5 6 FETCHCOMMAND="/usr/bin/aria2c -d \${DISTDIR} -o \${FILE} \ --allow-overwrite=true --max-tries=5 --max-file-not-found=2 \ --max-concurrent-downloads=5 --connect-timeout=5 --timeout=5 \ --split=5 --min-split-size=2M --lowest-speed-limit=20K \ --max-connection-per-server=9 --uri-selector=feedback \${URI}" RESUMECOMMAND="${FETCHCOMMAND}"
配置编译选项 1 nano /mnt/gentoo/etc/portage/make.conf
^注意 : 设置编译标志 -march=native (如果你知道自己处理器的代号,就用自己的处理器代号替换这里的native 比如我的是skylake,如果不确定就使用native) [^ 注意]: 设置 MAKEOPTS=”-j8” 来定义安装软件时并行编译的数量 这个数字等于你的CPU线程数(也称为逻辑CPU数)参考MAKEOPTS WiKi
完整的配置文件如下(转自Gentoo安装流程分享(step by step),第一篇之基本系统的安装 ,修改了下注释格式,删除不用的部分)
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 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 COMMON_FLAGS="-march=skylake -O2 -pipe" CFLAGS="${COMMON_FLAGS} " CXXFLAGS="${COMMON_FLAGS} " FCFLAGS="${COMMON_FLAGS} " FFLAGS="${COMMON_FLAGS} " MAKEOPTS="-j8" PORTDIR="/var/db/repos/gentoo" DISTDIR="/var/cache/distfiles" PKGDIR="/var/cache/binpkgs" PORTAGE_TMPDIR="/tmp" LC_MESSAGES=C EMERGE_DEFAULT_OPTS="--keep-going --with-bdeps=y --quiet --ask --verbose" AUTO_CLEAN="yes" ACCEPT_KEYWORDS="amd64" ACCEPT_LICENSE="*" L10N="en-US zh-CN en zh" LINGUAS="en_US zh_CN en zh" VIDEO_CARDS="intel i965 iris nvidia" ALSA_CARDS="hda_intel" INPUT_DEVICES="libinput synaptics" GRUB_PLATFORMS="efi-64" FUCKDE="-gnome -gnome-shell -gnome-keyring -nautilus -kde" FUCKSV="-bindist -mdev elogind -dhcpcd -oss -grub -plymouth -consolekit" SOFTWARE="sudo -icu client git openmp minizip udev blkid efi hwdb smack \ acpi ccache dbus policykit udisks" AUDIO="alsa jack pulseaudio" NET="network networkmanager connection-sharing wifi http2" VIDEO="X vulkan layers glamor nvidia gallium" ELSE="cjk emoji" USE="${FUCKDE} ${FUCKSV} ${SOFTWARE} ${AUDIO} ${NET} ${VIDEO} ${ELSE} ${CCACHE} " GENTOO_MIRRORS="https://mirrors.tuna.tsinghua.edu.cn/gentoo"
永久禁用nouveau驱动模块 强烈要求你禁用Nouveau驱动!!能省掉以后很多莫名其妙的麻烦!
1 2 3 4 5 6 7 mkdir /etc/modprobe.d/nano -w /etc/modprobe.d/blacklist.conf blacklist nouveau blacklist lbm-nouveau options nouveau modeset=0
即便在编译内核前就已经设置内核禁用Nouveau驱动了,但是内核安装时还是会默认把nouveau驱动作为内核模块自动加载。启用了nouveau驱动模块的内核会出现各式各样的莫名其妙的数不清的问题,所以为了避免以后出现这些问题,必须禁用nouveau模块。
内核配置和编译 某些驱动程序在工作之前需要在系统上安装其他固件。这通常是网络接口的情况,尤其是无线网络接口。此外,在使用开源驱动程序时,来自AMD,Nvidia和Intel等供应商的现代视频芯片通常需要外部固件文件。大多数固件都封装在sys-kernel / linux-firmware 中:
1 emerge --ask --quiet sys-kernel/linux-firmware
除了独立显卡硬件和网络接口之外,CPU 可能也需要固件更新。通常这种固件被称为微码(microcode) 。有时需要更新版本的微码来修补 CPU 硬件中的不稳定性、安全问题或其他复杂的错误。
AMD CPU 的微码更新在前面提到的 sys-kernel/linux-firmware 软件包内分发。Intel CPU 的微码可以在 sys-firmware/intel-microcode 包中找到,并且需要单独安装
1 2 emerge --ask sys-firmware/intel-microcode
安装内核源码
1 2 3 4 5 emerge --ask sys-kernel/gentoo-sources eselect kernel list eselect kernel set 1
三种方法安装内核
安装系统时可选择安装二进制内核,系统安装完后再配置编译内核,参考 配置Linux内核 - Gentoo Wiki
全自动安装
当为基于 amd64 的系统安装和编译内核时,Gentoo 推荐使用 sys-kernel/gentoo-sources 软件包
1 emerge --ask sys-kernel/installkernel
混合安装(推荐方式)
生成内核配置文件
将genkernel的默认内核配置文件“generated-config”复制过来,里面已经设置好了绝大部分应用场景以及绝大部分硬件驱动的配置,非常方便,值得借过来使用,只需要在自己手动配置内核的时候将其加载,在其基础上做一点点轻微的修改或完全不修改都可以,对内核新手极其友好!
1 2 3 4 5 6 7 8 9 10 emerge --ask sys-kernel/genkernel cp /usr/share/genkernel/arch/x86_64/generated-config /usr/src/linux/cp /usr/src/linux/generated-config /usr/src/linux/generated-config.bak genkernel --mountboot --install all
^注意 : 首先先要加载(“Load”)刚才生成的genkernel默认内核配置文件“1.config”,然后在其基础上只需按需作轻微的修改即可(我是只修改了CPU架构为“Core 2/newer Xeon”,Preemption Model:“Low-Latency Desktop”,Timer frequecy 1000hz,Timer tick handling:“tickless idle”,Cputime accounting:“Simple tick based cputime accounting”,去掉了不需要的文件系统支持,去掉了对AMD CPU的支持,禁用Nouveau驱动)。“Support for extended (non-PC) x86 platforms”这一项取消掉。 之后“Save”你的设置,并且“Exit”即可。^注意 : 如果想在以后支持jack低延迟实时音频组件(Jack-Audio-Connection-Kit),则还需要vim 1.config,手动设置“CONFIG_CGROUPS=y”、“CONFIG_CGROUP_SCHED=y”、“CONFIG_RT_GROUP_SCHED=y”,然后重新make menuconfig载入保存1.config一遍,接下来再编译内核。^注意 : 使用nvidia显卡闭源驱动,还需要将内核配置中“CONFIG_I2C_NVIDIA_GPU”这一项禁用,否则会和官方nvidia-drivers冲突!!!
全手动安装
1 2 3 4 5 6 7 8 9 10 emerge sys-apps/pciutils cd /usr/src/linuxmake menuconfig make -j12 make modules_install make install
使用二进制内核
1 2 emerge --ask sys-kernel/gentoo-kernel-bin
用dracut生成内核的initramfs,快速且方便,新手友好
1 2 3 4 5 emerge --ask sys-kernel/dracut cd /bootdracut --hostonly
或者使用genkernel生成内核的initramfs
1 2 cp /usr/src/linux/1.config /etc/kernels/kernel-config-<内核版本号>-gentoo-x86_64genkernel --install initramfs
系统环境配置 配置系统时区 1 2 3 4 5 6 ls /usr/share/zoneinfoecho "Asia/Shanghai" > /etc/timezonesudo rm /etc/localtimesudo ln -sv /usr/share/zoneinfo/Universal /etc/localtime
配置编码 1 2 3 4 5 6 7 8 nano -w /etc/locale.gen en_US ISO-8859-1 en_US.UTF-8 UTF-8 zh_CN GBK zh_CN.UTF-8 UTF-8 locale-gen
设置系统locale 1 2 3 4 5 6 7 8 eselect locale list eselect locale set X env-update && source /etc/profile && export PS1="(chroot) ${PS1} "
配置sudo自动补全 1 2 3 4 5 6 sudo emerge --ask bash-completionsudo vim /etc/protage/make.confUSE="... bash-completion" sudo emerge --avuDN world
安装网络工具 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 emerge --ask net-wireless/iw emerge --ask net-wireless/wpa_supplicant emerge --ask net-misc/netifrc emerge --ask net-dialup/ppp cd /etc/init.d/ln -s net.lo net.eno1rc-update add net.eno1 default
安装配置networkmanager
最方便支持多种联网方式的工具是NetworkManager,基本满足所有需求,但同时它的依赖有点多。如果使用桌面换进的话建议安装。
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 nano -w /etc/portage/make.conf: USE=“networkmanager connection-sharing dhclient policykit ppp wifi -dhcpcd” emerge net-misc/networkmanager nano -w /etc/dhcp/dhclient.conf: send host-name "Gentoo" nano -w /etc/NetworkManager/NetworkManager.conf [connectivity] uri=http://nmcheck.gnome.org/check_network_status.txt nano -w /etc/NetworkManager/NetworkManager.conf [main] plugins=keyfile dns=dnsmasq hostname-mode=none rc-update del dhcpcd rc-update add NetworkManager default nano -w /etc/dnsmasq.conf: server=114.114.114.114
安装必要的工具 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 emerge --ask app-admin/sysklogd rc-update add syslogd default emerge --ask sys-process/cronie rc-update add cronie default emerge --ask sys-apps/mlocate emerge --ask sys-power/acpid rc-update add acpid default emerge sys-power/thermald rc-update add thermald default emerge virtual/udev emerge --oneshot sys-fs/eudev rc-update add udev sysinit emerge crone
配置系统用户 安装sudo
1 2 3 emerge app-admin/sudo nano -w /etc/sudoers
把 %wheel ALL=(ALL) ALL
这一行去掉注释
添加用户
1 2 useradd -m -G users ,wheel,usb,portage,video,audio -s /bin/bash [用户名] chmod 700 /home/[用户名] -R
设置密码
1 2 3 4 passwd root passwd {用户名}
添加操作系统启动项 添加grub配置
1 2 nano -w /etc/portage/make.conf: GRUB_PLATFORMS="efi-64"
安装grub2
1 2 emerge --ask sys-boot/grub:2 emerge --ask sys-boot/os-prober
grub安装到硬盘并生成开机启动项
1 2 grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=Gentoo grub-mkconfig -o /boot/grub/grub.cfg
1 mount -o remount,rw /sys/firmware/efi/efivarsos-prober
如果出现No space left on device,请运行以下命令,之后再重复上述步骤
1 2 mount -t efivarfs efivarfs /sys/firmware/efi/efivars rm /sys/firmware/efi/efivars/dump-*
grub默认配置添加自定义配置,可提高intel cpu的稳定性和性能
1 2 3 4 nano -w /etc/default/grub: GRUB_CMDLINE_LINUX_DEFAULT="intel_idle.max_cstate=0 processor.max_cstate=1" grub-mkconfig -o /boot/grub/grub.cfg
清理 1 2 3 4 5 6 7 8 9 10 11 12 rm /stage3-*.tag.geexit umount -lR /mnt/gentoo reboot grub-mkconfig -o /boot/grub/grub.cfg
如果开启不正常参考挂载文件系统(不要执行分区和mkfs操作),可重新chroot进入系统修改错误的配置。
桌面环境 安装基础环境 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 emerge --ask x11-base/xorg-drivers emerge --ask media-libs/mesa emerge --ask x11-drivers/nvidia-drivers emerge --ask x11-base/xorg-server emerge --ask x11-apps/xrandr rm /etc/X11/xorg.conf && nvidia-xconfig --prime env-update && source /etc/profile
^注意 : 以后每次重新编译安装内核kernel后,均须要运行一遍“emerge @module-rebuild”,重新编译安装nvidia驱动模块加载到内核之中,否则nvidia驱动无法加载!!!
LightDM 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 sudo emerge --ask x11-misc/lightdm echo XSESSION=\"awesome\" > /etc/env.d/90xsessionenv-update && source /etc/profile nano -w /etc/conf.d/display-manager DISPLAYMANAGER="lightdm" rc-update add display-manager default rc-update add dbus default rc-service dbus start rc-service display-manager start systemctl enable lightdm.service
KDE 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 emerge --ask sddm emerge --ask kde-frameworks/plasma emerge --ask kde-plasma/plasma-meta emerge --ask kde-misc/latte-dock nano -w /etc/conf.d/xdm DISPLAYMANAGER="sddm" rc-update add sddm default rc-service sddm start systemctl enable sddm systemctl start sddm
Awesome 1 2 3 4 5 6 7 8 9 10 11 12 13 emerge --ask x11-wm/awesome mkdir -p ~/.config/awesome/cp /etc/xdg/awesome/rc.lua ~/.config/awesome/rc.luaawesome -k emerge --ask media-gfx/feh theme.wallpaper_cmd = { "wesetbg -f .config/awesome/themes/awesome-wallpaper.png" }
Mate 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 eselect profile list eselect profile set 0 emerge -auvDU @world emerge --ask mate-base/mate nano -w /etc/env.d/90xsession XSESSION="Mate" nano -w /etc/conf.d/display-manager DISPLAYMANAGER="lightdm"
Xfce 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 emerge --ask xfce-base/xfce4-meta startxfce4 emerge --ask xfce-extra/xfce4-volumed-pulse emerge --ask xfce-extra/xfce4-pulseaudio-plugin emerge --ask xfce-extra/xfce4-taskmanager emerge --ask xfce-extra/xfce4-power-manager xfce-extra/xfce4-battery-plugin emerge --ask x11-themes/xfwm4-themes emerge --ask x11-terms/xfce4-terminal emerge --ask xfce-base/thunar emerge --ask xfce-extra/tumbler emerge --ask xfce-extra/thunar-volman emerge --ask xfce-extra/xfce4-verve-plugin emerge --ask xfce-extra/xfce4-mount-plugin emerge --ask xfce-extra/xfce4-sensors-plugin
中文字体 1 2 3 4 emerge --ask media-fonts/arphicfonts emerge --ask media-fonts/noto-cjk emerge --ask media-fonts/source-han-sans emerge --ask media-fonts/wqy-microhei
输入法 1 2 3 4 5 6 7 8 9 10 11 12 emerge -vj app-i18n/fcitx:5 app-i18n/fcitx-configtool:5 app-i18n/fcitx-qt:5 app-i18n/fcitx-gtk:5 export XMODIFIERS="@im=fcitx" export QT_IM_MODULE=fcitxexport GTK_IM_MODULE=fcitxexport SDL_IM_MODULE=fcitx
常用命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 sudo emerge --ask --verbose --update --deep --newuse @worldemerge -avuDN @world emerge --ask --verbose --update --deep --changed-use --getbinpkg @world emerge -uDN @world --buildpkg --buildpkg-exclude "virtual/* sys-kernel/*-sources" etc-update -3 emerge --prune sys-kernel/gentoo-kernel sys-kernel/gentoo-kernel-bin
emerge 使用二进制包选项说明
选项
说明
–usepkg (-k)
尝试使用本地可用的 packages 目录中的二进制包。如果未找到二进制包,将执行常规(基于源)安装。
–usepkgonly (-K)
类似 –usepkg (-k) ,但如果找不到二进制包,则失败。
–getbinpkg (-g)
从远程二进制包主机下载二进制包。如果未找到二进制包,将执行常规(基于源)安装。
–getbinpkgonly (-G)
类似于 –getbinpkg (-g) ,但如果无法下载二进制包,则会失败
常用软件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 sudo emerge --ask media-video/mpvsudo emerge mail-client/thunderbirdsudo emerge media-video/mplayersudo emerge media-sound/exailesudo emerge app-emulation/virt-managersudo emerge app-emulation/virtualbox
参考文章
Gentoo AMD64 Handbook - Gentoo Wiki
开始使用gentoo linux——gentoo安装笔记(上)
开始使用gentoo linux——gentoo安装笔记(下)
Gentoo安装流程分享(step by step),第二篇之KDE Plasma桌面的安装配置 - 知乎 (zhihu.com)
gentoo linux配置intel和nvidia双显卡电脑,使用prime方案 - 简书 (jianshu.com)