简体中文 繁體中文 English 日本語 Deutsch 한국 사람 بالعربية TÜRKÇE português คนไทย Français

站内搜索

搜索

活动公告

11-02 12:46
10-23 09:32
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,将及时处理!
10-23 09:31
10-23 09:28
通知:签到时间调整为每日4:00(东八区)
10-23 09:26

Gentoo Linux源码包编译方法全解析 提升系统性能与定制化能力

3万

主题

317

科技点

3万

积分

大区版主

木柜子打湿

积分
31893

财Doro三倍冰淇淋无人之境【一阶】立华奏小樱(小丑装)⑨的冰沙以外的星空【二阶】

发表于 2025-8-25 12:00:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
引言

Gentoo Linux是一个以高度可定制性和优化而著称的Linux发行版。与其他大多数预编译二进制包的发行版不同,Gentoo的核心特点是从源码编译软件包。这种独特的方法使得用户可以根据自己的硬件特性和需求对系统进行深度定制,从而实现最佳性能。本文将全面解析Gentoo Linux的源码包编译方法,帮助读者掌握提升系统性能与定制化能力的关键技术。

Gentoo Linux基础

Gentoo Linux的特点

Gentoo Linux以其灵活性和高度定制化而闻名,主要特点包括:

1. 源码编译:几乎所有软件都从源码编译,允许针对特定硬件优化
2. Portage包管理系统:强大的包管理系统,提供依赖关系解析和编译管理
3. USE标志:允许用户控制软件包的功能特性
4. 滚动更新:系统始终保持最新,无需周期性升级
5. 最小化安装:初始安装非常基础,用户按需构建系统

Portage包管理系统

Portage是Gentoo的包管理系统,它负责软件的安装、更新和卸载。Portage的核心组件包括:

• ebuilds:描述如何获取、编译和安装软件包的脚本
• emerge:Portage的命令行工具,用于执行包管理操作
• profile:系统范围的设置集合,定义基本的系统特性
• USE标志:控制软件包编译时包含哪些功能

Portage的工作原理是读取ebuild文件,根据USE标志和其他设置下载源码,然后按照预定义的步骤编译和安装软件。

准备工作

系统要求

在开始Gentoo的源码编译之旅前,确保系统满足以下基本要求:

1. 处理器:现代CPU(x86, x86_64, ARM等均可)
2. 内存:至少4GB RAM,推荐8GB或更多
3. 存储空间:至少20GB可用空间,推荐50GB或更多
4. 网络连接:稳定的互联网连接,用于下载源码

环境配置

首先需要安装一个基础的Gentoo系统。可以通过以下步骤完成:
  1. # 下载stage3 tarball
  2. wget https://bouncer.gentoo.org/fetch/root/all/releases/amd64/autobuilds/current-stage3-amd64/stage3-amd64-*.tar.xz
  3. # 解压到目标分区
  4. tar xpvf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner
  5. # 配置编译选项
  6. nano /etc/portage/make.conf
复制代码

/etc/portage/make.conf是Gentoo编译系统的核心配置文件,它定义了全局编译选项。以下是一个示例配置:
  1. # /etc/portage/make.conf
  2. # 设置通用编译选项
  3. COMMON_FLAGS="-O2 -pipe -march=native"
  4. CFLAGS="${COMMON_FLAGS}"
  5. CXXFLAGS="${COMMON_FLAGS}"
  6. FCFLAGS="${COMMON_FLAGS}"
  7. FFLAGS="${COMMON_FLAGS}"
  8. # 设置并行编译的线程数
  9. MAKEOPTS="-j5"
  10. # 设置USE标志
  11. USE="X gtk gnome kde alsa pulseaudio bluetooth dvd usb wifi"
  12. # 设置视频卡驱动
  13. VIDEO_CARDS="nvidia intel"
  14. # 设置语言
  15. L10N="en en-US zh zh-CN"
  16. LINGUAS="en en-US zh zh-CN"
  17. # 设置Gentoo镜像
  18. GENTOO_MIRRORS="https://mirrors.tuna.tsinghua.edu.cn/gentoo"
  19. # 设置接受许可证
  20. ACCEPT_LICENSE="* -@EULA"
复制代码

