Я слышал, что мы можем настроить Linux (скажем, Ubuntu) так, как нам хочется, изменив его исходный код и сделав совершенно новую ОС. Я скачал исходный код ядра Linux с сайта www.kernel.org. Но, увидев это, я ничего не могу понять, в файлах так много каталогов, файлов (как мне кажется, будет одна большая программа). Я хочу сделать это как проект колледжа, а также внести свой вклад в Linux, внеся в него необходимые изменения. Но, задавая этот вопрос на некоторых сайтах, они сказали, что исходный код Linux очень велик. Вы можете попробовать миникс. Теперь я очень смущен.
Пожалуйста, дайте мне подробные предложения о том, как мне начать этот путь (с изменения исходного кода для настройки Linux) с необходимыми шагами, а также некоторые книги для начинающих.
Ответы:
Добро пожаловать на unix.stackexchange.com!
Нет простого ответа на ваш вопрос, и гораздо лучшие люди, чем я, написали целые книги на тему ядра Linux и операционных систем в целом.
О масштабах проекта: написание операционной системы не простая задача! Даже целенаправленная минимальная ОС, такая как Minix, довольно сложная вещь! Чтобы дать вам представление о Linux, подумайте о программах на C, которые вы уже написали. Средняя университетская курсовая работа имеет тенденцию составлять не более нескольких тысяч строк. Я думаю, что мой последний год проекта был около 30-35 000 строк C ++. Ядро Linux - это примерно 13 000 000 строк кода на Си.
Почему все это в отдельных файлах? Крупные проекты хранятся в отдельных файлах по логистическим и практическим причинам. Просто подумайте о загрузке 13 000 000 строковых файлов в редактор! Перед тем, как заняться таким огромным проектом, как Linux, вам обязательно нужно отточить свои навыки C до того момента, когда вопрос «почему несколько файлов» отвечает сам на себя. Вы также должны иметь возможность читать код на C , а не просто писать его. (сложнее, чем кажется на первый взгляд)
Вы определенно должны быть очень опытными в C. Ядро обслуживают тысячи людей, и вам будет предложено разобраться в личных идиомах каждого из них (предоставляется в рамках довольно жестких стандартов кодирования ядра, но все же - у каждого есть их собственный стиль решения проблем).
После того, как вы получите C fu, убедитесь, что вы понимаете операционные системы. Это поможет вам понять код. Не весь Linux необходим. Само ядро довольно маленькое! Что это раздувает это:
Одна проблема, которую вы сразу обнаружите, заключается в том, что эти компоненты не так просто отключить, заменить и снова подключить. Есть множество взаимосвязей. Короче говоря, изменить биты ядра сложно.
Причина, по которой люди предложили Minix, проста: это полноценная операционная система, но она не обременена потребностями такой сложной системы, как Linux. Код небольшой, но все еще обеспечивает полную функциональность. В конце концов, первые версии Linux были вдохновлены Minix.
Несомненно, в наши дни у Minix меньше аппаратной поддержки. Ну и что? Это благо! Современные компьютеры виртуализируются очень хорошо. Используйте это в своих интересах: виртуальная машина для запуска Minix настолько легка, что это сделает разработку бесполезной.
Если ваш проект заключается в создании операционной системы, вы можете сделать хуже, чем начать с изучения Minix. Вы также можете купить и прочитать книгу Minix, написанную для сопровождения «Современные операционные системы Эндрю Таненбаума ».
Вы также должны установить свои цели и точно определить свои термины . Если ваше собственное определение ОС принадлежит Microsoft (ОС с графическим интерфейсом пользователя и полным набором программного обеспечения), возможно, вам нужен очень длинный проект! Сотни тысяч людей работали с 1960-х годов, чтобы в конце концов привести нас туда, где мы сейчас находимся.
Наконец, вспомните боевой клич ученого: « никогда не изобретай велосипед! «(Конечно, мы любим делать исключения, когда учимся. И ради удовольствия :))
источник
Проверьте проект Linux From Scratch . Как следует из названия, он содержит все детали, необходимые для создания собственного дистрибутива Linux.
источник
Я думаю, что первое, что вам нужно определить, это «какие изменения вы хотите внести в ОС». Пока вы не решите это, вы никуда не денетесь. Нет единого пути обучения.
Кроме того, я думаю, что вы должны лучше определить, что вы подразумеваете под ОС. Большая часть (большая часть) исходного кода Ubuntu находится за пределами Linux. Linux - это только ядро (иногда его называют операционной системой , особенно в академических кругах, что приводит к путанице), и поэтому он выполняет «простую» задачу:
Любое другое изменение будет происходить на другом уровне, будь то ядро утилит пользователя (часто называют утилитами ), графический интерфейс, основные приложения на дистрибутиве и т.д.
Однако, если вы все еще изучаете, как взломать ядро, возможно, вам следует начать с этого вопроса , вопроса с наибольшим количеством голосов на этом сайте;)
источник
Это может быть немного не так, но если вы хотите узнать о ядре Linux и начать его разрабатывать, вам действительно стоит заглянуть в новичков ядра . Это сайт, который дает вам представление о механике ядра (как это прекрасно сделал Алексиос), но также позволяет выбрать небольшую задачу для обработки (так называемый уборщик ядра). Это отличный способ учиться, и я очень рекомендую его!
источник