LINUX.ORG.RU

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

 , , ,


0

1

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

UPD: Пока не дочитал все сообщения но спасибо за вашу помощь! SSD уже заказан и приедет где-то через три дня. Буду пробовать копировать разделы напрмую через dd. Не знал что так можно



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

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

Ну так ты сделай. Или как вариант, грузи напрямую через UEFI, без загрузчика. В Арче так можно.

sudo efibootmgr -c -d /dev/nvme0n1 -p 1 -L "My Cool Arch" -l /vmlinuz-void-musl -u 'root=/dev/nvme0n1p5 rw initrd=\initramfs-linux.img zswap.enabled=1'

Здесь надо заменить:

  • /dev/nvme0n1 на свой диск;
  • -p 1 — номер раздела на диске, того, который /boot;
  • "My Cool Arch" на что угодно (название пункта);
  • /vmlinuz-linux на имя файла ядра (он лежит в /boot, в арче имя такое, если обычное ядро, если сам собирал с другим именем, пропишешь своё);
  • /dev/nvme0n1p5 на свой раздел, который / (корень);
  • initramfs-linux.img аналогично на тот initramfs (тоже в арче такое имя по умолчанию, если кастомное собирал, вставишь своё), что лежит у тебя в /boot.

Всё. Дальше идут параметры ядра, если надо какие ещё задать. И оно просто грузится, напрямую, без загрузчика. Я так воид гружу, без всяких грубов. Арч тоже грузил.

P.S. Если смущает незнакомое «nvme0n1» и «nvme0n1p5» то так NVMe-девайсы и соответственно разделы на них именуются. Типа nvmeXnY для диска, а для раздела добавляется pZ (p=«partition», Z соответственно по порядку, как и для SATA). Если у тебя SATA, то у тебя оно будет sda и sda5 соответственно в данном примере.

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 6)
Ответ на: комментарий от anonymous

Им только ntfs клонировать нельзя, так как файловая система, адреса привязаны к смещению от начала диска…

Ну так поправить это смещение.
И важно это только для раздела, где загрузчик.

P.S. ТС уже написал, что MS Windows он только собирается ставить. Ещё не поздно его отговорить ;-)

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

ТС уже написал, что MS Windows он только собирается ставить. Ещё не поздно его отговорить ;-)

А зачем? Мне кажется, время радикальных мастдай-хейтеров, которым есть дело, чем пользуются другие, прошло (ну точнее, они просто повзрослели, а у молодёжи просто другие интересы). Хочет человек страдать, значит так надо ему, наверное. Чай не новорег зелёный, сам знает, что ему и зачем надо.

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

Ещё не поздно его отговорить

Поздно. Для команды ребят, с которыми я собираюсь работать, понадобится работать с софтом, который либо не пойдёт под линуксом потому что нерабочее и непереписанное легаси, либо в принципе не заведётся внутри Wine. Ванугую, что мне придётся сменить линуксовый Aegisub на что-то другое.

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

Никакими менеджерами никогда не пользовался, всегда копировал ядро вручную. Ядро всю жизнь лежало в /boot. Там же в /boot была директория /grub с конфигом. И конфиг груба по умолчанию ищет ядро в /boot

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

Я не понял какой дятел мне палец вниз там поставил, но поражает нубство местной публики. Я считаю, что кроме dd ничего не нужно, есть отдельные сверхразумы, которые знают, что весь диск можно клдонировать обычным cat, но с dd надежнее, так как есть «коррекция» ошибок

Ну так поправить это смещение.

Там таблица какая-то в начале раздела, где прописаны адреса. Утилиты типа ntfsclone пересоздают ее, высчитывая новые адреса. Но и на этом «мучения» не кончатся. Все равно нужно будет через загрузочную флешку винды с помощью bcdboot восстанавливать загрузчик. Там тоже по-ходу адреса захардкожены этого ядра виндового, которое запускается.

