태그 보관물: make

make

Linux 커널 구축 프로세스의 각 단계에서 어떤 일이 발생합니까? 어떤 initramfs에, 그리고

이 커널을 사용하여 사용자 정의 커널을 빌드하고 우분투를 부팅하는 방법에 대한 많은 자습서를 읽었으며 가이드 및 부팅 된 사용자 정의 커널을 성공적으로 따랐지만 안내서의 각 명령이 수행하는 작업과 실제로 발생하는 일에 대해 이해하지 못했습니다 각 명령.

에 설명 된 절차 우분투의 사이트 와 많은 작업을 수행 fakeroot, dpkg, make-kpkg, 어떤 initramfs에, 그리고 다른 무서운 물건 작품 것을 단순히 나에게 무슨 일이 일어나고 있는지 이해하는 데 도움이되지 않습니다.

  • make리눅스 커널 디렉토리 의 출력은 무엇입니까 ?
  • “압축 된 커널 이미지”를 작성합니까?
  • “압축 된 커널 이미지”파일의 이름은 무엇이며 어디에 배치됩니까?
  • 무엇을 make modules합니까?
  • make modules전후에 해야합니까 make?
  • make모듈을 자동으로 빌드 하지 않습니까?
  • 부팅 가능한 커널 목록에 새로 작성된 커널을 추가하는 프로세스 (명령 목록뿐만 아니라 영어)는 무엇입니까?
  • 무엇을 make install합니까?
  • make install좀 더 아무것도 할 필요가 없도록 부팅 가능한 커널 내 목록에 추가?
  • 동등한가 make modules_install있습니까?


답변

정상에서 …

  • make커널 이미지를 컴파일하고 링크합니다. 이 파일은이라는 단일 파일 vmlinuz입니다.
  • make modulesM커널 설정 중에 답변 한 각 질문에 대한 개별 파일을 컴파일합니다 . 객체 코드는 새로 빌드 한 커널과 연결됩니다. (답변에 대한 질문 Y은 이미의 일부이며 vmlinuz질문에 답 N하지 않은 경우)
  • make install빌드 한 커널을에 설치합니다 /vmlinuz.
  • make modules_install커널 모듈을 /lib/modules또는에 설치합니다 /lib/modules/<version>.

사용 가능한 커널 목록에 추가하면 부트 로더가 처리합니다. 부트 로더마다 다르지만 grubx86과 amd64에서 가장 일반적이므로 설명하겠습니다. 실제로는 매우 간단합니다. 에서 브의 모습 /, /boot그리고 /lib/modules그와 같은 외모가 작동 커널하고 추가합니다 수 있다는 어떤 일합니다. 그렇습니다. 이것은 지나치게 단순화 된 설명입니다.

우분투 문서에있는 그 “무서운 것들”은 deb패키지 를 만드는 데 필요한 것들 입니다. 자신보다 더 많은 일을 할 때는 포장하는 것이 훨씬 좋습니다. 당신은 시간에 전환합니다.

커널과 모듈을 빌드하는 것은 분리 된 상태로 유지되어야합니다. 왜냐하면 커널 개발자를 필요로하는 사람들은 종종 모듈 만 변경하기 때문입니다. 변경 사항을 적용하고 모듈 만 재구성하고 설치할 수 있습니다. 이렇게하면 하루에 20 번 수행해야하는 시간이 많이 절약됩니다. 단일 make everything명령 으로 업데이트되지 않습니다 . 대신 make && make modules && make install && make modules_install 설명서에서 지시 한대로 실행하십시오 . 빌드 프로세스는 커널 개발자가 아닌 커널 개발자에게 유리합니다. 그리고 그렇게해야합니다.

실제로 커널 개발자 나 배포판 패키저를 제외하고는 커널을 컴파일 할 이유가 거의 없습니다. 거의 모든 상황에서 원하는 커널 기능이 이미 빌드되어 있으며 사전 패키지 된 커널 중 하나에서 사용할 수 있습니다. 예외는 있지만 요즘 매우 드문 경우입니다.

커널을 직접 작성하지 말 것을 권장하지는 않지만 실제로 커널을 사용하는 것이 좋습니다. 커널을 처음부터 새로 작성하는 것이 어떻게 작동하는지 배우는 데있어 귀중한 관행이라고 생각합니다. 부분적으로 언젠가 당신 필요한 예외 입니다. 그러나 일반적으로 커널 및 부팅 프로세스에 대해 많이 알려줍니다. 당신은 그것을 한 더 나은 사람이 될 것입니다.


답변