перенос Linux на новый жёсткий диск (на примере Suse Linux)

Полезные советы и программы от пользователей нашего форума.

Модератор: Модераторы разделов

Ответить
Аватара пользователя
kasak
Сообщения: 893
ОС: OpenBSD
Контактная информация:

перенос Linux на новый жёсткий диск

Сообщение kasak »

Статья рассчитана на новичков в мире Linux но уже более менее знакомых с системой.

Допустим ситуацию, ваш жёсткий диск стал потихоньку кряхтеть и трещать и вы чувствуете что ему уже скоро крышка. Или вы просто хотите перенести систему на другой более вместительный жёсткий диск.
И конечно не хочется навредить системе и оборудованию а сделать всё грамотно. Ответ на вопрос "как это сделать грамотно?" представлен ниже.

Сначала подключаем новый 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> 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 файла (удивительно, да? :D ) (hd0) это то устройство на которое будет производится установка загрузчика (в нашем случае это mbr первого диска). (hd0,0) это то устройство на котором граб будет искать stage
Итак загрузчик установлен. Выйдите из граба коммандой

Код: Выделить всё

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. Неумелое обращение с ней может привести к нарушенной работоспособности диска.
Linux kasakoff 5.10.7-200.fc33.x86_64 #1 SMP Tue Jan 12 20:20:11 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Спасибо сказали:
Kondrat
Сообщения: 223
ОС: И снова Федора

Re: перенос Linux на новый жёсткий диск

Сообщение Kondrat »

Небольшое дополнение для тех, у кого загрузчиком стоит lilo. Конфигурационный файл для него /etc/lilo.conf. После его правки обязательно выполните команду lilo (или /sbin/lilo, в зависимости от дистрибутива), иначе изменения не будут приняты.
Ёж - птица гордая: пока не пнёшь, не полетит.
Спасибо сказали:
vektory
Сообщения: 11
ОС: Ubuntu 7.10

Re: перенос Linux на новый жёсткий диск

Сообщение vektory »

Маленькое дополнение из своего опыта: не знаю почему, но Ubuntu нужно монтировать корневой раздел именно через UUID. Иначе процесс загрузки замирает после определения оборудования :wacko:
Потратил из-за этой особенности два дня, прежде, чем допёр вбить в fstab'е UUID корневого раздела :(
Спасибо сказали:
FlySnake
Сообщения: 992
ОС: openSUSE
Контактная информация:

Re: перенос Linux на новый жёсткий диск

Сообщение FlySnake »

Ещё дополнение касаемо openSUSE 10.3 (возможно и в других дистрах, но проверено 2 раза именно на ней) fstab и дисков by-id.

Код: Выделить всё

