2018.7.3更新,完善make.conf的说明
如果你是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)
这里会声明下分区,之后的过程将使用这些变量
sda1 ---/boot--->vfat >=200M #注意分区设置flags为esp
sda2 ---/--->ext4,btrfs,xfs,jfs.etc >=20G #建议至少20G大小
sda3 ---swap---> >=2G #除非你16G内存,即使你8G内存也建议设置2G的swap
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
在这里你需要选择一个镜像站,在这里列出几个速度比较快的镜像站,请亲自测试选择镜像站:
进入镜像站的/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
-bindist
(不了解USE的情况下建议如此)CFLAGS="-march=native -O2 -pipe"
或者你也可以指定.例如我的Intel CPU是haswell,将native换成haswell就行(不确定就不要指定).你也可以在这里看到所有可以设置的值MAKEOPTS="-j5"
GENTOO_MIRRORS="https://mirrors.ustc.edu.cn/gentoo/"
请自行选择速度最快的MirrorEMERGE_DEFAULT_OPTS="--keep-going --with-bdeps=y"
是个不错的选择,keep going意为安装一堆软件时遇到编译错误自动跳过这个软件继续编译安装# FEATURES="${FEATURES} -userpriv -usersandbox -sandbox"
,最好在前面加上#注释掉,在你编译软件遇到权限不足时去掉注释即可解决问题(但请务必注意是不是因为rm -rf /*
等命令权限不足,因为说不定你的ebuild文件被篡改了)ACCEPT_KEYWORDS="~amd64"
,服务器/工作/家/娱乐用可以忽略ACCEPT_LICENSE="*"
表示此系统接受所有软件许可证,即不论非自由还是自由软件都接受,非商业用户基本不需要考虑L10N="en-US zh-CN en zh"
LINGUAS="en_US zh_CN en zh"
VIDEO_CARDS="nvidia"
(闭源驱动)VIDEO_CARDS="nouveau"
(开源驱动).还有radeon和intel,但如果你是双显卡例如Intel+NVIDIA则设置为VIDEO_CARDS="intel i965 nvidia"
(只要不是远古的集成显卡都是用i965)GRUB_PLATFORMS="efi-64"
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
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"
复制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
使用快照更新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(引自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
没错,我很懒,又加上我是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
如果你是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双显卡请看这篇文章
其它显卡硬件待补坑 欢迎提出
到了这里你应该可以重启查看系统是否能正常启动,然后在安装桌面
重启前最好检查下的东西:
首先需要确保已安装xorg-server和显卡驱动:
emerge -av xorg-server
emerge xf86-video-intel #Intel显卡驱动
emerge nvidia-drivers #nvidia显卡驱动
如遇需要更新配置则运行etc-update --automode -3
并再次运行命令
emerge -av plasma-desktop plasma-nm plasma-pa sddm konsole
如遇需要更新配置则运行etc-update --automode -3
并再次运行命令
如果你是systemd:
systemctl enable sddm
openrc则编辑/etc/conf.d/xdm
将DISPLAYMANAGER
的值改为sddm
并:
rc-update add xdm default
emerge -av gnome-shell gdm gnome-terminal
systemctl enable gdm
如遇需要更新配置则运行etc-update --automode -3
并再次运行命令
这里只说明systemd,因为openrc并不能满足GNOME的依赖
大佬, genfstab有个参数可以直接输出UUID挂载的fstab文件
[...]完善一下 grub 的配置,我并没有像 Yangmame 巨菊那样设置。只是在 /etc/default/grub 底部增加了一行,最后关于 grub 和 systemd-boot 的设置,我们第一部分结束前再弄,现在不急:[...]
大神,2021年这个教程还适用吗,有没有过时了不同的地方
ERROR: dev-qt/qtwebengine-5.15.2::gentoo failed (compile phase):
emake failedIf you need support, post the output of emerge --info '=dev-qt/qtwebengine-5.15.2::gentoo',the complete build log and the output of emerge -pqv '=dev-qt/qtwebengine-5.15.2::gentoo'.The complete build log is located at '/var/tmp/portage/dev-qt/qtwebengine-5.15.2/temp/build.log'.The ebuild environment file is located at '/var/tmp/portage/dev-qt/qtwebengine-5.15.2/temp/environment'.Working directory: '/var/tmp/portage/dev-qt/qtwebengine-5.15.2/work/qtwebengine-everywhere-src-5.15.2_build'S: '/var/tmp/portage/dev-qt/qtwebengine-5.15.2/work/qtwebengine-everywhere-src-5.15.2'这个咋办呀
make localyesconfig is the key!!! Finally, I have a bootable Gentoo. BIG BIG THANKS
!!! The ebuild selected to satisfy "sys-libs/libseccomp" has unmet requirements.
sys-libs/libseccomp-2.5.1::gentoo USE="python -static-libs" ABI_X86="(64) -32 (-x32)" PYTHON_TARGETS="python3_8 -python3_6 -python3_7 -python3_9"
The following REQUIRED_USE flag constraints are unsatisfied:
python? ( static-libs )
The above constraints are a subset of the following complete expression:
python? ( static-libs any-of ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 python_targets_python3_9 ) )
(dependency required by "app-misc/pax-utils-1.2.6::gentoo[seccomp]" [ebuild])
(dependency required by "@world" [argument])(dependency required by "sys-libs/glibc-2.32-r5::gentoo" [ebuild])
(dependency required by "virtual/libc-1-r1::gentoo" [installed])
(dependency required by "@system" [set])
希望能得到你的帮助
我也遇到了这个问题,先将make.conf ELSE里的python去掉吧
收藏了!
按照官方文档装了几十遍都启动不了,照着这个教程KDE一次成功,GNOME死活弄不出来,实在是对systemd太不熟悉了。改天再试systemd
sorry ,I find it with google.
杨老师,Intel+NVIDIA 双显卡驱动安装 的连接失效了,可以重新提供一个链接参考一下吗?感谢!
Hi, buddy, Can you share the link about intel+nvidia dual video card driver install?
i can't find the article about (intel+nvidia switch video card)
https://blog.yangmame.top/Gentoo%E5%8F%8C%E6%98%BE%E5%8D%A1%E5%AE%89%E8%A3%85%E9%85%8D%E7%BD%AE.html
按照教程操作, networkmanager conflict with USE="-modemmanagr"
ArchLinux / # emerge -av networkmanager
IMPORTANT: 14 news items need reading for repository 'gentoo'.Use eselect news read to view new items.These are the packages that would be merged, in order:
Calculating dependencies /
!!! Problem resolving dependencies for net-misc/networkmanager
... done!
!!! The ebuild selected to satisfy "networkmanager" has unmet requirements.
net-misc/networkmanager-1.16.0::gentoo USE="bluetooth consolekit dhclient introspection ncurses nss (policykit) ppp wext wifi -audit -connection-sharing -dhcpcd -elogind -gnutls -iwd -json -modemmanager -ofono -ovs -resolvconf (-selinux) -systemd -teamd -test -vala" ABI_X86="(64) -32 (-x32)"
The following REQUIRED_USE flag constraints are unsatisfied:
bluetooth? ( modemmanager )
The above constraints are a subset of the following complete expression:
bluetooth? ( modemmanager ) iwd? ( wifi ) vala? ( introspection ) wext? ( wifi ) exactly-one-of ( nss gnutls ) at-most-one-of ( consolekit elogind systemd )
你禁用了modemanager这个USE吧 bluetooth需要它 加回去或者删掉-modemanager就好了
OK,感谢!
大佬有没有交流群啊,好多东西都是懒得你的教程……
目前只有telegram: https://t.me/gentoo_zh_offtopic
RedCore Linux是基于Gentoo的发行版,提供了编译好的二进制包。可在/etc/portage/make.conf中添加
PORTAGE_BINHOST="http://mirror.math.princeton.edu/pub/redcorelinux/packages/"
为了自动使用二进制包进行安装,可以在EMERGE_DEFAULT_OPTS变量增加适当的选项:
EMERGE_DEFAULT_OPTS="${EMERGE_DEFAULT_OPTS} --getbinpkgonly"
参见:https://wiki.gentoo.org/wiki/Binary_package_guide
其他地址包括:
Alpix.eu (Germany) mirror - stablePORTAGE_BINHOST="http://mirror.alpix.eu/redcorelinux/packages/"
Yandex.ru (Russia) mirror - stablePORTAGE_BINHOST="http://mirror.yandex.ru/mirrors/redcorelinux/packages/"
感谢博主的文章,给我安装gentoo带来了很大的帮助。我最近也建了个博客,能否交换个友链?
ojbk
哥们,我网站换域名了,有空的话把友链更新一下吧
更新好了(咋换免费域名了,别翻车了呀
接触gentoo很久了,但是一直不清不楚的,即使安装好了也从未成功进入过桌面环境。之前就保存了这个页面,最近翻出来,半个多月来,没事就按照这个教程结合官方的wiki安装,遇到问题一步步解决,安装了很多遍,现在总算搞好了。非常感谢~
祝你玩的愉快 )
骚年,太崇拜你了1你建站用的是什么?服务器是阿里晕麽?这里的编写网页用的是markdown麽?评论里头像动画效果赞啊!猴犀利啊,额,我这里评论你回马上收到麽?
博客是Typecho 服务器是某家便宜年付的vps(不建议用,所以不说了),都是markdown写的,评论得我登录才能看到
谢谢
在执行emerge -auvDN --with-bdeps=y @world时
https://bugs.gentoo.org/651042#c3
我在这里说了解决方法:在/usr/portage/app-text/mupdf-1.12.0.ebuild里面的DEPEND=加入media-libs/freeglut(ebuild少写了依赖)或者你也可以直接安装media-libs/freeglut之后再emerge -auvDN --with-bdeps=y @world :)
app-text/mupdf-1.12.0:0/1.12.0::gentoo,卡在这了,怎么都过不去了,请指导一下呗
学习ing+膜拜