für Linux-Nutzer und alle, denen die vorherigen Ansätze nicht verrückt genug waren (oder nicht helfen konnten) beschreibe ich hier die 3. Möglichkeit mit GEOS aus der DOSBox heraus ins Internet zu gelangen.
Wie funktioniert's?
Einige DOSBox-Versionen besitzen eine eingebaut Modememulation, welche eine Verbindung zu einer anderen DOSBox-Instanz oder einem Telnet-Deamon unter Linux/UN*X aufbauen kann. Diese Eigenschaft kann man, wie im
DOSBox-Wiki beschrieben, benutzen, um eine Verbindung zu einer entfernten PPP-Gegenstellen herzustellen - ganz 'old school' :-)
|
Quellcode
|
1
|
(Internet)--<Linux Eth.>--[Linux]--<ppd>[socat]--[DOSBox[modem_emu][serial]--[GEOS][Skipper]
|
Was braucht man?
- DOSBox MB5/MB6
- Eine Linux-Installation mit SystemD, SoCat und natürlich PPP (DOSBox MB5/6: sowie einer IP-Adresse mit 4x3 Ziffern, z.B. 192.168.178.18

- (optional) mTCP und
LSPPP zum debuggen/testen
Los gehts!
- Serielle Schnittstelle und Modememulation in DOSBox.conf aktivieren (IPX und NE2000 deaktivieren):
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
|
[serial]
serial1=modem listenport:23
serial2=dummy
serial3=disabled
serial4=disabled
[ipx]
ipx=false
[ne2000]
ne2000=false
|
- DOSBox starten und die ggf. angeforderten Windows-Firewalländerungen akzeptieren, damit die DOSBox-Applikation von Linux aus erreichbar ist.
- unter Linux (bei mir Debian 9.0) die benötigten Pakte installieren:
|
Quellcode
|
1
|
apt install iptables ppp socat
|
- einen Systemd-Service für die virtuelle serielle Schnittstelle anlegen unter: /etc/systemd/system/socat@.service
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
[Unit]
Description=Multipurpose relay (SOcket CAT)
After=network.target
StartLimitIntervalSec=0
StartLimitBurst=3000
[Service]
Restart=always
RestartSec=3
EnvironmentFile=/etc/default/socat-%i.conf
Type=simple
PIDFile=/var/run/socat-%i.pid
ExecStart=/usr/bin/socat -L/var/run/socat-%i.pid $SOCAT_DEFAULTS $SOCAT_CONNECTION
[Install]
WantedBy=multi-user.target
|
- die zugehörige Konfigurationsdatei unter erstellen: /etc/default/socat-ttyN0.conf
|
Quellcode
|
1
2
|
SOCAT_DEFAULTS=-d -d -s -lf /var/log/socat.log
SOCAT_CONNECTION=TCP4-LISTEN:23 PTY,link=/dev/ttyN0,raw,echo=0,b57600
|
- da das virtuelle serielle Interface /dev/ttyN0 nur verfügbar ist, wenn ein Client eine Verbindung aufgebaut hat, müssen wir die Geräte-Datei überwachen um bei Bedarf den ppp-Service starten zu können. Das erledigen wir in: /etc/systemd/system/pppd@.path
|
Quellcode
|
1
2
3
4
5
6
7
8
|
[Unit]
Description=Start PPP, if the given (SoCAT) TTY is present
[Path]
PathExists=/dev/%i
[Install]
WantedBy=multi-user.target
|
- jetzt ist noch der eigentlichen PPP-Service zu erstellen in: /etc/systemd/system/pppd@.service
|
Quellcode
|
1
2
3
4
5
6
7
8
9
|
[Unit]
Description=Start PPPD for the given TTY
[Service]
Type=simple
EnvironmentFile=/etc/default/pppd-%i.conf
PIDFile=/var/run/pppd%i.pid
ExecStartPre=/sbin/iptables -t nat -A POSTROUTING -s $PPPD_NETWORK -j MASQUERADE
ExecStart=/usr/sbin/pppd /dev/%i $PPPD_CONNECTION $PPPD_DEFAULTS
|
- auch dieser Service braucht eine Konfiguration unter: /etc/default/pppd-ttyN0.conf
|
Quellcode
|
1
2
3
|
PPPD_DEFAULTS=nodetach local noauth
PPPD_NETWORK=192.168.6.0/30
PPPD_CONNECTION=57600 192.168.6.1:192.168.6.2
|
- bevor wir die Services starten können, ist noch das Routing zu aktivieren im System zu aktivieren indem eine entsprechnde syctl-Konfiguration erstellt wird in: /etc/sysctl.d/98-ppd.conf
|
Quellcode
|
1
|
net.ipv4.ip_forward=1
|
- Services aktivieren & starten:
|
Quellcode
|
1
2
3
4
5
6
|
sysctl -p /etc/sysctl.conf
systemctl daemon-reload
systemctl enable socat@ttyN0
systemctl start socat@ttyN0
systemctl enable pppd@ttyN0.path
systemctl start pppd@ttyN0.path
|
- jetzt kann man die DOSBox starten und (optional) mit LSPPP den Verbindungsaufbau testen:
|
Quellcode
|
1
|
lsppp /d:<IP des Linux-Rechners> /B:57600 /V:60
|
- In GEOS muss man bei der Rufnummer die Punkte der IP-Adresse des Linuxrechners weglassen, aus "192.168.178.141" wird somit "192168178141". Haben nicht alle Octets 3 Ziffern müssen Nullen eingefügtwerden z.B 10.52.236.17 -> 010052236017. Der DNS1-Eintrag muss ebenfalls an die des eigenen Routers angepaßt werden. Die anderen IP-Adressen könnt ihr 1:1 aus dem Screenshot übernehmen:
- Unter Linux kann man mit folgendem Kommando die Aktivitäten Services kontrollieren:
|
Quellcode
|
1
|
journalctl -fex
|
Bei mir läuft jetzt eine kleine Linux-VM auf dem NAS und ich habe dieses Setup mit DOSBox unter Windows 7/10 sowie unter OS X getestet. Wenn GEOS in der DOSBox unter Linux läuft, sollte das ganz auch lokal (IP: 127.0.0.1) funktionieren. Ich hoffe, ich konnte einigen wieder Mut machen, an GEOS-kompatiblen Webseiten zu basten oder diese weiter zu pflegen. Und so fühlt es sich an Eure Seiten zu besuchen:
Skipper Video
Gruß
Thomas