Asus EeePC 4G-X 中古 | 2008/09/04 | 29,260 |
2GB DDR2-667 SO-DIMM transcend JM667QSU-2G バルク |
2008/09/07 | 3,880 |
16GB USB メモリ A-DATA PD16-16GB |
2008/09/07 | 4,980 |
合計 | 38,120 |
Asus の EeePC って、よく考えてみたら、 SS10 よりも速くて、ディスプレイもキーボードもマウスも UPS も付いてるマシンだ。 無線 LAN も付いてる。 しかもストレージは半導体。 これを自宅サーバにしない手はない。
FreeBSD の人々も色々と努力してるみたい。
でもみんな端末にする視点だなぁ。
上記サイトによると‥‥‥内蔵の Ethernet も無線 LAN もそのままでは動かないらしい。 でも動かす方法はもう有るようだ。
新宿の小田急別館のソフマップで中古の EeePC 4G-X を購入。 約 3 万円。 安くなったもんだなぁ、計算機‥‥‥
早速 FreeBSD をインストール。 手元にあった 6.0-RELEASE の CD で USB 接続の CD-ROM からブート‥‥何の問題もなくインストーラが起動。
Custom インストールを選択。 内蔵 SSD は ad2 になってる。 どうせサーバ用だから X なし、カーネルのソースのみのストイックな構成だ。 ディスクは 4G しか無いから、スワップ無し・すべて a パーティション。
‥‥‥内蔵 SSD への書き込みのスピードがいつものハードディスクへの感じとなんか違う??? やや時間がかかる感じだ。
インストール終了。
次に、別マシンであらかじめ USB ハードディスク上に展開しておいた RELENG_7(2008/09/04 時点で 7.1-PRERELEASE)のソースツリーで make world。 何と 5 時間近くかかった。 630MHz 動作の Celeron-M だから仕方ないか‥‥‥
いつもの手順でシステムがすっかり RELENG_7 になったところで、内蔵 Ethernet や無線 LAN なんかを動かすために必要なものを入れる。 上記 http://wiki.freebsd.org/AsusEee で紹介されている
だ。 さっきと同様に別マシンで持ってきて USB ハードディスクに入れる。
カーネルを作り直したりモジュールを追加したりして再起動すると、どれもあっさり認識した。 ae が ethernet、無線 LAN は ath。
... pci3: <ACPI PCI bus> on pcib2 ae0: <Attansic Technology Corp, L2 FastEthernet> mem 0xfbfc0000-0xfbffffff irq 17 at device 0.0 on pci3 ae0: pci device revision: 0xa0 ae0: chip id: 0x3 ae0: MSI count: 1. ae0: Using MSI messages. miibus0: <MII bus> on ae0 atphy0: <Atheros F2 10/100 PHY> PHY 0 on miibus0 atphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto ae0: Ethernet address: MAC-address ae0: [FILTER] pcib3: <ACPI PCI-PCI bridge> irq 18 at device 28.2 on pci0 pci1: <ACPI PCI bus> on pcib3 ath0: <Atheros 5424/2424> mem 0xfbef0000-0xfbefffff irq 18 at device 0.0 on pci1 ath0: [ITHREAD] ath0: WARNING: using obsoleted if_watchdog interface ath0: Ethernet address: MAC-address ath0: mac 14.2 phy 7.0 radio 10.2 uhci0: <Intel 82801FB/FR/FW/FRW (ICH6) USB controller USB-A> port 0xe400-0xe41f irq 23 at device 29.0 on pci0 ... vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0 eeemon0: <Asus Eee PC Hardware Monitor> on isa0 Timecounter "TSC" frequency 632588549 Hz quality 800 ...
なんか WARNING があるけど気にしないことにしよう。
acpi_asus.ko のロードも含めて /boot/loader.conf に以下のように書いた。
# # loader.conf # acpi_asus_load="YES" acpi_video_load="YES" eeemon_load="YES" i915_load="YES" snd_hda_load="YES" ichsmb_load="YES" # hw.pci.do_power_nodriver=1
SSD は書き込みによって寿命が縮むって話を聞くので、soft-update にした上で noatime オプションを付けた。
/var/mail もこの中だからメールに関する finger(1) やらの出力がおかしくなるかもしれないけど、そこら辺には目をつぶろう。
# # /etc/fstab # # Device Mountpoint FStype Options Dump Pass# /dev/ad2s1a / ufs rw,noatime 1 1 /dev/cd0 /cdrom cd9660 ro,noauto 0 0
noatime マウントオプション同様 SSD への書き込みを減らすために、/tmp をメモリファイルシステムにする。
/etc/rc.conf に以下を設定。
tmpmfs="YES" tmpsize="256m" tmpmfs_flags="-S -M -o async,noatime"
以前他のマシンでもやっていたので ppp(8) を使う方法を採用。 まず /etc/ppp/ppp.conf に以下を設定。
default: set log Phase Chat LCP IPCP CCP tun command ident user-ppp VERSION (built COMPILATIONDATE) asahi-net: set device PPPoE:ae0 set MRU 1454 set MTU 1454 set authname my-auth-name set authkey my-auth-password enable lqr echo accept CHAP add default HISADDR
asahi-net
は接続先がアサヒネットなので付けた名前。
別に何でもいい。
次に、ファイヤウォールのルールを /etc/firewall.conf に書く。
最後に /etc/rc.conf に以下の設定を加える。
ppp_enable="YES" ppp_mode="ddial" ppp_profile="asahi-net" # PPPoE->ae0. nat is also done by ppp(8). firewall_enable="YES" firewall_type="/etc/firewall.conf" firewall_quiet="YES" gateway_enable="YES"
無線 LAN のデバイスによってはできないものもあるみたいだけど、 ath(4) はアクセスポイントになれるらしい。
じゃあ EeePC を無線 LAN のアクセスポイントにしてみよう。 もしできれば、ルータ・アクセスポイント・外向けサーバを全部一台でできる‥‥‥ 5 万円以下で!
WEP のみだと危ないという話をちらほら見かけるので、とりあえず設定が簡単そうな WPA-PSK にしてみよう。
WEP の設定例は google で山ほど出てくるけど WPA の例はあんまり無い。 でも hostapd(8) を使えばいいらしいことはわかった。 念のために MAC アドレスのアクセス制限もしておこう。
試行錯誤の結果、以下のような /etc/hostapd.conf に落ち着いた。
# # hostapd.conf # interface=ath0 debug=0 dump_file=/tmp/hostapd.dump ctrl_interface=/var/run/hostapd ctrl_interface_group=0 # ssid=network-ssid hw_mode=g macaddr_acl=1 # MAC address-based ACL accept_mac_file=/etc/hostapd.accept auth_algs=3 wpa=1 wpa_key_mgmt=WPA-PSK wpa_passphrase=pre-shared passphrase
network-ssid と pre-shared passphrase は ASCII 文字列。
pre-shared key に ASCII 文字列ではなく 16 進の数値を使う場合は、
wpa_passphrase
の代わりに
wpa_psk
を使う。
クライアント側で設定する
wpa_supplicant.conf(5)
とは書きかたが違うので注意。
また、これらが正しく動作するためには wlan_acl.ko と wlan_xauth.ko が必要なので、忘れずに /boot/loader.conf に以下を書き加えておく。
wlan_acl_load="YES" wlan_xauth_load="YES"
しばらく使ってみた感じでは、buffalo の USB LAN アダプタ (LUA-U2-KTX) よりも快適。 このアダプタは axe(4) で認識するけど、実際に使ってみると何だか時々パケットがつまるような感じで息つぎする。 Windows だとそんなこと無いから、FreeBSD のデバイスドライバの問題なのかな。
で、無線 LAN のインターフェイスで DHCP サーバも動かすことにして、ports から isc-dhcp3-server-3.0.5_2 を入れて /usr/local/etc/dhcpd.conf を適宜用意し、/etc/rc.conf に以下を加えた。 内側 LAN は private IP だ。
ifconfig_ath0="inet private-ip-addr mediaopt hostap" # see also: hostapd.conf hostapd_enable="YES" dhcpd_enable="YES"
増設というより、正確には取り替え。 標準で 512MB のメモリが付いていて、スロットが 1 つしかないので、より大きな容量の DDR2 SO-DIMM を買ってきて取り替えることになる。
スワップ無しで web サーバ・DNS サーバ・メールサーバを運用しつつ emacs なんかも使うかもしれないって考えると、ちょっと贅沢だけどやっぱりメモリは増やしておいた方が安心。
調べてみると、今や 2GB で 4,000 円前後‥‥‥ PC-9801VX に数 MB の RAM を増設するのに何万円も払った時代が懐かしいなぁ。
秋葉原のとある店でトランセンドの JM667QSU-2G というメモリのバルク品を 3,880 円で購入。 取り替えてみたら何の問題もなく認識した。
Copyright (c) 1992-2008 The FreeBSD Project. Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 The Regents of the University of California. All rights reserved. FreeBSD is a registered trademark of The FreeBSD Foundation. FreeBSD 7.1-PRERELEASE #1: Thu Sep 4 23:52:22 JST 2008 root@moon.infolab.ne.jp:/backup/obj/backup/src/sys/EEE Timecounter "i8254" frequency 1193182 Hz quality 0 CPU: Intel(R) Celeron(R) M processor 900MHz (632.59-MHz 686-class CPU) Origin = "GenuineIntel" Id = 0x6d8 Stepping = 8 Features=0xafe9fbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,TM,PBE> AMD Features=0x100000<NX> real memory = 2138570752 (2039 MB) avail memory = 2087587840 (1990 MB) ACPI APIC Table: <A M I OEMAPIC > ...
ports ツリーとか考えると、やっぱり内蔵の 4GB SSD だけでは足りない。 足すとしたら、ハードディスクは電気食うし熱くなるからやっぱり半導体かなぁ‥‥‥
Web には EeePC に CompactFlash を増設する改造記事がけっこうあるけど、持ち歩かないんだしそこまでやるのは面倒。 それに大きな容量が必要なのは ports のソースの tar ファイルとか、/usr/src とか、アクセス頻度の低いデータだ。 だったら遅くてもビット単価が安いやつ‥‥ USB メモリとかでいいじゃん。
とりあえず、Windows Ready Boost 対応とうたってるのを買えば極端に遅くはなさそう。
結局、A-DATA の PD16 Sport シリーズの 16GB にした。 約 5,000 円。
性能は期待してなかったんだけど、試してみると結構速い。 メモリがふんだんにあるし soft-updates なので正確じゃないかもしれないけど、書き込みでだいたい 6MB/sec. くらいは出てる感じ。
128MB のシーケンシャル書き込み moon# dd if=/dev/random of=testfile bs=1024k count=128 128+0 records in 128+0 records out 134217728 bytes transferred in 20.667710 secs (6494078 bytes/sec) moon#
悪くないじゃん。
とりあえず、/usr/src, /usr/obj, /usr/ports をこっちに入れることにした。
moon# df Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/ad2s1a 3783078 415238 3065194 12% / devfs 1 1 0 100% /dev devfs 1 1 0 100% /var/named/dev /dev/md0 253678 12 233372 0% /tmp /dev/da0s1a 15352832 1041588 13083018 7% /usbflash moon#
普段は画面を使わないつもりなので、液晶画面が OFF になってくれないかなと思って green_saver を設定したけど、画面が黒くなるだけで消灯はせず。
バックライトの寿命にものすごく影響しそうだけど、追求するの面倒なので輝度最小にして放置。
コンソールで ^G とか叩いても何の音も出ない。 でも snd_hda の初期化の時にはブチッって音がするからハードの故障ではなさそう。
これも、端末としては使わないから放置。
Asus のサイトなんかだと内蔵 SSD は S.M.A.R.T. に対応してることになってるけど、実際に smartctl(8) を使ってみると正しく動かない。
moon# smartctl -a /dev/ad2
smartctl version 5.38 [i386-portbld-freebsd7.1] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/
=== START OF INFORMATION SECTION ===
Device Model: SILICONMOTION SM223AC
Serial Number: 45369759954326938408
Firmware Version: [No Information Found]
User Capacity: 4,001,292,288 bytes
Device is: Not in smartctl database [for details use: -P showall]
ATA Version is: 4
ATA Standard is: Exact ATA specification draft version not indicated
Local Time is: Mon Sep 8 02:00:12 2008 JST
SMART support is: Ambiguous - ATA IDENTIFY DEVICE words 85-87 don't show if SMART is enabled.
A mandatory SMART command failed: exiting. To continue, add one or more '-T permissive' options.
moon#
メッセージ通りに '-T permissive' オプションを使うと一応各パラメタは出るけど値が何だか変。 おまけに変なログが /var/log/messages に出る。
Sep 8 02:01:16 moon kernel: ad2: FAILURE - SMART status=51<READY,DSC,ERROR> error=4<ABORTED> LBA=12734209 Sep 8 02:01:16 moon kernel: ad2: FAILURE - SMART status=51<READY,DSC,ERROR> error=4<ABORTED> LBA=12734214
LBA= とかあるから、もう不良セクタができたのかと思って一瞬びっくり。 SSD のコントローラが S.M.A.R.T. を正しく実装していないみたい。
これはどうしようもないので、あきらめることにする。
内蔵 SDHC カードスロットは USB 接続のカードリーダとして認識される。 つまり da(4) に見える。
けど、USB に外部ストレージが繋がっているかどうかで /dev/dan の番号が変わってしまう。
上記 Wiki でも触れられているとおり、SDHC カードスロットに刺してあるカードに書き込もうとすると、結構高い確率で止まる。
Wiki には「BIOS 画面で OS Installation: start と設定すると問題が起きにくくなる」と書いてあるけど、こうすると ehci(4) が見えなくなって USB 1.1 のみになってしまうので、 SDHC カードリーダだけでなく USB に接続されるすべてのデバイスが遅くなってしまう。
結局、SDHC カードスロットは常用しないことにした。