Files
My-Blog/public/awesome-vm-android/index.html
2025-07-21 09:54:11 +08:00

451 lines
23 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<title>Dich&#x27;blog</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://blog.dich.bid/style.css">
<link rel="stylesheet" href="https://blog.dich.bid/color/blue.css">
<link rel="stylesheet" href="https://blog.dich.bid/color/background_dark.css">
<link rel="stylesheet" href="https://blog.dich.bid/font-hack-subset.css">
<meta name="description" content="">
<meta property="og:description" content="">
<meta property="og:title" content="Dich'blog">
<meta property="og:type" content="article">
<meta property="og:url" content="https://blog.dich.bid/awesome-vm-android/">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:description" content="">
<meta name="twitter:title" content="Dich'blog">
<meta property="twitter:domain" content="blog.dich.bid">
<meta property="twitter:url" content="https://blog.dich.bid/awesome-vm-android/">
<link rel="alternate" type="application/atom+xml" title="Dich&#x27;blog Atom Feed" href="https://blog.dich.bid/atom.xml" />
<link rel="icon" type="image/png" href=&#x2F;dich.webp />
<!-- ✅ Added center alignment styles -->
<style>
.footer {
text-align: center;
padding: 1rem 0;
}
.footer__inner {
display: flex;
justify-content: center;
flex-direction: column;
align-items: center;
}
.copyright {
text-align: center;
}
</style>
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://blog.dich.bid" style="text-decoration: none;">
<div class="logo">
Dich&#x27;blog
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li class="active"><a href="https://blog.dich.bid">blog</a></li>
<li><a href="https://blog.dich.bid/archive">archive</a></li>
<li><a href="https://blog.dich.bid/tags">tags</a></li>
<li><a href="https://blog.dich.bid/weekly">weekly</a></li>
<li><a href="https://blog.dich.bid/search">search</a></li>
<li><a href="https://blog.dich.bid/about">about me</a></li>
<li><a href="https://blog.dich.bid/links">links</a></li>
<li><a href="https://blog.dich.bid/atom.xml">rss</a></li>
<li><a href="https://github.com/Dichgrem" target="_blank" rel="noopener noreferrer">github</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title"><a href="https://blog.dich.bid/awesome-vm-android/">综合工程:linux搭建安卓虚拟机</a></h1>
<div class="post-meta-inline">
<span class="post-date">
2023-08-10
</span>
</div>
<span class="post-tags-inline">
:: tags:&nbsp;
<a class="post-tag" href="https://blog.dich.bid/tags/zong-he-gong-cheng/">#综合工程</a></span>
<div class="post-content">
<p>前言 linux搭建安卓虚拟机有WaydroidQEMU和Docker三种方案各有不同。</p>
<span id="continue-reading"></span><h1 id="waydroid">Waydroid</h1>
<p>Waydroid是Anbox配合Halium技术开发的LXC Android容器可在GNU/Linux系统执行Android APP。以下是Waydroid的特色功能</p>
<ul>
<li>开源</li>
<li>支持x86与ARM架构</li>
<li>与宿主机共用剪切板</li>
<li>直接使用电脑显卡硬件加速</li>
<li>內建GAPPS可以使用Google Play</li>
<li>支持Magisk</li>
</ul>
<blockquote>
<p>Waydroid执行时的Android系统资料放在<code>~/.local/share/waydroid/data/</code>,系统映像档位于<code>/var/lib/waydroid</code>APP图示位于<code>~/.local/share/applications/</code></p>
</blockquote>
<h2 id="an-zhuang-qian-zhun-bei">安装前准备</h2>
<p>目前Waydroid只支持Intel和AMD的显卡对于 NVIDIA 显卡(除 Tegra 系列外Waydroid 不支持硬件加速推荐使用软件渲染或QEMU方案。</p>
<ul>
<li>Waydroid必须使用Wayland用此命令检查当前系统是否为Wayland</li>
</ul>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>echo $XDG_SESSION_TYPE
</span></code></pre>
<p>若显示X11代表不是Wayland。GNOME和KDE可在登入画面切换至Wayland工作阶段。</p>
<ul>
<li>Waydroid要求Linux核心支持binder核心模组但Arch Linux预设的linux核心並无开启此选项因此需要从AUR安装binder_linux-dkms补齐。</li>
</ul>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>paru -S binder_linux-dkms
</span></code></pre>
<ul>
<li>安装后载入binder核心模组</li>
</ul>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>sudo modprobe binder-linux devices=binder,hwbinder,vndbinder
</span></code></pre>
<ul>
<li>设定开机自动载入核心模组</li>
</ul>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>echo &quot;binder_linux&quot; | sudo tee -a /etc/modules-load.d/binder_linux.conf
</span><span>
</span><span>echo &quot;options binder_linux devices=binder,hwbinder,vndbinder&quot; | sudo tee -a /etc/modprobe.d/binder_linux.conf
</span></code></pre>
<h2 id="an-zhuang-waydroid">安装Waydroid</h2>
<ul>
<li>安装以下软件包让Linux与Waydroid共享剪切板</li>
</ul>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>paru -S wl-clipboard xclip
</span><span>paru -S python-pyclip
</span></code></pre>
<ul>
<li>安装Waydroid</li>
</ul>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>paru -S waydroid
</span></code></pre>
<ul>
<li>初始化Waydroid下载含有GAPPS的Android系统映像档</li>
</ul>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>sudo waydroid init -s GAPPS -f
</span></code></pre>
<ul>
<li>启动Waydroid容器服务</li>
</ul>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>sudo systemctl start waydroid-container
</span></code></pre>
<h2 id="chang-yong-ming-ling">常用命令</h2>
<ul>
<li>开机自动启动</li>
</ul>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>sudo systemctl enable waydroid-container
</span></code></pre>
<ul>
<li>点选应用列表的「Waydroid」图示开启主画面或者使用命令</li>
</ul>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>waydroid show-full-ui
</span></code></pre>
<ul>
<li>若Waydroid无法连上网路开放UFW防火墙</li>
</ul>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>sudo ufw allow 53
</span><span>sudo ufw allow 67
</span><span>sudo ufw default allow FORWARD
</span><span>sudo ufw reload
</span><span>sudo systemctl restart waydroid-container
</span></code></pre>
<ul>
<li>重启Waydroid</li>
</ul>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>sudo systemctl restart waydroid-container
</span></code></pre>
<ul>
<li>启动/停止Waydroid容器服务</li>
</ul>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>sudo systemctl start waydroid-container
</span><span>sudo systemctl stop waydroid-container
</span></code></pre>
<ul>
<li>用命令开启Waydroid主画面</li>
</ul>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>waydroid show-full-ui
</span></code></pre>
<ul>
<li>查看系统错误讯息</li>
</ul>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>waydroid log
</span><span>sudo waydroid logcat
</span></code></pre>
<ul>
<li>强制屏幕旋转</li>
</ul>
<p>安装Rotation Control这类APP即可强制调整Waydroid屏幕方向.</p>
<ul>
<li>模拟Wifi</li>
</ul>
<p>安装Package Manager用於查看APP的软件包名称。</p>
<p>部份APP会要求开启Wifi才能上网那么就如它所愿开启fake wifi</p>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>waydroid prop set persist.waydroid.fake_wifi &quot;软件包名称&quot;
</span></code></pre>
<p>例如给Fate/Go游戏开启模拟Wifi</p>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>waydroid prop set persist.waydroid.fake_wifi &quot;com.aniplex.fategrandorder&quot;
</span></code></pre>
<ul>
<li>模拟触控功能</li>
</ul>
<p>安装Package Manager用於查看APP的软件包名称。有些APP认不到鼠标点击需要启用模拟触控(fake touch)</p>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>waydroid prop set persist.waydroid.fake_touch &quot;软件包名称&quot;
</span></code></pre>
<p>例如给Fate/Go游戏开启模拟触控</p>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>waydroid prop set persist.waydroid.fake_touch &quot;com.aniplex.fategrandorder&quot;
</span></code></pre>
<ul>
<li>用命令安装APK</li>
</ul>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>waydroid app install &lt;APK档案路径&gt;.apk
</span></code></pre>
<ul>
<li>进入ADB Shell</li>
</ul>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>sudo waydroid shell
</span></code></pre>
<ul>
<li>开启多视窗模式</li>
</ul>
<p>Waydroid的多视窗模式看起来像Linux的原生应用。启动后按F11改回来。</p>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>waydroid prop set persist.waydroid.multi_windows true
</span><span>sudo systemctl restart waydroid-container
</span></code></pre>
<h2 id="jiang-waydroidzhu-ce-wei-googlezhuang-zhi">将Waydroid注册为Google装置</h2>
<p>Waydroid第一次开机可能会收到<code>Device is not Play Protect certified</code>的通知无法登入Google账号。</p>
<p>用以下命令取得Waydroid的装置ID。该命令会印出一长串数字。</p>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>sudo waydroid shell
</span><span>
</span><span>ANDROID_RUNTIME_ROOT=/apex/com.android.runtime ANDROID_DATA=/data ANDROID_TZDATA_ROOT=/apex/com.android.tzdata ANDROID_I18N_ROOT=/apex/com.android.i18n sqlite3 /data/data/com.google.android.gsf/databases/gservices.db &quot;select * from main where name = \&quot;android_id\&quot;;&quot;
</span></code></pre>
<p>开启装置注册页面登入Google账号输入装置ID注册等个半小时应该就能登入Google账号了。如果还是不行就重新启动Waydroid容器服务</p>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>sudo systemctl restart waydroid-container
</span></code></pre>
<p>现在可以安装APP了Google Play和F-Droid会自动筛出適合x86架构的APP。</p>
<h1 id="qemu-kvm">QEMU/KVM</h1>
<h2 id="gai-shu">概述</h2>
<p>Bliss OS 是基于 Android-x86 的开源系统,已更新至 Android 13并内建 Google Play 商店,可直接运行 64 位 APK无需额外转译器在 Linux 上通过 QEMU/KVM + virglrenderer 实现 GPU 加速,使得在虚拟机中也能流畅体验手游。</p>
<h2 id="wei-shen-me-xuan-ze-bliss-os">为什么选择 Bliss OS</h2>
<ul>
<li><strong>版本更新快</strong>Bliss OS 最新测试版基于 Android 13而 Android-x86 官方仅更新至 Android 9。</li>
<li><strong>更完善的 ARM 转译</strong>:采用 Google libndk可兼容 64 位 ARM-v8a APK相比仅支持 32 位 ARM-v7 的 liboudini兼容性大幅提升。</li>
<li><strong>丰富实用功能</strong>预装强制旋转、按键映射、游戏模式、模拟触控点击、KernelSU难以检测的 root 权限)和 Gearlock 恢复环境等增强工具,提升桌面化体验。</li>
</ul>
<h2 id="huan-jing-zhun-bei">环境准备</h2>
<ul>
<li><strong>硬件要求</strong>CPU 要开启 <code>VT-x/AMD-V</code>,并加载 KVM 内核模块Intel 10 代及更新集成 GPU 可用AMD 同理;闭源 Nvidia 驱动下 virglrenderer 不稳定,不建议使用硬件加速。</li>
<li><strong>软件安装</strong>:在宿主机上安装 QEMU (≥8.1.1)、Libvirt、Virt-Manager并部署 virglrenderer (≥0.10.4) 以获得半虚拟化 3D 加速Ubuntu 与 Arch 安装方法分别见官方文档。</li>
<li><strong>性能调优</strong>:可参考 Red Hat 虚拟化性能调优指南,启用 IOMMU、调整 CPU 调度与内存缓存策略,以提升 KVM 性能。</li>
</ul>
<h2 id="an-zhuang-liu-cheng-yu-fen-qu">安装流程与分区</h2>
<ol>
<li>从官方站点下载带 GApps 的 Bliss OS 15.x ISO 镜像,并在 Virt-Manager 中新建虚拟机,选择 <code>Q35 芯片组、UEFI (OVMF)</code></li>
<li>推荐分配 ≥8 GB RAM、4 核 CPU 及 ≥64 GB 虚拟硬盘,并勾选 OpenGL、VirtIO 显示卡 + 3D 加速。</li>
<li>进入 Bliss OS 安装器,使用 GPT 分区表:
<ul>
<li>首分区 512 MB类型 EFI (<code>ef00</code>),挂载点 <code>/mnt/efi</code></li>
<li>次分区 全盘剩余空间格式化为 Ext4用于系统安装。</li>
</ul>
</li>
<li>安装 GRUB、格式化分区后强制关机移除 ISO 并重启,即可启动已启用 virglrenderer 加速的系统。</li>
</ol>
<h2 id="fen-bian-lu-diao-zheng">分辨率调整</h2>
<ul>
<li>启动时选择 “Debug QEMU/KVM VirGL” 进入 shell通过 <code>blkid</code> 找到 EFI 分区(如 <code>/dev/sda1</code>),挂载后编辑 <code>/mnt/efi/boot/android.cfg</code>
<ul>
<li><code>linux $kd/kernel</code> 行末添加 <code>video=1920x1080</code></li>
<li>修改 <code>set gfxmode=</code> 为相应分辨率,保存并重启即可生效。</li>
</ul>
</li>
<li>如需更灵活调整,可在系统内安装 SecondScreen 等第三方工具强制改分辨率。</li>
</ul>
<h2 id="xi-tong-shi-yong-ji-qiao">系统使用技巧</h2>
<ul>
<li>默认启用 Boringdroid 桌面模式,底部常驻任务栏;可在设置里为特定应用强制全屏运行。</li>
<li>强制旋转:内置 Set Orientation 或使用更佳的 OHMAE Ryosuke 工具;屏幕录制推荐宿主机通过 OBS 采集 VM 窗口。</li>
<li>多窗口开发者选项启用“自由形式窗口”Root 需在 KernelSU 中对指定应用授权Termux 可提供终端环境。</li>
<li>ADB 调试:可通过无线 ADB 连接,并在 shell 中为 <code>com.android.shell</code> 授予 Root 权限。</li>
</ul>
<h2 id="shou-you-shi-ce">手游实测</h2>
<ul>
<li>优先安装原生 x86 版游戏,减少 ARM 转译开销多游戏如《水果忍者》、《Temple Run 2》均能流畅运行。</li>
<li>部分大型游戏(如《原神》)因 virglrenderer 不稳定在着色器编译时易崩溃;《幻塔》可正常进入并游玩。</li>
<li>若触控事件不响应,可启用 “Force Mouse Click as touch” 强制映射鼠标点击,但会导致滚轮失效;开启“游戏模式”可屏蔽通知并悬浮截屏。</li>
</ul>
<h1 id="docker">Docker</h1>
<h2 id="gai-shu-1">概述</h2>
<p>ReDroidRemote-Android是一款开源的容器化 Android 解决方案,支持在 x86 主机通过 Docker、Podman 或 Kubernetes 启动多实例 Android 系统,并提供 GPU 加速与多架构arm64/amd64支持适用于云端游戏、自动化测试、虚拟手机等场景。本文从环境准备、部署配置、日常使用及进阶定制等方面逐步讲解如何在 Linux 主机上用 Docker 容器运行并优化 ReDroid使其能够流畅运行 ARM 架构的手游。</p>
<h2 id="shen-me-shi-redroid">什么是 ReDroid</h2>
<ul>
<li><strong>项目简介</strong>ReDroid 即 Remote-Android是一个多架构、GPU 加速的“Android In Cloud”AIC方案可在任何具备必要内核特性如 binderfs的 Linux 主机上部署 Android 容器。</li>
<li><strong>版本支持</strong>:活跃维护 Android 1115 多个版本的镜像,并提供丰富的文档与社区支持。</li>
<li><strong>应用场景</strong>:适用于云游戏、自动化测试、连续集成中的 UI 测试、远程开发等多种场景。</li>
</ul>
<h2 id="huan-jing-yu-yi-lai">环境与依赖</h2>
<ul>
<li><strong>内核模块</strong>:宿主机需开启 <code>binderfs</code><code>ashmem</code> 等内核模块,部分发行版可能需安装 <code>redroid-modules</code></li>
<li><strong>GPU 加速</strong>:推荐使用 Intel/AMD 集成 GPU避免闭源 NVIDIA 驱动下的不稳定性;也可在云端 GPU 实例上部署。</li>
<li><strong>软件需求</strong>:安装 Docker / Docker Compose或 Podman、ADBAndroid Debug Bridge和 Scrcpy用于容器管理与远程调试、画面传输。</li>
<li><strong>硬件配置</strong>8 GB 及以上内存、四核及以上 CPU、至少 20 GB 存储;若运行高负载游戏,推荐更高配置并开启 GPU 硬件加速。</li>
</ul>
<h2 id="bu-shu-yu-pei-zhi">部署与配置</h2>
<ol>
<li><strong>创建目录与编写 Compose 文件</strong><pre data-lang="bash" style="background-color:#151515;color:#e8e8d3;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#ffb964;">mkdir ~</span><span>/redroid &amp;&amp; cd </span><span style="color:#ffb964;">~</span><span>/redroid
</span><span style="color:#ffb964;">vim</span><span> docker-compose.yml
</span></code></pre>
</li>
<li><strong>示例 <code>docker-compose.yml</code></strong><pre data-lang="yaml" style="background-color:#151515;color:#e8e8d3;" class="language-yaml "><code class="language-yaml" data-lang="yaml"><span style="color:#ffb964;">version</span><span>: </span><span style="color:#556633;">&#39;</span><span style="color:#99ad6a;">3.8</span><span style="color:#556633;">&#39;
</span><span style="color:#ffb964;">services</span><span>:
</span><span> </span><span style="color:#ffb964;">redroid</span><span>:
</span><span> </span><span style="color:#ffb964;">image</span><span>: </span><span style="color:#99ad6a;">redroid/redroid:11.0.0_gapps
</span><span> </span><span style="color:#ffb964;">stdin_open</span><span>: true
</span><span> </span><span style="color:#ffb964;">tty</span><span>: true
</span><span> </span><span style="color:#ffb964;">privileged</span><span>: true
</span><span> </span><span style="color:#ffb964;">ports</span><span>:
</span><span> - </span><span style="color:#556633;">&quot;</span><span style="color:#99ad6a;">127.0.0.1:5555:5555</span><span style="color:#556633;">&quot;
</span><span> </span><span style="color:#ffb964;">volumes</span><span>:
</span><span> - </span><span style="color:#99ad6a;">./redroid-11-data:/data
</span><span> </span><span style="color:#ffb964;">command</span><span>:
</span><span> - </span><span style="color:#99ad6a;">androidboot.redroid_width=720
</span><span> - </span><span style="color:#99ad6a;">androidboot.redroid_height=1280
</span><span> - </span><span style="color:#99ad6a;">androidboot.redroid_dpi=320
</span><span> - </span><span style="color:#99ad6a;">androidboot.redroid_fps=60
</span><span> - </span><span style="color:#99ad6a;">androidboot.redroid_gpu_mode=host
</span><span> - </span><span style="color:#99ad6a;">ro.product.cpu.abilist0=x86_64,arm64-v8a,x86,armeabi-v7a,armeabi
</span><span> - </span><span style="color:#99ad6a;">ro.enable.native.bridge.exec=1
</span><span> - </span><span style="color:#99ad6a;">ro.dalvik.vm.native.bridge=libndk_translation.so
</span></code></pre>
</li>
<li><strong>启动容器</strong><pre data-lang="bash" style="background-color:#151515;color:#e8e8d3;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#ffb964;">sudo</span><span> docker compose up</span><span style="color:#ffb964;"> -d
</span></code></pre>
</li>
</ol>
<h2 id="ri-chang-shi-yong">日常使用</h2>
<ul>
<li><strong>ADB 连接与屏幕镜像</strong><pre data-lang="bash" style="background-color:#151515;color:#e8e8d3;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#ffb964;">adb</span><span> connect localhost:5555
</span><span style="color:#ffb964;">scrcpy -s</span><span> localhost:5555</span><span style="color:#ffb964;"> --audio-codec</span><span>=aac
</span></code></pre>
</li>
<li><strong>安装 APK</strong>
<ul>
<li>使用 <code>adb install your_app.apk</code></li>
<li>或在 Scrcpy 界面中拖拽 APK 文件进行安装</li>
</ul>
</li>
<li><strong>停止与重启</strong><pre data-lang="bash" style="background-color:#151515;color:#e8e8d3;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#ffb964;">sudo</span><span> docker compose down
</span><span style="color:#ffb964;">sudo</span><span> docker compose up</span><span style="color:#ffb964;"> -d
</span></code></pre>
</li>
<li><strong>数据持久化</strong>:所有数据保存在 <code>~/redroid/redroid-11-data</code>,可备份或运行多实例。</li>
</ul>
<h2 id="gao-ji-cao-zuo-yu-an-quan-jian-yi">高级操作与安全建议</h2>
<ul>
<li><strong>Google Play 验证</strong>:首次登录 Play Store 需获取设备 ID 并在 Google 控制台注册后重启容器。</li>
<li><strong>3D 加速检测</strong>:通过 AIDA64 等应用验证 GPU 加速是否生效。</li>
<li><strong>网络安全</strong>:只绑定本地回环地址监听 ADB 端口;如需外网访问,务必配置防火墙规则,避免安全风险。</li>
</ul>
<h2 id="ding-zhi-jing-xiang-yu-gapps">定制镜像与 GApps</h2>
<ul>
<li><strong>安装 GApps</strong>:下载 OpenGApps x86_64 Android 11 Pico 包,将其中 APK 拷贝到自建镜像的 <code>system</code> 目录,再在容器内推送并授权。</li>
<li><strong>自定义 libndk</strong>:从 Android Studio 模拟器提取 Google 官方 ARM 翻译库libndk在 Dockerfile 中加入到基于 <code>redroid:13.0.0-latest</code> 的自定义镜像,提升兼容性与性能。</li>
</ul>
<hr />
<p>🔗</p>
<p><a href="https://ivonblog.com/posts/install-bliss-os-on-msi-modern-15-a10/">如何在Linux安裝Bliss OS</a></p>
<hr />
<p><strong>Done.</strong></p>
</div>
<div class="pagination">
<div class="pagination__title">
<span class="pagination__title-h">Thanks for reading! Read other posts?</span>
<hr />
</div>
<div class="pagination__buttons">
<span class="button next">
<a href="https://blog.dich.bid/awesome-pve-mcsm/">
<span class="button__text">综合工程:PVE安装与MC服务器搭建</span>&nbsp;
<span class="button__icon"></span>
</a>
</span>
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright">
<span>©
2025
Dichgrem</span>
<span class="copyright-theme">
<span class="copyright-theme-sep"> :: CC BY-SA 4.0 :: A friend comes from distant lands</span>
</a>
</span>
</div>
</div>
</footer>
</div>
</body>
</html>