blog.monophile.net

コンピュータに関するメモ。

著者

山本一彰(Takaaki Yamamoto)

東京工業大学において計算機科学と応用数学を学び、 情報科学芸術大学院大学[IAMAS]においてメディア表現を専攻し修了。 2015年にコンビネータ論理を基に計算完備な計算手法 "論理珠算"を開発し、 それを含む体系である"算道"を構成した。 その成果により、2016年に 第19回 文化庁メディア芸術祭 アート部門 新人賞 (文部科学大臣賞) を受賞。 現在はSRE(サイト信頼性エンジニア)として生計をたててている。

投稿

Linux の起動ディスクのお引越

概要

Ubuntu16.04 を違うディスクに引っ越した時に行った作業のメモ。 (もっと簡単に行う方法もあるかもしれない。)

作業

作業は USB メモリなどから起動した別 Linux からの作業とする。 (引越し元のシステムが起動した状態でも行うことはできると思うが、 システムが起動のためにマウントしているファイルシステムなどもあるため、 別システムで行ったほうが安全のように思う。)

ディスクのデバイスファイルは下記のような配置とする。

  • /dev/sda 引越元ディスク
    • /dev/sda1 引越し元ルートファイルシステムが格納されるパーティション
  • /dev/sdb 引越先ディスク
    • /dev/sdb1 引越し先ルートファイルシステムが格納されるパーティション

引越し先のファイルシステムのフォーマット

引越し先のディスクのファイルシステム(Ext4, XFS, Btrfs, …)は、 引越し元と同じ形式にすることを想定している。 ファイルシステムを変更した場合は、カーネルモジュールの不足が起きたり、 マウントのオプションが異なったりした場合に起動できない可能性があるため、 ここに書かれていることのみでは成功しない恐れがある。

引越し元のファイルシステムが Ext4 (Ubuntu16.04 のインストール時のデフォルトは Ext4) の場合は↓でパーティションを切ってフォーマットしておけば良い。

データの複製

引っ越し元から引っ越し先へデータを rsync でコピーする。 マウント先は適当な場所で良いが今回は /mnt 下にした。

引越し先のファイルシステム /mnt/sdb1 へ chroot する

↓の手順で chroot してから、続く作業を行う。

/etc/fstab の設定を書き換える

/etc/fstab に記載されている /dev/sda1 の UUID を /dev/sdb1 の UUID で書き換える。 blkid コマンドでパーティションの UUID は確認できる。

lsblk -f でも確認できる。

/dev/sdb へ GRUB のインストール

/dev/sdb の MBR へ GRUB をインストールする。

initramfsの更新

再起動

chroot を終了し、コンピュータを再起動する。 BIOSで起動ドライブを /dev/sdb に対応するディスクに切り替えたら /dev/sdb から起動が始まる。