Кіріспе
Linux ядросын қамтитын орындалатын файл vmlinux – Linux қолдайтын нысандық файл форматтарының бірінде (мысалы, орындалатын және байланыстырылатын формат (ELF) немесе жалпы нысандық файл форматы (COFF)) Linux ядросын қамтитын статикалық байланысты орындалатын файл. vmlinux файлы ядроны жөндеу, символдар кестесін жасау сияқты операциялар үшін қажет болуы мүмкін, бірақ операциялық жүйе ядросы ретінде пайдалану үшін алдымен жүктемелік бөлік, жүктеу секторы және бастапқы бағдарламалар қосылып, жүктелетін күйге келтірілуі керек.
vmlinux is a statically linked executable file that contains the Linux kernel in one of the object file formats supported by Linux, which includes Executable and Linkable Format (ELF) and Common Object File Format (COFF). The vmlinux file might be required for kernel debugging, symbol table generation or other operations, but must be made bootable before being used as an operating system kernel by adding a multiboot header, bootsector and setup routines.
Этимология
Дәстүрлі түрде UNIX платформалары ядролық бейнені /unix деп атаған. Виртуалды жадтың дамуымен, осы мүмкіндікті қолдайтын ядролар оларды ажырату үшін vm префиксімен белгіленді. vmlinux атауы vmunix-тің өзгеруі, ал vmlinuz-тегі z әрпі оның қысылған екенін көрсетеді (мысалы, gzipped).
Орналасқан жері
Дәстүрлі түрде ядро файлдық жүйенің түбірлік каталогында орналасқан; алайда, жүктеу құрылғысы BIOS драйверлерін қатты дискіге қол жеткізу үшін пайдалануға тиіс болғандықтан, кейбір i386 жүйелеріндегі шектеулер қатты дискідегі алғашқы 1024 цилиндрді ғана адрестеуге мүмкіндік берді. Бұл мәселені шешу үшін Linux дистрибуцияларын жасаушылар пайдаланушыларды жүктеу құрылғысымен және ядромен байланысты файлдарды сақтау үшін дискінің басында арнайы бөлім жасауға ынталандырды. GRUB, LILO және SYSLINUX – көп қолданылатын жүктеу құрылғылары. Конвенция бойынша, бұл бөлім файлдық жүйенің иерархиясында /boot ретінде орнатылады. Бұл кейінірек Файлдық жүйе иерархиясы стандарты (FHS) арқылы бекітілді, ол қазір Linux ядросының бейнесін / немесе /boot каталогында орналастыруды талап етеді, бірақ мұны міндеттейтін техникалық шектеулер жоқ.
Сығу
Дәстүрлі түрде, жүктелетін ядролық кескінді жасағанда, ядро gzip арқылы немесе Linux 2.6.30 нұсқасынан бастап LZMA немесе bzip2 арқылы сығылады, бұл нәтижедегі кескінді кішкентай декомпрессиялық модульмен толықтыруды қажет етеді. Бұл модуль ядролық кодты декомпрессиялайды, кейбір жүйелерде прогресті көрсету үшін консольге нүктелер шығарады, содан кейін жүктеу процесі жалғастырылады. LZO, xz, LZ4 және zstd сығылымдарына қолдау кейіннен қосылды. Декомпрессия процесі жүктелу уақытына едәуір әсер етпейді, ал bzImage әзірленгенге дейін, әсіресе i386 архитектурасындағы көлем шектеулері өте қатаң болғандықтан, сығылым қажеттілікке айналды. SPARC архитектурасында vmlinux файлы қарапайым gzip арқылы сығылады, себебі SILO жүктегіші gzip сығылған кескіндерді автоматты түрде декомпрессиялайды. Жүктелетін кескіннің атауы маңызды емес, бірақ көптеген танымал дистрибутивтер vmlinuz атауын қолданады.
bzImage
Linux ядросы жетілген сайын, пайдаланушылар құратын ядролардың мөлшері кейбір архитектуралардың шектеулерінен асып кетті, онда сығылған ядролық кодты сақтауға арналған орын шектеулі болды. bzImage (үлкен zImage) форматы ядроны үздіріспейтін жад аймақтарына бөлу арқылы осы шектеуді жеңу үшін әзірленді. bzImage Linux 2.6.30 нұсқасына дейін gzip арқылы сығылған, ал piggy.o өзінің дерек бөлімінде gzipped vmlinux файлын сақтайды. Ядролық көздердегі scripts/ қамтылған vmlinux-ты шығару скрипті ядролық бейнені декомпрессиялайды. Кейбір дистрибутивтер (мысалы, Red Hat және оның түйіндемелері) сәйкес келетін ядролық RPM үшін vmlinux файлын қамтитын ядролық debuginfo RPM-мен бірге келуі мүмкін, және ол әдетте /usr/lib/debug/lib/modules/`uname r`/vmlinux немесе /usr/lib/debug/lib64/modules/`uname r`/vmlinux қалтасына орнатылады.