ls /dev/disk/by-id
позволяет узнать те самые id дисков, но после ручного добавления этих разделов в fstab всё равно почему-то система ругается на неверный id и предлагает вернутся к старому, а так же при попытке обновления системы с дистрибутива не верно определяет разделы. Видимо связано стем, что при копировании системы копируется и /dev/disk/*, где остается старый диск. Решение: указать в fstab разделы по-старинке, то бишь /dev/sda1, /dev/sda2, и тд.
Спасибо сказали:
Аватара пользователя
Is_kander
Сообщения: 143
Статус: Дарт Мануал
ОС: Gentoo Linux ( 2.6.x )
Контактная информация:

Re: перенос Linux на новый жёсткий диск

Сообщение Is_kander »

Это все конечно хорошо - но случай описан достаточно зажатый - что делать если вы не просто меняете винчестер, но и и обновляете материнку, проц, озу и тд и тп?
Новая установка?
А если используете OpenSource дист?
Мне часто приходится устанавливать генту - оно как известно собирается под конкретную систему. Сейчас пишу систему портирования установленной генты под другую архитектуру (копирование набора зависимостей установленных пакетов и пересборка самых критичных из них) Пока сырое все, но зато на автомате ставится в течении часов десяти без участия одмина
В Gentoo и скорость света на 13% больше
Спасибо сказали:
FlySnake
Сообщения: 992
ОС: openSUSE
Контактная информация:

Re: перенос Linux на новый жёсткий диск

Сообщение FlySnake »

Is_kander писал(а):
13.05.2008 19:54
Это все конечно хорошо - но случай описан достаточно зажатый - что делать если вы не просто меняете винчестер, но и и обновляете материнку, проц, озу и тд и тп?
Новая установка?

В SUSE - обновление без модификации пакетов. Остальное всё (драйвера, загрузчик) она разруливает при обновлении системы с диска с дистрибутивом. Тут ведь на примере SUSE :)
Спасибо сказали:
Аватара пользователя
Is_kander
Сообщения: 143
Статус: Дарт Мануал
ОС: Gentoo Linux ( 2.6.x )
Контактная информация:

Re: перенос Linux на новый жёсткий диск

Сообщение Is_kander »

FlySnake писал(а):
14.05.2008 00:07
Is_kander писал(а):
13.05.2008 19:54
Это все конечно хорошо - но случай описан достаточно зажатый - что делать если вы не просто меняете винчестер, но и и обновляете материнку, проц, озу и тд и тп?
Новая установка?

В SUSE - обновление без модификации пакетов. Остальное всё (драйвера, загрузчик) она разруливает при обновлении системы с диска с дистрибутивом. Тут ведь на примере SUSE :)


А что значит "без модификации"? Убейте меня, но плохо представляю себе хорошо работающий лин при переносе но без модификаций. Неужели ничего не обновляется? glibc, texinfo, m4 ???
В Gentoo и скорость света на 13% больше
Спасибо сказали:
alexotmp
Сообщения: 96
ОС: OpenSUSE 11.2

Re: перенос Linux на новый жёсткий диск

Сообщение alexotmp »

недавно переносил - все по инструкции, но не работает(тож suse),
причина: /boot/grub/device.map (в lilo по-моему тоже подобный файл есть)

Вообщем, будьте бдительны, проверяйте содержимое:
/boot/grub/device.map
/etc/fstab
/boot/grub/menu.lst
Спасибо сказали:
GiNeR
Сообщения: 64
ОС: Ubuntu
Контактная информация:

Re: перенос Linux на новый жёсткий диск

Сообщение GiNeR »

Is_kander писал(а):
19.05.2008 15:23
FlySnake писал(а):
14.05.2008 00:07
Is_kander писал(а):
13.05.2008 19:54
Это все конечно хорошо - но случай описан достаточно зажатый - что делать если вы не просто меняете винчестер, но и и обновляете материнку, проц, озу и тд и тп?
Новая установка?

В SUSE - обновление без модификации пакетов. Остальное всё (драйвера, загрузчик) она разруливает при обновлении системы с диска с дистрибутивом. Тут ведь на примере SUSE :)


А что значит "без модификации"? Убейте меня, но плохо представляю себе хорошо работающий лин при переносе но без модификаций. Неужели ничего не обновляется? glibc, texinfo, m4 ???

Именно так. В linux все драйвера подгружаются на лету, а библиотеки к железу отношения никакого не имеют.
PS: это верно для бинарных дистрибутивов и может не всегда работать в source based.
Спасибо сказали:
Аватара пользователя
Is_kander
Сообщения: 143
Статус: Дарт Мануал
ОС: Gentoo Linux ( 2.6.x )
Контактная информация:

Re: перенос Linux на новый жёсткий диск

Сообщение Is_kander »

Именно так. В linux все драйвера подгружаются на лету, а библиотеки к железу отношения никакого не имеют.
PS: это верно для бинарных дистрибутивов и может не всегда работать в source based.


Ну да, только если быть увереным что либы собраны с поддержкой всего-всего!
В Gentoo и скорость света на 13% больше
Спасибо сказали:
Ответить