dadv: (Default)
Попробовал тут понастраивать bhyve и заодно взглянуть на Windows 11, взятую с первого попавшегося торрента на рутрекере.

bhyve завёл на домашнем роутере (FreeBSD 12.3/amd64), мелкая железка на чипсете Intel Q270 с питанием от 12 вольт.

Read more... )

Процессор Intel i5-7200U @ 2.50GHz с двумя ядрами без гипертрединга, 32GB памяти.

Оказалось довольно просто (сразу скажу: никаких SecureBoot и TPM 2.0 не потребовалось). Первым делом включаем в /etc/rc.conf подгрузку ядерных модулей для работы bhyve: kld_list="nmdm vmm" (и подгружаем их через kldload).

Добавляем в систему портами или пакетами sysutils/bhyve-firmware и sysutils/vm-bhyve, в моём случае получились bhyve-firmware-1.0_1 и vm-bhyve-1.4.2.

В /etc/rc.conf добавляем на время создания виртуалки:
vm_enable="YES"
vm_dir="/usr/local/etc/vm" # или vm_dir="zfs:poolname/vm"


Создаём конфигурацию гипервизора для виртуалки командой vm create -t windows -s 120G win11, где "windows" имя шаблона, а "win11" имя новой виртуалки. Эта команда создала win11.conf, в который я немедленно залез редактором.

Поменял memory=2G на memory=8G; закомментировал network0_type и network0_switch, чтобы во время установки у виртуалки не было сети.

Там же была строчка disk0_name="disk0.img", указывающая на 120-гигабайтный файл-образ disk0.img, который создала команда vm create выше. Это мне не подходит, так как нужна возможность создавать снапшоты, так что поменял этот блок настроек на следующее:

disk0_type="ahci-hd"
disk0_dev="custom"
disk0_name="/dev/zvol/z/win11"


Удалил disk0.img и создал zvol с "секторами" 4K:
zfs create -o compression=lz4 -V 120g -b 4096 z/win11

Положил инсталляционный ISO в vm/.iso/win11.iso и запустил установку:
vm install win11 win11.iso

После начала установки подключился к системе VNC-клиентом, получил экран с предложением запустить инсталляцию с CD/DVD. Установка прошла совершенно гладко, с тремя ребутами (VNC каждый раз приходилось переподключать). После появления десктопа выбрал завершение работы системы и поглядел показания ZFS:
z/win11  referenced            3.96G                  -
z/win11  compressratio         1.10x                  -
z/win11  volsize               120G                   local
z/win11  volblocksize          4K                     -
z/win11  compression           lz4                    local
z/win11  written               3.96G                  -
z/win11  logicalused           4.32G                  -

Настало время дать виртуалке сеть. Мне не нравится идея бриджевать виртуалки по умолчанию, я предпочитаю роутить гостевой трафик средствами хоста, а заодно фильтровать и делать NAT. Поэтому не стал раскомментировать настройки network0_*, а вместо этого добавил в конфиг виртуалки:
bhyve_options="-s 2,e1000,tap0"

То есть, посадил эмулируемую сетевую карту Intel на PCI-шину 2 с подключением к системному интерфейсу tap0, который создается через /etc/rc.conf:

cloned_interfaces="tap0"
ifconfig_tap0="inet 192.168.100.1/30 link0"
ifconfig_tap0_descr="Windows 11"


Флаг link0 запрещает отключать (down) сетевой интерфейс при гашении виртуалки, вместо этого у него просто будет статус no carrier.

Ещё полезно в конфиг виртуалки добавить graphics_res="1856x960", чтобы увеличить размер рабочего стола Windows до указанного размера с дефолтных 1024x768. Циферки подбирайте под себя, я выбрал такие, чтобы в VNC не было скроллинга и окно VNC вместе с декорациями влазило в разрешение FullHD.

dadv: (chuck)
На моей клавиатуре клавиши PrintScreen/ScrollLock/PauseBreak расположены вплотную к Insert/Home/PageUp, без промежутка. Поэтому при использовании комбинации Shift+Insert для вставки текста из буфера обмена под Windows частенько промахиваюсь и получается Shift+PrintScreen, что эквивалентно простому нажатию PrintScreen. В итоге вместо вставки нужный текст в буфере обмена удаляется, заменяясь скриншотом экрана. Заколебало это достаточно, чтобы попытаться отключить реакцию системы на Shift+PrintScreen, оставив "просто" PrintScreen работающим.

