2012.02.24
Windows版のGoogle日本語入力で設定した config1.db を持ってきて ~/.mozc の下に置いた。

C-k カタカナに変換
C-l 半角に変換
C-n 予測変換を選択
2012.02.13
http://d.hatena.ne.jp/hirose31/20100729/1280380054 のやり方を追試した。
VMware Fusion 3.1.3 でもGUIでは設定できないように思う。

vmwarefusion_serial.png

ので、同じように .vmx ファイルを直接編集する。
[Mac:~/Documents/VMware/FreeBSD.vmwarevm] say% diff -u FreeBSD.vmx.orig FreeBSD.vmx
--- FreeBSD.vmx.orig 2012-02-12 13:36:55.000000000 -0500
+++ FreeBSD.vmx 2012-02-12 13:37:48.000000000 -0500
@@ -79,7 +79,9 @@
ide0:1.fileName = "3.vmdk"
ide0:1.redo = ""
serial0.present = "TRUE"
-serial0.fileType = "file"
+serial0.fileType = "pipe"
serial0.fileName = "/Users/user/Downloads/serial-port"
+serial0.tryNoRxLoss = "TRUE"
+serial0.startConnected = "TRUE"
scsi0:0.present = "FALSE"
floppy0.present = "FALSE"
なお、編集後は、こんな感じになる。

vmwarefusion_serial2.png

元記事と同じように socat をダウンロードして普通に ./configure && make で作った socat 1.7.2.0 を使う。

TCPポートにブリッジするには、
% ./socat unix-connect:/Users/user/Downloads/serial-port tcp-listen:1919,reuseaddr,crnl
した上で別のターミナルで
% telnet 127.0.0.1 1919
などとすればつながる。

ただ、この方法だと(少なくとも自分の環境では)入力が二重になるなどイマイチだったので、次のように Jerminal などを使ってPTYにブリッジした方が使いやすい。
% ./socat unix-connect:/Users/user/Downloads/serial-port pty,raw,echo=0,link=/tmp/socket
した上で、Jerminalで接続する。(元記事とは違い link=... は普通に使えた)
% jerm /tmp/socket
Jerminal v0.8095 Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 candy
Type "Ctrl-M ~ ." to exit.
ispeed 9600 ospeed 9600
+IGNBRK -BRKINT -IGNPAR -PARMRK -INPCK -ISTRIP -INLCR -IGNCR -ICRNL -IXON -IXOFF -IXANY -IMAXBEL
-OPOST +ONLCR -OXTABS -ONOEOT
cs8 -CSTOPB +CREAD -PARENB -PARODD +HUPCL +CLOCAL -CCTS_OFLOW -CRTSCTS -CRTS_IFLOW -MDMBUF +ECHOKE -ECHOE -ECHO -ECHONL -ECHOPRT +ECHOCTL -ISIG -ICANON -ALTWERASE -IEXTEN
-EXTPROC -TOSTOP -FLUSHO -NOKERNINFO -PENDIN -NOFLSH

host# pwd
/root
host#
(ちなみに上記の元記事で "pty:raw,..." のところは "pty,raw,..." のtypoだと思う。)
2012.02.12
New Serverで買ったハードディスク(Seagate ST31000528AS)が壊れたので新しいハードディスクを探してたら、去年のタイの洪水の後ハードディスクの価格が上がったままだった。安いディスクは少ししかなく、ほぼ Seagate と Western Digital の二択だった。この二社のディスクは1TB/1.5TB/2TBくらいの容量で価格が拮抗してた。

Newegg/Amazon/Google Product search などを検索したところ、Western Digital Elements 2TB Desktop External Hard DriveSeagate Barracuda Green ST2000DL003 2TB 5900 RPM 64MB Cache SATA 6.0Gb/s 3.5" Internal Hard Drive -Bare Drive がそれぞれ 2012/02/13 まで$20引きかつ Free Shipping で $119 と $109 で売られていたので早速購入した。(ちなみに、Amazon.com と違い Newegg はNY州でも税金を徴収しないので、その分少し安い)

ちなみに、WDBAAU0020HBK はハードディスクエンクロージャーに入った外付けディスクだけど、もともと、今サーバに入ってる1TBのディスクを外につないでバックアップ用に使い、新しく購入した2TBディスクx2を内部で使おうと思ってたので、WDBAAU0020HBK からディスクを取り出し、今サーバ内にある1TBのディスクを入れることにした。(ディスクが届いたら「HDDが高いから、WDの外付けHDDを買って分解してみた。」を参考に分解する。) 内部のディスクは生産時期によって WD20EACS か WD20EADS か WD20EARS か WD20EARX かなんかが入ってるようだ。(追記:WD20EARS (というか、Greenシリーズ?)はヘッドが無駄にランディングゾーンに戻っちゃう問題もあるようだ。 S.M.A.R.T. attribute 193 (Load_Cycle_Count) が異常に大きかったらその問題をヒットしてる可能性が高い。その問題を改善するファームウェアもあるらしいが、新しいファームウェアでもバージョンが変化しないから新しいかどうか分からないらしい。)

