Proxmox VE 9へのアップグレード(1) 更新準備

Proxmox VE

 Proxmox VE 8.3のまま使ってましたが、Windows11 VMがとても遅いことに気が付いてしまいました。いろいろ調べたのですが、どうやらPVEをアップデートすることで改善ができるようなので、今回、更新することにしました。カーネルやQEMU(libvirt, qemu-server 含む)周りで I/Oまわりの改善とVirtIO安定化などの修正が行われているようです。これはProxmox VE 8.3 → 8.4へ更新。VE9へ更新を行うための準備。戦いの記録です。

(1) 8.4への更新前確認

バージョン、カーネルを確認。

pveversion -v | grep "pve-manager\|qemu-server\|zfs\|kernel"
root@pve:~# pveversion -v | grep "pve-manager\|qemu-server\|zfs\|kernel"
proxmox-ve: 8.3.0 (running kernel: 6.8.12-9-pve)
pve-manager: 8.3.5 (running version: 8.3.5/dac3aa88bac3f300)
proxmox-kernel-helper: 8.1.1
proxmox-kernel-6.8: 6.8.12-9
proxmox-kernel-6.8.12-9-pve-signed: 6.8.12-9
proxmox-kernel-6.8.12-8-pve-signed: 6.8.12-8
proxmox-kernel-6.8.12-4-pve-signed: 6.8.12-4
proxmox-kernel-helper: 8.1.1
qemu-server: 8.3.8
zfsutils-linux: 2.2.8-pve1

pve-kernel-6.8.*系でした。続けてzfsプールの状態を確認します。

root@pve:~# zpool status
root@pve:~# zpool status
pool: vmstore
state: ONLINE
scan: scrub repaired 0B in 00:03:13 with 0 errors on Sun Oct 12 00:27:14 2025
config:

	NAME        STATE     READ WRITE CKSUM
	vmstore     ONLINE       0     0     0
	  nvme0n1   ONLINE       0     0     0

errors: No known data errors

zfsプールはオンライン、errors: 0 でした。問題ありません。アップデートします。

root@pve:~# apt update
root@pve:~# apt full-upgrade

アップデートがエラーなく終了したら、再起動します。これで更新完了です。
マイナーバージョンのアップデートだから、これはとても簡単。

再起動後、バージョン確認します。

root@pve:~# uname -r
6.8.12-16-pve
root@pve:~# pveversion -v | grep "kernel\|pve-manager\|qemu-server"
proxmox-ve: 8.4.0 (running kernel: 6.8.12-16-pve)
pve-manager: 8.4.14 (running version: 8.4.14/b502d23c55afcba1)
proxmox-kernel-helper: 8.1.4
proxmox-kernel-6.8: 6.8.12-16
proxmox-kernel-6.8.12-16-pve-signed: 6.8.12-16
proxmox-kernel-6.8.12-9-pve-signed: 6.8.12-9
proxmox-kernel-6.8.12-8-pve-signed: 6.8.12-8
proxmox-kernel-6.8.12-4-pve-signed: 6.8.12-4
proxmox-kernel-helper: 8.1.4
qemu-server: 8.4.4

無事、8.4.4に更新されました。

(2) 8.4から9への更新前確認

Proxmox VE 9への更新で一番大変なのはこの準備だと思いました。難しかったです。

バージョン確認
root@pve:~# cat /etc/debian_version
12.12

root@pve:~# uname -r
6.8.12-16-pve
pve8to9 アップグレードチェックの実行
root@pve:~# which pve8to9
/usr/bin/pve8to9

root@pve:~# pve8to9 | tee /root/pve8to9_check_$(date +%F).log

アップグレードチェックスクリプトpve8to9ですが、言うなれば「謎解きモグラ叩き」みたいなものでした。
1つ直すと別の警告が出てといった繰り返しとなり、最終的にアップグレードチェック合格判定に到達するまで結構大変でした。

下記は、初回実行時のログです

root@pve:~# pve8to9 | tee /root/pve8to9_check_$(date +%F).log
file /etc/pve/storage.cfg line 26 - ignore config line:     prune-backups keep-last=7

#バージョン関連
= CHECKING VERSION INFORMATION FOR PVE PACKAGES =

Checking for package updates..
PASS: all packages up-to-date

Checking proxmox-ve package version..
PASS: proxmox-ve package has version >= 8.4-0

Checking running kernel version..
PASS: running kernel '6.8.12-16-pve' is considered suitable for upgrade.

#→ Proxmox 8.4 最新で、カーネルも対応済み。

#クラスタ/Ceph
= CHECKING CLUSTER HEALTH/SETTINGS =

SKIP: standalone node.

= CHECKING HYPER-CONVERGED CEPH STATUS =

SKIP: no hyper-converged ceph setup detected!

# 単一ノード構成、Ceph非構成。アップグレードの影響なし


#ストレージ設定
= CHECKING CONFIGURED STORAGES =

PASS: storage 'local' enabled and active.
PASS: storage 'local-lvm' enabled and active.
PASS: storage 'pve-backup' enabled and active.
PASS: storage 'vmstore' enabled and active.
PASS: storage 'vmstore-iso' enabled and active.
INFO: Checking storage content type configuration..
PASS: no storage content problems found
PASS: no storage re-uses a directory for multiple content types.
INFO: Check for usage of native GlusterFS storage plugin...
PASS: No GlusterFS storage found.
INFO: Checking whether all external RBD storages have the 'keyring' option configured
SKIP: No RBD storage configured.


#仮想マシン&コンテナの確認
= VIRTUAL GUEST CHECKS =

INFO: Checking for running guests..
WARN: 8 running guest(s) detected - consider migrating or stopping them.
INFO: Checking if LXCFS is running with FUSE3 library, if already upgraded..
SKIP: not yet upgraded, no need to check the FUSE library version LXCFS uses
INFO: Checking for VirtIO devices that would change their MTU...
NOTICE: network interface net0 of vm 900 will have its mtu forced to 9000

# 8 running guest(s) detected  VM稼働中なので停止推奨。
# MTU 9000 の設定は upgrade 後に要確認とのご指摘

PASS: All guest config descriptions fit in the new limit of 8 KiB
INFO: Checking container configs for deprecated lxc.cgroup entries
PASS: No legacy 'lxc.cgroup' keys found.
INFO: Checking VM configurations for outdated machine versions
PASS: All VM machine versions are recent enough


#その他確認
= MISCELLANEOUS CHECKS =

INFO: Checking common daemon services..
PASS: systemd unit 'pveproxy.service' is in state 'active'
PASS: systemd unit 'pvedaemon.service' is in state 'active'
PASS: systemd unit 'pvescheduler.service' is in state 'active'
PASS: systemd unit 'pvestatd.service' is in state 'active'
INFO: Checking for supported & active NTP service..
PASS: Detected active time synchronisation unit 'chrony.service'
INFO: Checking if the local node's hostname 'pve' is resolvable..
INFO: Checking if resolved IP is configured on local node..
PASS: Resolved node IP '192.168.0.241' configured and active on single interface.
INFO: Check node certificate's RSA key size

#証明書チェック
PASS: Certificate 'pve-root-ca.pem' passed Debian Busters (and newer) security level for TLS connections (4096 >= 2048)
PASS: Certificate 'pve-ssl.pem' passed Debian Busters (and newer) security level for TLS connections (2048 >= 2048)

# TLS 鍵長も安全。独自CA証明書もこの時点では正常認識。

INFO: Checking backup retention settings..
PASS: no backup retention problems found.
INFO: checking CIFS credential location..
PASS: no CIFS credentials at outdated location found.
INFO: Checking permission system changes..
INFO: Checking custom role IDs
PASS: no custom roles defined
INFO: Checking node and guest description/note length..
PASS: All node config descriptions fit in the new limit of 64 KiB
INFO: Checking if the suite for the Debian security repository is correct..
PASS: found no suite mismatch
INFO: Checking for existence of NVIDIA vGPU Manager..
PASS: No NVIDIA vGPU Service found.
INFO: Checking bootloader configuration...

#ystemd-boot はProxmoxでは非推奨
FAIL: systemd-boot meta-package installed. This will cause problems on upgrades of other 
boot-related packages. Remove 'systemd-boot'
See https://pve.proxmox.com/wiki/Upgrade_from_8_to_9#sd-boot-warning for more information.


INFO: Check for dkms modules...
SKIP: could not get dkms status
INFO: Check for legacy 'filter' or 'group' sections in /etc/pve/notifications.cfg...
INFO: Check for legacy 'notification-policy' or 'notification-target' options in /etc/pve/jobs.cfg...
PASS: No legacy 'notification-policy' or 'notification-target' options found!
INFO: Check for LVM autoactivation settings on LVM and LVM-thin storages...
PASS: all guest volumes on storage 'local-lvm' have autoactivation disabled
PASS: No problematic volumes found.
INFO: Checking lvm config for thin_check_options...
PASS: Check for correct thin_check_options passed
INFO: Check space requirements for RRD migration...
PASS: Enough free disk space for increased RRD metric granularity requirements, which is roughly 21.00 MiB.
INFO: Checking for IPAM DB files that have not yet been migrated.
PASS: No legacy IPAM DB found.
PASS: No legacy MAC DB found.
INFO: Checking if the legacy sysctl file '/etc/sysctl.conf' needs to be migrated to new '/etc/sysctl.d/' path.
PASS: Legacy file '/etc/sysctl.conf' exists but does not contain any settings.
INFO: Checking if matching CPU microcode package is installed.

#警告 amd64-microcode が未インストール
WARN: The matching CPU microcode package 'amd64-microcode' could not be found! Consider installing it to receive the latest security and bug fixes for your CPU.
        Ensure you enable the 'non-free-firmware' component in the apt sources and run:
        apt install amd64-microcode
SKIP: NOTE: Expensive checks, like CT cgroupv2 compat, not performed without '--full' parameter

= SUMMARY =

TOTAL:    46
PASSED:   36
SKIPPED:  6
WARNINGS: 2
FAILURES: 1

ATTENTION: Please check the output for detailed information!
Try to solve the problems one at a time and then run this checklist tool again.

 GRUBブートしていますが、システムにsystemd-boot パッケージが残っている模様。これは削除推奨とのこと。
「amd64-microcode が未インストール」という警告が表示されましたが、今回のシステムのCPU(Ryzen 7 5825U / Zen3+)では、マイクロコード更新は通常UEFIファームウェア経由で適用されます。
amd64-microcode パッケージは補完的な役割を持ち、UEFIで最新のマイクロコードが導入されていれば必須ではありません。ただし、APTのチェック警告を回避し、将来の安定運用を考慮してインストールすることにします。

まずはsystemd-boot パッケージの削除。

root@pve:~# apt remove systemd-boot
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following package was automatically installed and is no longer required:
  proxmox-kernel-6.8.12-8-pve-signed
Use 'apt autoremove' to remove it.
The following packages will be REMOVED:
  systemd-boot
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 250 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 69894 files and directories currently installed.)
Removing systemd-boot (252.39-1~deb12u1) ...
Processing triggers for man-db (2.11.2-2) ...

amd64-microcode’をインストールしようとしたところ、’amd64-microcode’がみつかりません。

root@pve:~# grep -m1 'model name' /proc/cpuinfo
model name      : AMD Ryzen 7 5825U with Radeon Graphics

root@pve:~# apt install amd64-microcode
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Package amd64-microcode is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'amd64-microcode' has no installation candidate
firmware リポジトリの扱い

従来のリポジトリ指定「main contrib」指定のみではファームウェア関連パッケージ(例:amd64-microcode, firmware-iwlwifi, firmware-realtek など)が取得できないようです。

root@pve:~# cat /etc/apt/sources.list

deb http://ftp.jp.debian.org/debian bookworm main contrib
deb http://ftp.jp.debian.org/debian bookworm-updates main contrib

# security updates
deb http://security.debian.org bookworm-security main contrib

リポジトリ指定に「non-free non-free-firmware」を追加しました。

# sources.list を編集して non-free-firmware を追加
sed -i '/^deb .* bookworm / s/$/ non-free non-free-firmware/' /etc/apt/sources.list


root@pve:~# cat /etc/apt/sources.list

deb http://ftp.jp.debian.org/debian bookworm main contrib non-free non-free-firmware
deb http://ftp.jp.debian.org/debian bookworm-updates main contrib non-free non-free-firmware

# security updates
deb http://security.debian.org bookworm-security main contrib

修正後、更新を実行。

# 更新
apt update

# インストール
apt install amd64-microcode

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following package was automatically installed and is no longer required:
  proxmox-kernel-6.8.12-8-pve-signed
Use 'apt autoremove' to remove it.
The following NEW packages will be installed:
  amd64-microcode
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 278 kB of archives.
After this operation, 715 kB of additional disk space will be used.
Get:1 http://deb.debian.org/debian bookworm/non-free-firmware amd64 amd64-microcode 
amd64 3.20250311.1~deb12u1 [278 kB]

Fetched 278 kB in 0s (3,252 kB/s)
Selecting previously unselected package amd64-microcode.
(Reading database ... 69876 files and directories currently installed.)
Preparing to unpack .../amd64-microcode_3.20250311.1~deb12u1_amd64.deb ...
Unpacking amd64-microcode (3.20250311.1~deb12u1) ...
Setting up amd64-microcode (3.20250311.1~deb12u1) ...
amd64-microcode: microcode will be updated at next boot
Processing triggers for initramfs-tools (0.142+deb12u3) ...
update-initramfs: Generating /boot/initrd.img-6.8.12-16-pve
Running hook script 'zz-proxmox-boot'..
Re-executing '/etc/kernel/postinst.d/zz-proxmox-boot' in new private mount namespace..
No /etc/kernel/proxmox-boot-uuids found, skipping ESP sync.
root@pve:~#

#リブート
root@pve:~# reboot
pve8to9 アップグレードチェック再実行

再起動後、再度アップグレードチェックを実行。

root@pve:~# pve8to9 | tee /root/pve8to9_check_postreboot_$(date +%F).log
file /etc/pve/storage.cfg line 26 - ignore config line: prune-backups keep-last=7

= CHECKING VERSION INFORMATION FOR PVE PACKAGES =
Checking for package updates..
PASS: all packages up-to-date
Checking proxmox-ve package version..
PASS: proxmox-ve package has version >= 8.4-0
Checking running kernel version..
PASS: running kernel '6.8.12-16-pve' is considered suitable for upgrade.

= CHECKING CLUSTER HEALTH/SETTINGS =
SKIP: standalone node.

= CHECKING HYPER-CONVERGED CEPH STATUS =
SKIP: no hyper-converged ceph setup detected!

= CHECKING CONFIGURED STORAGES =
PASS: storage 'local' enabled and active.
PASS: storage 'local-lvm' enabled and active.
PASS: storage 'pve-backup' enabled and active.
PASS: storage 'vmstore' enabled and active.
PASS: storage 'vmstore-iso' enabled and active.
INFO: Checking storage content type configuration..
PASS: no storage content problems found
PASS: no storage re-uses a directory for multiple content types.
INFO: Check for usage of native GlusterFS storage plugin...
PASS: No GlusterFS storage found.
INFO: Checking whether all external RBD storages have the 'keyring' option configured
SKIP: No RBD storage configured.

= VIRTUAL GUEST CHECKS =
INFO: Checking for running guests..
WARN: 8 running guest(s) detected - consider migrating or stopping them.
INFO: Checking if LXCFS is running with FUSE3 library, if already upgraded..
SKIP: not yet upgraded, no need to check the FUSE library version LXCFS uses
INFO: Checking for VirtIO devices that would change their MTU...
NOTICE: network interface net0 of vm 900 will have its mtu forced to 9000
PASS: All guest config descriptions fit in the new limit of 8 KiB
INFO: Checking container configs for deprecated lxc.cgroup entries
PASS: No legacy 'lxc.cgroup' keys found.
INFO: Checking VM configurations for outdated machine versions
PASS: All VM machine versions are recent enough

= MISCELLANEOUS CHECKS =
INFO: Checking common daemon services..
PASS: systemd unit 'pveproxy.service' is in state 'active'
PASS: systemd unit 'pvedaemon.service' is in state 'active'
FAIL: systemd unit 'pvescheduler.service' is in state 'inactive'
PASS: systemd unit 'pvestatd.service' is in state 'active'
INFO: Checking for supported & active NTP service..
PASS: Detected active time synchronisation unit 'chrony.service'
INFO: Checking if the local node's hostname 'pve' is resolvable..
INFO: Checking if resolved IP is configured on local node..
PASS: Resolved node IP '192.168.0.241' configured and active on single interface.
INFO: Check node certificate's RSA key size
PASS: Certificate 'pve-root-ca.pem' passed Debian Busters (and newer) security level for 
TLS connections (4096 >= 2048)
PASS: Certificate 'pve-ssl.pem' passed Debian Busters (and newer) security level for 
TLS connections (2048 >= 2048)
INFO: Checking backup retention settings..
PASS: no backup retention problems found.
INFO: checking CIFS credential location..
PASS: no CIFS credentials at outdated location found.
INFO: Checking permission system changes..
INFO: Checking custom role IDs
PASS: no custom roles defined
INFO: Checking node and guest description/note length..
PASS: All node config descriptions fit in the new limit of 64 KiB
INFO: Checking if the suite for the Debian security repository is correct..
PASS: found no suite mismatch
INFO: Checking for existence of NVIDIA vGPU Manager..
PASS: No NVIDIA vGPU Service found.
INFO: Checking bootloader configuration...
PASS: bootloader packages installed correctly
INFO: Check for dkms modules...
SKIP: could not get dkms status
INFO: Check for legacy 'filter' or 'group' sections in /etc/pve/notifications.cfg...
INFO: Check for legacy 'notification-policy' or 'notification-target' options in /etc/pve/jobs.cfg...
PASS: No legacy 'notification-policy' or 'notification-target' options found!
INFO: Check for LVM autoactivation settings on LVM and LVM-thin storages...
PASS: all guest volumes on storage 'local-lvm' have autoactivation disabled
PASS: No problematic volumes found.
INFO: Checking lvm config for thin_check_options...
PASS: Check for correct thin_check_options passed
INFO: Check space requirements for RRD migration...
PASS: Enough free disk space for increa

あれっ? またFAILが1件・・・だと?。なんだなんだ。

FAIL: systemd unit 'pvescheduler.service' is in state 'inactive'

root@pve:~# systemctl status pvescheduler
○ pvescheduler.service - Proxmox VE scheduler
     Loaded: loaded (/lib/systemd/system/pvescheduler.service; enabled; preset: enabled)
     Active: inactive (dead)

とりあえず手動で起動させます。

root@pve:~# systemctl start pvescheduler

root@pve:~# pve8to9 | tee /root/pve8to9_check_postreboot_$(date +%F).log
file /etc/pve/storage.cfg line 26 - ignore config line: prune-backups keep-last=7

= CHECKING VERSION INFORMATION FOR PVE PACKAGES =
Checking for package updates..
PASS: all packages up-to-date
Checking proxmox-ve package version..
PASS: proxmox-ve package has version >= 8.4-0
Checking running kernel version..
PASS: running kernel '6.8.12-16-pve' is considered suitable for upgrade.

= CHECKING CLUSTER HEALTH/SETTINGS =
SKIP: standalone node.

= CHECKING HYPER-CONVERGED CEPH STATUS =
SKIP: no hyper-converged ceph setup detected!

= CHECKING CONFIGURED STORAGES =
PASS: storage 'local' enabled and active.
PASS: storage 'local-lvm' enabled and active.
PASS: storage 'pve-backup' enabled and active.
PASS: storage 'vmstore' enabled and active.
PASS: storage 'vmstore-iso' enabled and active.
INFO: Checking storage content type configuration..
PASS: no storage content problems found
PASS: no storage re-uses a directory for multiple content types.
INFO: Check for usage of native GlusterFS storage plugin...
PASS: No GlusterFS storage found.
INFO: Checking whether all external RBD storages have the 'keyring' option configured
SKIP: No RBD storage configured.

= VIRTUAL GUEST CHECKS =
INFO: Checking for running guests..
WARN: 8 running guest(s) detected - consider migrating or stopping them.
INFO: Checking if LXCFS is running with FUSE3 library, if already upgraded..
SKIP: not yet upgraded, no need to check the FUSE library version LXCFS uses
INFO: Checking for VirtIO devices that would change their MTU...
NOTICE: network interface net0 of vm 900 will have its mtu forced to 9000
PASS: All guest config descriptions fit in the new limit of 8 KiB
INFO: Checking container configs for deprecated lxc.cgroup entries
PASS: No legacy 'lxc.cgroup' keys found.
INFO: Checking VM configurations for outdated machine versions
PASS: All VM machine versions are recent enough

