Debian Wheezy 64bit をクリーンインストールしたメモ01
どうも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: Linux系であればソフトウェア上でRAIDを構築できる。パフォーマンスも最近は悪くなく通常利用であれば十分
- オンボードRAID: 稀にマザーボードにRAID機能が組み込まれていることがある。基本的にはソフトウェアRAID程度のパフォーマンスしか発揮できない上 ソフトウェアRAIDと異なりマザーボードが故障した場合データの復旧は絶望的(ソフトウェアRAIDの場合異なるPCに繋ぎ変えれば復旧可能)
上記の理由から大規模サーバーなどはハードウェア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 の環境変数としても指定されるためsudoers
でenv_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
ついでにDISPLAY
とXAUTHORITY
をキープするように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