2014-12-16 1 views
2

저는 리눅스 커널 모듈 개발을 배우는 초보자입니다. 필자는 강제로 모듈을 언로드하는 것과 같은 다양한 디버깅 기능을 사용하도록 커널을 다시 컴파일하는 방법을 설명하는 자습서를 따릅니다. 내가 그렇게해도 괜찮습니까? 미리 만들어진 커널에 영향을 미칩니 까? 어떤 경우에 실행중인 커널에 모듈을 삽입해야합니까? 그러면 커널이 그렇게 할 수 없게됩니까?내 리눅스 커널을 재구성 할 필요가 있습니까?

+0

예, 익숙하기 만하면 커널을 컴파일해야합니다. 그리고 부팅 할 때 어떤 커널을 부팅 할 것인지 선택할 수 있습니다. –

+2

특히 VM을 사용하여 커널을 실행할 수 있습니다. 훨씬 쉽고 안전합니다. 충돌이 발생하면 VM이 충돌합니다. – sashoalm

답변

0

커널 모듈을 컴파일하려면 커널을 컴파일하고 설치하는 것이 좋습니다. 우분투에 있다면, 다음 단계에 따라 부팅 한 머신과 동일한 커널 소스를 사용하고 있는지 확인하십시오.

단계 1. 부팅 할 때 /boot/grub/grub.cfg 파일에서 사용중인 Linux를 찾으십시오. 부팅하는 동안 선택한 부팅 옵션 항목에서 'linux'항목을 찾습니다. 예 발췌 : 리눅스 /boot/vmlinuz-3.13.0-24-generic 루트 = 조용한 시작 $의 vt_handoff RO UUID = e377a464-92db-4c07-86a9-b151800630c0

2 단계 패키지의 이름을 찾아 다음 명령을 사용하여 동일한 버전.

dpkg -l | grep linux | grep 3.13.0-24-generic 

예 출력 : 패키지의

$ dpkg -l | grep linux | grep 3.13.0-24-generic 
    ii linux-headers-3.13.0-24-generic      3.13.0-24.46            amd64  Linux kernel headers for version 3.13.0 on 64 bit x86 SMP 
    ii linux-image-3.13.0-24-generic       3.13.0-24.46          amd64  Linux kernel image for version 3.13.0 on 64 bit x86 SMP 
    ii linux-image-extra-3.13.0-24-generic     3.13.0-24.46          amd64  Linux kernel extra modules for version 3.13.0 on 64 bit x86 SMP 

3 단계 다운로드 소스를 PC에 사용 된 것과 동일한 커널을 얻을 "리눅스 헤더 - 3.13.0-24 제네릭".

$ apt-get source linux-headers-3.13.0-24-generic 

단계 4.이 커널 소스를 컴파일하기 위해 설정 파일과/부팅/폴더에서 사용할 수있는 설정 파일

예 : $ 1! /boot/config-3.13.0-24 -generic (이 파일에서 사용 된 동일한 버전을 확인하십시오)

단계 5.이 구성에서 디버깅 기호를 켜서 테스트하십시오.

0

커널을 다시 컴파일하면 커널 작동 방법을 알 수 있습니다.

최신 커널 패치는 커널 컴파일 및 설치를 통해 적용 할 수 있습니다.

컴파일을 통해 디버그 플래그를 활성화 할 수 있습니다.

필요없는 코드는 삭제할 수 있습니다.

자신의 커널 코드를 추가하고 코드를 테스트하는 데 도움이됩니다.

Linux 커널을 다시 컴파일하고 설치하는 것은 쉽지만 저속 컴퓨터 나 VM을 사용하여 컴파일하는 데 시간이 더 걸립니다.

관련 문제