ARM 시스템의 Linux 커널용 간단한 드라이버를 컴파일했습니다.
$ uname -a
Linux CR5 4.4.171-cr5 #2 Tue Mar 10 11:49:00 CET 2020 armv7l GNU/Linux
컴파일하기 위해 다음 위치에 있는 손상된 시스템의 구성 파일을 사용했습니다.
/proc/config.gz
바닐라 커널을 다운로드하고 4.4.5 태그를 체크아웃하고 구성 파일을 교체하고 커널을 컴파일한 다음 arm 도구 chine을 사용하여 드라이버를 컴파일했습니다.
gcc-linaro-7.2.1-2017.11-i686_arm-linux-gnueabi 이 드라이버에는 간단한 코드가 포함되어 있습니다.
#include <linux/module.h>
#include <linux/kernel.h>
int init_module(void) {
printk(KERN_INFO "Hello world.\n");
return 0;
}
void cleanup_module(void) {
printk(KERN_INFO "Goodbye world.\n");
}
나는 사용했다모듈 삽입드라이버가 로드되지만 터미널의 오류 메시지는 다음과 같습니다.
insmod: 오류: 모듈을 삽입할 수 없습니다 test_module.ko: 잘못된 모듈 형식
존재하다정보이 메시지를 받았습니다
test_module: module_layout 기호 버전에 동의하지 않습니다.
그러나 시스템에서 모듈을 실행하는 것과 내 모듈을 실행하는 것을 비교해 보면readelf-a
이것ELF 헤더동일하고파일 속성동일합니다.
또 무엇을 확인할 수 있나요? 어쩌면 모듈 로딩이 커널에 의해 차단되었을 수도 있습니까? 어떻게 확인하나요? 내가 다음에 무엇을 할 수 있는지에 대해 리더 역할을 해 줄 사람이 있나요?
메모
- 간단한 C 프로그램이 망가졌으니 도구 기계는 괜찮은 것 같아요
- insmod-f 좋지도 않아
감사해요