Модификация и загрузка ядра Linux на мобильном устройстве

Во время обучения я разрабатывал приложения и сайты для Android iOS почти 18 месяцев. Сейчас, как мой последний год проекта, я работаю над исходным кодом Linux с целью загрузить его на мобильное устройство - например, Android. Я успешно использую его как пакет Debian после уроков в Интернете. Я в настоящее время использую Ubuntu.

У меня есть стратегия, но я не уверен, что я на правильном пути. Это выглядит следующим образом:

A:

  1. Загрузите исходный код Linux. Удалите лишние драйверы, скомпилируйте и установите его на работающую в настоящее время Ubuntu и используйте его.

  2. Настройте код дальше и загрузите его как мой собственный дистрибутив. Для этого я следую за LFS.

  3. Укажите конкретный целевой мобильный телефон, измените код для него, напишите драйверы, если они мне понадобятся, не знаете, какой именно (вот почему я здесь:)), и загрузите на нем ядро.

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

B:

  1. Я на правильном пути? Если нет, что может быть правильным?

  2. Нужно ли указывать мобильный телефон и настраивать код ядра для этого?

  3. Кроме драйверов, что еще мне нужно изменить в ядре?

  4. Последнее, но не менее важное, когда я загружаю ядро ​​на мобильном устройстве; я собираюсь иметь какой-либо интерфейс или терминал там?

Извините, если мой вопрос не имеет смысла. Я студент и все еще пытаюсь разобраться. Я был бы очень благодарен, если бы кто-то мог дать мне подсказки о том, какие предметы искать в Интернете.

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

1 ответ

Неудивительно, что драйверы для SoC и устройств вокруг него являются закрытыми. Насколько я знаю, драйверы для Exynos SoC (то, что Samsung использует во многих своих устройствах), являются (частично) закрытыми.

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

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

Итак, предполагая, что вы разрабатываете устройство, которое уже поддерживается Android, я лично начну с соответствующего дерева устройств для вашего устройства и начну его модифицировать. Вы можете много деревьев устройств на странице GitHub CyanogenMod.

Выгоды:

  • Вы можете начать с рабочего состояния
  • Если что-то сломается, ты знаешь, что это был ты

Кроме того, вы можете посмотреть на другие проекты, такие как Ubuntu Touch. Они могут использовать существующие ядра Android с помощью Hybris. Если вы хотите иметь дистрибутив, основанный на Debian/Ubuntu, я бы порекомендовал попробовать Ubuntu Touch и изменить его.

Другие вопросы по тегам