Не удалось найти исходный код ядра Android Studio AVDAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Не удалось найти исходный код ядра Android Studio AVD

Сообщение Anonymous »

Я пытаюсь собрать модуль ядра Android, но мне нужно сначала скомпилировать ядро ​​Linux из ветки Google, чтобы оно заработало... И я скомпилировал множество ядер из разных версий, и ни одно из них не сработало.
/> Проблема в том, что если бы я собрал ядро ​​из этого репозитория: https://android.googlesource.com/kernel/common/+refs в ветке android12-5.10.185_r00, оно скомпилирует модуль до версии ядра 5.10.185. но не работает на эмуляторе с версией ядра: 5.10.185-android12-9-00043-g383607d234da-ab10550364.
Это действительно странно...
Некоторая идея, что что делать?
пошагово:
Компиляция ядра (.config с конфигурацией по умолчанию — это занимает много времени)

Код: Выделить всё

mkdir kernelDriver
cd kernelDriver
git clone https://android.googlesource.com/kernel/common -b android12-5.10.185_r00
cd common
make ARCH=x86_64 oldconfig
make ARCH=x86_64
cp scripts/module.lds.S scripts/module.lds
cd ..
отредактируйте файл Module.lds, чтобы исправить выравнивание (строка 61):
before

Код: Выделить всё

.text : ALIGN(PAGE_SIZE) {
после

Код: Выделить всё

.text : ALIGN(4096) {
в корневой папке kernelDriver создайте два файла: Makefile и hello.c
Makefile:

Код: Выделить всё

obj-m:= hello.o
KERNEL_DIR := ~/kernelDriver/common

EXTRA_CFLAGS=-fno-pic

all:
make ARCH=x86_64 -C $(KERNEL_DIR) M=$(PWD) EXTRA_CFLAGS=$(EXTRA_CFLAGS) modules
clean:
make -C $(KERNEL_DIR) M=$(PWD) clean
hello.c:

Код: Выделить всё

#include 
#include 
MODULE_LICENSE("Dual BSD/GPL");
MODULE_AUTHOR("cathat");

int hello_init(void)
{
printk(KERN_INFO "Hello World\n");
return 0;
}
void hello_exit(void)
{
printk(KERN_INFO "Goodbye World\n");
}

module_init(hello_init);
module_exit(hello_exit);
после установки всей среды вы можете скомпилировать драйвер ядра

Код: Выделить всё

make ARCH=x86_64
Чтобы запустить это, должно быть:

Код: Выделить всё

adb push hello.ko /data/local/tmp/
adb shell
su
cd /data/local/tmp
insmod hello.ko
Чтобы просмотреть журналы ядра, выполните команду: Я использую эмулятор Nexus 5 с этим образом Android
API 31
(для запуска модуля необходимо иметь права root )

Подробнее здесь: https://stackoverflow.com/questions/787 ... nel-source
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»