Перенос всей установки Linux на другой диск
У меня есть Ubuntu 14.04 с множеством пакетов и всего, что связано с работой, и я очень ей доволен. Он установлен на моем основном SSD-накопителе емкостью 120 ГБ (я выбрал "/", когда установил Ubuntu, поэтому я считаю, что все должно быть на этом диске). Он отображается как /dev/sda
Теперь я добавил еще один SSD на мой компьютер, который является 240Gb. В данный момент у меня нет под рукой других носителей информации (например, внешний жесткий диск).
Поскольку новый накопитель на 240 ГБ, очевидно, имеет большую емкость и работает быстрее (более новое поколение, чем мой на 120 ГБ), я хочу перенести свой Linux на этот новый накопитель. Этот новый диск отображается как /dev/sdb, и на данный момент он не отформатирован или что-то еще (я буквально распаковал и вставил в мой компьютер прямо сейчас:P)
Как я могу безопасно переместить мою установку Linux на новый диск?
Я могу изменить кабель SATA, чтобы новый диск отображался как /dev/sda, если это необходимо.
Это вывод "fdisk -l", если это помогает:
Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders, total 234441648 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x00076d7a
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 226064383 113031168 83 Linux
/dev/sda2 226066430 234440703 4187137 5 Extended
Partition 2 does not start on physical sector boundary.
/dev/sda5 226066432 234440703 4187136 82 Linux swap / Solaris
Disk /dev/sdb: 240.1 GB, 240057409536 bytes
255 heads, 63 sectors/track, 29185 cylinders, total 468862128 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sdb doesn't contain a valid partition table
8 ответов
Вы можете использовать CLONEZILLA для этой цели.
Clonezilla - это бесплатный инструмент для создания образа и клонирования разделов и дисков, который можно использовать для резервного копирования всех ваших данных (целых дисков или разделов) с высокой степенью сжатия, а затем клонировать их обратно на жесткий диск, чтобы привести их в точно такое же состояние. Это быстрее, чем устанавливать ОС в большинстве случаев.
Загрузить Clonezilla стабильный ISO или прямой Загрузить clonezilla-live-2.4.6-25-amd64.iso
Создайте загрузочный (Live) USB с помощью Tuxboot 7.0.
Загрузиться с созданного Clonezilla носителя.
Теперь у вас есть много вариантов:
- Создайте образ только '/' (saveparts) и клонируйте его в любой раздел вашего другого SDD.
- Создайте образ полного диска (saveisk) и клонируйте его на свой новый SSD.
В вашем случае вы также можете использовать опцию "устройство-устройство", но я не знаком с ней.
Вы можете найти подробное руководство по Clonezilla здесь: http://clonezilla.org/
Это можно сделать несколькими способами. Но самый простой - просто скопировать все файлы со старого диска на новый.
Создайте раздел ext4 и раздел подкачки на новом диске.
Загрузиться с LiveUSB.
Смонтируйте старый раздел Ubuntu в некоторый каталог, смонтируйте новый в другой каталог.
Скопируйте все файлы из старого в новый, используя
cp -aкоманда.Обновить
/etc/fstabс новыми UUID.
Если что-то не понятно, могу добавить некоторые пояснения.
Если у вас есть время и вы хотите поехать:
$ dd if=/dev/sda of=/dev/sdb bs=64K conv=noerror,sync
Объяснение команды:
ifэто вход,ofпункт назначенияbsустанавливает размер блока. Это размер блоков, которые dd будет читать и записывать. Более высокие размеры блоков обычно означают более высокую производительность, но также и большее повреждение данных, если на входном диске есть ошибки, см. Здесь: archwiki на ddnoerrorпродолжается в R / W-ошибок.syncсинхронизирует смещения, если произошла ошибка.
Это в основном создаст образ вашего диска sda и запишет его на sdb (та же схема разделов и т. Д.). Конечно, это запишет все 120 ГБ, поскольку это не зависит от файлов. Таким образом, очень безопасно, но не самый быстрый, если вы используете только небольшие части диска. Однако, если входной диск достаточно заполнен, он может быть даже быстрее.
НО:
- После этого вы, вероятно, захотите изменить размер разделов, иначе вы не сможете воспользоваться дополнительным пространством.
- В любом случае может потребоваться изменить файл /etc/fstab.
Это тот случай, если идентификаторы оборудования используются для распознавания дисков.
Когда я переключаюсь на новый жесткий диск, я делаю это так:
- создать макет раздела, который я хочу на новом диске
- загрузка с Live CD/USB или установка, спасение и т. д.
- смонтировать старый раздел (ы) жесткого диска для копирования, скажем,
/mnt/a - смонтировать новый раздел (ы) жесткого диска для получения файлов, скажем
/mnt/b cp -aили используйте tar для копирования файлов из/mnt/aв/mnt/b- установите загрузчик (lilo или grub) на новый диск ¹
- обновить
/etc/fstab(вы можете использоватьblkidопределить новые UUID) - перезагрузите компьютер и проверьте, все ли в порядке
Note¹:
Проверьте все жесткие диски и разделы, используя следующую команду:
sudo fdisk -l
Теперь обратите внимание на раздел, на котором установлена Ubuntu, который будет выглядеть так: /dev/sda1
Смонтируйте раздел, где вам нужно установить GRUB 2 (раздел жесткого диска), и файловая система появится в Nautilus. Теперь нам нужно смонтировать правильный раздел жесткого диска, чтобы внести изменения в фактическую MBR жесткого диска. Для этого нам необходимо:
sudo mount /dev/sda1 /mnt
mount
Теперь смонтируйте раздел в другом месте
sudo mount /dev/sda1 /mnt/boot
Создать неразрывную ссылку из /dev папка с живым изображением, с которого вы загрузились на /dev папка в разделе, к которому вы подключены /mnt
sudo mount --bind /dev /mnt/dev/
Теперь нам нужно изменить корень с живого корня компакт-диска ( /) на корневой каталог смонтированного раздела
sudo chroot /mnt
Теперь вы находитесь в новой корневой оболочке, в которой смонтированный раздел является новым корневым. Вы можете проверить этот набор ls, Так как мы сейчас находимся в смонтированном разделе, мы можем опередить и установить GRUB 2:
sudo grub-install /dev/sda
Установки должны завершиться сейчас, без ошибок
Выйдите из оболочки CHROOT, набрав exit или нажав Ctrl+D, чтобы вернуться к Оболочке Live CD/USB
Размонтируйте разделы, которые мы смонтировали ранее, чтобы выполнить чистую перезагрузку:
sudo umount /mnt/dev
sudo umount /mnt/boot
sudo umount /mnt
и перезагрузите компьютер после извлечения Live CD или USB-накопителя для загрузки с жесткого диска:
sudo reboot
В отличие от других ответов, это позволяет вам клонировать установку Linux и добавить ее в меню Grub, не изменяя текущие установки. Кроме того, он автоматически изменяет /etc/fstab для вас и обновления grub Меню загрузки.
Меню предоставлено, чтобы помочь вам выбрать правильный раздел для клонирования. Клон с раздела - это ваш текущий загруженный раздел.
rsync используется для оптимальной скорости, если вы решите отложить раздел. Это полезно, если обновление не удается, вы ждете исправления ошибки и хотите снова запустить обновление. Точно так же вы, возможно, выбрали неправильные опции во время обновления и хотите сделать это снова.
Полный сценарий можно найти здесь: Bash-скрипт для клонирования Ubuntu на новый раздел для тестирования обновления 18.04 LTS, и вот так выглядит экран:
Я решил провести эксперимент, связанный с этим постом.
Я приобрел Lenovo ThinkCentre. Он имел 256 ГБ SSD и 1 ТБ HDD (тип спиннера - быстрый, но не такой быстрый, как SSD).
Когда я установил Linux Mint 19.2 (LM19.2), он установил его на диск объемом 1 ТБ. SSD оказался невосстановимым, и я купил новый Kingston 240 ГБ SSD.
Я собирался установить LM19.2 на новый SSD, но казалось, что должен быть способ перенести мой хорошо разработанный образ LM19.2 с диска 1 ТБ на новый SSD.
Я нашел этот пост, и, хотя есть несколько убедительных советов выше, я был в режиме эксперимента. Ниже рассказывается о том, что я сделал, и это работало ОЧЕНЬ хорошо.
- Я использовал GParted для создания таблицы разделов и разделов на SSD, которые были того же типа, что и на 1 ТБ HDD.
- Я выполнил снимок ВСЕГО (нового инструмента в Ubuntu / Linux Mint) TimeShift на жестком диске LM19.2 1 ТБ.
- Я восстановил этот снимок на SSD.
- После того, как вышеуказанные шаги были выполнены (вы даже можете сделать 1 параллельно с 2 и 3), я перезагрузил компьютер, убедившись, что он выберет SSD.
- Единственное, что было странно во время перезагрузки, было то, что начальный экран grub спросил, хочу ли я загрузить Ubuntu. Я предположил, что это было свойственно восстановлению TimeShift, и это было.
- Последующие стартапы загружались, как это обычно делает LM19.2.
- Я отредактирую этот ответ, как только убедился, что могу сделать это с новым диском, висящим снаружи ПК (и кажется очевидным, что это будет работать), потому что это будет означать, что я могу быстро скопировать любую из моих машин LM на новое оборудование.
Только скорость загрузки сделала эти простые шаги стоящими усилий. Даже Dropbox переносился нормально - он просто хотел, чтобы я снова вошел в систему, и потребовалось все время, чтобы проиндексировать файлы, но он работал отлично.
Я всегда использую следующую процедуру:
- Убедитесь, что ваша установка включает менеджер разделов (PM). Если нет, установите gparted.
- Подключите новый диск через USB-переходник. Посоветуйтесь с PM, какой диск какой. Обычно старый - /dev/sda, а новый - /dev/sdb, но лучше перестраховаться. Если путаете диски, просто стираете имеющуюся установку. Помните: dd не зря называют разрушителем дисков.
- Используйте dd, как объяснено выше ljrk, чтобы побайтно скопировать старый диск на новый. Добавьте status=progress в параметры dd, чтобы следить за прогрессом.
- Запускаем личку. На новом диске создайте, а затем уничтожьте временный раздел, заполняющий лишнее пространство. Это приводит к перезаписи таблицы разделов в соответствии с размером нового диска. Важно: последовательность действий должна быть такой: создать-применить-уничтожить-применить.
- Используя PM, измените размер разделов на новом диске по своему вкусу, чтобы использовать весь диск.
- Выключите, поменяйте диски местами, запустите, убедитесь, что все работает нормально.
Если вы хотите также использовать старый диск как внутренний:
- Подключите старый диск через USB-адаптер, отформатируйте его и разбейте на разделы по своему вкусу.
- Выключите, установите старый диск рядом с новым, запустите.
Если вы хотите использовать старый диск как часть вашей файловой системы, добавьте что-нибудь в мелодию,
UUID=actual-uuid-here /data ext4 по умолчанию, сбросить 0 2
в /etc/fstab, затем запустите sudo mount -a или перезапустите.
Если у вас нет USB-адаптера, та же процедура должна работать с горячей заменой дисков, но здесь вы сами. Более безопасный способ - использовать USB-диск или CD/DVD с установленной системой (например, установочный носитель). В этом случае вы можете сразу поставить оба диска (новый и старый) на свои места, затем загрузиться с носителя и выполнить копирование и т. Д.
Необязательно подключать новый диск к тому же разъему SATA, что и старый, но тогда вам может потребоваться изменить последовательность загрузки в BIOS.
Ниже приведено мое исследование с описанием попытки скопировать «Ubuntu 20.04 с включенным режимом гибернации в отдельный раздел подкачки на Thinkpad T420» на новый диск SDD на основе ответов на текущий вопрос. В конце концов я добился успеха, но столкнулся со многими проблемами (нюансами), пытаясь использовать эти рекомендации. Ниже термины SDD и HDD будут рассматриваться как взаимозаменяемые.
Сначала я попробовал самый простой и понятный способ (как я думал), который описан в - копирование файлов из исходного раздела в целевой раздел .
Для копирования я использовал
rsyncкоманда. Проблема заключалась в том, что мой новый SDD-диск не загружал Ubuntu без старого SDD-диска (оба SDD-диска должны быть подключены). Единственные рекомендации в этой ситуации, которые я нашел, заключались в установке, обновлении или восстановлении конфигурации. Но это не помогло. Установка UUID нового корня для конфигурации grub и обновление grub, как рекомендуется здесь:
/etc/default/grub
GRUB_DEVICE_UUID=40dbf2e4-e0c5-4f75-83bc-3176dc06d164
тоже не работал.
Проблема была не в UUID раздела подкачки, который указывал на старый диск, а в UUID.
Если вы делаете это для Ubuntu с включенным режимом гибернации на отдельном разделе подкачки, вам также необходимо обновить UUID раздела подкачки в
/etc/uswsusp.confи запустите команду для обновления, чтобы применить изменение:
update-initramfs -u -k all
В противном случае во время загрузки будет черный экран без диагностического сообщения.
К счастью, случайно один раз я оставил этот черный экран примерно на 5 минут, чтобы зависнуть. Затем появилось следующее диагностическое сообщение:
резюме: Не удалось получить файл устройства возобновления '/dev/disk/by-uuid/8e8927aa-eca7-43d6-b7cd-66cfda70a242 Введите полный путь, чтобы повторить попытку, или нажмите ENTER, чтобы загрузить систему:
stat, нет
start- возможно опечатка в сообщении.
Связанный вопрос: Не удалось stat файл устройства возобновления
Позже я узнал, что «8e8927aa-eca7-43d6-b7cd-66cfda70a242» — это UUID моего раздела подкачки на старом жестком диске.
Я смог загрузиться в новой системе, указав корневую папку на новом диске с помощью простого имени раздела, а не UUID: «/dev/sdx1» и нажав
Enter.
Интересно, что я указываю новое корневое местоположение, а не новое местоположение подкачки. Кажется, Ubuntu как-то разобрался.
Я запускаю команду для обновления после загрузки новой копии Ubuntu. В журнале команд было следующее:
update-initramfs: Generating /boot/initrd.img-5.13.0-27-generic
I: The initramfs will attempt to resume from /dev/sda4
I: (UUID=0253f7b6-8e26-4d19-b262-6d8923911752)
I: Set the RESUME variable to override this.
что означает, что UUID подкачки был успешно изменен.
Также я попытался запустить обновление для (из старой копии Ubuntu или Live-версии Ubuntu):
sudo mount /dev/sdx1 /mnt
sudo mount /dev/sdx5 /mnt/boot/efi
for i in /sys /proc /run /dev /dev/pts; do sudo mount --bind "$i" "/mnt$i"; done
sudo chroot /mnt
initramfsкоманда была выполнена из но не было сообщения об обновлении
resume UUIDкак и в предыдущем журнале - не знаю, правильно ли он работает.
На тот момент я уже обновился с помощью следующих команд:
sudo grub-install /dev/sdx
sudo update-grub
После этого я смог загрузиться с нового SDD-диска без старого SDD-диска.
Под в комментариях есть комментарий от andrybak:
В настоящее время пытаюсь использовать этот ответ для переноса моей установки со старого жесткого диска на новый жесткий диск. У меня не получается выполнить шаг «Установить grub на новый диск». Grub продолжает указывать/находить установку на старом жестком диске, и я не знаю, как убедить Grub посмотреть на новый жесткий диск.
Это может быть похожей проблемой, как я описал выше.
Ubuntu, сделанный таким образом, загружается нормально, но я заметил проблему с системой безопасности: когда я монтирую разделы других дисков, я не могу открыть их в
nautilus(нажав на их ссылки в
gnome-disksничего не сделает). Это связано с ошибкой: .
Решение было следующим:
- Обычно я устанавливал новую Ubuntu (минимальную версию без офиса и обновлений) на новый SDD-диск.
- Скопированы файлы старой Ubuntu в раздел с новой установкой Ubuntu. В данном случае проблем не было
Permission denied. Может быть, это можно исправить быстрее - я не исследовал.
Таким подходом я скопировал свой Ubuntu с MBR-диска на новый GPT-диск. (Перед установкой минимальной версии Ubuntu я отформатировал новый SDD как GPT.) Связанные вопросы:
- Как я могу изменить / преобразовать диск UbuntuMBR в GPT и заставить Ubuntu загружаться с EFI?
- По какой-то причине раздел UEFI «ДОЛЖЕН» или «СЛЕДУЕТ» быть первым? Если да, то почему?
- Как восстановить раздел EFI Ubuntu в Ubuntu 20.04
Копирование файлов под рабочей исходной ОС не работает:
Я попытался скопировать файлы в текущей рабочей системе (не в Live-версии), как обсуждалось в комментариях под ответе Pilot6ответом Pilot6,этим ответом с помощью следующих команд:
sudo rsync -a / /mnt/dest/ --exclude sys --exclude proc --exclude dev --exclude tmp --exclude media --exclude mnt --exclude run
sudo mkdir sys proc dev tmp media mnt run
sudo mkdir /var/tmp
И обновление
Grubиз
chroot.
В этом случае загрузилась новая копия Ubuntu, но разрешение экрана было ниже. Вероятно, некоторые драйверы для монитора не были скопированы или скопированы с ошибками из-за работающей системы.
Также проверен ответ ljrk - с помощью команды dd
sudo dd if=/dev/sda of=/dev/sdb bs=64K conv=noerror,sync status=progress
127945670656 bytes (128 GB, 119 GiB) copied, 818 s, 156 MB/s
dd: error writing '/dev/sdb': No space left on device
1953669+1 records in
1953669+0 records out
128035676160 bytes (128 GB, 119 GiB) copied, 829,897 s, 154 MB/s
Используя USB SDD с установленной Ubuntu и командой, я побитно скопировал исходный SDD на целевой SDD. В результате у целевого SDD были те же разделы, те же UUID, тот же PARTUUID.
Ниже описано создание Live USB SDD и изменение UUID, PARTUUID на новые.
Для более высокой скорости лучше вставить исходный и целевой SDD-диски внутрь ноутбука (второй SDD-диск через адаптер optibay/caddy), а команду запускать с загрузочной флешки или USB SDD/USB HDD. Я нашел две программы для Ubuntu, чтобы сделать загрузочную флешку или жесткий диск USB. Я хотел сделать USB HDD (SDD) и это было довольно сложно.
WoeUSBПрограмма также может быть использована для создания загрузочного жесткого диска, а не только флешки, но это не указано в описании программы . Приведенная ниже команда создает загрузочный жесткий диск из образа Windows10 Pro (в пользовательском интерфейсе невозможно указать жесткий диск USB, только USB-накопитель):
sudo woeusb --device "/home/sunkrop/Downloads/Win10_21H2_Russian_x64.iso" /dev/sdx --target-filesystem ntfs
Как создать загрузочный USB-накопитель Windows10 в Linux с помощью нового WoeUSB
Также пробовал
UNetbootinинструмент (для Ubuntu), но он не может использовать
NTFS, только FAT32 - это не подходит для образа Win 10 pro, так как в нем файл размером около 4,5 Гб (FAT32 не поддерживает файлы размером более 4 Гб). Установочный образ Ubuntu 20.04 должен быть установлен на раздел FAT32 (самый большой файл в
ubuntu-20.04.3-desktop-amd64.isoизображение
casper/filesystem.squashfsс размером
2,1Gb). Я использовал уже установленную Ubuntu, подключенную через USB SDD.
Следующая команда записывает образ на USB SDD с FAT32 FS:
sudo unetbootin installtype=HDD targetdrive=/media/sunkrop/winds/ method=diskimage isofile="/home/sunkrop/Downloads/Win10_21H2_Russian_x64.iso"
В пользовательском интерфейсе невозможно указать цель как жесткий диск USB, только как USB-накопитель. В
targetdriveпуть параметра должен быть указан к смонтированному USB-накопителю. И в конце должен быть знак косой черты
/иначе команда завершится ошибкой:
unetbootin /dev/sdx1sources is out of space
Или, может быть, не выйдет из строя, но будет записывать файлы не на целевой диск.
полезно, если вы хотите просто переместить свою систему на другой диск — даже Dropbox работает на целевом SDD, не требуя повторной привязки. Старый диск можно отформатировать. Готово.
Но если вы хотите, чтобы оба жестких диска работали в одном и том же ноутбуке, UUID и PARTUUID нового жесткого диска должны быть изменены на уникальные. Ниже информация об этом.
Как изменить UUID раздела в файловой системе Linux
blkid | grep sdb1
/dev/sdb1: UUID="0c0f5bf5-4e0f-4f4e-85df-896c88e14ba0"
umount /dev/sdb1
sudo e2fsck -f /dev/sdb1 #required by tune2fs before changing UUID
sudo tune2fs -U 0c0f5bf5-4e0f-4f4e-85df-896c88e14ba5 /dev/sdb1
sudo blkid | grep sdb1
/dev/sdb1: UUID="0c0f5bf5-4e0f-4f4e-85df-896c88e14ba5"
Источник: Как изменить UUID раздела в файловой системе Linux
Как изменить ПАРТУИД?
sudo blkid | grep sdb1
/dev/sdb1: PARTUUID="a41c501b-1800-41ed-968b-b7bbfe4ef5ef"
sudo gdisk /dev/sdb
x # enter x to change to experts menu
c # enter c to change PARTUUID
1 # enter the number of the partition you want to change
a41c501b-1800-41ed-968b-b7bbfe4ef6ef
m # enter m to go back to main menu
w # enter w to write the change to disk
q # enter q to exit gdisk
OK; writing new GUID partition table (GPT) to /dev/sdb.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.
sudo blkid | grep sdb1
/dev/sdb1: PARTUUID="a41c501b-1800-41ed-968b-b7bbfe4ef6ef"
Источник: Как изменить PARTUUID?
Ответ Северуса Такса - об использовании Clonezella
Это также хороший способ, но он потребует больше времени на подготовку и настройку по сравнению с использованием команды — USB-накопитель Clonezella Live должен быть подготовлен, загружен, и многие меню пользовательского интерфейса Clonezella должны быть просмотрены перед началом процесса клонирования или сохранение образа системы. Clonezella работает так же, как
dd- UUID, PARTUUID также будут скопированы на целевой SDD-диск.
Обсуждение UUID, PARTUUID на странице Clonezilla:

