Mac min mid2011 Lion から玄箱HG に Time Machine でバックアップする方法 [mac][linux]

Lion からは netatalk 2.2beta3 以降でなければ Time Machine が使えないようなので、玄箱HG に netatalk 2.2.1 をインストールします。

Berkeley DB

netatalk をビルドするための準備です。
5.x 系は、Sign up が必要なようなので 4.8.30 をダウンロードします。

下記のように、ビルド、インストールします。

$ wget http://download.oracle.com/berkeley-db/db-4.8.30.tar.gz
$ tar zxfp db-4.8.30.tar.gz
$ cd db-4.8.30
$ cd build_unix/
$ ../dist/configure
$ make
$ sudo make install


Avahi

Finder に玄箱が表示されるようになります。

下記のように、ビルド、インストールします。

$ wget http://www.avahi.org/download/avahi-0.6.30.tar.gz
$ cd avahi-0.6.30
$ CFLAGS="-D_NETBSD_SOURCE=1"
$ LD_LIBRARY_PATH="/usr/local/lib"
$ LDFLAGS="-L/usr/local/lib -lintl -Wl,--rpath -Wl,/usr/local/lib"
$ ./configure --disable-glib --disable-gobject --disable-qt3 --disable-qt4 --disable-gtk --disable-gtk3 --disable-dbus --disable-python --disable-mono --disable-autoipd
$ make
$ sudo make install


netatalk

下記のように、ビルド、インストールします。

$ tar jxfp netatalk-2.2.1.tar.bz2
$ cd netatalk-2.2.1
$ LD_LIBRARY_PATH=/usr/local/BerkeleyDB.4.8/lib
$ export LD_LIBRARY_PATH
$ ./configure --sysconfdir=/etc --enable-debian --with-bdb=/usr/local/BerkeleyDB.4.8 --with-shadow --with-pam --with-ssl-dir=/usr/lib
$ make
$ sudo make install
$ sudo vi /etc/netatalk/AppleVolumes.default
下記を追加。
:DEFAULT: options:upriv,usedots dperm:0700 fperm:0600 maccharset:MAC_JAPANESE ea:sys
/mnt/timemachine "Time Machine Vol" options:tm


以上で、玄箱HG 側の準備は完了です。

Mac mini の Time Machine の [バックアップディスクを選択] から、玄箱HG のマウントポイント "Time Machine Vol" を指定します。
すると、Time Machine で玄箱HG にバックアップするようになります。

最初は、[オプション]-[バックアップから除外する項目] にサイズの大きいディレクトリを指定し、バックアップする容量を軽めにして試してみると良いと思います。

ref.
- Netatalk and Samba

玄箱の HDD を交換 [linux]

[2008-09-06] に玄箱の HDD を交換したのですが、また空き容量が少なくなってきたのでより大容量の HDD に交換して容量を増やすことにしました。

現在の Seagate Barracuda ST31000340AS (1TB) から Seagate Barracuda ST31500541AS (1.5TB) に交換します。

Seagate Barracuda ST31500541AS は 秋葉原のクレバリー で 10,770円でした。


作業は、CD-ROM ブートの Ubuntu8.04 に新旧 HDD をそれぞれ USB 外付けで行いました。

まず、パーティションを作成します。
第1パーティション、第2パーティション (swap) は元の HDD と同容量にし、データ用の第3パーティションは MAX 確保しました。

元のディスクのパーティションはこんな感じ。

$ sudo fdisk /dev/sdb

このディスクのシリンダ数は 121601 に設定されています。
間違いではないのですが、1024 を超えているため、以下の場合
に問題を生じうる事を確認しましょう:
1) ブート時に実行するソフトウェア (例. バージョンが古い LILO)
2) 別の OS のブートやパーティション作成ソフト
   (例. DOS FDISK, OS/2 FDISK)

コマンド (m でヘルプ): p

Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

 デバイス Boot Start End Blocks Id System
/dev/sdb1 1 261 2096451 83 Linux
/dev/sdb2 262 293 257040 82 Linux swap / Solaris
/dev/sdb3 294 121601 974406510 83 Linux


新しいディスクにパーティションを作成し、このようになりました。

$ sudo fdisk /dev/sdc

