2

Контекст:

  • несколько удаленных 32-битных серверов Debian 7
  • доступно только через SSH
  • больше половины дисков пусто
  • 1 раздел диска на сервер
  • небольшое окно обслуживания, не может быть долго
  • файловые системы ext4
  • ПРИМЕЧАНИЕ. Я занимаюсь разработкой своего решения с использованием виртуальной машины VirtualBox, но серверы работают без проблем.

Цель: обновить ОС до Debian 9+ неразрушающим способом, поскольку в идеале машина должна оставаться в рабочем состоянии до перезагрузки в новую ОС.


Итак, для каждого сервера я планирую (другие предложения приветствуются) сделать следующее:

  1. Сократите текущие root-файлы deb 7 с помощью resize2fs до размера, немного меньшего 1/2 размера раздела
  2. Сократите раздел, чтобы очистить половину диска
  3. Разбить освободившееся пространство (/, /home, swap) и установить LVM2
    (создать VG, LV и т. д.) и Debian 9

Моя проблема в том, что resize2fs может только сжать ext4 fs, если он отключен. Поэтому идея состоит в том, чтобы использовать образ initrd или initramfs для вызова resize2fs на размонтированном /dev /sda1 во время последовательности загрузки GRUB2.

Я создал свой собственный образ initrd, содержащий статический двоичный файл resize2fs и сценарий оболочки, который его вызывает (и выполняет другие проверки и т.д.), Но мне кажется, что я наткнулся на препятствие, пытаясь записать правильную запись в файл grub.cfg, чтобы сделать он монтирует мой образ initrd и выполняет сценарий изменения размера на размонтированном /dev /sda1.

Итак, мой вопрос :

Какой пункт меню grub.cfg мне нужно написать, чтобы загрузить мой собственный образ initrd, содержащий мой скрипт /bin/resize.sh, а затем выполнить его (/bin/resize.sh)?

0