Portage树包含所有可用的软件包ebuild文件,需要定期同步:
  1. # 同步Portage树
  2. emerge --sync
  3. # 或者使用webrsync(适用于网络受限环境)
  4. emerge-webrsync
复制代码

基本编译流程

emerge命令基础

emerge是Gentoo的主要包管理工具,用于安装、更新和卸载软件包。以下是一些基本用法:
  1. # 安装软件包
  2. emerge app-text/evince
  3. # 搜索软件包
  4. emerge --search firefox
  5. # 查看软件包信息
  6. emerge --info app-text/evince
  7. # 更新系统
  8. emerge --update --deep --newuse @world
  9. # 卸载软件包
  10. emerge --unmerge app-text/evince
  11. # 清理不需要的依赖
  12. emerge --depclean
复制代码

理解USE标志

USE标志是Gentoo定制化的核心,它们控制软件包编译时包含哪些功能。例如:
  1. # 查看全局USE标志
  2. emerge --info | grep USE
  3. # 查看特定软件包的USE标志
  4. emerge --pretend --verbose app-text/evince
  5. # 临时设置USE标志安装软件包
  6. USE="-pdf" emerge app-text/evince
  7. # 永久设置软件包的USE标志
  8. echo "app-text/evince -pdf" >> /etc/portage/package.use/evince
复制代码

编译选项详解

CFLAGS和CXXFLAGS控制C和C++代码的编译选项。以下是一些常用选项:
  1. # 优化级别
  2. -O0:无优化(适合调试)
  3. -O1:基本优化
  4. -O2:推荐优化级别
  5. -O3:更激进的优化(可能增加编译时间和二进制大小)
  6. -Ofast:O3加上不严格遵守标准的优化(可能影响精度)
  7. # 架构特定优化
  8. -march=native:针对当前CPU优化
  9. -mtune=native:针对当前CPU调度优化
  10. # 其他有用选项
  11. -pipe:使用管道而不是临时文件加速编译
  12. -fomit-frame-pointer:省略帧指针(可提高性能但影响调试)
复制代码

MAKEOPTS控制并行编译的线程数,通常设置为CPU核心数加1:
  1. # 查看CPU核心数
  2. nproc
  3. # 设置MAKEOPTS(假设有4个核心)
  4. MAKEOPTS="-j5"
复制代码

实际编译示例

让我们以安装Firefox浏览器为例,展示完整的编译过程:
  1. # 首先查看Firefox的可用USE标志
  2. emerge --pretend --verbose www-client/firefox
  3. # 设置自定义USE标志(例如,启用wayland支持,禁用pulseaudio)
  4. echo "www-client/firefox wayland -pulseaudio" >> /etc/portage/package.use/firefox
  5. # 安装Firefox(这将从源码编译)
  6. emerge www-client/firefox
复制代码

编译过程可能需要较长时间,具体取决于硬件性能和软件包的复杂性。

高级编译技术

自定义ebuild

ebuild是Portage的核心,它定义了如何获取、编译和安装软件包。有时,我们需要修改现有ebuild或创建新的ebuild以满足特殊需求。

一个典型的ebuild文件结构如下:
  1. # Copyright 1999-2023 Gentoo Authors
  2. # Distributed under the terms of the GNU General Public License v2
  3. EAPI=8
  4. inherit desktop xdg
  5. DESCRIPTION="Mozilla Firefox Web Browser"
  6. HOMEPAGE="https://www.mozilla.com/firefox"
  7. SRC_URI="https://archive.mozilla.org/pub/firefox/releases/${PV}/source/firefox-${PV}.source.tar.xz"
  8. LICENSE="MPL-2.0 GPL-2 LGPL-2.1"
  9. SLOT="0"
  10. KEYWORDS="~amd64 ~x86"
  11. IUSE="wayland pulseaudio +gtk3"
  12. DEPEND="
  13.     >=sys-devel/gcc-9.1.0
  14.     gtk3? ( x11-libs/gtk+:3 )
  15.     wayland? ( dev-libs/wayland )
  16.     pulseaudio? ( media-sound/pulseaudio )
  17. "
  18. RDEPEND="${DEPEND}"
  19. src_configure() {
  20.     local myconf=(
  21.         $(use_enable wayland)
  22.         $(use_enable pulseaudio)
  23.         $(use_enable gtk3)
  24.     )
  25.     ./configure "${myconf[@]}"
  26. }
  27. src_compile() {
  28.     emake
  29. }
  30. src_install() {
  31.     emake DESTDIR="${D}" install
  32. }
