VirtualBox固定サイズディスクの拡張
※忘れてしまうので自分用環境向けメモ(LVMや暗号化ボリュームでない場合)


- 新しいディスクを作成して追加でアタッチ。CDから起動。
dd if=/dev/sda of=/dev/sdb conv=noerror,syncで丸ごとコピー。なお、結果が標準エラー出力に
w+p records in w+p records out
のように出てくるが、wは「whole blocks」、pは「partial blocks」でブロックサイズより転送データが少ないとき。参考:dd - ArchWiki、dd invocation (GNU Coreutils 9.0)。
fdisk /dev/sdbでパーティションテーブルを変更。なお、fdisk -l /dev/sdbでpコマンドと同じ結果を出力。
p(パーティションテーブル表示) d(swapパーティション削除) d(swapが入っていた拡張パーティション削除) d(ext4パーティション削除) n(ext4パーティション作成。セクタサイズ512バイトで必要サイズとなるEnd位置を指定。ext4 signatureは消さない。) n(swapを入れる拡張パーティション作成) n(swapパーティション作成) t(swapパーティションのタイプ82を指定) a(ext4パーティションにブートフラグを立てる) w(変更を書き込んで終了)
e2fsck -f /dev/sdb1でext4ファイルシステムをチェックしてから、resize2fs /dev/sdb1でext4ファイルシステムを拡張。mkswap /dev/sdb5でswap領域を作る。blkidでext4とswapのUUIDを調べ、/etc/fstabと/etc/initramfs-tools/conf.d/resumeのUUID(特にswap)を更新し、update-initramfs -u。このとき/etc/initramfs-tools/conf.d/resume.origのように古いファイルを残さないこと。/etc/initramfs-tools/conf.d/内の全てのファイルが読まれて警告の原因になる。ejectでCDを取り、シャットダウンしてから古いディスクをデタッチし、新しいディスクを「ポート0」に。- (この操作は不要かも)再度CDから起動して
grub-install /dev/sda。ejectでCDを取り、再起動。