Костыль для нормальной остановки витуалок под virtualbox в nas4free

May 15, 2017 22:46

ВАЖНО В более поздних сборках описанный костыль создаёт дополнительные проблемы и к применению НЕ рекомендую.

Актуальная сборка nas4free (11.0.0.4.4249) имеет баг. Если попытаться выключить виртуалку через vnc клиент, то процесс никогда не завершается и остаётся в состоянии Stopping... Обидно, что проблема уже возникала и была адресована. Как выяснилось, в библиотеке VNC сервера есть баг. Последняя версия без бага 0.9.9

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

(1) закрыть VNC сервер перед выключением виртуалок. А выключать через команду из phpVirtualBox - неудобно и не всегда возможно

(2) подменить библиотеку на рабочую, что элементарно в full версии но потребует небольшого бубна в embedded.

Рабочую библиотеку я поленился сам компилировать и вытащил из старой ревизии nas4free (11.0.0.4.3252). Tar с библиотекой у меня на я диске.

1) Подгружаем tar и кладём его на один из дисков NAS, например у меня на /mnt/Pool/Media

2) Выбираем место для библиотеки, которое переживёт перезагрузку и где у нас будет лежать правильная библиотека, например у меня /mnt/Pool/Ext/Extensions

3) Идём в командную строку и распаковываем на место
cd /mnt/Pool/Media
tar -xvf libvnc.tar
mv libvncserver.so.0 /mnt/Pool/Ext/Extensions

4) Создаём командный скрипт
cd /mnt/Pool/Ext/Extensions
nano libvnc.sh

Его содержимое у меня (замените /mnt/Pool/Ext/Extensions на папку из п 2)

#!/bin/sh
cd /usr/local/lib
cp -a /mnt/Pool/Ext/Extensions/libvncserver.so.0 ./
mv libvncserver.so.1 libvncserver.so.1.bak
ln -s libvncserver.so.0 libvncserver.so.1

5) Создаём командный скрипт, тип PostInit
/bin/sh /mnt/Pool/Ext/Extensions/libvnc.sh


(в принципе, и весь скрипт можно уложить с строку)

6) Перегружаемся

7) Проверяем, что библиотеки подменились

nas4free // root~$ ls /usr/local/lib/libvnc*
/usr/local/lib/libvncserver.so.0* /usr/local/lib/libvncserver.so.1.bak*
/usr/local/lib/libvncserver.so.1@

8) Проверяем, что виртуалки теперь останавливаются.

PS1 Респект камраду
Evgeny Sokolov за идентификацию проблемы и разъяснения.

PS2 Если есть желание, можно в оффоруме поблагодарить разрабов nas4free, пожаловаться на проблему здесь и ВЕЖЛИВО по английски попросить исправить удобным им способом.

vnc, virtual, nas, nas4free

Previous post Next post
Up