Comments 23
Сколько руки не доходили с этим разобраться… Спасибо за труд!
grub-install сам включит всё необходимое, чтобы свои модули нашел груб.
а обновление initramfs зависит от дистрибутива — в некоторых всё лежит сразу, в некоторых сборка автомаизирован.
В дебиане достаточно сделать
sudo dpkg-reconfigure linux-image-`uname -r`
sudo dpkg-reconfigure linux-image-`uname -r`

Лучше update-initramfs -c -k all. Оно сразу для всех установленных ядер пересоздаст initrd.
Вопрос спорный. Есть 2 ядра (откуда там больше?), оба точно работали. Мы обновляем одно и пытаемся уйти в ребут. Если что ахтунг — есть резервное.
В моем случае, до переноса корневой ФС, надобности в initramfs не было.
После того, как корневая ФС переехала в LVM, без initramfs уже не обойтись.
Как я строю initramfs в gentoo, я описывать не стал. Это отдельная тема.
Если кратко, то мой initramfs состоит из трех частей
— статически собранного busybox
— статически собранного lvm
— скрипта загрузки init

Не проще ли было сразу создать новый раздел нужного размера и сделать туда rsync или dump/restore? dd работает очень неэффективно, копируя все блоки, в том числе свободные.
Последовательная запись/последовательное чтение зачастую работает в разы быстрее, чем беготня по файловой системе. И при загрузке диска >30-40% уже может быть быстее dd, чем rsync.
Да, действительно, в опубликованном варианте пробела нет.
Хотя в редакторе поста он есть.
Поправил (поставил строку в тэг pre)

Благодарю за комментарий.
Это ключевая команда всего поста!
Отлично.
Отдельное спасибо за подсказки о подводных камнях вроде cd перед pivot_root.
Статья хорошая, но, вообще говоря, эти «подводные камни» подробно разобраны в man pivot_root.
Хочу дополнить статью небольшим рецептом в тему. Отдельной статьи, вроде бы, не заслуживает. Это о том, как у меня начал сыпаться один из винтов на сервере, и я переносил Debian на новый корневой раздел. Копировать раздел при этом нельзя было. И ехать на площадку ну очень не хотелось.

1. на другом винте создал разделы для корня и swap и смонтировал их;
2. скачал debootstrap и с его помощью установил базовую систему в новый корень;
3. в новый корень смонтированы /proc, /sys, /dev и /dev/shm;
4. chroot в новый каталог и там с помощью aptitude доустановил пакеты с ядром, mkinitramfs и загрузчиком;
5. скопировал файлы passwd, group, shadow, pam.d, network/interfaces в новую систему;
6. поменял пароль рута, установил вручную timezone, hostname, установил пакет с локалями и сгенерировал нужные;
7. установил openssh-сервер, переписал все файлы с ключами и конфиги от него, проверил его работоспособность;
8. дописал в загрузку модулей ядра драйвер сетевушки;
9. lilo && sync && reboot -f
10. бил в бубен
«резеервное копирование никто не отменял!»

Уберите лишнюю «е», пожалуйста.
UFO landed and left these words here
Почти все останется без изменений.
Предположим, что Вы добавили диск /dev/sdb и на нем создали радел нужного размера /dev/sdb2 под mdraid.

Изменения к текущей инструкции (меняем шаги):
1. Создаем новый логический диск mdraid (пока на одном разделе /dev/sdb2)
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb2 missing
Смотрите, чтобы /dev/md0 был не меньше /dev/sda2.

6. Копируем корневую ФС с устройства /dev/sda2 в логический диск /dev/md0
dd if=/dev/sda2 of=/dev/md0 bs=8M

13. Добавляем в mdraid второй диск (/dev/sda2)
Переразмечаем разделы на /dev/sda.
Важно чтобы /dev/sda2 получился равным (или не меньше) /dev/sdb2.
mdadm --manage /dev/md0 --add /dev/sda2
а как Вы считаете, не проще бы было использовать встроенную в lvm функцию зеркалирования?

lvcreate -L 3g -m1 -n root sys
Не будет ли оно работать слишком медленно? Снапшоты производительность просаживают не дай бог.
Only those users with full accounts are able to leave comments. Log in, please.