跳到主要内容

PVE安装记录

· 阅读需 9 分钟

下载最新固件,使用Rufus烧录至U盘。上电R86S后立即按 F7 进入 BIOS 设置,选中U盘作为引导启动项,后续的按照提示操作即可。

提示

在系统安装引导界面,可以设置磁盘分配空间,我们可以预留一部分空间给Windows使用,如果有多系统需求的话。

如果需要在 eMMC 安装 Windows 系统作为应急备份。可以考虑先安装 Windows,再安装 PVE,否则 Windows 的 UEFI 分区可能会自动识别安装至 NVME 上。

如果此时需要 iKuaiOS 拨号才能上网,可先配置 iKuaiOS 拨号成功后再继续后续PVE配置。

安装完系统之后,需要修改DNS,默认的DNS只有 127.0.0.1

/etc/resolv.conf
nameserver 192.168.1.1
nameserver 8.8.8.8
nameserver 127.0.0.1

参考 USTC 镜像源替换国内镜像源:

# 基础系统(Debian)
sed -i 's|^deb http://ftp.debian.org|deb https://mirrors.ustc.edu.cn|g' /etc/apt/sources.list
sed -i 's|^deb http://security.debian.org|deb https://mirrors.ustc.edu.cn/debian-security|g' /etc/apt/sources.list

# Proxmox
source /etc/os-release
echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/pve $VERSION_CODENAME pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list

# ceph 仓库
if [ -f /etc/apt/sources.list.d/ceph.list ]; then CEPH_CODENAME=`ceph -v | grep ceph | awk '{print $(NF-1)}'`; source /etc/os-release; echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-$CEPH_CODENAME $VERSION_CODENAME no-subscription" > /etc/apt/sources.list.d/ceph.list; fi

mv /etc/apt/sources.list.d/pve-enterprise.list /etc/apt/sources.list.d/pve-enterprise.list.bak # 不使用enterprise仓库

# CT Templates
cp /usr/share/perl5/PVE/APLInfo.pm /usr/share/perl5/PVE/APLInfo.pm_back
sed -i 's|http://download.proxmox.com|https://mirrors.ustc.edu.cn/proxmox|g' /usr/share/perl5/PVE/APLInfo.pm
systemctl restart pvedaemon
apt update && apt upgrade
pveam update

如果在安装完系统后,想要重新修改IP,可以打开/etc/network/interfaces文件,更改 vmbr0 的 address 即可。修改完成后需要重启。

/etc/network/interfaces
auto lo
iface lo inet loopback

iface enp1s0 inet manual

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

iface enp2s0 inet manual

# ......

硬件直通

在kernel中启用I/O Memory Management Unit(直通PCI设置之前必须要启用IOMMU):

/etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"

加载相应的内核模块:

/etc/modules
vfio
vfio_iommu_type1
vfio_pci

确认核显的供应商(Vendor)和设备(Device) ID:

lspci -nn

......
00:02.0 VGA compatible controller [0300]: Intel Corporation Alder Lake-N [UHD Graphics] [8086:46d0]
......

在PVE上屏蔽系统中的开源显卡驱动避免开启显卡被系统加载,另外,不建议直通集显。

更新grub及initramfs,然后重启

update-grub
update-initramfs -u -k all
reboot

重启完成后,验证 IOMMU 是否已启用,运行:

dmesg | grep -e DMAR -e IOMMU

......
[ 0.062560] DMAR: IOMMU enabled
......

应该能在输出中看到上述一行。

验证 IOMMU 中断重映射已启用,运行:

dmesg | grep 'remapping'

[ 0.153403] DMAR-IR: Enabled IRQ remapping in x2apic mode

应该能在输出中看到上述一行。

存储策略和分区调整

默认情况下,pve安装时会在硬盘上自动创建如下两个区域:

  • 区域local:类别为Directory,支持文件目录结构,我们可以看到具体的文件夹和文件。
  • 区域local-lvm:类别为LVM-Thin,不支持文件目录结构,即我们看不到文件路径。

网络上大多都是建议把 local-lvm 删除合并至 local。这里我也产生了这样的需求,R86s目前只有一个nvme硬盘,后续还需要其作为NAS存储共享文件。

lvremove /dev/pve/data
lvextend -rl +100%FREE /dev/pve/root

然后在 数据中心→存储→删除 local-lvm。双击编辑 local,内容里添加 磁盘映像容器。这样做了,我们就可以进入目录/var/lib/vz查看所有的内容了。

root@pve:/var/lib/vz# tree /var/lib/vz
/var/lib/vz
├── dump
├── images
├── private
├── snippets
└── template
├── cache
└── iso

8 directories, 0 files

使用df -h查看,根目录已经扩大了。

root@pve:~# df -Th
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 16G 0 16G 0% /dev
tmpfs tmpfs 3.2G 1.6M 3.2G 1% /run
/dev/mapper/pve-root ext4 908G 3.3G 867G 1% /
tmpfs tmpfs 16G 43M 16G 1% /dev/shm
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
efivarfs efivarfs 192K 86K 102K 46% /sys/firmware/efi/efivars
/dev/nvme0n1p2 vfat 1022M 12M 1011M 2% /boot/efi
/dev/fuse fuse 128M 16K 128M 1% /etc/pve
tmpfs tmpfs 3.2G 0 3.2G 0% /run/user/0

另外,PVE是不支持安装至eMMC的,在其Forum上找到这么一段话:

Proxmox VE is not made for install on USB/eMMC/CFCard or equal.
Proxmox VE have to be installed on a SSD/HDD. The OS will write some GB logs per day.
A USB/eMMC/CFCard or equal will not last long with this many writing.

