Многопоточное ядро, встроенное в защищенный режим для архитектуры x86
Ядро было разработано с использованием пользовательского Cross Compiler GCC из Source
Scorpion имеет почти все фундаментальные компоненты, охватываемые в полном монолитном монолитном ядре
Скорпион - это монолитное ядро, используемое для демонстрации того, как ведут себя ядра и может быть построено с нуля
Постоянная и обширная ссылка, используемая во время разработки скорпиона: https://wiki.osdev.org/main_page
Ниже приведены некоторые атрибуты скорпиона:
0x80 для процесса пространства пользователя и связи с ядрамиВсе атрибуты ядра могут не быть зафиксированы здесь и могут продолжать улучшаться с течением времени, но вышеуказанные останутся в качестве основных свойств.
Есть некоторые предпосылки для строительства и тестирования скорпиона
Перед созданием ядра и загрузчика нам нужно подготовить окружающую среду, создав кросс-компилятор. Требуется кросс-компилятор, потому что у вашего хозяина может быть другая архитектура, чем цель, на которой мы работаем в ядре.
Установите зависимости межкомпьюлеров со следующими командами:
sudo apt install build-essential bison flex libgmp3-dev libmpc-dev libmpfr-dev texinfo libisl-dev
Загрузите исходный код для Bin Utils и GCC в каталог $HOME/src используя следующие ссылки:
Извлеките оба загрузки в каталог $HOME/src
Теперь давайте преобразуем источник в файлы объектов компилятора для нашей цели
Сначала необходимо установить некоторые Env Vars для установки скомпилированных двоичных файлов в правильном месте
export PREFIX="$HOME/opt/cross"
export TARGET=i686-elf
export PATH="$PREFIX/bin:$PATH"
Запустите следующую команду, чтобы построить бинутилы. Не забудьте заменить XYZ своей собственной версией.
cd $HOME/src
mkdir build-binutils
cd build-binutils
../binutils-x.y.z/configure --target=$TARGET --prefix="$PREFIX" --with-sysroot --disable-nls --disable-werror
make
make install
Запустите следующую команду для создания GCC. Не забудьте заменить XYZ своей собственной версией.
cd $HOME/src
# The $PREFIX/bin dir _must_ be in the PATH. We did that above.
which -- $TARGET-as || echo $TARGET-as is not in the PATH
mkdir build-gcc
cd build-gcc
../gcc-x.y.z/configure --target=$TARGET --prefix="$PREFIX" --disable-nls --enable-languages=c,c++ --without-headers
make all-gcc
make all-target-libgcc
make install-gcc
make install-target-libgcc
Как только все вышеупомянутые шаги будут завершены, пройдите и проверьте, если ваш кросс-компилятор успешно построен и установлен или нет с помощью следующей команды:
$HOME/opt/cross/bin/$TARGET-gcc --version
Теперь, когда наш Cross Compiler готов, мы готовы построить скорпиона с помощью загрузчика. Запустите следующее в корне структуры проекта
./build.sh
Если сборка преуспевает, в корне проекта следует генерировать 3 bin файлов.
boot.binkernel.binscorpion.bin Пришло время запустить ОС Scorpion, используя выходные двоичные файлы в предыдущем разделе. Запустите следующую команду в терминале, чтобы имитировать Scorpion с помощью QEMU
qemu-system-i386 -hda ./bin/scorpion.bin
В качестве альтернативы вы найдете загрузку машины до следующей оболочки при тестировании на физическом компьютере, если загрузочное устройство установлено правильно в меню BIOS

Подсказка оболочки должна быть активирована с версией Scorpion сверху слева. Теперь вы можете начать печатать на оболочке. Образец программы под названием blank.elf был создан и загружен на жесткий диск Scorpion, чтобы он мог получить доступ.
Загрузите программу в память, выполнив следующее в командной строке Scorpion
> blank.elf
Программа также может быть загружена аргументами, которые могут быть обработаны последовательным пользовательским процессом следующим образом:
> blank.elf 55 21 tree
Подобный выход должен быть сгенерирован в зависимости от того, загружена ли программа с аргументами или без него:
