【お知らせ】プログラミング記事の投稿はQiitaに移行しました。

Virtual PCでネットワーク (3.1.5)

【追記】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.