但是我们可以将R86s的128GB eMMC在装上PVE之后,挂载至系统中,作为存储使用。例如挂载至其默认的ISO存储位置:/var/lib/vz/template/iso/

查看emmc的设备符:

root@pve:~# fdisk -l
Disk /dev/nvme0n1: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: HP SSD EX900 1TB
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 85BDD2FE-0974-4DAE-AA8D-DA5E7EF96B7A

Device Start End Sectors Size Type
/dev/nvme0n1p1 34 2047 2014 1007K BIOS boot
/dev/nvme0n1p2 2048 2099199 2097152 1G EFI System
/dev/nvme0n1p3 2099200 1953525134 1951425935 930.5G Linux LVM


Disk /dev/mmcblk0: 116.5 GiB, 125090922496 bytes, 244318208 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
......

格式化emmc:

mkfs -t ext4 /dev/mmcblk0

将硬盘分区挂载到/var/lib/vz/template/iso/目录:

mkdir /mnt/emmc
mount -t ext4 /dev/mmcblk0 /mnt/emmc

将目录挂载到系统启动项:

echo /dev/mmcblk0 /mnt/emmc ext4 defaults 1 2 >> /etc/fstab

使用df -h查看,emmc以及挂载到/mnt/emmc了。

root@pve:~# df -h
Filesystem Size Used Avail Use% Mounted on
udev 16G 0 16G 0% /dev
tmpfs 3.2G 1.6M 3.2G 1% /run
/dev/mapper/pve-root 908G 3.3G 867G 1% /
tmpfs 16G 43M 16G 1% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
efivarfs 192K 86K 102K 46% /sys/firmware/efi/efivars
/dev/nvme0n1p2 1022M 12M 1011M 2% /boot/efi
/dev/fuse 128M 16K 128M 1% /etc/pve
tmpfs 3.2G 0 3.2G 0% /run/user/0
/dev/mmcblk0 115G 24K 109G 1% /mnt/emmc

Ubuntu Docker

Proxmox Virtual Environment (PVE) 官方不提供 Docker 支持,但我们可以在 PVE 上的虚拟机或 LXC 容器中自行安装和运行 Docker,从而实现应用容器化。

为了 PVE 的安全和稳定性,我们不在 PVE 主机环境下安装 Docker。

创建 Ubuntu24.04 LXC。

备注

创建CT时,取消勾选 无特权的容器。创建完成后(如果不取消勾选 无特权的容器,运行容器时会失败,打开控制台出现假死现象),创建完成后不要立即启动容器,在容器的 选项→功能 页面,勾选 嵌套NFSSMB/CIFSFUSE 选项。

提示

创建CT时,填入的主机名会忽略 . 后的内容,我填的 Ubuntu24.04,启动CT后,主机名显示的是 Ubuntu24,且无法通过 /etc/hostname 修改。

在LXC配置文件加入如下配置以映射 PVE 主机目录至容器内部,用来存储文件:

/etc/pve/lxc/<自己安装时的CT ID>.conf
mp0: /mnt/user,mp=/mnt/user,backup=0
# mp1, ...依次往后递增

# 也支持直接挂载存储设备符,例如:
# mp0: /dev/mmcblk0,mp=/mnt/emmc,backup=0

加入如下配置以支持 Docker 的完整功能:

/etc/pve/lxc/<自己安装时的CT ID>.conf
lxc.apparmor.profile: unconfined
lxc.cgroup.devices.allow: a
lxc.cap.drop:

更换软件源,安装 Docker:

sed -i 's@//.*archive.ubuntu.com@//mirrors.ustc.edu.cn@g' /etc/apt/sources.list
apt-get update && apt upgrade -y
apt-get install ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Docker 安装完成后,验证是否成功安装:

docker run hello-world

中文

编辑配置文件,增加中文支持:

/etc/locale.gen
# 找到这一行,取消注释
zh_CN.UTF-8 UTF-8
/etc/profile
export LC_ALL=zh_CN.UTF-8

然后运行命令,生成对应配置,安装中文字体:

locale-gen
apt install fonts-noto-cjk-extra

SSH

修改sshd配置文件,找到PermitRootLogin这一行,修改如下以允许root ssh登录:

/etc/ssh/sshd_config
PermitRootLogin yes

然后执行:

systemctl restart sshd

SMB

安装 Samba 服务:

apt install -y samba

设置 Samba 用户:

# 如果用户不存在,则需要先创建
adduser amass
smbpasswd -a amass

创建文件夹:

apt install acl # 用于文件夹权限控制
mkdir /mnt/user/Downloads

# 为用户设置 ACL
setfacl -m u:amass:rwx /mnt/user/Downloads

配置 Samba:

/etc/samba/smb.conf
[Downloads]
path = /mnt/user/Downloads
available = yes
valid users = amass,other_username ;仅 root 和 other_username 账号能访问
access based share enum = Yes ;仅可访问该目录的账号可见
read only = no
browsable = yes
public = yes
writable = yes

重启 Samba 服务:

systemctl restart smbd

客户端挂载

mount -t cifs //192.168.110.3/Backup /mnt/user/Backup -o username=amass,password='your_password'

Windows11 虚拟机

下载 Windows VirtIO Drivers,在系统选项卡中,勾选 Qemu代理。

在安装系统完成后,还要继续在Windows VirtIO Drivers上安装网卡等驱动。

直通显卡参考文档:https://github.com/gangqizai/igd

评论

欢迎补充上下文、指出问题,或者留下进一步讨论的线索。

正在加载留言板…