特集:
さいごのちから
概要
98 DOS 環境の運用上の延命処置として、DOSクライアントに対してEthernet経由でディスク資源を公開できるサーバを Linux/98 ででっちあげてみました。素直にLANtasticいれろよとかサーバ窓機でいいじゃんとかそもそもAT機で(以下略)等のつっこみは却下。

構成
DOS側はいつも通りのLANMANで、プロトコルは生のNetBEUIとなります。


見ての通り、パッチの元バージョンと当てる先がずれてる上にばっちり正面衝突してたりするので、その辺は手動調整です‥‥というかパッチマージをこなしただけではバグバグでほとんど動きませんが

ダウンロード
ちゃんと分離とかしておかなければならない需要がある分野とはとても思いがたいので、以下のパッチでは pc98パッチ と NetBEUIパッチ と 趣味パッチ が渾然一体ごちゃ混ぜとなっております。

警告: そもそも私はUn*x類には明るくありません。というかUn*x類の上でまじめに作業するのは初めてだったりします。当然ながらkernelハックの経験はゼロというか、今回の作業を累計しても一ヶ月に足りないと思われます。斯様なド素人が行ったkernelハックですからなにが起きても驚いてはいけません。実はとんでもないこととかしてる可能性は極めて高いです。

kernel.bz2> kernel-source-2.4.27_patch-pc98-netbeui.diff [Oct 19, 2004]
厳密に言うとパッチ元は Debian kernel-source-2.4.27 (2.4.27-5) です。展開した中で patch -p1 してください。

samba.bz2> samba-2.2.11-ja-1.0_patch-2.2.12-netbeui.diff [Oct 19, 2004]
パッチ元は Smaba 2.2.11-ja-1.0 です。展開した中にある source ディレクトリの中で patch -p1 してください。

これらのパッチは様々な過去の遺産をつぎはぎした累積的なものであり、大半は私自身の著作ではありませんので取り扱いには注意してください。基本的にはGPLに従っておけば間違いないと思いますが実のところあまり確認していません (ぉぃ)。
なお私自身の寄与分について私が特に権利の主張をすることはありません。

既知の不具合

よけいなこととか

現在の状態
まあ一応は動いてるわけで。たぶん。

DOS LMWin2k
 ディレクトリは K:\SRC\PETIT313

.            <DIR>     04-09-28    9:30
..           <DIR>     04-10-01   11:06
be           <DIR>     04-05-23    0:35
contrib      <DIR>     04-05-23    0:35
darwin       <DIR>     04-05-23    0:35
engine       <DIR>     04-05-23    0:35
file_io      <DIR>     04-05-23    0:35
FICH05~Q     <DIR>     04-05-23    0:35
linux        <DIR>     04-09-28   14:04
os2          <DIR>     04-05-23    0:35
pthread      <DIR>     04-05-23    0:35
rfork        <DIR>     04-05-23    0:35
win          <DIR>     04-05-23    0:35
CKBXU3~F         74592 04-05-23    1:07
CRA3PU~U         25774 01-08-29    0:24
history           2624 04-05-17   23:39
IY0CCF~2          5849 02-02-05   14:09
main     c       24592 04-05-23    0:35
GDTHXB~C           817 04-05-23    0:35
MXV0SN~T IN       7457 04-05-23    1:07
gogo_dll def       666 03-10-05    9:50
gogo_con dsp     27010 03-01-04   12:36
gogo_dll dsp     27437 03-01-04   17:29
gogo     dsw      1123 02-12-28   15:09
readme   htm      9018 04-05-18    8:11
readme_e htm      4386 04-05-18    8:13
CDUHAU~9 IN       2676 04-05-23    0:35
CKBXU3~F IN       4462 04-05-23    0:48
dec      js        157 04-05-18    8:05
THLTD4~D GZ        348 04-05-18    8:18
       30 個          218988 バイトのファイル
                   504692736 バイトが使用可能      
 K:\src\petit313 のディレクトリ