= MISCELLANEOUS CHECKS =
INFO: Checking common daemon services..
PASS: systemd unit 'pveproxy.service' is in state 'active'
PASS: systemd unit 'pvedaemon.service' is in state 'active'
PASS: systemd unit 'pvescheduler.service' is in state 'active'
PASS: systemd unit 'pvestatd.service' is in state 'active'
INFO: Checking for supported & active NTP service..
PASS: Detected active time synchronisation unit 'chrony.service'
INFO: Checking if the local node's hostname 'pve' is resolvable..
INFO: Checking if resolved IP is configured on local node..
PASS: Resolved node IP '192.168.0.241' configured and active on single interface.
INFO: Check node certificate's RSA key size
PASS: Certificate 'pve-root-ca.pem' passed Debian Busters (and newer) security level for 
TLS connections (4096 >= 2048)
PASS: Certificate 'pve-ssl.pem' passed Debian Busters (and newer) security level for 
TLS connections (2048 >= 2048)
INFO: Checking backup retention settings..
PASS: no backup retention problems found.
INFO: checking CIFS credential location..
PASS: no CIFS credentials at outdated location found.
INFO: Checking permission system changes..
INFO: Checking custom role IDs
PASS: no custom roles defined
INFO: Checking node and guest description/note length..
PASS: All node config descriptions fit in the new limit of 64 KiB
INFO: Checking if the suite for the Debian security repository is correct..
PASS: found no suite mismatch
INFO: Checking for existence of NVIDIA vGPU Manager..
PASS: No NVIDIA vGPU Service found.
INFO: Checking bootloader configuration...
PASS: bootloader packages installed correctly
INFO: Check for dkms modules...
SKIP: could not get dkms status
INFO: Check for legacy 'filter' or 'group' sections in /etc/pve/notifications.cfg...
INFO: Check for legacy 'notification-policy' or 'notification-target' options in /etc/pve/jobs.cfg...
PASS: No legacy 'notification-policy' or 'notification-target' options found!
INFO: Check for LVM autoactivation settings on LVM and LVM-thin storages...
PASS: all guest volumes on storage 'local-lvm' have autoactivation disabled
PASS: No problematic volumes found.
INFO: Checking lvm config for thin_check_options...
PASS: Check for correct thin_check_options passed
INFO: Check space requirements for RRD migration...
PASS: Enough free disk space for increased RRD metric granularity requirements, which is roughly 21.00 MiB.
INFO: Checking for IPAM DB files that have not yet been migrated.
PASS: No legacy IPAM DB found.
PASS: No legacy MAC DB found.
INFO: Checking if the legacy sysctl file '/etc/sysctl.conf' needs to be migrated to new '/etc/sysctl.d/' path.
PASS: Legacy file '/etc/sysctl.conf' exists but does not contain any settings.
INFO: Checking if matching CPU microcode package is installed.
PASS: Found matching CPU microcode package 'amd64-microcode' installed.
SKIP: NOTE: Expensive checks, like CT cgroupv2 compat, not performed without '--full' parameter

= SUMMARY =
TOTAL: 46
PASSED: 38
SKIPPED: 6
WARNINGS: 1
FAILURES: 0

ATTENTION: Please check the output for detailed information!

root@pve:~#
フルアップグレードの実行

FAILURES: 0になったので、稼働中の仮想マシンをすべて停止。アップグレードに進みます。
リポジトリをTrixieに変更。更新とフルアップグレードを実行。

root@pve:~# # ① DebianリポジトリをTrixieに変更
sed -i 's/bookworm/trixie/g' /etc/apt/sources.list


# ② 更新とフルアップグレード
apt update
apt full-upgrade

# ③ 再起動
reboot

