Proxmox auf M.2 SSD

Virtualisierung, aber schnell!
Neueste M.2-SSDs brechen Geschwindigkeitsrekorde, machen das System flott. Leider werden diese SSDs von nur wenigen BIOSen unterstützt. Das System kann nicht von diesen Speichern booten. Kürzlich habe ich einen Dell R610 mit einer solchen SSD ausgestattet. Dem neuesten UEFI von Dell fehlt allerdings die Firmware, um diese SSD zum auslesen des Bootloaders anzusprechen.

Kleiner Workaround:
  • Booten vom USB-Stick
  • Proxmox auf nvme
Wie das funktioniert, beschreibe ich hier. Die Installation erfordert einige manuelle Eingriffe, da die automatische Installation von Proxmox leider nur einen einzigen voll partitionierten Datenträger zur Installation vorschreibt.
1. Installation von Proxmox auf der SSD
Den normalen Installationsvorgang bis vor dem Reboot abschließen.
Im letzten Bild statt auf "Reboot", mit Strg+Alt+F1 in das erste Terminal wechseln und die Installationsroutine mittels Strg+c unterbrechen. So bekommt man eine bash. Im System sollte bereits ein USB-Stick vorhanden sein.
lsblk
verrät, unter welchem Device-Namen dieser erkannt wurde.
Jetzt kopieren wir uns die Boot-Partitionen auf den USB-Stick: Wir benötigen den Sektor, an dem die Boot-Partitionen enden. Einschließlich diesem wollen wir diese auf den USB-Stick kopieren.
root@pve:~# fdisk -l /dev/nvme0n1
Disk /dev/nvme0n1: 232.9 GiB, 250059350016 bytes, 488397168 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
Disklabel type: gpt
Disk identifier: D3E7C153-1B81-4F58-841E-30B64271EC44

Device          Start       End   Sectors   Size Type
/dev/nvme0n1p1   2048      4095      2048     1M BIOS boot
/dev/nvme0n1p2   4096    528383    524288   256M EFI System
/dev/nvme0n1p3 528384 488397134 487868751 232.6G Linux LVM
Bis einschließlich Sektor 528383 kopieren wir jetzt die Daten roh auf den USB-Stick.
root@pve:~# dd if=/dev/nvme0n1 of=/dev/sdX count=528383
Nicht korrekt aber einfach. Dies hinterlässt eine kaputte GPT-Partitionstabelle. Die reparieren wir jetzt mit
root@pve:~# fdisk /dev/sdX
Dann legen wir ferner, wieder mit fdisk eine neue Partition auf dem USB-Stick an.
root@pve:~# fdisk /dev/sdX
n - für neue Partition
First Sektor: lassen, wie er ist
Size +1G
Type: 20 (Linux Partition)
w - auf Speicher schreiben
Anschließend erstellen wir das Dateisystem auf der neuen Partition
root@pve:~# mkfs.ext3 /dev/sdX3
Im Schnelldurchlauf:
root@pve:~# mount /dev/mapper/pve-root /target
root@pve:~# mv /target/boot /target/_boot
root@pve:~# mkdir /target/boot
root@pve:~# mount /dev/sdX3 /target/boot

# PARTUUID greppen
root@pve:~# lsblk /dev/sdX3 -o export | grep PARTUUID

# Dem neuen System den alternativen Speicherort von /boot bekannt machen
root@pve:~# vi /target/etc/fstab
PARTUUID="xxxxxx-xxxx-xxxx-xxxx-xxxxxxxx" /boot ext3 errors=remount-ro 0 1

# Die initrd und grub-Installation auf den USB-Stick verschieben
root@pve:~# mv /target/_boot /target/boot

# update-grub braucht diese Informationen im chroot, also mounten wir sie
root@pve:~# mount -t proc none /target/proc
root@pve:~# mount -o bind /dev /target/dev
root@pve:~# mount -t sysfs sys /target/sys
root@pve:~# chroot /target /bin/bash
root@pve:/# update-grub2
root@pve:/# sync
update-grub2 sollte fehlerfrei durchlaufen und die grub.cfg im /target dementsprechend um den neuen Speicherort der initrd aktualisieren. Fertig. Neustart.

Wenn alles geklappt hat, läd jetzt selbst ein altes BIOS oder UEFI ohne NVME-Firmware die initrd vom USB-Stick. Die initrd enthält die nötigen Treiber zum mounten der SSD und das System rennt.

--- JavaScript not activated ---