ZONDEEL BLOG

技術と生活のログ

Ubuntu 14.04 デスクトップ開発環境構築手順 [Unity, Rails, Ramdisk, SSD]

OS:Ubuntu 14.04 LTS 日本語 Remix 64bit

ホームディレクトリ以下の日本語ディレクトリを英語名へ変更する

env LANGUAGE=C LC_MESSAGES=C xdg-user-dirs-gtk-update

インストールするパッケージ

sudo apt-get -y install curl tree libreadline-dev autoconf bison build-essential libssl-dev libyaml-dev zlib1g-dev libncurses5-dev git xclip mysql-server libffi-dev libmysqlclient-dev unrar p7zip-full vim-gtk

特に必須ではないパッケージ

sudo apt-get -y install comix smplayer

標準のエディタを vim へ変更する

sudo update-alternatives --config editor

sudo のパスワード入力を省略

以下コマンドを実行し

sudo visudo

開いたテキスト内に以下を追記します。

username ALL=(ALL) NOPASSWD:ALL

ssh-agent を設定する

~/.ssh ディレクトリ以下に秘密鍵を配置する。
設定した鍵の内容が出力されること。

$ ssh-add -l
2048 xx:xx:xx...

登録された鍵の確認をする

ssh-add ~/.ssh/private_key
.ssh/config を作成する

.ssh/config を作成し、以下の内容を記述します。

ForwardAgent yes

使用するフォントをインストールする

プログラミング用フォントの Ricty を使用する。

yascentur/Ricty · GitHub

作成した .ttf ファイルを fonts ディレクトリに配置します。
/usr/share/fonts/truetype/ 以下に ricty ディレクトリを作成します。
fc-cache コマンドは fonts ディレクトリを再スキャンします。

