저는 리눅스 커널 모듈 개발을 배우는 초보자입니다. 필자는 강제로 모듈을 언로드하는 것과 같은 다양한 디버깅 기능을 사용하도록 커널을 다시 컴파일하는 방법을 설명하는 자습서를 따릅니다. 내가 그렇게해도 괜찮습니까? 미리 만들어진 커널에 영향을 미칩니 까? 어떤 경우에 실행중인 커널에 모듈을 삽입해야합니까? 그러면 커널이 그렇게 할 수 없게됩니까?내 리눅스 커널을 재구성 할 필요가 있습니까?
답변
커널 모듈을 컴파일하려면 커널을 컴파일하고 설치하는 것이 좋습니다. 우분투에 있다면, 다음 단계에 따라 부팅 한 머신과 동일한 커널 소스를 사용하고 있는지 확인하십시오.
단계 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.이 구성에서 디버깅 기호를 켜서 테스트하십시오.
커널을 다시 컴파일하면 커널 작동 방법을 알 수 있습니다.
최신 커널 패치는 커널 컴파일 및 설치를 통해 적용 할 수 있습니다.
컴파일을 통해 디버그 플래그를 활성화 할 수 있습니다.
필요없는 코드는 삭제할 수 있습니다.
자신의 커널 코드를 추가하고 코드를 테스트하는 데 도움이됩니다.
Linux 커널을 다시 컴파일하고 설치하는 것은 쉽지만 저속 컴퓨터 나 VM을 사용하여 컴파일하는 데 시간이 더 걸립니다.
- 1. 리눅스 드라이버 개발을 위해 커널을 다시 컴파일해야 할 필요가 있습니까?
- 2. 리눅스 커널을 수정하는 것
- 3. 리눅스 커널을 라우터로 구현
- 4. 리눅스 커널을 nvcc로 컴파일
- 5. 리눅스 커널을 만드는 방법
- 6. usb_register_dev 리눅스 커널을 깨기
- 7. 리눅스 커널을 종료하고 리얼 모드에서 재개 할 수 있습니까?
- 8. GDB가없는 보드에서 리눅스 커널을 디버그하십시오
- 9. kexec없이 리눅스 커널을 실행하는 방법은 무엇입니까?
- 10. PC에 리눅스 커널을 만들고 다른 PC에 설치할 수 있습니까?
- 11. 리눅스 커널을 추적하기위한 git 워크 플로
- 12. # 리눅스 커널을 컴파일 할 때 #Include가 작동하는 방법
- 13. 자바 GUI와 리눅스 커널을 가진 모바일 OS
- 14. skb_dequeue() 이후의 kfree_skb()가 리눅스 커널을 고정시킵니다.
- 15. 오류 리눅스 민트에 리눅스 커널을 컴파일하는 동안 17
- 16. amd64 호스트에서 i386 리눅스 커널을 빌드하십시오.
- 17. 리눅스 커널을 그대로 사용하는 Linux 배포판
- 18. 리눅스 커널을 컴파일하는 중 오류가 발생했습니다.
- 19. 쓸모없는 옵션으로 리눅스 커널을 컴파일하는 방법은 무엇입니까?
- 20. OpenCL 커널을 실행하지 못하게 할 방법이 있습니까?
- 21. 누가 Linux 커널을 배울 지 제안 할 수 있습니까?
- 22. 휴대 전화 시장에서 누구나 내 휴대폰에 맞춤형으로 컴파일 된 리눅스 커널을 업로드 할 수 있습니다.
- 23. Datomic에서 트리 링을 재구성 할 수 있습니까?
- 24. 어떻게 바셋 컬렉션을 재구성 할 수 있습니까?
- 25. json 데이터를 어떻게 재구성 할 수 있습니까?
- 26. 서비스를 플러시 할 필요가 있습니까?
- 27. 사용자 정의 풍미를위한 리눅스 커널을 가진 모듈 빌드
- 28. 내 양식에 대한 새로운 재구성
- 29. 리눅스 커널을 부팅 한 장치를 알 수 있습니다.
- 30. 리눅스 커널을 부팅하는 데 필요한 모든 인수는 무엇입니까
예, 익숙하기 만하면 커널을 컴파일해야합니다. 그리고 부팅 할 때 어떤 커널을 부팅 할 것인지 선택할 수 있습니다. –
특히 VM을 사용하여 커널을 실행할 수 있습니다. 훨씬 쉽고 안전합니다. 충돌이 발생하면 VM이 충돌합니다. – sashoalm