Lintel: различия между версиями
(Добавлено описание процедуры установки) |
(→Системные требования: Дополнение про 1-ядреные процессоры и многопроцессорные системы) |
||
(не показаны 2 промежуточные версии этого же участника) | |||
Строка 20: | Строка 20: | ||
Транслятор может размещаться на накопителях следующим образом: | Транслятор может размещаться на накопителях следующим образом: | ||
− | * монопольное использование накопителя; | + | * монопольное использование накопителя — весь накопитель используется для хранения образа транслятора, его настроек и отладочных журналов; |
* совместное использование накопителя с гостевой ОС — т. н. «однодисковый» режим, при котором транслятор помещается в конец диска и «откусывает» эту часть, представляя гостевой ОС эмулируемый диск соответственно меньшего размера (требует использования эмуляции IDE со всеми вытекающими ограничениями и накладными расходами — подробнее см. в документации). | * совместное использование накопителя с гостевой ОС — т. н. «однодисковый» режим, при котором транслятор помещается в конец диска и «откусывает» эту часть, представляя гостевой ОС эмулируемый диск соответственно меньшего размера (требует использования эмуляции IDE со всеми вытекающими ограничениями и накладными расходами — подробнее см. в документации). | ||
+ | Транслятор использует под собственные нужды 1 или 2 процессорных ядра, в зависимости от настроек. Функционирование транслятора на 1-ядерном процессоре, таком как Эльбрус-1С+, теоретически реализуемо, однако представляется нецелесообразным с точки зрения скорости работы. | ||
+ | Транслятор может работать на многопроцессорных серверах. Ранние версии транслятора имели ограничения в части использования оперативной памяти и контроллеров периферии (и подключённых к ним устройств), подключённых к вторичным процессорам (AP — application processor) — использовались только ресурсы, подключённые к первичному процессору (BSP — bootstrap processor), тогда как процессорные ядра были доступны все без ограничений. В актуальных версиях транслятора эти ограничения сняты, как и многие другие. Подробнее см. в документации конкретной версии транслятора. | ||
== Установка == | == Установка == | ||
Строка 77: | Строка 79: | ||
Универсальный пакет помечен как архитектурно-независимый («all»), потому что содержит в себе исполняемые файлы для всех моделей процессоров Эльбрус. Выбор нужного образа транслятора, соответствующего процессору Эльбрус, производится при записи транслятора на носитель (см. далее) автоматически, если явным образом не указано иное имя файла образа. | Универсальный пакет помечен как архитектурно-независимый («all»), потому что содержит в себе исполняемые файлы для всех моделей процессоров Эльбрус. Выбор нужного образа транслятора, соответствующего процессору Эльбрус, производится при записи транслятора на носитель (см. далее) автоматически, если явным образом не указано иное имя файла образа. | ||
+ | |||
+ | === Установка фирменного пакета МЦСТ === | ||
+ | |||
+ | Рядом с универсальным пакетом выложены для скачивания deb-пакеты из состава Эльбрус Линукс. Их отличие от универсального пакета в том, что они содержат исполняемые файлы только для одной модели процессора Эльбрус. Они предназначены в первую очередь для предоставления новых версий Lintel для старых выпусков ОС Эльбрус Линукс, а также для обновления Lintel в текущем выпуске ОС Эльбрус Линукс без подключения к онлайн-репозиторию обновлений. Использование этих пакетов в других ОС возможно наравне с универсальным пакетом, но в некоторых ОС могут возникнуть неудобства из-за несоответствия в обозначении архитектуры процессора: например, в Астра Линукс все прикладные пакеты должны быть помечены как «e2k-8c» (Эльбрус-8С), и чтобы установить пакет для Эльбрус-2С3 («e2k-2c3»), придётся использовать опции принудительной установки с игнорированием несоответствия архитектуры. Далее предполагается, что пакеты устанавливаются в Эльбрус Линукс. | ||
+ | |||
+ | Чтобы выбрать пакет для скачивания, необходимый вашей системе, сверьтесь с таблицей [[Идентификаторы процессоров]] (графа «deb-arch») для определения суффикса имени пакетов, соответствующего модели процессора, либо запросите пакетный менеджер: | ||
+ | |||
+ | <pre> | ||
+ | dpkg-architecture --query DEB_TARGET_ARCH | ||
+ | # Эльбрус-2С3 = e2k-2c3 | ||
+ | # Эльбрус-4С = e2k-4c | ||
+ | # Эльбрус-8С = e2k-8c | ||
+ | # Эльбрус-8СВ = e2k-8c2 | ||
+ | # Эльбрус-16С = e2k-16c | ||
+ | </pre> | ||
+ | |||
+ | Установите новый пакет из скачанного файла: | ||
+ | |||
+ | <pre> | ||
+ | apt install ./lintel_5.0-vd9u5_e2k-8c2.deb | ||
+ | </pre> | ||
+ | |||
+ | В старых версиях ОС, где <code>apt</code> ещё не поддерживал установку из файла, можно использовать <code>dpkg</code>: | ||
+ | |||
+ | <pre> | ||
+ | dpkg --install ./lintel_5.0-vd9u5_e2k-8c2.deb | ||
+ | </pre> | ||
+ | |||
+ | Несмотря на то, что в имени файла пакета упоминается конкретная версия Эльбрус Линукс — например, «vd9» означает версию 9.x — в случае пакета Lintel это всего лишь обозначение номера версии дистрибутива, для которой этот пакет был штатно собран. Использовать его можно и в других версиях ОС Эльбрус Линукс — как более новых, так и старых. | ||
+ | |||
+ | В сторонних ОС, где пакетный менеджер <code>dpkg</code> настроен на другое обозначение процессорной архитектуры, установить пакет с игнорированием несоответствия можно следующим образом: | ||
+ | |||
+ | <pre> | ||
+ | dpkg --force-architecture --install ./lintel_5.0-vd9u5_e2k-8c2.deb | ||
+ | </pre> | ||
Строка 97: | Строка 134: | ||
</pre> | </pre> | ||
− | То же самое можно сделать самостоятельно с помощью стандартных | + | То же самое можно сделать самостоятельно с помощью стандартных инструментов Linux, например: |
+ | |||
<pre> | <pre> | ||
dd if=/opt/mcst/lintel/bin/lintel_e8c.disk of=/dev/sdx oflag=direct,sync bs=32M | dd if=/opt/mcst/lintel/bin/lintel_e8c.disk of=/dev/sdx oflag=direct,sync bs=32M | ||
</pre> | </pre> | ||
+ | |||
+ | Но, разумеется, в этом случае придётся самостоятельно определять имя нужного образа и целевой накопитель, не будет страховочной защиты от перезаписи используемого для других задач накопителя, и не получится легко записать образ в конец диска — для этого надо будет самостоятельно рассчитывать нужное смещение с учётом занимаемого пространства (по умолчанию — 4 Гбайт) и размером буфера (для утилиты <code>dd</code> смещения указываются в единицах, кратных размеру буфера, задаваемому параметром <code>bs</code>). | ||
+ | |||
+ | |||
+ | === Установка транслятора с помощью Windows === | ||
+ | |||
+ | Если нет возможности установить пакет в Linux-систему на самом компьютере Эльбрус, и в распоряжении нет других компьютеров с Linux-системой, а только с Windows, то распаковать содержимое deb-пакета можно с помощью архиватора 7-Zip, например: при открытии deb-пакета в графической оболочке архиватора (7zFM) отображается вложенный архив ''data.tar'' — надо войти внутрь него и оттуда распаковать директорию ''opt'' или её поддиректорию ''lintel'' в любую временную директорию. В результате там появятся 2 директории: | ||
+ | |||
+ | * ''bin'' — программы; | ||
+ | * ''doc'' — документация. | ||
+ | |||
+ | Зайдите в директорию ''bin'' и выберите файл образа, соответствующий модели процессора на целевом компьютере Эльбрус, — например, ''lintel_e2c3.disk'' для процессора Эльбрус-2С3. | ||
+ | |||
+ | Возьмите USB-флешку (или SATA-накопитель, который потом сможете вставить в компьютер Эльбрус) и запишите на неё этот образ транслятора в ''блочном'' режиме — то есть не в виде файла ''lintel_e2c3.disk'' в файловой системе FAT32 и т. п., а именно само его содержимое прямо начиная с нулевого сектора дискового устройства. Сделать это можно с помощью программ типа [https://rufus.ie/ru/ Rufus] и [https://etcher.balena.io/ Balena Etcher]; для тех, кто предпочитает интерфейс командной строки, существует также Windows-порт утилиты <code>dd</code> — [http://www.chrysocome.net/dd dd for Windows], равно как и порт [https://gnuwin32.sourceforge.net/packages/coreutils.htm GNU coreutils]. |
Текущая версия на 09:07, 25 сентября 2025
Двоичный транслятор уровня системы или просто транслятор системы, он же Lintel (Эль–Intel или просто Линтел) — программное обеспечение для платформы Эльбрус, позволяющее запускать операционные системы в машинных кодах x86 (x86-64). Данная разновидность двоичного транслятора действует аналогично гипервизору первого уровня: запускается как нативная ОС в машинных кодах e2k и затем своими средствами стартует гостевую ОС в машинных кодах x86, как на обычном x86-компьютере со своим BIOS и набором эмулируемых и пробрасываемых устройств. В отличие от обычного гипервизора, позволяющего создавать множество виртуальных машин, Lintel обеспечивает работу только одной гостевой ОС. Однако сам Lintel может быть запущен внутри виртуальной машины (под управлением нативного гипервизора для архитектуры Эльбрус — начиная с 6-го поколения), и таким образом на одном компьютере может быть запущено несколько гостевых ОС одновременно. Обратное невозможно, однако: Lintel не позволяет использовать x86-гипервизоры, чтобы создавать виртуальные машины x86 внутри одного гостевого домена.
Двоичная трансляция проходит в режиме реального времени, «на лету», с адаптивной многопроходной оптимизацией, что в сочетании с аппаратными средствами поддержки трансляции, заложенными в архитектуру Эльбрус и обеспечивающими низкие накладные расходы, даёт высокую скорость работы гостевой системы. В отличие от транслятора приложений (RTC), транслятор уровня системы создаёт наиболее полное подобие имитируемого x86-компьютера, но вместе с тем и бо́льшую поверхность атаки для типовых уязвимостей платформы x86, а также более высокие накладные расходы и ограничения по части использования аппаратных ресурсов, поскольку операции ввода-вывода проходят через слои эмуляции.
Подробнее на сайте МЦСТ: Lintel
Содержание
Системные требования
Сам транслятор представляет собой машинный код для конкретной модели процессора Эльбрус и запускается как нативная операционная система из ПНС или МикроОС.
Сопутствующие утилиты в машинных кодах Эльбрус, такие как bcd_read
и bcd_write
, являются статически скомпонованными программами Linux, то есть не зависят от внешних библиотек, и соответственно могут работать практически в любой Linux-системе для архитектуры Эльбрус. Прочие сопутствующие утилиты, такие как place_lintel.sh
, erase_lintel.sh
и prepare_log.sh
, являются текстовыми скриптами для оболочки Bash и могут работать на любых компьютерах, где работает Bash. Все сопутствующие утилиты являются лишь вспомогательными инструментами и предназначены для удобства выполнения сервисных операций, как то установка и удаление транслятора, извлечение отладочных журналов работы. При отсутствии возможности запускать эти утилиты на самом компьютере Эльбрус под управлением нативной ОС семейства Linux, или на ином компьютере, где есть bash
и dd
, выполнить все те же операции можно самостоятельно с помощью любых других аналогичных средств, в том числе Windows-программ и т. п. — подробнее см. далее в соответствующих разделах статьи.
Транслятор может размещаться на следующих видах накопителей:
- карта памяти, жёсткий диск или твердотельный накопитель с интерфейсом ATA IDE (CompactFlash) или SATA — в этом случае доступны все режимы работы;
- флешка USB — доступна установка на накопитель ATA/SATA или работа в ограниченном режиме без ведения отладочных журналов.
Транслятор может размещаться на накопителях следующим образом:
- монопольное использование накопителя — весь накопитель используется для хранения образа транслятора, его настроек и отладочных журналов;
- совместное использование накопителя с гостевой ОС — т. н. «однодисковый» режим, при котором транслятор помещается в конец диска и «откусывает» эту часть, представляя гостевой ОС эмулируемый диск соответственно меньшего размера (требует использования эмуляции IDE со всеми вытекающими ограничениями и накладными расходами — подробнее см. в документации).
Транслятор использует под собственные нужды 1 или 2 процессорных ядра, в зависимости от настроек. Функционирование транслятора на 1-ядерном процессоре, таком как Эльбрус-1С+, теоретически реализуемо, однако представляется нецелесообразным с точки зрения скорости работы.
Транслятор может работать на многопроцессорных серверах. Ранние версии транслятора имели ограничения в части использования оперативной памяти и контроллеров периферии (и подключённых к ним устройств), подключённых к вторичным процессорам (AP — application processor) — использовались только ресурсы, подключённые к первичному процессору (BSP — bootstrap processor), тогда как процессорные ядра были доступны все без ограничений. В актуальных версиях транслятора эти ограничения сняты, как и многие другие. Подробнее см. в документации конкретной версии транслятора.
Установка
Рекомендуется использовать штатную версию пакета lintel, поставляемую разработчиком операционной системы. Однако на данный момент такой пакет штатно входит только в дистрибутив ОС Эльбрус Линукс, поэтому для всех остальных систем предусмотрен универсальный пакет.
Установка штатного пакета
В операционной системе Эльбрус Линукс установка и удаление пакета производятся следующим образом:
apt-get install lintel apt-get remove lintel
Ранее также поставлялись специализированные пакеты lintel-apmdz и lintel-raid — они потеряли актуальность.
Установка универсального пакета
Пакет находится по ссылке в описании Lintel на сайте МЦСТ — во вкладке «Поддержка»: https://storage.mcst.ru/index.php/s/IU9uIAzuqSWPp7h — перейдя по ссылке и войдя в директорию с нужной версией транслятора, например «Lintel_5.0», следует скачать deb-файл с пометкой «anyos» в имени, например lintel_5.0-anyos0u1_all.deb.
В операционных системах на базе пакетов deb и пакетного менеджера apt
(Астра, Эльбрус, Эльбрус-Д) установка производится как обычно, но не по имени пакета, а с указанием пути к deb-файлу, в том числе даже если он находится в текущей директории; а вот удаление — как обычно, по имени пакета:
apt-get install ./lintel_5.0-anyos0u1_all.deb apt-get remove lintel
В операционных системах на базе пакетов rpm (Альт, Ред ОС, РОСА) необходимо сначала установить низкоуровневый пакетный менеджер dpkg
и инициализировать его пакетную базу, после чего работать с deb-пакетами через него:
# Ред ОС, РОСА || Альт dnf install dpkg || apt-get install dpkg touch /var/lib/dpkg/status dpkg --install ./lintel_5.0-anyos0u1_all.deb dpkg --remove lintel
В последнем случае следует иметь в виду на будущее, что пакетные базы штатного менеджера rpm
(apt
, dnf
) и нештатного менеджера dpkg
в таких системах не пересекаются, и необходимо самостоятельно следить за предотвращением конфликтов между пакетами: например, если уже установлен штатный пакет версии 4.3, а вы хотите установить универсальный пакет версии 5.0; или если вы установили универсальный пакет версии 5.0 вместо штатного пакета версии 4.3, а в будущем разработчик ОС выпустит обновление штатного пакета версии 5.0, 5.1 или 6.0, и она будет автоматически выбрана для установки.
В качестве крайней альтернативы, при невозможности использования dpkg
, распаковать содержимое пакета и запустить процедуру его настройки можно самостоятельно:
ar -p ./lintel_5.0-anyos0u1_all.deb data.tar.xz | tar --verbose --extract --xz --directory /
В этом случае вообще никакого контроля со стороны пакетных менеджеров не будет — все операции обновления или удаления придётся осуществлять так же самостоятельно.
Универсальный пакет помечен как архитектурно-независимый («all»), потому что содержит в себе исполняемые файлы для всех моделей процессоров Эльбрус. Выбор нужного образа транслятора, соответствующего процессору Эльбрус, производится при записи транслятора на носитель (см. далее) автоматически, если явным образом не указано иное имя файла образа.
Установка фирменного пакета МЦСТ
Рядом с универсальным пакетом выложены для скачивания deb-пакеты из состава Эльбрус Линукс. Их отличие от универсального пакета в том, что они содержат исполняемые файлы только для одной модели процессора Эльбрус. Они предназначены в первую очередь для предоставления новых версий Lintel для старых выпусков ОС Эльбрус Линукс, а также для обновления Lintel в текущем выпуске ОС Эльбрус Линукс без подключения к онлайн-репозиторию обновлений. Использование этих пакетов в других ОС возможно наравне с универсальным пакетом, но в некоторых ОС могут возникнуть неудобства из-за несоответствия в обозначении архитектуры процессора: например, в Астра Линукс все прикладные пакеты должны быть помечены как «e2k-8c» (Эльбрус-8С), и чтобы установить пакет для Эльбрус-2С3 («e2k-2c3»), придётся использовать опции принудительной установки с игнорированием несоответствия архитектуры. Далее предполагается, что пакеты устанавливаются в Эльбрус Линукс.
Чтобы выбрать пакет для скачивания, необходимый вашей системе, сверьтесь с таблицей Идентификаторы процессоров (графа «deb-arch») для определения суффикса имени пакетов, соответствующего модели процессора, либо запросите пакетный менеджер:
dpkg-architecture --query DEB_TARGET_ARCH # Эльбрус-2С3 = e2k-2c3 # Эльбрус-4С = e2k-4c # Эльбрус-8С = e2k-8c # Эльбрус-8СВ = e2k-8c2 # Эльбрус-16С = e2k-16c
Установите новый пакет из скачанного файла:
apt install ./lintel_5.0-vd9u5_e2k-8c2.deb
В старых версиях ОС, где apt
ещё не поддерживал установку из файла, можно использовать dpkg
:
dpkg --install ./lintel_5.0-vd9u5_e2k-8c2.deb
Несмотря на то, что в имени файла пакета упоминается конкретная версия Эльбрус Линукс — например, «vd9» означает версию 9.x — в случае пакета Lintel это всего лишь обозначение номера версии дистрибутива, для которой этот пакет был штатно собран. Использовать его можно и в других версиях ОС Эльбрус Линукс — как более новых, так и старых.
В сторонних ОС, где пакетный менеджер dpkg
настроен на другое обозначение процессорной архитектуры, установить пакет с игнорированием несоответствия можно следующим образом:
dpkg --force-architecture --install ./lintel_5.0-vd9u5_e2k-8c2.deb
Установка транслятора на загрузочный накопитель
Запись образа транслятора на загрузочный накопитель осуществляется командой:
/opt/mcst/lintel/bin/place_lintel.sh
Данный скрипт автоматически выбирает нужный образ транслятора, соответствующий модели процессора, и целевой накопитель, куда будет производиться установка (но только если в компьютере есть карта памяти CompactFlash или иное дисковое устройство с интерфейсом ATA IDE). Если автоматический выбор не срабатывает или нежелателен, можно указать параметры явным образом:
/opt/mcst/lintel/bin/place_lintel.sh -I lintel_e8c.disk -D /dev/sdx -F -E # -I имя_образа_транслятора # -D имя_загрузочного_накопителя # -F — принудительная перезапись накопителя, несмотря на наличие таблицы разделов MBR # -E — запись транслятора в конец диска (для «однодискового» режима, где гостевая ОС располагается на одном диске с Lintel)
То же самое можно сделать самостоятельно с помощью стандартных инструментов Linux, например:
dd if=/opt/mcst/lintel/bin/lintel_e8c.disk of=/dev/sdx oflag=direct,sync bs=32M
Но, разумеется, в этом случае придётся самостоятельно определять имя нужного образа и целевой накопитель, не будет страховочной защиты от перезаписи используемого для других задач накопителя, и не получится легко записать образ в конец диска — для этого надо будет самостоятельно рассчитывать нужное смещение с учётом занимаемого пространства (по умолчанию — 4 Гбайт) и размером буфера (для утилиты dd
смещения указываются в единицах, кратных размеру буфера, задаваемому параметром bs
).
Установка транслятора с помощью Windows
Если нет возможности установить пакет в Linux-систему на самом компьютере Эльбрус, и в распоряжении нет других компьютеров с Linux-системой, а только с Windows, то распаковать содержимое deb-пакета можно с помощью архиватора 7-Zip, например: при открытии deb-пакета в графической оболочке архиватора (7zFM) отображается вложенный архив data.tar — надо войти внутрь него и оттуда распаковать директорию opt или её поддиректорию lintel в любую временную директорию. В результате там появятся 2 директории:
- bin — программы;
- doc — документация.
Зайдите в директорию bin и выберите файл образа, соответствующий модели процессора на целевом компьютере Эльбрус, — например, lintel_e2c3.disk для процессора Эльбрус-2С3.
Возьмите USB-флешку (или SATA-накопитель, который потом сможете вставить в компьютер Эльбрус) и запишите на неё этот образ транслятора в блочном режиме — то есть не в виде файла lintel_e2c3.disk в файловой системе FAT32 и т. п., а именно само его содержимое прямо начиная с нулевого сектора дискового устройства. Сделать это можно с помощью программ типа Rufus и Balena Etcher; для тех, кто предпочитает интерфейс командной строки, существует также Windows-порт утилиты dd
— dd for Windows, равно как и порт GNU coreutils.