Λlisue's blog

つれづれなるままに更新されないブログ

Debian Wheezy 64bit をクリーンインストールしたメモ01

f:id:lambdalisue:20130928030331j:plain

どうもAlisueです。扉絵は愛銃です。本記事には全く関係がありません。

ラボで使用しているパソコンがどうにも調子が悪いのでクリーンインストールをしました。 本記事では未来の自分のために実際になにを行ったかをメモとして残しておきます。分量が非常に多くなるので二回にわけます。

前提

構成

ラボで使用しているパソコンの基本スペックは下記のとおりです。

  • CPU: Inteli® Xeon(R) CPU X5675 @ 3.07GHz x 12
  • Memory: 12 GiB
  • HDD or SSD
  • Graphic card: NVIDIA Quadro NVS 290
    • CUDA Cores: 16
    • Total memory: 256 MB
    • Memory Interface: 64-bit
    • Bus Type: PCI Express x16
    • Graphics Clock: 459 MHz
    • Memory Clock: 400 MHz
    • Processor Clock: 918 MHz

当初はHDDにHitachi HDS723020BLA642のみが接続されている状態だったのですが余っていたためSSDと300 GBのHDDを三台追加しました。 本記事ではこのPCに今年(2013年)安定版になったDebian Wheezyの64 bit版をインストールし、各種設定を行なっていきます。

戦略

上記ハードウェア構成を下記のような運用法で使用したいと思います。

  • ファイルシステムフォーマットは基本的にext4を利用。新しいもの好き。
  • 300 GBのHDDを3台使用しRAID0を構築しシステムドライブとして使用
  • 事前測定でRAID0よりも読み書きが低速だったSSDに関してはブート、静的ファイルおよびスワップ用ドライブとして使用
  • 最も低速だが容量が大きく耐障害性も高いHDDに関してはホームディレクトリ用ドライブとして使用
  • メモリが潤沢にあるため一時ファイルなどはRAMディスクっぽいのの上に保存
  • グラフィックボードが心許ないが新規購入が必要となるため交換は見送る

システムドライブ(/

300 GB HDD x 3で構築したRAID0はSSDよりも読み書きが高速でした(使用しているSSDがかなり古いタイプなので致し方ない)。 ただRAID0なので単純計算で故障率が3倍になっているため故障してもダメージが少ないシステムドライブ(ルート)を割り当てます。 ダメージが少ないとはいいましたが、故障しても大事なデータを復旧可能という意味でありシステムドライブが故障するとパソコンは全く使用できなくなるのでリスクを理解できない場合はおすすめしません

ちなみに最小・最大・平均読み取り速度は以下のとおりでした。括弧内は単体HDDでの性能です。

  • 最小: 97.3 MB/s (30.9 MB/s)
  • 最大: 187.7 MB/s (66.0 MB/s)
  • 平均: 150.7 MB/s (52.6 MB/s)

コラム: ハードウェアRAID vs ソフトウェアRAID vs オンボードRAID

僕も詳しくは知らないのですが一般的には下記のように認識されているようです。

上記の理由から大規模サーバーなどはハードウェアRAID、通常利用であればソフトウェアRAIDを選択するのが妥当なようです。 間違ってもオンボードRAIDは使っちゃいけないらしい(パフォーマンスが出る良いオンボードもあるようですが、かなり高級品じゃないとダメらしい)。

ブート・静的ファイル・スワップ/boot, /usr, swap

僕が個人的に持っていたSSDなのですが古いこともあり特に書き込み性能で大きくRAID0のパフォーマンスを下回っていました。 逆に言えば読み取り性能はRAID0とほぼ変わらない性能を保っていたのであまり書き込みが発生しないブート・静的ファイル用のドライブとして割り当てました。 なおブートドライブ(/boot)はGRUBブートローダーでも読める位置、すなわちRAID外でなくてはならないため例えSSDがなくてもこれだけは外に出す必要があります (参考: RAIDボリュームからのブートとパーティション)。

またスワップ領域のことをすっかり忘れていたのでSSDに24 GB確保しました。実務的に物理メモリを使い切ることが殆ど無いとは思うのですが、念の為。 なお本当は読み書き速度から考えてスワップ領域はRAID0上に構築したほうが良いのですがRAID0のパーティション切っちゃったので面倒くさくてSSDに取りました

ちなみに最小・最大・平均読み取り速度は以下のとおりでした。

  • 最小: 91.4 MB/s
  • 最大: 211.1 MB/s
  • 平均: 116.8 MB/s

ホームディレクトリ(/home

各ユーザーのホームディレクトリが保存される場所なので容量が多く(RAID0よりは)耐障害性が高いHDDにマウントします。 また無いとは思いますがデーター容量が増えすぎた場合を考慮しLVMで構築します。

LVMとか言ってるけど毎度別ドライブにホームディレクトリマウントしている癖に毎度ホームディレクトリごとクリーンインストールしているのは秘密。

ちなみに最小・最大・平均読み取り速度は以下のとおりでした。

  • 最小: 38.9 MB/s
  • 最大: 151.8 MB/s
  • 平均: 110.5 MB/s

一時ファイル用ディレクトリ(/proc, /run, /tmp

OSのインストール終了後に指定しますが、メモリが潤沢にあるのでtmpfs を利用してメモリ上に変動が激しい一時ファイル保存領域を確保します。 なおメモリがすごく潤沢なのでramfsでもいいのですがtmpfsだと/etc/default/tmpfsを書き換えるだけで済むのでtmpfsでやります。 (参考: tmpfs は本当に容量が動的なのか

Debian Wheezy (64 bit) のインストール

とりあえずOSが入っていないと話が始まらないのでインストールを行なってください。 僕の場合はパーティショニングを先にあげたように行いましたが基本的にすべてデフォルトのまま行えば良いと思います。 このステップでの詳しい情報などはGoogle先生にお聞きください。以降はDebian Wheezy 64bitがインストールされた後と仮定します。

1. CapsLockをCtrlに変更する

とりあえず作業効率に直結するので悪の根源であるCapsLockを無効化し追加のCtrlキーとして利用します。 僕の場合Virtual Consoleなどでも利用するため/etc/default/keyboardを下記のように書き換えました。

# XKBOPTIONS=""
XKBOPTIONS="ctrl:nocaps"

書き換え後下記コマンドを実行して即時適用しました。バイバイCapsLock

% sudo dpkg-reconfigure -phigh console-setup

なおこの設定方法はconsole-setupを使用している場合のみ有効です。 他の方法などはCapsLockをCtrlにするまとめ を参照してください。

2. プロキシの設定を行う

ラボのネットワーク環境はプロキシが必須なので最初にプロキシの設定を行います。不要な方は読み飛ばしてください。

まずGnome 3の設定から行います。GUIで行なっても良いのですがTerminalで下記を実行すれば設定されます。 なおコマンド中の'host'portはご自身が利用されるプロキシの情報に読み替えてください。

% gsettings set org.gnome.system.proxy mode 'manual' 
% gsettings set org.gnome.system.proxy.http host 'host'
% gsettings set org.gnome.system.proxy.http port port
% gsettings set org.gnome.system.proxy.https host 'host'
% gsettings set org.gnome.system.proxy.https port port
% gsettings set org.gnome.system.proxy ignore-hosts "['localhost', '127.0.0.0/8']"

次に/etc/profile.d/10-proxy.shというファイルを作成し下記内容を書き込みます。 これでターミナル環境でのプロキシ設定は完了です。

PROXY=host:port
export http_proxy="http://$PROXY"
export https_proxy="https://$PROXY"
export HTTP_PROXY="http://$PROXY"
export HTTPS_PROXY="https://$PROXY"
export no_proxy="localhost, 127.0.0.1"
export NO_PROXY="$no_proxy"

なお/etc/profile.d/下で指定しているためsudoでコマンドを実行した際にも環境変数は引き継がれるのでsudoersを修正する必要はありません (正確には root の環境変数としても指定されるためsudoersenv_keepを指定する必要がないという意味です)。

通常はこの設定で問題ありませんが、より細かい情報が知りたい場合はプロキシ下でLinuxを使う際のメモ を参考にしてください。

3. 必須アプリケーションのインストール

zsh, tmux, git, vim などの必須アプリケーションのインストールを行います。 なおvimに関しては最新のビルドを使用したいため、これだけはパッケージマネージャを使わずにインストールします。

まずパッケージマネージャを用いるアプリケーションからインストールします。 下記コマンドでインストールを行なってください。

% sudo aptitude update
% sudo aptitude -y install zsh tmux git
% sudo aptitude -y install guake chromium dropbox keepassx system-config-printer

なお二回目のaptitudeでインストールしているものはすべて必須GUIアプリケーションです。 それぞれの簡単な紹介は下記を参照してください。

  • guake -- F12キーにて上からターミナルが降ってくる。ターミナルはすぐに叩けないとストレスがたまるので必須
  • chromium -- LinuxにおけるGoogle Chrome
  • dropbox -- 説明不要のクラウドサービス
  • keepassx -- パスワードマネージャ。パスワードはこれで管理しているので必須
  • system-config-printer -- GNOME 3にデフォルトで入っているプリンター設定ソフトは使い物にならないので置き換える

最新版Vimのインストール

次に最新版のVimをインストールします。下記コマンドを実行してください。 なお詳細はDebian wheezy (64bit)に最新版のVimを入れたメモ を参照してください。

% sudo aptitude -y install paco
% sudo aptitude -y install build-essential
% sudo aptitude -y install libncurses5-dev libgnome2-dev libgnomeui-dev \
libgtk2.0-dev libatk1.0-dev libbonoboui2-dev liblua5.2-dev liblua5.1-dev \
libcairo2-dev libx11-dev libxpm-dev libxt-dev
% sudo aptitude -y install python-dev ruby-dev lua5.2 ruby mercurial libperl-dev tcl tcl-dev

これでコンパイルに必要なパッケージのインストールが完了したのでVimをインストールします。

% hg clone https://code.google.com/vim/
% cd vim
% ./configure --with-features=huge \
        --disable-darwin \
        --disable-selinux \
        --enable-luainterp \
        --enable-perlinterp \
        --enable-pythoninterp \
        --enable-python3interp \
        --enable-tclinterp \
        --enable-rubyinterp \
        --enable-cscope \
        --enable-multibyte \
        --enable-xim \
        --enable-fontset \
        --enable-gui=gnome2
% make
% sudo paco -D make install

これでVimのインストールは終わりましたが、野良ビルドなので通常パッケージマネージャが行なってくれる追加作業を自前で行う必要があります。 具体的にはalternativesへの登録およびデスクトップファイルを自作です。 alternativesへの登録は自前でビルドしたVimをvisudoなどのデフォルトエディタに使用するを デスクトップファイルの詳細はfreedesktop.org 規格のデスクトップファイルについてのメモを参照してください。

alternativesへの登録は簡単です。下記コマンドを実行すれば終了します。

% sudo update-alternatives --install `which editor` editor `which vim` 100

ついでにDISPLAYXAUTHORITYをキープするようにsudoersを書き換えましょう。 sudo visudoと叩きファイルを下記を参考に修正してください。

#Defaults   env_reset
Defaults    env_keep="DISPLAY XAUTHORITY"

次にデスクトップファイルの作成に移ります。なおせっかくデスクトップファイルを作成するのでアイコンには Tango Miscs by ~tuzibranez からダウンロードできる綺麗なSVGアイコンを使用します。 ホームディレクトリにダウンロードし、下記コマンドでインストールを行なってください。

% sudo mkdir -p /usr/local/share/icons/hicolor/scalable
% tar xvzf Tango_Miscs_by_tuziibanez.gz vim2.svg
% sudo mv vim2.svg /usr/local/share/icons/hicolor/scalable/gvim.svg

次に/usr/local/share/applications/gvim.desktopを新たに下記の内容で作成してください。

#!/usr/bin/env xdg-open
[Desktop Entry]
Name=GVim
Version=7.4
GenericName=Editor
Comment=Graphical version of Vim
Terminal=false
Icon=gvim
Type=Application
Exec=gvim %U
TryExec=gvim
Categories=Programming; System Utilities

最後に書きコマンドを実行してデスクトップファイルデータベースを更新してください。

% update-desktop-database

GitをGitプロトコルが動かないプロキシ下で使えるようにする

ラボのネットワーク環境ではGitプロトコルが閉じられておりgit://から始まるURLではクローンなどができません。 僕はVimプラグインをNeoBundleで管理している関係上git://プロトコルが使えないのは非常に困るため gitのinsteadOf設定を利用してgit://というプロトコルでリクエストした場合自動的にhttps://プロトコルに読み替えるように設定しています。 下記コマンドで設定可能です。

% git config --global url.https://.insteadOf git://

この設定を行うと毎度ユーザー名・パスワードが聞かれるため非常に面倒です。 なのでgit 1.7.9以降で使えるgit-credentialを使用してパスワードをGNOMEのキーリングに管理させます。 まずは下記コマンドでgit-credential-gnomekeyring をインストールしてください。

% git clone https://github.com/shugo/git-credential-gnomekeyring.git
% cd git-credential-gnomekeyring
% make
% sudo paco -D cp git-credential-gnomekeyring /usr/local/bin/

最後にgit側で今インストールしたgit-credential-gnomekeyringを使用するように設定します。

% git config --global credential.helper gnomekeyring

BitBucketのプライベートレポジトリから設定ファイルをダウンロード&インストール

これは個人用のメモですが、この段階でzsh, git, tmux, vimのdotfilesをインストールしました。 適切なid_rsaファイルが~/.sshに無いと弾かれますが下記のようにすることですべてがインストール可能になっています。 詳しくは僕のGistをご覧ください。

% wget https://gist.github.com/lambdalisue/5916592/raw/install_dotfiles_complete.sh -O - | bash

次回予告

  1. NVIDIAのドライバを適用
  2. tmpfsの設定を変更
  3. gnome-shellの設定(拡張機能の追加)
  4. 必要GUI/CUIアプリケーションのインストール