fstabをUUID指定にする方法

Blogは一ヶ月overぶりです。生きてます。

最近のUbuntuでは、/etc/fstabのパーティションの指定にUUIDを使うようになっています。そのため、従来の/dev/sda1といった指定でたびたび発生していた問題が解消されています。例えば、HDDが増えた時にsdaがsdbになったり、数年前にあったhd*がsd*へ大移動したりしてもパーティションを識別することができます。

ただ、人間はUUIDを見ただけでは、どのディスクのどのパーティションかを判断できないので、ちょっと非直感的と言えるかもしれません。

今回、あるPCのHDDを別のPCに繋いだ時に起動しなくて面倒になったので書き換えを決意しました。

UUIDの作り方

UUIDの作成にはuuidgenを使います。sys-apps/util-linuxに含まれているようです。実行するたびにUUIDを1つ生成するので、適当にシェルで、

$ for p in sda1 sda2 sda3 sda5; do echo "${p}: `uuidgen`"; done

として生成しました。

UUIDの設定方法(ext2/ext3/ext4)

tune2fsコマンドで後付けできます。

# tune2fs -U ${UUID} ${DEVICE}

UUIDの設定方法(swap)

swapはちょっと手間です。作成時しかUUIDを指定できなさそうなので、一回swapを止めて作り直しました。

# swapoff ${DEVICE}
# mkswap -U ${UUID} ${DEVICE}
# swapon ${DEVICE}

UUIDの確認方法

一番簡単なのは、/dev/disk/by-uuidを見ることだと思います。

$ cd/dev/disk/by-uuid && ls -l
lrwxrwxrwx 1 root root 2010-11-21 20:21 UUID1 -> /dev/sda1
lrwxrwxrwx 1 root root 2010-11-21 20:21 UUID2 -> /dev/sda2
...

でも…

手元の環境のパーティションはUUIDを付けてしまったので、もうわからないんですが、UUIDは生成して付与しなくてもデフォルトで付いてるんじゃないかという疑惑が…。