修正したリリースの作成

NetBSDの動作条件で書きましたように、さくらのVPS(v3) 1Gで動作させるためにはカーネルの修正が必要です。

ソースコードの修正

以下の2つの修正を行います。

if_wm.cのパッチ

wm(4)の本体であるif_wm.cのパッチです。wm(4)はインテルのi8254xをベースとしたギガビットイーサネットのドライバーで、EEPROMの内容の読み書きを行う部分の修正です。

パッチを表示
Index: sys/dev/pci/if_wm.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/if_wm.c,v
retrieving revision 1.1.1.24
retrieving revision 1.1.1.1.2.20
diff -u -u -r1.1.1.24 -r1.1.1.1.2.20
--- sys/dev/pci/if_wm.c 29 Nov 2011 01:12:03 -0000      1.1.1.24
+++ sys/dev/pci/if_wm.c 30 Nov 2011 06:28:12 -0000      1.1.1.1.2.20
@@ -4588,6 +4588,14 @@
                reg = CSR_READ(sc, WMREG_EECD) & ~(EECD_SK | EECD_DI);
                CSR_WRITE(sc, WMREG_EECD, reg);
 
+               /* XXX: workaround for a bug in qemu-0.12.x and prior */
+               reg |= EECD_SK;
+               CSR_WRITE(sc, WMREG_EECD, reg);
+               reg &= ~EECD_SK;
+               CSR_WRITE(sc, WMREG_EECD, reg);
+               delay(2);
+               /* XXX: end of workaround */
+
                /* Set CHIP SELECT. */
                reg |= EECD_CS;
                CSR_WRITE(sc, WMREG_EECD, reg);

リリースの作成

ソースコードを修正したら、後はいつものようにbuild.shスクリプトでリリースを作成します。次はamd64版を作成する場合の一例です。

# build.sh -m amd64 -D /work/amd64/tree -O /work/amd64/obj -R /data/release

これでエラーがなければ/data/release以下に、NetBSDのrelease(7)に基づいた構成のリリースを作成できます。