Ядра варьируются от производителя к производителю. Многие из этих ядер взяты из чистой исходной линейки исходных кодов, найденных на CAF. Эти производители делают так, что берут эти исходные источники, модифицируют их в соответствии с используемой платой / чипсетом, а также реализуют свои собственные драйверы.
Внимательно осмотрите себя, есть вариации сенсорных экранов, вариации чипсетов Wi-Fi, не говоря уже о акселерометре, датчиках, батареях, компасе, звуке, графике.
Взяв один источник ядра, например, HTC не будет работать на Samsung, и наоборот.
Производители могут выбирать различные биты, встроенные в печатную плату. Здесь нет жестких или быстрых правил. Отсюда множество взломов / модификаций, чтобы ядро работало правильно.
Вы никогда не должны сравнивать это с настольными дистрибутивными ядрами Linux, в которых есть PCI, PCI-Express, SATA, VGA, SVGA, USB, Ethernet, поскольку они представляют собой совершенно иную игру для игры в мяч. Основное отличие от CentOS и Android Linux Kernel заключается в следующем: ВСЕ драйверы компилируются либо как модули, либо как встроенные, поэтому любой дистрибутив Linux будет просто «работать из коробки». Опять же , с настольными распределениями Linux - у вас есть одна архитектура - x86 , следовательно , один Linux ядро от сказать Dell PC, может работать из коробки на Lenovo при условии , что болотно стандартные драйверы собраны.
Не забывайте, что в мире Android есть вариации ядра, построенные для определенных наборов микросхем ARM, таких как ARMv6, ARMv7, есть TEGRA, есть EXYNOS, и они двоично несовместимы друг с другом. Следовательно, если ядро скомпилировано для TEGRA, забудьте об этом, оно не будет работать на ARMv7!
Причина, по которой некоторые ядра на Android выглядят «сломанными», зависит от производителя. Некоторые (Zte - один очень хороший пример) выпускают забитый источник, который может компилироваться из источника, но не загружается из-за отсутствия драйвера, который не покрывается лицензией GPLv2 или GPLv3. Вот в чем проблема, поэтому некоторым хакерам приходится рыскать по github в поисках подсказок; некоторые производители, если не все, выполняют. Текущее воплощение источника Zte якобы должно быть 2.6.35.7, но на самом деле его исходная база 2.6.32.9 с большим количеством модификаций, таким образом, не представляет истинный источник ядра для 2.6.35.7!
Именно здесь производители должны выпустить свои соответствующие источники, не только из-за несовместимости с GPLv2 или новее, но и для того, чтобы сообщество могло модифицировать его, например, добавив функции разгона.
Следовательно, за кулисами происходит хакерство и много возни с драйверами, пытающимися заставить его работать, и его отладка тоже непроста. Некоторые драйверы могут иметь перекрестную лицензию, НО не может распространяться в зависимости от условий и условий, так как переговоры.
К счастью, теперь все изменилось с исходниками ядра 3.xx, так как драйверы Android теперь интегрированы в основные источники. Но есть гоча!
Попробуйте перенести ядро 3.xx на существующую трубку, которой около 12-18 месяцев; Ни шанса снежного кома в аду это не сработало бы, потому что из-за различных факторов источники 3.xx сильно отличаются от источника 2.6.x и потребовалось бы много взлома, чтобы заставить его работать - я должен знать, пытался портирование источника 2.6.38.6 для Zte Blade и не удалось.
Аналогичным образом, последняя версия ядра 3.0.1 - при работе над проектом ics4blade на Modaco предпринимала многочисленные попытки его портировать, но это сводится к тому простому факту, что Zte сделал очень плохой беспорядок в источнике, что делало перенос почти невозможным ,