文档章节

启用systemd的gentoo安装方法

KlausZL
 KlausZL
发布于 2014/04/18 11:33
字数 1828
阅读 3235
收藏 7

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


记得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

本文转载自:http://www.linuxsir.org/bbs/thread387961.html

上一篇: systemd使用详解
下一篇: Stumpwm的编译安装
KlausZL
粉丝 4
博文 10
码字总数 1544
作品 0
通州
私信 提问
Sandbox fails building during world update

https://forums.gentoo.org/viewtopic-t-1026944-start-0.html 问题:在进行emerge -avDN @world 时出错。 分析:错误原因比较复杂。在于我比较折腾。此机器是Dell 710老机器,安装gentoo 使...

greister
2016/09/24
5
0
记录gentoo从openrc转移到systemd遇到的一些问题。

今天将gentoo从openrc转移到了systemd,详细过程就不说了,基本上都是按照wiki上的步骤进行的。还算比较顺利,一次性成功了,不过仍然遇到了一些小问题,在这里记录一下: 1. “systemd-jou...

KlausZL
2014/04/19
1K
0
ubuntu 清空/tmp目录

这和具体的发行版有关 1.On Debian-like systems: on boot (the rules are defined in /etc/default/rcS). 2.On RedHat-like systems: by age (RHEL6 it was /etc/cron.daily/tmpwatch ; RHE......

2015/12/18
457
0
Funtoo Linux 1.3 发布,基于 Gentoo 的发行版

Funtoo Linux 是由 Daniel Robbins(Gentoo Linux的创始人和前项目领袖)和一个核心开发团队基于 Gentoo 的发行版,它基于一个简单的愿景,那就是提升Gentoo Linux中的核心技术。Funtoo Linu...

程六金
01/09
1K
2
用OpenRC更好的玩转你的Debian(Testing)

用OpenRC更快、更稳定的掌控你的Debian(Testing) 背景:Debian现在的init system默认使用的是sysv-rc,它是老的、笨拙的,同时不能很好的满足并发执行的需要。因此需要有一个verbose init....

心有未来
2013/08/17
1K
3

没有更多内容

加载失败,请刷新页面

加载更多

java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
9分钟前
1
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
3
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
12
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
13
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部