Comments
23
Спасибо, подход с pivotroot интересен.
Сколько руки не доходили с этим разобраться… Спасибо за труд!
Вы не могли бы расширить пункт 12.3?
grub-install сам включит всё необходимое, чтобы свои модули нашел груб.
а обновление initramfs зависит от дистрибутива — в некоторых всё лежит сразу, в некоторых сборка автомаизирован.
В дебиане достаточно сделать
sudo dpkg-reconfigure linux-image-`uname -r`
а обновление 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
После того, как корневая ФС переехала в LVM, без initramfs уже не обойтись.
Как я строю initramfs в gentoo, я описывать не стал. Это отдельная тема.
Если кратко, то мой initramfs состоит из трех частей
— статически собранного busybox
— статически собранного lvm
— скрипта загрузки init
Это было страшно
Не проще ли было сразу создать новый раздел нужного размера и сделать туда rsync или dump/restore? dd работает очень неэффективно, копируя все блоки, в том числе свободные.
Последовательная запись/последовательное чтение зачастую работает в разы быстрее, чем беготня по файловой системе. И при загрузке диска >30-40% уже может быть быстее dd, чем rsync.
После pivot_root пробел пропущен.
Да, действительно, в опубликованном варианте пробела нет.
Хотя в редакторе поста он есть.
Поправил (поставил строку в тэг pre)
Благодарю за комментарий.
Это ключевая команда всего поста!
Хотя в редакторе поста он есть.
Поправил (поставил строку в тэг pre)
Благодарю за комментарий.
Это ключевая команда всего поста!
Я надеюсь, что Вы все это делали не в пятницу 13-го вечером?
Отлично.
Отдельное спасибо за подсказки о подводных камнях вроде cd перед pivot_root.
Отдельное спасибо за подсказки о подводных камнях вроде 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. бил в бубен
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. бил в бубен
«резеервное копирование никто не отменял!»
Уберите лишнюю «е», пожалуйста.
Уберите лишнюю «е», пожалуйста.
Поправил, спасибо
>перевод / в mdraid
нельзя ли подробнее об этом?
нельзя ли подробнее об этом?
Почти все останется без изменений.
Предположим, что Вы добавили диск /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
Предположим, что Вы добавили диск /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
lvcreate -L 3g -m1 -n root sys
Не будет ли оно работать слишком медленно? Снапшоты производительность просаживают не дай бог.
Only those users with full accounts are able to leave comments. Log in, please.
Удаленная замена корневой ФС в GNU/linux