LINUX.ORG.RU

Как перенести систему с HDD на SSD, чтобы быстро и безболезненно?

 , , ,


0

1

Здрасте. Именно сейчас появилась резкая нужда взять SSD в ноутбук на замену HDD, несмотря на то, что мне в том году говорили, что пора. Хочу так, чтобы на нём стояла и винда, и Арч. Проблема в том, что разметка диска на текущем HDD - MBR, а в идеале надо ставить GPT, чтобы накинуть больше разделов. Просто переустановить арч - не вариант. Экземпляр собранного вручную ядра где-то потерялся, а новые ядра я ставить не хочу. Старые пакеты тоже надо будет как-то перенести, но кеши Pacman и Yay у меня были подчищены, потому что заканчивалось место. Из-за другого типа разметки дисков, я так понимаю, у меня не выйдет просто скопировать по байту каждый из старых разделов на SSD. Как тогда быть? Может кто сталкивался с этим. Прошу подкинуть идей.


А разве ядро привязано к конкретному диску/разделу? По-моему не привязано, просто кидай его на efi раздел. И груб туда же, а остальную систему на новый корень в ext4/btrfs или что там у тебя скопировать rsync'ом.

Ты же мать не менял, значит дрова остаются те же, ядро и инитрам пересобирать не нужно, только поправить конфиг загрузчика и fstab/

Разве не так?

Chord ★★★★★
()
Последнее исправление: Chord (всего исправлений: 2)

Линукс всю жизнь копировался как между накопителями, так и p2v <-> v2p простым копированием. И продолжает копироваться (максимум метки selinux теперь надо поправить после копирования)

Dimez ★★★★★
()
Последнее исправление: Dimez (всего исправлений: 1)

Я неоднократно проводил работы на серверах внутри виртуальных машин по выправлению кривой разметки, по сути, в них ОС переезжала со старых дисков и старой разметки на новые диски и новую разметку.

