20.08.13

Как перенести установленный linux с одного винта на другой? Как создать образ установленного linux?

Тут существует два пути.
Сожмем в архив все нужные нам файлы, сохраняя права (tar)
  • Грузимся со спасательного диска (ВАЖНО! Убедитесь что tar на спасательном диске является настоящим tar, если используемый tar на самом деле является минимальной версией из busybox , то он может некорректно сохранять права на файлы, в частности suid-bit).
  • Бэкапим весь корень (/) за исключением некоторых папок /proc, /sys и /tmp, например:
          root@localhost# tar cvpzf /mnt/backup/all.tar.gz / \
                          --exclude /proc --exclude /sys \ 
                          --exclude /tmp --exclude /var/tmp \
                          --exclude /usr/tmp --exclude /mnt
    
  • Создаем на новом винте нужные нам разделы, создаем на них нужную файловую систему и распаковываем архив.
  • Восстанавливаем загрузчик
Используем dd
  • Грузимся со спасательного диска.
  • Далее создаем образ винта (если надо) или каждого раздела в отдельности.
          root@localhost# dd if=/dev/hda of=/dev/hdb bs=10M
    
и мы перенесем образ на другой винт или
      root@localhost# dd if=/dev/hda of=/mnt/backup/myhda.img bs=10M
и тогда образ попадет в файл. Кстати, можно сэкономить место и сделать так:
      root@localhost# dd if=/dev/disk | gzip - | dd of=/mnt/backup/myhda.gz
Если есть винт такой же, как и тот, с которого копировали, делаем просто
root@localhost# dd if=/mnt/backup/myhda.img of=/dev/disk bs=10M
Если винт больше, то неоднократно советовалось создать на нем раздел примерно одного размера, что и старый винт, после чего восстановить образ на этот раздел. Насколько действенен этот метод, неизвестно.
Вместо tar в вышеприведенном способе многие рекомендуют использовать cpio.

 Я делал так. Допустим новый диск /dev/sda и неважно чистый он или нет.
# cfdisk /dev/sda
Там удалял все разделы и создавал один единственный под корень (можно и свап если надо). Можно заюзать fdisk, многим именно он нравится.
Затем накатывал файловую систему, монтировал ее например в /mnt и распаковывал туда систему
# mkfs.ext4 /dev/sda
# mount /dev/sda1 /mnt
# cd /mnt
# tar xzf /path/system.tgz 
Ну и напоследок проверить fstab и заинсталить граб:
# arch-chroot /mnt
# grub-mkconfig -o /boot/grub/grub.cfg
# grub-install /dev/sda

После этого системы уже загружалась. Честно говоря не помню чтобы я пересобирал инитрамфс, может просто забыл.
У меня граб таких ошибок никогда не выкидывал, поэтому даже не знаю что подсказать, но попробуй без этих хитрых манипуляций которые ты описал выше.
С автоматизацией этого процесса, я думаю, также проблем быть не должно.