vmlinux
vmlinux vmlinux
는 Linux에서 지원되는 오브젝트파일 형식 중 하나로 Linux 커널을 포함하는 정적으로 링크된 실행 가능 파일입니다.이 파일 형식에는 실행 가능 및 링크 가능 형식(ELF), 공통 객체 파일 형식(COFF) 및 a.out이 포함됩니다.그vmlinux
파일은 커널 디버깅, 심볼 테이블 생성 또는 기타 작업에 필요할 수 있지만 멀티부팅 헤더, 부트 섹터 및 설정 루틴을 추가하여 운영 체제 커널로 사용하기 전에 부팅 가능해야 합니다.
어원학
기존에는 커널 이미지라고 불리는 UNIX 플랫폼/unix
가상 메모리의 개발로 이 기능을 지원하는 커널은vm-
prefix를 지정해 주세요.이름vmlinux
는 vmunix의 변환입니다.vmlinuz
서신z
마지막은 압축된 것을 나타냅니다(예를 들어 gzipped).[1]
위치
기존에는 커널이 파일 시스템 계층의 루트 디렉토리에 있었지만 부트 로더는 BIOS 드라이버를 사용하여 하드 디스크에 액세스해야 했기 때문에 일부 i386 시스템에서는 하드 디스크의 첫 번째 1024 실린더만 처리할 수 있었습니다.
이를 극복하기 위해 Linux 디스트리뷰터에서는 사용자가 드라이브의 선두에 부트 로더 및 커널 관련 파일을 저장하기 위한 파티션을 만들도록 권장했습니다.GRUB, LILOUX 및 SYSLINUX는 일반적인 부트 로더입니다.
일반적으로 이 파티션은 파일 시스템 계층에 다음과 같이 마운트됩니다./boot
이것은 나중에 FHS(Filesystem Hierarchy Standard)에 의해 표준화되었습니다.이것에 의해, Linux 커널 이미지는 다음의 어느쪽인가에 배치할 필요가 있습니다./
또는/boot
단,[2] 이를 강제하는 기술적 제약은 없습니다.
압축
기존에는 부트 가능한 커널 이미지를 작성할 때 커널도 gzip을 사용하여 압축됩니다.또한 Linux 2.[3]6.30 이후로는 LZMA 또는 bzip2를 사용하여 압축이 압축됩니다.이것에 의해, 생성되는 이미지에 매우 작은 압축 해제 스탭을 포함할 필요가 있습니다.stub는 커널 코드를 압축 해제하고 일부 시스템에서는 진행 상황을 나타내는 도트를 콘솔에 인쇄한 후 부팅 프로세스를 계속합니다.나중에 [4]LZO, [5]xz, LZ4[6] 및[7] zstd 압축 지원이 추가되었습니다.
압축 해제 루틴은 부팅 시간에서 무시할 수 있는 요소이며, bzImage 개발 이전에는 일부 아키텍처(특히 i386)의 크기 제약이 매우 제한적이었기 때문에 압축이 필요했습니다.
SPARC 아키텍처에서는 simple gzip을 사용하여 vmlinux 파일이 압축됩니다.이는 SILO 부트로더가 gzip 이미지를 투과적으로 압축 해제하기 때문입니다.
부트 이미지의 파일 이름은 중요하지 않지만 널리 사용되는 배포에서는 vmlinuz를 사용합니다.
bz
Linux 커널이 성숙함에 따라 사용자가 생성한 커널의 크기는 압축된 커널 코드를 저장할 수 있는 공간이 제한된 일부 아키텍처에 의해 부과된 제한을 초과했습니다.bzImage(big zImage) 포맷은 커널을 비연속 메모리 영역으로 [citation needed]분할함으로써 이 제한을 극복하기 위해 개발되었습니다.
bzImage는 Linux 2.6.[3]30까지 gzip을 사용하여 압축되어 더 많은 알고리즘이 도입되었습니다.단,bz
prefix는 bzip2 압축이 사용되고 있는 것을 나타내는 경우가 있습니다만,[citation needed] 그렇지 않습니다.(bzip2 패키지는 주로 다음과 같은 툴이 부가되어 배포됩니다.bz
,예를 들어bzless
,bzcat
등)
bzImage 파일은 특정 형식입니다.그것은 연결된 것을 포함한다.bootsect.o
+setup.o
+misc.o
+piggy.o
를 클릭합니다.[8] piggy.o
의 data 섹션에 gzip 압축된 vmlinux 파일이 포함되어 있습니다.스크립트extract-vmlinux
밑에 있는.scripts/
커널 이미지의 압축을 해제합니다.일부 배포판(예: Red Hat 및 클론)에는 다음과 같은 기능이 포함되어 있을 수 있습니다.kernel-debuginfo
를 포함한 RPMvmlinux
일치하는 커널 RPM에 대한 파일입니다.일반적으로, 이 파일은, 다음의 장소에 인스톨 됩니다./usr/lib/debug/lib/modules/`uname -r`/vmlinux
또는/usr/lib/debug/lib64/modules/`uname -r`/vmlinux
.
「 」를 참조해 주세요.
주 및 참고 자료
- ^ "vmlinuz Definition". www.linfo.org. Bellevue Linux. March 29, 2005. Retrieved 2015-06-21.
- ^ "Section 3.5.2 — /boot : Static files of the boot loader". FHS 2.3. 2004-01-29. Retrieved 2014-03-11.
The operating system kernel must be located in either / or /boot.
- ^ a b 2009년 6월 9일에 출시된 Linux 2.6.30에서는 LZMA 및 bzip2 알고리즘을 사용한 커널 이미지 압축 지원이 추가되었습니다[ 1 ]
- ^ 2010년 2월 24일에 출시된 Linux 2.6.33에서는 LZO를 사용한 커널 이미지 압축 지원이 추가되었습니다[ 2 ]
- ^ 2011년 3월 14일에 출시된 Linux 2.6.38에서는 xz로 커널 이미지를 압축할 수 있는 지원이 추가되었습니다[ 3 。
- ^ 2013년 9월 2일에 출시된 Linux 3.11에서는 커널 이미지를 LZ4로 압축하는 지원이 추가되었습니다[ 4 ]
- ^ 2020년 10월 11일에 출시된 Linux 5.9는 zstd를 사용하여 커널 이미지, initrd 및 initramfs 압축에 대한 지원을 추가하였습니다[ 5 ]
- ^ Yann Droneaud (1999-09-28). "Re: bzImage decompression". LKML (Mailing list).
The zImage contain bootsect.o + setup.o + misc.o + piggy.o
추가 정보
- Alavoor Vasudevan (2003-08-15). "10. Kernel Files Information". The Linux Kernel HOWTO.
- Daniel Pierre Bovet (2013-01-03). "Special sections in Linux binaries". LWN.net.
all special sections appearing in the Linux kernel end up packed in one of the segments defined in the vmlinux ELF header. Each special section fulfills a particular purpose.