2004/09/28  09:30       <DIR>                          .
2004/10/01  11:06       <DIR>                          ..
2004/05/23  00:35       <DIR>          BQPNSH~E        be
2004/05/23  00:35       <DIR>          CDPTPU~S        contrib
2004/05/23  00:35       <DIR>          DD1ICS~0        darwin
2004/05/23  00:35       <DIR>          EIB003~V        engine
2004/05/23  00:35       <DIR>          FL6BEC~M        file_io
2004/05/23  00:35       <DIR>          FICH05~Q        FreeBSD
2004/09/28  14:04       <DIR>          LUFO5K~5        linux
2004/05/23  00:35       <DIR>          OBT60N~V        os2
2004/05/23  00:35       <DIR>          P9I5AC~3        pthread
2004/05/23  00:35       <DIR>          R3HV2X~L        rfork
2004/05/23  00:35       <DIR>          W93MI3~H        win
2004/05/23  01:07               74,592 CKBXU3~F        configure
2001/08/29  00:24               25,774                 COPYING
2004/05/17  23:39                2,624 H99OY2~3        history
2002/02/05  14:09                5,849 IY0CCF~2        install-sh
2004/05/23  00:35               24,592 M0W2TQ~I.C      main.c
2004/05/23  00:35                  817 GDTHXB~C        gogo.spec
2004/05/23  01:07                7,457 MXV0SN~T.IN     Makefile.in
2003/10/05  09:50                  666 GJQLY4~W.DEF    gogo_dll.def
2003/01/04  12:36               27,010 GKL91F~C.DSP    gogo_con.dsp
2003/01/04  17:29               27,437 GJQLY4~W.DSP    gogo_dll.dsp
2002/12/28  15:09                1,123 GAPL1H~5.DSW    gogo.dsw
2004/05/18  08:11                9,018 RGHOGC~F.HTM    readme.htm
2004/05/18  08:13                4,386 RIUKVC~J.HTM    readme_e.htm
2004/05/23  00:35                2,676 CDUHAU~9.IN     config.h.in
2004/05/23  00:48                4,462 CKBXU3~F.IN     configure.in
2004/05/18  08:05                  157 DGU1YW~V.JS     dec.js
2004/05/18  08:18                  348 THLTD4~D.GZ     tools.css.gz
              17 個のファイル             218,988 バイト
              13 個のディレクトリ     504,725,504 バイトの空き領域

case sensitive = yes であってもmangleかかった後は絶対に case insensitive でいいというのがミソなわけです。この状態でどちらのクライアントからでも全てのファイルにちゃんとアクセスできます。ただしWin9x系クライアントが相手の場合は話が別で、long name しか使おうとしないわりにことある毎になんでもかんでもおおきくしたがるためどうにもなりません。
一つわかっていることとして、これはcaseの問題とは関係なくてhash2の問題なのですが、cmd.exe のファイル名補完はどうやら最初にショートファイル名だけで探索を行ってからロングファイル名で絞り込むというような動作をしているらしく、2文字以上与えての補完がうまくいきません。まあ操作性が落ちるだけでアクセス不能とかになるわけではないですが。

ちなみに上図ではDOSクライアントに対してファイル名を小文字で出していますが、悲しいかな半端に賢い系の便利ツールが騙されてしまうので、実運用では素直に大文字化しておいたほうがいいような気がします。本来であれば小文字ショートネームというのは存在し得ないわけで、たとえOSレベルでは問題が生じなくてもその上で動く個別のプログラムがバカやってくれるのまでは止めようがありません。同じような事はWinNT系での case の扱いにも言えて、例えば fc.exe はダメダメだったりします。

あとはdmesgとか。
Linux version 2.4.27-pc98 (***) (gcc version 3.3.4 (Debian 1:3.3.4-6sarge1)) #***
CLOCK_TICK_RATE = 2457600
BIOS-provided physical RAM map:
 BIOS (common area): 0000000000000000 - 00000000000a0000 (usable)
 BIOS (common area): 0000000000100000 - 0000000008000000 (usable)
128MB LOWMEM available.
On node 0 totalpages: 32768
zone(0): 32768 pages.
zone(1): 0 pages.
zone(2): 0 pages.
DMI not present.
Kernel command line:  root=/dev/hda1 gdccon=30lines
Initializing CPU#0
Detected 198.946 MHz processor.
Console: colour NEC PC-9800 Normal 80x30
Calibrating delay loop... 396.49 BogoMIPS
Memory: 127764k/131072k available (950k kernel code, 2924k reserved, 286k data, 68k init, 0k highmem)
Dentry cache hash table entries: 16384 (order: 5, 131072 bytes)
Inode cache hash table entries: 8192 (order: 4, 65536 bytes)
Mount cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer cache hash table entries: 8192 (order: 3, 32768 bytes)
Page-cache hash table entries: 32768 (order: 5, 131072 bytes)
Enabling new style K6 write allocation for 128 Mb
CPU: L1 I Cache: 32K (32 bytes/line), D cache 32K (32 bytes/line)
CPU: L2 Cache: 256K (32 bytes/line)
CPU:     After generic, caps: 008021bf 808029bf 00000000 00000002
CPU:             Common caps: 008021bf 808029bf 00000000 00000002
CPU: AMD-K6(tm) 3D+ Processor stepping 01
Checking 'hlt' instruction... OK.
POSIX conformance testing by UNIFIX
PCI: Using configuration type 1
PCI: Probing PCI hardware
PCI: Probing PCI hardware (bus 00)
Limiting direct PCI/PCI transfers.
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
apm: BIOS version 1.1 Flags 0x03 (Driver version 1.16)
Starting kswapd
pty: 256 Unix98 ptys configured
Real Time Clock driver for NEC PC-9800 v1.2
Floppy drive(s): fd0 is 1.44M
e100: Intel(R) PRO/100 Network Driver, 3.1.4
e100: Copyright(c) 1999-2004 Intel Corporation
e100: eth0: e100_probe: addr 0x20000000, irq 3, MAC addr ***
e100: eth1: e100_probe: addr 0x20001000, irq 6, MAC addr ***
Uniform Multi-Platform E-IDE driver Revision: 7.00beta4-2.4
AEC6280R: IDE controller at PCI slot 00:11.0
AEC6280R: chipset revision 6
AEC6280R: not 100% native mode: will probe irqs later
AEC6280R: ROM enabled at 0x23000000
    ide0: BM-DMA at 0xc000-0xc007, BIOS settings: hda:pio, hdb:pio
    ide1: BM-DMA at 0xc008-0xc00f, BIOS settings: hdc:pio, hdd:pio
hda: ***, ATA DISK drive
hdb: MATSHITA CR-583, ATAPI CD/DVD-ROM drive
blk: queue c026d0c0, I/O limit 4095Mb (mask 0xffffffff)
ide0 at 0x6040-0x604f,0x604a-0x604d on irq 9
hda: attached ide-disk driver.
hda: CHS: physical 3294/16/63, logical 24414/8/17, BIOS 24414/8/17
hda: 3320352 sectors (1700 MB) w/128KiB Cache, CHS=24414/8/17, DMA
hdb: attached ide-cdrom driver.
hdb: ATAPI 8X CD-ROM drive, 128kB Cache
Uniform CD-ROM driver Revision: 3.12
Partition check: ***
NET4: Linux TCP/IP 1.0 for NET4.0
IP: routing cache hash table of 1024 buckets, 8Kbytes
TCP: Hash tables configured (established 8192 bind 16384)
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 68k freed
Adding Swap: 349308k swap-space (priority -1)
ad1848/cs4248 codec driver Copyright (C) by Hannu Savolainen 1993-1996
e100: eth0: e100_watchdog: link up, 100Mbps, full-duplex
e100: eth1: e100_watchdog: link up, 100Mbps, full-duplex
LLC 2.0 by Procom, 1997, Arnaldo C. Melo, 2001
NET4.0 IEEE 802.2 extended support
NET4.0 IEEE 802.2 User Interface SAPs, Jay Schulist, 2001
NetBEUI 2.0 by Procom, 1997, Arnaldo C. Melo, 2001

サーバがうるさいのはかなわないのでゴミのように小さなHDDを使っていますが気にしないように。あとCPUがやたら遅いのもわざとです。それじゃあCPU換装の意味ないじゃんと思われるかも知れませんが、元々これはコアアーキテクチャ変更による質的な速度向上のほうが狙いであって、実際のところ98では元々メモリ周りが異様に遅いせいでクロック上げても実用上は大差無いのです。ちなみに供給電圧も落としていて、実はこれくらいだと自然空冷でももつようなのですが、さすがに怖いので弱々しく強制空冷しています →死にかけWiNDyの症状が悪化してあまりにも騒々しくなってきたので、電源ファンが温度感応でないのを逆手にとって紙ダクト工事で受動的吸気空冷に変更。
daemon類は当初目的である Samba改 は当然として、他に syslog-ng, autofs4, chrony, fcron と無駄に色気だしてます (笑)。autofs は CD-ROM を Samba 経由で使うことを考慮してのものですが‥‥えーと media change notify が出てないのか出てるのに反応してないのか‥‥さてどっちでしょう →だめぽいのでやめ(苦笑)

あと MATE-X WSS がad1848で動くので、mpg123-oss-3dnow とか入れてみたり。

[Rev]