Я знаю, что в некоторых обстоятельствах может быть сложно перенести установку Windows с одного компьютера на другой (физически переместить жесткий диск), но как это работает в Linux? Разве большинство модулей драйверов не загружаются при загрузке? Так что теоретически это будет такой уж проблемой?
Очевидно, что конфигурации xorg изменятся, а фирменные драйверы ATI и т. п. придется перекомпилировать (возможно?). Есть ли в этом что-то большее, чем я думаю?
Предположим, что оба компьютера относятся к одной эпохе, например, оба с процессорами i7, но немного различаются по аппаратному обеспечению.
Обновление:
Спасибо за ответы. Это в основном для моего собственного любопытства. У меня на работе установлена и работает система Linux, но со временем я хотел бы перейти на компьютер, в который можно поставить две видеокарты, чтобы я мог использовать больше двух мониторов. Но не в ближайшее время.
решение1
Перенос или клонирование установки Linux довольно прост, если исходный и целевой процессоры имеют одинаковую архитектуру (например, оба x86, оба x64, оба arm…).
Движущийся
При перемещении вам придется позаботиться о зависимостях оборудования. Однако большинство пользователей не столкнутся ни с какими трудностями, кроме xorg.conf
(и даже в этом случае современные дистрибутивы, как правило, не нуждаются в этом) и, возможно, загрузчика.
Если конфигурация диска отличается, вам может потребоваться перенастроитьзагрузчикитаблицы файловой системы(
/etc/fstab
,/etc/crypttab
если вы используете криптографию,/etc/mdadm.conf
если вы используете md RAID). Для загрузчика самый простой способ — вставить диск в новую машину, загрузить ваш дистрибутив с live CD/USB и использовать его инструмент восстановления загрузчика.Обратите внимание, что если вы копируете данные, а не физически перемещаете диск (например, если одна или обе системы имеют двойную загрузку с Windows), быстрее и проще копировать целые разделы (с помощью (G)Parted или
dd
).Если у вас есть
xorg.conf
файл для объявления параметров, связанных с дисплеем (например, в отношении фирменного драйвера), его необходимо будет изменить, если целевая система имеет другую графическую карту или другую настройку монитора. Вам также следует установитьфирменный драйвердля видеокарты целевой системы перед перемещением, если применимо.Если вы заявилипараметры модуляили черные списки в
/etc/modprobe.d
, возможно, их необходимо скорректировать для целевой системы.
Клонирование
Клонирование установки подразумевает те же проблемы с оборудованием, что и перенос, но есть еще несколько вещей, о которых следует позаботиться, чтобы придать новой машине новую идентификацию.
Отредактируйте , чтобы дать новой машине новое имя. Найдите другие вхождения имени хоста в . Обычные местоположения: (псевдоним для 127.0.0.1) и /или другая конфигурация почтовой системы.
/etc/hostname
/etc
/etc/hosts
/etc/mailname
Регенерироватьключ хоста ssh.
Внесите необходимые изменения вконфигурация сети(например, статический IP-адрес).
Измените UUID томов RAID (не обязательно, но рекомендуется во избежание путаницы), например,
mdadm -U uuid
.
Смотрите такжепошаговое руководство по клонированию, ориентированное на Ubuntu.
Моя текущая установка на настольном компьютере была клонирована с предыдущей путем отключения одного из двух зеркальных дисков RAID-1, перемещения его в новый компьютер, создания тома RAID-1 на уже имеющемся диске, повторной синхронизации зеркала и внесения описанных выше изменений, где это применимо.
решение2
Я не уверен, что это ответ на ваш вопрос, но обычно вы делаете ровно наоборот — перемещаете папку пользователя и переустанавливаете все. Теоретически все ваши настройки и индивидуальные файлы конфигурации должны находиться в папке пользователя, так что это единственное, что вам действительно нужно перенести.
Некоторые менеджеры пакетов позволяют вывести список всех установленных пакетов (Debian/Ubuntu — dpkg --list
, Gentoo — /etc/world
, и т. д.), поэтому вы можете просто:
- Установите базовый дистрибутив на новую систему
- Скажите ему: «Установи все пакеты, которые были на другом компьютере».
- Скопируйте вашу пользовательскую папку
И в итоге вы получите функционально идентичную систему.
решение3
Действительно, в то время как в Windows практически невозможно перенести установку на новый ПК, просто скопировав содержимое жесткого диска или переключив жесткий диск между ПК, в Linux это работает на удивление хорошо. Я перешел с Thinkpad R52 на Thinkpad T400, просто скопировав содержимое моего старого жесткого диска на новый (поместив старый во внешний корпус, подключенный через USB, и скопировав все с Gparted-Live-CD). Все, что мне оставалось сделать после этого, это вручную поместить Grub в MBR и загрузиться. У меня все по-прежнему работало.
Как сказал Майкл, обычно новый ПК — это хорошая возможность избавиться от хлама, накопившегося со временем, однако иногда вам просто нужно быстро снова приступить к работе, и тогда простое копирование содержимого жесткого диска отлично работает с Linux, поскольку все драйверы, включенные в ядро, доступны ядру без установки. В настоящее время драйверы загружаются автоматически, а не вручную указываются в modprobe.conf, и даже xorg автоматически настраивается для меня.
Проблемы могли возникнуть только в том случае, если вам пришлось вручную настраивать драйверы на старом ПК (например, системы RAID, фирменные графические драйверы и т. д.).
решение4
Контур
Недавно я перенес установку Arch Linux на другой диск, который былменьшечем оригинальный диск.
Оригинальный диск использовал только один раздел, что упрощало вещи. Если у вас есть загрузочный раздел, отдельный от корневого раздела,вот ответэто может вам помочь.
Шаги были следующими:
- Сделайте резервную копию данных.
- Создайте на целевом диске раздел, содержащий файловую систему ext4.
- Скопируйте все данные из исходного раздела в целевой раздел.
- УстановитьGRUBв качестве загрузчика на целевом диске.
Подсказки
Подсказка, прежде чем мы начнем: чтобы определить пути моих подключенных устройств (например, /dev/sdb
) и вообще следить за состоянием устройств, а также разделов, я используюwatch
в сочетании сlsblk
:
watch lsblk -o tran,name,model,fstype,label,mountpoints,fssize,fsavail,fsused,fsuse%
Он обновляется каждые две секунды и выдает следующий вывод:
TRAN NAME MODEL FSTYPE LABEL MOUNTPOINTS FSSIZE FSAVAIL FSUSED FSUSE%
sata sda SanDisk SSD PLUS 1000GB
├─sda1 ext4 VM partition /sda1 108G 50G 53.4G 49%
└─sda3 ext4 / 808G 561.3G 205.7G 25%
usb sdb SABRENT
└─sdb1 ext4 new_daedalus /run/media/me/new_daedalus 29.2G 25.3G 2.4G 8%
sata sr0 MATSHITADVD-RAM UJ8A2
Поскольку мы собираемся копировать содержимое одного раздела на другой, будет хорошей идеей избавиться от хлама, который занимает много места: проверьте исходный раздел с помощьюncdu
для каталогов, содержащих наибольшее количество данных, и удалите или переместите их, если это возможно.
Еще один момент: я использую адаптеры SATA-USB, такие какэтидля подключения исходного и целевого дисков к моему компьютеру.
Подробности
Предположим, что вы создали резервную копию своих данных и ваш целевой диск находится по адресу /dev/sdb
, давайте рассмотрим подробнее:
Создайте на целевом диске раздел, содержащий файловую систему ext4:
Скопируйте все данные из исходного раздела в целевой раздел:
- Далее предполагается, что и старый, и новый разделы смонтированы:
sudo rsync -a --hard-links --delete --progress --human-readable --stats /run/media/me/old_partition/ /run/media/me/new_partition/
- я использовал
rsync
здесь. Вы также можете использовать good old,cp
чтобы добиться того же самого:sudo cp --recursive -a /run/media/me/old_partition/* /run/media/me/new_partition/
- Далее предполагается, что и старый, и новый разделы смонтированы:
УстановитьGRUBв качестве загрузчика на целевом диске:
- Добавьте в новый раздел виртуальные файловые системы, необходимые для работы
grub-install
:sudo mount --bind /dev /run/media/me/new_partition/dev; sudo mount --bind /proc /run/media/me/new_partition/proc
- Сделайте корень нового раздела текущим корнем:
sudo chroot /run/media/me/new_partition/
- Установите GRUB на целевой диск (см.этотдля получения более подробной информации о том, что здесь происходит):
grub-install /dev/sdb; grub-mkconfig -o /boot/grub/grub.cfg
- Выход
chroot
с помощью Ctrl+ dилиexit
- Размонтируйте виртуальные файловые системы и сам раздел:
sudo umount --recursive /run/media/me/new_partition
- Добавьте в новый раздел виртуальные файловые системы, необходимые для работы
Вот и все, теперь вы можете использовать установленную new_partition
на диске систему Linux /dev/sdb
.