启用systemd的gentoo安装方法

♀尐吖头ヾ 提交于 2019-12-07 02:46:39

这个也应该算是绝对的干货了吧。


记得06年曾经写过一份中文版的 gentoo 安装手册,过了这么久,其实 gentoo 的变化还是很大的,尤其是现在支持 systemd 启动,相对于以前的 openrc/shell 或者 openrc / c,5秒左右启动完成可以说是神速了!


心血来潮,就写一下吧。


以下正文和官方手册会略有出入,大家互相借鉴着看吧。


1. 谁是贱兔


首先简单介绍一下贱兔(gentoo)。


gentoo 是一种专门针对屌丝IT攻城狮们推出的 linux 操作系统发行版,其特点就是拥有极高的可定制能力,可以让用户对系统拥有极为强大的控制能力,同时 gentoo 的性能也极为优秀。


gentoo 拥有 linux 世界最强大的软件包管理系统……之一。精髓思想来自于 FreeBSD(MacOSX 的表兄)的 ports 系统,但是可以说青出于蓝而胜于蓝。特别适合有系统洁癖和更新强迫症的宅男们。


2. 前戏前的前戏


现在开始进入正题吧,哦不,在真的开始安装 gentoo 系统之前,我们还需要做一些事情。


首先,你要准备好一个 gentoo 的安装介质,一般是光盘。可以在搜狐和网易的开源镜像服务器上直接下载。一般叫做 mini install cd 啥的。个人推荐直接用 amd64 架构的,x86可以忽略之了。


然后需要下载 gentoo 的基本包,也就是 stage3,下面我们叫做 ${STAGE3}。


再然后,如果不想让系统一点点同步 portage 源码树,可以直接下载 portage snapshot,下面简称 ${SNAPSHOT}。


接下来,我们用安装介质启动系统,let's go!


3. 真正的前戏


假设我们用的是光盘启动,我一般会在 boot: 界面用 gentoo nokeymap 启动。


启动完成之后,首先设置一下网卡,dmesg | grep eth,看到网卡设备号,假设叫做 ${ETH},然后 net-setup ${ETH},接下来不会操作的人面壁弹JJ去。


网卡配置好,如果喜欢远程安装的,就可以 passwd 设置个密码,然后 /etc/init.d/sshd start,启动 ssh。


官网建议现在就配置 /etc/resolv.conf ,我觉得没必要,能 ping 8.8.8.8 就行了。


接下来需要配置硬盘了,比如是 cfdisk /dev/sda 吧。我一般 /boot 单独用个100MB,swap 用个 4GB 足够了,接下来怎么配置,大家自己把握,不会的去看官方手册。


假设我们的分区设置是:

/dev/sda1 /boot ext2

/dev/sda2 swap swap

/dev/sda3 /     ext4


/boot 一般建议用 ext2 来格式化,rootfs 可以用 ext4、reiserfs 都可以。不过比较蛋疼的是,安装光盘默认不提供 btrfs 和 f2fs 的工具,所以……大家认了吧。


接下来就要挂载系统了。


# mount /dev/sda3 /mnt/gentoo

# cd /mnt/gentoo

# tar xvjf ${STAGE3}

# tar xvjpf ${SNAPSHOT} -C /mnt/gentoo/usr

# mount /dev/sda1 /mnt/gentoo/boot

# mount -t proc proc /mnt/gentoo/proc

# mount --rbind /dev /mnt/gentoo/dev

# mount --rbind /sys /mnt/gentoo/sys


这里以前可以用 mount -o,现在是 --rbind,还有就是,如果大家下载的 snapshot 是 xz 格式的,就用 tar xvJpf 命令,注意,是大写 J。


4. 进入正题


好了,现在可以进入正题了。


# chroot /mnt/gentoo /bin/bash

# env-update && source /etc/profile


首先记得给自己设置个密码:


# passwd


然后做一些官方教程之前让我们做的事情:


# echo "nameserver 8.8.8.8" >> /etc/resolv.conf

# echo "Asia/Shanghai" >> /etc/timezone

# nano -w /etc/portage/make.conf


这里暂停一下,make.conf 还是挺重要的,所以有几个环境变量的建议。

CFLAGS 的设置,在 gcc 4.4 以后可以直接用 -march=native 了,自动识别本机处理器,然后 -pipe -fomit-pointer -O3 之类的大家自己看着办。


ACCEPT_KEYWORDS 我是用 ~amd