このディスクのシリンダ数は 182401 に設定されています。
間違いではないのですが、1024 を超えているため、以下の場合
に問題を生じうる事を確認しましょう:
1) ブート時に実行するソフトウェア (例. バージョンが古い LILO)
2) 別の OS のブートやパーティション作成ソフト
   (例. DOS FDISK, OS/2 FDISK)

コマンド (m でヘルプ): p

Disk /dev/sdc: 1500.3 GB, 1500301910016 bytes
255 heads, 63 sectors/track, 182401 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

 デバイス Boot Start End Blocks Id System
/dev/sdc1 1 261 2096451 83 Linux
/dev/sdc2 262 293 257040 82 Linux swap / Solaris
/dev/sdc3 294 182401 1462782510 83 Linux

次に、パーティションをフォーマットします。

$ mkfs.ext3 /dev/sdc1
$ mkfs.ext3 /dev/sdc3


次に、元のディスクから新しいディスクにデータをコピーします。
Ubuntu 8.04 には dump, restore コマンドが入っていなかったので、今回は dd で行いました。

$ sudo dd if=/dev/sdb1 of=/dev/sdc1 bs=16k
1310281+1 records in
1310281+1 records out
2146765824 bytes (2.1 GB) copied, 99.8993 seconds, 21.5 MB/s
$ sudo dd if=/dev/sdb3 of=/dev/sdc3 bs=16k
60900406+1 records in
60900406+1 records out
997792266240 bytes (998 GB) copied, 44700.2 seconds, 22.3 MB/s


dd で行ったからか、前回は仮想マシンから作業していたからか、原因はわかりませんが、今回のほうがコピー時間は短かったです。
前回 64時間半が、今回は 12時間半でした。


次に MBR をコピーします。

$ sudo dd if=/dev/sdb of=mbr.img bs=512 count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.0192365 seconds, 26.6 kB/s
$ sudo dd if=mbr.img of=/dev/sdc bs=446 count=1
1+0 records in
1+0 records out
446 bytes (446 B) copied, 0.0501263 seconds, 8.9 kB/s


さらに容量を増やしたパーティションのファイルシステムのサイズをパーティションのサイズ一杯まで増やします。

$ mkdir /mnt/sdc3
$ mount /dev/sdc3 /mnt/sdc3
$ sudo resize2fs -p /dev/sdc3
resize2fs 1.40.8 (13-Mar-2008)
Filesystem at /dev/sdc3 is mounted on /mnt/sdc3; on-line resizing required
old desc_blocks = 59, new_desc_blocks = 88
Performing an on-line resize of /dev/sdc3 to 365695627 (4k) blocks.
The filesystem on /dev/sdc3 is now 365695627 blocks long.


これで作業は完了。

新しい HDD を KURO-BOX に組み込み、起動してみます。

無事、起動しました。
空き容量が増えていることも確認できました。

HDD のスピンアップのタイミングが変わったからか、7200rpm から 5900rpm に変更して消費電力が減ったからか、LED 6 回点滅は発生しなくなりました。

玄箱の HDD を交換 [linux]

玄箱の空き容量が少なくなってきたので HDD を交換して容量を増やすことにしました。

現在の日立 Deskstar HDT725050VLA360 (500GB) から Seagate Barracuda ST31000340AS (1TB) に交換します。

続きを読む

bash のコマンド履歴を Ctrl+r で遡りすぎた場合の対処法 [linux]

bash では Ctrl+r で履歴を後方検索する機能があります。
Ctrl+r を押すたびに (reverse-i-search) `': に入力した文字列を含むコマンドラインを新しいものから順に検索でき、とても便利です。

しかし、誤って Ctrl+r を押しすぎ、目的のコマンドを通りすぎてしまうことがあります。

そんな時は、Ctrl + g でキャンセルし、再度 Ctrl+r で検索していました。
でも、もうちょっと楽な方法を見つけました。

まず、準備としてターミナルのロック機能が Ctrl+s に割り当てられているのを解除します。

$ stty stop undef


常に割り当てない場合は .bashrc などに書いておくとよいでしょう。
準備は以上です。

Ctrl+r で目的のコマンドを通り過ぎてしまったあと、Ctrl+s を押します。
するとコマンドラインが (i-search)`<検索中の文字列>': となり、前方検索に変わります。
あとは、目的のコマンドまで Ctrl+s で戻れば OK.

Device or resource busy のマウントポイントをアンマウントする方法 [linux]

