弁当箱サイズFreeBSD
仕事が忙しすぎて手につかなかったのですが、なんとか。
少し前から計画していた弁当箱サイズのFreeBSDの箱を作成。
物はPC Engines ALIX2を利用。7v-18v 1A程度の電源で動きます。
本当はWRAPを狙っていたんですけどね。
B5の紙より小さいわけですが、以前に使っていたPentium200よりよっぽど速い。
http://ytw.jp/content/view/61/39/
http://www.ytw.co.jp/catalog/default.php?cPath=38
FreeBSD 6.2-Rを使う場合、癖があるので少しメモ。
■EHCIのkernel panic
GENERIC KERNELではUSBのEHCIの部分でpanicするので、他のPCでEHCIを外したkernelを作り、それをインストールしておく。
■ブートローダ
標準のは動かないので、ports/sysutilsからgrubをインストールして利用。--force-lbaオプションを付ける。メニューは以下の感じ。
timeout 3
default 0serial --unit=0 --speed=9600
terminal --timeout=3 serialtitle FreeBSD-6
root (hd0,0,a)
kernel /boot/loader
■シリアルコンソール
comconsoleを利用するので/etc/ttysをいじって、/boot/loader.confに「console=comconsole」を追加して、/boot.configに「-h」を記述。/etc/ttys はconsoleの項目を利用。
console "/usr/libexec/getty std.9600" cons25 on secure
■reboot失敗 その1
rebootすると「Keyboard reset did not work, attempting CPU shutdown」とか言われるので、/usr/src/sys/i386/i386/vm_machdep.cを見て、kernel confに「options BROKEN_KEYBOARD_RESET」を追加。
■reboot失敗、その2
更に、reboot時にreset部分で「Fatal double fault:」を起こすのでLinuxのkernel sourceからreset部分をでっちあげて移植。(stable版に追加されつつあるよーな気もするのだがresetは未だ対応してなかった。)変更部分は次の様な感じ。
/usr/src/sys/i386/include/cputypes.h
#define CPU_GEODE1100 17 /* NS Geode SC1100 */
#define CPU_GEODELX 18 /* AMD Geode LX */
末尾を追加
/usr/src/sys/i386/i386/vm_machdep.c
cpu_reset_real()
{
u_int64_t msreg;
<snip>
if (cpu == CPU_GEODE1100) {
/* Attempt Geode's own reset */
outl(0xcf8, 0x80009044ul);
outl(0xcfc, 0xf);
} else if ( cpu == CPU_GEODELX) {
msreg = rdmsr(0x4c000014);
msreg |= ((0xde << 16) | (1<<14) | (1<<13) | (1<<0));
wrmsr(0x4c000014, msreg);
}
u_int64_t msreg;と最後の else if 以降を追加。
/usr/src/sys/i386/i386/identcpu.c
strcpy(cpu_model, "AMD ");
switch (cpu_id & 0xFF0) {(snip)
case 0x5a0:
strcat(cpu_model, "Geode LX");
cpu = CPU_GEODELX;
/* tsc_is_broken = 1;*/
/*
* Make sure the TSC runs through suspension,
* otherwise we can't use it as timecounter
*/
wrmsr(0x1900, rdmsr(0x1900) | 0x20ULL);
break;
こちらはstableのsource?から拝借。 tsc_is_brokenはstable sourceを見つけるまで自分が勝手に使っていたコード。
う~ん…AKI H8+uClinuxでやろうとしていることを、こっちでやる方が楽な気がしてきた…。H8のuClinuxは開発環境作るだけで苦労し過ぎ。


Comments
みんな の プロフィールは、アクセスアップをお手伝いするサイトです。
http://blog.livedoor.jp/mipurofi/
より多くのひとに貴方のブログを見てもらえます。
Posted by: みんな の プロフィール | December 05, 2007 at 04:08 AM