Dtb файл linux что это

Обновлено: 04.07.2024

Установка программного обеспечения - очень важный момент в работе с операционной системой. Сейчас есть две самые распространенные системы установки программного обеспечения. Это используемая в Debian и всех ее производных, в том числе и в Ubuntu - deb, а также разработанная в RedHat и используемая в Red Hat и всех основанных на ней дистрибутивов - rpm.

Обе системы и deb и rpm полнофункциональные, легкие в использовании и имеют очень большое количество программного обеспечения. Многих пользователей интересует в чем разница между этими двумя системами. Но в интернете мы находим только общие сведения вроде того что уже выше написано. В этой статье мы попытаемся разобраться что лучше deb или rpm. Также попытаемся вникнуть в суть их различий.

Основы

С точки зрения пользователя, эти два варианта установки пакетов не имеют очень больших различий. Оба файла и Deb и Rpm - это всего лишь архивы, созданные с помощью утилиты ar. Эти архивы включают в себя файлы программ, исполняемые файлы, библиотеки, или файлы конфигурации. Кроме этого, в каждый пакет входят метаданные системы управления пакетами, именно этим и отличаются rpm и deb. Собственно файлы пакетов отличаются в основном только этим, но еще есть система управления пакетами. А там уже различий в базе данных намного больше.

Давайте рассмотрим каждую систему управления пакетами подробнее, а затем сравним что же в них особенного, и что лучше rpm или deb.

RPM (Red Hat Package Manager)

Как мы уже говорили, RPM - это менеджер пакетов, используемый в операционных системах, основанных на Red Hat, это вся ветка дистрибутивов: Fedora, OpenSUSE, Red Hat, CentOS и т д. Изначально этот пакетный менеджер был разработан в компании Red Hat еще в 1997 году и только для их дистрибутива, но затем он распространился и в другие операционные системы. Вместо обычного сжатия здесь используется сжатие gzip по алгоритму cpio и особый формат файла архива, его мы рассмотрим ниже. Здесь в сравнении rpm или deb, первый кажется лучше, но не все так просто, если в системе нет нужных утилит, то вы не сможете распаковать такой пакет. Кроме cpio могут использоваться и другие алгоритмы сжатия, например, lzma или xz. В последнее время все программное обеспечение подписывается ключами для удостоверения подлинности, вот и RPM поддерживает подпись с помощью GPG и MD5. Технология PatchRPMs или DeltaRPMs позволяет грамотно обновлять RPM пакеты без больших затрат трафика.

Хоть и сказано, что файл rpm - это обычный архив, это не совсем так. Вначале файла находится заголовок, который идентифицирует файл как rpm архив, затем идет подпись, для проверки целостности и подлинности файла. Дальше идет заголовок, в котором содержаться данные о самом пакете, версия, архитектура, список файлов и т д. И только после всего этого идет сам архив с файлами пакета.

Для работы с RPM могут использоваться несколько различных пакетных менеджеров, это универсальная утилита rpm, пакетный менеджер zypper в OpenSUSE, dnf в Fedora, urpmi в Mageia, yum - во многих дистрибутивах, основанных на Fedora.

Рассмотрим основные особенности RPM:

  • Автоматическое разрешение зависимостей в большинстве случаев корректно
  • Файл архива имеет специальный формат
  • Не поддерживается реализация зависимостей с выбором завистимости от пакет1 или пакет2.
  • Не поддерживаются рекомендованные пакеты
  • Позволяет настроить зависимость от файла, а не пакета
  • Все данные об установленных пакетах хранятся в базе данных поэтому при надобности можно проверить контрольные суммы
  • Поддерживаются сценарии как до, так и после установки программ
  • Поддерживается формат SRPM, который содержит в себе исходники программы все патчи с инструкции по сборке, позволяющие собрать программу из исходников на локальной машине.
  • Отличная поддержка Multilib пакетов

Deb (Debian Package Manager)

Файлы deb - это архивы, созданные с помощью утилиты ar. Они могут быть сжаты с помощью GZIP, Bzip2, lzma, или XZ. Чаще всего для управления пакетами deb в терминале используется утилита dpkg, Но могут и другие, например, gdebi, apt, aptitude и т д. Deb пакеты используются для установки программного обеспечения во многих операционных системах, основанных на Debian, это ветка Ubuntu со многими основанными на ней дистрибутивами и так далее. Поскольку Ubuntu в последнее время набирает популярность среди новичков, то пакетов для нее становится больше.

Из особенностей системы управления пакетами DEB можно назвать использование приоритетов для классификации пакетов по важности, а также поддержку рекомендованных пакетов. Это пакеты, которые не находятся в зависимостях программы, но желательны для установки вместе с ней. Рекомендованные утилиты устанавливаются автоматически в таком инструменте, как apt. Чтобы сравнить rpm vs deb рассмотрим особенности deb:

  • Файл пакета - обычный архив
  • Поддержка приоритетов для пакетов различной важности
  • Поддержка рекомендованных пакетов
  • Не поддерживаются файловые зависимости
  • Не поддерживается технология Delta для экономии трафика

