질문은 꽤 많이 제목으로 요약됩니다 - 나는 방금 vmlinux 출력 파일을 생성 한 커널을 만들었습니다. 이것을 vmlinuz 이미지로 압축하는 방법은 무엇입니까?
질문은 꽤 많이 제목으로 요약됩니다 - 나는 방금 vmlinux 출력 파일을 생성 한 커널을 만들었습니다. 이것을 vmlinuz 이미지로 압축하는 방법은 무엇입니까?
답변:
압축은 컴파일 타임 옵션입니다.
결과 파일은 나머지 커널을 압축 해제하고 거기 점프하는 원시 코드로 시작하므로 프로세스가 매우 까다 롭습니다.
따라서 직접적인 방법은 없으며 재 컴파일을 수행하기에 충분히 간단하기 때문에 재 압축을 구현하는 데 시간을 낭비하지 않았습니다.
결론적으로, 당신은 make bzImage
.
make vmlinuz
, 그가 bzip2가 아닌 그 형식을 원한다면?
vmlinuz
make 옵션이 아닙니다. 또한 bzImage는 bzip으로 압축 된 것을 의미하지 않습니다. z가 압축 된 것을 의미하는 큰 zimage의 약자입니다. 만나다 en.wikipedia.org/wiki/Vmlinux#bzImage
vmlinuz
파일은 함께 얻을 수 있습니다. make bzImage
. 두 이름 vmlinuz
과 bzImage
압축 된 커널을 참조하고 특정 압축 알고리즘과 관련이 없습니다 (아니요 접두사 또는 접미어에서 아무 것도 추론하지 마십시오).
Wikipedia 기사에서 vmlinux :
압축
전통적으로 부팅 가능한 커널 이미지를 만들 때 커널은 zlib 알고리즘을 사용하여 압축되거나 LZMA 또는 BZIP2를 사용하는 Linux 2.6.30에서 압축되므로 결과 이미지에 아주 작은 압축 해제 스텁이 포함되어야합니다. 스텁은 커널 코드의 압축을 풀고 일부 시스템에서는 도트를 콘솔에 인쇄하여 진행 상태를 표시 한 다음 부팅 프로세스를 계속합니다.
압축 해제 루틴은 부팅시 무시할 수있는 요소이며, bzImage를 개발하기 전에 일부 아키텍처, 특히 i386의 크기 제한이 극히 제한되어 압축이 필수적입니다.
SPARC 아키텍처에서 SILO 부트 로더는 gzip 이미지를 투명하게 압축 해제하기 때문에 vmlinux 파일은 간단한 gzip을 사용하여 압축됩니다.
부팅 가능한 이미지의 파일 이름은 중요하지 않지만 관례 상 vmlinuz 또는 zImage라고합니다.
따라서 어떤 아키텍처를 사용하고 있고 어떤 Linux 버전을 사용하고 있는지에 따라 대답이 달라질 수 있습니다.
가장 좋은 방법은 커널이 프로세스를 압축하도록 압축하는 것입니다.