Операційні системи, складені з сотень тисяч рядків коду, дозволяють користувачам взаємодіяти з комп'ютерною технікою. Вони зазвичай пишуться на мовах програмування C, C++ і асемблер.
Кроки
- Для початку навчіться програмуванню. знання асемблера необхідно; настійно рекомендується також мати поняття про інші додаткові мови програмування нижчого рівня, наприклад, С.
- Визначтеся, на який пристрій Ви хочете завантажити операційну систему.це може бути CD-диск, DVD-диск, пристрій флеш-пам'яті, жорсткий диск або інший комп'ютер.
- Вирішіть, який ви хочете бачити вашу операційну систему.чи повинна це бути повна версія ОС з графічним інтерфейсом користувача (GUI) або, може бути, що-небудь більш мінімалістичне? Вам необхідно знати, в якому напрямку рухатися, ще перед початком процесу.
- Уточніть, яку платформу процесора буде підтримувати ваша операційна система.AI-32 і x86_64 є двома найбільш поширеними версіями для персональних комп'ютерів, так що їх можна вважати найкращим вибором.
- Визначитеся, чи віддаєте перевагу робити все самостійно з нуля, або ж є ядра, на основі яких ви б хотіли надбудувати систему.Linux з нуля-проект для тих, хто бажає, наприклад, створити свій власний дистрибутив Linux.
- Виберіть, чи збираєтеся ви використовувати свій власний завантажувач або попередньо створений уніфікований системний завантажувач Grand Unified Bootloader (GRUB).оскільки кодування своєї власної програми завантаження вимагає великих знань в області комп'ютерного забезпечення і BIOS, це може відсунути графік програмування діючого ядра.
- Прийміть рішення з приводу мови програмування, який збираєтеся використовувати.звичайно, цілком можливо розробити ОС на такій мові, як Pascal або BASIC, але краще писати на С або асемблері. Асемблер абсолютно необхідний, тому що деякі важливі частини операційної системи вимагають знання саме цієї мови. C++, з іншого боку, містить ключові слова, необхідні для запуску повної версії ОС.
- Щоб зібрати ОС за допомогою кодів C або C++, ви, звичайно, будете використовувати то один компілятор, то інший. Це означає, що ви повинні прочитати керівництво/інструкції / документацію для обраного компілятора C / C++, що поставляється в комплекті з програмним забезпеченням або доступно на веб-сайті дистриб'ютора. Вам доведеться дізнатися безліч складних речей про компіляторі, крім того, для вдосконалення C++ належить вивчити його схему і ABI. Ви, як очікується, зрозумієте різні формати виконавчих завдань (ELF, PE, COFF, звичайні бінарні і т.д.) і помітите, що власний формат Windows, PE (.exe) захищений авторським правом.
- Виберіть інтерфейс програмування додатків (API).однією з добірок хорошого API є POSIX, так як вона добре документований. Всі системи Unix мають, принаймні, часткову підтримку POSIX, так що було б тривіально пристроювати програми Unix на вашу операційну систему.
- Визначтеся з дизайном.існують монолітні ядра і мікроядра. Монолітні ядра виконують всі служби в ядрі, в той час як мікроядра мають маленьке ядро в поєднанні з користувальницької реалізацією сервісів. Загалом, монолітні ядра швидше, але мікроядра мають кращу ізоляцію і захист від можливих несправностей.
- Розгляньте питання про розробку та роботу в команді.таким чином, вам буде потрібно менше часу на вирішення великих проблем, що дозволить створити операційну систему кращої якості за більш короткі терміни.
- Не стирайте ваш жорсткий диск повністю.Пам'ятайте, форматування диска необоротно очистить всі ваші дані! Використовуйте GRUB або інший менеджер для дубльованого завантаження вашого комп'ютера з іншої ОС, поки ваша версія не буде повністю готова функціонально.
- Почніть з малого.зверніть увагу в першу чергу на дрібниці, такі як відображення тексту і переривання, перш ніж переходити до складних елементів, наприклад, до управління пам'яттю і багатозадачності.
- Зберігайте резервну копію останньої робочої версії.це дає певний спокій у випадку, якщо щось піде абсолютно неправильно в поточній версії вашої ОС або наступних доповненнях. У разі поломки вашого комп'ютера і неможливості завантаження, як ви і самі розумієте, відмінною можливістю стане наявність другої копії для роботи, так що ви зможете усунути наявні несправності.
- Протестуйте вашу нову операційну систему на віртуальній машині.замість перезавантаження комп'ютера кожен раз після внесення змін або передачі файлів з робочого комп'ютера тестовій машині ви можете використовувати додаток для запуску ОС на віртуальній машині, в той час як ваша поточна ОС продовжує працювати. Програми VM включають в себе VMWare (яка також має сервер у вільному доступі), альтернативний відкритий вихідний код, Bochs, Microsoft Virtual PC (не сумісний з Linux), а також XVM VirtualBox.
- Випустіть реліз-версію.це дозволить користувачам розповісти вам про можливі недоліки у вашій операційній системі.
- Операційна система також повинна бути зручною для Користувача, так що не забудьте додати корисні функції, які стануть невід'ємною частиною вашого дизайну.
Поради
- Коли розробка буде закінчена, подумайте, чи хочете ви представити код у вільному доступі або ж встановити приватні права на нього.
- Обов'язково зробіть функції безпеки вашим основним пріоритетом, якщо хочете, щоб ваша система була життєздатною.
- Не починайте проект розробки операційної системи з метою навчання програмуванню. Якщо ви не знаєте C, C++, Pascal або які-небудь інші відповідні мови і властивості, в тому числі типи покажчика, операції з бітами низького рівня, перемикання бітів, вбудований асемблер і т.д., – значить, ще не готові для створення ОС.
- Переглядайте такі портали, як OSDev і OSDever, які допоможуть вам поліпшити власну операційну систему. Зверніть особливу увагу на те, що з більшості питань співтовариство OSDev.org воліє, щоб ви самостійно зверталися до змісту сайту, а не приєднувалися до форуму. Якщо ви все ж вирішили приєднатися до лав форумчан, для цього повинні бути певні передумови. Ви зобов'язані досконально знати C або C++ і мову x86. Ви також повинні розуміти загальні і комплексні поняття в програмуванні, такі як Linked Lists, Queues і т. д. Спільнота OSDev в своїх правилах прямо говорить про те, що ніхто не збирається няньчити нових програмістів. Якщо ви намагаєтеся розробити ОС, само собою зрозуміло, що Ви " бог " в області програмування. Від вас також потрібно прочитати керівництво по роботі з процесором щодо його архітектури, обраної вами; наприклад, x86 (Intel), ARM, MIPS, PPC і т.д. такий довідник по структурі процесора можна легко знайти за допомогою пошуку в Google («Intel Manuals», «ARM manuals» і т. д.). Не реєструйтеся на форумі OSDev.org, щоб задавати очевидні питання. Це просто призведе до відповідей на кшталт "Read the f * * * ing Manual". Для початку Ви повинні спробувати почитати Вікіпедію, посібники для різних інструментів, які збираєтеся використовувати.
- Перевірте наявність потенційних мертвих точок та інших помилок. Недоліки, тупики та інші проблеми можуть вплинути на проект вашої операційної системи.
- Якщо ви хочете спосіб простіше, уявіть дистрибутиви Linux-типу Fedora Revisor, Custom Nimble X, Puppy Remaster, PCLinuxOS mklivecd або SUSE Studio і SUSE KIWI. Тим не менш, створювана ОС належить компанії, яка першою представила цей сервіс (хоча у вас є права на її вільне поширення, зміна і запуск, як вам подобається, під GPL).
- Хорошим рішенням буде створення абсолютно нового розділу для розроблюваної операційної системи.
Попередження
- Недбале Переписування ОС на жорсткий диск може пошкодити його повністю. Будьте обережні
- У вас не вийде повністю готова система за два тижні. Почніть з завантажуваної операційної системи, а потім переходите на більш цікавий матеріал.
- Якщо ви зробите щось необачне, як, наприклад, напишіть безладні байти в довільних портах I / O, то знищіть вашу ОС і можете (в теорії) спалити ваше обладнання.
- Не очікуйте, що буде легко побудувати якісну операційну систему. Існує безліч складних взаємозалежностей. Наприклад, для того, щоб ОС була здатна працювати з декількома процесорами, ваш диспетчер пам'яті повинен мати «блокуючі» механізми для запобігання доступу зайвих процесорів в один і той же ресурс одночасно. Використовувані "блоки" передбачають наявність планувальника, щоб переконатися, що тільки один процесор звертається до критичного ресурсу в будь-який момент часу, а всі інші знаходяться в режимі очікування. Проте, робота планувальника залежить від присутності диспетчера пам'яті. Це приклад залежності від взаємоблокування. Немає стандартного способу вирішити подібні проблеми; кожен виробник операційної системи, як очікується, досить кваліфікований, щоб знайти свій власний варіант їх вирішення.
Що вам знадобиться
- Комп'ютер
- процесор, на якому збираєтеся будувати
- достатня Оперативна пам'ять (ОЗП) для віртуальної машини
- основна ОС (використовується для розробки вихідного коду асемблера (і ін.), а також збірки і упаковки на ранніх стадіях роботи; в кінцевому підсумку ваша власна ОС стане первинною)
- редактор кольорового коду Syntax (застосовується при відсутності Integrated Development Environment)
- компілятор
- CD / DVD привід
Джерела
- Довідник:Linux From Scratch
- Завантажувач:GRUB
- Програми для віртуальної машини: Bochs, VM Ware, XM Virtual Box.
- Керівництво по роботі з процесором:Intel manuals
- Сайти з розробки ОС: OSDev, OSDever