研究室マシン設定メモ:その2

Ubuntu 12.04 LTS から Ubuntu 14.04 LTS へのアップグレードに失敗して、 いろいろ苦しみながらやったことの覚書。

Ubuntu インストールまで

まずUbuntu 14.04 のインストーラの問題で、RAID構成のHDDへのインストールはできないらしい。 なんじゃそりゃ。 500GBのHDD2台でRAID1(ミラーリング)になっていたせいで、ここで詰まる。 OSが起動しない状態になっていたので、UbuntuをDVDからライブ起動して、 ホームディレクトリだけ1TBのHDDに退避。

続いてRAID構成を解除する。BIOSの起動画面で Ctrl+I だかを押して、RAIDコントローラ画面を呼び出す。 このへんは勘で進む。RAID delete を選択して中身もろともさようなら。 RAIDが解除できたらあとは DVD からいつものように Ubuntu 14.04 をインストールするだけ。 問題なく終了。

で、ここまでやって気がついた。Intel Fortran Composer XE がまだ Ubuntu 14.04 に対応していない。 というわけで泣く泣く Ubuntu 12.04 LTS を入れ直す。

インストールに失敗する原因がわからずに、ここまででだいぶ時間を食った。具体的には3日くらい。 だってエラーメッセージが「??? ??? ??? ???」としか表示されないんだもの!

ホームディレクトリのマウントまで

1TBのHDDに退避しておいたホームディレクトリを /home にマウントする。 ついでに、RAID解除で余った500GBのHDDも /work としてマウントしてしまおう。 具体的には /etc/fstab の中身を編集して、Ubuntu の起動時に自動マウントさせる。

まず、UUID(デバイスに固有のIDで、世界中で重複しないように設定されるらしい)を調べる。

$ sudo blkid
/dev/sda1: UUID="oooooooo-oooo-oooo-oooo-oooooooooooo" TYPE="ext4"
/dev/sda2: UUID="oooooooo-oooo-oooo-oooo-oooooooooooo" TYPE="swap"
/dev/sdb1: UUID="oooooooo-oooo-oooo-oooo-oooooooooooo" TYPE="ext4"
/dev/sdc1: UUID="oooooooo-oooo-oooo-oooo-oooooooooooo" TYPE="ext4"

上の二つ(/dev/sda1, /dev/sda2)は Ubuntu をインストールしたHDDなので、 下の二つ(/dev/sdb1, /dev/sdc1)が追加のHDD。 /dev/sdb1 を /work、/dev/sdc1 を /home として使おう。

既存の /home を /home.back としてバックアップを取り、 mkdir でマウントポイント(/work, /home)を作成。続いて /etc/fstab に次の記述を追加する。

# extended HDD
UUID=oooooooo-oooo-oooo-oooo-oooooooooooo /work ext4 defaults 1 3
UUID=oooooooo-oooo-oooo-oooo-oooooooooooo /home ext4 defaults 1 2

UUID にはさっき調べた /dev/sdb1, /dev/sdc1 の値をそれぞれ入れる。 行末の数値はマウント時のチェックの順番で、/dev/sda1 が1に設定されている。 その前の数値はなんだったか忘れた。

あとは再起動すれば勝手にマウントされる。 自分は defaults と書くところを誤って default と書いたせいで ホームディレクトリがマウントできずに、ログインできなくなった。 再びライブ起動して修正。

サーバ上のディレクトリをマウント

最後に、ネットワーク上のリモートサーバにあるファイルシステムをマウントする。 これまで .bashrc に sshfs の記述をしてマウントしていたが、bash を起動しないと繋がらないので どうにも使い勝手が悪かった。 autofs を組み合わせると自動マウントできるらしいので今回これを使う。
ローカルホストを kerr、 リモートホストを dio、両方とも自分のアカウント名は hirako とする。 マウント先は /mnt/dio とでもしておく。

鍵の設定

rootユーザでパスワードなしログインができることが必要らしいので、秘密鍵と公開鍵のセットを作り、 公開鍵をリモートホストに置く。

hirako@kerr:~$ sudo -s
root@kerr:~$ ssh-keygen    (/root/.ssh/id_rsa_kerr として作成)
root@kerr:~$ scp -r /root/.ssh/id_rsa_kerr.pub hirako@dio:~/.ssh/
root@kerr:~$ ssh hirako@dio
hirako@dio:~$ cat ~/.ssh/id_rsa_kerr.pub >> ~/.ssh/authorized_keys

続いて、SSH接続する際にこの鍵を使うように設定する。 /root/.ssh/config に(なければ作成して)次の記述を追加。

Host dio
      User hirako
      HostName XXX.XX.XX.XXX (IPアドレス)
      IdentityFile /root/.ssh/id_rsa_kerr

root のまま $ ssh dio とかして hirako 名義でパスワードなしログインできれば成功。

autofs と sshfs の設定

なにはともあれインストール。

$ sudo apt-get install autofs sshfs

続いて設定ファイルをいくつか編集します。 /etc/auto.master の最後に

/mnt /etc/auto.sshfs --timeout 0 --ghost

を追加。 最初がマウントポイントを作成するディレクトリ、2番目がマウント元を記述する設定ファイル名。 後ろはおまじない。
さっき指定した /etc/auto.sshfs に以下を記述。

#dio -fstype=fuse,allow_other :sshfs\#dio\:/home/hirako
dio -fstype=fuse,allow_other,follow_symlinks :sshfs\#dio\:/home/hirako
(\はバックスラッシュ)
2015/02/19追記: follow_symlinks を入れるとマウント先のシンボリックリンクも辿れる。

先頭がマウントポイントの名前、一番最後がマウント元の指定。今回は自分のホームディレクトリ。

最後に sshfs に必要なグループの設定。 /etc/group 中の
fuse:x:104:
とか書いてある行の最後に自分のアカウントを追加して
fuse:x:104: hirako
とすればOK。

再起動したら自動マウント完了!ホームディレクトリにリンクを張ると幸せになれます。