PVE 中安装 Tiny10 与基础加固
记录在 Proxmox VE(PVE)中部署 Tiny10 虚拟机的实操流程。文本中的主机名、IP、凭据均已脱敏,执行前请全部替换为自己的环境。
Tiny10 为精简版 Windows 镜像,部分组件(如语言包、驱动、系统服务)可能缺失。请优先确认镜像合法来源并先创建快照。
1. 资源与镜像准备
- PVE 本地存储中准备好 Tiny10 ISO
- 准备最新的 virtio-win ISO(磁盘、网卡驱动)
- 预置 Windows 管理员账号(后续示例使用
<WINDOWS_ADMIN>)
示例占位符说明:
| 变量 | 说明 |
|---|---|
<VM_ID> | PVE 虚拟机 ID |
<VM_IP> | 虚拟机静态 IP |
<PREFIX> | 子网前缀,如 24 |
<GATEWAY> | 默认网关 |
<DNS_SERVER> | DNS 服务器 |
<USER> | Windows 登录用户名 |
<USB_PATH> | USB 直通设备路径 |
2. VM 建议配置(参考)
在创建 VM 时可按下列配置搭建:
- BIOS:
OVMF (UEFI) - Machine:
q35 - CPU:
host或x86-64-v2-AES - 内存:
4 GiB起步 - 磁盘:
VirtIO SCSI - 网卡:
VirtIO (Paravirtualized) - EFI:开启
- TPM:按 Tiny10 要求可选启用
将 virtio-win.iso 挂载为附加 CD/DVD,安装过程中用于加载驱动。
3. 安装阶段加载磁盘与网卡驱动
若安装界面看不到磁盘:
- 进入磁盘选择页点击“Load Driver”
- 选择
virtio-win.iso - 按版本定位到
vioscsi\w10\amd64或vioscsi\w11\amd64 - 选中 Red Hat VirtIO SCSI 驱动并加载
安装完成后如网卡未识别:
- 打开设备管理器
- 为网卡加载
NetKVM\w10\amd64(以镜像实际路径为准)
如果
virtio-win.iso目录与示例不同,请以实际目录结构为准。
4. noVNC 与剪贴板
PVE 的 noVNC 剪贴板与 SPICE 剪贴板互不相同。若 noVNC 剪贴板不可用,可在 PVE 主机执行:
qm set <VM_ID> --vga clipboard=vnc然后重开 noVNC 会话;浏览器侧需允许剪贴板权限。SPICE 客户端的行为受其协议限制,不一定与 noVNC 共通。
5. 预装常用组件
5.1 Firefox
$installer = Join-Path $env:TEMP 'FirefoxESR.exe'
$url = 'https://download.mozilla.org/?product=firefox-esr-latest-ssl&os=win64&lang=zh-CN'
curl.exe -fL $url -o $installer
$signature = Get-AuthenticodeSignature $installer
if ($signature.Status -ne 'Valid' -or $signature.SignerCertificate.Subject -notmatch 'Mozilla Corporation') {
Remove-Item $installer -Force
throw 'Firefox 安装包签名校验失败'
}
Start-Process $installer -ArgumentList '-ms' -Wait
Remove-Item $installer -Force5.2 OpenSSH(优先用系统可选组件)
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Set-Service sshd -StartupType Automatic
Start-Service sshd如提示组件缺失,可改用 Win32-OpenSSH MSI 安装:
if (-not (Get-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 | Where-Object State -Eq Installed)) {
$release = Invoke-RestMethod 'https://api.github.com/repos/PowerShell/Win32-OpenSSH/releases/latest'
$asset = $release.assets |
Where-Object { $_.name -match '^OpenSSH-Win64.*\.msi$' } |
Select-Object -First 1
if (-not $asset) { throw '未找到 Win64 OpenSSH MSI 安装包' }
$installer = Join-Path $env:TEMP 'OpenSSH-Win64.msi'
curl.exe -fL $asset.browser_download_url -o $installer
$signature = Get-AuthenticodeSignature $installer
if ($signature.Status -ne 'Valid' -or $signature.SignerCertificate.Subject -notmatch 'Microsoft Corporation') {
Remove-Item $installer -Force
throw '安装包签名校验失败'
}
Start-Process msiexec.exe -ArgumentList "/i `"$installer`" ADDLOCAL=Server /qn /norestart" -Wait
Remove-Item $installer -Force
}
Set-Service sshd -StartupType Automatic
Start-Service sshd以上命令仅示例发布源与下载逻辑,实际请按当前稳定发布页最新地址执行,并校验签名后再部署。
完成后检查服务状态与开机自启:
Get-Service sshd
sc.exe qc sshd远端验证:
ssh <USER>@<VM_IP>不要在脚本或仓库中明文保存密码,默认用 SSH Key 登录。
6. 静态网络与基础连通性
6.1 安全性先行
从 PVE 主机先确认目标地址是否可用:
ip neigh show <VM_IP>
ping -c 3 <VM_IP>仅 ping 通不足以证明可用,务必结合 ARP 与网络设备记录确认冲突。
6.2 Windows 内配置静态 IP
Get-NetAdapter假设网卡名为 Ethernet:
netsh interface ipv4 set address `
name="Ethernet" `
static <VM_IP> 255.255.255.0 <GATEWAY> 1
netsh interface ipv4 set dnsservers `
name="Ethernet" `
static <DNS_SERVER> primary validate=no执行网络重配后检查连通与解析:
ipconfig /all
Test-NetConnection -ComputerName github.com -Port 4437. SPICE Guest Tools 与输入体验
$installer = Join-Path $env:TEMP 'spice-guest-tools.exe'
$url = 'https://www.spice-space.org/download/windows/spice-guest-tools/spice-guest-tools-latest.exe'
curl.exe -fL $url -o $installer
Start-Process $installer -ArgumentList '/S' -Wait
Remove-Item $installer -Force
Get-Service vdservice安装完成建议重启一次,避免图形工具状态不一致。
8. 字体与中文显示
安装并注册中文字体后再统一配置终端,避免控制台乱码:
[Console]::InputEncoding = [System.Text.UTF8Encoding]::new($false)
[Console]::OutputEncoding = [System.Text.UTF8Encoding]::new($false)可优先补齐以下字体族(示例):
LXGW WenKai(界面)LXGW WenKai Mono(等宽)JetBrains Mono(代码)
在传统控制台可尝试设置:
$consoleFonts = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont'
New-ItemProperty -Path $consoleFonts -Name '000' -Value 'LXGW WenKai Mono' -PropertyType String -Force | Out-Null
New-ItemProperty -Path 'HKCU:\Console' -Name 'FaceName' -Value 'LXGW WenKai Mono' -PropertyType String -Force | Out-Null9. 输入法与 USB 直通(按需)
9.1 输入法
若系统长期无中文输入,可按环境补充 Microsoft 或第三方输入法并设置为系统默认。
9.2 USB 直通
在确认无误后按物理路径绑定 USB 设备:
qm set <VM_ID> --usb0 host=<USB_PATH>绑定前优先在测试环境验证,避免与主机关键外设冲突。
10. 验收清单
- 网卡、磁盘、显卡驱动可用
- noVNC 与 SPICE 剪贴板按预期工作
sshd运行且 22 端口可达- 静态 IP、网关、DNS 配置正确
- 中文字体与控制台显示正常
- 关键操作留有快照或导出点
以上步骤适合用于「本地可控网络 + 需最小化系统体积」的场景。若你要在生产网络使用,建议再补一层堡垒主机和最小暴露端口策略。