# Основная директория операционной системы Calista

В данном репозитории представлено сразу два компонента системы

- Реестр системы
- Компонент автоматической установки драйверов

Зависит от sqlite3, этот бинарь используется в shell скриптах

- Для инициализации реестра вызываем reginit
- Для инициализации системы автоматической установки драйверов и листинга устройств вызываем init_device_demon

Система уже может автоматически устанавливать драйвера (но пока не умеет их удалять), обновлять список устройств при подключении USB устройств

ВНИМАНИЕ hid устройства (мыши, клавиатуры), пока нормально не обрабатываются - баг состоит в том что событие подключения hid устройств
генерируется ядром FreeBSD и соответсвенно это событие вызывает переинициализацию списка устройств, а при отключении почему-то не вызывает
события отключения. Однако флешки обрабатываются успешно.

Для сборки системы calista скорее всего надо будет клонировать эту папку и вызывать файл build в ней (на будущее).

К сожалению у меня не получилось добавить данную папку в менеджер компонентов Calista, так как в этой папке хранятся низкоуровневые механизмы системы


Файл builtin_devices - список устройств, драйвера которых уже зашиты в ядро FreeBSD

Система автоматической установки драйверов работает по простому принципу - репозиторий https://gitlab.svsptech.ru/svsptech/calista_drivers.git 
это по сути таблица ключ значение, где ключ это vendor:device а значение - название устройства, тип драйвер и путь к драйверу.

Типов драйверов сейчас два:

- builtin - драйвера, которые уже существуют в ядре FreeBSD
- https - драйвера, которые нужно скачать по ссылке далее

Драйвер - это простой архив с sh скриптом build. При установке драйвера вызывается этот файл, в его задачи собственно входит успешно установить драйвер в систему - пример - https://gitlab.svsptech.ru/svsptech/calista_nvidia304driver.git - первый драйвер для Calista

Пример файла driver.list с перечислением драйверов устройств

```
ver0
0x8086:0x27a0:Intel 945GM/PM Host Bridge:builtin:
0x8086:0x27a1:Intel 945GM/PM PCI Express Root Port:builtin:
0x8086:0x27d8:Intel ICH7-M High Definition Audio:builtin:
0x8086:0x27d0:Intel ICH7-M PCI Express Port 1:builtin:
0x8086:0x27d2:Intel ICH7-M PCI Express Port 2:builtin:
0x8086:0x27d4:Intel ICH7-M PCI Express Port 3:builtin:
0x8086:0x27c8:Intel ICH7-M USB UHCI Controller #1:builtin:
0x8086:0x27c9:Intel ICH7-M USB UHCI Controller #2:builtin:
0x8086:0x27ca:Intel ICH7-M USB UHCI Controller #3:builtin:
0x8086:0x27cb:Intel ICH7-M USB UHCI Controller #4:builtin:
0x8086:0x27cc:Intel ICH7-M USB2 EHCI Controller:builtin:
0x8086:0x2448:Intel 82801 PCI Bridge:builtin:
0x8086:0x27b9:Intel ICH7-M LPC Interface Bridge:builtin:
0x8086:0x27c4:Intel ICH7-M IDE/SATA Controller:builtin:
0x8086:0x27da:Intel ICH7-M SMBus Controller:builtin:
0x10de:0x0398:Nvidia GeForce Go 7600:https:gitlab.svsptech.ru/svsptech/calista_nvidia304driver/archive/main.zip
0x8086:0x4222:Intel PRO/Wireless 3945ABG Wi-Fi:builtin:
0x104c:0x8039:Texas Instruments PCIxx12 CardBus Controller:builtin:
0x104c:0x803a:Texas Instruments PCIxx12 FireWire Controller:builtin:
0x104c:0x803b:Texas Instruments PCIxx12 Flash Media Controller:builtin:
0x104c:0x803c:Texas Instruments PCIxx12 SD/MMC Host Controller:builtin:
0x8086:0x1092:Intel PRO/100 VE Ethernet:builtin:
```