С августа 2009 года ядро больше не является частью стандартного манифеста репо, который вы получаете, следуя инструкциям по загрузке исходного кода для проекта Android с открытым исходным кодом. Шаги, необходимые для успешной загрузки, сборки и запуска конкретного ядра на эмуляторе, следующие:
- Получите ядро Android, добавив его в манифест репо или вручную, запустив:
git clone https://android.googlesource.com/kernel/goldfish.git
- Проверьте правильную ветку для работы с эмулятором, т.е. goldfish:
git checkout -t origin/android-goldfish-2.6.29 -b goldfish
- Генерация конфигурации эмулятора (эмулятор qemu запускает код охраны, то есть конфигурацию охраны):
make ARCH=arm goldfish_defconfig
- если это не сработает, попробуйте
make ARCH=arm goldfish_armv7_defconfig
- Теперь соберите ядро, используя инструменты кросс-компиляции, поставляемые с проектом с открытым исходным кодом:
make ARCH=arm CROSS_COMPILE=mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-
- Ядро, построенное таким образом, должно оказаться в папке arch / arm / boot вашего дерева ядра (куда вы положили код из git clone)
- Чтобы запустить эмулятор с вашим ядром, есть две альтернативы, либо скопируйте его в предварительно скомпилированную папку ядра проекта с открытым исходным кодом, чтобы заменить стандартное ядро. Другой вариант - запустить эмулятор с установленным параметром ядра:
emulator -kernel mydroid/kernel/common/arch/arm/boot/zImage
Обратите внимание, что я использовал пути по умолчанию в приведенном выше описании, вам нужно изменить их на то, что относится к вашей настройке. Прошло некоторое время с тех пор, как я в последний раз проверял это, но я думаю, что это должно сработать.
Некоторая дополнительная информация:
В стандартном дистрибутиве Android с открытым исходным кодом ядро распространяется в виде готового двоичного файла в папке mydroid/prebuilt/android-arm/kernel
, и исходный код не включен. Исходный код ядра был удален из манифеста по умолчанию по двум причинам. Одна из них заключается в том, что для компонента платформы требуется много пропускной способности и дискового пространства, с которым большинство людей не будут работать много. Другая причина состоит в том, что, поскольку ядро собрано с системой сборки ядра, а не как часть системы сборки aosp, имеет смысл держать его отделенным. Общая ветвь для ядра - это та, что используется эмулятором. Есть также ветки для экспериментов, msm (платформы Qualcomm) и Omap (платформа TI) и, возможно, еще немного. Если вы хотите использовать ядро Android с аппаратным обеспечением, оно может быть более интересным для вас.