Если инфорация оказалась интересна и/или полезна, не побрезгуйте, оставьте комментарий ;)

понедельник, 25 февраля 2008 г.

Как перенести UBUNTU на другой диск

(не удаляя старого из системы, то есть во сменой путей).

1. Устанавливаем новый диск. Загружаемся.

2. Командой fdisk создаем на новом диске разделы нужного размера. Не обязательно, чтобы они совпадали с исходными. Ubuntu обычно ставится с двумя разделами: корень (/) и swap. Если /home был отдельно, то можно создать его. Если пока нет, но планируется, то его можно сразу не создать. Свап и корень делаем основными (primary) разделами, /home и остальные потом кладем в extended (основный еще могут пригодиться для Windows). Пусть новый диск - это /dev/sda. тогда имеем 2 раздела: swap (/dev/sda1) и корень (/dev/sda2). Если к тому нет особых показаний, не стоит делать корень через чур большим, в последствии отделить /home. Тогда при переустановке системы не придется думать о спасении данных. Также в /home можно настроить резервное копирование настроек из корня.

3. Делаем файловые системы::
sudo mkswap /dev/sda1
sudo mke2fs -j /dev/sda2
Ставим метку тома:
sudo e2label /dev/sda2 /

4. Монтируем только что созданные файловые системы в какой-нибудь каталог, например в /mnt/new:
sudo mkdir /mnt/new - делаем каталог для монтирования раздела нового корня
sudo mount /dev/sdab2 /mnt/new - монтируем туда новый корневой раздел
sudo mkdir /mnt/new/proc - создаем каталог для нового /proc
sudo mkdir /mnt/new/tmp.- делаем новый /tmp
sudo mkdir /mnt/new/sys

Ставим права доступа, как у директорий на их аналогов на старом диске.

5. Переносим данные со старого диска на новый (кроме каталогов /proc, /tmp, /sys) на /mnt/new. Внимание! Список каталогов может отличаться от моего:
sudo star cf - bin boot cdrom dev etc initrd initrd.img lib list-c list-l lost+found media opt root sbin srv usr var vmlinuz | (cd /mnt/new; sudo star xvf -)
Команда star позволяет переносить расширенные права на каталоги и файлы. В принципе, можно использовать и обычный tar.

6. Теперь надо очистить каталоги /mnt/new/dev/shm and /mnt/new/dev/pts.
Команда sudo мне не помогала, так как содержимое запрещено для просмотра обычным смертным. Поэтому:
$sudo su
# cd /mnt/new/dev/shm
# rm -r ./*
# cd /mnt/new/dev/pts
# rm -r ./*

7. Ставим загрузчик:
grub-install --root-directory=/mnt/new --recheck /dev/sda

Запоминаем название диска с точки зрения grub. У меня это hd2

8. Теперь надо исправить UUID для разделов.
Исправляем два файла: /mnt/new/etc/fstab и /mnt/new/boot/grub/menu.lst
Как узнать UUID. Выполняем команду:
$ ls -l /dev/disk/by-uuid/
среди разделов находим наши новые корень и свап.
Далее открываем /mnt/new/boot/grub/menu.lst
$ sudo vim /mnt/new/boot/grub/menu.lst
Ищем пункты меню, исправляем UUID корня.
Исправляем путь к загрузочному (корневому) разделу (известен из пункта 7). У меня это строка root (hd2,0)

Исправляем в /mnt/new/etc/fstab пути к корню и свапу
sudo vim /mnt/new/etc/fstab

Клавиши для vim:
удалить символ - x
перейти в режим вставки - i
выйти из режима вставки - Esc
заменить один символ - r
удалить строку - dd

9. Размонтируем новый раздел:
sudo umount /mnt/new

5 комментариев:

Сергей комментирует...

Спасибо за руководство, помогло. но в нем есть ошибки.
1. в п.8 надо поправить пути на смонтированный партишен, а то мы будем править на старом.
2. директориям tmp, sys и proc надо дать правильные права после создания, а то некоторые приложения отказываются работать (например KDE)

Сергей комментирует...

а, еще. в п.4 не указано, что надо создавать директорию sys

Евгений комментирует...

Сергей, спасибо за замечания. Надеюсь, я их правильно понял :).

Сергей комментирует...

да, теперь все правильно. теперь если действовать по этому руководству все будет работать сразу, а мне пришлось еще полчасика повозиться. самая засада была с правами на директории - не сразу догадался

Евгений комментирует...

У меня это в памяти не отразилось, может сделал, не задумываясь. Ибо все руководства в блоге составлены опытным путем. То, что самому требовалось.