【追記】MINIX 3.1.6がリリースされました。VPCドライバが入っています。 ⇒ id:n7shi:20100208
id:n7shi:20100130のドライバを3.1.5にバックポートして、簡単にインストールできるようにISOイメージを用意しました。
Virtual PCでISOイメージをキャプチャして、以下の手順でインストールします。
cd / isoread /dev/c0d2 tulip.tar | tar xvf - cd /usr/src/drivers/dec21140A make install netconf ← ドライバを自動認識してIPアドレスを設定 reboot
これでネットワークが使えるようになります。NATモード推奨です。DHCPの取得に失敗することがあります。詳しくはid:n7shi:20100130を参照してください。
バックポート
バックポートの技術的な面を説明します。これらはすべてISOイメージに含まれていますので、改めて手動修正する必要はありません。独自にドライバを追加する際の参考にしてください。
SEF
trunkではSEFという仕組みが導入されました。3.1.5にはないため、ダミーのヘッダ(sef.h)を用意して関数をマクロで置き換えています。
/* Dummies for System Event Framework (SEF) functions. */ #ifndef _SEF_H #define _SEF_H typedef void sef_init_info_t; #define sef_startup() #define sef_setcb_init_fresh(f) f(0, 0) #define sef_setcb_init_restart(f) #define sef_receive receive #define ds_retrieve_label_num ds_retrieve_u32 #endif /* _SEF_H */
ヘッダで差分を吸収しているため、ドライバ本体は修正していません。
/bin/netconf
ドライバを追加しています。
--- /bin/netconf.orig +++ /bin/netconf @@ -106,7 +106,8 @@ card 4 "Realtek 8029 based card (also emulated by Qemu)" "10EC:8029" card 5 "NE2000, 3com 503 or WD based card (also emulated by Bochs)" card 6 "AMD LANCE (also emulated by VMWare and VirtualBox)" "1022:2000" - card 7 "Different Ethernet card (no networking)" + card 7 "DEC Tulip 21140A in VirtualPC" "1011:0009" + card 8 "Different Ethernet card (no networking)" } warn() @@ -151,7 +152,8 @@ test "$v" = 1 && echo " chose option 4, the defaults for emulation by Bochs have been set." ;; 6) driver="lance"; ;; - 7) driver="psip0"; ;; + 7) driver="dec21140A"; ;; + 8) driver="psip0"; ;; *) warn "choose a number" esac }
/etc/drivers.conf
ドライバを追加しています。
--- /etc/drivers.conf.orig
+++ /etc/drivers.conf
@@ -465,3 +465,26 @@
;
uid 0;
};
+
+driver dec21140A
+{
+ system
+ UMAP # 14
+ IRQCTL # 19
+ DEVIO # 21
+ #SDEVIO # 22
+ SETALARM # 24
+ TIMES # 25
+ GETINFO # 26
+ SAFECOPYFROM # 31
+ SAFECOPYTO # 32
+ SETGRANT # 34
+ PROFBUF # 38
+ SYSCTL
+ ;
+ pci device 1011/0009;
+ ipc
+ SYSTEM PM RS LOG TTY DS VM
+ pci inet
+ ;
+};
/usr/etc/rc
ドライバを追加しています。また、dec21140Aドライバの制限でhostaddrが使えないため、使用箇所をコメントアウトしています。
--- /usr/etc/rc.orig
+++ /usr/etc/rc
@@ -91,7 +91,7 @@
fi
# start only network drivers that are in use
- for driver in lance rtl8139 fxp dpeth dp8390 orinoco
+ for driver in lance rtl8139 fxp dpeth dp8390 orinoco dec21140A
do
if grep " $driver " /etc/inet.conf > /dev/null 2>&1
then
@@ -151,9 +151,9 @@
if [ "$net" ]
then
# Get the nodename from the DNS and set it.
- trap '' 2
- intr -t 20 hostaddr -h
- trap 2
+ #trap '' 2
+ #intr -t 20 hostaddr -h
+ #trap 2
fi
# Recover files being edited when the system crashed.