Аналоги команд

Давайте рассмотрим аналоги команд для выполнения одних и тех же действий в этих системах управления пакетами с помощью утилит rpm и dpkg:

Рекомендуется обратиться к статье Documentation / devicetree / boot-without-of.txt.

Объяснение древовидной структуры Linux-устройств
В статье представлен весь процесс использования dt из общей ситуации, и она краткая.

Объяснение компилятора linux device tree-DTC
Статья знакомит с компилятором dtc и структурой организации файлов DT.

Объяснение формата файла linux device tree-DTB
В статье представлен формат скомпилированного файла dtb. Чтобы понять, как ядро ​​преобразует dts в устройство, необходимо понимать формат файла dtb.

Объяснение структуры данных файла linux tree-DT file
В статье представлена ​​структура организации данных в файле dts и назначение каждого узла и атрибута.

Мы знаем, что модель драйвера устройства linux состоит из драйвера устройства-шины. В версии ядра Linux 2.6 устройство регистрируется через файл board-some-evm.c в каталоге arch / arm / mach-some /. После версий 3.x и 4.x сообщество представило дерево устройств (дерево устройств), чтобы заменить предыдущий метод регистрации устройств. Следующее введение заключается в замене дерева устройств аббревиатурой DT.


Блок-схема использования DT подробно поясняется ниже:

1. Файл DT находится в папке / arch / * / boot / dts / и состоит из файлов с суффиксами dts и dtsi. Организационная структура данных в этих файлах представлена ​​в других статьях, а файл dt окончательно конвертируется с помощью компилятора dtc. Созданный как файл dtb, файл dtb будет записан на устройство хранения NAND, SD или EMMC, а затем передан в ядро ​​Linux с помощью u-boot.

2. Мы знаем, что uboot - это программа загрузки, которая в конечном итоге загрузит ядро ​​Linux. Uboot передает некоторые параметры ядру. Для архитектуры arm параметры в регистре ro / r1 / r2 следующие:

3. После передачи файла dtb в ядро, Ядро расширит файл dtb в связанный список структуры device_node , И в конечном итоге эти структуры будут Драйвер устройства для использования Для регистрации устройства соответствующие значения некоторых полей в структуре device_node следующие:

dtb преобразуется в device_node с помощью функции drivers / из / fdt.c-> unflatten_device_tree-> unflatten_dt_node завершено ; Когда система инициализируется, устройства на шине платформы будут инициализированы (это определяется простой шиной). Конкретная операция находится в drivers / of / platform.c-> В функции of_platform_populate функция преобразует device_nonde в platform_device, а затем добавит его в список устройств platform_bus


Структура файловой организации DT показана на рисунке.

* .dts - это общая организационная структура оборудования платы, она будет включать некоторые другие файлы с общими характеристиками, это файлы с расширением * .dtsi

Компилятор dtc может генерировать файлы dts как файлы dtb, а также может создавать файлы dtb как файлы dts

грамматика

dtc [-I input-format] [-O output-format] [-o output-filename] [-V output_version] input_filename

Параметр Описание

input-format:
- “dtb”: “blob” format
- “dts”: “source” format.
- “fs” format.

output-format:
- “dtb”: “blob” format
- “dts”: “source” format
- “asm”: assembly language file

output_version:
Определите версию «blob», которая указана в поле файла dtb, поддерживает 1, 2, 3 и 16, по умолчанию - 3, и в версии 16 есть много изменений функций.


Формат файла dtb следующий

ПРИМЕЧАНИЕ: порядок различных деталей может отличаться.

Этот раздел содержит список зарезервированных карт памяти, каждая таблица состоит из пары 64-битных физических адресов и размеров.


Поскольку некоторые атрибуты (например, совместимые) будут существовать в большинстве узлов, чтобы уменьшить размер файла dtb, вам необходимо указать только одно место хранения для этих строк атрибутов. , Таким образом, атрибуту каждого узла нужно только найти позицию строки атрибута в соответствии с позицией, чтобы узнать, какой атрибут , Итак, dtb перечисляет строки дерева устройств отдельно для хранения. На следующем рисунке показан формат структуры дерева устройств с вложенными узлами.

Вышеупомянутый макрос определяется следующим образом


Общая картина

Общая структура дерева устройств выглядит следующим образом

Ниже приведен практический пример: дерево устройств платы s3c6410-smdk6410

