The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

8.3 Сборка корневой файловой системы

8.3 Сборка корневой файловой системы

Предыдущая  Содержание  Следующая V*D*V

Теперь, когда мы ознакомились с процессом сборки ядра и приложений, следующим логическим шагом будет понять процесс создания корневой файловой системы. Как объяснялось в Главах 2 и 4, существуют три метода, которые можно использовать для этой цели:

 

Использование initrd/initramfs: initrd был подробно рассмотрен в Главах 2 и 4. В этом разделе мы обсудим initramfs. Для создания таких образов могут быть использованы скрипты, имеющиеся в конце этого раздела.

Монтаж корневой файловой системы по сети с использованием NFS: это имеет смысл на этапах разработки; все изменения могут делаться на базовой (хост) машине, на которой выполняется разработка, и корневая файловая система с базовой машины может быть смонтирована по сети. Подробности о монтировании корневой файловой системы с помощью NFS можно получить из документации, которая является частью дерева исходных кодов ядра и находится в каталоге Documentation/nfsroot.

Программирование корневой файловой системы во флеш-память: это делается на стадии производства. На базовой машине создаётся образ корневой файловой системы для запуска на целевой платформе (например, JFFS2 или CRAMFS), а затем он записывается во флеш-память. Различные инструменты, которые доступны для создания образов, описаны в Главе 4.

 

Универсальный сценарий initrd показывает Распечатка 8.3. Он используется так:

 

mkinitrd <rfs-folder> <ramdisk-size>

 

где

 

<rfs-folder> это абсолютный путь к родительскому каталогу, содержащему корневую файловую систему.

<ramdisk-size> является размером initrd.

 

Скрипт создаёт образ initrd /tmp/ramdisk.img, который может быть смонтирован на целевой платформе как файловая система ext2. Чтобы скопировать файлы из каталога с корневой системой <rfs-folder> в целевой образ /tmp/ramdisk.img, он использует петлевое устройство (loopback device) /dev/loop0.

Initramfs была введена в ядро версии 2.6, чтобы обеспечить раннее пространство пользователя. Идея заключалась в том, чтобы переместить много всего, выполняемого при инициализации, из ядра в пространство пользователя. Было решено, что такие части инициализации, как поиск корневого устройства, монтаж корневой файловой системы локально или по сети, и так далее, которые были частью последовательности загрузки ядра, могут быть легко выполнены в пространстве пользователя. Это упрощает ядро. Таким образом, для достижения этой цели была разработана initramfs.

Так же как вы можете смонтировать в качестве корневой файловой системы образ initrd, вы можете также аналогичным образом смонтировать в качестве корневой файловой системы образ initramfs. Initramfs основана на файловой системе RAMFS и initrd, базирующемся на электронном диске. Различия между RAMFS и виртуальным диском (ramdisk) показаны в Таблице 8.1.

 

Таблица 8.1 Сравнение RAMFS и RAMDISK

 

Виртуальный диск (RAMDISK)

RAMFS

Виртуальный диск реализован в виде блочного устройства в оперативной памяти и чтобы использовать его, необходимо создать на нём файловую систему.

RAMFS, с другой стороны, является файловой системой, реализованной непосредственно в оперативной памяти. Для каждого файла, созданного в RAMFS, ядро хранит данные файла и метаданные в кэшах ядра.

Перед использованием виртуального диска необходимо выделить место в оперативной памяти.

Нет необходимости предварительного выделения памяти, динамичный рост осуществляется по мере необходимости.

При запуске программ с электронного диска поддерживаются два экземпляра страниц программы: один на виртуальном диске, а другой в кэше страниц ядра.

При запуске программ из RAMFS всегда используется только одна копия, которая находится в кэше ядра. Дублирования нет.

Виртуальный диск медленнее, потому что при любом обращении к данным необходимо пройти через файловую систему и драйвер блочного устройства.

RAMFS относительно быстрее, так как фактические данные и метаданные файлов находятся в кэше ядра, и нет накладных расходов, связанных с использованием файловой системы и драйвером блочного устройства.

 

Образ initramfs можно создать с помощью сценария mkinitramfs. Он используется так:

 

mkinitramfs <rfs-folder>

 

где <rfs-folder> это абсолютный путь к родительскому каталогу, содержащему корневую файловую систему. Для создания  образа initramfs необходимо создать архив cpio из <rfs-folder> с последующим архивированием с помощью gzip.

 

#!/bin/sh

 

#mkinitramfs

 

(cd $1 ; find . | cpio --quiet -o -H newc | gzip -9

                                 >/tmp/img.cpio.gz)

 

Предыдущая  Содержание  Следующая