커널 모듈: 실행 가능 비트를 설정합니까? xz 압축을 사용하시겠습니까?

커널 모듈: 실행 가능 비트를 설정합니까? xz 압축을 사용하시겠습니까?

사용자 정의 커널 모듈을 작성/조정하여 설치했습니다.

예상대로 작동했지만 내 시스템의 다른 커널 모듈이 xz로 압축되어 0444 권한을 갖고 있는 반면, 모듈을 압축하지 않고 실행 가능한 비트 세트(0555 권한)로 설치했습니다.

$ stat --format=%A /path/to/my-module.ko
-r-xr-xr-x

$ stat --format=%A /path/to/other-module.ko.xz
-r--r--r--

이것이 성능, 보안 등 어떤 영향을 미치나요? 내 모듈을 압축하고 다른 모듈이 사용하는 것과 일치하도록 권한을 설정할 계획이지만 압축 및 사용 권한에 대한 기본 동기를 모르겠습니다.

답변1

권한 정보:

실행 가능 비트를 설정하거나 모듈에 플래그를 쓸 필요가 없습니다. 모듈 파일은 읽을 수 있어야 하며 그 이상은 아닙니다. insmod, modinfo또는 modprobe모듈 파일을 읽어야 하는 기타 항목. 를 통해 모듈을 디버그하려면 다른 사람의 그룹 또는 읽기 권한이 필요할 수 있습니다 objdump.nm

누군가가 모듈의 실행 가능 비트를 설정해야 할 실제 이유는 없습니다.

압축 관련:

Linux 커널에는 XZ 압축 구현이 내장되어 있습니다. Linux 커널은 (이전에 압축 해제된) 이미지, 커널 모듈은 물론 그 자체도 성공적으로 읽을 수 있습니다 ( initrd커널 파일 이름의 vmlinuz마지막 비트는 z커널 이미지가 압축되었음을 나타냅니다).

어떤 배포판을 사용하는지 모르겠습니다. 그러나 압축된 커널 모듈이 있는 경우 이는 배포 규칙입니다. 물론 압축된 모듈은 압축되지 않은 모듈에 비해 크기가 작지만 디버깅 기호 없이 커널 모듈을 컴파일하면 압축된 모듈과 압축되지 않은 커널 모듈의 크기 차이가 상당히 작습니다. 반면에 모듈이 많이 필요하지 않다는 점을 고려하면, 모듈을 많이 저장하는 데만 사용하는 것보다는 압축을 사용하여 다른 작업을 위해 공간을 절약하는 것이 좋습니다.

관련 정보