K3s证书管理
手动管理证书
生成证书
参考
[[Others/OpenSSL生成自签名证书|OpenSSL生成自签名证书]]
导入证书
1 | kubectl create secrets tls example-io-tls --key example.io.key --cert example.io.crt |
手动管理证书可忽略下边的安装过程,跳转到证书配置
使用cert-manager管理证书
部署cert-manager
方式一: 使用Helm部署(推荐)
1 | # 添加镜像源 |
方式二: 使用kubectl部署
1 | # Kubernetes 1.16+ |
创建ClusterIssuer/Issuer
公网域名证书
Issuer 与 ClusterIssuer 的区别是 ClusterIssuer 可跨命名空间使用,而 Issuer 需在每个命名空间下配置后才可使用。这里我们使用 ClusterIssuer,其类型选择 Let‘s Encrypt。
正式环境速率限制(每个注册域名可签发的证书数量(每周 50 份)),使用测试环境测试一切正常后再切换正式环境。
letsencrypt-issuer-staging.yaml
1 | apiVersion: cert-manager.io/v1 |
letsencrypt-issuer-prod
1 | apiVersion: cert-manager.io/v1 |
说明:
metadata.name 创建的签发机构的名称,创建证书的时候会引用
spec.acme.email 邮箱,证书快过期的时候会有邮件提醒,不过cert-manager会利用acme协议自动给我们重新颁发证书来续期
spec.acme.server acme 协议的服务端,由官方给出
spec.acme.privateKeySecretRef 指示此签发机构的私钥将要存储到哪个Secret对象中
spec.acme.solvers.http01 指示签发机构使用HTTP-01的方式进行acme协议 (还可以用DNS方式,acme协议的目的是证明这台机器和域名都是属于你的,然后才准许给你颁发证书)
自签名证书
selfsigned-issuer.yaml
1 | apiVersion: cert-manager.io/v1 |
spec.subjects.organizations:
创建域名证书
公网域名证书
example-io-tls.yaml
1 | apiVersion: cert-manager.io/v1 |
生产环境使用建议
实际生产环境中使用cert-manager可以考虑以下建议:
- 将CA的
Secret
及Issuer
放在某个独立的命名空间中,与其它业务的命名空间隔离起来。 - 如果是CA类型的
Issuer
,要记得定期更新根CA证书。 - 如果服务可被公网访问,同时又不想花钱买域名证书,可以采用
Letsencrypt
类型的Issuer
,目前支持两种方式验证域名的所有权,基于DNS记录的验证方案和基于文件的HTTP验证方案。 cert-manager
还提供ingress-shim
方式,自动为Ingress
资源生成证书,只需要在Ingress
资源上打上一些标签即可,详细可参考这里。
spec.secretName 指示证书最终存到哪个 Secret 中
spec.issuerRef.kind 值为 ClusterIssuer 说明签发机构不在本 namespace 下,而是在全局
spec.issuerRef.name 我们创建的签发机构的名称 (ClusterIssuer.metadata.name)
spec.duration 证书过期时间
spec.renewBefore 在过期前自动更新
spec.dnsNames 指示该证书的可以用于哪些域名
spec.acme.config.http01.domains 指示该证书的可以用于哪些域名
Traefik配置证书
终端安装证书
获取CA证书,root-ca.crt,k3s导出证书 参考K3s导出证书
k8s中使用cert-manager玩转证书-腾讯云开发者社区-腾讯云 (tencent.com)
k8s 使用cert-manager证书管理自签-CSDN博客
k8s部署cert-manager实现证书自动化_cert-manager.yaml-CSDN博客
Cert-Manager 实现 K8s 服务域名证书自动化续签 - 知乎 (zhihu.com)
手把手教你使用 cert-manager 签发免费证书 - 腾讯云原生 - 博客园 (cnblogs.com)
在 k3s 内使用 cert-manager 管理证书 (bowser1704.github.io)
用 k3s 轻松管理 SSL 证书 | Linux 中国 - 知乎
k8s中级篇-cert-manager+Let‘s Encrypt自动证书签发_cert-manager let’s encrypt-CSDN博客
k3s 使用 Letsencrypt 和 Traefik 完成 https 入口部署-腾讯云开发者社区-腾讯云 (tencent.com)
容器服务 使用 cert-manager 签发免费证书-实践教程-文档中心-腾讯云 (tencent.com)
使用cert-manager为Traefik IngressRoute自动签发Let’s Encrypt证书 – 桃又的技术笔记 (taoyouh.cn)
内网证书
cert-manager管理内网k8s开发环境证书 - hueidou163 - 博客园 (cnblogs.com)
SelfSigned - cert-manager (k8s-docs.github.io)
k8s 使用cert-manager证书管理自签-CSDN博客
Kubernetes (K8S) 中Traefik自动申请证书-腾讯云开发者社区-腾讯云 (tencent.com)
k8s ingress配置自签名证书,并解决Kubernetes Ingress Controller Fake Certificate-CSDN博客
国内常用源镜像地址
Linux 源
清华 https://mirrors.tuna.tsinghua.edu.cn
腾讯 https://mirrors.tencent.com
华为 https://mirrors.huaweicloud.com
中国科技大学 https://mirrors.ustc.edu.cn
华中科技大学 http://mirror.hust.edu.cn
Docker 镜像仓库
DockerHub(docker.io)
网易 http://hub-mirror.c.163.com
中国科技大学 https://docker.mirrors.ustc.edu.cn (不可用)
道客 https://docker.m.daocloud.cn (参考官方文档)
腾讯 https://mirror.ccs.tencentyun.com
华为 https://mirror.swr.myhuaweicloud.com
阿里云 https://registry.cn-hangzhou.aliyuncs.com
[^注]: 阿里可申请私有加速,需注册账号,注册后地址修改为 https://{私有ID}.mirror.aliyuncs.com。详细信息参考官方文档
谷歌镜像仓库(gcr.io k8s.gcr.io)
阿里 https://registry.aliyuncs.com/google_containers
中科大 https://gcr.mirrors.ustc.edu.cn (2022.8之后不再更新镜像,校外访问返回403)
华为 https://mirror.swr.myhuaweicloud.com
道客 https://m.daocloud.io/k8s.gcr.io 文档
CoreOS镜像仓库(quay.io )
道客 https://m.daocloud.io/quay.io 参考支持镜像列表
Github镜像仓库(ghcr.io )
道客 https://m.daocloud.io/ghcr.io 参考支持镜像列表
Helm 源
ArtifactHub https://artifacthub.io/
华为 https://mirrors.huaweicloud.com/helm/
bitnami https://charts.bitnami.com/bitnami
Google https://gcr.io/kubernetes-helm
容器配置
Docker(/etc/docker/daemon.json )
1 | { |
Containerd(/etc/containerd/config.toml)
1 |
|
K3s中Containerd容器(/var/lib/rancher/k3s/agent/etc/containerd/config.toml)
K3s 默认的 containerd 配置文件目录为/var/lib/rancher/k3s/agent/etc/containerd/config.toml,但直接操作 containerd 的配置文件去设置镜像仓库或加速器相比于操作 docker 要复杂许多。K3s 为了简化配置 containerd 镜像仓库的复杂度,K3s 会在启动时检查/etc/rancher/k3s/中是否存在 文件,如果存在该文件,就会根据 registries.yaml 的内容转换为 containerd 的配置并存储到/var/lib/rancher/k3s/agent/etc/containerd/config.toml,从而降低了配置 containerd 镜像仓库的复杂度。
1 | mirrors: |
containerd 与 docker 都有默认仓库,并且都为 docker.io
。如果配置中未指定 mirror 为 docker.io
,重启 containerd 后会自动加载 docker.io
配置。与 docker 不同的是,containerd 可以修改 docker.io
对应的 endpoint( 默认为 https://registry-1.docker.io ),而 docker 无法修改。
docker 中可以通过 registry-mirrors
设置镜像加速地址。如果 pull 的镜像不带仓库地址(项目名+镜像名:tag
),则会从默认镜像仓库去拉取镜像。如果配置了镜像加速地址,会先访问镜像加速仓库,如果没有返回数据,再访问默认吧镜像仓库。
k3s完整配置文件
1 | mirrors: |
镜像转换
1 |
|
转换为gcr.io镜像
1 | docker pull registry.aliyuncs.com/google_containers/coredns:1.6.5 |
K8S批量下载docker images
1 | kubeadm config images list |
1 |
|
更新版
1 |
|
或(V1.3以上)
1 | kubeadm init --image-repository registry.aliyuncs.com/google_containers \ |
基于K3S搭建DevOps
K3s安装
参考 [[K3s安装|K3s安装]]
组件配置信息
开放端口
端口 | 用途 |
---|---|
53 | CoreDNS服务,替代修改Hosts方式实现内网域名访问 |
5432/3306 | PostgreSQL/MySQL数据库(二选一即可) |
443,80 | HTTPS、HTTP访问入口,Traefik |
6379 | Redis缓存 |
8022 | SSH管理端口 |
22 | git+ssh方式代码上传 |
域名规划
组件 | 访问地址 | 说明 |
---|---|---|
Cert-Manager | 证书管理服务,有公网域名推荐使用,内网部署可生成自签名证书 | |
Traefik Dashboard | https://dashboard.example.io | 反向代理/负载均衡 |
Harbor | https://harbor.example.io | 私有镜像库,镜像缓存 |
Gitea | https://gitea.example.io | 源代码仓库 |
Tekton | https://tekton.example.io | 云原生持续集成 |
Drone | https://drone.example.io | 容器化持续集成 |
Sonar Qube | https://sonar.example.io | 静态代码审查。 |
ArgoCD | https://argocd.example.io | 持续部署组件 |
组件部署
Traefik
1 | ``` |
MySQL
参考 K3s部署MySQL
1 | # k3s使用 local-path 部署 |
PostgresSQL
1 | # k3s使用 local-path 部署 |
cert-manager
参考[[Kubernetes/K3s证书管理|K3s证书管理]]
1 | # 添加镜像源 |
Harbor
1 |
Gitea
1 |
Tekton
参考[[K3s部署Tenton]]
1 | ``` |
SonarQube
1 |
组件之间联动配置
参考
Traefik Proxy Documentation - Traefik
k3s 部署gitea+drone_golang k3s-CSDN博客
Harbor 结合 Traefik 的 HA 安装配置-腾讯云开发者社区-腾讯云 (tencent.com)
Traefik - Kubernetes 配置TCP/HTTP服务-腾讯云开发者社区-腾讯云 (tencent.com)
Drone CI使用docker插件构建和推送镜像 - wosperry - 博客园 (cnblogs.com)
在 Kubernetes 上部署 Drone 持续集成环境 | Hanggi - NGNL
Gitea 与 Drone 集成实践:完全基于 Docker 搭建的轻量级 CI/CD 系统 - Gitea - 博客园 (cnblogs.com)
K3s安装
安装基础环境
新装环境
1 | # master安装 |
其中<k3s-server-ip>
是K3s服务器的IP地址,<token>
是由K3s服务器生成的唯一令牌。可以使用以下命令在K3s服务器上获取此令牌:
1 | sudo cat /var/lib/rancher/k3s/server/node-token |
设置 kubeconfig 文件路径用于对 Kubernetes 集群的访问。
1 | echo "export KUBECONFIG=/etc/rancher/k3s/k3s.yaml" >> ~/.bashrc |
现有环境修改
1 | sudo systemctl stop k3s.service |
安装管理工具Helm
1 | #安装helm |
添加命令自动补全
1 | # 安装自动补全 |
常用Helm Charts
常用命令
1 | # 查看集权所有资源 |
测试
1 | # 创建2副本的whoami应用,默认1副本 |
配置国内源(私有镜像库)
K3s 默认的 containerd 配置文件目录为/var/lib/rancher/k3s/agent/etc/containerd/config.toml,但直接操作 containerd 的配置文件去设置镜像仓库或加速器相比于操作 docker 要复杂许多。K3s 为了简化配置 containerd 镜像仓库的复杂度,K3s 会在启动时检查/etc/rancher/k3s/中是否存在 registries.yaml 文件,如果存在该文件,就会根据 registries.yaml 的内容转换为 containerd 的配置并存储到/var/lib/rancher/k3s/agent/etc/containerd/config.toml,从而降低了配置 containerd 镜像仓库的复杂度。
K3s 镜像仓库配置文件由两大部分组成:mirrors 和 configs:
- Mirrors 是一个用于定义专用镜像仓库的名称和 endpoint 的指令
- Configs 部分定义了每个 mirror 的 TLS 和证书配置。对于每个 mirror,你可以定义 auth 和/或 tls
containerd 使用了类似 K8S 中 svc 与 endpoint 的概念,svc 可以理解为访问名称,这个名称会解析到对应的 endpoint 上。也可以理解 mirror 配置就是一个反向代理,它把客户端的请求代理到 endpoint 配置的后端镜像仓库。mirror 名称可以随意填写,但是必须符合 IP 或域名的定义规则。并且可以配置多个 endpoint,默认解析到第一个 endpoint,如果第一个 endpoint 没有返回数据,则自动切换到第二个 endpoint,以此类推。
1 | mirrors: |
非安全(http)私有仓库配置
配置非安全(http)私有仓库,只需要在 endpoint 中指定 http 协议头的地址即可。
在没有 TLS 通信的情况下,需要为 endpoints 指定 http://,否则将默认为 https。
无认证
1 | mirrors: |
有认证
1 | mirrors: |
安全(https)私有仓库配置
使用授信 ssl 证书
1 | mirrors: |
使用自签 ssl 证书
如果后端仓库使用的是自签名的 ssl 证书,那么需要配置 CA 证书 用于 ssl 证书的校验。
1 | mirrors: |
ssl 双向认证
如果镜像仓库配置了双向认证,那么需要为 containerd 配置 ssl 证书用于 镜像仓库对 containerd 做认证。
1 | mirrors: |
加速器配置
Containerd 与 docker 都有默认仓库,均为 docker.io 。如果配置中未指定 mirror 为 docker.io,containerd 后会自动加载 docker.io 配置。与 docker 不同的是,containerd 可以修改 docker.io 对应的 endpoint(默认为 https://registry-1.docker.io),而 docker 无法修改。
Docker 中可以通过 registry-mirrors 设置镜像加速地址。如果 pull 的镜像不带仓库地址(项目名+镜像名:tag),则会从默认镜像仓库去拉取镜像。如果配置了镜像加速地址,会先访问镜像加速仓库,如果没有返回数据,再访问默认的镜像仓库。
Containerd 目前没有直接配置镜像加速的功能,但 containerd 中可以修改 docker.io 对应的 endpoint,所以可以通过修改 endpoint 来实现镜像加速下载。因为 endpoint 是轮询访问,所以可以给 docker.io 配置多个仓库地址来实现 加速地址+默认仓库地址。如下配置示例:
1 | mirrors: |
参考
Windows与Linux文件互传工具
解决SuperMicro主板风扇转速过低告警
解决SuperMicro主板风扇转速过低告警
现象
系统启动后风扇忽高忽低,进入IPMI后台可以看到,看到传感器日志里大量的告警

造成此问题的原因是风扇转速过低,触发了超微的风扇转速允许的下限,从而强制满速运转,而在满速后主板又很快发现没有问题,且此时温度较低,风扇开始降速,直到降速到下限以下,重复此过程。
在进入IPMI后台管理界面后风扇速度有四种智能模式可调
Standard: zone0和zone1 风速为50%
Optimal: 风速为30%
Full: 风速为100%
Heavy IO: zone0 为50%,zone1 为75%

解决方法
1. 在服务器上安装IPMItool
1 | apt install ipmitool # Ubuntu/Debian指令 |
2. 设置风扇转速
1 | # 风扇名可以看告警里边的对应风扇名 |
3. Windows 下远程操作IPMI
ipmitool windows 版 下载地址
1 | ipmitool -H [IPMI网口IP地址] -U [IMPI账户] -P [IPMI密码] sensor thresh FAN1 lower 100 125 125 |
问题
如果你运行上面的命令后,风扇转速回落后马上又返回原样,这表明服务器的自动调速覆盖了你手动设置的转速。你需要切换服务器风扇策略为全速(Full Speed),在这个策略下服务器不会使用自动调节转速,因此也不会覆盖你手动设置的转速。
运行下面的命令切换到全速模式(也可以进入IPMI界面调整):
1 | ipmitool -H [IPMI网口IP地址] -U [IMPI账户] -P [IPMI密码] 0x30 0x45 0x01 0x01 |
参考
1.解决超微 SuperMicro 主板风扇反复高低转速问题 - 哔哩哔哩 (bilibili.com)
FRP配置
服务端配置
1 | [common] |
服务端开机自启配置
1 | sudo vim /etc/systemd/system/frps.service |
启动文件
1 | [Unit] |
客户端配置
1 | [common] |
Gentoo安装
准备工作
制作启动盘
官方镜像
Minimal CD Stage
国内加速
清华大学开源软件镜像站
中国科技大学开源镜像站
使用Rufus制作启动U盘.

连接网络
Linux配置网络及SSH配置分区规划
Linux硬盘分区参考 Linux硬盘分区
挂载分区
1 | mkdir /mnt/gentoo |
配置Portage
释放stage
1 | # 使用命令行浏览器下载stage |
挂载系统必要环境
1 | mount --types proc /proc /mnt/gentoo/proc |
复制DNS
1 | cp --dereference /etc/resolv.conf /mnt/gentoo/etc/ |
配置软件源
常规源
选择中国源,这一步是非必须的,提供的/etc/portage/make.conf
里已经有中国的所有源了
1 | mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf |
创建主仓库
1 | mkdir -p -v /mnt/gentoo/etc/portage/repos.conf |
二进制源
1 | # 修改二进制源地址为国内源 |
如果启用二进制源需要在USE
中添加 getbinpkg binpkg-request-signature
生成fstab
1 | genfstab -U /mnt/gentoo >> /mnt/gentoo/etc/fstab |
生成的fstab格式如下
1 | UUID=...... /boot/efi vfat noauto,defaults,noatime,umask=0077 0 2 |
系统配置
进入新系统环境
从现在开始,所有的动作将立即在新 Gentoo Linux 环境里生效。
1 | chroot /mnt/gentoo /bin/bash |
同步stage
1 | emerge-webrsync |
^注意: gentoo handbook上提到可以使用emerge -rsync升级软件包数据库到最近2小时的最新版,这是没有必要的,而且下载的速度会极其慢,所以不推荐这样做。单用emerge-webrsync就可以同步数据库到最近3~4天内的最新版了。
设置profile
1 | eselect profile list #查看profile予设值 |
检测cpu指令集
1 | # 安装cpuid2cpuflags |
安装CCache(可选,加速编译)
1 | emerge --ask ccache |
在portage/make.conf中添加
1 | FEATURES="ccache -test" |
安装Aria2(可选,加快包下载)
1 | emerge --ask net-misc/aria2 |
在portage/make.conf中添加配置
1 | DISTDIR="/var/cache/distfiles" |
配置编译选项
1 | nano /mnt/gentoo/etc/portage/make.conf |
^注意: 设置编译标志 -march=native (如果你知道自己处理器的代号,就用自己的处理器代号替换这里的native 比如我的是skylake,如果不确定就使用native)
^注意: 设置 MAKEOPTS=”-j8” 来定义安装软件时并行编译的数量 这个数字等于你的CPU线程数(也称为逻辑CPU数)参考MAKEOPTS WiKi
完整的配置文件如下(转自Gentoo安装流程分享(step by step),第一篇之基本系统的安装,修改了下注释格式,删除不用的部分)
1 | # These settings were set by the catalyst build script that automatically |
永久禁用nouveau驱动模块
强烈要求你禁用Nouveau驱动!!能省掉以后很多莫名其妙的麻烦!
1 | mkdir /etc/modprobe.d/ |
即便在编译内核前就已经设置内核禁用Nouveau驱动了,但是内核安装时还是会默认把nouveau驱动作为内核模块自动加载。启用了nouveau驱动模块的内核会出现各式各样的莫名其妙的数不清的问题,所以为了避免以后出现这些问题,必须禁用nouveau模块。
内核配置和编译
安装内核源码
1 | emerge --ask sys-kernel/gentoo-sources |
某些驱动程序在工作之前需要在系统上安装其他固件。这通常是网络接口的情况,尤其是无线网络接口。此外,在使用开源驱动程序时,来自AMD,Nvidia和Intel等供应商的现代视频芯片通常需要外部固件文件。大多数固件都封装在sys-kernel / linux-firmware中:
1 | emerge --ask --quiet sys-kernel/linux-firmware |
除了独立显卡硬件和网络接口之外,CPU 可能也需要固件更新。通常这种固件被称为微码(microcode)。有时需要更新版本的微码来修补 CPU 硬件中的不稳定性、安全问题或其他复杂的错误。
AMD CPU 的微码更新在前面提到的 sys-kernel/linux-firmware 软件包内分发。Intel CPU 的微码可以在 sys-firmware/intel-microcode 包中找到,并且需要单独安装
1 | # Intel CPU 执行 |
三种方法安装内核
安装系统时可选择安装二进制内核,系统安装完后再配置编译内核,参考 配置Linux内核 - Gentoo Wiki
全自动安装
当为基于 amd64 的系统安装和编译内核时,Gentoo 推荐使用 sys-kernel/gentoo-sources 软件包
1
emerge --ask sys-kernel/installkernel
混合安装(推荐方式)
生成内核配置文件
将genkernel的默认内核配置文件“generated-config”复制过来,里面已经设置好了绝大部分应用场景以及绝大部分硬件驱动的配置,非常方便,值得借过来使用,只需要在自己手动配置内核的时候将其加载,在其基础上做一点点轻微的修改或完全不修改都可以,对内核新手极其友好!
1
2
3
4
5
6
7
8
9
10emerge --ask sys-kernel/genkernel
# 以genkernel的配置文件为基础进行自定义配置
cp /usr/share/genkernel/arch/x86_64/generated-config /usr/src/linux/
# 备份
cp /usr/src/linux/generated-config /usr/src/linux/generated-config.bak
# 编译
genkernel --mountboot --install all^注意如果想在以后支持jack低延迟实时音频组件(Jack-Audio-Connection-Kit),则需要vim generated-config,手动设置“CONFIG_CGROUPS=y”、“CONFIG_CGROUP_SCHED=y”、“CONFIG_RT_GROUP_SCHED=y”,然后重新make menuconfig载入保存generated-config一遍,接下来再编译内核。
^注意: 使用nvidia显卡闭源驱动,需要将内核配置中“CONFIG_I2C_NVIDIA_GPU”这一项禁用,否则会和官方nvidia-drivers冲突!!!全手动安装
1
2
3
4
5emerge sys-apps/pciutils
cd /usr/src/linux
# 配置内核
make menuconfig
![[Gentoo安装/IMG-20241210170128644.png]]
有些内核选项是必须的,必须编译到内核中,而不是作为模块加载。*
表示包括到内核中,M
表示作为模块加载,[]
只有包括到内核中和排除在外两种选项,<>
则有包括到内核中、排除在外和以模块加载三种选项。下面这些选项都必须以*
方式编译到内核中。
devtmpfs支持。
1 | Device Drivers ---> |
SCSI磁盘支持。
1 | Device Drivers ---> |
选择支持的文件系统。因为ESP分区用的FAT32格式化的,根目录用的XFS格式化的,所以这里这两项(FAT32也就是VFAT)必须包括到内核中,虚拟内存和proc文件系统也是必选的。其实这里还可以取消掉不需要的文件系统,但是对于新手不建议取消任何自己不明白的东西,很容易弄的最后内核没办法启动。
1 | File systems ---> |
如果处理器是多核的,还需要开启SMP(对称多处理器支持)。
1 | Processor type and features ---> |
USB也必须启用
1 | Device Drivers ---> |
系统体系相关的内核配置
因为选择了multlib,所以32和64位的程序都会安装。为了支持32位程序,必须启用32位程序模拟功能。这里其实倒是不用怎么改,默认已经都选上了。
1 | Processor type and features ---> |
启用GPT支持,因为前面我用的GPT分区表,EFI启动方式,所以这两项也必须启用。
1 | -*- Enable the block layer ---> |
EFI的支持。
1 | Processor type and features ---> |
1 | # 编译内核 |
使用二进制内核
1 | # 安装二进制内核 |
可选:生成一个initramfs
在某些情况中需要建立一个initramfs——一个基于内存的初始化文件系统。最觉的原因是当重要的文件系统位置(如/usr/或/var/)在分离的分区。通过一个initramfs,这些分区可以使用initramfs里面的工具来完成挂载。
用dracut生成内核的initramfs,快速且方便,新手友好
1 | emerge --ask sys-kernel/dracut |
或者使用genkernel生成内核的initramfs
1 | cp /usr/src/linux/generated-config /etc/kernels/kernel-config-<内核版本号>-gentoo-x86_64 |
系统环境配置
配置主机名
1 | #nano -w /etc/conf.d/hostname |
配置系统时区
1 | ls /usr/share/zoneinfo |
配置编码
1 | nano -w /etc/locale.gen #将以下几项取消注释,如果没有手动输入 |
设置系统locale
1 | #查看可用系统时区和地区配置 |
配置sudo自动补全
1 | sudo emerge --ask app-shells/bash-completion |
安装网络工具
1 | # 无线 |
![[Gentoo安装/IMG-20241210170128726.png]]
安装配置networkmanager
最方便支持多种联网方式的工具是NetworkManager,基本满足所有需求,但同时它的依赖有点多。如果使用桌面环境的话建议安装。
1 | nano -w /etc/portage/make.conf: |
安装必要的工具
1 | # 系统日志 |
配置系统用户
安装sudo
1 | emerge app-admin/sudo |
把 %wheel ALL=(ALL) ALL
这一行去掉注释,如果希望执行sudu不需要密码则取消注释%wheel ALL=(ALL) NOPASSWD:ALL
添加用户
1 | groupadd sudo |
设置密码
1 | # 设置root密码 |
添加操作系统启动项
在/etc/portage/make.conf
中添加grub配置
1 | GRUB_PLATFORMS="efi-64" |
安装grub2
1 | emerge --ask sys-boot/grub:2 |
grub安装到硬盘并生成开机启动项
1 | grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=Gentoo |
1 | mount -o remount,rw /sys/firmware/efi/efivarsos-prober |
如果出现No space left on device,请运行以下命令,之后再重复上述步骤
1 | mount -t efivarfs efivarfs /sys/firmware/efi/efivars |
grub默认配置添加自定义配置,可提高intel cpu的稳定性和性能
1 | nano -w /etc/default/grub: |
清理
1 | rm /stage3-*.tag.ge |
如果开机不正常参考挂载文件系统(不要执行分区和mkfs操作),可重新chroot进入系统修改错误的配置。
桌面环境
安装基础环境
1 | # 从 x11-base/xorg-drivers-21.1 开始,x11-base/xorg-drivers更改 [USE 标志]设置 |
^注意: 以后每次重新编译安装内核kernel后,均须要运行一遍“emerge @module-rebuild”,重新编译安装nvidia驱动模块加载到内核之中,否则nvidia驱动无法加载!!!
1 | lsmod | grep nvidia |
LightDM
1 | # 安装LightDM,使用KDE可忽略 |
KDE
1 | # 安装KDE桌面可忽略上边LightDM,同时需要删除USE中`-kde` |
Awesome
1 | # awesome 平铺式桌面 |
Mate
1 | # 选择profile |
Xfce
1 |
|
音频控制
1 | emerge --ask alsa-utils |
中文字体
1 | emerge --ask media-fonts/arphicfonts |
输入法
1 | # 输入法主题框架 |
常用命令
1 | # 使用常规(基于源)更新 |
emerge 使用二进制包选项说明
选项 | 说明 |
---|---|
–usepkg (-k) | 尝试使用本地可用的 packages 目录中的二进制包。如果未找到二进制包,将执行常规(基于源)安装。 |
–usepkgonly (-K) | 类似 –usepkg (-k) ,但如果找不到二进制包,则失败。 |
–getbinpkg (-g) | 从远程二进制包主机下载二进制包。如果未找到二进制包,将执行常规(基于源)安装。 |
–getbinpkgonly (-G) | 类似于 –getbinpkg (-g) ,但如果无法下载二进制包,则会失败 |
USE变量说明 官方文档
USE是Gentoo为用户提供的最具威力的变量之一。很多程序通过它可以选择编译或者不编译某些可选的支持。例如,一些程 序可以在编译时加入对gtk或是对qt的支持。其它的程序可以在编译时加入或不加入对于SLL的支持。有些程序甚至可以在编译时加入对 framebuffer的支持(svgalib)以取代X11(X服务器)。
大多数的发行版会使用尽可能多的支持特性编译它们的软件包,这既增加了软件的大小也减慢了启动时间,而这些还没有算上可能会涉及到的大量依赖性问题。Gentoo可以让你自己定义软件编译的选项,而这正是USE要做的事。
在USE变量里可以定义关键字,它被用来对应相应的编译选项。例如,ssl将会把ssl支持编译到程序中以支持它。-X会移除其对于X服务器的支持(注意前面的减号)。gnome gtk -kde -qt4将会以支持GNOME(和GTK)但不支持KDE(和Qt)的方式编译软件,使系统为GNOME做完全调整(如果架构支持)。
默认的USE设置全放在了系统所使用的Gentoo配置文件的make.defaults文件中。Gentoo对它的配置文件们使用了一个(复杂的)继承系统,在这个阶段我们不去深入。最简单的检查当前活动的USE标记的办法是运行emerge –info并选择以USE开头的那一行:
1 | emerge --info |grep ^USE |
![[Gentoo安装/IMG-20241210170128821.png]]
可以在系统的/usr/portage/profiles/use.desc中找到可用的USE标记的完整描述。
1 | less /usr/share/portage/profile/use.desc |
1 | ### 常用软件 |
参考文章
Gentoo AMD64 Handbook - Gentoo Wiki
开始使用gentoo linux——gentoo安装笔记(上)
开始使用gentoo linux——gentoo安装笔记(下)
Gentoo安装流程分享(step by step),第二篇之KDE Plasma桌面的安装配置 - 知乎 (zhihu.com)
gentoo linux配置intel和nvidia双显卡电脑,使用prime方案 - 简书 (jianshu.com)
流媒体服务器开源软件
http://www.oschina.net/project/tag/111/streaming?lang=0&os=0&sort=view&p=1
Flash流媒体服务器 Red5
Red5是一个采用Java开发开源的Flash流媒体服务器。它支持:把音频(MP3)和视频(FLV)转换成播放流; 录制客户端播放流(只支持FLV);共享对象;现场直播流发布;远程调用。Red5使用RSTP作为流媒体传输协议,在其自带的一些示例中演示了在线录制,flash…
更多Red5信息
最近更新: Red5 1.0.1 Final 发布,Flash流媒体服务器 发布于 12个月前
流媒体服务器 Open Streaming Server
Open Streaming Server (Catra Streaming Platform) 是一个数字媒体传送器,主要功能包括支持 mp4、3gp、WMF和qt文件格式;动态带宽适配;负载均衡、内容分发技术。基于 C++、Java 和 CORBA 技术开发。… 更多Open Streaming Server信息
流媒体解决方案 live555
Live555 是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP、RTSP、SIP等的支持。Live555实现了对多种音视频编码格式的音视频数据的流化、接收和处理等支持,包括MPEG、H.263+、DV、JPEG视频和多种音频编码。同时… 更多live555信息
Darwin Streaming Server
Darwin Streaming Server 使用开放标准,让你可以透过互联网实时传送实况或预先录制的内容。在 Instant-On——苹果电脑公司正在申请专利的一项创新流媒体播送技术的支持下,你的内容将在点击链接的同时开始播放,无需等待文件下载。…
更多Darwin Streaming Server信息
【商业】流媒体服务器软件 Helix Server
Helix Server是由著名的流媒体技术服务商Real Networks公司提供的一种流媒体服务器软件,利用它可以在 网上提供Real Video和MMS格式文件的流媒体播放服务,配上相应设备后,还具有现场直播的功能。下面介绍一下有关Helix服务器的获取、安装、运行管理和使用…
更多Helix Server信息
开源流媒体平台 FreeCast
MPEG4IP
MPEG4IP提供一个端对端的系统来实现音视频流的传输,支持包括MPEG4/H.261/MPEG2/H.263 MP3/AAC/AMR等不同编码格式。
更多MPEG4IP信息
开源流媒体平台 Stream-2-Stream
Stream-2-Stream 是一个用 Java 语言实现的 Multicast+ 下一代流媒体传输协议。与传统的流媒体技术相比较,Multicast+ 具有更高效的传输效率和更少的带宽占用。 主要特点: Integrated MP3, Ogg media player. No external media player needed to listen!… 更多Stream-2-Stream信息
流媒体服务器 Yass
Yass是一个基于Web的流媒体服务器(streaming server),拥有一个类似于iTunes的界面。它能够共享你的MP3音乐库,并通过Internet访问。Yass利用JPA(openJpa)操 作数据,spring控制事务。利用Apache Derby来存储数据。通过JAX-RS与JAXB(Jersey)实现客户端…
更多Yass信息
流媒体服务器 Flumotion
Flumotion 是一个前卫的(modern)的流媒体服务器,采用模块化分布式的设计理念,提供您稳定及高质量的流媒体服务. Flumotion 支持 Ogg/Theora也支持 MPEG-4 等格式,使用者不必一次下载所有的文件就能在线观看媒体播放的结果。 Flumotion 提供了一个基于 Ja…
更多Flumotion信息
Java实现的RTMP Flazr
Flazr 是一个实现了 RTMP 流媒体传输协议的 Java 类库,该项目包含一个流媒体服务器和相关的工具。 更多Flazr信息
【商业】流媒体服务器 xmoovStream
xmoovStream是一个采用PHP开发的开源流媒体服务器,能够将视频、图片、音频转成可以在网页上播放的流媒体。这个服务器还自带轻量级视频播放 器和音频播放器。
更多xmoovStream信息
NGINX的流媒体插件 nginx-rtmp-module
战斗民族俄罗斯人民开发的一款NGINX的流媒体插件,除了直播发布音视频流之外具备流媒体服务器的常见功能 比如推拉流媒体资源 基于HTTP的FLV/MP4 VOD点播 HLS (HTTP Live Streaming) M3U8的支持 基于http的操作(发布、播放、录制) 可以很好的协同现有的流… 更多nginx-rtmp-module信息
icecast
icecast 是一套开放源码 (Open Source) 的流媒体服务器软件 (Streaming Server), 支持 MP3 与 Ogg Vorbis 流格式, 串流資料則由其他支援 icecast 的 Source Clients (或稱 Streamer) 提供. 例如: ices 將電腦中的 MP3 檔案轉成串流資料 darkice 將音效卡的… 更多icecast信息
RTMP流媒体服务器 crtmpserver
crtmpserver又称rtmpd是Evostream Media Server(www.evostream.com)的社区版本采用GPLV3授权 其主要作用为一个高性能的RTMP流媒体服务器,可以实现直播与点播功能多终端支持功能,在特定情况下是FMS的良好替代品。 支持RTMP的一堆协议(RTMP,RTMPE, RTM… 更多crtmpserver信息
Free UPnP Entertainment Service
流媒体服务器 Slyseal
Slyseal 是一个使用Python编写的轻量级可扩展的流媒体服务器,实现了Adobe RTMP 协议,支持h.264编码的视频。 这里是演示 http://www.orakili.org. 更多Slyseal信息
电视流媒体服务器 Tvheadend
Combined DVB reciever, Digital Video Recorder and Showtime streaming server for Linux. Tvheadend 是一个流媒体服务器/中继supporing多种渠道和多种输出格式。它主要是用于接收电视(广播,模拟IPTV )和将其转交使用了一些不同的输出格式的用户。加上… 更多Tvheadend信息
webcamFLV
webcamFLV 是 Windows 下的摄像头软件,可以将视频和声音数据流转换为Flash FLV格式以便在 Web上发布,使用实时视频编码器ffMpeg进行开发。 更多webcamFLV信息
WEB自动点唱机 netjukebox
netjukebox是一个php开发的基于Web的自动点唱机。 更多的屏幕截图请看:http://www.netjukebox.nl/screenshot.php 演示地址:http://www.netjukebox.nl/demo.php[](http://www.oschina.net/p/netjukebox “netjukebox”) 更多netjukebox信息
Java流媒体服务器 JRoar
JRoar 是一个纯 Java 开发的Ogg 流媒体服务器。It casts live Ogg streams to Ogg Vorbis players as IceCast2 does and shouts live Ogg streams to IceCast2 and JRoar. JRoar also accepts live Ogg streams from Ices. The uniqueness of JRoar is tha… 更多JRoar信息
OpenAMF
OpenAMF 项目是免费的开放源码替代Macromedia的远程Java Flash. 这是因为能够提供作为应用服务,以Flash MX的大媒体的专有解决方案. 这个项目开始作为一个java AMF-PHP接口. 更多OpenAMF信息
多媒体传输协议库 oRTP
RTP(Real-timeTransportProtocol)是用于Internet上针对多媒体数据流的一种传输协议,做流媒体传输方面的应 用离不开RTP协议的实现及使用,为了更加快速地在项目中应用RTP协议实现流媒体的传输,我们一般会选择使用一些RTP库,例如使用c++语言编写的 JRTP… 更多oRTP信息
Helix DNA Platform
The Helix DNA Server is a universal delivery engine supporting the real time packetization and network transmission of any media type to any device. The Helix DNA Server is the industry’s core media delivery engine and should be at the c… 更多Helix DNA Platform信息
流媒体服务器 Tunapie
Tunapie,一个可以自动从网络上下载网络电台和视频流媒体的列表软件。在Windows下用过WinAMP的用户应该都有印象WinAMP有一个可以从网络更新列表,用户可以选择电台或视频流媒体。Tunapie就是WinAMP这个功能的独立软件,当然是For linux的。 要播放Tunapie…
更多Tunapie信息
家庭视频直播和分享 xShow@Home
注:xShow@Home 已经改名为 xDisplayAtHome ,项目页面更改至 https://code.google.com/p/xdisplay/ xShow@Home 是我开发的视频平台xShow的一个分支,用于家庭视频直播和分享,可将一个视频(电影或摄像头采集的视频)在PC、Mac、Linux、Android上同时播…
更多xShow@Home信息
最近更新: xShow@Home v5.1.20120908 发布 发布于 1年前
流媒体服务器 TivoServer
TivoServer 是一个通过家庭多媒体服务将 PC 中的视频输出到 Tivo 的解决方案,目前需要对 Tivo 进行破解,并且只支持那些先前从 Tivo 解压出来的版本。
更多TivoServer信息
Mobicents Multimedia Server
MMS (Mobicents Multimedia Server) 是一个基于 Java 开发的实时媒体服务器,提供流媒体、会议、录制、回放、IVR、TTS 等多项多媒体功能,可通过 MGCP 或者媒体控制(JSR 309) 驱动进行访问。 该项目继承自 Mobicents Media Server… 更多Mobicents Multimedia Server信息
最近更新: Mobicents Multimedia Server 3.0 RC2 发布 发布于 10个月前
m3w网站的流媒体服务器 m3w
m3w 是 www.m3w.com 网站所使用的音乐流媒体服务器,通过捕捉来自声卡的数据并转换成流媒体进行播放,提供高质量、高可靠性和易用的流媒体工具。
更多m3w信息
pulpTunes
pulpTunes是一个为 iTunes 桌面软件提供的一个 Web 服务器,通过它你可以在 Web 上访问 iTunes 中的音乐。采用 Java 开发,支持各种操作系统。你可以安装在你的机器上来访问你的iTunes音乐库,可以在世界任何地方通过网络浏览器,跟你的朋友和家人分享你的音…
更多pulpTunes信息
音频流记录器 DarkIce
DarkIce便是一个实时的音频流记录器。它支持从音频接口,例如音效卡录制音频信息并进行编码后将其发送到流媒体服务器。 DarkIce可以记录从OSS音频设备,ALSA音频设备,Solaris 音频接口,和 Jack 音源。 DarkIce可以编码成MP3,MP2方法,Ogg Vorbis和AAC格…更多DarkIce信息
最近更新: DarkIce 1.2 发布,增加对 Ogg/Opus 的支持 发布于 5个月前
Tin Can Jukebox
Tin Can Jukebox 是一个快速、功能全面的基于Web的 jukebox ,可安全的输出很大的 MP3 集合数据流。提供包括浏览模型、动态下载、播放列表、语言包、用户访问控制等功能。 在线演示: http://www.tincanjukebox.com/demo/index.php...[](http://www.oschina.net/p/tincanjukebox “Tin Can Jukebox”) 更多Tin Can Jukebox信息
RTMFP服务器脚本 CumulusServer
openrtmfp又名Cumulus Server是一个完全开源和跨平台的可扩展的RTMFP服务器脚本。Cumulus Server在GPL 框架下遵循速度、优势、跨平台、轻量和高质量代码。Cumulus Server的每一个版本都是通过严格测试和审核的。可通过Cumulus官网费下载源代码并编译安装。…更多CumulusServer信息
RTMP/HLS 直播服务器 simple-rtmp-server
一个采用MIT协议授权的国产的简单的RTMP/HLS 直播服务器,其核心的价值理念在于简单高效。 使用方法: tep 1: build srs tar xf simple-rtmp-server-*.*.tar.gzcd simple-rtmp-server-*.*/trunk./configure –with-ssl –with-hlsmake step 2: start … 更多simple-rtmp-server信息
开源流媒体服务器 Feng
Feng是LSCUBE维护的开源流媒体服务器,兼容IETF标准,实现了RTSP、RTP/RTCP。 Feng支持的编码标准: 音频: MPEG Audio (MPEG-1/2 Layer I/II/III) (rfc2250) Vorbis (draft) AAC (MPEG-4 Part 3) (rfc3640) 视频: MPEG Video (MPEG-1/2) (rfc2250) MPEG… 更多Feng信息
DVB-C 调制器 mptsd
mptsd 从 UDP/多播 或者是 HTTP 接收 MPEGTS 流,并将这些数据库合并到一个多程序流,特别适合输出 DVB-C 调制器。 It has been tested with the Dektec DTE-3114 Quad QAM Modulator and it is used in production in couple of small DVB-C networks…. 更多mptsd信息
流媒体服务器 Babylon
babylon ======= 巴比伦流媒体服务器,目前只支持rtmp协议 #如何使用# ``` package main import ( “babylon/rtmp” log “github.com/cihub/seelog” “runtime” ) func main() { runtime.GOMAXPROCS(runtime.NumCPU()) l := “:1935” err := r… 更多Babylon信息
m9u
m9u 是一个类似于 MPD 和 XMMS2 的音乐服务器软件。 更多m9u信息
posted on 2017-08-23 15:41 DoubleLi 阅读(24263) 评论() 编辑 收藏
流媒体服务器
流媒体解决方案 Live555(C++)
流媒体平台框架 EasyDarwin(GO,国产精品)
实时流媒体播放服务器程序DarwinStreamingSrvr(C++)
流媒体实时传输开发包 jrtplib
多媒体处理工具 ffmpeg
多媒体编码工具包Libav
Flash流媒体服务器 Red5(Java)
流媒体服务器 Open Streaming Server(Java)
FMS流媒体服务器(Adobe,收费的)
Wowza流媒体服务器(Java)
开源流媒体平台FreeCast(Java)