Dz99 Blog

SSD増設!単一ディスクデュアルブート環境からの脱却と悲劇

2022-12-20

この記事は YounGeek AdventCalender 2022 8 日目です!
ゆるーく Linux 日記を書いていきやす。

背景

ノート PC のディスク容量が足りなくなったので、SSD を増設!
今まではより大きなディスクにクローンすることで対応していた。
いつも通りでも良かったが、M.2 のスロットが余っているかつ、単一のディスクでデュアルブートをしていたので、今回は Arch パーティションを新しい SSD に切り出すことにした。

工程

ArchWiki 参考

  • オリジナル Arch パーティションから新しい SSD へフルコピー
  • GRUB のインストール&設定

ディスクのクローンと違うのはシステム移行の際に使うコマンドが違うところだ。ディスククローンではddを使い、今回はrsyncを使用している。

SSD フォーマット&ファイルシステム

無難にもとのやつと同じ構成にした

# parted /dev/sd*
(parted) mkpart primary fat32 1MiB 551MiB

EFI = fat32, root = ext4

# mkfs.ext4 /dev/sd*
# mkfs.fat -F 32 /dev/sd*

システムファイルクローン

rsync を使う。新しい SSD をパーティションごとにマウントして、

# rsync -aAXHv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"}

オプション --exclude の内容はコピーされないようになっている。-aAXHでハードリンクやシンボリックリンクを保持してコピーすることができる。また-vはコピー中のファイルを表示させるようにしている。

fstab の更新

arch-install-scriptsをインストールして genfstab を実行

# genfstab -U /mnt >> /mnt/etc/fstab

ブートローダーインストール

ブートローダーがインストールされる配下にvmlinuz-linuxinitramfs-linux.imginitramfs-linux-fallback.imgをオリジナルから新しいストレージにコピーしておく。(rsyncコピーの際にマウントが適切にできていないとおそらく存在していない)
grub 関連のコマンドを実行する。

# grub-install --target=x86_64-efi --efi-directory=/mnt/boot --boot-directory=/mnt/boot --bootloader-id=GRUB
# grub-mkconfig -o /mnt/boot/grub/grub.cfg

まとめ

ディスクのクローンをやっていた頃は LiveCD 環境からddを実行していたが、移行前環境からフルコピーを行えたのは良かった。今回は単一ディスクでデュアルブートをしているという特殊な環境から増設+切り出しを実現するためにこのようなことを行ったが、今後も今回の増設手法を使いたい。*rsyncは異なるファイルシステム間で真価を発揮するらしい

悲劇

ディスクの容量が少なくなって増設を行ったが、増設後に無駄だったことが判明した。実はゴミ箱がディスクを圧迫していたのだ。rmコマンドを使っているとゴミ箱の概念は存在しないが、特定のファイルマネージャーや VScode などからファイルを削除すると一度ゴミ箱に送られる。ずっと LinuxDesktop を使ってきて、初めてゴミ箱の存在気づいた。ゴミ箱に VM 関連のイメージなどが 50GB 入っていて泣いた。

ちなみにゴミ箱は~/.local/share/Trash/files/にあります。
みなさんは SSD を買う前に何がどこでディスクを圧迫しているか確認しましょう。(なんか当たり前のことを書いてて涙が出てきた)

よき Linux Life を :-)

© 2022, dz99