Рейтинг:0

Скрипт initramfs-tools для монтирования сжатых папок на tmpfs

флаг ug

Я пытаюсь создать небольшой резервный раздел (около 800 МБ свободного места после всех других разделов системы и хранилища) для ноутбука со специализированным оборудованием, для которого требуются специальные модули ядра и ядра, такие как запасные инструменты восстановления, такие как Clonezilla Live и GParted Live. т работать очень хорошо. Раздел слишком мал, чтобы включать в себя модули и программное обеспечение, необходимые для того, что я хотел бы построить, поэтому большую часть системы необходимо сжать и загрузить в ОЗУ во время выполнения. Кроме того, я предпочитаю полностью извлекать систему, а не полагаться на кабачки, и хотелось бы иметь возможность сохранять внесенные в систему изменения настолько, насколько позволяет раздел. Используя Ubuntu 20.04 в качестве базовой системы, я разработал для этой цели следующую схему:

  1. После создания исходной системы в chroot, создать и очистить папку /ОЗУ в качестве точки монтирования tmpfs для размещения распакованных системных и пользовательских файлов во время выполнения, переместите все папки с системными и пользовательскими файлами (дом,usr,вар,выбрать,и т.д, и т.д.) в /ОЗУ и замените каждый символической ссылкой на / баран / $ каталог. Компресс /ОЗУ как/ram.tar.gz и оставить специальные точки монтирования (разработчик, система ,бег ,температура, и процесс) а также ботинок один на rootfs. Удалить /ОЗУ/* и напишите rootfs на перегородку.
  2. При загрузке, после ядра и initrd загружаются, предварительно монтируются rootfs, устанавливать tmpfs на /ОЗУ, затем извлеките содержимое /ram.tar.gz в /ОЗУ. Это должно произойти до rootfs заменяет initramfs как root, иначе rootfs не могу получить доступ к утилитам, необходимым для монтирования /ОЗУ и извлечь из сжатого архива.
  3. Устанавливать rootfs и продолжить загрузку.
  4. При выключении резервное копирование /ram.tar.gz как /ram.tar.gz.bak затем сжать измененный /ОЗУ в /ram.tar.gz. Это может быть достигнуто с помощью системад.

Очевидно, что на шаге 4 что-то может пойти не так, и поэтому шаг 2 должен включать целостность /ram.tar.gz и загрузите резервную копию, если это не удастся, но это всего лишь несколько дополнительных команд, которые нужно включить в initramfs-инструменты script и выходит за рамки моего вопроса, а именно:

Без изменения /usr/доля/initramfs-инструменты/инит, как создать скрипт в /etc/initramfs-инструменты/скрипты выполнить шаг 2? Команды должны быть достаточно простыми, т.к.

mount -t tmpfs -o $OPTIONS нет /ram
смола xvzf ram.tar.gz

Но я немного в недоумении, в какую папку включать скрипт (инициальная? локальная? верхняя? нижняя? предварительная установка?) и как работать с ПРЕДЗАПРОС заголовок в самом скрипте.

Рейтинг:0
флаг ug

Это оказалось довольно просто. Создавать:

/etc/initramfs-tools/scripts/local-bottom/ramfiles
#!/бин/ш

установить -е

ПРЕДЗАПРОС=""

предварительные требования()
{
        эхо "${ПРЕДВАРИТЕЛЬНЫЙ}"
}

регистр "${1}" в
        предварительные требования)
                предварительные требования
                выход 0
                ;;
эсак

mount -t tmpfs -o size=100% нет ${rootmnt}/ram
tar xvzf ${rootmnt}/ram.tar.gz -C ${rootmnt}


тогда

sudo chmod +x /etc/initramfs-tools/scripts/local-bottom/ramfiles
sudo update-initramfs -u

Ответить или комментировать

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