P.S. ТС уже написал, что MS Windows он только собирается ставить. Ещё не поздно его отговорить ;-)

От чего? Linux объективно кривое поделие на котором через тот же Wine многое тормозит не по-детски… Но в Linux эта «кривизна» дает небывалую гибкость настройки, а винда - лишь право пользование компудахтером по подписке…

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

У меня /boot лежит на EFI-разделе. Это из-за шифрования и нежелания использовать Grub, который тоже по-моему мнению для петухов. Это какая-то лишняя сущность, потому как systemd-boot уже есть в системе (без учета возможности прямой загрузки, если нет шифрования).

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

Это из-за шифрования и нежелания использовать Grub, который тоже по-моему мнению для петухов. Это какая-то лишняя сущность, потому как systemd-boot уже есть в системе

Я устанавливаю grub из-за нежелания использовать systemd-boot. который по моему мнению для петухов, это какая-то лишняя сущность, потому что уже сто лет как есть grub

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

Угу, systemd с потрохами типа systemd-boot везде… А вот если дристр не-systemd, то grub не будет лишним… Ты просто пытаешься оправдать свои наклонности

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

ну и нубизм. там чтобы systemd-boot заработал не нужно быть каким-то программистом. лишь две команды выполнить и пару конфигов отредактировать. это уж совсем для маленьких сложно… хотя все равно без редактирования конфигов в гробе не обойтись для того же шифрования, тогда уже и получается, что разницы нет, но в системе лишняя зависимость. но опять же все сводится к нубству местной публики, которой ни btrfs, ни шифрование… да вообще ничего не нужно… сидят на своей бубунте и учат других жить

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

копировать плохой вариант, теряются acl и xattrs

tar -cp

флаг -p сохраняет xattrs

а дальше или в архив и распаковать или через конвеер, пусть даже на локалхост

tar -cp . | nc -q1 -l -p 1234

в другом терминале

nc -q1 localhost 1234 | tar -xp

можно добавить -v или pipebench или bar в конвеер, чтобы было видно прогресс или скорость.


венду переносить через dd, еще понадобится ms-sys для восстановления загрузчика
* sys-block/ms-sys
Available versions: 2.7.0
Homepage: http://ms-sys.sourceforge.net
Description: A command-line program for writing Microsoft compatible boot records

ну или гуглите сами, там полно вариантов переноса-восстановления.

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

Да, но tar требует места, чтобы собственно хранить .tar или .tar.gz или .tar.xz

Если стоит цель сделать компактный бекап ОС для восстановления, это отличный вариант, но у нас задача переноса ОС с диска на диск.

И не надо советовать dd, лучше ddrescue.

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

tar -cp | nc

nc | tar -xp

не требует сохранения файла, компрессия - да, можно, если гонять через сеть, zstd например
с локалхоста на локалхост - не зачем

возможно ddrescue работает лучше, я переносила dd с восстановлением загрузки ms-sys

PS: ms-sys работает с MBR, для GPT придется использовать что-то другое
Не люблю GPT, если есть возможность, то я просто форматирую диск без создания какой-либо таблицы разделов, целиком
(да, венда этого не любит, ну и пёс с ней)

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

Да, рабочий метод. Но rsync тоже умеет гонять через сеть, он вообще для того и разработан, причем поддерживает докачку и досинхронизацию.

ddrescue советую потому, что у меня на личном опыте dd встал на бед-блоке и без конца насиловал диск, не копируя далее. А ddrescue умеет обходить такое, он вообще под вытягивание данных с полумертвых ЖД заточен.

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

dd встал на бед-блоке и без конца насиловал диск

Такое может случиться только если ты указал conv=noerror и диск почему-то был non-seekable (что с обычным драйвером sata невозможно). Если conv=noerror не указано то dd падает на первой ошибке, если указано - пытается сделать seek чтобы пропустить битый блок. Если seek не удался я не смотрел что он делает, возможно тоже падает, но с обычным драйвером seek всегда удаётся.

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

Это всё не то. -p это вообще дефолт если ты от рута, смысла его писать нет.

# mkdir 1 2
# touch 1/f
# chmod +x 1/f
# setcap cap_net_raw=ep 1/f
# getcap 1/f
1/f cap_net_raw=ep
# tar --xattrs -c -p -f - 1 | tar -x --xattrs -p -f - -C 2
# getcap 2/1/f
# 
firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от anonymous

О госпаде, фишка в том, что если человек пользовался GRUB условных 3 года, а потом услышал, что сейчас модно грузиться по Systemd-boot, то, чтобы сменить загрузчик, ему придётся копать мануал к systemd-boot, чтобы узнать, как вбивать разделы под Legacy и EFI, искать аналог /etc/default/grub, чтобы вбить свои параметры ядра, и вносить туда загрузочный раздел с виндой(если дуалбут или очень надо). У systemd-boot из коробки нет стартовой менюшки с выбором загрузки ОСей или перехода в параметры UEFI/BIOS(что умеет GRUB).

Лень - признак стабильности и спокойствия

Tyse_EX
() автор топика
Ответ на: комментарий от Tyse_EX

Ты там сам конфигурации пишешь и в них параметры ядра. Ну или нейронка напишет, если попросить. Винда сама определяется, ей конфиг не нужен

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

Да, только в загрузчике, который у тебя уже был, ты знаешь, куда их писать. А у systemd-boot местоположение файла конфигурации другое и тебе придётся искать его

Tyse_EX
() автор топика
Ответ на: комментарий от anonymous
[lenya505@LenovoG505 ~]$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda      8:0    0 298,1G  0 disk 
├─sda1   8:1    0 141,2G  0 part /home
├─sda2   8:2    0  53,5G  0 part /
├─sda3   8:3    0     1G  0 part /boot
└─sda4   8:4    0  86,7G  0 part /mnt/e1ced2f6-48ca-4065-a9ad-257cbc191e14
sr0     11:0    1  1024M  0 rom  
zram0  254:0    0   3,6G  0 disk [SWAP]
Tyse_EX
() автор топика
Ответ на: комментарий от anonymous

Клонзила для петухов. Всю жизнь dd только пользовался

Админ локалхоста? Клонзилла умеет все то же самое по сети. При переносе виртуалок со сраного нутаникса - незаменимый инструмент

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

Это какая-то лишняя сущность, потому как systemd-boot уже есть в системе

Пора уже переименовать linux в gnu/systemd, а ядро - в systemd-kernel

router ★★★★★
()

clonezilla. Если есть куда воткнуть оба диска, то можно сразу клонировать, если нет, то через внешний диск по USB сделать image потом развернуть.

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

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

Помимо того что это крайне неэффективно, я был бы очень удивлён если бы SSD ловко распознал нули как дыры и вообще не аллоцировал под них место. Как по мне - так довольно плохая идея и вредный совет.

ПыСы. А ещё там просто неиспользуемый мусор может оставаться, на который никто не ссылается с точки зрения fs и который тащить за собой вовсе не обязательно. Не надо так делать.

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

После копирования можно fstrim сделать. Хотя да, одна лишняя запись всё-таки случится на весь диск.

firkax ★★★★★
()
sudo rsync -aXHv --exclude='/dev/*' --exclude='/proc/*' --exclude='/sys/*' --exclude='/tmp/*' --exclude='/run/*' --exclude='/mnt/*' --exclude='/media/*' --exclude='/lost+found/' --exclude='Что_надо_исключить'  / "Куда_переносим"
Ololo_Trololo ★★
()
Ответ на: комментарий от firkax

# tar --xattrs -c -p -f - 1 | tar -x --xattrs -p -f - -C 2

Надо еще добавить --xattrs-include='*'

# tar --xattrs --xattrs-include='*' -c -p -f - 1 | tar -x --xattrs --xattrs-include='*' -p -f - -C 2
No ★★★
()
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария