2009年12月20日日曜日

Alix.3d3でNanoBSDを動かす(4) ~CFイメージ(slim)の作成~

なんとか、ちゃんとブートするCFイメージが作れるようになったので、次はカーネルや、インストールされるツールから出来る限り不要なものを削ったものを作ります。
CFは4GBの大きさがあるので、容量的にはいろいろ削る必要性は無いのですが、セキュリティ上のリスクを軽減したり、実メモリを有効活用するりはカーネルやインストールされるツールを削減する必要があると思って、出来る限りスリムなイメージファイルを作ることにしました。
今回使ったカーネルコンフィグファイルは以下の通り。

cpu        I586_CPU
cpu        I686_CPU
options        CPU_GEODE
ident        ALIX3D3

options     SCHED_ULE        # ULE scheduler
options     PREEMPTION        # Enable kernel thread preemption
options     INET            # InterNETworking
options     INET6            # IPv6 communications protocols
options     FFS            # Berkeley Fast Filesystem
options     SOFTUPDATES        # Enable FFS soft updates support
options     UFS_ACL            # Support for access control lists
options     UFS_DIRHASH        # Improve performance on big directories
options     UFS_GJOURNAL        # Enable gjournal-based UFS journaling
options     MD_ROOT            # MD is a potential root device
options     PROCFS            # Process filesystem (requires PSEUDOFS)
options     PSEUDOFS        # Pseudo-filesystem framework
options     GEOM_PART_GPT        # GUID Partition Tables.
options     GEOM_LABEL        # Provides labelization
options     COMPAT_43TTY        # BSD 4.3 TTY compat (sgtty)
options     COMPAT_FREEBSD4        # Compatible with FreeBSD4
options     COMPAT_FREEBSD5        # Compatible with FreeBSD5
options     COMPAT_FREEBSD6        # Compatible with FreeBSD6
options     COMPAT_FREEBSD7        # Compatible with FreeBSD7
options     SCSI_DELAY=5000        # Delay (in ms) before probing SCSI
options     KTRACE            # ktrace(1) support
options     STACK            # stack(9) support
options     SYSVSHM            # SYSV-style shared memory
options     SYSVMSG            # SYSV-style message queues
options     SYSVSEM            # SYSV-style semaphores
options     P1003_1B_SEMAPHORES    # POSIX-style semaphores
options     _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
options     PRINTF_BUFR_SIZE=128    # Prevent printf output being interspersed.
options     KBD_INSTALL_CDEV    # install a CDEV entry in /dev
options     HWPMC_HOOKS        # Necessary kernel hooks for hwpmc(4)
options     AUDIT            # Security event auditing
options     MAC            # TrustedBSD MAC Framework
options        FLOWTABLE        # per-cpu routing cache

# CPU frequency control
device        cpufreq

# Bus support.
device        pci

# ATA and ATAPI devices
device        ata
device        atadisk        # ATA disk drives
options     ATA_STATIC_ID    # Static device numbering

# atkbdc0 controls both the keyboard and the PS/2 mouse
device        atkbdc        # AT keyboard controller
device        atkbd        # AT keyboard

device        kbdmux        # keyboard multiplexer

device        vga        # VGA video card driver

device        splash        # Splash screen and screen saver support

# syscons is the default console driver, resembling an SCO console
device        sc

# Power management support (see NOTES for more options)
device        apm
device        apm_saver

# Add suspend/resume support for the i8254.
device        pmtimer

# Serial (COM) ports
device        uart        # Generic UART driver

# PCI Ethernet NICs that use the common MII bus controller code.
# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
device        miibus        # MII bus support
device        vr        # VIA Rhine, Rhine II

# Pseudo devices.
device        loop        # Network loopback
device        random        # Entropy device
device        ether        # Ethernet support
device        tun        # Packet tunnel.
device        pty        # BSD-style compatibility pseudo ttys
device        md        # Memory "disks"
device        gif        # IPv6 and IPv4 tunneling
device        faith        # IPv6-to-IPv4 relaying (translation)
device        firmware    # firmware assist module

# The `bpf' device enables the Berkeley Packet Filter.
# Be aware of the administrative consequences of enabling this!
# Note that 'bpf' is required for DHCP.
device        bpf        # Berkeley packet filter

# USB support
device        uhci        # UHCI PCI->USB interface
device        ohci        # OHCI PCI->USB interface
device        ehci        # EHCI PCI->USB interface (USB 2.0)
device        usb        # USB Bus (required)
device        uhid        # "Human Interface Devices"
device        ukbd        # Keyboard

