Gentoo(Gnome + Systemd)安装教程

(写在2018年11月11日)

系统环境:UEFI + GPT

分区方案:EFI分区、swap、根分区

开启SSH

使用install-amd64-minimal-20181104T214503Z.iso引导开机(2018年10月之后发布的最小CD支持UEFI引导)

启动ssh服务:rc-service sshd start

passwd设置root密码,否则无法远程登录

分区

gdisk /dev/sda

3个分区:EFI分区,fat32格式,500M;swap分区,和内存大小一样;/分区。

查看硬盘分区lsblk

格式化分区

mkfs.vfat -F 32 /dev/sda1

mkswap /dev/sda2

swapon /dev/sda2

mkfs.ext4 /dev/sda3

挂载分区

mount /dev/sda3 /mnt/gentoo

mkdir /mnt/gentoo/boot

mount /dev/sda1 /mnt/gentoo/boot

安装stage3包

date(检查时间设置)

date 100313162018(2018年10月3日的13:16)

cd /mnt/gentoo

wget http://distfiles.gentoo.org/releases/amd64/autobuilds/current-stage3-amd64-systemd/stage3-amd64-systemd-20181108.tar.bz2

(请根据自己的情况下载相应的stage3包)

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

tar xjvf stage3-amd64-systemd-20181108.tar.bz2 --xattrs-include='*.*' --numeric-owner

配置make.conf和Portage Mirror

vim /mnt/gentoo/etc/portage/make.conf

以下参数在经过自己调整或选择之后加入到 /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="-j4"(这个数值要根据你的CPU核心数和内存来设置:CPU物理核心数*每个核心线程数,每个GCC的任务大约需要1—1.5G内存,如果你只有4G内存,这里就只能设置为3了)

GENTOO_MIRRORS: 设置为GENTOO_MIRRORS="https://mirrors.ustc.edu.cn/gentoo/" (也可以在后面的步骤使用mirrorselect,选择速度最快的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),VMware则设置为VIDEO_CARDS="vmware"

CHOST="x86_64-pc-linux-gnu"(CHOST变量的说明https://wiki.gentoo.org/wiki/Changing_the_CHOST_variable/zh-cn)

GRUB_PLATFORMS: 如果你使用GRUB且使用UEFI启动则添加GRUB_PLATFORMS="efi-64"

CPU_FLAGS_X86=“aes avx f16c mmx mmxext pclmul popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3”


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

选择镜像站点:

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

(如果在make.conf中定义了GENTOO_MIRRORS变量,这步可以省略)

复制DNS

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

挂载必要的文件系统

mount --types 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

进入新环境

chroot /mnt/gentoo /bin/bash

source /etc/profile

export PS1="(chroot) ${PS1}"

挂载 boot 分区

mkdir /boot

mount /dev/sda1 /boot

配置Portage

从网站安装ebuild 数据库快照

emerge-webrsync

Optional: 更新Portage ebuild 数据库

emerge --sync

emerge --ask app-portage/cpuid2cpuflags

cpuid2cpuflags #将输出值改入CPU_FLAGS_X86

选择正确的配置文件

eselect profile list

eselect profile set 2

更新@world集合

emerge --ask --verbose --update --deep --newuse @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

配置时区

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 list

eselect locale set X # X换成上面命令显示的序号

这里建议使用英语易于排错,之后你可以自行换成中文

~~~~~~~~~~~~~~~~这个工具生成的参数比较详细~~~~~~~~~~~~~~~~

配置fstab( https://wiki.archlinux.org/index.php/Fstab )

如果你和我一样懒

可以下载此脚本自动配置fstab(引自Arch的genfstab:https://wiki.archlinux.org/index.php/Installation_guide#Mount_the_file_systems):

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)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

在/etc/conf.d/hostname内修改主机名,例如:

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

设置Root密码

使用passwd命令设置root密码。

安装一些必要工具并配置

如果你使用非ext4文件系统则在编译内核前需要另外安装相应的工具:例如fat文件系统所需的sys-fs/dosfstools包。

emerge app-admin/sysklogd sys-process/cronie sudo layman grub sys-fs/dosfstools net-misc/dhcpcd

还需补充

sed -i 's/\# \%wheel ALL=(ALL) ALL/\%wheel ALL=(ALL) ALL/g' /etc/sudoers

如果你是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

配置编译安装内核

emerge --ask sys-kernel/gentoo-sources

emerge -av genkernel

genkernel --menuconfig all

genkernel --install initramfs

安装GRUB

如果你是UEFI:

emerge --ask sys-boot/grub:2

grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=Gentoo

grub-mkconfig -o /boot/grub/grub.cfg

注意,如果在VMware下安装,可能会遇到安装错误

(chroot) livecd / # grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=Gentoo

Installing for x86_64-efi platform.

Could not prepare Boot variable: No such file or directory

Installation finished. No error reported.

看了一下make.conf,GRUB_PLATFORMS="efi-64"忘了写。

wiki上的解释如下:(https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Bootloader/zh-cn#Install)

“一些主板制造商似乎只支持EFI系统分区(ESP)中.EFI文件的 /efi/boot/目录。 GRUB安装程序可以使用 --removable选项自动执行此操作。 在运行以下命令之前验证是否已安装ESP。 假设ESP安装在/boot(如前所述),执行:

grub-install --target=x86_64-efi --efi-directory=/boot --removable使用了这条命令才解决问题”

检查系统可用性

到了这里你应该可以重启查看系统是否能正常启动,然后在安装桌面

重启前最好检查下的东西:

1. boot目录是否有相应文件

2. GRUB是否正确生成配置并显示内核等文件

3. fstab是否正确无误

重启系统

exit

cd

umount -l /mnt/gentoo/dev{/shm,/pts,}

umount -R /mnt/gentoo

reboot

现在进入新系统,创建一个管理员并设置密码

useradd -m -G users,wheel,portage,usb,video,audio 这里换成你的用户名(小写)

passwd 你的用户名

删除tar包

当Gentoo安装完毕并且系统已经重启过,如果所有事情都完成好了,我们现在要从硬盘上删除下载的stage3的tar包。记住它们下载在/目录。

安装显示协议

emerge -av xorg-server

VMware显卡驱动

emerge -av xf86-video-vmware

GNOME

emerge -av gnome-shell gdm gnome-terminal

systemctl enable gdm

如遇需要更新配置则运行etc-update --automode -3并再次运行命令

安装NetworkManager

没错,我很懒,又加上我是KDE桌面用户,所以我选择使用NetworkManager连接网络:

emerge -av networkmanager

如果它说有未满足的xxxx或者其它提示:

emerge --autounmask-write networkmanager

etc-update --automode -3

emerge networkmanager

添加开机服务

systemctl enable NetworkManager

reboot,进入Gnome~



安装过程中可能会遇到的一些问题:

1、执行“emerge -av gnome-shell gdm gnome-terminal”时提示“Error: circular dependencies: ???”

参考:https://forums.gentoo.org/viewtopic-t-1065574-start-0.html

解决的思路是手动安装相应的依赖包,并屏蔽相关的选项,例如“USE=-gpm emerge -av1 sys-libs/ncurses”


参考链接

Gentoo AMD64 Handbook(https://wiki.gentoo.org/wiki/Handbook:AMD64/zh-cn)

YangMame的blog(https://blog.yangmame.org/Gentoo%E5%AE%89%E8%A3%85%E6%95%99%E7%A8%8B.html)

(感谢YangMame的教程,受益匪浅~)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容