LINGUAS="zh_CN" 也是必须的,我们是中国用户哦。


SYNC="rsync.asia.gentoo.org/gentoo-portage" 也还可以接受。


GENTOO_MIRRORS="http://mirrors.163.com/gentoo http://mirrors.sohu.com/gentoo ftp://gg3.net/pub/linux/gentoo" 应该也是够用的了。


接下来我们要在USE标签里面加入关键的东西,因为我们要用 systemd 取代 openrc,所以 USE 里面加入 systemd gudev networkmanager 。


用 networkmanager 是因为 openrc 配置网卡的那套不好使了,嘿嘿。


接下来首先更新一下 gcc,因为这玩意最重要:


# emerge gcc

# gcc-config 2

# emerge -c gcc


最后一个命令是删除旧版本。


然后轮到 glibc:


# nano -w /etc/locale.gen

# emerge glibc


我一般的 locale 设置是:


en_US ISO-8859-1

en_US.UTF-8 UTF-8

zh_CN UTF-8

zh_CN.GBK GBK

zh_CN.GB2312 GB2312

zh_CN.GB18030 GB18030


接下来处理一下工具链,我习惯先更新完 system 再考虑 world。


# emerge @preserved-rebuild

# emerge system -uDN


这里要注意两个问题(*很关键*)


第一个是可能会遇到 dbus 和 systemd 互相依赖的问题,解决办法是先 USE="-systemd" emerge dbus,在安装完 systemd 之后,再重新 emerge dbus。


第二个问题是经典的2B guile-1.8.8 编译失败。原因是 texinfo 5.2 和最新 guile 一个配合上的BUG。解决也简单:


# mkdir -p /etc/portage/package.mask

# echo ">=sys-apps/texinfo-5" >> /etc/portage/package.mask/texinfo

# emerge texinfo -1


然后大家记得 emerge networkmanager,我一般会 USE="-nss -modemmanager"。


懒人推荐先 emerge dhcpcd,原因你懂的。


然后编译内核:


# emerge gentoo-sources

# cd /usr/src/linux

# make && make modules_install && make install


当然,懒人可以:


# emerge genkernel

# cd /usr/src/linux

# genkernel --menuconfig all


使用 systemd 需要做一些内核设置,可以参见 gentoo systemd wiki,传送门:http://wiki.gentoo.org/wiki/Systemd


怎么配置内核的问题,俺恕不解答。不过俺是一次配置成功了。


对了,如果选择了 systemd 支持,openrc 的那个可以去掉了。


5. 调戏,不,调整


到了这里,就是一些基本的调整了,比如 fstab、比如 hostname。不过如果使用了 systemd,在 chroot 环境下可能设置不了 hostname,没关系,这事以后再说。


接下来安装引导工具,我只提 grub2。


grub2 有个很蛋疼的问题,经常会在 ~amd64 下面编译不了最新版的 2.02beta2,不过 2.00 稳定版是没问题的,所以大家可以 emerge =sys-boot/grub-2.00_p5107-r2


然后安装 grub:


# grub-install /dev/sda


这个时候还不到生成引导菜单的时候,因为我们要启用 systemd,所以:


# nano -w /etc/default/grub


修改 GRUB_CMDLINE_LINUX="init=/usr/lib/systemd/systemd"


然后再:


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


官网手册到这里还有很多事情干,不过俺们用了高大上的 systemd,其实都可以略去,所以我们重整旗鼓,接下来……


6. 我要,还要


终于可以装软件和服务了。


首先做一件我们差点忘记的事情:


# emerge world -uDN


然后清理垃圾


# emerge portage-utils gentoolkit

# revdev-rebuild

# emerge -c


可以安装一些我们需要的软件了,我一般安装 syslog-ng、cronie(以前的vixie-cron)、reiserfsprogs、btrfs-progs、f2fs(如果要用固态硬盘)、zfs等等……


然后把基本的服务器启用:


# systemctl enable {NetworkManager syslog-ng cronie sshd ... }


大家自己看着办吧。


7. 再来一次


接下来就是收尾和启动了。


# eselect news read all

# eselect news purge all

# etc-update

# exit


退回到 livecd 的环境,记得:


# cd /

# umount -l /mnt/gentoo/*


然后可以 reboot 了



8. 吸支烟吧


好像事情都干完了,我们是不是可以吸一支烟了?


可以的,不过还有点小事要解决,比如 hostname:


# hostnamectl set-hostname windows8

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!