The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Новый проект Linux Foundation по созданию ОС реального времени для интернета вещей

18.02.2016 19:36

Организация Linux Foundation анонсировала новый совместный проект Zephyr, в рамках которого ведётся разработка новой компактной Real-Time операционной системы (RTOS), предназначенной для оснащения устройств, соответствующих концепции "Интернет вещей" (IoT, Internet of Things). Наработки проекта поставляются под лицензией Apache 2.0. Участниками проекта выступили такие компании, как Intel, NXP Semiconductors/Freescale, Synopsys и UbiquiOS.

В настоящее время для загрузки доступны первый выпуск ядра Zephyr Kernel 1.0 и набор Zephyr SDK, включающий инструменты и кросс-компиляторы для сборки ядра для различных аппаратных платформ. Система адаптирована для установки на платы на базе архитектуры x86 (Arduino 101, Quark D2000 CRB, Galileo Gen1/Gen2, Minnowboard Max), ARMv7 (Arduino Due, Freescale FRDM-K64F) и ARC (Arduino 101), а также для тестирования в эмуляторе на базе QEMU. В состав SDK входят: GCC, binutils, gdb, libgcc, newlib, Python 2.7, QEMU, GNU Make и OpenOCD (Open On-Chip Debugger).

Ядро рассчитано на потребление минимальных ресурсов (от 8 до 512 Кб ОЗУ в зависимости от компоновки), что позволяет использовать его на различных портативных системах, от простых встраиваемых датчиков и чипов для одежды, до умных часов и беспроводных шлюзов для IoT-устройств. Из средств сетевого и беспроводного взаимодействия ядром поддерживается Bluetooth 4, IPv4, IPv6, IEEE 802.15.4, Bluetooth Low Energy (BLE), 6lowPAN (IPv6 over Low power Wireless Personal Area Networks), CoAP (Constrained Application Protocol), DTLS (Datagram Transport Layer Security). Доступны драйверы ввода/вывода для ADC, GPIO, I2C и SPI.

