Процесс загрузки Linux iniramfs и root (\)

У меня есть вопрос, связанный с процессом linux boot. Initramfs — это загруженная корневая файловая система первого уровня. Процесс инициализации внутри iniramfs отвечает за монтирование фактической корневой файловой системы с жесткого диска в каталог /.

Теперь мой вопрос: where is / directory created by init (процесс инициализации initramfs) для монтирования фактического корневого раздела. Это в оперативной памяти или на жестком диске ?

Также после монтирования фактического корневого раздела, что происходит с initramfs ?

Если initramfs удалить из оперативной памяти, то что произойдет с / папкой, созданной initramfs ?

Пожалуйста, предложите, может кто-нибудь объяснить how does this magic works.

// Аллан


person Allan    schedule 12.06.2013    source источник


Ответы (2)


Что делает /sbin/init (initramfs), так это загружает файловые системы и необходимые модули. Затем он пытается загрузить целевые настоящие «rootfs». Затем он переключается с initramfs на настоящую rootfs, и на жестком диске появляется «/». «/» создается, когда вы устанавливаете системы, выполняете форматирование жесткого диска. Обратите внимание, речь идет о чтении содержимого файловой системы, поэтому необходимо сначала загрузить необходимый модуль. Если у вас ext3 раздел "/", то будет загружен ext3.ko и т.д.

Ответ на второй вопрос - после выполнения необходимой загрузки модуля fs он переключается с инициализации initramfs на настоящую инициализацию rootfs, и начинается обычный процесс загрузки, а initramfs удаляется из памяти. Это переключение осуществляется через pivot_root().

Ответ на третий - initramfs не создает никакого каталога, он просто загружает существующий образ initramfs.img в оперативную память.

Короче говоря, загрузка iniramfs или rootfs не связана с созданием какого-либо каталога, а с загрузкой существующих образов файловой системы. Сразу после загрузки он использует initramfs для загрузки необходимого модуля файловой системы, как будто он может читать реальную файловую систему. Надеюсь, это поможет!

person rakib_    schedule 12.06.2013

С initrd есть два варианта:

  1. Использование pivot_root для поворота окончательной файловой системы на место или

  2. Очистка корня и монтирование окончательной файловой системы поверх него.

Дополнительную информацию можно найти здесь.

person idoby    schedule 12.06.2013