데비안: 설치된 파일의 패키지 이름 가져오기

데비안: 설치된 파일의 패키지 이름 가져오기

Linux 커널 3.11.1을 실행하는 PC에 SSH를 통해 연결했습니다.

root@alix:~# uname -r
3.11.1

특정 파일이나 커널 버전이 각각 어떤 패키지에 설치되었는지 어떻게 알 수 있나요?

나는 노력했다

root@alix:/boot# dpkg -S vmlinuz-3.11.1 
dpkg-query: no path found matching pattern *vmlinuz-3.11.1*

설치된 다른 커널 버전은 다음 명령을 사용하여 찾을 수 있습니다.dpkg-S:

root@alix:/boot# dpkg -S vmlinuz-3.2.23
linux-image-3.2.23-ath5kmod: /boot/vmlinuz-3.2.23-ath5kmod

내 목적: 버전 3.11.1의 해당 Linux 헤더 파일을 설치하여 이에 대한 커널 모듈을 컴파일하고 싶습니다.apt-cache는 리눅스 헤더를 검색합니다15개의 서로 다른 헤더 버전이 나열되어 있지만 3.11.1에는 헤더 버전이 나열되어 있지 않습니다.

매우 감사합니다.

답변1

설치된 모든 패키지를 나열하고 커널 패키지를 사용하여 dpkg -l결과를 필터링할 수 있습니다.grep

dpkg -l | grep 'linux-image'
dpkg -l | grep 'linux-image' | grep '3.11'

실행 중인 커널에 대한 커널 헤더 패키지를 찾으려면:

apt-cache search linux-headers-`uname -r`

답변2

나의 초기 문제는 현재 설치된 Linux 커널(3.11.1)에 적합한 커널 헤더가 없다는 것이었습니다.

마지막으로 저는 이 문제를 네 단계로 해결했습니다.

  1. 다음을 통해 설치된 커널을 제거했습니다.적절한.
  2. 제거된 사용자 정의 커널:

    • /boot/vmlinuz*커널 버전*
    • /boot/initrd*커널 버전*
    • /boot/system 맵*커널 버전*
    • /시작/구성-커널 버전
    • /lib/모듈/커널 버전/
    • 바라보다여기상세 설명.
  3. 설치된 커널그리고패키지 관리자가 기본적으로 전송하는 해당 헤더적절한(버전 3.2.0-4-486).

  4. 그럽을 업데이트하여그럽 업데이트.

이제 필요한 Linux 커널 모듈을 컴파일하고 사용할 수 있습니다. 나에게 올바른 방향을 알려준 Crick에게 감사드립니다. :)

답변3

사용포지셔닝(1)명령은 다음에서 비롯됩니다.위치팩:

$ dlocate /boot/vmlinuz-*
linux-image-4.9.0-6-amd64: /boot/vmlinuz-4.9.0-6-amd64
linux-image-4.9.0-7-amd64: /boot/vmlinuz-4.9.0-7-amd64

dlocate파일 이름을 인수로 취하고 주어진 파일을 소유/제공하는 패키지의 이름을 반환합니다.

답변4

apt-get install linux-headers설치된 모든 커널에 대한 헤더를 제공해야 합니다.

관련 정보