复制代码

假设我们要创建一个自定义的Vim编辑器ebuild,添加一些额外的补丁:
  1. # 创建本地overlay
  2. mkdir -p /usr/local/portage/app-editors/vim
  3. cd /usr/local/portage/app-editors/vim
  4. # 复制官方ebuild作为基础
  5. cp /var/db/repos/gentoo/app-editors/vim/vim-9.0.0.ebuild .
  6. # 创建文件目录
  7. mkdir files
  8. # 添加自定义补丁到files目录
  9. cp /path/to/custom.patch files/
  10. # 修改ebuild
  11. vim vim-9.0.0.ebuild
复制代码

在ebuild中添加以下内容:
  1. # 在inherit语句后添加
  2. PATCHES=(
  3.     "${FILESDIR}/custom.patch"
  4. )
复制代码

然后生成manifest并安装:
  1. # 生成manifest
  2. ebuild vim-9.0.0.ebuild manifest
  3. # 安装自定义版本
  4. emerge =app-editors/vim-9.0.0
复制代码

使用自定义配置文件

Gentoo的配置文件(profiles)定义了系统的基础设置。我们可以创建自定义配置文件以满足特定需求:
  1. # 创建自定义配置目录
  2. mkdir -p /etc/portage/profile
  3. # 创建自定义配置文件
  4. echo "myprofile" > /etc/portage/profile/profile_name
  5. # 设置自定义USE标志
  6. echo "USE="custom_flag1 custom_flag2"" > /etc/portage/profile/make.defaults
  7. # 设置自定义包掩码
  8. echo "=app-misc/example-1.0" > /etc/portage/profile/package.mask
  9. # 应用自定义配置
  10. eselect profile set /etc/portage/profile
复制代码

使用ccache加速编译

ccache是一个编译缓存工具,可以显著加速重复编译:
  1. # 安装ccache
  2. emerge dev-util/ccache
  3. # 配置Portage使用ccache
  4. echo 'FEATURES="ccache"' >> /etc/portage/make.conf
  5. # 设置缓存大小
  6. echo 'CCACHE_SIZE="5G"' >> /etc/portage/make.conf
  7. # 查看ccache统计
  8. ccache -s
复制代码

使用distcc分布式编译

distcc允许多台计算机共同参与编译过程,大幅减少编译时间:
  1. # 安装distcc
  2. emerge sys-devel/distcc
  3. # 配置distcc
  4. echo 'FEATURES="distcc"' >> /etc/portage/make.conf
  5. echo 'MAKEOPTS="-j10"' >> /etc/portage/make.conf
  6. # 设置参与编译的主机
  7. echo "192.168.1.100 192.168.1.101" > /etc/distcc/hosts
  8. # 启动distcc服务
  9. rc-update add distccd default
  10. /etc/init.d/distccd start
复制代码

性能调优

针对CPU的优化

针对不同CPU架构,我们可以设置特定的编译标志以获得最佳性能:
  1. # Intel处理器
  2. # 对于Intel Core i系列处理器
  3. CFLAGS="-march=native -O2 -pipe -fomit-frame-pointer"
  4. # AMD处理器
  5. # 对于AMD Ryzen处理器
  6. CFLAGS="-march=native -O2 -pipe -fomit-frame-pointer"
  7. # ARM处理器
  8. # 对于ARM Cortex-A系列
  9. CFLAGS="-march=armv8-a+crc -mtune=cortex-a72 -O2 -pipe -fomit-frame-pointer"
复制代码

针对特定应用的优化

不同类型的应用需要不同的优化策略:
  1. # 对于CPU密集型应用(如科学计算)
  2. echo "sci-libs/openblas -openmp" >> /etc/portage/package.use/openblas
  3. CFLAGS="-march=native -O3 -ffast-math -funroll-loops"
  4. # 对于图形应用(如游戏)
  5. echo "media-libs/mesa -llvm" >> /etc/portage/package.use/mesa
  6. CFLAGS="-march=native -O2 -pipe"
  7. # 对于数据库应用
  8. echo "dev-db/postgresql -llvm" >> /etc/portage/package.use/postgresql
  9. CFLAGS="-march=native -O2 -pipe -fomit-frame-pointer"
复制代码

使用LTO和PGO优化

链接时优化(LTO)和配置文件引导优化(PGO)是两种高级优化技术:
  1. # 启用LTO
  2. echo 'LTO_FLAGS="-flto=auto"' >> /etc/portage/make.conf
  3. echo 'FEATURES="lto"' >> /etc/portage/make.conf
  4. # 对于支持PGO的软件包(如Firefox)
  5. echo 'www-client/firefox pgo' >> /etc/portage/package.use/firefox
复制代码

内核编译优化

Gentoo允许用户从源码编译Linux内核,提供最大灵活性:
  1. # 安装内核源码
  2. emerge sys-kernel/gentoo-sources
  3. # 配置内核
  4. cd /usr/src/linux
  5. make menuconfig
  6. # 或者使用genkernel自动配置
  7. emerge sys-kernel/genkernel
  8. genkernel --menuconfig all
  9. # 编译并安装内核
  10. make && make modules_install
  11. make install
复制代码

内核配置中的一些性能优化选项:
  1. # 启用CPU频率调节
  2. Processor type and features --->
  3.     [*] CPU Frequency scaling
  4.     [*]   CPU frequency translation statistics
  5.     [*]   'ondemand' cpufreq governor
  6. # 针对特定CPU优化
  7. Processor type and features --->
  8.     Processor family (Core 2/newer Xeon)  --->
  9.         (X) Core 2/newer Xeon
  10. # 启用Preemption模型提高响应性
  11. Kernel Features --->
  12.     Preemption Model (Preemptible Kernel (Low-Latency Desktop))  --->
  13.         (X) Preemptible Kernel (Low-Latency Desktop)
复制代码

定制化能力

创建自定义软件包

除了修改现有ebuild,我们还可以创建全新的软件包。以下是一个创建自定义软件包的示例:
  1. # 创建目录结构
  2. mkdir -p /usr/local/portage/app-misc/hello-world
  3. cd /usr/local/portage/app-misc/hello-world
  4. # 创建ebuild文件
  5. cat > hello-world-1.0.ebuild << 'EOF'
  6. # Copyright 2023 Your Name
  7. # Distributed under the terms of the GNU General Public License v2
  8. EAPI=8
  9. DESCRIPTION="A simple Hello World program"
  10. HOMEPAGE="https://example.com"
  11. SRC_URI="https://example.com/${P}.tar.gz"
  12. LICENSE="GPL-2"
  13. SLOT="0"
  14. KEYWORDS="~amd64 ~x86"
  15. DEPEND=""
  16. RDEPEND="${DEPEND}"
  17. src_install() {
  18.     dobin hello-world
  19.     einstalldocs
  20. }
  21. EOF
  22. # 创建源码包
  23. mkdir -p work/hello-world-1.0
  24. cd work/hello-world-1.0
  25. # 创建简单的Hello World程序
  26. cat > hello-world.c << 'EOF'
  27. #include <stdio.h>
  28. int main() {
  29.     printf("Hello, Gentoo World!\n");
  30.     return 0;
  31. }
  32. EOF
  33. # 创建Makefile
  34. cat > Makefile << 'EOF'
  35. CC=gcc
  36. CFLAGS=-Wall -O2
  37. hello-world: hello-world.c
  38.         $(CC) $(CFLAGS) -o hello-world hello-world.c
  39. clean:
  40.         rm -f hello-world
  41. install: hello-world
  42.         install -D hello-world $(DESTDIR)/usr/bin/hello-world
  43. EOF
  44. # 创建tarball
  45. cd ..
  46. tar czf hello-world-1.0.tar.gz hello-world-1.0
  47. mv hello-world-1.0.tar.gz /usr/local/portage/distfiles/
  48. # 生成manifest
  49. cd /usr/local/portage/app-misc/hello-world
  50. ebuild hello-world-1.0.ebuild manifest
  51. # 安装自定义软件包
  52. emerge hello-world
复制代码

使用本地overlay

本地overlay允许我们维护自定义软件包集合,而不影响主Portage树:
  1. # 创建本地overlay目录
  2. mkdir -p /usr/local/portage
  3. # 配置Portage使用本地overlay
  4. mkdir -p /etc/portage/repos.conf
  5. cat > /etc/portage/repos.conf/local.conf << 'EOF'
  6. [local]
  7. location = /usr/local/portage
  8. masters = gentoo
  9. auto-sync = no
  10. EOF
  11. # 更新Portage缓存
  12. emerge --sync
  13. # 验证overlay是否已添加
  14. emerge --info | grep repos
复制代码

使用二进制包

虽然Gentoo以源码编译著称,但有时使用二进制包可以提高效率:
  1. # 构建二进制包
  2. emerge --buildpkgonly app-office/libreoffice
  3. # 安装二进制包
  4. emerge --usepkgonly app-office/libreoffice
  5. # 从特定仓库安装二进制包
  6. emerge --getbinpkgonly --binpkg-respect-use app-office/libreoffice
复制代码

创建自定义stage3

高级用户可以创建自定义的stage3 tarball,包含预编译的软件包和配置:
  1. # 安装catalyst工具
  2. emerge dev-util/catalyst
  3. # 创建catalyst配置文件
  4. cat > /etc/catalyst/catalyst.conf << 'EOF'
  5. storedir="/var/tmp/catalyst"
  6. distdir="/usr/portage/distfiles"
  7. envscript="/etc/catalyst/env.sh"
  8. EOF
  9. # 创建stage3规范文件
  10. cat > /etc/catalyst/stage3.spec << 'EOF'
  11. subarch: amd64
  12. target: stage3
  13. version_stamp: custom-$(date +%Y%m%d)
  14. rel_type: default
  15. profile: default/linux/amd64/17.1
  16. snapshot: latest
  17. source_subpath: default/stage3-amd64-latest
  18. portage_confdir: /etc/catalyst/portage
  19. EOF
  20. # 构建自定义stage3
  21. catalyst -f /etc/catalyst/stage3.spec
复制代码

故障排除

常见编译错误及解决方案

1. 依赖关系问题
  1. # 错误示例
  2. emerge: there are no ebuilds built to satisfy ">=dev-libs/boost-1.74.0"
  3. # 解决方案
  4. emerge --update --deep --newuse @world
复制代码

1. USE标志冲突
  1. # 错误示例
  2. The following USE changes are necessary to proceed:
  3.   (see "package.use" in the portage(5) man page for more details)
  4. # required by app-office/libreoffice-7.2.5.2::gentoo[gtk]
  5. # required by libreoffice (argument)
  6. >=dev-libs/librevenge-0.0.4:0/0.0 librevenge
  7. # 解决方案
  8. echo ">=dev-libs/librevenge-0.0.4 librevenge" >> /etc/portage/package.use/librevenge
复制代码

1. 编译失败
  1. # 错误示例
  2. FAILED: app-office/libreoffice-7.2.5.2::gentoo
  3. ERROR: app-office/libreoffice-7.2.5.2::gentoo failed (compile phase)
  4. # 解决方案
  5. # 检查日志
  6. cat /var/tmp/portage/app-office/libreoffice-7.2.5.2/temp/build.log
  7. # 尝试减少优化级别
  8. echo "app-office/libreoffice -march=native" >> /etc/portage/package.use/libreoffice
  9. # 增加编译资源
  10. echo 'MAKEOPTS="-j2"' >> /etc/portage/make.conf
复制代码

恢复损坏的系统

当系统因编译错误而损坏时,可以采取以下措施:
  1. # 使用live CD启动系统
  2. # 挂载根分区
  3. mount /dev/sda1 /mnt/gentoo
  4. # 挂载必要文件系统
  5. mount --types proc /proc /mnt/gentoo/proc
  6. mount --rbind /sys /mnt/gentoo/sys
  7. mount --make-rslave /mnt/gentoo/sys
  8. mount --rbind /dev /mnt/gentoo/dev
  9. mount --make-rslave /mnt/gentoo/dev
  10. # 进入chroot环境
  11. chroot /mnt/gentoo /bin/bash
  12. source /etc/profile
  13. export PS1="(chroot) ${PS1}"
  14. # 重新安装关键软件包
  15. emerge --emptytree --usepkg=n sys-apps/portage
  16. emerge --emptytree --usepkg=n sys-kernel/gentoo-sources
  17. emerge --emptytree --usepkg=n sys-devel/gcc
复制代码

使用安全模式恢复

当系统无法正常启动时,可以使用安全模式:
  1. # 在启动菜单添加内核参数
  2. gentoo init=/bin/bash
  3. # 挂载文件系统
  4. mount -o remount,rw /
  5. # 检查和修复软件包
  6. emerge --config sys-libs/glibc
  7. emerge --config sys-devel/gcc
  8. revdep-rebuild
复制代码

最佳实践

维护编译系统

1. 定期更新系统
  1. # 同步Portage树
  2. emerge --sync
  3. # 更新系统
  4. emerge --update --deep --newuse @world
  5. # 清理不需要的依赖
  6. emerge --depclean
  7. # 重建已改变的软件包
  8. revdep-rebuild
复制代码

1. 监控磁盘空间
  1. # 清理下载的源码
  2. eclean-dist --deep
  3. # 清理二进制包
  4. eclean-pkg --deep
  5. # 清理临时文件
  6. rm -rf /var/tmp/portage/*
复制代码

1. 备份关键配置
  1. # 备份Portage配置
  2. tar czf portage-config-backup.tar.gz /etc/portage
  3. # 备份已安装软件包列表
  4. qlist -I > installed-packages.txt
复制代码

优化编译策略

1. 使用二进制包混合策略
  1. # 对大型软件包使用二进制包
  2. echo 'app-office/libreoffice binary' >> /etc/portage/package.accept_keywords/libreoffice
  3. echo 'app-office/libreoffice -gtk' >> /etc/portage/package.use/libreoffice
  4. # 对系统关键组件从源码编译
  5. echo 'sys-libs/glibc -binary' >> /etc/portage/package.accept_keywords/glibc
复制代码

1. 使用并行编译和分布式编译
  1. # 设置合适的MAKEOPTS
  2. echo "MAKEOPTS="-j$(($(nproc)+1))"" >> /etc/portage/make.conf
  3. # 启用distcc
  4. echo 'FEATURES="distcc"' >> /etc/portage/make.conf
  5. echo "DISTCC_HOSTS="localhost 192.168.1.100 192.168.1.101"" >> /etc/portage/make.conf
复制代码

1. 使用编译缓存
  1. # 启用ccache
  2. echo 'FEATURES="ccache"' >> /etc/portage/make.conf
  3. echo 'CCACHE_SIZE="10G"' >> /etc/portage/make.conf
复制代码

安全考虑

1. 验证源码完整性
  1. # 启用GPG验证
  2. echo 'FEATURES="sign"' >> /etc/portage/make.conf
  3. # 设置GPG密钥
  4. gpg --recv-keys 0x1234567890ABCDEF
  5. echo 'PORTAGE_GPG_KEY="0x1234567890ABCDEF"' >> /etc/portage/make.conf
复制代码

1. 使用沙盒保护
  1. # 启用沙盒功能
  2. echo 'FEATURES="sandbox"' >> /etc/portage/make.conf
  3. # 限制用户特权
  4. echo 'FEATURES="usersandbox"' >> /etc/portage/make.conf
复制代码

1. 定期审计系统
  1. # 检查文件完整性
  2. emerge --check app-admin/checksecurity
  3. # 扫描恶意软件
  4. emerge app-antivirus/clamav
  5. freshclam
  6. clamscan -r /
复制代码

总结

Gentoo Linux的源码包编译方法提供了无与伦比的系统定制化和性能优化能力。通过掌握Portage包管理系统、USE标志、编译选项调优、自定义ebuild创建等关键技术,用户可以构建一个完全符合其需求和硬件特性的高效系统。

虽然从源码编译软件需要更多的时间和计算资源,但这种方法带来的性能提升和定制化能力是其他Linux发行版难以比拟的。通过本文介绍的各种技术和最佳实践,用户可以充分发挥Gentoo Linux的潜力,打造一个既高效又个性化的计算环境。

无论是追求极致性能的发烧友,还是需要高度定制化系统的专业用户,Gentoo Linux都能提供理想的解决方案。通过不断学习和实践,您将能够充分利用Gentoo的强大功能,真正实现”按需构建”的Linux系统。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

频道订阅

频道订阅

加入社群

加入社群

联系我们|TG频道|RSS

Powered by Pixtech

© 2025 Pixtech Team.