ТЕХНОЛОГИЯ АВТОМАТИЧЕСКОГО ЗАПУСКА ОПЕРАЦИОННОЙ СИСТЕМЫ НА АППАРАТНОЙ ПЛАТФОРМЕ С ЭЛЕМЕНТАМИ, НЕ ПОДДЕРЖИВАЕМЫМИ МОДУЛЯМИ ОПЕРАЦИОННОЙ СИСТЕМЫ, ПРИ ВКЛЮЧЕНИИ КОМПЬЮТЕРА
TECHNOLOGY OF AUTOMATIC START OF AN OPERATING SYSTEM ON A HARDWARE PLATFORM WITH ELEMENTS NOT SUPPORTED BY OPERATING SYSTEM MODULES WHEN THE COMPUTER IS TURNED ON

Изобретение относится к области вычислительной техники, а более точно - к способам запуска операционной системы компьютера.
Из уровня техники известен способ обработки ресурса, операционная система и устройство (патент на изобретение RU №2639693), запуск корневой операционной системы; обнаружение посредством корневой операционной системы множества физических ресурсов; запуск посредством корневой операционной системы гипервизора; прием посредством гипервизора от корневой операционной системы информации, представляющей множество физических ресурсов; запуск посредством гипервизора экземпляра виртуальной машины для корневой операционной системы; инициализацию виртуальной машины с помощью состояния, согласованного с информацией; возобновление работы корневой операционной системы так, что корневая операционная система взаимодействует опосредованно с упомянутым множеством физических ресурсов через экземпляр виртуальной машины. Недостатком этого технического решения является невозможность автоматического запуска операционной системы на аппаратной платформе с элементами, неподдерживаемыми модулями операционной системы, при включении компьютера.
Технической задачей заявляемого изобретения является обеспечение возможности автоматического запуска операционной системы на аппаратной платформе с элементами, неподдерживаемыми модулями операционной системы, при включении компьютера.
Решение технической задачи обеспечивается за счет того, что на физическое блочное устройство аппаратной платформы физического компьютера устанавливаются программные средства эмуляции другой аппаратной платформы, на базе которых на отдельный раздел этого физического блочного устройства устанавливается гостевая операционная система, содержащая модули, не поддерживающие элементы аппаратной платформы физического компьютера, без создания в этом разделе отдельной таблицы разделов; затем выполняется настройка программных средств эмуляции аппаратной платформы для передачи всех пакетов, соответствующих сетевому уровню модели взаимодействия открытых систем, из аппаратного обеспечения физического компьютера в гостевую операционную систему; после чего выполняется настройка программных средств эмуляции аппаратной платформы для предоставления доступа ко всем устройствам ввода-вывода компьютера в гостевой операционной системы; затем создается конфигурационный сценарий в программных средствах эмуляции аппаратной платформы для предоставления доступа в гостевой операционной системы к устройствам, подключаемым через универсальную последовательную шину; затем выполняется настройка программных средств гостевой операционной системе, устанавливающая разрешение виртуального графического адаптера, соответствующее рекомендованному разрешению дисплея компьютера; далее устанавливается запрет использования комбинаций клавиш, осуществляющих переключение виртуальных рабочих столов программных средств эмуляции аппаратной платформы, для предотвращения переключения работы устройств ввода-вывода из гостевой операционной системы в программные средства эмуляции аппаратной платформы; затем выполняется настройка программных средств эмуляции аппаратной платформы для автоматического запуска гостевой операционной системы при включении компьютера.
Для расширения функциональных возможностей по использованию технологии установка гостевой операционной системы, содержащей модули, не поддерживающие элементы аппаратной платформы физического компьютера, может выполняться на отдельный раздел физического блочного устройства компьютера с установленными программными средствами эмуляции аппаратной платформы компьютера с созданием в этом разделе отдельной таблицы разделов.
Для расширения функциональных возможностей по использованию технологии установка гостевой операционной системы, содержащей модули, не поддерживающие элементы аппаратной платформы физического компьютера, может выполняться на раздел отдельного физического блочного устройства компьютера без установленных на нем программных средств эмуляции аппаратной платформы компьютера с созданием в этом разделе отдельной таблицы разделов.
Для расширения функциональных возможностей по использованию технологии установка гостевой операционной системы, содержащей модули, не поддерживающие элементы аппаратной платформы физического компьютера, может выполняться на раздел отдельного физического блочного устройства компьютера без установленных на нем программных средств эмуляции аппаратной платформы компьютера без создания в этом разделе отдельной таблицы разделов.
Для расширения функциональных возможностей по использованию технологии установка гостевой операционной системы, содержащей модули, не поддерживающие элементы аппаратной платформы физического компьютера, может выполняться на отдельное физическое блочное устройство компьютера без установленных на нем программных средств эмуляции аппаратной платформы компьютера с созданием отдельной таблицы разделов.
Для расширения функциональных возможностей по использованию технологии установка гостевой операционной системы, содержащей модули, не поддерживающие элементы аппаратной платформы физического компьютера, может выполняться на отдельное физическое блочное устройство компьютера без установленных на нем программных средств эмуляции аппаратной платформы компьютера без создания отдельной таблицы разделов.
Для расширения функциональных возможностей по использованию технологии установка гостевой операционной системы, содержащей модули, не поддерживающие элементы аппаратной платформы физического компьютера, может выполняться на виртуальный жесткий диск.
Достигаемый технический результат - сокращение времени запуска гостевой операционной системы на аппаратной платформе с элементами, неподдерживаемыми модулями гостевой операционной системы в среде программных средств эмуляции аппаратной платформы.
Описание изобретения
Принцип функционирования:
1) На аппаратную платформу физического компьютера с элементами, не поддерживаемыми модулями операционной системы устанавливаются программные средства эмуляции другой аппаратной платформы;
2) В программные средства эмуляции другой аппаратной платформы устанавливается гостевая операционная система, которая не может быть установлена на аппаратную платформу физического компьютера с элементами, не поддерживаемыми модулями операционной системы обычным методом в связи с несовместимостью;
3) Установленные программные средства эмуляции другой аппаратной платформы и установленная в ней гостевая операционная система настраиваются таким образом, что конечный пользователь не замечает прослойки между аппаратной платформой физического компьютера с элементами, не поддерживаемыми модулями операционной системы и гостевой операционной системой в лице программных средств эмуляции другой аппаратной платформы и работает с готовым решением как с обычным компьютером с установленной на нем операционной системой напрямую, а также не тратит время на отдельный запуск необходимых компонентов.
• аппаратная платформа физического компьютера с элементами, не поддерживаемыми модулями операционной системы представляет собой компьютер, в котором присутствуют элементы (чипы, устройства) неподдерживаемые модулями определенных операционных систем.
Пример таких элементов:
процессоры Intel Core 6 поколения;
чипсеты Intel 100й серии;
встроенные видеокарты Intel UHD 630.
• гостевая операционная система представляет собой операционную систему, как правило возраст которой более 6 лет, не имеющую в своем составе модулей для поддержки конкретного оборудования, а также не имеющую возможности для обновления по каким-либо причинам.
Пример таких операционных систем:
МСВС 3.0 изм. 04;
МСВС 3.0 изм. 06;
Astra Linux Special Edition 1.2.
• программные средства эмуляции другой аппаратной платформы представляют собой решение для предоставления запущенным под ее управлением операционным системам службы эмуляции, эмулируя реальное (физическое) аппаратное обеспечение конкретного компьютера и управления этими эмулированными машинами, выделения и освобождения ресурсов для них.
Пример таких программных средств эмуляции другой аппаратной платформы:
Горизонт-ВС 1.0.
Автоматический запуск операционной системы на аппаратной платформе физического компьютера с элементами, не поддерживаемыми модулями операционной системы, при включении компьютера необходим в случае, когда требуется выполнить запуск операционной системы на аппаратной платформе с элементами, неподдерживаемыми модулями операционной системы, таким образом, чтобы пользователь не тратил время на отдельный запуск необходимых компонентов.
Также изобретение решает проблему несовместимости устаревших операционных систем с чипсетами современных материнских плат. Пример:
МСВС 3.0 изм. 04 не совместим с чипсетами Intel начиная с 7 серии включительно.
МСВС 3.0 изм. 06 не совместим с чипсетами Intel начиная с 9 серии включительно.
Или другая ОС несовместимая с каким-либо элементом компьютера, на котором требуется ее функционирование.
Пример реализации изобретения
В качестве примера пошаговая реализация изобретения приводится с использованием следующих компонентов:
• аппаратная платформа физического компьютера с элементами, не поддерживаемыми модулями операционной системы (далее аппаратная платформа):
компьютер с процессором Intel Core 6 поколения и чипсетом Intel 100й серии;
• гостевая операционная система (далее операционная система или ОС):
МСВС 3.0 изм. 04;
• программные средства эмуляции другой аппаратной платформы (далее Гипервизор):
Горизонт-ВС 1.0.
1.1. Установить Горизонт-ВС 1.0.
- Разбивка диска:
На примере жесткого диска размером 256Гб.
Диск разбивается утилитой GParted, создается следующая структура:
таблица MBR
1.2. Установка МСВС (или другой ОС) на раздел жесткого диска (/dev/sda а не /dev/sdaX). Выполнять только после п. 1.6.
На примере МСВС и Горизонт vl
В менеджере ВМ выбрать готовую ВМ
Создать диск RAW и выполнить установку МСВС в него, размер при этом не важен, можно выбрать 8Гб. Ставить только с одним разделом - /, ни swap, ни /home делать не надо.
Подключить готовый RAW образ с установленным МСВС в Горизонт. Для этого:
Смонитровать через qemu-nbd:
# modprobe nbd max_part=63
# qemu-nbd -с /dev/nbd0 имя_образа_raw.img
# partprobe /dev/nbd0
Посмотреть разделы на диске /dev/nbd0 можно так:
# fdisk -1 /dev/nbd0
В выводе будет что-то типа:
/dev/nbd0p1… - это и есть наша партиция, куда был установлен / МСВС
Выполнить посекторное копирование партиции nbd0p1 на необходимый раздел, у нас /dev/sda3:
# dd if=/dev/nbd0p1 of=/dev/sda3 bs=4M
Дождаться завершения копирования и примонитровать /dev/sda3 к /mnt:
# mount /dev/sda3 /mnt
Монтирование должно выполниться успешно, а в каталоге /mnt будет / перенесенного МСВС.
Исправить в /mnt/… /etc/fstab (hda1 поменять на hda), /etc/lilo (путь должен указывать на текущий диск, это hda).
В менеджере ВМ заменить RAW диск на физический раздел /dev/sda3, подключить установочный диск МСВС. Включить ВМ и загрузиться с установочного диска, дойти до этапа выбора диска, не выбирать его, иначе будет перезаписана таблица разделов, чего нам не нужно. Перейти на другую консоль через Ctrl+Alt_F2. Создать папку /1 (важно именно создать директорию, а не пользоваться готовой, например /mnt). Смонтировать в /1 диска /dev/hda, а также выполнить:
# mount --bind /proc /1/ргос
# mount --bind /dev /1/dev
# mount --bind /sys /1/sys (в МСВС /sys нет, но если делать для другой ОС, то понадобится)
Перейти в /1 и выполнить chroot. Запустить bash:
# /bin/bash
Выполнить lilo:
# /sbin/lilo
Вывод не должен содержать ошибок.
Отключить от ВМ установочный диск и перезагрузиться.
Для проверки выключить ВМ и в Горизонте смонтировать /dev/sda3 в /mnt. Монтирование должно произойти успешно и в /mnt будет наблюдается / из МСВС.
Размонтировать /mnt и выполнить расширение ФС на весь раздел:
# resize2fs /dev/sda3
Может появится сообщение, что сначала надо выполнить fsck… Выполните и повторите resize2… Должно завершиться успешно.
Для проверки включить ВМ с МСВС и выполнить df -h, должен быть показан весь доступный объем раздела /dev/sda3 (МСВС видит его как /dev/hda) а не ранее выделенные 8Гб, которые были в RAW образе.
1.3. Настройка сети:
- Сеть br0:
Создать файл /etc/sysconfig/network-scripts/ifcfg-br0:
ONBOOT=yes
BOOTPROTO=static
DEVICE=br0
TYPE=Bridge
MTU=1500
NOZEROCONFIG=no
USERCTL=yes
DELAY=0
IPADDR=10.238.38.10 # любой маловерятный адрес, чтобы не пересекался с популярными подсетями
NETMASK=255.255.255.0
Этот интерфейс не обязательно должен "видеть" другие сети/узлы, главное, чтобы он был настроен.
Создать файл /etc/sysconfig/network-scripts/ifcfg-eth0:
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0
- Сеть br1:
Создать файл /etc/sysconfig/network-scripts/ifcfg-br1:
ONBOOT=yes
BOOTPROTO=static
DEVICE=br1
TYPE=Bridge
MTU=1500
NOZEROCONFIG=no
USERCTL=yes
DELAY=0
IPADDR=10.238.38.11 # любой маловерятный адрес, чтобы не пересекался с популярными подсетями
NETMASK=255.255.255.0
Создать файл /etc/sysconfig/network-scripts/ifcfg-eth0:
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0
Этот интерфейс не обязательно должен "видеть" другие сети/узлы, главное, чтобы он был настроен.
Выполнить:
/etc/init.d/networking restart
Проверим, должно быть похоже «br0 8000.08608ee7dc58 no eth0»:
brctl show
1.4. Включение возможности запуска сторонних скриптов:
ВНИМАНИЕ! Скрипты, как и любые другие файлы, не должны добавляться в каталог /usr
В файле /etc/rc.d/rc.sysinit закоментировать все строки начиная с:
#--------------- IMA start ----------------
и заканчивая:
#--------------- IMA end ------------------
Перезагрузить хост
1.5. Настройка тачпада для работы в гостевой ВМ:
Привести файл /etc/udev/rules.d/99-mouse-power-on.rules к виду:
ACTION=="add", SUBSYSTEM=="usb", ENV{ID_CLASS}=="mouse", TEST=="power/control", ATTR{power/control}="off''
ВНИМАНИЕ! Без этой настройки тачпад гарантированно не будет работать. Но и с ней иногда может проявляться неработоспособность тачпада, для исправления необходимо перезагрузить хост
1.6. Создание виртуальной машины:
Выполним команду:
virt-install --connect qemu:///system -n msvs2 --ram 4096 --arch=i586 --vcpus=2 --cpu core2duo --os-type linux --boot cdrom,hd,menu=on --disk pool=vm_store,cache=none,size=50,format=qcow2 --network=bridge:br0,model=e1000 --graphics spice,listen=0.0.0.0,keymap=ru --noautoconsole --watchdog default,action=reset --virt-type=kvm --autostart -cdrom=/dev/cdrom
, все опции здесь по-идее понятны.
Дальнейшие действия будут описаны для работы с портом 5900, который присваивается автоматически.
Для машины можно настроить конкретный порт. Для этого надо отредактировать ее
конфиг в /etc/libvirt/qemu/msvs2.xml: <graphics type='spice' port='5938' autoport='no' listen='0.0.0.0'
Установить МСВС по п. 1.2. Добавить созданный домен в автозагрузку virsh. В менеджере виртуальных машин подключить все сетевые интерфейсы (сетевые мосты), возможно они не определяться сразу и перед этим придется перезагрузить хост.
1.7. Настройка графики внутри гостевой ВМ.
Внутри гостевой ВМ отредактировать файл /etc/X11/xorg.conf:
В секции "Monitor" исправить:
HorizSync на 31.5-90
VertRefresh на 50-180
добавить строку Option "PrefferedMode" "1920х1080_60.0"
закомментировать Option "dpms"
В секции "Device" исправить:
закомментировать строки Identifier
Driver
VendorName
BoardName
добавить Identifier "Device0"
добавить Driver "vmware"
В секции "Screen" исправить:
закомментировать строки Device
DefaultDepth
Depth
Modes
добавить Device "Device0"
добавить DefaultDepth "16"
добавить Depth 16
добавить Modes "1920x1080"
Сохранить изменения и выключить ВМ. Также выключить ВМ в virsh. После этого приступить к изменению конфига ВМ, для этого редактировать файл /etc/libvirt/qemu/msvs2.xml (заранее сделать копию):
Изменить видеокарту в домене:
В файле
/etc/libvirt/qemu/msvs2.xml
изменить секцию
<video>
на:
<video>
<model type='vmvga' vram='65536' heads='1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
1.8. Настройка автоматического проброса USB устройств с хоста в гостевую ВМ:
ВНИМАНИЕ! Эта функцию будет работать только после включения хоста. Все USB устройства, подключенные к хосту до его включения не будут проброшены в ВМ.
Все USB устройства, подключенные после включения хоста и ВМ будут проброшены в ВМ.
Существует особенность - разные USB устройства с одинаковыми PID и VID не будут подключены одновременно, их следует подключать по очереди.
Создать правило UDEV /etc/udev/rules.d/97-udev-kvmusbattach.rules:
ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", RUN+="/etc/udev/attach.sh $env{ID_VENDOR_ID} ${ID_MODEL_ID}"
Создать правило UDEV /etc/udev/rules.d/97-udev-kvmusbdetach.rules:
ACTION=="remove", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", RUN+="/etc/udev/detach.sh $env{ID_VENDOR_ID} ${ID_MODEL_ID}"
Создать скрипт в /etc/udev/attach.sh:
#!/bin/bash
touch /root/usbdev_${l}:${2}.xml
cat <<EOF > /root/usbdev_${l}:${2}.xml
<hostdev mode='subsystem' type='usb'>
<source>
<vendor id='0x${l}'/>
<product id='0x${2}'/>
</source>
</hostdev>
EOF
/usr/bin/virsh attach-device msvs2 /root/usbdev_${l}:${2}.xml
exit 0
Создать скрипт в /etc/udev/detach.sh:
#!/bin/bash
virsh detach-device msvs2 /root/usbdev_${l}:${2}.xml
rm /root/usbdev_${l}:${2}.xml
exit 0
После этого все USB устройства, подключенные после включения хоста и ВМ будут проброшены в ВМ.
1.9. Настройка проброса СОМ портов с хоста в гостевую ВМ:
В менеджере виртуальный машин перейти в настройки домена msvs2 и выбрать:
Добавить оборудование -> последовательный порт -> тип physical host character device, далее указать ttySX
Определить список СОМ портов возможно командой:
dmesg | grep tty
В выводе порты будут обозначены как ttySX
1.10. Настройка звука в гостевой ВМ.
В менеджере виртуальный машин перейти в настройки домена msvs2 и выбрать:
Звуковая карта -> Выбрать АС97
В гостевой ВМ выполнить перезагрузку и согласиться на автонастройку нового оборудования. После этого запустить alsaconf и согласиться с предложенным.
После этого в alsamixer выбрать необходимый уровень громкости.
На хосте выполнить настройку переадрисации звука из приложения в физическое устройство (с помощью pulseaudio):
ВНИМАНИЕ! Встроенная звуковая карта не поддерживается в Горизонт-ВС. Предлагается использовать USB-звуковую карту и внешние колонки/наушники.
При этом подключать USB-звуковую карту следует до включения хоста.
В файл /etc/xdg/lxsession/LXDE/autostart добавить строку:
@pactl move-sink-input 1 0
Перезагрузить хост
1.11. Настройка автоматического запуска гостевой ВМ:
ВНИМАНИЕ! После применения этой настройки получить доступ к хосту без инструментальной флешки будет невозможно.
Данная настройка позволит запускать гостевую ВМ на весь экран без запуска графического стола хоста. Также будет добавлено автоматическое выключение хоста после выключения гостевой ВМ.
Создать скрипт /etc/xdg/lxsession/LXDE/auto.sh с содержимым:
#!/bin/bash
remote-viewer spice://0.0.0.0:5900 -f
poweroff
exit 0
Привести файл /etc/X11/xinit/xinitrc.d/60windowmanager к виду:
export LANG=ru_RU.UTF-8
#/bin/startlxde
/etc/xdg/lxsession/LXDE/auto.sh
1.12. Отключение Ctrl+Alt+FX:
Open/create the file /etc/X11/xorg.conf using the following command:
sudo -i gedit /etc/X11/xorg.conf
and add the following lines inside:
Section "ServerFlags"
Option "DontVTSwitch" "true"
EndSection
1.13. Смена комбинации клавиш для перехода в хост-систему:
В менеджере ВМ применить соответствующую настройку.
Использовать LCtrl+LAlt+h
Достижимость технического результата - сокращение времени запуска операционной системы на аппаратной платформе с элементами, неподдерживаемыми модулями операционной системы, при включении компьютера - подтверждается результатами испытаний (табл. 2).