8.3 Сборка корневой файловой системы |
Предыдущая Содержание Следующая |
Теперь, когда мы ознакомились с процессом сборки ядра и приложений, следующим логическим шагом будет понять процесс создания корневой файловой системы. Как объяснялось в Главах 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
Образ 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)
| ||||||||||
Предыдущая Содержание Следующая |