Это так проходит:

  • Подсоединяем к серверу новые диски, размечаем их в те разметки и ФС, что мы хотим.
  • Загружаемся с iso образа в режиме восстановления, или можно просто SystemRescueCD использовать.
  • Я собирал и монтировал в RO дерево точек монтирования оригинала внутри /mnt/1 , то есть в /mnt/1/ монтировал / прежней ОС, а если у нее был отдельный /boot/, то его в /mnt/1/boot/ и так далее.
  • Как ты, наверное, уже понял, корень новой ОС идет в /mnt/2/, потом начинаем копирование всех файлов прежнего корня туда, кроме тех директорий, что не будут его частью в будущем, скажем у тебя отдельный /boot/ и ты это так и оставляешь, а кроме того, хочешь вынести на отдельную ФС директорию /opt/the-best-program/, то команда будет такой rsync -aAHSX --exclude 'boot/*' --exclude 'opt/the-best-program/*' /mnt/1/* /mnt/2/
  • Собираешь уже в /mnt/2/ chroot новой ОС, последовательно копируя файлы, монтируя каталоги, снова копируя, по аналогии с тем, что описал выше.
  • Когда chroot будет готов, входим в него и:
    • Правим /etc/fstab на новые параметры.
    • Правим настройки ядра, чтобы искало swap по новому адресу, в разных дистрибутивах по-разному.
    • Поравим владельцев и права на перенесенных каталогах, что стали теперь точками монтирования новых ФС, на те, что были на них в оригинале, на /opt/the-best-program/ в нашем примере.
    • Переставляем загрузчик, обычно GRUB2, в разных дистрибутивах по-разному, также по-разному от BIOS или UEFI, так можно и меж BIOS и UEFI мигрировать, к слову.
  • Отключаем старые диски, грузимся с новых в нашу новую старую ОС.
Vsevolod-linuxoid ★★★★★
()

Качаешь на флешку gparted-live, грузишься с него, форматируешь SSD в GPT и переносишь разделы по одному. Винда этого не переживёт, можно её потерять по дороге. Линуксу похрен.

legolegs ★★★★★
()
Ответ на: комментарий от Vsevolod-linuxoid

Не пойдет. Хардлинки так скопируются как отдельные независимые файлы.

Пойдёт:


-a, --archive
              same as -dR --preserve=all

--preserve[=ATTR_LIST]
              preserve the specified attributes

       ATTR_LIST  is  a  comma-separated list of attributes. Attributes are 'mode' for permissions (including any ACL and xattr permissions), 'ownership' for user and group,
       'timestamps' for file timestamps, 'links' for hard links, 'context' for security context, 'xattr' for extended attributes, and 'all' for all attributes.

Хардлинки скопируются как хардлинки. Если что, я проверил.

Aceler ★★★★★
()

Из-за другого типа разметки дисков, я так понимаю, у меня не выйдет просто скопировать по байту каждый из старых разделов на SSD.

Почему же, вполне выйдет, если только размер раздела не уменьшается. Если нужна UEFI загрузка, то вероятно понадобится ещё efi boot раздел. А если не UEFI, то «BIOS Boot Partition» для grub.

И вообще MBR можно конвертировать в GPT, например через gdisk. Но доп. разделы всё равно придется добавлять.

С ОС MS Windows сложнее. В BIOS режиме оно не умеет грузится с GPT. Так что вероятно нужно все-таки переходить на UEFI.

MirandaUser2 ★★
()

Хочу так, чтобы на нём стояла и винда, и Арч.

Желаю тебе избавиться от оффтопа.

Проблема в том, что разметка диска на текущем HDD - MBR, а в идеале надо ставить GPT, чтобы накинуть больше разделов

Нет тут никакой проблемы, в MBR-разметке можно сколько угодно разделов делать в расширенном разделе.

Из-за другого типа разметки дисков, я так понимаю, у меня не выйдет просто скопировать по байту каждый из старых разделов на SSD

Поскольку никакой другой разметки не нужно, то всё выйдет. Только можно ещё проще: скопируй побайтово весь диск (загрузившись с флешки), и больше вообще ничего не нужно будет. Какого размера старый и новый диски?

firkax ★★★★★
()

Экземпляр собранного вручную ядра где-то потерялся, а новые ядра я ставить не хочу.

В смысле конфиг потерялся? Так он внутри образа, если CONFIG_IKCONFIG и CONFIG_IKCONFIG_PROC не отключены.

MirandaUser2 ★★
()

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

NyXzOr ★★★★★
()

Я переносил Арч просто копированием файлов в корне на HDD в новый, подготовленный на SSD раздел под корень. Естественно переносить надо от рута, с сохранением атрибутов (владелец, права), см man cp или man rsync. И всё, после этого просто вносишь изменение в GRUB или грузишь напрямую через efi (man efibootmgr), и всё работает. Ничего по байту с сохранением фрагментации и мусора копировать не надо.

Если /boot, или /var отдельно — ну просто переносишь их точно таким же макаром.

Тип ФС и тем более размер новых разделов соответствовать старому тоже не обязан, нужны просто все файлы, с сохранением всех атрибутов. Всё.

Что там с виндой — это без понятия, я ей не пользовался 20+ лет, а уж тем более не переносил между дисками. Уверен, что с ней так просто не выйдет, и проще переустановить (тем более ей в принципе полезно…). А ещё лучше выкинуть её нафиг.

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 2)

А как у вас сделан backup?

Просто как вариант, восстановить с бекапа заодно и проверить все ли там нормально.

anonymous
()
Ответ на: комментарий от CrX

В принципе, байт-в-байт копировать нет нужды, что с GPT, что с MBR-разметкой – копируешь всё на новый диск как файлы, командуешь lilo или там, grub-install <куда>, при необходимости чуть поправил fstab и всё. А вот винда слетит, да.

yars068 ★★★★★
()

Что по поводу клонзиллы? Он копирует диски полностью. Но, во-первых, бекап, что всегда полезно, во-вторых, если потом перевести МБР в ГПТ, то все должно получиться.

Сам я в свое время но новую систему просто домашнюю директорию перенёс. С сохранением всех атрибутов через тар архив.

bbc69
()
Ответ на: комментарий от Chord

С MBR разметкой ядро и загрузчик привязывались к расположению ядра на диске. Копирование побайтово было нужно только затем, чтобы не переустанавливать загрузчик. Теперь, с UEFI, такой привязки нет – ядро читается загрузчиком просто как файл.

yars068 ★★★★★
()
Ответ на: комментарий от bbc69

Сам я в свое время но новую систему просто домашнюю директорию перенёс.

Насколько я понял у него АРЧ, он скорее всего там годами все настраивал и теперь вряд ли у него второй раз такое получится …

Вот я и хотел выяснить у него как он бекапит диск, все или только home.

anonymous
()

…чтобы на нём стояла и винда, и Арч.

Винда - отсюда проблемы, от неё капризы.

Всё остальное требует только умений. С виндой не поможет ничего. Только подстраиваться под её капризы. В каком режиме будет винда, такая должна быть разметка.

andytux ★★★★★
()
Ответ на: комментарий от anonymous

Ну так ядро и другие файлы можно просто откопировать. Проблема только с виндой.

bbc69
()
Ответ на: комментарий от yars068

Теперь, с UEFI, такой привязки нет – ядро читается загрузчиком просто как файл.

ему нужно будет нафигачить как минимум EFI раздел.

anonymous
()
Ответ на: комментарий от yars068

С MBR разметкой ядро и загрузчик привязывались к расположению ядра на диске.

Каким образом? Я просто копирую собранное ядро прямо Dolphin'ом в директорию /boot и правлю строку linux в grub.cfg, меняя только одно число (номер версии). И больше ничего. Какое ещё расположение ядра на диске?

Chord ★★★★★
()
Ответ на: комментарий от sparkie

Этот регистрант специально умолчал про EFI раздел и как то уж совсем вскольз упоминул про настройку груба. А досыпать проги для этого кто будет? Ну типа efiboomng и т.д.

anonymous
()
Ответ на: комментарий от Vsevolod-linuxoid

Поравим владельцев и права на перенесенных каталогах, что стали теперь точками монтирования новых ФС, на те, что были на них в оригинале, на /opt/the-best-program/ в нашем примере.

А если копировать tar-ом то он сам все права перенесёт (только исходник надо не звёздочкой обозначать а точкой).

так можно и меж BIOS и UEFI мигрировать

Между MBR-загрузкой и UEFI-загрузкой. BIOS есть и там и там, иногда даже один и тот же, если он обе загрузки поддерживает.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Хорошо-хорошо, BIOS с поддержкой спецификаций UEFI, я просто пишу короче.

А на счет прав доступа ты прям неправ и не въехал.

Смотри, команда rsync -aAHSX --exclude 'boot/*' --exclude 'opt/the-best-program/*' /mnt/1/* /mnt/2/ переносит права доступа и влалельцев на /opt/the-best-program/ абсолютно корректно.

Слетают они в моменте, когда ты монтируешь новую ФС в /opt/the-best-program/ – потому что права Unix директории /opt/the-best-program/ заменяются в этот момент теми, что присвоены ФС, которую ты в нее примонтировал.

И потому права доступа и владельцев на точки монтирования нужно менять после того, как ФС примонтирована, а не до.

Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от Chord

Во времена lilo было недостаточно просто скопировать. Сейчас – достаточно, при условии, что условный GRUB у тебя установлен как /boot/EFI/BOOTx64.efi. Если создавать новый ESP, то нужно будет создать новую загрузочную запись в NVRAM машины и удалить старую, если машина сама ее не удалит. Всë это делается через efibootmgr.

yars068 ★★★★★
()

Посмотри VMware vCenter Converter - прога бесплатная. Лишним, знакомство не будет. С помощью этой утилиты я переносил винт с десяткой и калькой на SSD. Но это было лет 10 назад.

nihil ★★★★★
()
Ответ на: комментарий от Vsevolod-linuxoid

Я не знаю как именно обрабатывает данную ситуацию rsync, и поэтому упомянул что можно копировать tar-ом. А tar, если ввести что-то типа такого (это команда, которая нужна чтобы заполнить новый раздел после его монтирования в /mnt/2/..../):

tar -c -f - -C /mnt/1/opt/the-best-program . | tar -x -f - -C /mnt/2/opt/the-best-program
права на корневую директорию копирования тоже скопирует. Это из-за того что в левой части указана точка - т.е. первый тар архивирует директорию целиком под именем ".", вместе со всеми её правами, а не только subtree внутри неё.

Подозреваю, что rsync если и не дефолтно, то с каким-то ключом тоже так может делать.

Хотя у tar-а другая проблема есть, он флаги setcap не копирует, для системных директорий в линуксе не годится.

И некоторый оффтоп: права на несмонтированную точку монтирования лучше делать максимально ограничивающими (chown 0:0, chmod 0, chattr +i), чтобы без монтирования туда не получилось случайно что-то записать в какой-нить нештатной ситуации.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 3)
Ответ на: комментарий от legolegs

Винда этого не переживёт, можно её потерять по дороге. Линуксу похрен.

В принципе, так и есть, но есть одно «Но». Чтобы заставить этот раздел грузиться - надо весьма постараться.

Если честно - никогда не страдал подобной фигнёй. Просто переставлял винт. С одной машинки на другую. А если не было другого варианта - тупо переставлял Ось и копировал данные. Винде - капец полюбому. Линукс - живее Ленина, запускался на совершенно другом железе.

Понимаю. Мне тоже, если честно, свои настройки терять неохота. От настроек/закладок браузера до прикладных прог. Но это - реализуемо бэкапами, правда у каждого свой...

Timeshift (есть такое) - врать не буду, не использовал для такого глобального переноса, не уверен что сработает. Но попробуй. Вдруг, взлетит?

ЗЫ: Кстати, если с Timeshift что получится - отпишись. Самому интересно.

cadaber ★★
()
Последнее исправление: cadaber (всего исправлений: 1)
Ответ на: комментарий от firkax

Возможно, что с rsync так тоже выйдет, если заранее смонтировать все дерево в /mnt/2/ , создав нужные точки монтирования на в остальном пустой ФС, но не уверен.

Vsevolod-linuxoid ★★★★★
()

Лет 8 назад использовал Acronis True Image для клонирования диска, работает отлично.

ac130kz ★★★
()

Как перенести систему с HDD на SSD, чтобы быстро и безболезненно?

lvm. Но раз у тебя его нет, то останется копирование offline. Через dd или cp -ar

Проблема в том, что разметка диска на текущем HDD - MBR, а в идеале надо ставить GPT

Разметка диска несущественна. Только убедись, что у тебя будет отключен secure boot. Или разбирайся с подписанием своего ядра

в идеале надо ставить GPT, чтобы накинуть больше разделов

Ты снова хочешь lvm

винда

Тут могут быть проблемы

Просто переустановить арч - не вариант. Экземпляр собранного вручную ядра где-то потерялся, а новые ядра я ставить не хочу.

А вот тут главная проблема. Причем психологическая, так что на форуме не помогут

Из-за другого типа разметки дисков, я так понимаю, у меня не выйдет просто скопировать по байту каждый из старых разделов

Выйдет

В любом случае, копирование linux’а на другой диск состоит из двух шагов

  1. скопировать (лучше через dd)
  2. установить загрузчик на новом диске (документация к твоему загрузчику)

в редких случаях, когда меняется не только диск, может потребоваться добавить драйвер в initrd/initramfs. Но обычно там все есть (исключение - изврат вроде альт линукс)

router ★★★★★
()
Ответ на: комментарий от bbc69

Что по поводу клонзиллы?

Хороший инструмент, но им все равно надо уметь пользоваться

Т.к. ТС хочет перейти с MBR на GPT, клонзилла поможет перенести отдельные партиции, а устанавливать загрузчик все равно придется самому

router ★★★★★
()

Создай разметку gpt, нужные разделы, а потом через dd их скопируй по-разному. Поправлять /etc/fstab и флаг boot выставь загрузочному разделу

anonymous
()
Ответ на: комментарий от bbc69

Клонзила для петухов. Всю жизнь dd только пользовался. Им только ntfs клонировать нельзя, так как файловая система, адреса привязаны к смещению от начала диска…

anonymous
()
Ответ на: комментарий от yars068

С MBR разметкой ядро и загрузчик привязывались к расположению ядра на диске

Загрузчик и расположение ядра никак не связаны. Можно вообще положить ядро на hdd, а загрузчик установить куда-нибудь на флешку. Только в cfg указать, где лежит ядро.

Chord ★★★★★
()
Ответ на: комментарий от legolegs

форматируешь SSD в GPT и переносишь разделы по одному

Я так понимаю, что если просто перекинуть условные /, /boot, /boot/efi и /home через cp, то ничего не заведётся, потому что загрузчик, вязанный на MBR-разделы, не сможет просто так присосаться к GPT, если только я не сделаю новый grub-mkconfig,

Винда этого не переживёт, можно её потерять по дороге.

Её сейчас даже нету. Поэтому и хочу взять SSD на больший объём, чтобы была причина переметить диск и хватило на всё места.

Tyse_EX
() автор топика
Последнее исправление: Tyse_EX (всего исправлений: 1)
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария