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

站内搜索

搜索

活动公告

通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,资源失效请在帖子内回复要求补档,会尽快处理!
10-23 09:31

探索Void Linux系统架构设计之道从内核机制到系统调用的完整解析揭秘这款轻量级发行版的设计哲学

SunJu_FaceMall

3万

主题

884

科技点

3万

积分

白金月票

碾压王

积分
32759

立华奏

发表于 2025-9-2 23:10:01 | 显示全部楼层 |阅读模式

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

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

x
1. 引言

Void Linux是一个相对较新但备受关注的独立Linux发行版,以其简洁的设计、高效的性能和独特的系统架构而闻名。在众多Linux发行版中,Void Linux独树一帜,不遵循主流趋势,而是坚持自己的设计哲学,为用户提供了一个轻量级、高度可定制的操作系统体验。本文将深入探索Void Linux的系统架构设计,从内核机制到系统调用,全面解析这款轻量级发行版的设计哲学,帮助读者理解Void Linux为何能在众多发行版中脱颖而出。

2. Void Linux概述

Void Linux诞生于2008年,由Juan Romero Pardines创建,是一个独立开发的、滚动更新的Linux发行版。与其他主流发行版相比,Void Linux有以下几个显著特点:

• 滚动更新模式:Void Linux采用滚动更新模式,用户无需进行重大版本升级,系统始终保持最新状态。
• runit init系统:Void Linux使用runit作为其init系统,而不是广泛使用的systemd,这使得系统启动更快,管理更简单。
• XBPS包管理系统:Void Linux使用自己开发的XBPS(X Binary Package System)作为包管理系统,具有速度快、依赖关系处理准确等特点。
• 支持多种libc:Void Linux同时支持glibc和musl libc,用户可以根据需求选择适合的版本。
• 简洁的设计哲学:Void Linux遵循”KISS”(Keep It Simple, Stupid)原则,系统架构简洁明了,没有不必要的复杂性。

Void Linux的设计理念可以概括为:简洁、高效、灵活。它追求系统的最小化和性能的最大化,同时保持足够的灵活性,让用户能够根据自己的需求定制系统。

3. 系统架构设计

Void Linux的系统架构设计体现了其追求简洁和高效的理念。与其他主流发行版相比,Void Linux在多个方面都有其独特之处。

3.1 内核选择与定制

Void Linux默认使用Linux内核,并提供两种不同的libc版本:glibc和musl libc。用户可以根据自己的需求选择适合的版本:

• glibc版本:适合需要广泛兼容性的用户,特别是那些需要运行专有商业软件的用户。
• musl libc版本:适合追求轻量级和安全性的用户,musl libc是一个轻量级的C标准库,具有更好的安全性和更小的体积。

Void Linux的内核配置相对精简,移除了许多不必要的模块和功能,以提高系统的安全性和性能。同时,Void Linux也允许用户根据自己的需求重新编译内核,添加或移除特定功能。

3.2 init系统(runit)

Void Linux使用runit作为其init系统,这是其与其他现代Linux发行版最显著的区别之一。runit是一个轻量级的init系统,具有以下特点:

• 简单的设计:runit由三个主要部分组成:runsvdir、runsv和svlogd,每个部分都有明确的职责。
• 并行启动服务:runit可以并行启动服务,大大缩短系统启动时间。
• 服务监督:runit提供强大的服务监督功能,如果服务崩溃,它会自动重启服务。
• 简单的配置:runit的服务配置非常简单,通常只需要几个shell脚本。

与systemd相比,runit更加简洁、透明,易于理解和调试。它遵循UNIX哲学,每个组件只做一件事,并把它做好。

3.3 包管理系统(XBPS)

Void Linux使用自己开发的XBPS(X Binary Package System)作为包管理系统。XBPS是一个快速、高效、功能齐全的包管理系统,具有以下特点:

• 高速操作:XBPS的依赖解析和包安装速度非常快,即使在低性能硬件上也能表现出色。
• 准确的依赖处理:XBPS能够准确处理复杂的依赖关系,避免依赖冲突。
• 事务性操作:XBPS支持事务性操作,如果包安装过程中断,系统可以回滚到之前的状态。
• 简单的库接口:XBPS提供简单的C库接口,便于开发者创建前端工具。

XBPS的设计体现了Void Linux追求效率和简洁的理念,它不像其他包管理系统那样复杂,但功能却非常强大。

4. 内核机制详解

Void Linux的内核机制设计体现了其对性能和安全性的追求。下面我们将详细解析Void Linux的内核机制。

4.1 内核配置与优化

Void Linux的内核配置相对精简,移除了许多不必要的模块和功能。这种精简配置带来以下好处:

• 减少攻击面:较少的内核模块意味着较少的潜在安全漏洞。
• 提高性能:精简的内核可以减少内存占用和CPU开销。
• 加快启动速度:较少的内核模块意味着更快的初始化时间。

Void Linux的内核配置文件位于/usr/src/linux/.config,用户可以使用make menuconfig命令来修改内核配置。以下是一些Void Linux内核配置的关键部分:
  1. # 启用支持必要的文件系统
  2. CONFIG_EXT4_FS=y
  3. CONFIG_BTRFS_FS=y
  4. # 网络支持
  5. CONFIG_NET=y
  6. CONFIG_INET=y
  7. CONFIG_NETDEVICES=y
  8. # 禁用不必要的模块
  9. # CONFIG_SOUND is not set
  10. # CONFIG_FB is not set
  11. # CONFIG_HID is not set
复制代码

4.2 模块管理

Void Linux使用传统的模块管理方式,通过modprobe命令加载内核模块。与一些现代发行版不同,Void Linux不会自动加载所有可能的模块,而是根据需要手动加载。

Void Linux的模块配置文件位于/etc/modprobe.d/目录下,用户可以在这里创建自定义的模块配置。例如,要禁用某个模块,可以创建一个配置文件:
  1. # /etc/modprobe.d/blacklist.conf
  2. blacklist pcspkr
  3. blacklist snd_pcsp
复制代码

Void Linux还提供了void-linux包组,其中包含了一些常用的内核模块和固件,用户可以根据需要安装这些包组。

4.3 内核参数调优

Void Linux允许用户通过修改/etc/sysctl.conf文件来调整内核参数。以下是一些常见的内核参数调优示例:
  1. # /etc/sysctl.conf
  2. # 增加文件描述符限制
  3. fs.file-max = 100000
  4. # 网络参数调优
  5. net.core.rmem_max = 16777216
  6. net.core.wmem_max = 16777216
  7. net.ipv4.tcp_rmem = 4096 87380 16777216
  8. net.ipv4.tcp_wmem = 4096 65536 16777216
  9. net.ipv4.tcp_congestion_control = bbr
  10. # 虚拟内存参数调优
  11. vm.swappiness = 10
  12. vm.vfs_cache_pressure = 50
复制代码

Void Linux还提供了sysctl命令,允许用户临时修改内核参数,无需重启系统。例如:
  1. # 临时修改文件描述符限制
  2. sudo sysctl -w fs.file-max=100000
复制代码

5. 系统调用分析

系统调用是用户空间程序与内核交互的接口,Void Linux在这方面有其独特之处。下面我们将分析Void Linux的系统调用机制。

5.1 系统调用接口

Void Linux使用标准的Linux系统调用接口,与其他Linux发行版基本相同。系统调用通过软中断(int 0x80)或更高效的syscall指令触发。以下是一个简单的系统调用示例:
  1. #include <stdio.h>
  2. #include <unistd.h>
  3. #include <sys/syscall.h>
  4. int main() {
  5.     // 使用write系统调用输出字符串
  6.     const char *msg = "Hello, Void Linux!\n";
  7.     syscall(SYS_write, STDOUT_FILENO, msg, 19);
  8.    
  9.     return 0;
  10. }
复制代码

Void Linux的系统调用号定义在/usr/include/asm/unistd.h文件中,与其他Linux发行版保持一致。

5.2 与其他发行版的比较

虽然Void Linux使用标准的Linux系统调用接口,但其在系统调用处理上有一些优化:

• 更少的上下文切换:由于Void Linux使用runit而不是systemd,系统启动和运行过程中的上下文切换更少,提高了系统效率。
• 优化的系统调用路径:Void Linux的内核配置优化了一些系统调用路径,减少了系统调用的开销。
• musl libc的系统调用实现:对于使用musl libc的Void Linux版本,系统调用的实现更加轻量级,减少了不必要的开销。

以下是一个比较Void Linux(使用musl libc)与其他发行版(使用glibc)在系统调用性能上的简单测试:
  1. #include <stdio.h>
  2. #include <time.h>
  3. #include <unistd.h>
  4. int main() {
  5.     struct timespec start, end;
  6.     long long elapsed_ns;
  7.     int i;
  8.    
  9.     // 测试getpid系统调用的性能
  10.     clock_gettime(CLOCK_MONOTONIC, &start);
  11.     for (i = 0; i < 1000000; i++) {
  12.         getpid();
  13.     }
  14.     clock_gettime(CLOCK_MONOTONIC, &end);
  15.    
  16.     elapsed_ns = (end.tv_sec - start.tv_sec) * 1000000000LL + (end.tv_nsec - start.tv_nsec);
  17.     printf("getpid syscall time: %lld ns per call\n", elapsed_ns / 1000000);
  18.    
  19.     return 0;
  20. }
复制代码

在Void Linux(musl libc)上,这个测试通常会比在glibc系统上表现更好,因为musl libc的系统调用实现更加高效。

5.3 性能优化

Void Linux通过多种方式优化系统调用性能:

• VDSO(Virtual Dynamic Shared Object):Void Linux启用VDSO,将一些常用的系统调用(如gettimeofday、clock_gettime等)在用户空间实现,避免了上下文切换的开销。
• 更高效的系统调用约定:Void Linux(特别是musl libc版本)使用更高效的系统调用约定,减少了寄存器保存和恢复的开销。
• 内核参数调优:通过调整内核参数,优化系统调用的处理效率。

以下是一个查看VDSO信息的示例:
  1. # 查看进程的VDSO映射
  2. cat /proc/self/maps | grep vdso
  3. # 查看VDSO中提供的函数
  4. objdump -T /lib/ld-musl-x86_64.so.1 | grep -E "gettimeofday|clock_gettime|time"
复制代码

6. 软件包管理架构

Void Linux的软件包管理架构是其系统设计的核心部分,XBPS包管理系统体现了Void Linux追求效率和简洁的设计理念。

6.1 XBPS包管理系统

XBPS(X Binary Package System)是Void Linux的包管理系统,它是一个快速、高效、功能齐全的包管理系统。XBPS由以下几个主要组件组成:

• xbps-install:用于安装软件包
• xbps-remove:用于移除软件包
• xbps-query:用于查询软件包信息
• xbps-reconfigure:用于重新配置软件包
• xbps-src:用于从源码构建软件包

XBPS使用SQLite数据库来存储包信息,这使得依赖解析和包查询非常快速。以下是一些XBPS的基本使用示例:
  1. # 更新包数据库
  2. xbps-install -S
  3. # 安装软件包
  4. xbps-install -S package_name
  5. # 移除软件包
  6. xbps-remove -R package_name
  7. # 查询已安装的软件包
  8. xbps-query -l
  9. # 搜索软件包
  10. xbps-query -Rs keyword
  11. # 显示软件包信息
  12. xbps-query -R package_name
复制代码

6.2 二进制包与源码包

Void Linux同时提供二进制包和源码包,用户可以根据自己的需求选择使用:

• 二进制包:预编译的软件包,可以直接安装,适合大多数用户。
• 源码包:提供源代码和构建脚本,用户可以自行编译,适合需要自定义编译选项的用户。

Void Linux的源码包使用xbps-src工具管理,以下是一些基本的使用示例:
  1. # 克隆源码包仓库
  2. git clone https://github.com/void-linux/void-packages.git
  3. cd void-packages
  4. # 更新源码包
  5. ./xbps-src update
  6. # 构建软件包
  7. ./xbps-src pkg package_name
  8. # 安装本地构建的软件包
  9. xi ./hostdir/binpkgs/package_name-version_arch.xbps
复制代码

6.3 依赖处理机制

XBPS的依赖处理机制非常高效和准确,它能够处理复杂的依赖关系,避免依赖冲突。XBPS使用以下机制来处理依赖:

• 依赖图:XBPS构建一个完整的依赖图,确保所有依赖关系都被正确处理。
• 事务性操作:XBPS支持事务性操作,如果包安装过程中断,系统可以回滚到之前的状态。
• 冲突检测:XBPS能够检测并解决包之间的冲突。

以下是一个查看软件包依赖关系的示例:
  1. # 显示软件包的依赖关系
  2. xbps-query -R -x package_name
  3. # 显示依赖于指定软件包的包
  4. xbps-query -R -X package_name
  5. # 检查依赖关系问题
  6. xbps-install -n package_name
复制代码

7. 服务管理系统

Void Linux使用runit作为其init系统和服务管理器,这是其与其他现代Linux发行版最显著的区别之一。runit是一个轻量级、高效的服务管理器,体现了Void Linux追求简洁和效率的设计理念。

7.1 runit init系统

runit是一个UNIX风格的init系统,由三个主要部分组成:

• stage 1:系统启动的第一个阶段,负责挂载文件系统、设置环境变量等。
• stage 2:系统的主init进程,负责启动和管理服务。
• stage 3:系统关闭时执行,负责停止所有服务并卸载文件系统。

runit的设计非常简洁,整个init系统的代码量不到1000行,这使得它易于理解、审计和维护。与systemd相比,runit更加透明和可预测。

7.2 服务管理原理

runit的服务管理原理非常简单和直观:

• 服务目录:每个服务都有一个对应的目录,通常位于/etc/sv/下。
• 服务脚本:每个服务目录中包含一个run脚本,用于启动服务。
• 监督进程:runit为每个服务启动一个监督进程,负责监控服务的状态。

以下是一个简单的服务示例:
  1. # /etc/sv/sshd/run
  2. #!/bin/sh
  3. exec /usr/sbin/sshd -D
复制代码

要启用这个服务,只需创建一个符号链接:
  1. # 启用服务
  2. ln -s /etc/sv/sshd /var/service/
  3. # 检查服务状态
  4. sv status sshd
  5. # 停止服务
  6. sv stop sshd
  7. # 启动服务
  8. sv start sshd
  9. # 重启服务
  10. sv restart sshd
复制代码

runit还支持日志服务,每个服务可以有一个可选的log/run脚本,用于处理服务日志:
  1. # /etc/sv/sshd/log/run
  2. #!/bin/sh
  3. exec logger -t sshd -p daemon.info
复制代码

7.3 与systemd的比较

runit与systemd在设计理念上有很大不同:

• 复杂性:systemd是一个复杂的系统,包含许多功能,而runit专注于服务管理,保持简洁。
• 启动速度:runit通常比systemd启动更快,因为它并行启动服务,且没有复杂的依赖关系解析。
• 资源使用:runit使用的资源比systemd少得多,特别是在内存使用方面。
• 可预测性:runit的行为更加可预测,因为它遵循简单的规则,而systemd有许多复杂的特性可能导致不可预测的行为。

以下是一个简单的性能比较,测量系统启动时间:
  1. # 在systemd系统上
  2. systemd-analyze time
  3. # 在runit系统上
  4. # 查看启动时间
  5. ps -o etimes= -p 1
复制代码

8. 轻量级设计哲学

Void Linux的设计哲学可以概括为”简约而不简单”,它追求系统的最小化和性能的最大化,同时保持足够的灵活性,让用户能够根据自己的需求定制系统。

8.1 简约而不简单

Void Linux遵循”KISS”(Keep It Simple, Stupid)原则,系统架构简洁明了,没有不必要的复杂性。这种简约设计带来以下好处:

• 易于理解和维护:简洁的系统架构使得用户和开发者更容易理解系统的工作原理,也更容易维护和定制。
• 减少故障点:较少的组件和复杂性意味着较少的潜在故障点。
• 更高的安全性:简洁的代码和架构更容易审计,减少了潜在的安全漏洞。

然而,简约并不意味着功能缺失。Void Linux提供了所有必要的功能,只是实现方式更加简洁和高效。

8.2 速度与效率的追求

Void Linux在系统设计的各个方面都追求速度和效率:

• 快速启动:使用runit init系统,Void Linux的启动时间通常比其他发行版短得多。
• 高效的包管理:XBPS包管理系统非常快速,依赖解析和包安装速度远超许多其他包管理系统。
• 优化的内核:Void Linux的内核配置经过优化,移除了不必要的模块和功能,提高了系统性能。

以下是一个简单的性能测试,比较Void Linux和其他发行版的包管理速度:
  1. # 测试包安装速度
  2. time xbps-install -S package_name
  3. # 在其他发行版上
  4. time apt-get install package_name  # Debian/Ubuntu
  5. time pacman -S package_name        # Arch Linux
  6. time dnf install package_name      # Fedora
复制代码

8.3 定制性与灵活性

尽管Void Linux追求简约和高效,但它并不牺牲定制性和灵活性。相反,Void Linux提供了高度的定制性,让用户能够根据自己的需求定制系统:

• 多种libc选择:Void Linux同时支持glibc和musl libc,用户可以根据自己的需求选择适合的版本。
• 自定义内核:Void Linux允许用户根据自己的需求重新编译内核,添加或移除特定功能。
• 灵活的服务管理:runit服务管理系统非常灵活,用户可以轻松地创建和管理自定义服务。

以下是一个创建自定义服务的示例:
  1. # 创建自定义服务目录
  2. mkdir -p /etc/sv/myservice
  3. # 创建服务脚本
  4. cat > /etc/sv/myservice/run << 'EOF'
  5. #!/bin/sh
  6. exec 2>&1
  7. exec mydaemon --config /etc/myservice.conf
  8. EOF
  9. # 使脚本可执行
  10. chmod +x /etc/sv/myservice/run
  11. # 创建日志服务目录
  12. mkdir -p /etc/sv/myservice/log
  13. # 创建日志服务脚本
  14. cat > /etc/sv/myservice/log/run << 'EOF'
  15. #!/bin/sh
  16. exec logger -t myservice
  17. EOF
  18. # 使日志脚本可执行
  19. chmod +x /etc/sv/myservice/log/run
  20. # 启用服务
  21. ln -s /etc/sv/myservice /var/service/
复制代码

9. 实际应用案例

Void Linux的轻量级设计和高效性能使其在各种应用场景中都能表现出色。下面我们将介绍Void Linux在几个典型应用场景中的实际应用。

9.1 服务器环境应用

Void Linux的简洁设计和高效性能使其成为服务器环境的理想选择。以下是一些Void Linux在服务器环境中的应用案例:

• Web服务器:Void Linux可以作为高性能的Web服务器,运行Nginx、Apache等Web服务器软件。
• 数据库服务器:Void Linux可以作为数据库服务器,运行MySQL、PostgreSQL等数据库软件。
• 邮件服务器:Void Linux可以作为邮件服务器,运行Postfix、Dovecot等邮件服务器软件。

以下是一个在Void Linux上设置Nginx Web服务器的示例:
  1. # 安装Nginx
  2. xbps-install -S nginx
  3. # 创建Nginx配置文件
  4. cat > /etc/nginx/nginx.conf << 'EOF'
  5. user nginx;
  6. worker_processes auto;
  7. error_log /var/log/nginx/error.log;
  8. pid /run/nginx.pid;
  9. events {
  10.     worker_connections 1024;
  11. }
  12. http {
  13.     include /etc/nginx/mime.types;
  14.     default_type application/octet-stream;
  15.     sendfile on;
  16.     tcp_nopush on;
  17.     tcp_nodelay on;
  18.     keepalive_timeout 65;
  19.     types_hash_max_size 2048;
  20.     server {
  21.         listen 80;
  22.         server_name localhost;
  23.         location / {
  24.             root /usr/share/nginx/html;
  25.             index index.html index.htm;
  26.         }
  27.         error_page 500 502 503 504 /50x.html;
  28.         location = /50x.html {
  29.             root /usr/share/nginx/html;
  30.         }
  31.     }
  32. }
  33. EOF
  34. # 创建网站根目录和首页
  35. mkdir -p /usr/share/nginx/html
  36. cat > /usr/share/nginx/html/index.html << 'EOF'
  37. <!DOCTYPE html>
  38. <html>
  39. <head>
  40.     <title>Welcome to Void Linux!</title>
  41. </head>
  42. <body>
  43.     <h1>Welcome to Void Linux!</h1>
  44.     <p>If you see this page, the nginx web server is successfully installed and working.</p>
  45. </body>
  46. </html>
  47. EOF
  48. # 启用并启动Nginx服务
  49. ln -s /etc/sv/nginx /var/service/
  50. sv up nginx
  51. # 检查服务状态
  52. sv status nginx
  53. # 测试Web服务器
  54. curl http://localhost
复制代码

9.2 桌面环境使用

尽管Void Linux主要面向服务器和高级用户,但它也可以作为桌面操作系统使用。Void Linux支持多种桌面环境,包括XFCE、MATE、KDE Plasma等。

以下是一个在Void Linux上设置XFCE桌面环境的示例:
  1. # 安装XFCE桌面环境
  2. xbps-install -S xfce4 xfce4-goodies
  3. # 安装显示管理器
  4. xbps-install -S lightdm lightdm-gtk3-greeter
  5. # 启用显示管理器
  6. ln -s /etc/sv/lightdm /var/service/
  7. # 安装必要的字体
  8. xbps-install -S font-dejavu-ttf noto-fonts-ttf
  9. # 安装终端模拟器
  10. xbps-install -S xfce4-terminal
  11. # 安装文件管理器
  12. xbps-install -S thunar
  13. # 安装网络管理器
  14. xbps-install -S NetworkManager network-manager-applet
  15. ln -s /etc/sv/NetworkManager /var/service/
  16. sv up NetworkManager
  17. # 安装音频系统
  18. xbps-install -S alsa-utils pulseaudio pavucontrol
  19. # 安装浏览器
  20. xbps-install -S firefox
  21. # 重启系统以进入图形界面
  22. reboot
复制代码

9.3 嵌入式系统应用

Void Linux的轻量级设计使其非常适合嵌入式系统应用。Void Linux提供了musl libc版本,进一步减小了系统体积,适合资源受限的嵌入式设备。

以下是一个在嵌入式设备上使用Void Linux的示例:
  1. # 安装交叉编译工具链
  2. xbps-install -S cross-armv6l-linux-musleabihf
  3. xbps-install -S cross-armv7l-linux-musleabihf
  4. # 克隆Void Linux源码包仓库
  5. git clone https://github.com/void-linux/void-packages.git
  6. cd void-packages
  7. # 设置架构
  8. echo "ARCH=armv7l" >> etc/conf
  9. # 更新源码包
  10. ./xbps-src update
  11. # 构建基础系统
  12. ./xbps-src bootstrap
  13. ./xbps-src pkg base-system
  14. # 创建根文件系统
  15. mkdir -p /mnt/rootfs
  16. ./xbps-src -d /mnt/rootfs install base-system
  17. # 配置系统
  18. chroot /mnt/rootfs
  19. echo "void-arm" > /etc/hostname
  20. echo "TTYS[0-9]+="getty -L 115200 ttyS0 vt100"" >> /etc/sv/getty-ttyS0/conf
  21. ln -s /etc/sv/getty-ttyS0 /var/service/
  22. passwd root
  23. exit
  24. # 打包根文件系统
  25. cd /mnt
  26. tar -czf rootfs.tar.gz rootfs
复制代码

10. 总结与展望

Void Linux作为一个相对较新的Linux发行版,凭借其独特的设计理念和高效的系统架构,在Linux发行版中独树一帜。通过对Void Linux系统架构的深入探索,我们可以看到它在内核机制、系统调用、包管理和服务管理等方面都有其独特之处。

Void Linux的设计哲学可以概括为”简约而不简单”,它追求系统的最小化和性能的最大化,同时保持足够的灵活性,让用户能够根据自己的需求定制系统。这种设计理念使得Void Linux在服务器环境、桌面环境和嵌入式系统中都能表现出色。

未来,Void Linux有望继续发展其独特的系统架构,进一步优化系统性能和用户体验。随着更多用户和开发者认识到Void Linux的优势,它可能会在Linux发行版中占据更重要的位置。

总之,Void Linux是一款值得探索和使用的Linux发行版,它不仅提供了一个高效、可靠的操作系统,还展示了如何通过简洁的设计实现复杂的功能。对于追求系统性能和简约设计的用户来说,Void Linux无疑是一个优秀的选择。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

手机版|联系我们|小黑屋|TG频道|RSS |网站地图

Powered by Pixtech

© 2025-2026 Pixtech Team.

>