Можно ли восстановить память, используемую initrd?

841
Steve

Я разрабатываю процесс загрузки для встроенного устройства. В настоящее время я использую initrd (без сжатия, это 4 мегабайта), чтобы иметь возможность настроить мой настоящий корневой раздел перед продолжением загрузки (я должен выбрать раздел на основе некоторой информации и наложить другой, используя unionfs).

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

  • Есть ли способ вернуть эту память?
  • Если бы я использовал initramfs вместо initrd, купил бы это мне что-нибудь?
  • Есть ли другой вариант?
1

1 ответ на вопрос

1
Sami Laine

Память, используемая initrd / initramfs, освобождается после того, как это сделано с помощью ie. когда настоящий root fs смонтирован. Поэтому обычно вам следует беспокоиться об этом. Ваш вопрос показывает, что вы не используете initrd / initramfs в качестве корневого fs во время выполнения, поэтому используемая для него память освобождается автоматически.

Для получения более подробной информации, смотрите раздел initrd документации ядра под заголовком «Изменение корневого устройства».

Я не вижу в этом документе ничего, что говорило бы о том, что мне не о чем беспокоиться, но похоже, что мне нужно отключить initrd, а потом освободить оперативную память. Однако, когда я пытаюсь размонтировать initrd, я получаю «устройство или ресурс занят». Принято, потому что этот документ содержит ответ :) Steve 10 лет назад 0
Не берите в голову! Оказывается, devtmpfs все еще был смонтирован в каталоге initrd. Steve 10 лет назад 0