Екранна снимка на Maestro
Rust придоби достатъчно популярност до такава степен, че той се превърна в един от избраните да бъдат интегрирани като вторичен език в Linux, както и в други операционни системи, какъвто е случаят с Android, който вече има част от кода в Rust, Windows, който също е дал одобрението, наред с други.
Ръжда се е доказал като стабилен език и е генерирал такова доверие Някои операционни системи дори са създадени с този език за програмиране и само за да споменем няколко: Редокс, Имаме и ядра, написани от нулата, като напр Керла или ядрото, използвано в сателит, който Китай наскоро изстреля.
Причината да спомена това е, че наскоро попаднах на новина, която привлече вниманието ми и това е, че Беше представен проект, в който е разработено ядро, написано на Rust и който е частично съвместим с Linux.
Името на този проект е "Учител" и както споменахме, е Unix-подобно ядро, написано на Rust, прилагащо подмножество от системни извиквания от ядрото на Linux достатъчни за създаване на стандартна работна среда. Като такъв, проектът "Maestro" не е нещо ново, тъй като разработчикът споменава, че проектът е роден през 2018 г., но по това време е бил написан на C и поради различните предимства и характеристики на Rust, проектът е пренаписан от нула.
На страницата на проекта Описани са причините за промяната:
В този момент реших да премина към Rust (първият ми проект на този език), което представляваше няколко предимства:
- Рестартирайте проекта отначало, като използвате поуките, научени от предишни грешки.
- Бъдете малко по-иновативни, отколкото просто да пишете Linux-подобно ядро на C. В края на краищата, просто използвайте Linux по това време.
- Използвайте сигурността на езика Rust, за да се възползвате от някои трудности при програмирането на ядрото. Използването на системата за писане Rust ви позволява да прехвърлите част от отговорността за безопасността на паметта от програмиста към компилатора.
При разработването на ядрото отстраняването на грешки е много трудно поради няколко причини:
- Документацията често е трудна за намиране и внедряването на BIOS може да има грешки (по-често, отколкото си мислите).
- При зареждане ядрото има пълен достъп до паметта и може да пише там, където не трябва (собствен код, например).
- Отстраняването на проблеми с изтичане на памет не е лесно. Инструменти като valgrind не могат да се използват.
- gdb може да се използва с QEMU и VMWare, но ядрото може да се държи различно, когато се изпълнява на различен емулатор или виртуална машина. Освен това тези емулатори може да не поддържат gdb (напр. VirtualBox).
- Някои функции липсват от поддръжката на gdb в QEMU или VMWare и gdb може дори да се срине понякога
Във връзка с характеристиките на проекта се откроява, че ядрото е монолитно и в момента се поддържа само на x86 системи в 32-битов режим. Кодовата база на ядрото обхваща около 49 хиляди реда, като е изпълнима както на реален хардуер, така и във виртуализирани среди, като QEMU или VirtualBox.
В текущото развитие на «Maestro», Изпълнени са 31%. (135 от 437) на системни повиквания на Linux. Това е достатъчно, за да зареди конзолна среда, базирана на Bash и стандартната C библиотека на Musl. В допълнение, базираната на Maestro среда може да изпълнява някои помощни програми от пакета GNU coreutils и основния пакет от всяка Unix система. В момента се работи по внедряването на мрежов стек и също така се работи по разработването на
Сред Наличните функции на Maestro се открояват следното::
- Контролери за PS/2 клавиатура и терминал с текстов режим и частична поддръжка за ANSI последователности.
- Система за разпределение на паметта с поддръжка на виртуална памет.
- Планировчик на задачи, базиран на кръговия алгоритъм с поддръжка на POSIX сигнали.
- Дефиниция на PCI устройства.
- IDE/PATA контролер.
- Ext2 файлова система.
- Поддръжка за /tmp и /proc виртуални файлови системи.
- Възможност за монтиране на FS, MBR и GPT дискови дялове.
- поддръжка на initramfs.
- RTC контролер за таймер и точно време.
- Поддръжка за зареждане на модули на ядрото.
- Възможност за стартиране на изпълними файлове във формат ELF.
За заинтересовани да научат малко повече за проекта, можете да проверите детайлите В следващия линк. Що се отнася до тези, които се интересуват от кода на проекта, те трябва да знаят, че е така разпространявани под лиценза на MIT.