Открыл для себя AutoHotKey - opensource, распространяется в откомпилированном виде тоже (с инсталлятором). По инструкциям в QuickStart в справке создаём в Notepad текстовый файл со специальным расширением, ps.ahk:

+PrintScreen::
    Keywait, PrintScreen
    Return

Плюс означает Shift. Между Keywait и Return нет никаких действий, то есть реакция на Shift+PrintScreen пустая. Получилось ровно так, как нужно: теперь Shift+PrintScreen ничего не делает, а PrintScreen работает, как прежде.

Закинул скрипт в папку "Автозагрузка". Эту папку в Windows 8.1 проще всего найти, выполнив (Win+R) "команду" shell:startup. В моём случае это получилось "C:\Users\username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup".

dadv: (chuck)

Досталась в управление старая "технологическая" инсталляция Windows XP, подключенная к офисной АТС для управления, ведения журнала и записи звонков операторов. Работает на машине с материнской платой Asus P5GV-MX, SATA-контроллер ICH6, один диск SATA, четыре порта SATA на плате. Первым делом захотелось поставить второй диск и организовать хотя бы программное зеркалирование.

Решил проверить на практике справедливость этой статьи. Только сделать не RAID5, а зеркало.

Потренировался на такой же WinXP, установленной внутри VirtualBox на "диске" в 10GB. Создал ей второй такой же диск, после загрузки XP его увидела и сразу предложила сконвертировать в динамический - сделал. После этого конвертировал в динамический первый диск, который system & boot - несмотря на предупреждения, он чисто конвертировался и остался загрузочным (на MS TechNet предупреждение о незагружабельности результата такой конверсии уточнено - загружаться не будет, если на одном разделе установлено несколько разных вариантов Windows в разные каталоги).

После этого в контекстном меню раздела C: в управлении дисками появился неактивный пункт для зеркалирования. Сделал битхак dll, как указано в статье, и пункт стал активным. Выбрал его, указал второй диск для создания зеркала и пошла "регенерация" (синхронизация).

После завершения процесса потестировал разные виды сбов. Удалил первый диск из виртуалки и NTLoader загрузил систему с оставшегося secondary plex.

Создал новый чистый диск, подсунул виртуалке, сказал ей синхронизировать на него - синхронизировала без проблем.

Теперь минусы. Если смоделировать удаление первого из двух дисков, загрузиться со второго, погасить систему и подсунуть обратно удаленный диск - загрузка уже не идёт, падает в синий экран и уходит в ребут, тут нужно в NTLoader выбрать вручную загрузку со второй половинки, тогда загружается.

Не умеет возобновлять прерванную перезагрузкой синхронизацию зеркала - начинает синхронизировать с нуля.

dadv: (chuck)

Периодически при разных комбинациях версий VirtualBox и Java в Windows guest проявляется проблема: Java-приложения, использующие GUI (AWT), при старте начинают жрать около 100% CPU и ничего не рисуют. Проблема как-то связана с поддержкой Direct3D в VirtualBox. Кроме полного отказа от Direct3D в Windows guest (установка guest additions без поддержки Direct3D) есть ещё workaround: отключить использование функций Direct3D в Java AWT. Для этого достаточно создать переменную окружения (environment) J2D_D3D=false. Можно глобально в свойствах системного или пользовательского профиля, можно выставлять непосредственно перед запуском Java или браузера, если Java-апплет стартует из браузера.

У меня сейчас есть две инсталляции VirtualBox 4.2.12 (OSE), в каждой Windows XP с DirectX 9.0c и Guest Additions и Java 7 Update 25, на одной Java работает нормально, на второй "виснет" при старте, но при использовании J2D_D3D=false виснуть перестаёт.

Источник: https://www.virtualbox.org/ticket/6873

dadv: (Default)

Итак, мы едем в отпуск и, конечно же, прихватываем с собой свой верный ноутбук с офигительным количеством гигабайт внутри. Есть вероятность, что найдется время поиграть в заброшенное когда-то давно "Дыхание смерти" из честно купленного HMM3 Platinum ("Девочка, ты что, правда не пьешь и не куришь? - Правда. Не могу больше.")