なお、ST2000DL003 の方は検索してみるとファームウェアが C31 のものは突然認識されなくなるという問題を抱えているらしい。Seagate はファームウェアのアップデートを提供してるが、最新の CC32 でもロックアップの現象が出てるという報告もあるので、まぁ、安かろう悪かろうとして使うしかないだろう。(上の WD20EAxx とRAID1(ミラーリング)で使うから、まぁ、大丈夫でしょう。) ところで、CC3C というファームウェアもあるようだから、届くディスクがどうなるか楽しみにしよう。(追記:今メールをみたら shipping の情報が来てて、Edison, NJ からの発送だったから意外と早く着くかも。西海岸からの発送かと思ってたから嬉しい誤算だ。)

(2/14 追記:ディスクが届いた。Western Digital の方が WD20EACS-11BHUB0 (SATA2(SATA300)、16MBバッファ、5400rpm、08 FEB 2011 製、DCM: HHRNNTJCHB)で、Seagate の方が ST2000DL003 (P/N: 9VT166-302、F/W: CC3C、Date: 12194、スペックは上記の通り)だった。だいぶ性能に差があるな。こりゃ、ST2000DL003 を番号が小さい方へつないで、gmirror を prefer で使うのが良さそうかな。)

さらに、両方とも2TBのディスクなのでセクタサイズが従来の512バイトから4096バイトになっており Advanced Format Technology が使われている。Wikipediaの記事に書かれているとおり「パーティションの開始位置が4KiB単位の物理セクター境界からずれた場合に大きな性能低下が」起こるのでOSインストールの際はそこら辺も考慮に入れないといけない。今回は(既存のOSをアップグレードするのではなく、新規に) FreeBS 9.0-RELEASE-amd64 をインストールするつもりなので、9.0 でのサポート状況をざっと検索してみた。

Status of support for 4KB disk sectors (2011/07)
http://lists.freebsd.org/pipermail/freebsd-stable/2011-July/thread.html#63300

のスレッドによると、
  • kern.cam.ada.X.quirks="1" を /boot/loader.conf に設定することで、4Kバイトセクタを使ってるのに512バイトと申告してくるドライブを、4Kバイトセクタのドライブとして扱うことができるようになった。(gpart(8) はその情報を使ってアラインメントなどを行う)
  • UFSフラグメントサイズも4Kバイトに増やされた。(ので、普通に使ってれば、4Kバイト境界にそろうはず。)
  • ZFSの場合 gnop を使ってセクタサイズ4Kバイトを強制的に認識させる方法もある
といった感じで、ZFSを使うのでなければそんなに気にすることはなさそうに見える。じゃあ、gpart(8) によるアラインメントってのはどんなものかと検索してみると、

GPT and disk alignment (2011/06)
http://lists.freebsd.org/pipermail/freebsd-fs/2011-June/thread.html#11685

というスレッドの http://lists.freebsd.org/pipermail/freebsd-fs/2011-June/011704.html によると、diskinfo(8) を使って、あるGPTパーティションの stripeoffset が4096の等倍(か0)になっていればアラインメントがいい感じになってると言えるようだ。gpart(8) に "-a 4k" をつけることで4K境界にうまく合わせてくれるので、その後 diskinfo(8) で確認するのがよさそうだ。

というわけで、結論としては FreeBSD 9.0 ではパーティションの作成時に gpart(8) に "-a 4k" をつけるだけで大丈夫のようだ。(なお、FreeBSD 9.0-RELEASE のインストーラで普通にパーティションを作ってしまうと4K境界は気にしないで作られてしまうので、以下の通り、パーティションの作成時は shell から gpart(8) を使って行った方がよさそうだ。)

最後に、ディスク関連としてはFreeBSD 9.0-RELEASE から AHCI に対応してるので、インストール後 Native Command Queueing に対応してるかを確認する。(対応してれば起動時に「Command Queueing enabled」などと表示されるはず。)

以下に VMware Fusion で試した FreeBSD 9.0-RELEASE-amd64 のインストール方法を記す。(なお、http://forums.freebsd.org/showthread.php?t=27645 の手法を参考にした。)

今回は諸般の事情によりUSBメモリに http://ftp10.freebsd.org/pub/FreeBSD/releases/ISO-IMAGES/9.0/FreeBSD-9.0-RELEASE-amd64-memstick.img (654MB) を書き込んだものがすでに手元にあったので、VMware Fusion から Plop Boot Manager を使ってUSBメモリで起動させた。(単に plpbt.iso から起動し、メニュー内で USB を選択しただけ)

起動したらメニューから「2. [Esc]ape to loader prompt」を選び、「set kern.cam.ada.0.quirks="1"」を設定した後「boot」する。
FreeBSD9.0-01.png
FreeBSD9.0-02.png

FreeBSD Installer が上がってきたら「Install」を選択、
FreeBSD9.0-03.png
「Keymap Selection」では「No」を選択し、
FreeBSD9.0-04.png
ホスト名を設定し、
FreeBSD9.0-05.png
インストールする内容を選択し、
FreeBSD9.0-06.png
上に書いた通り、アラインメントを確実に行うため、パーティションの作成は「Shell」を選択する。
FreeBSD9.0-07.png

ところで今まで GEOM Mirror (gmirror) を使ってたので、新規インストールでもそのまま使うことにした。GPTパーティションを使う際のミラーリングのやり方には3つ考えられる。
  1. ディスク全体を使ったGEOMデバイスを作り、そこにGPTパーティションを作る
  2. 生のディスクにGPTパーティションを作り、パーティション単位でミラーリングをする(GEOMデバイスを作る)
  3. 生のディスクにGPTパーティションを作り、ディスク単位(全体)でミラーリングする(GEOMデバイスを作る)
1. が今回実際に選んだ手法。GEOM Mirror でGEOMデバイスを作り、そこにGPTパーティションを作った。ただ http://forums.freebsd.org/archive/index.php/t-22125.html に書かれている通り、これをすると起動時に gptboot が「gptboot: invalid backup GPT header」と文句を言う。(ただ、backup header なので動作には一応問題ない。)

FreeBSD9.0-23.png

2. が恐らく一番望ましい方法。FreeBSD 9.0のGPTでのミラー構築 に書かれてる通りの方法でパーティション毎にGEOM Mirrorデバイスを作る。1. より望ましいが、新しいディスクを追加する際に一旦パーティションを切ってからミラーに追加しないといけないなど、多少面倒なため、1. の方法を選んだ。

3. は動作しなかった。GEOM Mirror デバイスを作ることでGPTパーティションが隠れてしまった。
gpart+gmirror-1.png
gpart+gmirror-2.png

というわけで、先に geom_mirror をロードし、作成したGEOMデバイスにGPTパーティションを作成することにした。boot、swap そしてファイル用のパーティションを作った。(なお、上述の通り "-a 4k" で4Kセクタアラインメントに合わせている。) その後、ブートローダをインストールする。
kldload geom_mirror
gmirror label -b split gm0 ada0
gpart create -s GPT mirror/gm0
gpart add -s 512k -a 4k -t freebsd-boot -l "boot" mirror/gm0
gpart add -s 4g -a 4k -t freebsd-swap -l "swap" mirror/gm0
gpart add -a 4k -t freebsd-ufs -l "root" mirror/gm0
gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 mirror/gm0
gpart show mirror/gm0
diskinfo -v mirror/gm0
diskinfo -v ada0
FreeBSD9.0-08.png

できあがったらパーティションを確認し、newfs する。(小さいファイルが多いため、i-node サイズを小さくしている) その後のインストール用に fstab を作成し、/mnt へ作ったディレクトリをマウントする。
newfs -i 4096 -j /dev/gpt/root
echo "/dev/gpt/swap none swap sw 0 0" >> /tmp/bsdinstall_etc/fstab
echo "/dev/gpt/root / ufs rw,noatime 1 1 " >> /tmp/bsdinstall_etc/fstab
mount /dev/gpt/root /mnt

FreeBSD9.0-10.png

パーティション作成用の shell から exit すると、選択したモジュールのインストールが自動的に始まる。
FreeBSD9.0-11.png
FreeBSD9.0-12.png

インストールが終わると root ユーザのパスワードの設定に移る。
FreeBSD9.0-13.png

その後、ネットワークインタフェースの設定。
FreeBSD9.0-14.png

タイムゾーンの設定。
FreeBSD9.0-15.png

デーモン起動の設定。
FreeBSD9.0-16.png

dumpデバイスの設定。(なお、swapデバイスをGEOM Mirrorデバイス上に作ってしまうと、バランスアルゴリズムが "prefer" の場合以外は dump はちゃんと動作しない。(rc.early が無くなったため))
FreeBSD9.0-17.png

その他のユーザアカウントの追加。
FreeBSD9.0-18.png

インストールの終了。
FreeBSD9.0-19.png

その他の設定をするためシェルに落ちる。
FreeBSD9.0-20.png

loader.conf、boot.config の設定を行う。
echo 'kern.cam.ada.0.quirks="1"' >> /boot/loader.conf
echo 'geom_mirror_load="YES"' >> /boot/loader.conf
echo '-Dh' >> /boot.config
FreeBSD9.0-21.png

また、/etc/ttys で ttyvN を off に、ttyu0 を on に変更しておく。

ここまで行ったら、一度 chroot から exit した上で、もう一つのディスクを GEOM Mirror へ追加する。
FreeBSD9.0-22.png

再起動したら終了。
Rebuild at 2017/09/21 12:10
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。