在Gentoo上运行Gentoo(容器)¶
在 Gentoo Docker 部署完成后,我期望运行一个非常精简的Gentoo系统底座,而将各种开发、测试等工作搬迁到Gentoo容器中完成:
保持物理服务器操作系统尽可能精简稳定
容器之间相互隔离
方便不断重新实现完全一致的开发测试环境
Gentoo镜像¶
通过 Gentoo镜像 构建提供ssh服务并且能够安装不同开发环境的基础容器
Gentoo Docker 之后进入容器,首先按照 在MacBook Pro上安装Gentoo Linux 完成一些必要调整,也就是以下这些手工执行的命令。在完成验证之后,就可以按图索骥定制 Gentoo镜像
修改gentoo镜像地址¶
在MacBook Pro上安装Gentoo Linux 已经提示过,海外的镜像实际上几乎无法访问,所以需要将在
/etc/portage/make.conf
配置使用国内镜像网站:
cat << EOF >> /etc/portage/make.conf
GENTOO_MIRRORS="http://mirrors.aliyun.com/gentoo http://distfiles.gentoo.org http://www.ibiblio.org/pub/Linux/distributions/gentoo"
EOF
这步对墙内用户非常重要,否则下载几乎难以完成
备注
为方便修改配置,此时可以先 emerge --ask app-editors/vim
,当然也可以在后续批量安装
选择profile¶
查看系统当前使用的
profile
:
eselect profile list
可以看到Gentoo容器中默认的 profile
是最基本的配置:
[1] default/linux/amd64/17.1 (stable) *
[2] default/linux/amd64/17.1/selinux (stable)
[3] default/linux/amd64/17.1/hardened (stable)
...
这里不用修改
更新 @world set¶
更新系统的 @world
set ,以便建立 base
,这样系统可以应用自构建 stage3
以来出现的任何更新或 USE flag
更改以及任何配置文件选择:
emerge --ask --verbose --update --deep --newuse @world
配置USE变量¶
备注
获取CPU特性,设置对应USE变量
安装工具包:
emerge --ask app-portage/cpuid2cpuflags
执行:
cpuid2cpuflags
将输出结果添加到
package.use
:
echo "*/* $(cpuid2cpuflags)" > /etc/portage/package.use/00cpu-flags
(可选)配置 ACCEPT_LICENSE
变量¶
考虑到容器内部暂时不需要编译特定私有代码,所以我暂时没有修订默认接受的licenses。不过,后续如果要支持 Gentoo NVIDIA驱动 来实现类似 Docker运行NVIDIA容器 可能还是需要接受厂商协议,可能需要执行以下命令:
cat << EOF >> /etc/portage/make.conf
ACCEPT_LICENSE="-* @FREE @BINARY-REDISTRIBUTABLE"
EOF
配置时区¶
配置时区写在 /etc/timezone
文件:
echo "Asia/Shanghai" > /etc/timezone
然后重新配置 sys-libs/timezone-data
软件包,这个软件包会更新 /etc/localtime
:
emerge --config sys-libs/timezone-data
配置本地化(语言支持)¶
修订
/etc/locale.gen
echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
根据
/etc/locale.gen
生成所有本地化支持:
locale-gen
选择本地化¶
显示可支持的
lcoale
:
eselect locale list
修订本地化为
en_US.utf8
:
eselect locale set 4
重新加载环境:
env-update && source /etc/profile && export PS1="(chroot) ${PS1}"
安装必要工具¶
安装工具参考 在MacBook Pro上安装Gentoo Linux 做了一些精简:
# 文件索引
emerge --ask sys-apps/mlocate
# 安装bind(DNS)客户端工具
emerge --ask bind-tools
# vim
emerge --ask app-editors/vim
# sudo
emerge --ask app-admin/sudo
升级Gentoo¶
在上述构建部署完成后,最后做一次仓库更新和系统整体升级:
更新Gentoo仓库,这时需要使用工具
emaint
:
emaint -a sync
完成仓库更新之后,使用
emerge
升级整个系统:
emerge -avuDN @world
构建 Gentoo镜像¶
以上完成一系列调整定制后,就可以参考上文步骤来定制 Gentoo镜像