Embox - это настраиваемый RTOS, предназначенный для ограниченных ресурсов и встроенных систем. Основная идея Embox - использовать программное обеспечение Linux без Linux.
Списки рассылки:
Телеграмма чаты:
Вот краткий обзор того, как построить и запустить Embox.
Требуемая среда:
gcc и makeДля систем на базе Debian (большинство пакетов установлены из коробки):
$ sudo apt-get install build-essential gcc-multilib curl libmpc-dev python
Для Arch Linux:
$ sudo pacman -S make gcc-multilib cpio qemu
$ yay -S python2-bin
Для Fedora Linux:
$ sudo dnf install make gcc cpio qemu patch curl python
Для Mac OS X (требуется установлен Homebrew):
$ brew install i686-elf-binutils i686-elf-gcc awk cpio qemu python
Для любой системы с Docker (больше информации о Wiki Emdocker):
$ ./scripts/docker/docker_start.sh
$ . ./scripts/docker/docker_rc.sh
Прежде всего:
$ git clone https://github.com/embox/embox.git embox
$ cd embox
Поскольку Embox является высоко настраиваемым проектом, необходимо указать модули, которые будут созданы, и параметры для них. Для создания make ОС используется. Все команды, описанные ниже, вызываются из каталога embox , который включает в себя src/ , templates/ , ...
Для настройки необходимо указать параметры и модули, которые должны быть включены в систему. Есть два способа настроить текущую конфигурацию:
make confload-<template> - Создайте артефакты, сгенерированные в фиксированном месте./confset <template> - Построение артефактов, поддерживаемых в зависимых от проектных рабочих путях В то время как используется make confload-<template> , файлы из папки шаблона копируются в папку ./conf '. Вы можете изменить их. В то время как confset <template> используется, файлы из папки шаблона копируются в папку ./work/<template>/conf , а ссылка './conf' создается для ./work/<template>/conf . Это использование подходит для быстрого переключения между вашими шаблонами, потому что полные восстановления избегают. Более того, рабочие конфликты также сохраняются, когда вы переключаете сборку, например, между реальной целью и Qemu и обратно. Только недостаток использования метода Confset: больше SSD/HDD, в зависимости от количества параллельных проектов.
Embox имеет несколько шаблонов, чтобы перечислить их, используйте следующую команду:
$ make confload
Самый простой способ загрузить шаблон - указать его имя в команде:
$ ./confset <template>
или
$ make confload-<template>
Для быстрого обзора вы можете использовать один из шаблонов qemu , который существует для большинства архитектур, то есть x86/qemu для x86:
$ ./confset x86/qemu (но не автозаполняет/-седжующую, когда напечатана только часть: делать)
или
$ make confload-x86/qemu
После настройки проекта просто запустить make для создания:
$ make
Полученное изображение теперь можно запустить на QEMU. Самый простой способ - выполнить скрипт ./scripts/qemu/auto_qemu :
$ sudo ./scripts/qemu/auto_qemu
sudo переценку для настройки устройства TUN/TAP, необходимого для эмуляции сети.
После того, как система загружена, вы увидите подсказку embox> , теперь вы сможете запускать команды. Например, help перечисляет все существующие команды.
Чтобы проверить соединение:
ping 10.0.2.16
Если все в порядке, вы можете подключиться к терминалу Embox через telnet .
Чтобы выйти из типа qemu ctrl + a и x после этого.
Вы можете использовать один и тот же сценарий с -S -smachine accel = tcg flags для отладки:
$ sudo ./scripts/qemu/auto_qemu -s -S -machine accel=tcg
После запуска этот Qemu ждет соединение от GDB-клиента. Запустите GDB в другом терминале:
$ gdb ./build/base/bin/embox
...
(gdb) target extended-remote :1234
(gdb) continue
Система начинает загружаться.
В любой момент в терминале GDB вы можете ввести Ctrl + C и увидеть стек текущего потока ( backtrace ) или установить точки останова ( break <function name> , break <file name>:<line number> ).
Embox поддерживает следующие архитектуры процессора: x86, ARM, Microblaze, SPARC, PPC, MIPS.
Чтобы работать с архитектурами, отличными от X86, вам понадобится кросс -компилятор. После установки Cross Compiler просто повторите шаг выше, начиная с настройки:
make confload-<arch>/qemu
make
sudo ./scripts/qemu/auto_qemu
Вывод совсем такой же, как в случае архитектуры x86.
Embox поддерживает сеть на QEMU X86, ARM, MIPS и Microblaze.