Допустим ситуацию, ваш жёсткий диск стал потихоньку кряхтеть и трещать и вы чувствуете что ему уже скоро крышка. Или вы просто хотите перенести систему на другой более вместительный жёсткий диск.
И конечно не хочется навредить системе и оборудованию а сделать всё грамотно. Ответ на вопрос "как это сделать грамотно?" представлен ниже.
Сначала подключаем новый hdd и с помощью cfdisk разделим его на нужные разделы ( в моём случае / и swap)
и сделаем файловую систему для / коммандой
Код: Выделить всё
# mkfs.ext3 /dev/sdc1 #Имя диска и раздел конечно указываем свои
и своп коммандой
Код: Выделить всё
# mkswap /dev/sdc2
Конечно знащие люди захотят спросить зачем я сделал своп в конце диска. Я почти не использую своп, пусть там и лежит. Конечно для компьютеров с недостаточным количеством памяти лучше использовать своп и делать его в начале диска.
далее нужно примонтировать наш новый раздел. в сюсе в директории /mnt обычно пусто. поэтому есть смысл создать там директорию и монтировать раздел в неё
Код: Выделить всё
# mkdir /mnt/temp
# mount /dev/sdc1 /mnt/temp
И копируем наш Linux на новый жёсткий диск
Код: Выделить всё
# cp -ax / /mnt/temp
Объясню смысл комманды:
опция -a нужна для того чтобы при копировании копировались ссылки, а так же сохранялись владельцы и права доступа к файлам, а так же временные характеристики файлов.
Опция -x нужна чтобы оставаться в пределах одной файловой системы. Например если у нас в /mnt/ смонтирован ещё один HDD большого объёма то cp не будет копировать всё что там есть на новый hdd (как нам и нужно)
Копирование может занять время. Особенно когда файлы копируются со всеми свойствами и привилегиями.
Всё. Копирование закончено. Теперь нужно Настроить загрузчик. Я предлагаю не мудрствовать лукаво а сразу вставить новый HDD и установить загрузчик через диск Suse (или другой подходящий диск) Или любой LiveCD.
Поставим новый HDD на место старого я предпологаю что будет использоваться SATA потому что использовать технологии из политехнического и полиэнтологического музея не целесообразно.
В моём случае (я заменяю HDD) надо воткнуть новый HDD в разьём SATA0 на материнской плате.
Далее грузимся с Suse DVD и в загрузчике выбираем опцию Rescue system
дожидаемся загрузки системы и далее начинаем колдовать. Вводим логин root и нам предлагают коммандную строку. прежде всего нужно смонтировать новый HDD. поскольку Rescue system даёт над только read only filesystem монтируем его прямо в /mnt
Код: Выделить всё
# mount /dev/sda1 /mnt # Тут новый HDD уже подключён первым и буква диска теперь a.
далее нам понадобятся устройства
Код: Выделить всё
# mount --bind /dev /mnt/dev
и переходим в наш линукс
Код: Выделить всё
# chroot /mnt
Если всё сделано правильно мы теперь можем работать с нашей системой. нам нужно поставить grub.
заходим в него
Код: Выделить всё
# grub
и вводим комманду
Код: Выделить всё
grub> setup --stage2=/boot/grub/stage2 (hd0) (hd0,0)
Если у вас система стоит на sda2 то в конце замените (hd0,0) на (hd0,1)
вот как граб видит наши HDD :
Код: Выделить всё
(hd0) -sda
(hd0,0) - sda1
(hd0,1) - sda2
(hd1) - sdb
(hd1,0) - sdb1
(hd1,1) - sdb2
и так далее.
Объясню смысл комманды. --stage2 указывает на расположение stage2 файла (удивительно, да?

Итак загрузчик установлен. Выйдите из граба коммандой
Код: Выделить всё
grub> quit
Далле во избежание лишних беспокойств сразу проверьте файлы /boot/grub/menu.lst и /etc/fstab.
Вы могли изменить порядок следования разделов. соответсвенно проверьте чтобы в файле /boot/grub/menu.lst все опции
root они должны указывать на ваш / раздел (таблица выше вам в помощь)
опции root=/dev/sd* ядра тоже должны указывать на ваш / раздел. опции resume=/dev/sd* должны указывать на swap раздел.
в файле fstab тоже проверьте соответствие всех точек монтирования и при необходимости удалите несуществующий диск (который мог появится когда мы первый раз вставили новый HDD и уже нам не нужен)
Вот и всё. Теперь можно со спокойной душой перезагружаться и использовать полноценно новую систему.
Примечания:
Код: Выделить всё
1) В данной статье все префиксы # и grub> являются просто приглашением к вводу комманд. Их вводить не нужно.
2) Эта статья сделана на примере suse. конфигурационные файлы могут незначительно менятся в других дистрибутивах.
3) Пользователи ubuntu могут испытывать затруднения при редактировании /etc/fstab. очень рекомендую хотя бы распечатать первоначальный /etc/fstab. а так же внимательно рассмотреть uuid или id дисков. Насколько я помню в ubuntu /etc/fstab пишется весьма уникальным способом.
4) не копируйте систему коммандой dd. Неумелое обращение с ней может привести к нарушенной работоспособности диска.