Контекст:
- несколько удаленных 32-битных серверов Debian 7
- доступно только через SSH
- больше половины дисков пусто
- 1 раздел диска на сервер
- небольшое окно обслуживания, не может быть долго
- файловые системы ext4
- ПРИМЕЧАНИЕ. Я занимаюсь разработкой своего решения с использованием виртуальной машины VirtualBox, но серверы работают без проблем.
Цель: обновить ОС до Debian 9+ неразрушающим способом, поскольку в идеале машина должна оставаться в рабочем состоянии до перезагрузки в новую ОС.
Итак, для каждого сервера я планирую (другие предложения приветствуются) сделать следующее:
- Сократите текущие root-файлы deb 7 с помощью resize2fs до размера, немного меньшего 1/2 размера раздела
- Сократите раздел, чтобы очистить половину диска
- Разбить освободившееся пространство (/, /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)?