mkdir /usr/share/fonts/truetype/ricty
cp ./*.ttf /usr/share/fonts/truetype/ricty
sudo fc-cache -fv

Gnome terminal へフォントを設定する

gnome terminal では何故かフォント設定で Ricty を設定できないので
以下のコマンドで設定を行う。

gconftool-2 --get /apps/gnome-terminal/profiles/Default/font
gconftool-2 --set /apps/gnome-terminal/profiles/Default/font --type string "Ricty Regular 12"

Vimの設定

neobundle をインストールする

vim 内のパッケージ管理を行うツール

.vimrc を設定

github から以下のリポジトリを clone して
シンボリックリンクを張る。

git clone https://github.com/zondeel16/dotfiles.git

AppArmorを無効化

AppArmorとは以下のようなものです。

AppArmor - openSUSE
Linuxキーワード - AppArmor:ITpro

セキュリティを上げるために存在するものだが
自分環境上非常にハマる要因となるため、無効にして運用する。

grubの設定を開きます。

sudo vi /etc/default/grub

以下の GRUB_CMDLINE_LINUX を変更します。

GRUB_CMDLINE_LINUX="apparmor=0"

編集後、Grubの設定を更新し再起動します。

sudo update-grub
sudo reboot

Unity の設定を変更する。

unity-tweak-tool をインストールし、各設定を変更する。

sudo apt-get install unity-tweak-tool
unity-tweak-tool

基本的には演出をすべて切る。
特に Window snapping は嫌なので切る。

スクロールバーの表示を変更

スクロールバーの仕様がオンマウスして表示されるようなもので
使いづらいので以前のようなスタイルに以下のコマンドで変更する。

gsettings set com.canonical.desktop.interface scrollbar-mode normal

デュアルディスプレイの場合に行う設定

システム設定 > ディスプレイ を開き、
「ディスプレイを隣接する」をオフにします。

こうしないと中間部分で引っかかってしまう様子。

その他の設定

Ubuntu 上で MySQL の tmpdir, datadir を別ストレージ(SSD)、 Ramdisk へ変更する。

Ubuntu 14.04 LTS を使用しています。

SSDにOSが入っており、
HDD及びRamdiskにアクセスを逃がす意味で設定を行います。

以下のようなディレクトリに各デバイスをマウントします。

HDD = /storage (注:/mnt/XXX に対するシンボリックリンク)
SSD = /ramdisk

各設定とディレクトリは以下のようにつながります。

tmpdir: /ramdisk
datadir: /storage/mysql

tmpdir の変更

my.cnf を開き

sudo vi /etc/mysql/my.cnf

tmpdir 項目を変更する。

tmpdir = /ramdisk

注意すべきはこの設定を適用した場合に
MySQL を起動すると /ramdiskパーミッション
777 の場合だとしても権限がないと以下のように怒られてしまう。

/usr/sbin/mysqld: Can't create/write to file '/ramdisk/ib4pRsqd' (Errcode: 13)

結論としては AppArmor がアクセス制御している為で、
今回は MySQL を AppArmor の制御外とすることで対処します。

sudo apt-get install apparmor-utils
aa-disable /usr/sbin/mysqld

これで tmpdir の変更が出来たと思います。

datadir の変更

HDDのマウント

fstab を開き

sudo vi /etc/fstab

以下のような内容を書き込みます。
今回は権限が 777 となるよう umask=000 を指定しています。

/dev/disk/by-uuid/XXXX-ZZZZ /mnt/XXXX-ZZZZ auto nosuid,nodev,nofail,users,rw,umask=000 0 0
my.cnf の設定

my.cnf を開き

sudo vi /etc/mysql/my.cnf

user, datadir 項目を変更する。
今回は user を root に変えているのは
storage を root にてマウントしているためです。

user = root
datadir = /storage/mysql

上記を設定したら以下コマンドを実行しデータベースを作成します。
今回は初期状態として扱っていますが、既存のデータがある場合には
対象のディレクトリに元のデータをコピーしておけば良いと思います。

mysql_install_db

ここまでやった後に、通常通り MySQL が起動をします。
起動しない場合、 /var/log/mysql/error.log などを確認ください。

# service mysql start
mysql start/running, process 6298

# mysql -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.5.38-0ubuntu0.14.04.1 (Ubuntu)
...
..

Ubuntu で Ramdisk を作成し、キャッシュをそこに移動する。

Ubuntuの場合それほどメモリを消費しないので
余剰分のメモリで Ramdisk を作成してキャッシュファイルをそこへ移動する。
(SSDへの書き込みを減らす意味も含めている。)

Ramdiskという性質上、その場合のキャッシュファイルについては
再起動等で消去されてしまうことになる。

また、環境としては Ubuntu 14.10 64bit(β) を使用しているが
あまり関与しない情報だと思う。

Ramdisk の作成

マウント先を作成する。

sudo mkdir /ramdisk
sudo chmod 777 /ramdisk

fstab を編集し、1.5Gの容量の Ramdisk を作成する。

sudo vi /etc/fstab

以下を最終行に追記する。

16.04 等 14.04 以降の場合
tmpfs     /ramdisk tmpfs rw,size=2G,x-gvfs-show     0 0
14.04 の場合
/dev/shm /ramdisk tmpfs size=1536m 0 0


使用するファイルシステムは tmpfs と ramfs があるようだが、
tmpfs は確保するメモリ容量を可変で使ってくれるらしい。

■参考
RAM ディスク - ArchWiki
tmpfs は本当に容量が動的なのか - naoyaのはてなダイアリー

マウントする。
(fstabにある設定のものを全てマウント)

sudo mount -a

正しくマウントされているかを確認する。
以下のように設定通りのものが表示されれば大丈夫。

df -h | grep ramdisk
/dev/shm        1.5G   32M  1.5G   3% /ramdisk

キャッシュファイルを Ramdisk へ移動する

今回の対象は以下の2ディレクトリ。
乱暴だが一旦削除してしまう。

rm -rf ~/.cache
rm -rf /tmp

削除したディレクトリの代わりに
Ramdisk へのシンボリックリンクを作成する。

ln -s /ramdisk ~/.cache
sudo ln -s /ramdisk /tmp

Ramdisk とは関係ない余談

.xsession-errors が HOME 直下に日々書かれるのが気になる。
出力先を変える方法が分からなかったので、 /dev/null へリンクする。

以下の内容を .bashrc へ追記する。

# .xsession-errors can grow huge... remove it
if [ ! -h $HOME/.xsession-errors ]
then
    /bin/rm $HOME/.xsession-errors
    ln -s /dev/null $HOME/.xsession-errors
fi
 
if [ ! -h $HOME/.xsession-errors.old ]
then
    /bin/rm $HOME/.xsession-errors.old
    ln -s /dev/null $HOME/.xsession-errors.old
fi

■参考
.xsession-errors can grow HUGE | The Ubuntu Incident