vmlinux
Эта статья нуждается в дополнительных цитатах для проверки . ( апрель 2012 г. ) |
vmlinux
— это статически связанный исполняемый файл, содержащий ядро Linux в одном из форматов объектных файлов, поддерживаемых Linux, включая формат исполняемых и связываемых файлов (ELF) и общий формат объектных файлов (COFF). vmlinux
Файл может потребоваться для отладки ядра , создания таблицы символов его необходимо сделать загрузочным, или других операций, но перед использованием в качестве ядра операционной системы добавив заголовок мультизагрузки , загрузочный сектор и процедуры настройки.
Этимология
[ редактировать ]Традиционно платформы UNIX называли образом ядра. /unix
. С развитием виртуальной памяти ядра, поддерживающие эту функцию, получили vm
- префикс для их различения. Имя vmlinux
является мутацией vmunix , тогда как в vmlinuz
письмо z
в конце означает, что он сжат (например, gzipped ). [1]
Расположение
[ редактировать ]Традиционно ядро располагалось в корневом каталоге иерархии файловой системы; загрузчик должен использовать BIOS драйверы однако, поскольку для доступа к жесткому диску , ограничения некоторых систем i386 означали, что адресными были только первые 1024 цилиндра жесткого диска .
Чтобы преодолеть эту проблему, дистрибьюторы Linux рекомендовали пользователям создавать раздел в начале своих дисков специально для хранения файлов загрузчика и ядра. GRUB , LILO и SYSLINUX являются распространенными загрузчиками .
По соглашению этот раздел монтируется в иерархии файловой системы как /boot
. Позже это было стандартизировано стандартом иерархии файловой системы (FHS), который теперь требует, чтобы образ ядра Linux располагался либо в /
или /boot
, хотя технических ограничений на это не существует. [2]
Сжатие
[ редактировать ]Традиционно при создании загрузочного образа ядра ядро также сжимается с помощью gzip или, начиная с Linux 2.6.30, [3] используя LZMA или bzip2 очень маленькой заглушки для распаковки , что требует включения в результирующий образ . Заглушка распаковывает код ядра, в некоторых системах выводит точки на консоль для обозначения прогресса, а затем продолжает процесс загрузки. Поддержка ЛЗО , [4] хз , [5] LZ4 [6] и зстд [7] сжатие было добавлено позже.
Процедура распаковки играет незначительную роль во время загрузки, и до разработки bzImage ограничения по размеру некоторых архитектур, особенно i386, были чрезвычайно ограничивающими, что делало сжатие необходимым.
В архитектуре SPARC файл vmlinux сжимается с помощью простого gzip , поскольку загрузчик SILO прозрачно распаковывает сжатые gzip образы.
Имя файла загрузочного образа не имеет значения, но многие популярные дистрибутивы используют vmlinuz .
bzImage
[ редактировать ]По мере развития ядра Linux размер ядер, генерируемых пользователями, вышел за пределы, налагаемые некоторыми архитектурами, где пространство, доступное для хранения сжатого кода ядра, ограничено. Формат bzImage ( big zImage ) был разработан для преодоления этого ограничения за счет разделения ядра на несмежные области памяти . [ нужна ссылка ]
BzImage сжимался с помощью gzip до Linux 2.6.30. [3] который представил больше алгоритмов . Хотя bz
префикс может указывать на то, что используется сжатие bzip2 , но это не так. [ нужна ссылка ] (Пакет bzip2 часто распространяется вместе с инструментами, имеющими префикс bz
, такой как bzless
, bzcat
, и т. д.)
Файл bzImage имеет определенный формат. Он содержит объединенные bootsect.o
+ setup.o
+ misc.o
+ piggy.o
. [8] piggy.o
содержит заархивированный файл vmlinux в разделе данных. Сценарий extract-vmlinux
найдено под scripts/
в исходниках ядра распаковывает образ ядра. Некоторые дистрибутивы (например, Red Hat и клоны) могут поставляться с kernel-debuginfo
RPM, содержащий vmlinux
файл для соответствующего RPM ядра, и обычно он устанавливается под /usr/lib/debug/lib/modules/`uname -r`/vmlinux
или /usr/lib/debug/lib64/modules/`uname -r`/vmlinux
.
См. также
[ редактировать ]Примечания и ссылки
[ редактировать ]- ^ «Определение vmlinuz» . www.linfo.org . Бельвью Линукс. 29 марта 2005 года . Проверено 21 июня 2015 г.
- ^ «Раздел 3.5.2 — /boot: Статические файлы загрузчика». ФХС 2.3 . 29 января 2004 г. Проверено 11 марта 2014 г.
Ядро операционной системы должно находиться в каталоге / или /boot.
- ^ Jump up to: а б В Linux 2.6.30, выпущенном 9 июня 2009 г., добавлена поддержка сжатия образа ядра с помощью алгоритмов LZMA и bzip2 [1].
- ^ Linux 2.6.33, выпущенный 24 февраля 2010 г., добавлена поддержка сжатия образа ядра с помощью LZO [2]
- ^ В Linux 2.6.38, выпущенном 14 марта 2011 г., добавлена поддержка сжатия образа ядра с помощью xz [3]
- ^ Linux 3.11, выпущенный 2 сентября 2013 г., добавлена поддержка сжатия образа ядра с помощью LZ4 [4]
- ^ В Linux 5.9, выпущенном 11 октября 2020 г., добавлена поддержка сжатия образа ядра, initrd и initramfs с помощью zstd [5]
- ^ Янн Дроно (28 сентября 1999 г.). «Re: Распаковка bzImage» . LKML (список рассылки).
ZImage содержит bootsect.o + setup.o + misc.o + piggy.o.
Дальнейшее чтение
[ редактировать ]- Алавор Васудеван (15 августа 2003 г.). «10. Информация о файлах ядра». HOWTO по ядру Linux . Архивировано из оригинала 10 октября 2017 г. Проверено 11 марта 2014 г.
- Даниэль Пьер Бове (3 января 2013 г.). «Специальные разделы в двоичных файлах Linux» . LWN.net .
все специальные разделы, появляющиеся в ядре Linux, в конечном итоге упаковываются в один из сегментов, определенных в заголовке ELF vmlinux. Каждый специальный раздел выполняет определенную цель.