Основные особенности ядра Zephyr:

  • Работа в едином адресном пространстве (SASOS, Single Address Space Operating System) - для всех процессов предоставляется только одно глобальное совместно используемое виртуальное адресное пространство. Специфичный для приложений код комбинируется с адаптированным под конкретное применение ядром и образует монолитный исполняемый файл для загрузки и запуска на определённом оборудовании. Код приложений и ядра выполняются в одном общем адресном пространстве.
  • Широкие возможности по настройке. В системный образ могут включаться только те возможности ядра, которые требуются для выполнения приложения;
  • Все системные ресурсы определяются на этапе компиляции, что сокращает размер кода и увеличивает производительность;
  • Минимальные проверки ошибок во время выполнения, что также сокращает размер кода и увеличивает производительность. В форме подключаемой надстройки для отладки предлагается специальная отладочная инфраструктура, позволяющая выявлять ошибки во время разработки приложения, создавая специальные тестовые образы;
  • Обширный набор привычных сервисов для разработки:
    • Многопоточность на основе приоритетов с вытесняющей и совместной моделью передачи управления;
    • Подключение обработчиков прерываний, регистрируемых как на этапе компиляции, так и во время выполнения;
    • Средства синхронизации данных между потоками - двоичные семафоры, семафоры-счетчики и мьютексы;
    • Средства передачи данных между потоками - простые очереди сообщений, расширенные очереди сообщений и байтовые потоки;
    • Сервисы для распределения памяти - динамическое выделение памяти и очистка для блоков памяти фиксированного и динамического размера;
    • Механизмы управления питанием: режим tickless (вместо фиксированного вызова по таймеру, процессор просыпается только при наличии событий) и расширенная инфраструктура управления простоем процессора (idle).
  • Разработка с оглядкой на безопасность. Все стадии разработки проходят обязательные этапы подтверждения безопасности кода: fuzzing-тестирование, статический анализ, испытания на проникновение, рецензирование кода, анализ внедрения бэкдоров и моделирование угроз. Поставка в виде статически собранного исполняемого файла ограничивает вектор атак только скомпилированным кодом, без возможности загрузить свои модули.


  1. Главная ссылка к новости (http://www.linuxfoundation.org...)
  2. OpenNews: Опубликован официальный план прекращения разработки Firefox OS для смартфонов
  3. OpenNews: Компания ARM открыла исходные тексты встраиваемой операционной системы mbed OS
  4. OpenNews: Представлен вариант Ubuntu Core для умных устройств
  5. OpenNews: Linux Foundation представил предварительный выпуск фреймворка IoTivity
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/43900-iot
Ключевые слова: iot, realtime
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (66) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, A.Stahl (ok), 19:45, 18/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –7 +/
    >Работа в едином адресном пространстве

    Это они по DOS-у ностальгируют?
    >8 Кб ОЗУ

    Начал было писать большой и едкий комментарий, а потом заметил, что КиБ, а не МиБ. Ок.

     
     
  • 2.57, dmitrmax (?), 15:37, 19/02/2016 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Сразу виден большой опыт за плечами в делах RTOS. Да и DOS'а, похоже, ты "большой" знаток.

    Мне, например, это больше напоминает такую операционку как eCos (http://ecos.sourceware.org/)

     
     
  • 3.62, Аноним (-), 19:24, 19/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Нет смысла во всем этом - сейчас в микромодуль 5х5 сантиметров лезет нормальный Linux. Потому что там запросто бывает 4 ядра и гиг оперативы.
     
     
  • 4.63, RomanCh (ok), 00:10, 20/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >  Нет смысла во всем этом - сейчас в микромодуль 5х5 сантиметров лезет нормальный Linux. Потому что там запросто бывает 4 ядра и гиг оперативы.

    Как думаете, этот ваш "микромодуль" и то для чего данная операционка разрабатывается - одинаково стоят? Конечно если вам "поковыряться дома", то проще переплатить несколько долларов и меньше морочиться. А если вам нужно произвести миллион устройств, что выберете?

    PS Неужели думаете что корпорации входящие в LF глупее вас?

     
  • 4.64, ovg (ok), 00:31, 20/02/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Для датчика размер 5х5 сантиметров - это ооочень много.
     
     
  • 5.65, Led (ok), 02:41, 20/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Для датчика размер 5х5 сантиметров - это ооочень много.

    Зато 10 кг для ноутбука - в самый раз.

     
     
  • 6.71, Aleks Revo (ok), 19:05, 23/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Так слово за слово датчик 5x5 см, оброс десятью килограммами аккумулятора и тянул целых 4 часа автономной работы
     
  • 2.73, Аноним (-), 01:30, 24/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    не, был один проект(специально не будут называть чтобы теперяшний владелец IP - не вздумал этого франкенштейна оживлять)где форки сначала фряхи а потом линукса - елозил поверх проца с софтварной эмуляцией не только MMU(привет, Inmos и NS !! :), но и прерываний аппаратных :=)
     

  • 1.3, Аноним (-), 19:45, 18/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    >Наработки проекта поставляются под лицензией Apache 2.0.
    >Работа в едином адресном пространстве (SASOS, Single Address Space Operating System) - для всех процессов предоставляется только одно глобальное совместно используемое виртуальное адресное пространство.

    Вобщем ничего хорошего.
    Лучше бы что-то типа этой http://chibios.org/ поддержали.

     
     
  • 2.44, Аноним (-), 08:06, 19/02/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Нет, лучше это: https://github.com/shkolnick-kun/bugurtos
     
     
  • 3.50, Аноним (-), 10:33, 19/02/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Тогда уж https://www.mbed.com/en/
    Штука достойная получается, как мне кажется. Когда выбирал остановился на FreeRTOS, mbed был сырой ещё, но сейчас использовал бы его, код намного аккуратнее написан да и архитектура продумана лучше.
     
     
  • 4.60, Аноним (-), 16:26, 19/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Не нашёл исходников самой ОС. Правильно ли я понимаю, что она проприетарная?
     
     
  • 5.69, Всемирное общество Зайчаток Разума (?), 02:19, 21/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    https://github.com/mbedmicro/mbed
     

  • 1.5, Аноним (-), 20:03, 18/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –12 +/
    > для интернета вещей

    Another on bite the dust. Привет от FirefoxOS!

     
     
  • 2.7, ололо (?), 20:36, 18/02/2016 [^] [^^] [^^^] [ответить]  
  • +13 +/
    >Another on bite the dust

    facepalm.mkv

     
  • 2.48, gunower (?), 09:52, 19/02/2016 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Another one bites the dust
     

  • 1.6, Аноним (-), 20:35, 18/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > от 8 до 512 Кб ОЗУ

    Может, не Кб, а KiB?

     
     
  • 2.10, анонимус (??), 20:53, 18/02/2016 [^] [^^] [^^^] [ответить]  
  • –7 +/
    а может и нет.
    kibibyte - KiB - 1024 byte
    килобайт - КБ - 1024 байт
     
     
  • 3.42, преподаватель информатики (?), 07:03, 19/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    В то же время в ГОСТ/СИ/ISO кило, к- (маленькая) это 1000. Что и пишут производители носителей информации на коробках, не нарушая никаких стандартов.
     

  • 1.8, Аноним (-), 20:37, 18/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    скоро, на всех просторах ЛОРа скрины с этой OS на калькуляторах.
     
     
  • 2.11, Аноним (-), 21:00, 18/02/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    На утюгах, калькулятор это прошлый век.
     
     
  • 3.19, ononimus (?), 22:17, 18/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    на зубочистках же ж!
     
     
  • 4.22, АнонимХ (ok), 22:20, 18/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    "Ок, гугл, а теперь прочисть мне нижний второй моляр"
     
     
  • 5.55, anonymous (??), 14:27, 19/02/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Главное при этом - правильной стороной к Гуглу быть.
     

  • 1.9, IMHO (?), 20:50, 18/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >  ОС реального времени для интернета вещей

    точно, реального времени в интернете не хватает

     
     
  • 2.13, Pofigis (?), 21:11, 18/02/2016 [^] [^^] [^^^] [ответить]  
  • –7 +/
    Вся инфраструктура интернета функционирует на ОСРВ. Ну извини - без ОСРВ нормальной коммутации и маршрутизации сделать не получиться.
     
     
  • 3.23, Вареник (?), 22:41, 18/02/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    До конечного пользователя эта реалтаймовость как-то не доходит :)
     
  • 3.29, Аноним (-), 23:04, 18/02/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Особенно Cisco IOS весь такой рилтаймовый.
     
  • 3.39, lor_anon (ok), 02:34, 19/02/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Почему это не получится? Очень даже получится.

    Даже не углубляясь в ОС для сетевого оборудования, берём комп с не-RT линуксом, ..., готова коммутация и маршрутизация. Коммутация, возможно, будет так тебе (но упрётся в железо, а не ОС), а маршрутизация вполне нормальная.

     
  • 2.46, Andrey Mitrofanov (?), 09:36, 19/02/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >>  ОС реального времени для интернета вещей
    > точно, реального времени в интернете не хватает

    И Реальных Вещей!

     

  • 1.12, Kodesu (ok), 21:00, 18/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    >  Широкие возможности по настройке. В системный образ могут включаться только те возможности ядра, которые требуются для выполнения приложения;
    > Все системные ресурсы определяются на этапе компиляции, что сокращает размер кода и увеличивает производительность;
    > Поставка в виде статически собранного исполняемого файла ограничивает вектор атак только скомпилированным кодом, без возможности загрузить свои модули.

    Правильно ли я понимаю, что для обновления софта на таком устройстве будет требоваться перекомпиляция всей ОС? Если так, то с точки зрения безопасности это заведомо провальное решение.
    Очевидно, что простой пользователь залатыванием дыр заниматься не будет, и поэтому т.н. IoT быстро превратится в ворох дырявого барахла.

     
     
  • 2.18, Аноним (-), 21:51, 18/02/2016 [^] [^^] [^^^] [ответить]  
  • +4 +/
    IoT - это тебе не виндовс/линукс-пекарня, ибо софт намного меньше и, как следствие, дыр намного меньше.
    Да и вообще на эту ОС нужно смотреть как на заменителя FreeRTOS, а здесь своя атмосфера.
     
     
  • 3.40, dlazerka (ok), 03:42, 19/02/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Я тут общался с одним профессиональным ембедщником, конвертнувшимся из жава-клауд девелопмента. Грит в IoT всё ещё хуже, чем даже в Сях. Никто не парится, что контроллер можно взломать.
     
     
  • 4.56, anonymous (??), 14:33, 19/02/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ну конечно-конечно все вокруг виноваты.

    P.S. друга не Дартаньян зовут?

     
  • 3.47, Andrey Mitrofanov (?), 09:39, 19/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >на заменителя FreeRTOS,
    > а здесь своя атмосфера.

    А вототочо. Я-то было подумал, это от ЛФ повеяло.

    --Дух в окопах.

     
     
  • 4.61, Аноним (-), 18:28, 19/02/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Не, это от Hurd'а микроядерностью попахивает.
     
  • 2.20, АнонимХ (ok), 22:18, 18/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Должно быть автообновление + два или три флеша. Скачал образ на второй флеш, перезагрузил. По вотчдогу - перегрузился в первый, заводской образ, если зависло. По такому принципу, как сейчас BIOS на многих материнках в нескольких экземплярах  и версиях.
     
     
  • 3.68, ttwo (?), 17:31, 20/02/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Должно быть автообновление + два или три флеша. Скачал образ на второй
    > флеш, перезагрузил. По вотчдогу - перегрузился в первый, заводской образ, если
    > зависло. По такому принципу, как сейчас BIOS на многих материнках в
    > нескольких экземплярах  и версиях.

    Идея неплохая. Но как же себя почувствует его величество "Планируемое_устаревание"? https://ru.wikipedia.org/wiki/%D0%9F%D0%BB%D0%B0

     
  • 2.27, IB (?), 22:56, 18/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    А прошивку для телефона вы тоже лично компилируете?
    А смысл то тот же самый. Утюг скачает прошивку и обновится :)
     
  • 2.36, all_glory_to_the_hypnotoad (ok), 01:02, 19/02/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > ... и поэтому т.н. IoT быстро превратится в ворох дырявого барахла.

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

     
  • 2.52, Анонимоус (?), 13:39, 19/02/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Оно и задумывалось как дырявое. АНБ не просто так придумало камеры в лампочки ставить. Ну да, чтобы включать самое подходящее к данному времени освещение, конечно.
     
  • 2.58, 1 (??), 15:39, 19/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Выкинут старые кеды и купят новые с новым ПО
     

  • 1.14, SLRU (?), 21:16, 18/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А STM? =c
     
  • 1.15, KOT040188 (?), 21:22, 18/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Может займутся этим и забудут про планы на лису…
     
  • 1.16, 321 (??), 21:23, 18/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >В состав SDK входят: GCC

    почему не llvm? ведь код llvm гораздо быстрее!

     
     
  • 2.17, Georges (ok), 21:29, 18/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Код llvm или код, полученный в результате компиляции?
     
     
  • 3.21, ononimus (?), 22:19, 18/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    уже и то и другое
     
     
  • 4.53, Аноним (-), 13:43, 19/02/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Очень сильный свист.
     

  • 1.26, Вареник (?), 22:46, 18/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Лучше бы основной Linux Kernel на микроядро перевели, вроде L4se. Хоть как-то защититься от дыр безопасности прямо в сетевом стеке или glibc, от глюков в драйверах, блобах и т.д.

    Нет, блин, вместо этого надо переписывать FreeRTOS.

     
     
  • 2.28, IB (?), 22:59, 18/02/2016 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > Лучше бы основной Linux Kernel на микроядро перевели, вроде L4se. Хоть как-то
    > защититься от дыр безопасности прямо в сетевом стеке или glibc, от
    > глюков в драйверах, блобах и т.д.
    > Нет, блин, вместо этого надо переписывать FreeRTOS.

    Купи Мак :) там унутре Мах

     
  • 2.38, Аноним (-), 01:45, 19/02/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > защититься от дыр безопасности прямо в сетевом стеке или glibc, от глюков в драйверах

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

     

  • 1.31, Аноним (-), 23:24, 18/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    https://twitter.com/internetofshit
     
  • 1.32, Аноним (-), 23:25, 18/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    там много проектов и так мало годных проектов(
     
  • 1.35, all_glory_to_the_hypnotoad (ok), 00:59, 19/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Работа в едином адресном пространстве ... Разработка с оглядкой на безопасность

    ха-ХА. Разрешаю приступить к закапыванию вместе с идейными генераторами этого проекта. Можете с собой ещё прихватить несколько интернета вещей.

     
     
  • 2.59, dmitrmax (ok), 15:42, 19/02/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    О! Главный разрешающий эксперт подтянулся!
     

  • 1.41, Меломан1 (?), 05:22, 19/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >Linux Foundation

    Вот же бл...Бюрократы и барыги. Где их знаменитые MeeGo и Tizen? Ясень пень - в жопе, как и все чем они занимаются. Ах они стандартизируют Линукс! Интересно как - кулаком по морде конечно.

     
     
  • 2.49, Andrey Mitrofanov (?), 09:54, 19/02/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >>Linux Foundation
    > Вот же бл...Бюрократы и барыги. Где их знаменитые MeeGo и Tizen? Ясень
    > пень - в жопе, как и все чем они занимаются. Ах
    > они стандартизируют Линукс! Интересно как - кулаком по морде конечно.

    У них ЦА и Б-М другие.  Понимаете, _они_ софт не делают. Они хороводы с проприертарщиками хороводят. У них в портфолио Линус почётным аниматором -- рассказывает, как хорош GPLv2=. Они конференции и консорциумы собирают, долю-бульон имеют. А чего там накодится -- вообще говоря, не важно для куска масла на бутерброд. О'Райли http://thebaffler.com/articles/the-meme-hustler гордится ими и завидует.

     

  • 1.45, Аноним (-), 09:30, 19/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ну наконец-то дошло, что как linux не собирай, как ядро ни чисть и опции не отключай он всеравно жирный для подобных девайсов. Успехов им!
     
  • 1.51, Аноним (-), 11:15, 19/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    https://twitter.com/internetofshit
     
  • 1.54, Dmitry (??), 14:13, 19/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Почему Python 2, а не 3?
    И так тяжко переход даётся, так они ещё усугубляют, начиная новые проекты на нём.
     
  • 1.66, Аноним (-), 16:40, 20/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > фиксированного вызова по таймеру, процессор просыпается только при наличии событий

    А чё, пендель от таймера - это не событие?

     
     
  • 2.67, Andrey Mitrofanov (?), 17:03, 20/02/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> фиксированного вызова по таймеру, процессор просыпается только при наличии событий
    > А чё, пендель от таймера - это не событие?

    Да, не. Словосочетанием "режим tickless" оббозначается отключение этих пенделей для экономии и профита.

     

  • 1.70, Sergii (?), 11:46, 21/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > регистрируемых как на этапе компиляции

    что это означает?

     
  • 1.72, Аноним (-), 01:27, 24/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    ОСЬ РТ без защиты адрессного пространства для эмбеддовки ???! они ...нулись ??
    хотите ездить/летать на машине/авиалайнере управляемым Таким ? нунафиг !!
     
  • 1.74, L29Ah (?), 12:43, 24/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Contiki им не понравилась, я так понимаю?
     
     
  • 2.75, Andrey Mitrofanov (?), 14:23, 24/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Contiki им не понравилась, я так понимаю?

    "Нужно больше кон-сор-циумов!"

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру