Как использовать собственный образ на VPS

В этой инструкции описано, как записать собственный образ напрямую на диск вашего VPS из режима Resque. После перезагрузки VPS сразу запустит систему из образа.

Внимание

Запись образа полностью перезаписывает диск VPS. Все данные на сервере, включая текущую операционную систему, будут безвозвратно удалены. Перед началом сделайте резервную копию всего, что вам нужно.

Форматы образов

Готовые образы обычно распространяются в форматах .img, .raw или .qcow2, часто упакованные в архив .zip или .gz. Образы .img и .raw можно записывать как есть, а .qcow2 нужно сначала сконвертировать в .raw (например, командой qemu-img convert -O raw image.qcow2 image.raw). В Resque-системе это сделать нельзя.

  1. Войдите в панель SolusVM: https://vps-panel.veesp.com:443, используя ваше имя пользователя и пароль со страницы услуги VPS во вкладке "Login Details".

    Login into Control Panel

  2. Перейдите в режим "Resque"

    Enter Resque mode

  3. Нажмите "Enable Resque Mode" и подтвердите нажатием "Yes"

    Enable Resque mode

    После включения — Resque Mode может стать доступным в сети через несколько минут

  4. Подключитесь по SSH к вашей ВМ из терминала, используя "Resque SSH connection details"

    SSH into Resque

    Руководство: Как подключиться к моему Linux VPS по SSH?

  5. Найдите диск вашего VPS с помощью команды lsblk:

    lsblk
    

    Пример вывода:

    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0   40G  0 disk
    ├─sda1   8:1    0    1M  0 part
    └─sda2   8:2    0   40G  0 part
    sr0     11:0    1 1024M  0 rom
    vda    254:0    0  1.1G  0 disk
    └─vda1 254:1    0  1.1G  0 part /
    

    Диск вашего VPS — тот, размер которого соответствует вашему тарифу, в этом примере sda (40G). Используйте весь диск (/dev/sda), а не раздел вроде /dev/sda2.

    Внимание

    Небольшой диск, смонтированный в / (здесь vda, 1.1G), — это сама Resque-система. Никогда не записывайте образ на него.

  6. Скачайте образ и запишите его на диск. В Resque-системе нет curl и wget, поэтому используйте python3. Выберите вкладку с форматом вашего образа, укажите прямую ссылку на образ в строке URL и замените /dev/sda на ваш диск из шага 5:

    URL="http://example.com/image.raw"
    python3 -c "import urllib.request,shutil,sys; shutil.copyfileobj(urllib.request.urlopen(sys.argv[1]), sys.stdout.buffer)" "$URL" | dd of=/dev/sda bs=4M status=progress conv=fsync
    
    URL="http://downloads.openwrt.org/releases/25.12.5/targets/x86/64/openwrt-25.12.5-x86-64-generic-ext4-combined.img.gz"
    python3 -c "import urllib.request,zlib,sys; r=urllib.request.urlopen(sys.argv[1]); d=zlib.decompressobj(31); [sys.stdout.buffer.write(d.decompress(c)) for c in iter(lambda: r.read(1048576), b'')]" "$URL" | dd of=/dev/sda bs=4M status=progress conv=fsync
    

    Архив .zip нужно сначала скачать. Проверьте, что хватает свободного места, командой df -h /, затем скачайте архив и запишите образ из него:

    URL="http://download.mikrotik.com/routeros/7.24.6/chr-7.24.6.img.zip"
    python3 -c "import urllib.request,shutil,sys; shutil.copyfileobj(urllib.request.urlopen(sys.argv[1]), open('/root/image.zip','wb'))" "$URL"
    python3 -c "import zipfile,shutil,sys; z=zipfile.ZipFile('/root/image.zip'); shutil.copyfileobj(z.open(z.namelist()[0]), sys.stdout.buffer)" | dd of=/dev/sda bs=4M status=progress conv=fsync
    

    Примечание

    Resque-система может скачивать только по ссылкам http://: ссылки https:// завершаются ошибкой CERTIFICATE_VERIFY_FAILED. Если вы видите 0 bytes copied, скачивание не удалось и на диск ничего не записано.

    Примечание

    Перед нажатием Enter ещё раз проверьте значение of=. dd не запрашивает подтверждения.

  7. Сбросьте все данные на диск и проверьте результат:

    sync
    blockdev --rereadpt /dev/sda
    lsblk -f /dev/sda
    

    Под вашим диском должны появиться разделы из образа вместо старых.

  8. Нажмите "Disable Resque Mode" — сервер перезагрузится.

  9. Откройте консоль VNC. VPS загрузит систему из образа. Войдите с данными по умолчанию для этого образа.

    Руководство: Как подключиться к серверу с помощью Консоли (VNC)?