Windows のファイル共有などを Linux からマウントしていて、
それをアンマウントせずに PCを他のネットワークに移動させてしまうとアンマウントできなくなってしまいます。

# umount /mnt/windows
unmount error 16 = Device or resource busy
Refer to the umount.cifs(8) manual page (man 8 umount.cifs)


こんな時は -l オプションを付けて umount します。

# umount -l /mnt/windows


man umount より

-l lazy アンマウント。現在のファイルシステムの階層構造から指定さ れ
              た フ ァイルシステムを切り離し、ファイルシステムへの全ての参照が
              busy でなくなった時点ですぐに整理する。 (カーネル 2.4.11 以降 で
              ある必要がある。)

ターミナルがおかしくなった場合は reset コマンド [linux]

ターミナルでバイナリファイルをcatコマンドで表示したりすると、文字化けしたり、改行がおかしくなったりします。

そんな時は「reset」と打てば直ります。

Ctrl-l (clear) では現在表示されているものが消えるだけで、症状の解消はできません。

ref.
- バイナリファイルを表示して画面が乱れたときは / @IT

Fedora Core5 の IM Anthy を Emacs から使う [emacs][linux]

Fedora Core5 で標準の日本語かな変換は Anthy ですが、デフォルトでは Emacs から使えないので、設定した。

まず、anthy-el をインストール。

$ sudo yum install anthy-el


そして、.emacs に下記を記述

(set-language-environment "Japanese")
(push "/usr/local/share/emacs/site-lisp/anthy/" load-path)
(load-library "anthy")
(setq default-input-method "japanese-anthy")
(global-set-key "\C-o" 'toggle-input-method) ;Ctrl-o 日本語on/off


最初、1 行目の "(set-language-environment "Japanese")" と 2 行目以降を離して書いていたが、うまく動かなかった。
深くは追っていないが、間に書いてある設定文が影響しているっぽい。

rsync で Mac -> 玄箱 バックアップ [mac][linux]

Mac のファイルを玄箱にバックアップする方法としてまず思い浮かぶのは rsync。

rsync を試してみると、日本語のファイル名が文字化けしてしまいます。
玄箱の共有ディレクトリを Mac でマウントして rsync することで解決できました。

以下、詳細。

続きを読む

Linuxでデフォルトゲートウェイを設定する方法 [linux][network]

# route add default gw 192.168.1.1

シェルの論理演算子 && と test コマンドの論理演算子 -a [linux]

よくシェルの条件式で使われる AND 論理演算子の && や -a.
実は動作が異なることを最近知りました。

例えば、以下。

if [ -n "$num" ] && [ "$num" -lt "$MAX" ]; then
    ...


$num が null ではなく、$MAX より小さい場合は ...を行うという条件文です。

$num が null の場合、-n の評価で偽となるため -lt は評価されません。

test コマンドの -a を使って以下のように書くと。。

if [ \( -n "$num" \) -a \( "$num" -lt "$MAX" \) ]; then
     ...


 -lt の部分も評価されます。
 -lt は 2 項演算子ですが、$num が null のためエラーとなってしまいます。

今回の意図通りに動作させるには && を使った方が正解。

ref.
- 入門bash 第3版 p.125

入門bash 第3版

sudo の設定 [sudo][linux]

まず、 /etc/sudoersファイルの編集を編集し、sudo を有効にするグループを指定します。

# visudo
 %wheel ALL=(ALL) ALL
の行のコメントをはずします。

これでグループ wheel の sudo が有効になったので、sudo したいユーザを wheel に所属させます。

# usermod -G <グループ名> <ユーザー名>

rdesktop [linux]

Linux PC から Windows にリモートデスクトップで接続するために導入。

$ rdesktop -u <ユーザ名> -f -k ja -a 16 <接続先ホスト名 or IP>

ユーザ名を指定しておくとログオン画面で自動的にユーザ名が入力される。
-f フルスクリーンモード。フルスクリーンモードで rdesktop をやめるにはスタートメニューから切断を選択する。
US キーボードの PC で rdesktop を実行する場合は "-k ja" はいらない。Alt+~ で日本語入力 OK.
色数は -a で指定する。"-a 24" を指定しても強制的に 16 となった。

以下参考文献 (ちょっと古い)
- Windows XPのリモートデスクトップ機能を使うには / @IT