6. Загрузка первоначального RAM диска |
Предыдущая Содержание Следующая |
Первоначальный RAM диск является общим требованием на многих системах. Он даёт возможность иметь доступной корневую файловую систему без доступа к другим драйверам или конфигурациям. Полную информацию можно получить в linux/Documentation/initrd.txt.
Есть два способа на ARM Linux для получения первоначального RAM диска. Первым из них является создание специального целевого bootpImage, который берёт первоначальный RAM диск во время сборки и добавляет его в zImage. Этот метод обладает тем преимуществом, что не требует вмешательства загрузчика, но требует знания процессом сборки ядра физического адреса для размещения ramdisk (используя определение INITRD_PHYS). Применяется жёсткое ограничение в 4 мегабайта на размер несжатого ядра и initrd. Из-за этих ограничений этот способ на практике используется редко.
Вторым и гораздо более широко используемым методом является размещение загрузчиком данного исходного образа ramdisk, полученного с любого носителя, в указанное место в памяти. Это место передаётся в ядро с помощью ATAG_INITRD2 и ATAG_RAMDISK.
Традиционно initrd размещается со смещением 8 мегабайт от начала физической памяти. Там, где он находится, должно быть достаточно памяти после загрузки для распаковки начального ramdisk в реальный ramdisk, то есть достаточно памяти для zImage + распакованный zImage + initrd + распакованный ramdisk. Занимаемая сжатым начальным ramdisk память будет освобождена после окончания декомпрессии. Ограничениями к позиции электронного диска являются:
•Она должна лежать полностью в пределах одной области памяти (не должна пересекать регионы, заданные различными параметрами ATAG_MEM) •Она должна быть согласована с границей страницы (обычно, 4К) •Она не должна конфликтовать с памятью, используемой заголовочным кодом zImage, используемым для распаковки ядра или она будет перезаписана, как не прошедшая проверки.
Замечание. Дополнительно появился способ делать это с помощью initramfs. |
Предыдущая Содержание Следующая |