Модификация и загрузка ядра Linux на мобильном устройстве
Во время обучения я разрабатывал приложения и сайты для Android iOS почти 18 месяцев. Сейчас, как мой последний год проекта, я работаю над исходным кодом Linux с целью загрузить его на мобильное устройство - например, Android. Я успешно использую его как пакет Debian после уроков в Интернете. Я в настоящее время использую Ubuntu.
У меня есть стратегия, но я не уверен, что я на правильном пути. Это выглядит следующим образом:
A:
Загрузите исходный код Linux. Удалите лишние драйверы, скомпилируйте и установите его на работающую в настоящее время Ubuntu и используйте его.
Настройте код дальше и загрузите его как мой собственный дистрибутив. Для этого я следую за LFS.
Укажите конкретный целевой мобильный телефон, измените код для него, напишите драйверы, если они мне понадобятся, не знаете, какой именно (вот почему я здесь:)), и загрузите на нем ядро.
Я не знаю, правильна ли моя стратегия или нет. Я буду очень признателен, если кто-нибудь скажет мне:
B:
Я на правильном пути? Если нет, что может быть правильным?
Нужно ли указывать мобильный телефон и настраивать код ядра для этого?
Кроме драйверов, что еще мне нужно изменить в ядре?
Последнее, но не менее важное, когда я загружаю ядро на мобильном устройстве; я собираюсь иметь какой-либо интерфейс или терминал там?
Извините, если мой вопрос не имеет смысла. Я студент и все еще пытаюсь разобраться. Я был бы очень благодарен, если бы кто-то мог дать мне подсказки о том, какие предметы искать в Интернете.
Обновление: я хочу подтвердить правильность моей стратегии. Если нет, то, пожалуйста, просто назовите шаги, которые я должен выполнить.
1 ответ
Неудивительно, что драйверы для SoC и устройств вокруг него являются закрытыми. Насколько я знаю, драйверы для Exynos SoC (то, что Samsung использует во многих своих устройствах), являются (частично) закрытыми.
Так что, вообще говоря, вы должны написать драйверы для всего и всех. Особенно актуально радиосвязь хитрая, так как нет устройств, которым нужны проприетарные микропрограммы (хотя остальные драйверы могут быть с открытым исходным кодом).
Другая проблема - загрузчик на многих устройствах, который не позволяет легко устанавливать собственные ядра (хэш-сумма хранится в загрузчике, нежелание загружаться, если хэш ядра не совпадает).
Итак, предполагая, что вы разрабатываете устройство, которое уже поддерживается Android, я лично начну с соответствующего дерева устройств для вашего устройства и начну его модифицировать. Вы можете много деревьев устройств на странице GitHub CyanogenMod.
Выгоды:
- Вы можете начать с рабочего состояния
- Если что-то сломается, ты знаешь, что это был ты
Кроме того, вы можете посмотреть на другие проекты, такие как Ubuntu Touch. Они могут использовать существующие ядра Android с помощью Hybris. Если вы хотите иметь дистрибутив, основанный на Debian/Ubuntu, я бы порекомендовал попробовать Ubuntu Touch и изменить его.