Подтвердить что ты не робот

Как отредактировать исходный код Linux?

Я хочу изменить исходный код для Linux. Я не знаю, с чего начать.

Я хочу изучить код, а затем изменить его и увидеть изменения, выполнив его. С чего начать? Я - выпуск колледжа, и я знаю C и С++, но никогда не редактировал исходный код Linux. Я хочу небольшой легкий Linux, который имеет небольшие файлы исходного кода, чтобы я мог изучить его и изменить. Создать свой собственный. Какой Linux будет лучше для меня и как я начну с редактирования кода сукку? Просто ли установка Linux также даст мне исходный код?

4b9b3361

Ответ 1

Термин "Linux" может означать пару разных вещей.

Ядро Linux

Это настоящий Linux, и он доступен из http://kernel.org/.

Вы не найдете маленькую или легкую версию этого. Ядро - это ядро. (Тем не менее, вы можете отключить функции во время компиляции, что полезно, если вы ориентируетесь на низкомощные аппаратные средства, например, для встроенного устройства).

дистрибутивы Linux

Это ядро ​​Linux, в комплекте с большим стеком другого программного обеспечения, необходимого для его использования. Исходный код для различных программных продуктов доступен отдельно.

Netinstall Debian дает вам основную часть системы при небольшой загрузке. Он имеет систему управления пакетами, которая позволяет легко получить исходный код различных программ, доступных для него.

Ответ 2

Что именно вы хотите отредактировать из дистрибутива Linux?

Linux сама по себе является просто ядром, но этот термин также используется для обозначения операционных систем, использующих ядро. Если вы хотите возиться с графическими программами, вы можете установить дистрибутив Linux, а затем загрузить источник этих программ по отдельности. Если вы хотите возиться с самим ядром, источник можно получить из kernel.org. В каждом дистрибутиве Linux есть собственный набор программ и функций, которые вы можете изменить по своему вкусу, но я сомневаюсь, что вы хотите редактировать все, который поставляется в стандартном дистрибутиве, например Ubuntu, так как перекомпилировать все каждый раз, чтобы увидеть изменения, потребуется некоторое время.

Linux много, чтобы погрузиться в первый таймер в поле ОС. Существует более маленькая Unix-подобная операционная система для обучения под названием MINIX. Загрузка исходного кода составляет около 2,2 млн. Я полагаю, и он используется в качестве учебного пособия во многих курсах по разработке операционной системы по всему миру. Лично я немного укусил свои зубы, прежде чем заняться Linux, но выбор за вами, так что им весело! Постройте его, сломайте и попробуйте перестроить его снова! Это отличный опыт обучения.

Ответ 4

Если вы хотите изменить ядро ​​Linux или одно из "основных" приложений, которое обычно формирует дистрибутив, и если у вас нет большого опыта работы с Linux или его модификации, я рекомендую посмотреть Linux From Scratch. Он поможет вам установить систему Linux исключительно из ее основных компонентов и позволит вам действительно понять: а) что на самом деле является частью Linux и б) что делает каждая часть.

Как только вы это сделали, вы должны знать, где находятся источники, как их компилировать и как развернуть изменения. Следующий шаг - это просто запуск вашего любимого редактора и его изменение.

Ответ 5

Здесь хороший учебник по компиляции ядра Linux.

Совет: используйте виртуальную машину, такую ​​как VirtualBox, для запуска модифицированного ядра - таким образом вы можете легко экспериментировать, не нанося вреда никакому реальному оборудованию.

Ответ 6

Если вы просто хотите узнать об операционных системах в целом, Minix может быть хорошим местом для запуска: http://www.minix3.org. Minix использует довольно маленькое (< 5000) линейное микроядро, поэтому довольно легко ознакомиться с его основной работой. Запуск его практически (например, под vmware) - это самый простой способ начать работу.

Ответ 7

Ядро linux является монстром дерева-источника (по крайней мере, в смысле не малого). Старые ядра меньше, поэтому имеет смысл взглянуть на них, если вы после небольшого ядра Linux, чтобы посмотреть и поиграть с ним.

Однако, если все, что вы ищете, - это какое-то Unix-подобное ядро, с которым можно играть, Minix 3 может быть еще одним возможным выбором.

Для специфики, установите любой дистрибутив Linux, затем установите исходный пакет ядра (Gentoo, вероятно, установит это по умолчанию, имя спецификатора исходного пакета ядра зависит от вашего дистрибутива).

Ответ 8

Вы можете рассмотреть дистрибутивы BSD, их намного проще скомпилировать из источника

Я знаю, что вы сказали Linux, но дистрибутивы как NetBSD также являются приложением Unix, и они гораздо более доступны из компилятора - с источника.

  • Как правило, гораздо меньшая установка по умолчанию или минимальная установка
  • Базовая система построена как единая система с make. Linux представляет собой набор утилит и пакетов из множества разных мест, которые индивидуально построены, а дистрибутивы BSD имеют определенное исходное дерево, которое может быть построено с вершины /usr/src с помощью одной команды.
  • Намного легче перекрестно скомпилировать, если вам нужно это сделать.

В дистрибутивах BSD дерево с одним источником содержит базовую систему, а между внутренними и внешними элементами - четкая разделительная линия. Проекты распространяют все свои системы в готовой к компиляции форме.

Ответ 9

Установка дистрибутива Linux, конечно же, является разумным предварительным условием: Linux является самостоятельным хостингом, поскольку он может (возможно) быть скомпилирован только в системе GNU/Linux (с gcc и библиотекой gnu C), хотя библиотека C используется только в инструментах во время компиляции - он не связан с ядром). Для компиляции Linux также требуются многочисленные другие инструменты.

Получение исходного кода достаточно просто, но сложный бит правильно настраивает ядро ​​для вашего компьютера - поэтому вы, скорее всего, захотите вместо этого использовать свой источник ядра распространения (у которого могут быть исправления, но они будут незначительными для ваших целей).

Самый простой способ "попробовать" программирование ядра - написать модуль ядра - они могут быть динамически загружены (это означает, что вы можете протестировать свой код без перезагрузки - при условии, что он не сбой системы)

Существует множество примеров модулей ядра, но почти все они устарели из-за быстро меняющихся внутренних API в самом ядре (даже система сборки изменяется относительно быстро).

Модули ядра могут делать почти все, что не связано с непосредственным изменением основной части ядра - существует множество функций "hook" (в основном register_something для регистрации устройства, hook, protocol и т.д.), которые могут быть использованы для расширения API пользовательского пространства ядра или каким-либо образом изменить его поведение.

Ответ 10

Непосредственно пытаться редактировать исходный код может быть жестким a.It зависит от вашего знания C и операционной системы. Я бы сказал, что вы должны сначала посмотреть, как такие функции, как cat, grep и т.д., реализованы в C.Then появляются концепции модулей. Различные типы модулей ядра и базовые операции с модулями Linux. Затем выберите определенную функциональность, например, сеть или некоторые другие. Пройдите код для этого раздела. Пример: http://www.leidinger.net/FreeBSD/dox/netipsec/html/df/d62/ipsec_8h_source.html

Основываясь на том уровне, на котором вы понимаете, что коды переработаны на ваших навыках кодирования. Затем сделайте компиляцию ядра на Ubuntu или в любой другой версии. В этот момент вникайте в модификацию ядра. Я знаю, что это потребует времени, но обучение кривая будет крутой, и у вас будет полное представление.