Перенос Ubuntu на новый жесткий диск
В общем, подкупил я тут себе новый винт в ноутбук. К сожалению, у меня параллельный интерфейс, и максимально что смог найти под него - WD на 320 гектаров. Обидно, что для SATA за те же деньги покупается 500-тка... Но что делать - на ноуте у меня стояла 100-тка, которая уже трещала по всем швам. :-) Поэтому приобрел 320-тку и карман для 100-тки, чтобы польза от нее была какая-то. 95 енотов за новый винт, еще 10 за карман. Итого - 105$ убили сразу двух зайцев. Ноуту стало просторнее, и у меня появилась "бльшая флешка на 100 гигов". Все, с лирикой закончили.
На старом винте у меня дружно жили Windows XP и Ubuntu 8.10. С виндой попроще - ее я переносить не собирался, ибо решил на новый винт накатать "семерку". А вот Убунта у меня была вылизаная и настроенная. И ставить ее с нуля, а потом настраивать заново не было никакого желания. От Акрониса пришлось отказаться - не знаю почему, но он у меня показывает раздел с Убунтой как ошибочный. Перенести его дает, но вот поменять размеры при переносе не позволяет. Поэтому решил погуглить тему переноса системы другим способом. Начитавшись этого:
http://linuxforum.ru/index.php?showtopic=61987
http://inf.by/linux/210
http://ohmm.ru/posts/2627
решил не изобретать велосипед. Подсоединил 320-тку через USB посредством купленного кармана и запустил gparted. Новый винт увиделся системой, как sdb. Быренько создал разделы:
sdb1 - первичный для Windows 7 (форматнул в FAT32 - так просто, чтобы виделся как раздел, а не незанятое пространство. )
sdb2 - первичный для Ubuntu (/)
sdb3 - Linux swap
Остальное место отдал под расширенный раздел, в котором создал один логический диск (NTFS)
Далее, как учат умные люди, подмонтировал раздел для будущей Ubuntu в папку /mnt/temp, предварительно создав последнюю:
sudo mkdir /mnt/temp
sudo mount /dev/sdc1 /mnt/temp
Копируем наш Linux на новый жёсткий диск
sudo cp -ax / /mnt/temp
Опять же, ссылаясь на умных людей объясню смысл комманды:
опция -a нужна для того чтобы при копировании копировались ссылки, а так же сохранялись владельцы и права доступа к файлам, а так же временные характеристики файлов.
Опция -x нужна чтобы оставаться в пределах одной файловой системы. Например если у нас в /mnt/ смонтирован ещё один HDD большого объёма то cp не будет копировать всё что там есть на новый hdd (как нам и нужно)
Копирование может занять время. Особенно когда файлы копируются со всеми свойствами и привилегиями.
Теперь надо на приемном HDD поправить fstab, если необходимо (если вдруг вы СОВСЕМ ПО ДРУГОМУ разметили диск). А так же поправить menu.lst загрузчика GRUB.
В UBUNTU что в fstab , что в menu.lst все диски прописаны через UUID а не просто /dev/hda.
узнать какой у вашего диска UUID можно с помощью команды: ls -l /dev/disk/by-uuid , на выводе должно получиться что то вроде:
lrwxrwxrwx 1 root root 10 2008-02-17 17:45 78711a48-6776-4474-8fa8-87016aad83a2 -> ../../hda6 lrwxrwxrwx 1 root root 10 2008-02-17 17:45 83fded3d-37c4-4d85-a965-a7bbe326178a -> ../../hda7 lrwxrwxrwx 1 root root 10 2008-02-17 17:45 a60e482c-8260-48fb-a19e-f5f906d4d444 -> ../../hda8 lrwxrwxrwx 1 root root 10 2008-02-17 17:45 bc7607fe-3bf2-4bc1-adce-8ab749a271c9 -> ../../hda1 lrwxrwxrwx 1 root root 10 2008-02-17 17:45 cacd40ea-ac88-4143-b5d9-5cb477eeb85d -> ../../hda4 lrwxrwxrwx 1 root root 10 2008-02-17 17:45 d4404ea9-0a8e-4a4c-b72d-10a5edd697be -> ../../hda5
вот нам нужны как раз цифры «11815c66-5ae7-4497-9039-51de9adef6
в /boot/grub/menu.lst правим следующие строки:
# kopt=root=UUID=d4404ea9-0a8e-4a4c-b72d-1
kernel /vmlinuz-2.6.22-14-generic root=UUID=d4404ea9-0a8e-4a4c-b72d-10a5ed
и
kernel /vmlinuz-2.6.22-14-generic root=UUID=d4404ea9-0a8e-4a4c-b72d-10a5ed
Не забудьте тот факт, что хоть система и скопирована на диск, но она пока не умеет загружаться, потому что мы не установили загрузчик.
Делается это просто:
Берем установочный диск UBUNTU и грузимся. Монтируем наш раздел с Ubuntu. У меня он один (/). Я просто в графике сделал это через меню "Переход". Затем открываем терминал и вводим:
sudo grub
grub> setup --stage2=/boot/grub/stage2 (hd0) (hd0,1)
Если бы система у меня стояла на sda1 то в конце нужно заменить (hd0,1) на (hd0,0)
root (hd0,1) - т.к. Ubuntu у меня на втором по счету разделе
setup (hd0) - устанавливаем GRUB в mbr первого HDD.
вот как граб видит наши HDD :
(hd0) -sda
(hd0,0) - sda1
(hd0,1) - sda2
(hd1) - sdb
(hd1,0) - sdb1
(hd1,1) - sdb2
Объясню смысл комманды. --stage2 указывает на расположение stage2 файла.
(hd0) это то устройство на которое будет производится установка загрузчика (в нашем случае это mbr первого диска). (hd0,1) это то устройство на котором граб будет искать stage
Итак загрузчик установлен. Выйдите из граба коммандой quit.
Далле во избежание лишних беспокойств сразу проверьте файлы /boot/grub/menu.lst и /etc/fstab.
Вы могли изменить порядок следования разделов. соответсвенно проверьте чтобы в файле /boot/grub/menu.lst все опции
root они должны указывать на ваш / раздел (таблица выше вам в помощь)
опции root=/dev/sd* ядра тоже должны указывать на ваш / раздел. опции resume=/dev/sd* должны указывать на swap раздел.
в файле fstab тоже проверьте соответствие всех точек монтирования и при необходимости удалите несуществующий диск (который мог появится когда мы первый раз вставили новый HDD и уже нам не нужен)
Вот и всё. Теперь можно со спокойной душой перезагружаться и использовать полноценно новую систему.
Вот и все. Можно загрузится с нового жесткого диска, а если вам не повезло и загрузчик не установлен, то можно снова вернутся в LiveCD, если загрузчик сработал, но ошибка с путями то можно либо вернутся в LiveCD и скорректировать их, либо вписать напрямую в коммандной строке GRUB и скорректировать уже в загрузившейся полноценной системе.
После перезагрузки я увидел меню Граба и загрузил свою Убунту. Как будто тут и была. :-)
PS. После установки на первый раздел Windows 7, я, как и ожидал, лишился Граба в MBR - Вынь его затерла. Поэтому пришлось еще раз загрузиться с загрузочного диска с Ubuntu и восстановить статус-кво - т.е. вернуть GRUB на место. Перед этим в файле /boot/grub/menu.lst нужно научить GRUB загружать Windows.
Comments