Но оно хочет игровой CD-диск (второй из сборника 3CD) и без него играть не хочет, а брать с собой в поездку лишние компакты, особенно при наличии сотен гигабайт внутри ноута, как-то глупо. Ставить "левые" коммерческие или даже фриварные тулзы для эмуляции виртуального CD несколько стрёмно - был отрицательный опыт, большинство из них написаны кривыми руками и поганят в системе, да и деинсталлироваться нормально не умеют.

Делаем раз: при помощи Small CD Writer (420Kb) читаем игровой диск в ISO-образ (405M).
Делаем два: открываем http://support.microsoft.com/kb/916902, качаем оттуда по ссылке Microsoft VirtualCD (32K в двух файлах), читаем внутри инструкцию и выполняем её. После чего получаем виртуальный Z: (CD-ROM).
Делаем три: в реестре в разделе HKEY_LOCAL_MACHINE\SOFTWARE\Buka\3DO\Heroes of Might and Magic III Complete Platinum\1.0 меняем параметр CDDrive на Z: и ставим коробочку с HMM3 Platinum на полку.

MS VirtualCD был написан для XP, но работает и с Vista, и с Win7 (последнее проверено мной лично). Ставил при отключенном UAC.

dadv: (Default)

Дано: домашний ноутбук с Windows в руках далеких от IT людей, поэтому подключение к интернету через DIR-320 (штатная прошивка).

Надо: после загрузки машины и установления соединения поднимать PPtP-коннект к конкретному серверу с конкретным именем и паролем, штатными виндовыми средствами.

Решение:

  1. настраиваем подключение к DIR-320 через DHCP (проводное или беспроводное, не важно), так как нам нужно привязаться к событию "сеть работает" (при этом можно настроить роутер выдавать статический или динамический адрес, не важно);
  2. создаем и настраиваем VPN-подключение, проверяем, что вручную оно нормально подключается (при создании разрешаем сохранение пароля и использование подключения другими пользователями - это нужно, чтобы при "быстром переключении пользователей" и завершении пользовательской windows-сессии система не разрывала PPtP-коннект);
  3. идем в панель управления - администрирование - планировщик заданий - библиотека планировщика - ПКМ* по пустому месту в списке заданий - создать новую задачу:

    1. как-нибудь называем задание (описание можно пропустить), изменяем учетную запись на "система", выбираем "выполнять вне зависимости от регистрации пользователя", ставим галку "не сохранять пароль" (потому что не нужно) и "Выполнить с наивысшими правами" (обязательно надо);
    2. в следующей вкладке "Триггеры" создаем "При событии" - простое - Журнал Microsoft-Windows-DHCP Client Events/Администратор, источник "Dhcp-Client", код события 50067 (получение адреса);
    3. в следующей вкладке "Действия" создаем действие "Запуск программы", в поле "Программа или сценарий" просто вписываем rasdial, в аргументах указываем последовательно через пробел имя соединения PPtP, логин и пароль;
    4. в следующей вкладке "Условия" ставим галку "Запускать только при подключении к следующей сети" и выбираем подключение к роутеру - это особенно важно для беспроводного подключения, так как между получением адреса по DHCP и реальным поднятием сети есть временнОе окно и запуск rasdial в этом окне может приводить к "подвисанию" PPtP-соединения;
    5. в следующей вкладке "Параметры" ставим галку "Разрешать выполнение задачи по требованию", чтобы можно было её потестировать вручную, при сбое выполнения перезапускать через 1 минуту (жаль, нельзя быстрее) - rasdial возвращает ненулевой код ошибки при сбое (например, PPtP-сервер задаётся именем, а не по IP и ресолвинг не прошел), количество попыток перезапуска я ставлю 999 раз;

  4. тестируем задание, запустив его вручную при поднятом подключении к роутеру и не подключенном PPtP-коннекте - он должен подключиться; затем вручную его отключаем, отключаем соединение к роутеру и снова его подключаем - PPtP должен подняться силами планировщика; после чего можно перезагрузить систему, чтобы проверить автоматическую отработку всей цепочки.

Проверено для Windows 7 Ultimate. При попадании в упомянутое "временное окно" планировщик задерживает выполнение задачи на минуту, поэтому PPtP иногда будет запускаться с задержкой.


ПКМ - правая кнопка мышки

Profile

dadv: (Default)
Choose your future

July 2024

M T W T F S S
12 34567
891011121314
15161718192021
22232425262728
293031    

Syndicate

RSS Atom

Tags

Style Credit

Powered by Dreamwidth Studios