Когда возникает необходимость перенести рабочую систему на новый раздел или жесткий диск, многие, наверняка, выберут просто инсталляцию с нуля и копирование конфигов. Однако, такой подход не слишком практичен. Во-первых, это время. Нужно прожигать инсталляционный образ, тысячу раз перезагружаться и т.д. Да и образ не всегда бывает под рукой. Во-вторых, все-таки придется доустановить нужные пакеты и вообще привести систему в порядок. Гораздо быстрее и практичнее просто перенести уже рабочую систему на новое место со всеми пакетами/настройками и т.п. Это только звучит страшно, но на самом деле с помощью обычных gnu-утилит делается очень легко, быстро и просто.
1. Приготовления
Во-первых, советую весь процесс выполнять с Live CD, а не непосредственно с рабочей системы (хотя я делал и так без проблем). Это исключит вероятность несоответствия исходных и конечных данных.
Во-вторых, следует создать все нужные разделы для нового расположения системы.
И, в-третьих, примонтировать те разделы, информацию с которых предстоит переносить и те, на которые будет произведен перенос. Предположим, что исходный раздел - /media/old_root, а конечный - /media/new_root.
2. Процесс
В нижеследующих командах подразумевается, что у вас есть полный доступ к разделам или вы знаете, что такое sudo.
1) cp -xpr /media/old_root /media/new_root
Тем самым мы просто скопируем исходный корень в конечный, со всеми атрибутами исходных файлов и директорий, а также будем держаться в пределах одной файловой системы (то есть, если у вас что-то примонтировано в /media/old_root/mnt/disk - оно не скопируется). Процесс длительный. Можно добавить в начало команды time, чтобы в конце узнать, сколько длилось копирование :)
2) mount --bind /dev /media/new_root/dev
Монтируем текущий /dev в новый раздел, чтобы новая система "видела" установленные устройства. Это нужно для корректной установки загрузчика.
3) chroot /media/new_root
Входим в окружение новой системы.
4) mount -t proc proc /proc
Монтируем файловую систему /proc.
5) mkswap /dev/new_swap
Говорим системе, где находится новый, предварительно созданный swap-раздел. Например, /dev/sda3.
6) grub -> root(hd0,0) -> setup(hd0)
Этими командами мы установим загрузчик grub (директория которого находится в hd0,0) на новый диск hd0 (т.е., в MBR). Выполнять это следует только при переносе системы на новый HDD. При переносе просто на другой раздел текущего HDD старый загрузчик останется в рабочем состоянии и нужно будет только подправить его конфиг.
7) nano /boot/grub/menu.lst
Подправим конфиг загрузчика - теперь он должен указывать на свежесозданные разделы. Если вы переносите систему только на другой раздел, то править нужно старый menu.lst - /media/old_root/boot/grub/menu.lst
8) nano /etc/fstab
Также необходимо подправить конфиг монтируемых при загрузке устройств.
Всё готово. Советую не удалять сразу старый раздел, а предварительно убедиться в работоспособности нового.
3. Дополнения
1) Прописывать новые разделы в menu.lst и fstab лучше всего по UUID (Universally Unique Identifier) этих разделов. Это исключит вероятность того, что именование ваших разделов будет отличным от текущего и в любом случае ядро сможет правильно работать именно с нужными вам разделами. Узнать идентификаторы можно командой ls -l /dev/disk/by-uuid/.
В menu.lst формат будет таким:kernel /vmlinuz26 root=/dev/disk/by-uuid/1ce08b86-b671-4013-beda-2d521ab187ec ro quiet vga=794 splash
А для fstab таким:UUID=1ce08b86-b671-4013-beda-2d521ab187ec / ext3 defaults 0 1
2) В Arch Linux я столкнулся с проблемой при перезагрузке:kinit: opening console: no such file or directory
В данном случае достаточно выполнить данную команду:mknod -m 600 /dev/console c 5 1
Выполнять, естественно, надо в chroot. Или можно просто скопировать этот файл со старой системы (cp -a).
Также рекомендую пересоздать загрузочный образ:mkinitcpio -p kernel26
из chroot.
4. Вот и всё
Перезагружаемся, проверяем всё ли работает.
???
PROFIT!
При написании данного очерка использовались материалы из данного топика на forum.ubuntu.ru А также 4 жестких диска и дистрибутивы Arch Linux "Overlord" и Debian Etch. Ни один из них в результате не пострадал.
16 нояб. 2008 г.
Перенос системы на другой раздел
Подписаться на:
Комментарии к сообщению (Atom)
3 комментария:
Как раз в тему, переразбил винт и надо перенести корневой раздел на другой, а то он у меня самый последний, не хорошо как то))
Еще по теме вопрос, весь этот процесс происходит с запущенного с livecd?
Можно и с livecd (даже правильнее). Но я делал прямо с рабочей системы.
Очень помог твой пост! Большое спасибо!
Отправить комментарий