조건은 무엇입니까?
make, make bzImage, makemodules, makeinstall, makemodules_install은 서로 연관되어 있습니다.
내가 본 한 커널 튜토리얼에서는 모든 make bzImage, makemodules, makeinstall, makemodules_install 명령을 사용하여 새 커널을 컴파일하고 설치했습니다. 다른 하나는 make, make install 및 make module_install 명령만 사용합니다. 그렇다면 차이점은 무엇입니까?
답변1
시간이 지남에 따라 Linux 커널 컴파일 프로세스 자체가 더욱 발전했습니다. 더욱 복잡해졌지만 더욱 간소화되었습니다. 커널 소스 디렉터리에서 실행하면 make help
모든 대상 목록 make
과 각 대상에 대한 간략한 설명을 볼 수 있습니다.
현재 5.x 커널 시리즈의 경우 명령 make
과 명령 make all
은 동일합니다. 둘 다 아키텍처별 기본 대상 목록을 실행합니다.
x86 하드웨어 아키텍처에서 기본 목록에는 다음이 포함됩니다.
make vmlinux
베어 커널 빌드(압축된 부팅 가능한 커널 이미지 파일을 만들기 전과 마찬가지로 를 실행하면 자동으로 수행됩니다.make bzImage
먼저 원하는 것을 압축해야 합니다. 일부 커널 디버깅 도구에는 압축되지 않은 버전도 사용할 수 있습니다.)make modules
커널 모듈 빌드make bzImage
부팅 가능한 압축 커널 이미지 파일을 만듭니다.
위의 모든 작업은 추가 권한 없이 일반 사용자로 수행할 수 있습니다.
반면에 존재하는 경우 or make install
가 사용됩니다 ~/bin/installkernel
. /sbin/installkernel
귀하의 시스템은 ~/bin/installkernel
해당되는 경우 sudo
이 또는 이와 유사한 것을 사용할 수 있지만 시스템은 /sbin/installkernel
일반적으로 귀하가 이미 루트 액세스 권한을 가지고 있다고 가정하도록 작성되었습니다.
마찬가지로 make modules_install
새 커널 버전의 모듈이 /lib/modules/<kernel_version>/
디렉터리 트리에 복사되므로 성공적으로 실행하려면 루트 액세스가 필요합니다.
모범 사례는 특정 필요 없이 루트로 길고 복잡한 프로세스(예: 커널 컴파일!)를 실행하지 않는 것이므로 현재 최소 커널 컴파일 프로세스는 다음과 같습니다.
- 커널을 일반 사용자로 구성
- 일반 사용자로 실행
make
또는 실행make all
sudo make modules_install
커널 모듈을 설치하려면 실행하세요 .sudo make install
실제 커널을 설치하려면 실행하세요 ./sbin/installkernel
initramfs 파일 자동 빌드와 같은 다른 작업이 트리거될 수 있고 새 커널 모듈이 이미 설치되어 있으면 이러한 다른 작업이 더 성공적으로 수행될 수 있으므로 이 작업을 마지막에 수행하는 것이 좋습니다 .
그러나 필요에 맞게 사용자 정의 커널을 구축하는 것보다 커널 개발을 수행하는 경우 더 세분화된 프로세스를 사용할 수 있습니다. 예를 들어 커널 모듈을 개발하는 경우 다음 make modules
과 같이 실행할 수 있습니다. 별도의 단계를 수행하면 실수로 인해 실패했는지 더 쉽게 확인하고 오류를 더 빠르게 수정할 수 있습니다. 오류가 수정되면 make modules
이전 단계가 성공적으로 완료되었으므로 다시 실행 으로 이동할 수 있습니다 .
마찬가지로, 이전 커널 부팅 프로세스를 사용하는 개발자는 다른 시스템(교묘한 ACPI 테이블 세트 등)에서 테스트하기 위해 bzImage가 필요할 수 있으며 모듈에는 전혀 신경 쓰지 않을 수 있습니다.