Get:1  http://security.debian.org trixie-security InRelease [43.4 kB]
Get:2  http://deb.debian.org/debian trixie InRelease [140 kB]
Get:3  http://ftp.jp.debian.org/debian trixie InRelease [140 kB]
Get:4  http://ftp.jp.debian.org/debian trixie-updates InRelease [47.3 kB]
Get:5  http://security.debian.org trixie-security/main amd64 Packages [69.2 kB]
Get:6  http://security.debian.org trixie-security/main Translation-en [45.2 kB]
Get:7  http://deb.debian.org/debian trixie/main amd64 Packages [9,669 kB]
Get:8  http://ftp.jp.debian.org/debian trixie/main amd64 Packages [9,669 kB]
Get:9  http://deb.debian.org/debian trixie/main Translation-en [6,484 kB]
Get:10 http://deb.debian.org/debian trixie/contrib amd64 Packages [53.8 kB]
Get:11 http://deb.debian.org/debian trixie/contrib Translation-en [49.6 kB]
Get:12 http://deb.debian.org/debian trixie/non-free amd64 Packages [100 kB]
Get:13 http://deb.debian.org/debian trixie/non-free Translation-en [67.1 kB]
Get:14 http://deb.debian.org/debian trixie/non-free-firmware amd64 Packages [6,868 B]
Get:15 http://deb.debian.org/debian trixie/non-free-firmware Translation-en [4,704 B]
Hit:16 http://download.proxmox.com/debian/ceph-quincy bookworm InRelease
Hit:17 http://download.proxmox.com/debian/pve bookworm InRelease
Fetched 33.2 MB in 9s (3,754 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
532 packages can be upgraded. Run 'apt list --upgradable' to see them.

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done

The following packages were automatically installed and are no longer required:
  proxmox-kernel-6.8.12-8-pve-signed pve-nvidia-vgpu-helper virtiofsd
Use 'apt autoremove' to remove them.

The following packages will be REMOVED:
  grub-efi-amd64 libarchive13 libcurl3-gnutls libcurl4 libdb5.3 libdbi1 libdw1 libefiboot1 libefivar1 libelf1 libevent-2.1-7 libevent-core-2.1-7
  libext2fs2 libgdbm-compat4 libgdbm6 libglib2.0-0 libgnutls-dane0 libgnutls30 libgnutlsxx30 libgoogle-perftools4 libhogweed6 libipset13
  libisns0 libmagic1 libmpg123-0 libnettle8 libnpth0 liboath0 liborc-0.4-0 libparted2 libpcap0.8 libpng16-16 libprotobuf32 libproxmox-acme-perl
  libproxmox-rs-perl libpsl5 libpve-access-control libpve-cluster-api-perl libpve-cluster-perl libpve-common-perl libpve-guest-common-perl
  libpve-http-server-perl libpve-network-api-perl libpve-network-perl libpve-notify-perl libpve-rs-perl libpve-storage-perl
  libpve-u2f-server-perl librados2-perl librdmacm1 libreadline8 librrd8 libsmbclient libssh2-1 libssl3 libtcmalloc-minimal4 libtevent0
  libtirpc3 liburcu8 libuv1 libzfs4linux libzpool5linux lxc-pve proxmox-firewall proxmox-grub proxmox-ve pve-cluster pve-container pve-firewall
  pve-ha-manager pve-manager python3-distutils python3-lib2to3 qemu-server

The following NEW packages will be installed:
  build-essential cpp cpp-14 cpp-14-x86-64-linux-gnu cpp-x86-64-linux-gnu dkms dpkg-dev dracut-install fakeroot fonts-dejavu-mono fuse3 g++
  g++-14 g++-14-x86-64-linux-gnu g++-x86-64-linux-gnu gcc gcc-14 gcc-14-base gcc-14-x86-64-linux-gnu gcc-x86-64-linux-gnu
  ...(中略:Trixie 向け t64 ライブラリと開発パッケージ)...

531 upgraded, 179 newly installed, 74 to remove and 0 not upgraded.
Need to get 394 MB of archives.
After this operation, 618 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://deb.debian.org/debian trixie/non-free-firmware amd64 amd64-microcode amd64 3.20250311.1 [278 kB]
Get:2 http://security.debian.org trixie-security/main amd64 libjson-xs-perl amd64 4.040-1~deb13u1 [91.0 kB]
...(中略:パッケージダウンロードと展開ログ)...

Fetched 394 MB in 44s (8,876 kB/s)

W: (pve-apt-hook) !! WARNING !!
W: (pve-apt-hook) You are attempting to remove the meta-package 'proxmox-ve'!
W: (pve-apt-hook)
W: (pve-apt-hook) If you really want to permanently remove 'proxmox-ve' from your system, run the following command
W: (pve-apt-hook) touch '/please-remove-proxmox-ve'
W: (pve-apt-hook) run apt purge proxmox-ve to remove the meta-package
W: (pve-apt-hook) and repeat your apt invocation.
W: (pve-apt-hook)
W: (pve-apt-hook) If you are unsure why 'proxmox-ve' would be removed, please verify
W: (pve-apt-hook) - your APT repository settings
W: (pve-apt-hook) - that you are using 'apt full-upgrade' to upgrade your system
E: Sub-process /usr/share/proxmox-ve/pve-apt-hook returned an error code (1)
E: Failure running script /usr/share/proxmox-ve/pve-apt-hook

root@pve:~#

WARNINGメッセージ。proxmox-ve の新バージョン(9.x対応パッケージ)が見つからず、
APT は「依存関係を解決するため削除しよう」と判断 → pve-apt-hook にブロックされました。

/etc/apt/sources.list はbookworm → trixieに切り替えていましたが、Proxmoxリポジトリ がまだ bookworm のままだったようです。

pve-no-subscription.list 再作成

PVE8.3を初期インストールしたときに、pve-no-subscription.listを削除、/etc/apt/sources.listに直接、リポジトリ設定をしていたのがまずかったようです。ファイルを再作成しました。

root@pve:~# cat /etc/apt/sources.list.d/pve-no-subscription.list

deb http://download.proxmox.com/debian/pve trixie pve-no-subscription
ceph.sources を作成

下記の内容でファイル作成しました。

root@pve:~# cat /etc/apt/sources.list.d/ceph.sources

Types: deb
URIs: http://download.proxmox.com/debian/ceph-squid
Suites: trixie
Components: no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
リポジトリ修正確認

リポジトリ構成と参照先を確認します。

root@pve:~# apt update
Hit:1 http://deb.debian.org/debian trixie InRelease
Hit:2 http://security.debian.org trixie-security InRelease
Hit:3 http://ftp.jp.debian.org/debian trixie InRelease
Hit:4 http://ftp.jp.debian.org/debian trixie-updates InRelease
Ign:5 http://download.proxmox.com/debian/ceph-quincy trixie InRelease
Get:6 http://download.proxmox.com/debian/ceph-squid trixie InRelease [2,736 B]
Get:7 http://download.proxmox.com/debian/pve trixie InRelease [2,771 B]
Err:8 http://download.proxmox.com/debian/ceph-quincy trixie Release
  404  Not Found [IP: 2402:1f00:8001:f7a::65 80]
Get:9  http://download.proxmox.com/debian/ceph-squid trixie/no-subscription amd64 Packages [33.2 kB]
Get:10 http://download.proxmox.com/debian/pve trixie/pve-no-subscription amd64 Packages [243 kB]
Reading package lists... Done
E: The repository 'http://download.proxmox.com/debian/ceph-quincy trixie Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
root@pve:~#


root@pve:~# apt policy proxmox-ve ceph | grep -E 'http|Candidate|Installed'
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

Installed: 8.4.0
Candidate: 9.0.0
  500 http://download.proxmox.com/debian/pve trixie/pve-no-subscription amd64 Packages

Installed: (none)
Candidate: 19.2.3-pve2
  500 http://download.proxmox.com/debian/ceph-squid trixie/no-subscription amd64 Packages
  500 http://download.proxmox.com/debian/pve trixie/pve-no-subscription amd64 Packages
  500 http://ftp.jp.debian.org/debian trixie/main amd64 Packages
  500 http://deb.debian.org/debian trixie/main amd64 Packages
root@pve:~#

不要な古いリポジトリが残っているため、それを削除します。

root@pve:~# ls /etc/apt/sources.list.d/
ceph.list  ceph.sources  pve-enterprise.list  pve-no-subscription.list

ceph.list は旧「ceph-quincy」由来、pve-enterprise.list は有料リポジトリ(使わない)、この2つは削除します。

rm -f /etc/apt/sources.list.d/ceph.list
rm -f /etc/apt/sources.list.d/pve-enterprise.list

再度、リポジトリ構成と参照先を確認します。

root@pve:~# apt update
Hit:1 http://deb.debian.org/debian trixie InRelease
Hit:2 http://ftp.jp.debian.org/debian trixie InRelease
Hit:3 http://ftp.jp.debian.org/debian trixie-updates InRelease
Hit:4 http://security.debian.org trixie-security InRelease
Hit:5 http://download.proxmox.com/debian/ceph-squid trixie InRelease
Hit:6 http://download.proxmox.com/debian/pve trixie InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
597 packages can be upgraded. Run 'apt list --upgradable' to see them.
root@pve:~#

アップグレード準備(ようやく)完了

えー、苦労しているの、自分だけっすか・・・。めちゃくちゃ大変でした。自分で仕掛けていたタイムマシントラップもありましたが。
リポジトリの書き換え自体は sed 一発ですが、問題は Proxmox 固有のリポジトリ管理。Debian 側が新しくても、Ceph 側が古いまま残ってると apt が止まる。しかも “quincy” が “squid” に統合されたことを知らないままだと、どんなに sources.list を綺麗にしても 404 に悩まされる。ナニコレ。

おしまい。(2)へつづく

コメント

タイトルとURLをコピーしました