Site icon UZLEC.ru — Узлец блог

Вшиваем таблицы SLIC в Linux KVM/QEMU/Bochs

Рассмотрим каким образом в виртуальные машины Linux KVM/QEMU/Bochs можно добавить таблицы SLIC, которые используются для активации Windows 7/2008/8/2012.
Данные наработки основаны на материалах, найденных в данных форумах:
http://forums.mydigitallife.info/threads/12401-Modified-Bios-for-KVM-Qemu-Bochs-Bios
http://forum.proxmox.com/threads/6772-Proxmox-and-SeaBIOS-additional-parameters

Имеем ОС openSUSE 12.2 (x86_64):

Linux vs 3.4.33-2.24-desktop #1 SMP PREEMPT Tue Feb 26 03:34:33 UTC 2013 (5f00a32) x86_64 x86_64 x86_64 GNU/Linux

KVM установлен из репозитария YaST:

QEMU emulator version 1.1.1 (kvm-1.1.1-1.8.1), Copyright (c) 2003-2008 Fabrice Bellard

Задача сводится к тому, что нам необходимо заменить SeaBIOS, идущий в стандартном комплекте с KVM/QEMU/Bochs на модифицированный, содержащий в себе таблицы SLIC. Скачиваем и распаковываем SeaBIOS v1.7.2:

wget http://code.coreboot.org/p/seabios/downloads/get/seabios-1.7.2.tar.gz
tar zxvf seabios-1.7.2.tar.gz
mv seabios-1.7.2 seabios
cd ./seabios/src

Либо на ваше усмотрение можно также использовать SeaBIOS v1.7.1.
Теперь необходимо модифицировать файл исходных кодов "acpi.c":

wget http://hiveliberty.org:60080/other/seabios/172/acpi_slic.patch
patch acpi.c acpi_slic.patch

Патч для SeaBIOS v1.7.1 находится по соседству: http://hiveliberty.org:60080/other/seabios/171/acpi_slic.patch. Также оба патча можно найти здесь.
Теперь необходимо подготовить дамп таблицы SLIC. Если вы намерены перенести данные из вашего системного BIOS, то команда выглядит следующим образом:

xxd -i /sys/firmware/acpi/tables/SLIC | grep -v len | sed 's/unsigned char.*/static char SLIC[] = {/' > acpi-slic.hex

Для заранее подготовленного бинарного файла она немного изменится:

xxd -i ../slic.bin | grep -v len | sed 's/unsigned char.*/static char SLIC[] = {/' > acpi-slic.hex

Компилируем SeaBIOS:

cd ..
make

Останавливаем все виртуальные машины и копируем новый BIOS:

mv /usr/share/qemu-kvm/bios.bin /usr/share/qemu-kvm/bios.bin-dist
cp ./out/bios.bin /usr/share/qemu-kvm/

Запускаем виртуальные машины. В гостевой ОС Windows с помощью утилиты SLIC ToolKit проверяем наличие таблиц SLIC в BIOS виртуального окружения:

Активируем ОС Windows:

Поделиться ссылкой:

Вшиваем таблицы SLIC в Linux KVM/QEMU/Bochs was last modified: 20 октября, 2014 by DAN
Exit mobile version