2011年2月24日木曜日

USB boot Linux - Live-Helper -

今回は掲題の通り、1本のUSBメモリからPCをUSB bootして
自分で構築した独自のLinux環境を起動する Live-Helperに
ついて書きたいと思います。
この手のツールにはRemastersysやその他のツールがあるようです
が、Live-Helperの良いところは
【最小構成の軽量Linux環境を独自にカスタマイズ出来る】
という点です。
現在Live-Helperは情報が雑然としており、バージョンアップ
による仕様変更が多発し、本家の英語ドキュメント(公式)
さえも間に合っていない程活発に開発されているようです。

以前作業環境として、Debianをインストールして、Debian上で
Live-Helperを動かしてみたんですが、上手くいかずに挫折した
ので、今回はUbuntu 10.10(Desktop版)を使用して見ることに
しました。結果上手くいったので手順を載せてみます。

1. Live-Helperのインストール
下記コマンド一発で楽々インストール
apt-get -y install live-helper

2. バージョンの確認
前述のとおりバージョンによって仕様が違う為確認しておきます。
Ubuntuのバージョン
cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=10.10
DISTRIB_CODENAME=maverick
DISTRIB_DESCRIPTION="Ubuntu 10.10"


次にLive-Helperのバージョン
dpkg -l | grep live-helper
ii  live-helper                          2.0~a21-1                                       Debian Live - System Build Scripts (transitional package)


Live-Helperはapt-getでいれたものです。

☆注意
Debian(lenny)のLive-Helperはバージョンが古く、
lh_config コマンド(アンダーバーが間にくる)や
lh_build コマンドになっています。
UbuntuのLive-Helperはバージョンが新しく、
lh config コマンド(スペースが間にくる)や
lh build コマンドになっています。

3. 作業環境の構築
私は /root/ 直下に work というディレクトリを作成してrootで作業しました。
mkdir -v /root/work
cd /root/work/

UbuntuからLive-Helperを利用すると、Ubuntu Live USB Linuxを
作成するか、Debian Live USB Linuxを作成するか選べます。
最初Ubuntu Live USB Linuxを作成してみたのですが、なぜか
原因不明ですがテスト起動した際に正常に起動できず
(initramfs)> みたいなプロンプト表示になってしまったので
諦めてDebian Live USB Linuxを作成してみました。

4. 最小限の構成でテスト
以下のコマンドで最小構成のDebian Live USB Linuxが出来上がります。
lh config --mode debian -b usb-hdd
lh build

たった上記2コマンド。
-b usb-hdd の指定は、USBメモリから起動できるイメージを作成する
際に利用する引数です。VMware Player等の仮想環境でとりあえず
テストして、上手くいったらUSBメモリ用のイメージを作成する
という作り方をすれば、いちいち本物のUSBメモリに書き込んで
テストする手間が省けるため、通常は上記ではなく下記で
テストします。
lh config --mode debian -b iso
lh build

カレントディレクトリ内に [binary.iso] というファイルが出来上がる
ので、このイメージファイルを仮想環境でテスト起動してみます。
上手くいけばとりあえず第一段階はクリアです。

5. カスタマイズ
4.の要領でビルド出来るようになったら、今度は自分好みにカスタマイズ
してみます。
以後は、ビルド(lh build)しなおす度にビルド直前に下記コマンドを実行してからビルドします。
lh clean

カスタマイズする方法は色々あるようですが、私はなるべくシンプルに
出来るように、設定をシェルスクリプトに全部書くことにしました。

vim /root/setup.sh

#!/bin/sh

# --mode ubuntu は上手くいかないので --mode debian でテスト

lh config --language ja --bootappend-live \
"locale=ja_JP.UTF-8 klayout=jp quickreboot" \
--packages "screen partimage vim less ssh lsof" \
--mode debian \
--distribution lenny \
--username falcon \
--hostname falcon-system \
--mirror-bootstrap "http://ftp.jp.debian.org/debian/" \
--mirror-binary "http://ftp.jp.debian.org/debian/" \
--mirror-chroot "http://ftp.jp.debian.org/debian/" \
--mirror-chroot-security "http://security.debian.org/" \
--mirror-binary-security "http://security.debian.org/" \
--iso-volume falconLive \
--syslinux-timeout 10 \
--syslinux-splash "config/binary_syslinux/falcon.jpg" \
--binary-images usb-hdd \
--archive-areas "main contrib non-free"

chmod a+x ../setup.sh

lh config コマンドの引数について順次説明します。
【省略形】|【フルスペル】

説明 or コメント
の要領で書きます。

-l|--language ja

言語設定を日本語に設定。

--bootappend-live "locale=ja_JP.UTF-8 klayout=jp quickreboot"

Live Linux起動時のBootパラメータ指定。
locale=ja_JP.UTF-8 で日本語のロケールを設定
klayout=jp ←非常に重要。情報が混乱している為
サイトによっては kmodel=ja keyb=jp106 等があるが
今回のバージョンでは、日本語のキーレイアウトに設定
したいなら、klayout=jpのみを指定する。
この指定により、下記コマンドと同等の効果が得られる模様
dpkg-reconfigure console-data

[qwerty]→[jp106]キーボードを選択
起動後のLive Linuxで適切なキーマップになる。
quickreboot で再起動時のメディアの取り外しの確認を省略できる。
ちなみに persistent をつけてしまうとBug#500672
に遭遇し、正常に起動することができない。←ハマりました。

-p|--packages "screen partimage vim less ssh lsof"

Live Linux環境へインストールするパッケージを記述。
とりあえずテストで適当にいれてみた。 ssh を入れることで
Live Linux起動時に自動的にsshサーバが立ち上がるので遠隔ログイン可能に。

--mode debian

"debian"と"emdebian"と"ubuntu"が指定可能。今回はdebianで。

-d|--distribution lenny

今回は--mode debianなので、 lenny or squeeze or sid のどれかを指定出来ると思う。
--mode ubuntu だとUbuntuの開発コードネームを指定するのかなと。
安定した環境で構築したいので現在の安定版 lenny を選択する。

--username falcon

Live Linux起動時に自動的にログインするユーザ名。falconにしましたw
なお、パスワードは自動的に "live" になります。このパスワードを変更してビルドする方法
はちょっとまだ調べきれていません。知っている人教えてください><

--hostname falcon-system

Live Linuxのホスト名を設定する。falcon-systemにしましたw
Sambaをインストールすれば NetBIOS経由でLAN内でホスト名による名前解決が出来そうですね。

-m|--mirror-bootstrap "http://ftp.jp.debian.org/debian/"

--mirror-binary "http://ftp.jp.debian.org/debian/"
--mirror-chroot "http://ftp.jp.debian.org/debian/"
--mirror-chroot-security "http://security.debian.org/"
--mirror-binary-security "http://security.debian.org/"

Live-Helperスクリプトからパッケージを拾いに行くサーバの指定
及びLive Linux起動時の /etc/apt/sources.list ファイルの内容指定。
この辺は --mode debian を選んだなら日本のdebianサイトを指定。
--mode ubuntu の場合はUbuntuの日本サイトを指定する。

--iso-volume falconLive

メディアにコピーした際のボリューム名の指定。
この引数そのものを省略すると
(--modeで指定した値) (--distributionで指定した値) (イメージ作成時の日付)
という形で名前がつけられます。お好みで。

--syslinux-timeout 10

この引数を省略すると、Live Linux起動時にEnterキーを押下しない限りブートシーケンス
が走らない。放置してても自動的にKernelを起動する秒数を指定する。

--syslinux-splash "config/binary_syslinux/falcon.jpg"

この引数は省略して問題ありません。
Live Linux起動時の背景となる壁紙を指定します。
syslinuxなのでsyslinuxの壁紙に設定できる条件を満たした壁紙ファイルを作成する必要があります。
条件: 640x480 解像度で、 256色 .jpg or .png 画像だったかな。

-b|--binary-images usb-hdd

この引数を省略すると、自動的に iso が指定されたことになります。
ビルド時に、CD(光学メディア)焼き用のイメージファイルを作成するか
USBメモリコピー用のイメージファイルを作成するか、その他にも
iso-hybrid or net or tar
等が指定できるようですが、isoとusb-hdd だけ抑えておけばいいかなと。
今回はUSBメモリ用をつくるので、 usb-hdd を指定する。

--archive-areas "main contrib non-free"

apt-getで拾ってくる際のリポジトリ範囲にどのカテゴリに属する
ソフトウェアを含めるかを指定する。
この引数を省略すると main のみが指定されたことになります。
多くのソフトが欲しいのでフル指定しています。
重要:古いバージョンでは --categories という引数でしたが
今回のバージョンでは --archive-areas に変更されています


とりあえず現状はこんな感じです。
これで、ビルドする際は下記コマンドで
cd /root/work
lh clean
../setup.sh
lh build

これで、/root/work/の下に binary.img ファイルが生成されます。
--binary-images iso 指定していた場合は binary.iso が生成されます。
後は binary.iso の場合はライティングソフトでCDにISO焼きすれば出来上がり。
binary.img の場合は ddコマンドで
dd if=binary.img of=

とすれば書き込めます。USBメモリのデバイスの指定は
例えば
/dev/sdb
等になります。
/dev/sdb1
等とパーティション番号まで指定してしまわないようにご注意ください。
※USBメモリの中身は全て消えてしまいます。

Live Linux起動時に "home-rw" という名前のラベルがついたパーティションは
自動的に /home に書き込み可能でマウントされるという情報や
"live-rw"という名前のラベルがついたパーティションは
/ 以降全ての領域に書き込み可能で差分を保存できるという情報も
ネット上にはあるのですが、なぜか上手くいきませんでした。
既存のデータを削除せずラベル名だけ付けるには
tune2fs -L live-rw /dev/sdb2


パーティションをフォーマットする際にラベルをつけるには
mkfs.ext3 -L live-rw /dev/sdb2

等とします。

でも自動的にマウントしてくれないので、現状はfstabにラベル指定でごまかしています。
他にも色々テクニックがあるようですが、とりあえず今回はこの辺まで・・・。

【追記】
--mode debian

等の、ハイフン ハイフン とハイフンを2個連続で書くとブログの仕様で
ハイフンが1個に化けてしまっている箇所がありますのでご注意下さい。
記述ミスではありません。

2011年2月2日水曜日

最強デフラグソフト PerfectDisk

最近やたらとディスクアクセスが遅いなと感じ始めていたので、普段メインで使っている
WindowsXPマシンのHDDをデフラグしてみました。
普段はたまにWindows標準のデフラグツール
[%SystemRoot%\system32\dfrg.msc]
を使用しているのですが、どうもやっぱり貧弱なようで。
何が問題かというと、ただデフラグするだけで最適化はしないんですね。
ファイルが断片化してあるのをまとめるだけで、まとめた後空いたスペースを
ぎゅっと詰めて後から書き込まれるファイルが断片化
しにくいように、またスムーズに書き込めるようにしたり
ファイルのアクセス頻度に応じて並べる位置を変えたりといった
最適化処理が全くされないのです。
有名どころで、最もパフォーマンスチューニングに効果があるデフラグソフトと言えば
なんといっても PowerX PerfectDisk 11 Pro でしょう。

O&O Defragや Diskeeper等ありますが、PerfectDiskはそれらのソフトとは
一線を画しています。

1. SmartPlacementという独自最適化アルゴリズムを搭載している。
 このアルゴリズムは特許取得済みで他のソフトは真似する事が出来ません。
2. MFT(Master File Table、HDD先頭にあるBootセクタの次の領域)や
システムファイル(pagefile.sys等Windowsが普段ロックしているファイル)
等の最適化にも対応している。
3. ファイルの使用頻度で最適に並べた後、空き領域をまとめて確保する機能を搭載している。
4. Microsoftの承認を受けています。
 安全だということですね。

上記は氷山の一角に過ぎず、その他にも色々とパフォーマンスを引き出す機能を搭載しているようです。

間違いなくPerfectDiskがWindowsをデフラグする上では最強だと思います。

フリーソフトで済ませたいという方にはMyDefrag がオススメです。
会社のPCに製品であるPerfectDiskをインストールするわけには
いかないので、会社のPCへはMyDefragをインストールしました。

ポイントとしては、よく巷で「高速にデフラグ出来る!」とか「作業しながらでも負荷が少なくデフラグ出来る!」
とかあると思うのですが、それらは結局中途半端で、本当に最大限のパフォーマンスを引き出そうと思うならば
本気でデフラグする必要があります。PerfectDiskは多少デフラグに
時間がかかるものの、効果は絶大です。
その理由は、しっかり手を抜かずに完璧にデフラグしているからに他なりません。
時間がかかる問題なんて、寝ている間とか出かけている間に
デフラグさせておけばいいのです。
大体作業しながらデフラグなんて効率が非常に悪くてやらない方がいいと思います。

PowerX PerfectDisk 11 Pro

2011年2月1日火曜日

Linuxで消してしまったファイルを復元

私はそんなミスは今までに1度もしたことがないのですが、

rm -rf /

みたいな感じにLinuxサーバ上で とあるディレクトリ以下を全部削除するみたいな
ミスをしてしまうと、多分絶望しますよね。

そういう場合に使えるのは PhotoRec しかないと
思っていました。たまたま
下記の記事↓
Linuxでうっかりrm -rfしちゃったけど復活出来たよー\(^o^)/
を見つけました。extundeleteですか!
そんなのがあるんですね!万が一の際には
使ってみようと思います。