そして、NanoBSDのBuildに使ったコンフィグファイルは以下の通り。
NANO_NAME=alix3d3
NANO_KERNEL=ALIX3D3
NANO_MEDIASIZE=7835184
NANO_HEADS=16
NANO_SECTS=63
NANO_BOOT0CFG="-o nopacket -s 1 -m 3"
NANO_BOOTLOADER="boot/boot0"

CONF_WORLD='
WITHOUT_ACCT=YES
WITHOUT_ACPI=YES
WITHOUT_AMD=YES
WITHOUT_ATM=YES
WITHOUT_BLUETOOTH=YES
WITHOUT_CALENDAR=YES
WITHOUT_CTM=YES
WITHOUT_CVS=YES
WITHOUT_DICT=YES
WITHOUT_EXAMPLES=YES
WITHOUT_FLOPPY=YES
WITHOUT_FREEBSD_UPDATE=YES
WITHOUT_GAMES=YES
WITHOUT_GCOV=YES
WITHOUT_GDB=YES
WITHOUT_GPIB=YES
WITHOUT_GROFF=YES
WITHOUT_HTML=YES
WITHOUT_INFO=YES
WITHOUT_IPFILTER=YES
WITHOUT_IPFW=YES
WITHOUT_IPX=YES
WITHOUT_IPX_SUPPORT=YES
WITHOUT_NCP=YES
WITHOUT_LOCALES=YES
WITHOUT_LOCATE=YES
WITHOUT_LPR=YES
WITHOUT_MAIL=YES
WITHOUT_MAILWRAPPER=YES
WITHOUT_SENDMAIL=YES
WITHOUT_MAKE=YES
WITHOUT_MAN=YES
WITHOUT_NDIS=YES
WITHOUT_NETCAT=YES
WITHOUT_NETGRAPH=YES
WITHOUT_NETGRAPH_SUPPORT=YES
WITHOUT_NIS=YES
WITHOUT_OBJC=YES
WITHOUT_PF=YES
WITHOUT_AUTHPF=YES
WITHOUT_PKGTOOLS=YES
WITHOUT_PORTSNAP=YES
WITHOUT_PPP=YES
WITHOUT_PROFILE=YES
WITHOUT_QUOTAS=YES
WITHOUT_RCS=YES
WITHOUT_ROUTED=YES
WITHOUT_SHAREDOCS=YES
WITHOUT_SYSINSTALL=YES
WITHOUT_WIRELESS=YES
WITHOUT_WIRELESS_SUPPORT=YES
WITHOUT_ZFS=YES
'

CONF_INSTALL='
WITHOUT_CXX=YES
WITHOUT_TOOLCHAIN=YES
WITHOUT_INSTALLLIB=YES
'
customize_cmd cust_install_files



Alix.3d3でNanoBSDを動かす(3) ~ブートするまで~

なんとかCFが出来たので、早速ブートさせてみました。すると、

  • ブート時に出るはずのOS選択画面が表示されない
  • ローカルディスクのマウントでハングする
という問題が発生しました。
NanoBSDのデフォルト設定は組み込みシステム向けになっているため、ブートローダーとしてはboot/boot0sioを使うようになっているのですが、Alix.3d3はオンボードのVGAを持っているので普通のブートローダーboot/boot0を使うようにする必要がありました。また、このページの情報によると、boot0cfgのオプション設定も変更する必要があるということなので、コンフィグファイルを次のように変更して、再構築しました。
NANO_MEDIASIZE=7835184
NANO_HEADS=16
NANO_SECTS=63
NANO_BOOT0CFG="-o nopacket -s 1 -m 3"
NANO_BOOTLOADER="boot/boot0"
出来上がったイメージファイルをCFに書き込んで、ブートさせてみたところ、無事にOS選択画面が表示されブートを始めたのですが、やはりローカルディスクのマウントでハングします。
ネット上で、NANO_HEADSやNANO_SECTSが実際のメディアと一致していないと、ローカルディスクのマウントでハングするという情報も見つけたので、設定を変えて何度かCFを作り直したりしたのですが、一向に状況が変わりません。途方に暮れつつ、色々ググってみたところ、こんなページを発見しました。結局、VGAが載っているAlixのボードでNanoBSDを動かすためには、電源管理インタフェースとしてACPIではなくAPMを使うようにBIOSの設定を変える必要があるのだそうです。で、そのようにBIOSの設定を変更したところ、無事ブートしてくれました。
ここまで到達するのにかなり時間を使っていたので、ホッとしました。



Alix.3d3でNanoBSDを動かす(2) ~CFイメージ(full)の作成~

Build環境はなんとか構築できたので、次はいよいよCFイメージの作成です。まずは、ほぼデフォルトの設定で作ってみることにします。今回使うCFはSanDiskの4GBのタイプなので、以下のコンフィグファイルを使ってbuildしました。

FlashDevice SanDisk 4G

出来上がった_.disk.fullファイルをddコマンドでCFに書き込んだところ、書き込みエラーが発生してしまいました。CFメディアの詳細情報を調べて、出来上がったイメージファイルと比較したところ、出来上がったイメージファイルの方がすこしサイズが大きいことが判明しました。
どうやら、同じSanDiskのCFとはいえ、FlashDeviceのロジック内部に埋め込んであるサイズ情報と、私の持っているメディアのサイズ情報が異なっているようです。
仕方が無いので、手元にあったFreeBSD機にUSBのCard Reader/Writerを接続してdiskinfoコマンドでメディア情報を調べたところ、
/dev/da0    512    4011614208    7835184    7773    255    64

ということがわかったので、以下のコンフィグファイルを使ってイメージを再構築しました。
NANO_MEDIASIZE=7835184
NANO_HEADS=16
NANO_SECTS=63
出来上がったイメージファイルは無事CFへ書き込むことができました。
ところで、diskinfoコマンドで得られる情報のうち、最後の二つは、head数とsector数なのですが、 デバイスがUSB接続のCard Readerを経由して接続されている場合は、この情報は全く当てにならないので無視してかまいません。



2009年12月19日土曜日

Alix.3d3でNanoBSDを動かす(1) ~Build環境構築~

自宅のDNSサーバーを安定して動作させるために、組み込み型PCでサーバーを作ろうと思ていたのですが、ついに実行に移すことにしました。
ハードウェアとしては、PC Engines社のAlix.3d3を選定し、OSはFreeBSD8.0 ReleaseベースのNanoBSDにすることにしました。
なにはともあれ、NanoBSDを構築するための環境が必要な訳ですが、まずはお手軽に私の主力機であるiMac上にParallels Desktop for Mac 4を使って、FreeBSDの仮想環境を用意しました。
インストールなどはあっさりと終了したのですが、NanoBSDを構築しようとすると、

TIMEOUT - READ_DMA retrying (1 retry left) LBA=260889183

というメッセージが出てきました(数値は適当です)。

普通、こんなメッセージが出て来たときにはディスクエラーを疑う訳ですが、今回は仮想ディスクが壊れているとは思えませんでしたので、ちと調査してみたらこんなフォーラムを発見。どうやらこのエラーはParallels Desktop固有のエラーで、VMWare Fusionでは問題ないらしいので、とりあえず評価版をダウンロードしてインストールし、同じようにNanoBSDを構築してみたところ、全く問題なくBuildが終了しました。
ということで、当初の目的が達成できたあかつきにはVMWare Fusionのライセンスを購入したいと思います。


2009年12月12日土曜日

pfSense 1.2.3 Release

先日、自宅のFirewallにpfSense-1.2.2 を入れたばかりなのに、pfSense-1.2.3がリリースされてしまいました。今回のリリースではベースのFreeBSDが7.2になっていますが、私としてはembeddedのベースがNanoBSDになっていることの方に興味を惹かれます。

というわけで、早速バージョンアップしました。まずは無事に動作しているようです。



2009年12月6日日曜日

Alix.2d13 + pfSense

自宅のFirewallをAlix.2d13pfSenseで組み直しました。
Firewallソフトとしては、m0n0wallも検討していましたが、ベースとなっているFreeBSDのバージョンがより新しいことと、この記事pfSenseの方がお薦めとされていたので、表記のような組み合わせに落ち着きました。
インストール作業は、このページが、セットアップ作業はこのページが大変参考になりました。



2009年11月16日月曜日

corega CG-NSC4501GT

買った訳ではありませんが、このNASは凄いです。
2台のNASを使ったレプリケーション機能まで付いています。
一般家庭で導入できる価格帯でここまでできるとは凄すぎます。



2009年11月15日日曜日

Google Apps

自ドメインのメール環境の可用性を確保するために、Google Appsを利用しようと決心して設定を行いました。
必要な設定を順次行った結果、メール、カレンダー、サイト、ドキュメント、という全機能を自ドメインのアドレスで利用できるようになりました。
しかし、コントロールパネルで確認すると、メールだけ「更新中」という表示のままです。
MXレコードの更新は行い、ネット上のツールを利用してMXの設定を確認してみましたが、全てのMXレコードがGoogleのメールサーバーを指定の優先順位で指しています。
「完了するまでに 48 時間程度かかることがあります。」とは書いてありますが、48時間経過しても表示に変わりがありません。
いったいどうしたんでしょう?
とりあえず、自ドメイン宛の全てのメールはGoogleを経由して、自宅のメールサーバーへ転送されているようなので、所望の動作はしているのですが、どうもスッキリしません。



2009年10月25日日曜日

Amazon Kindle

予約注文していた、Amazon Kindleが届きました。
第一印象ですが、薄いです。これなら持ち歩くのもあまり苦にならないでしょう。
あとe-inkのものと思われるディスプレイですが、白黒ではありますがかなりコントラストがはっきりしてるうえに、結構解像度も高く読みやすそうです。
ただ、今後日本語対応となって感じ漢字を表示するようになったときに十分な解像度となっているかは不明です 。
とりあえず、英字新聞、米国の新聞やいくつかの専門書を買ってみようと思います。



2009年9月29日火曜日

ITアーキテクト Vol.25

ITアーキテクト Vol.25を購入しました。私は知らなかったのですが、今号をもって休刊となるそうです。連載や特集が私の興味にマッチしていたので、Vol.1から全て持っているのですが、今回で休刊とは残念です。そういえば、先日はUNIXマガジンも休刊(廃刊?)となりました。IT系の情報がネット上に溢れている昨今では、雑誌の需要というのはあまり無いのでしょうか。


2009年9月13日日曜日

snow leopard (Mac OS X 10.6)

なにはともあれ、snow leopardを早速購入し、インストールしました。
見た目には大きな変更はありませんが、Safari 4とFinderには驚きました。
Safari 4では、新規タブをつくったら Top Sites のサムネールがカッコ良く表示されます。
Google Chromeの影響があるのかもしれませんが、デザインはSafari 4の方がカッコ良いです。
Finderはサムネール表示のサイズを大きくするとファイルを開かなくても中が読めるのがとてもいいです。



iMacメモリ増設

デフォルトのメモリしか積んでいないiMacのパフォーマンスに不満がたまっていたので、おもいきってマシンの最大メモリ量まで増設することにしました。
調べたところ、06年Lateモデルである私のマシンの最大メモリサイズは3GBということなので、1GBメモリと、2GBメモリを購入し増設しました。
かなり、快適になった気がします。



2009年7月9日木曜日

corega CG-NSC2100GT



先日のサーバークラッシュを経験し、改めて自宅ネットワーク内のデータでなくなって困るものを考えてみました。まず、なくなって一番困るのは、デジカメデータやビデオデータですが、これらはRAID5のNASに保存しているので多分大丈夫でしょう。次になくなって困るのは、やはりメールでしょうか。自宅ネットワークでは家人全員のメールがIMAPサーバーに保管されているので、IMAPサーバーのディスクが壊れると被害甚大と言えるでしょう。ということで、考えたのがメールサーバーのスプールをRAIDのNASに持つようにすることです。
最近は、家庭用のRAIDも随分安くなりましたが、それらのほとんどはWindowsおよびMacとファイルシステムを共有するプロトコルしかサポートしていません。最近のFreeBSDなどはWindowsのファイルシステム共有プロトコルを喋りますが、メールのスプールを共有するとなると一抹の不安があります。できるならば、昔ながらのNFSでマウントしたいと思って調べてみたら、corega CG-NSC2100GTというNASのケースがNFSにも対応していることがわかりました。CG-NSC2100GTはRAID1対応なので、Western DigitalのWD10EADSも2本併せて購入しRAID1のNASとし、無事メールスプールとして動かすことができました。


2009年6月22日月曜日

サーバークラッシュ

自宅ドメインで、主に外部向けのサービスを担当していたサーバーが金曜日の午前中に突然落ちてしまいました。
原因は、ディスクトラブル。BIOSがディスクを認識しないので、多分ディスクコントローラーあたりのハードウェアトラブルだと思われます。このサーバーは以下の三つの役割を持っていました。

  • 外部向けドメインサーバー
  • 内部向けドメインサーバー
  • 外部からのメール受け取りとその際のチェック
これらのうち、メールの受信と外部向けドメインサーバー機能については、ドメインを独自に持っている友人にセカンダリサーバーをお願いしてあるので、当分困ることは無い(はず)。ということで、当面困るのは、名前解決が出来ないため外部のサイトを見ることができないことです。この問題を解決するために、早急に内部向けのドメインサーバーを立ち上げることにしました。といっても、ゾーンファイルや各種設定がなくなってしまっており、元通りに復旧するには時間がかかるので、まずはforward onlyのドメインサーバーを立ち上げることで、最低限外部のサイトを見ることができるようにして急場をしのぎました。
結局、全てのサービスが復旧したのは日曜日の夕方でした。とはいえ、サーバーが1台死んでしまったので、当然サーバー構成は変わりました。今回は、大事な設定ファイルのたぐいがほとんどなくなってしまったので、あらためて各種サーバーの設定ファイルを作り直しました。うーむ、疲れた。



2009年6月2日火曜日

マスク (2)

近くのドラッグストアで見つけました。秋から冬にかけてまた流行するかもしれないので、買えるうちに買いだめしようと思って、少しまとめ買いしておきました。



SmartSetr

flickrでiPhotoのスマートコレクションみたいなものを作れるSmartSetrというアプリケーションを見つけました。便利です。



2009年5月20日水曜日

マスク

通勤電車の中でもマスク姿の人が増えてきました。自分でもそろそろ対策を打とうかと思い、帰宅時にマスクを買おうとしましたが、行ってみた3軒の薬局全てでマスクは売り切れでした。出遅れたか... orz



2009年5月11日月曜日

i-Clickr PowerPoint Remote

本日、何かの拍子にApple Storeのサイトを開いたら、KeyNoteをiPod TouchやiPhoneでコントロールできる、KeyNote Remoteというソフトを見つけた。きっと、PowerPoint用にも同様なものがあるだろうと思って調べたら、やはりありました。i-Clickr PowerPoint Remote。なかなか良さそうです。



2009年4月30日木曜日

flickr

以前から、地方に住む我々の両親や兄弟にどうやって写真を見せるかというのは悩ましい問題でした。もちろんVoxにアップロードすることは出来ますが、Macユーザーの私としては複数枚の写真をアップロードするのは結構面倒くさい作業でした。iPhoto'09がflickrと連携したということで、あらためてflickrの機能を調べてみました。写真の公開範囲を友人や家族に限定できるし、SlideShowなどというおしゃれな機能もあり、さすが写真共有に特化したサービスと思いました。ということで、早速flickrにサインアップして、写真をアップロードしました。とはいえ、ほとんどの写真は家族向けです。
さて、iPhoto'09とflickrの連携ですが、よく出来ていると思いました。かなり満足度は高いです。
flickrの唯一の難点としては、サインアップに米国Yahoo!のアカウントが必要なことです。私の親や兄弟もそうですが、一般の人には米国Yahoo!Yahoo! Japanのアカウントが異なることは理解しづらいでしょう。



2009年4月29日水曜日

iLife '09



iLife'09を導入しました。決め手は、iPhoto '09の新機能である、「人々」と、Flickrとの連携でした。
「人々」は、面白いだろうとは思っていましたが、精度については正直あまり期待していませんでした。しかし、実際に試してみるとかなりの精度で人物を認識してくれます。
驚いたのは、日々顔つきが変わる子供の顔もそれなりに認識してくれたことです。が、よく考えてみると、写真に写っている子供というのはほとんど自分の子供なのでした。それでも、子供っぽい顔を認識するだけでも大したものだと思いました。




2009年2月9日月曜日

Pattern-Oriented Software Architecture Vol.3






去年の夏に、購入しておいたPOSA Vol.3。ちょっと、調べたいことがあったので、中身を見てみてあらびっくり。
表紙はVol.3なのに、中身はVol.2でした。残念なことに返却期間はとっくに過ぎているので交換してもらうこともできません。がーん。しようがないので再注文しました。


2009年1月1日木曜日

新年明けましておめでとう御座います

なんだか、大晦日もバタバタと過ごしているうちに、年が明けてしまいました。
皆さん、本年もよろしくお願いいたします。