내 하드웨어에 필요한 최소 펌웨어 파일 세트는 무엇입니까?

내 하드웨어에 필요한 최소 펌웨어 파일 세트는 무엇입니까?

오늘 나는 내 배포 linux-unfree-firmware패키지 크기가 491MB라는 것을 알게 되었습니다. 나는 내 하드웨어에 이러한 파일이 모두 필요하지 않다고 확신합니다. 그래서 어떤 파일을 제외할 수 있는지 알면 디스크 사용량을 줄일 수 있다고 생각했습니다.

어떤 파일의 출처를 정확하게 명시하는 공식 문서가 있습니까?https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/모든 장치/컴퓨터 모델에 필요합니까? 내 컴퓨터 하드웨어의 공식 문서에 이에 대한 내용이 나와 있을까요? 하나 있다처음부터 Linux 웹 페이지이는 일부 인기 있는 하드웨어에 대한 정보를 제공하지만 더 많은 "공식적인" 정보가 있는지 알고 싶습니다.

답변1

불행하게도 모든 하드웨어와 이에 필요한 펌웨어 파일에 대한 "공식" 문서는 없습니다. 그러나 Linux 커널 빌드 시스템을 일부 수정하면 하드웨어에 필요한 펌웨어 파일이 무엇인지 정확히 알 수 있습니다.

게다가 하드웨어에서 사용하는 펌웨어 파일을 찾았다고 해도 거의 모든 버전 이후에 자주 업데이트해야 하는 그리 짧지 않은 파일 목록이 남게 됩니다(git 태그).https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/. 이는 곧 생성하는 방법을 배우게 될 목록에서 직접 펌웨어 파일을 안정적으로 필터링할 수 없음을 의미합니다.

여전히 관심이 있으시면 다음 단계를 따르세요.

  1. 다음에서 최신 버전의 커널을 다운로드하세요.https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/.
  2. 달리기: make localmodconfig.
    • .config그러면 현재 커널을 기반으로 하는 빌드 매개변수 목록이 포함된 파일이 생성됩니다 .
  3. 달리기 make.
    • 커널이 빌드되므로 시간이 좀 걸릴 수 있습니다.
    • 빌드를 완료하려면 일부 종속성을 설치해야 할 수도 있습니다.
    • 완료되면 커널 모듈 파일인 make여러 파일이 생성됩니다 ..ko
  4. 다음 명령을 실행하세요:
find -name '*.ko' -exec modinfo {} \; | awk '$1 == "firmware:" { print $2}'

마지막 명령은 배포판 linux-unfree-firmware패키지에서 찾을 수 있는 펌웨어 파일 목록을 인쇄합니다. 이는 하드웨어에 필요한 파일입니다.

신용 거래:https://lists.kernelnewbies.org/pipermail/kernelnewbies/2020-May/020818.html

답변2

이 작업에 대해 나는 다음에 설명된 철저한/내부 접근 방식을 좋아합니다.이 방법.
그러나 이미 일반 및 모듈식 커널을 실행 중인 경우
설치된 펌웨어 blob 목록의 범위를 좁히는
빠르고 더러운 방법은 제안한 대로 modinfo를 사용하는 것입니다.

lsmod | cut -d ' ' -f 1 | tr '_' '?' | xargs -I % find /lib/modules/ -name "%.*" | xargs -I % modinfo % | awk '$1 == "firmware:" { print $2}'

이것:

  1. 로드된 모듈 나열
    (여기에서는 펌웨어가 필요한 내장 커널 모듈이 생략된다는 점을 기억하세요)

  2. 파일 이름에 "-"가 자주 사용되므로 첫 번째 열을 추출하고 이름의 "_"를 단일 문자 와일드카드로 바꿉니다.
  3. 해당 모듈 파일을 찾아서 modinfo에 제공하여
    제안한 대로 펌웨어 blob 목록을 얻으세요.

관련 정보