insmod

2012-01-22 2 views
2

을 사용하여 64 비트 모듈을 32 비트 커널로로드하기 64 비트 프로세서 시스템에서 컴파일 된 .ko 파일 (커널 오브젝트 파일)을 32 비트 프로세서 시스템으로로드 할 수 있습니까? 사실insmod

나는 내 시스템에서의 insmod 명령을 실행할 때 오류를 다음과 점점 오전 :

insmod: error inserting 'be2net.ko': -1 Invalid module format 
+0

나는 그것이 불가능하다고 생각합니다. –

답변

2

32 비트 시스템에서 64 비트 코드를 실행할 수 없습니다. 요구 사항에 따라 그 반대가 될 수 있지만 (64 비트 시스템에서 32 비트 소프트웨어 또는 라이브러리 실행), 32 비트 아키텍처는 64 비트 코드를 인식 할 수 없습니다. 시스템에서 모듈을 컴파일해야합니다.

먼저 커널 소스를 kernel.org에서 다운로드하십시오. 그런 다음 추출 및 CD

make 

(일반 사용자로) 형, 일단 거기

linux/drivers/net/benet 

로하고 당신을 위해

sudo insmod be2net.ko 

작동합니다 그.

2

는 아니, 32 비트 커널에 64 비트 모듈을로드 할 수 없습니다, 그 이유입니다 오류가 발생했습니다. 그 이유는 64 비트 및 32 비트 프로그램에 호환되지 않는 ABI (예 : 다른 호출 규칙)가 있기 때문입니다. 또한 64 비트 응용 프로그램을 32 비트 라이브러리와 연결할 수없는 이유이기도합니다.

insmod는 일반적으로 막연한 오류 메시지를 표시합니다. 더 자세한 메시지는 dmesg의 출력을보십시오.

1

컴파일 된 프로세서가 전혀 문제가되지 않습니다. 컴파일러와 컴파일러 옵션은 중요합니다. 64 비트 프로세서 용으로 컴파일 된 경우 다른 명령 세트를 사용하기 때문에 32 비트 프로세서에서 실행할 수 없습니다.

그러나 64 비트 프로세서는 크로스 컴파일러를 실행하고 32 비트 바이너리를 생성 할 수 있습니다. 당신이 이것을 한 것은 거의 없습니다.

관련 문제