Из вышеизложенного можно узнать, что дерево устройств состоит из узлов. Как правило, оно содержится в корневом узле "/". Корневой узел содержит множество подузлов, а подузлы содержат подузлы, а узлы содержат множество атрибутов. Узел единицы измерения, а затем введите значение и выражение каждого атрибута

Представление одного узла

[] указывает на необязательный, Имя узла состоит из:

Если требуется имя-узла, @ unit-address представляет адрес, по которому расположен узел, label - это метка узла. Для других файлов удобно ссылаться на этот узел. Указанное выражение:

sdhci0 - это метка. Узел sdhci0 уже существует в файле dtsi, но если на конкретной плате есть какие-то особые указания, вы можете обратиться к узлу sdhci0 для определения некоторых атрибутов.
Узел содержит множество свойств
Узел содержит много дочерних узлов

Атрибуты ячейки и выражение адреса

Ячейка может пониматься как небольшое пространство сетки, представленное <>, числа внутри - все 32-битные значения данных, а атрибуты, связанные с этим, включают атрибуты reg и range.

Выражение атрибута reg:

Это эквивалентно объединению двух регистров в один, что эквивалентно следующему выражению

Назначение: reg, как следует из названия, представляет собой диапазон адресов регистров устройства.

ranges

«Совместимый» атрибут

Атрибут совместимости используется для сопоставления совместимости и используется для сопоставления драйвера устройства в драйвере устройства, как в приведенном выше примере:

Он будет сопоставлять драйверы с флагом smsc, lan9115 в регистрации устройства и некоторыми выражениями вроде этого:

Сказал, что он будет соответствовать samsung, mini6410 и samsung, s3c6410, на самом деле это означает совместимость

Атрибут "Имя"

Атрибут name сейчас не определен для многих узлов. Он аналогичен атрибуту device_type. После версии 16, если этот атрибут не существует, имя узла (@front name) будет использоваться для его переопределения.

Атрибуты разрыва

родительский атрибут прерывания

Этот атрибут определяет контроллер прерываний, к которому подключен узел. Например, в приведенном выше примере контроллер прерываний, подключенный к serial0, - это gic: interrupt-controller @ 12001000

Значение данных атрибута

Некоторые значения атрибутов выражаются так:

Это необходимо для определения значения атрибута как байтового массива

Это необходимо для определения значения атрибута в виде массива строк
Некоторые атрибуты не имеют значения и являются пустыми атрибутами

ПРИМЕЧАНИЕ 1. Атрибут аналогичен протоколу. Вы можете определить, как его использовать в конкретном драйвере.
ПРИМЕЧАНИЕ 2: Если вы хотите определить свои собственные атрибуты, лучшие атрибуты представлены поставщиком, строкой

root node

Корневой узел должен иметь следующие атрибуты:

/cpus node

Атрибуты узла имеют не менее

/cpus/* nodes

Имя узла обычно определяется как «<архитектура>, <ядро>».
Атрибуты:

/memory node(s)

Определяет распределение физической памяти платы
пример:

/chosen node

/soc < SOCname> node

Этот узел подходит для SOC (система на кристалле), и имя узла должно начинаться с soc (MPC8540-> soc8540).
Обязательные атрибуты

В этой статье для начинающих объясняется, как устанавливать deb-пакеты в Ubuntu. Также показано, как впоследствии удалить эти пакеты deb.

Жизнь была бы слишком простой, если бы вы могли найти все приложения в Центре программного обеспечения. Но этого не происходит, к сожалению.

Некоторое программное обеспечение доступно через пакеты DEB. Это архивные файлы с расширением .deb . Вы можете рассматривать файлы .deb как файлы .exe в Windows. Вы дважды щелкаете по файлу .exe, и он запускает процедуру установки в Windows. Deb-пакеты работают практически по схожему принципу .

Вы можете найти эти пакеты DEB в разделе загрузки на сайте поставщика программного обеспечения. Например, если вы хотите установить Google Chrome в Ubuntu, вы можете загрузить пакет DEB для Chrome со своего веб-сайта.

Теперь возникает вопрос, как установить файлы deb? Существует несколько способов установки пакетов DEB в Ubuntu. Я покажу их вам один за другим в этом уроке.

Установка файлов .deb в дистрибутивы Linux на основе Ubuntu и Debian

Вы можете выбрать инструмент GUI или инструмент командной строки для установки пакета deb. Выбор за вами.

Давайте посмотрим, как установить deb файлы.

Способ 1: использование программного центра по умолчанию

Откроется центр программного обеспечения, и вы должны увидеть возможность установки программного обеспечения. Все, что вам нужно сделать, это нажать кнопку установки и ввести свой пароль для входа.

Видите, это даже проще, чем установка из .exe-файлов в Windows, не так ли?

Способ 2. Использование приложения Gdebi для установки пакетов deb с зависимостями.

Опять же, жизнь была бы намного проще, если бы все прошло гладко. Но это не жизнь, как мы ее знаем.

Теперь, когда вы знаете, что файлы .deb могут быть легко установлены через Центр программного обеспечения, позвольте мне рассказать вам об ошибке зависимости, которая может возникнуть в некоторых пакетах.

Что происходит, так это то, что программа может зависеть от другого программного обеспечения (библиотек). Когда разработчик готовит пакет DEB для вас, он / она может предположить, что ваша система уже имеет эту часть программного обеспечения в вашей системе.

Но если это не так, и ваша система не имеет необходимых компонентов программного обеспечения, вы столкнетесь с печально известной «ошибкой зависимости».

Центр программного обеспечения не может самостоятельно обрабатывать такие ошибки, поэтому вам придется использовать другой инструмент под названием gdebi.

Он определяет зависимости и пытается установить эти зависимости вместе с установкой файлов .deb.


Лично я предпочитаю gdebi центру программного обеспечения для установки файлов deb. Это легкое приложение, поэтому установка кажется быстрее. Вы можете прочитать подробно об использовании gDebi и сделать его по умолчанию для установки пакетов DEB.

Вы можете установить gdebi из центра программного обеспечения или используя команду ниже:

Способ 3: установить deb файлы в командной строке с помощью dpkg

Если вы хотите установить deb файлы в команде lime, вы можете использовать команду apt или dpkg. Команда Apt на самом деле использует команду dpkg, но apt более популярна и проста в использовании.

Если вы хотите использовать команду dpkg для установки пакетов deb, вот как это сделать:

Если при установке пакетов deb вы получили ошибку зависимости, вы можете использовать следующую команду для устранения проблем зависимости:

Как удалить пакеты deb

Удаление пакета deb не имеет большого значения. И нет, вам не нужен оригинальный файл deb, который вы использовали для установки программы.

Способ 1: удаление пакетов deb с помощью команд apt

Все, что вам нужно, это имя программы, которую вы установили, и затем вы можете использовать apt или dpkg, чтобы удалить эту программу. Для этого введите вот эту команду, где program_name название программы, которую вы хотите удалить.

Теперь возникает вопрос, как найти точное имя программы, которое нужно использовать в команде удаления? У команды apt есть решение и для этого.

Например, я установил приложение AppGrid в предыдущем разделе, и если я хочу узнать точное имя программы, то к предыдущей команде добавляю разделитель | , затем grep grid , где grid является частью имени команды.

Команда grep удалит из вывода все строки, в которых нет слова grid и мы получим только то, что нас интересует. То есть в данном случае вместо большого списка будет только та строка, которая интересует. Это намного проще, чем искать глазами, правда?

Как видите, установлена ​​программа appgrid. Теперь вы можете использовать это имя программы с командой apt remove.

Способ 2: удалить пакеты deb с помощью команд dpkg

Вы также можете использовать dpkg, чтобы найти имя установленной программы:

Вывод выдаст все установленные пакеты, которые содержат слово grid:

ii в приведенной выше команде вывод означает, что пакет был правильно установлен.

Теперь, когда у вас есть имя программы, вы можете использовать команду dpkg, чтобы удалить ее:

Я надеюсь, что это руководство для начинающих помогло вам установить deb файлы в Ubuntu. Я добавил часть удаления, чтобы вы могли лучше контролировать установленные вами программы.

Более подробно о deb-пакетах вы можете почитать на официальном сайте Debian тут.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Файлы с расширением .deb — это установочные пакеты для Debian и производных дистрибутивов, для таких, как Linux Mint, Kali Linux, Ubuntu.

Типичный способ установки пакета из файла DEB:

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

Установка скаченных .deb

Иногда может потребоваться установка локальных .deb, то есть файлов не из репозиториев. Примеры, когда потребовалась такая установка:

  • Как установить Viber на Linux (необходимо отредактировать пакет Viber, иначе его установки приведёт к проблемам к использованию менеджеров пакетов)
  • Как установить Java (JDK) в Windows и Linux (Oracle JDK отсутствует в стандартных репозиториях)

Установка без учёта зависимостей

Следующая команда установит пакет без проверки зависимостей:

При выполнении операции менеджером пакетов, например, обновление кэша:

Установка DEB файла с помощью apt

Программа apt также умеет устанавливать пакеты из указанных файлов, при этом одновременно будут установлены необходимые зависимости для этого пакета:


Установка пакетов с помощью gdebi

Вы можете установить программу gdebi:

И затем устанавливать пакеты с помощью неё:

gdebi также установит необходимые зависимости. На самом деле, gdebi появилась когда apt-get не могла устанавливать локальные файлы (или эта возможность не была документирована), сейчас же вместо gdebi можно использовать apt, которая предустановлена в каждом дистрибутиве, основанном на Debian.

Читайте также: