====== OVH — установка любого Windows через bin456789/reinstall ====== Универсальный способ переустановить **выделенный сервер OVH** (UEFI) на любую версию Windows с помощью скрипта [[https://github.com/bin456789/reinstall|bin456789/reinstall]]. Алгоритм проверен на сервере OVH (платформа ASRockRack, AMI UEFI, 2×NVMe, Ryzen). Ниже — пошаговый рецепт «на будущее». **Плейсхолдеры:** ''%%%%'' — адрес сервера; ''%%%%'' / ''%%%%'' — доступ к установленной Linux/rescue (в Debian это НЕ root, а обычный пользователь с sudo); ''%%%%'' (обычно administrator), ''%%%%'', ''%%%%'' (обычно 3389). ===== Главная проблема OVH: RAID1 по всем дискам ===== Инсталлятор OVH ставит Linux на программный RAID1 (mdadm) сразу поверх всех NVMe: * md1 -> p1 = /boot/efi (ESP) * md2 -> p2 = /boot * md3 -> p3 = / Тогда reinstall.sh в EFI-ветке определяет целевой диск по ESP (/boot/efi -> /dev/md1 -> lsblk ''%%--inverse%%'') и получает **два диска** — из-за этого efibootmgr собирается криво и падает с ошибкой ''%%Could not add efi entry%%''. Главный диск (/ -> /dev/md3) тоже даёт два диска, и скрипт уходит в интерактивный выбор. **Лечится разбором RAID на всех дисках, кроме целевого.** ===== Шаг 0 — диагностика ===== Подключаемся к установленной Linux (например, Debian из rescue/инсталлятора OVH) и собираем данные: ssh @ sudo -i lsblk -o NAME,SIZE,TYPE,PARTUUID,FSTYPE,MOUNTPOINT cat /proc/mdstat findmnt -T /boot/efi -no SOURCE # например /dev/md1 findmnt -no SOURCE / # например /dev/md3 lsblk -rn --inverse /dev/md1 | grep -w disk # два диска = проблема efibootmgr mokutil --sb-state # должно быть SecureBoot disabled apt-get install -y mdadm gdisk util-linux efibootmgr ===== Шаг 1 — разбираем RAID на лишнем диске ===== Оставляем один целевой диск (например, /dev/nvme0n1), второй (''%%%%'', например /dev/nvme1n1) освобождаем и чистим: swapoff p4 2>/dev/null mdadm /dev/md1 --fail p1 && mdadm /dev/md1 --remove p1 mdadm /dev/md2 --fail p2 && mdadm /dev/md2 --remove p2 mdadm /dev/md3 --fail p3 && mdadm /dev/md3 --remove p3 mdadm --zero-superblock p1 p2 p3 sgdisk --zap-all wipefs -a efibootmgr -b -B # убрать битую запись от стёртого диска Проверяем, что оба массива теперь указывают только на целевой диск: lsblk -rn --inverse /dev/md1 | grep -w disk lsblk -rn --inverse /dev/md3 | grep -w disk ===== Шаг 2 — (по желанию) восстанавливаем Linux-запись ===== Если после затирания лишнего диска запись в NVRAM осталась битой, пересоздаём её на целевом диске: efibootmgr -c -d -p 1 -L linux -l '\EFI\\grubx64.efi' ===== Шаг 3 — запускаем reinstall.sh ===== cd "$HOME" curl -fsSL -O https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.sh bash reinstall.sh windows \ --image-name "Windows Server 2022 ServerStandard" \ --lang en \ --username \ --password "" \ --rdp-port \ --allow-ping \ --force-boot-mode efi Аргумент ''%%--image-name%%'' берётся из списка в README проекта. Для Windows Server 2022: ''%%ServerStandard%%'' = **Desktop Experience (GUI)**; ''%%ServerStandardCore%%'' = Core. Для других ОС указывается свой ''%%--image-name%%'' или свой ''%%--iso%%'' (ссылка на образ). Скрипт сам: находит ISO, определяет **MAIN DISK**, скачивает grub и netboot, собирает initrd, создаёт EFI-запись и выставляет BootNext. ===== Шаг 4 — ручная перезагрузка ===== Скрипт **сам не перезагружает** — перезагружаем вручную: efibootmgr | head -3 # BootNext должен указывать на новую запись reinstall sync && reboot После ребута grub грузит Alpine netboot, он скачивает ISO, распаковывает образ напрямую на диск (wimlib), прописывает BCD и перезагружается уже в Windows. ===== Шаг 5 — проверка результата ===== nc -z -G3 # OPEN = Windows/RDP поднялся Подключение по RDP с рабочей машины: xfreerdp /v: /u: /p:'' /cert:ignore ===== Важные нюансы ===== * **''%%ServerStandard%%'' = Desktop Experience (GUI)**; ''%%...ServerStandardCore%%'' = Core. Для RDP нужен вариант с GUI. * reinstall.sh — **неинтерактивная** установка: экрана установщика Windows нет, наблюдать можно только через KVM/BMC. Во время установки live-окружение доступно по SSH под **тем же** ''%%--username%%'' (не root!), веб-лог открывается на ''%%http:///%%'' (путь печатает скрипт). * После установки в панели OVH выставить Boot -> **Hard disk**, иначе ребут может снова уйти в PXE/netboot. * Secure Boot должен быть **выключен** (иначе скрипт откажется устанавливать). * Функция ''%%get_part_num_by_part /dev/mdN%%'' берёт последние цифры имени (md1 -> «1»); на OVH md1 = ESP (p1), поэтому номер совпадает и efibootmgr собирается корректно **после** разбора RAID. * Установка поддерживает Windows Vista — 11 и Windows Server 2008 — 2025, в том числе серверные редакции. Полный список ''%%--image-name%%'' и ''%%--lang%%'' — в README проекта. ===== Полезные ссылки ===== * [[https://github.com/bin456789/reinstall|Проект bin456789/reinstall на GitHub]] * [[https://github.com/bin456789/reinstall/blob/main/README.md|README проекта (список ''%%--image-name%%'' и ''%%--lang%%'')]] * [[https://ntriver.org/download-windows-office|ntriver.org — каталог официальных ISO Windows]] * [[https://massgrave.dev/genuine-installation-media|massgrave.dev — официальные установочные образы]]