🐈

linuxの入った ssdを別のノートPCに移行する方法

2024/05/08に公開

先日メインで使用しているノートpcが壊れてしまったのでそのままssdを別のノートpcに移植した際の記録です。

対応ハード

huawei d15 ryzen7 3700U → huawei d15 ryzen5 3500U
huawei d15のマザーボードにはm.2ssdのスロットと、2.5インチのsataスロットがついています。
2つssdが入るデバイスなら問題ないと思います。
一方にwindows11/10、もう一方にgaruda linuxが入ったssdを使用します。

準備するもの

windowsが入ったpc ssd slotが2つ以上挿入できるもの
linuxの入ったssd
linuxのliveusb garudalinuxのinstallディスクがあったので使用します。

手順

  1. linuxの入ったssdをノートpcに差し込みます。
  2. linuxのliveusbを起動します。
  3. lsblk でデバイスの名前と uuidを確認します。
    ファイルサイズで特定できるかと思います。
    windowsの efi fat32 のパーティションを使用します。
    パーティションが最大の100Mのサイズなのでgrubをインストール可能な容量かどうか確認します。

自分の例
sda linuxのliveusb
sdb linuxの入ったssd
windows の入った ssd

$ lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
sda
└─sda1 btrfs 1a5xxxx 32G     80% /root

sdb
└─sdb1 btrfs 1a5xxxx 857.7G     2% /root

zram0                                                                              [SWAP]

nvme0n1
├─nvme0n1p1 vfat FAT32 54F8-xxx  XXM 30% /boot/efi
├─nvme0n1p2
├─nvme0n1p3 ntfs DE66fxxx xxxG     x% /media/windows
└─nvme0n1p4 ntfs 389xxxxx

  1. linuxの入ったssdをマウントし、chrootする
$ cd tmp
[tmp]$ mkdir ssd/root
[tmp]$ sudo mount /dev/sdb/ ssd/root
[tmp]$ ls /ssd/root
  @ @home @etc @lib ...
[tmp]$ garuda-chroot ssd/root/@

  1. grub install
(chroot)$ mount /dev/nvme0n1p1 /boot/efi
(chroot)$ grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=garuda --recheck
  1. /etc/fstab の書き換え
    fstabに移行前のpcからのboot情報が残っているので変更します。
(chroot)$ sudo vim /etc/fstab

# <file system> <mount point> <type> <options>
UUID=54F8-xxxxx /boot/efi vfat noatime

pcを再起動して、bios画面に行くとboot deviceが追加されていると思います。

参考元

https://forum.garudalinux.org/t/grub-fails-after-update/78/3

Discussion