Что и как эти файлы отличаются при начальной загрузке/?

В моей системе, (ubunt 16.04), когда я ввожу uname -r, Я добираюсь

4.15.0-33-generic

когда я делаю ls /boot/*4.15.0-33* -l, Я добираюсь

-rw-r--r-- 1 root root  1537455  8월 16 06:00 /boot/abi-4.15.0-33-generic
-rw-r--r-- 1 root root   216913  8월 16 06:00 /boot/config-4.15.0-33-generic
-rw-r--r-- 1 root root 53435246  8월 25 06:29 /boot/initrd.img-4.15.0-33-generic
-rw-r--r-- 1 root root        0  8월 16 06:00 /boot/retpoline-4.15.0-33-generic
-rw------- 1 root root  4041375  8월 16 06:00 /boot/System.map-4.15.0-33-generic
-rw------- 1 root root  8108600  8월 17 03:58 /boot/vmlinuz-4.15.0-33-generic

Я знаю, что initramfs является своего рода простой файловой системой, временно используемой во время начальной загрузки (на самом деле, заключительные файловые системы смонтированы?). Но каковы те много файлов каждый используемый для? Просто краткие объяснения ценились бы.

0
задан 27 August 2018 в 01:19

1 ответ

Вот краткое объяснение на основе собранной информации и примечание, я не являюсь опытным в этой области [Предупреждение гиковского материала]:

  1. /boot/System.map-4.15.0-33-generic

    • Содержит местоположение ядра.
  2. boot/vmlinuz-4.15.0-33-generic

    • Обычно ядро или символьная ссылка на ядро.
  3. /boot/config-4.15.0-33-generic

    • Установленная конфигурация ядра. Этот файл является самым полезным при компиляции ядер в других системах или модулях устройства. Ниже небольшая выборка того, на что содержание файла похож.

       CONFIG_X86=y
       CONFIG_MICROCODE=m
       CONFIG_X86_MSR=m
       CONFIG_MATH_EMULATION=y
       CONFIG_MTRR=y
       CONFIG_MODULES=y
       CONFIG_MODVERSIONS=y
       CONFIG_SCSI_DEBUG=m
       CONFIG_I2O=m
       CONFIG_ARCNET_ETH=y
       CONFIG_FMV18X=m
       CONFIG_HPLAN_PLUS=m
       CONFIG_ETH16I=m
       CONFIG_NE2000=m
       CONFIG_HISAX_HFC_PCI=y
       CONFIG_ISDN_DRV_AVMB1_C4=m
       CONFIG_USB_RIO500=m
       CONFIG_QUOTA=y
       CONFIG_AUTOFS_FS=m
       CONFIG_ADFS_FS=m
       CONFIG_AFFS_FS=m
       CONFIG_HFS_FS=m
       CONFIG_FAT_FS=y
       CONFIG_MSDOS_FS=y
       CONFIG_UMSDOS_FS=m
       CONFIG_FBCON_VGA=m
       CONFIG_FONT_8x8=y
       CONFIG_FONT_8x16=y
       CONFIG_SOUND=m
       CONFIG_SOUND_CMPCI=m
       CONFIG_AEDSP16=m
      
  4. /boot/abi-4.15.0-33-generic

    • Общая информация: В программном обеспечении двоичный интерфейс приложений (ABI) является интерфейсом между двумя модулями программы в двоичном представлении; часто, один из этих модулей является библиотекой, или средство операционной системы и другой являются программой, которая запускается пользователем.

      ABI определяет, как к структурам данных или вычислительным процедурам получают доступ в машинном коде, который является низким уровнем, аппаратно-зависимым форматом;

    • Конкретный Linux: ABI является рядом конвенций, который позволяет компоновщику комбинировать отдельно скомпилированные модули в одну единицу без перекомпиляции, такие как соглашения о вызовах, интерфейс машины и интерфейс операционной системы. Среди прочего ABI определяет двоичный интерфейс между этими единицами.... Преимущества приспосабливания ABI - то, что оно позволяет связывать объектные файлы, скомпилированные различными компиляторами.

    • Мое понимание - то, что это помогает в коммуникации между программами, кодом, библиотеки и т.д. [Представление неспециалиста]

    • См.: https://softwareengineering.stackexchange.com/questions/97478/understanding-application-binary-interface-abi
    • https://stackoverflow.com/questions/2171177/what-is-an-application-binary-interface-abi
  5. /boot/retpoline-4.15.0-33-generic

    • retpoline является батутом возврата, который использует бесконечный цикл, который никогда не выполняется, чтобы препятствовать тому, чтобы ЦП размышлял о цели косвенного перехода.
  6. /boot/initrd.img-4.15.0-33-generic

    • Изображение initrd содержит необходимые исполняемые файлы и системные файлы для поддержки второй этапной начальной загрузки системы Linux.
  7. initramfs-4.15.0-33-generic (?)

    • initramfs является полным набором каталогов, которые Вы нашли бы в нормальной корневой файловой системе. Это связано в единственный архив cpio и сжато с одним из нескольких алгоритмов сжатия. Во время начальной загрузки загрузчик загружает ядро и изображение initramfs в память и запускает ядро

Примечание: Для 7 и 8:

  • Как Википедия приятно описывает, initrd (начальный электронный диск) схема загрузки временной файловой системы в память в процессе начальной загрузки ядра Linux. Initrd и initramfs обращаются к немного отличающимся методам достижения этого. Оба являются наиболее часто используемыми для создания приготовлений, прежде чем реальная корневая файловая система сможет быть смонтирована, но существует различие.

    Initrd является блочным устройством фиксированного размера, которое требует, чтобы быть 'отформатированным' файловой системой, такой как ext2. Это находится на/dev/ram0 по умолчанию, и не может быть увеличено или сокращено.

    С другой стороны, initramfs является архивом cpio, который просто распакован во время начальной загрузки к ramfs памяти. Эта память имеет динамический размер и таким образом может быть сокращена или увеличена по мере необходимости.

    Таким образом, initramfs кажется лучше, правильно? Не обязательно. Основная проблема состоит в том, что это не поддерживает pivot_root. Что делает pivot_root? Это в основном 'переключается' от initrd до нового корня (unioned структуры данных, смонтированные с CD/USB), но initramfs так или иначе не способен к этому. Кажется, что была некоторая циклическая ссылка, и разработчики ядра отключили pivot_root для initramfs вообще. И без pivot_root мы наклоняемся, транспонируют текущий корень с новым. - источник - см. также это.

0
ответ дан 28 October 2019 в 02:06

Другие вопросы по тегам:

Похожие вопросы: