在折腾 Homelab 时,使用 Ubuntu Live CD 环境作为跳板,通过 debootstrap 编织 Debian 基础系统再转行安装 PVE 是一种极为硬核且高成功率的方案。

本文将基于单机械硬盘 硬件平台,提供一份中国大陆网络环境优化版部署指南。

部署总流程概览

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Ubuntu Live 环境引导
↓ [联网与换源]
环境准备 (安装 debootstrap/gdisk)

磁盘 GPT 分区与格式化

debootstrap 部署 Debian Bookworm 核心

挂载并 chroot 进入新系统

安装 Linux 内核、GRUB 引导与基础组件

配置国内 PVE 软件源与 GPG 密钥

安装 Proxmox VE 核心组件

退出、重启并进入 PVE Web 界面

第一阶段:环境准备

进入 Ubuntu Live 桌面或纯文本环境后,调出终端执行以下操作。

1. 验证网络与配置 DNS

确保网络畅通。由于后续需要大量下载包,建议将 DNS 显式修改为国内公共 DNS:

1
2
# 修改 Ubuntu Live 的 DNS 保证解析速度
sudo nano /etc/resolv.conf

修改或添加以下内容:

1
2
nameserver 223.5.5.5
nameserver 119.29.29.29

测试联网:

1
ping -c 4 mirrors.tuna.tsinghua.edu.cn

2. 安装必要工具

更新 Ubuntu Live 的本地索引并安装分区、引导及系统构建工具:

1
2
sudo apt update
sudo apt install debootstrap gdisk nano curl wget openssh-server -y

3. 确认目标磁盘

由于当前平台为单机械硬盘(假设识别为 /dev/sda),请务必通过以下命令核对名称与容量:

1
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT

第二阶段:磁盘分区与格式化

PVE 强依赖于 GPT 分区与合理的挂载布局。我们将针对单盘进行基础三卷划分。

1. 使用 gdisk 进行 GPT 分区

1
sudo gdisk /dev/sda

进入交互界面后,依次执行以下规划(输入 n 新建分区):

分区编号大小推荐文件系统/用途gdisk 类型代码
/dev/sda1512MEFI 引导分区EF00
/dev/sda2100GDebian / PVE 根系统 (/)8300
/dev/sda3剩余所有PVE VM/LXC 本地存储卷8300

💡 提示:最后输入 w 保存分区表并退出。

2. 格式化分区

1
2
3
sudo mkfs.fat -F32 /dev/sda1
sudo mkfs.ext4 /dev/sda2
sudo mkfs.ext4 /dev/sda3

3. 挂载目标分区

将新格式化的系统盘挂载到 Ubuntu Live 的 /mnt 目录下:

1
2
3
sudo mount /dev/sda2 /mnt
sudo mkdir -p /mnt/boot/efi
sudo mount /dev/sda1 /mnt/boot/efi

第三阶段:Debian 基础系统构建

1. 使用清华源进行 debootstrap 铺路

利用国内镜像源加速下载 Debian 12 (Bookworm) 基础核心包,防止官方源超时失败:

1
sudo debootstrap bookworm /mnt [https://mirrors.tuna.tsinghua.edu.cn/debian](https://mirrors.tuna.tsinghua.edu.cn/debian)

2. 挂载虚拟文件系统并 chroot

将当前的硬件设备树与系统状态同步给新系统,并切入其中:

1
2
3
4
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo chroot /mnt

⚠️ 注意接下来的所有操作,均已在新系统的 chroot 环境内运行。


第四阶段:新系统配置与内核安装

1. 配置新系统的 APT 镜像源

1
nano /etc/apt/sources.list

清除原内容,写入清华大学 Debian 稳定源:

1
2
3
deb [https://mirrors.tuna.tsinghua.edu.cn/debian/](https://mirrors.tuna.tsinghua.edu.cn/debian/) bookworm main contrib non-free-firmware
deb [https://mirrors.tuna.tsinghua.edu.cn/debian-security](https://mirrors.tuna.tsinghua.edu.cn/debian-security) bookworm-security main contrib non-free-firmware
deb [https://mirrors.tuna.tsinghua.edu.cn/debian/](https://mirrors.tuna.tsinghua.edu.cn/debian/) bookworm-updates main contrib non-free-firmware

2. 安装基础内核与网络管理组件

1
2
3
apt update
apt install apt-transport-https ca-certificates -y
apt install linux-image-amd64 grub-efi-amd64 sudo ssh network-manager -y

3. 设置主机名与 Hosts 解析

PVE 要求主机名必须能解析到具体的非环回 IP 或标准本地映射。

1
2
echo "pve" > /etc/hostname
nano /etc/hosts

修改为如下结构:

1
2
3
4
5
127.0.0.1       localhost
127.0.1.1 pve

# 如果已知本地静态 IP,建议在此处加上,例如:
# 192.168.1.100 pve.local pve

4. 设置 Root 密码

设置重启后登录系统所需的 root 账户密码:

1
passwd

5. 部署 GRUB 引导

将 EFI 引导程序写入硬盘:

1
2
grub-install /dev/sda
update-grub

第五阶段:安装 Proxmox VE (PVE)

1. 添加 PVE 国内社区源

由于官方源在大陆经常断连,此处采用中科大 (USTC)的 PVE 镜像源:

1
echo "deb [https://mirrors.ustc.edu.cn/proxmox/debian/pve](https://mirrors.ustc.edu.cn/proxmox/debian/pve) bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list

2. 导入 Proxmox 官方 GPG 密钥

1
wget [https://mirrors.ustc.edu.cn/proxmox/debian/proxmox-release-bookworm.gpg](https://mirrors.ustc.edu.cn/proxmox/debian/proxmox-release-bookworm.gpg) -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg

3. 稳健安装 PVE 核心卷

执行更新并正式安装 PVE 堆栈:

1
2
apt update
apt install proxmox-ve postfix open-iscsi -y

(注:安装过程中如果弹出 Postfix 配置,一般选择 Local only 即可。)


第六阶段:收尾与重启

完成安装后,安全退出 chroot 容器并重启设备:

1
2
exit
sudo reboot

拔掉 Ubuntu Live 引导 U 盘,等待 WTR Pro 正常启动。


后续管理与优化

1. 访问管理后台

系统引导成功后,在同局域网的浏览器中输入:

1
https://<你的PVE主机IP>:8006
  • 用户名root
  • 密码:在第九阶段设置的密码

2. 单机械硬盘性能调优

由于硬件平台初期使用的是单块机械硬盘,为了在 All in One(OpenWRT + Ubuntu + Win11)场景下避免严重的磁头 I/O 挤兑,建议进行如下优化:

  • 避免高频 I/O 容器:尽量不要在机械硬盘上跑高并发的数据库或频繁刷日志的 Docker 容器。
  • 合理挂载本地存储:在 PVE 网页端将 /dev/sda3 格式化为 Directory 或配置为 LVM,作为 ISO 镜像及轻量虚拟机(如 OpenWRT)的磁盘存放地。
  • 预留升级路线:WTR Pro 拥有良好的扩展性。后期加装 NVMe SSD 后,可通过 PVE 内置的 Move Disk 功能,无缝将高负载的 Win11 或虚拟系统一键迁移至固态硬盘,实现无痛速度飞跃。

优化核心是:压榨 CPU 与内存性能,极力保护机械硬盘 I/O,并为未来加装 SSD 铺路。

3. 针对 WTR Pro (5825U) + 64G 内存 + 单机械硬盘的极致优化

由于目前系统运行在单块机械硬盘(HDD)上,而机械硬盘的随机 4K 读写性能极弱,在 All in One 场景下(OpenWRT + Ubuntu + Win11 共同运行)极易发生磁头 I/O 挤兑,导致所有虚拟机卡死。但好在拥有 64G 的超大内存5825U 强劲的 CPU,我们可以通过“以内存换 I/O”的策略进行调优。

① 开启 Linux 内存脏数据回写优化(以内存缓冲 I/O)

通过延长内存中脏数据的缓存时间,将原本零碎的随机写入合并为连续的顺序写入,大幅减轻机械硬盘的寻道压力。
在 PVE 宿主机终端执行:

1
2
3
4
5
6
7
8
9
10
11
12
# 修改内核参数
sudo sysctl -w vm.dirty_background_ratio=5
sudo sysctl -w vm.dirty_ratio=10
sudo sysctl -w vm.dirty_writeback_centisecs=1500
sudo sysctl -w vm.dirty_expire_centisecs=3000

# 永久生效
echo "vm.dirty_background_ratio = 5" >> /etc/sysctl.conf
echo "vm.dirty_ratio = 10" >> /etc/sysctl.conf
echo "vm.dirty_writeback_centisecs = 1500" >> /etc/sysctl.conf
echo "vm.dirty_expire_centisecs = 3000" >> /etc/sysctl.conf
sysctl -p

② 虚拟机(VM)虚拟磁盘参数推荐

在 PVE Web 界面创建或修改虚拟机(如 Windows 11 / Ubuntu Server)时,磁盘设置请务必遵循以下配置:

  • 总线/设备 (Bus/Device): 选择 SCSI(并确保勾选了 Async I/Oio_uringthreads)。

  • 缓存 (Cache): 强烈建议选择 Write back(回写)

    ⚠️ 注意Write back 依赖宿主机内存做写缓存,能让机械硬盘的写入速度飙升,但若意外断电可能会丢失几秒的数据。鉴于 WTR Pro 平台,建议搭配小型 UPS 或确保供电稳定。

  • 丢弃 (Discard): 不要勾选(机械硬盘不支持 TRIM,勾选无意义)。

③ 内存极其富余?开启 tmpfs 内存盘跑轻量 Docker

64G 内存对于目前的轻量应用来说绰绰有余。你可以将 /tmp 或一些不重要的 Docker 容器数据目录直接挂载到内存中,完全绕过机械硬盘。

例如,在 /etc/fstab 中加入以下内容,分出 8G 内存做临时缓存盘:

Plaintext

1
tmpfs   /var/tmp    tmpfs   defaults,size=8G,mode=1777  0   0

4. 核心服务部署策略

在这个性能模型下,虚拟机的部署顺序与类型建议如下:

  • 第一批:OpenWRT (软路由)
    • 资源分配:1~2 核 CPU + 1G/2G 内存即可。
    • 特性:网络 I/O 几乎不占磁盘读写,机械硬盘毫无压力。
  • 第二批:Ubuntu Server (Docker 容器轻量载体)
    • 避坑指南:可以跑网络代理、Samba/NFS 纯文件共享、轻量 Web 业务。坚决不要在机械硬盘上运行高频写入的 Prometheus 监控、大型数据库(如高并发 MySQL)或青龙面板等频繁刷日志的脚本。
  • 第三批:Windows 11 (轻办公/精简版)
    • 优化手段:引导进入 Win11 后,务必关闭 Windows Update、SysMain 服务、Windows Search 索引以及内置防病毒的实时扫描。这些服务是机械硬盘的“隐形杀手”。

5. 完美的未来升级与无痛迁移路线

WTR Pro 拥有良好的硬件扩展性。单机械硬盘只是我们的起点,当后续资金到位、加装 NVMe SSD 固态硬盘后,PVE 强大的生态支持你进行零停机/极速一键迁移

  1. 加装 SSD 后:直接在 PVE 网页端的节点 -> 磁盘中,将新 SSD 格式化为 LVM-thinZFS (Single)
  2. 虚拟机一键热迁移
    • 点击Windows 11 或 Ubuntu 虚拟机。
    • 选择 硬件 (Hardware) -> 点击虚拟磁盘 -> 点击顶部 磁盘操作 (Disk Action) -> 移动存储 (Move Storage)
    • 目标存储选择新的 SSD,勾选 删除源 (Delete source),点击启动。 PVE 会在虚拟机保持开机运行的状态下,将数据默默迁移到固态硬盘,完成后自动切换。

6. 中国大陆环境的“最后一公里”优化

为了让这台 All in One 更好用,建议在宿主机或 Ubuntu VM 内完成以下换源收尾工作:

① Docker 国内镜像源(在 Ubuntu VM 中配置)

创建或修改 /etc/docker/daemon.json

1
2
3
4
5
6
{
"registry-mirrors": [
"https://⚡更换为你私有的阿里云加速器地址.mirror.aliyuncs.com",
"[https://docker.m.daocloud.io](https://docker.m.daocloud.io)"
]
}

② NTP 时间同步(防止时间偏差导致加密协议失效)

PVE 宿主机修改时间服务器为国内大厂镜像:

1
nano /etc/systemd/timesyncd.conf

修改内容为

1
2
[Time]
NTP=ntp.aliyun.com time1.cloud.tencent.com

重启服务生效:

1
systemctl restart systemd-timesyncd

7. 核心网络架构:打造标准的旁路由(Side-Gateway)网络

在单网口或不希望频繁折腾主网线的 WTR Pro 平台上,将 OpenWRT 部署为旁路由(旁路网关)是最稳健、最不容易导致断网的方案。这样既能享受 OpenWRT 的插件能力,又不会影响家人的正常网络。

① PVE 默认网桥确认 (vmbr0)

在基础安装完成后,PVE 会自动创建一个名为 vmbr0 的 Linux Bridge。它会将你的物理网卡(如 enp3s0eth0)与虚拟机绑定在同一个局域网内。
默认的 /etc/network/interfaces 结构通常如下:

1
2
3
4
5
6
7
8
9
10
11
12
auto lo
iface lo inet loopback

iface enp3s0 inet manual

auto vmbr0
iface vmbr0 inet static
address 192.168.1.100/24
gateway 192.168.1.1
bridge-ports enp3s0
bridge-stp off
bridge-fd 0

(注:将上面的 IP 修改为本地主路由网段内的固定 IP。)

② OpenWRT 旁路由网络配置

  1. 创建虚拟机:在 PVE 中为 OpenWRT 虚拟机分配 1 个网卡,并桥接到 vmbr0
  2. 修改 OpenWRT 内部 IP:引导进入 OpenWRT 后,将其 LAN 口 IP 修改为与主路由同网段的静态 IP(例如主路由是 192.168.1.1,OpenWRT 可设为 192.168.1.2)。
  3. 关闭 DHCP务必关闭 OpenWRT 的 DHCP 服务,避免与主路由冲突。
  4. 设置网关与 DNS:将 OpenWRT 的 IPv4 网关和 DNS 全都指向你的主路由 IP192.168.1.1)。

③ 客户端接入旁路由的两种玩法

  • 手动流(按需接入):如果你只想让自己的手机或电脑享受 OpenWRT 的特殊插件,只需在设备的网络设置中,将网关和 DNS 手动修改为 OpenWRT 的 IP192.168.1.2)即可。
  • 自动流(全家全局):如果你希望全家所有设备自动通过旁路由,直接登录你的主路由管理后台,将其 DHCP 服务中的“默认网关”和“DNS 服务器”修改为 OpenWRT 的 IP。

8. 单机械硬盘的“保命”备份方案:配置本地定时备份

在 All in One 环境中,“数据无价”是第一铁律。虽然目前只有一块机械硬盘,但我们可以利用 PVE 极其强大的 VZDump 备份工具,在 /dev/sda3 划分出来的本地目录中建立定时备份机制,防止因误操作、系统崩溃或容器损坏导致的心血白费。

① 在 PVE 中启用本地备份目录

  1. 登录 PVE Web 管理界面。
  2. 依次点击 数据中心 (Datacenter) -> 存储 (Storage) -> 添加 (Add) -> 目录 (Directory)
  3. ID 填写 local-backup目录填写你挂载 /dev/sda3 的本地路径(如 /mnt/data/backup)。
  4. 内容 (Content) 下拉菜单中,务必勾载 **VZDump 备份文件 (VZDump backup file)**,然后点击添加。

② 配置自动化定时备份策略(建议每周执行)

  1. 数据中心 (Datacenter) 菜单下,点击 备份 (Backup) -> 添加 (Add)
  2. 节点 (Node): 选择你的 PVE 节点。
  3. 存储 (Storage): 选择刚刚创建的 local-backup
  4. 选择选择器 (Selection mode): 建议选择 所有虚拟机 (All guests)
  5. 计划 (Schedule): 选择 每周六 02:00(机械硬盘此时负载最低)。
  6. 压缩 (Compression): 强烈推荐选择 **ZSTD**。这是目前性能最好的压缩算法,速度极快且对 CPU 消耗低,非常适合 5825U 这种多核处理器。
  7. 保留策略 (Retention): 在 保留备份 (Keep backups) 中设置 Keep last = 3(保留最近3次备份),防止机械硬盘空间被撑爆。

9. 进阶:如何彻底关闭不耐烦的 PVE 订阅弹窗

由于我们使用的是官方的免费无订阅版(pve-no-subscription),每次登录 Web 界面时,系统都会弹出一个警告窗口提示“没有有效的订阅(No valid subscription)”。

作为强迫症极客,我们可以通过一行命令将其彻底移除。在 PVE 宿主机终端执行以下单行脚本:

Bash

1
sed -Ezi.bak "s/(Ext.Msg.show\(\{\s+title: gettext\('No valid sub)/void\(\{\/\/\1/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js && systemctl restart pveproxy.service

执行完毕后,清除浏览器缓存并刷新 PVE 网页,那个烦人的弹窗就会彻底消失!