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