And besides the NetBEUI being eaten on the network for no reason I can see, as I’m sure these machines should be able to talk to each-other this was the end result:
And what about not trying to create a machine account?
I should have expected this not to work.
Having dumped NetBEUI for TCP/IP, I can see them talk, it’s not a name resolution issue or anything like that. On the flip side can LAN Manager join a Windows NT domain? I’m not sure on that one either.
And not too surprising using the LAN Manager DOS client I can log onto the OS/2 domain just fine.
Kind of verbose and annoying but yes, it works!
However, despite LAN Manager 2.2 providing a TCP/IP stack to connect to both OS/2 and NT servers, there is no winsock interoperability dll. Do I really have to load more than one NIC and stack at the same time?!
The one thing I had been hoping to build up to was using mailslots, a UDP like IPC/RPC mechanism from back in the old dark days of early LAN Manager 1.0 The can be broadcasted to all nodes on the network that are listening by writing to \\*\MAILSLOT\<YOUR LOCAL BOX>. On the surface these broadcast type things are modern day terrible, we prefer lookup services like DNS, but in the 80’s it’s not like people were going to put tens of thousands of machines on a single network…
I cannot thank my Patrons enough for this attempt at doing something multitenant as I really did need Microsoft C 6, and the Windows 3.0 SDK. The example from the Lan Manager 2.0 Programmer’s Toolkit (Why was this stuff never in the base SDK?!) shows an OS/2 LAN Manager service providing rendering services over the network to render the Mandelbrot to the Win16 client. It’s actually very neat. It really gives OS/2 that pre-Windows NT feel, with the services as they are not in your face, although at the same time I’ve found that I had to do an interactive logon to get things started, so maybe LAN Manager OS/2 servers were not “Lights out”? I guess I need to look more into it, as it just feels more and more how NTOS2/ clearly grew out of OS/2 + LAN Manager.
Obviously as soon as I see this, thanks to getting my hands on the OS/2 6.78 network client, I also see it’s not only obsolete but going to be removed. If anything, it’s impressive that an OS/2 feature has remained in NT for so long.
I had wanted to do something with TCPIP and mailslots, and I had figured that Windows NT would be the best glue being in that perfect space of OS/2 compatibility and robust TCP/IP, but I wasted far too much time to basically see that if they are not part of the same domain, the mailslot’s just don’t work.
I haven’t given up, but I primarily used Netware for PC networking back in the 90’s so this is all kind of new to me. Looking through resource kits online there doesn’t seem to be a lot of material about integrating LAN Manager into a NT Domain.
After seeing the spotlight on twitter from WinWorld, on NetManage Chameleon, an old TCP/IP stack that supported Windows 3.0! With more details over on the forum. I was inspired to set it up myself.
I did go a bit overboard showing how to install MS-DOS & Windows 3.0 on Qemu. Maybe it’ll help someone who wants to try to use Qemu, but is too scared? Maybe I moved too quickly.
One thing I did do differently in this run, is launching the monitor and a serial port as tcp servers so I could telnet into the VM, effectively having a way to share text like a clipboard back and forth. I’m kind of surprised I hadn’t really started using Qemu in this manner much earlier.
I needed to setup another WordPress for something else, and I host it on a server with no https. However of course it’s fronted by a proxy with https. And WordPress embeddeds the http into the stream, and changing that with redirects causes it to ping pong like crazy.
So this is by no means the best fix, it is *A* fix. For me. YMMV.
I had to add this into the site config from apache
<Directory /var/www/mynewsite.org/>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all
Require all granted
</Directory>
And does that work? no it sets up mod_rewrite (you did a2enamod it right?! RIGHT?!)
RewriteEngine on
Header always set Content-Security-Policy: upgrade-insecure-requests
RewriteRule ^$ /wordpress [L]
So the big thing here is updating the header. I had to search a bit to find that part, so yeah that was needed. The other part is that wordpress really wants to be in /wordpress not in the root, so a simple RewriteRule will put that in it’s place.
Good Grief.
I should explain my hosting situation more. I’ve been forced into some kind of nomadic situation, and thanks to some weird issue on Azure’s WordPress container thing my site ate itself. Like it literally destroyed the files. I had backups of course, and well either being evicted from a data centre because of the Windows CE Nethack scandal, or having hosting companies either go under with no warning, or drop me for being far too much traffic than they signed up for, I’d taken to not only owning my data but hosting it all myself.
I do enjoy the ‘nomad’ aspect of it all, but it’s a little crazy. I like to think of this as portable stealth hosting as I can blend into user traffic, and I can physically take my data with me. Of course, I have backups as well!
So to describe the setup I guess i need a fine MS Paint style drawing!
I have been using this kind of setup to some degree going back to when I setup the utzoo search engine back in 2017. I’d only expanded on it to host everything now. Working backwards I need to blend into residential traffic, so I need a typical 90’s like office vpn, which means PPTP. So going on lowendbox, I get some cheap VPS, install haproxy and PPTP server onto that. This way I’m basically renting out a static IP address for less than a Starbucks, but it let’s me have the freedom to move around and just look like user traffic, as the PPTP connection is bi-directional.
This way I can use various backend servers to split up various domains on the same port. Since cloudflare fronts I don’t need any weird SSL certificate with combination domains. I also get to sneak in a redirect for the old virtuallyfun.superglobalmegacorp.com, as google had a major fit about me not having it at the top level domain. The Windows NT 3.1 server is a Qemu virtual machine running on the VPS. It just has a static page so there wasn’t much point being all that sophisticated.
I then setup a Cloudflare account, and then point my domain directly to the VPS. This also let’s me grab a certificate from Cloudflare to load onto the VPS to encrypt the conversation from them to my VPS, just as the PPTP connection is also encrypted. Another advantage of PPTP over say IPsec is that older OSs like Windows NT 4.0 support it. Not to mention with tunnels being left up so incredibly long, once again I want to blend in as user traffic, and IPsec or OpenVPN just draws too much attention. It sure did in China, and sadly that’s the model I fully expect more and more of the world to be following.
The other advantage of Cloudflare is that they do some aggressive caching which makes hosting on a residential connection viable. In this case over the last 30 days I’ve only had to ‘upload’ 41 of the 158GB of traffic.
If something gets popular this can make all the difference! Again, it’s key to being stealthy.
In the same way it also allows me to host my own Exchange, or any other weird application. Which then takes me to the Apache config. I have Windows 10 on the Lenovo, and loaded up WSLv1 so I could have Windows natively integrate with the filesystem. I also like that it’s got such low overhead as WSLv1 is just a subsystem, unlike v2 being a lightweight VM, like shades of Win/OS2 back in the day. My setup takes a big page from running SWGEMU on WSLv1, where I use the Win64 version of MariaDB, and the Apache/PHP is in a Linux Ubuntu distro. The other advantage here is that as my Lenovo PPTP’s into the VPS, the Apache will by default listen on port 80. Which then leads to the whole needing to set security on the headers to allow the http to become a seamless https.
I also can have multiple things listening on different ports, just as I use haproxy again locally to split out the utzoo site onto the old Apache server with all the re-write rules, and then finally to the Windows NT 4.0 workstation with the Altavista Personal desktop search.
The overall performance on this low end Xeon E3-1225 v2 is quite acceptable.
As I had mentioned WSLv1 being a subsystem means that the processes are transparent so task-manager can immediately show yo what is going on. The opaqueness of Virtual Machines just adds to the time to identify any issues.
And all it takes is a scheduled task to dump the MariaDB, and run an xcopy onto my OneDrive, and now I’ve got a cloud backup. No plugins needed, no scripts that will break as cloud API’s are forever being depreciated and changing. Very nice!
I do like the flexibility of this being a somewhat simple setup. Not to mention being able to have more than one WSL container for various applications, being able to go so far as to break my Apache setup into multiple instances, all being ‘l7 routed’ through an instance of haproxy either at home, or in the VPS is very nice.
Oh, sure I could mess with self signed certs, and trust myself but I just didn’t want to deal with the overhead of double encryption. Maybe it’s something I’ll revisit later.
Also sorry for the ads. 2024 is starting out…. interesting.
A while back I was looking for a 19in 5:4 screen so I messaged a guy I know that would normally have something like it. When I asked him about it, he said he didn’t have any 19in screens, however, he has this “14in Sun LCD”. I was intrigued so I asked him to send pics of it. Lo and behold, this is what he sent me the next day:
Unfortunately, bad news came. He powered it on and told me it was flickering. Ok fine. These are hard to come by in my country (Vietnam) so I decided to get it anyways. He also cut the price by half, so it was reasonable-ish.
When I got home and powered it on…. yeah. It was flickering. I opened up the menu of the LCD and I quickly noticed something peculiar: the image was flickering but the LCD menu was not. When I opened it up, I made yet another interesting discovery: the whole thing is practically a sun ray duct taped to a normal LCD. The sun ray board is not driving the lcd directly, there’s a separate controller board (similar to what you would find in a normal standalone display without a sun ray shaped tumor on the back).
As it turns out the flickering was caused by a single cap that went bad. I replaced it and the image looks good.
There is a GUI thing I’ve read that allows you to configure various parameters of the sun ray so I tried to bring it up. No matter what key combo I pressed it didn’t show up. Once again, bad news came. My sun ray has the non-GUI firmware. The only way to enable it is to flash a GUI firmware or a firmware with GUI enabled (the firmware shipped with SRSS 5.1 and below has separate firmware files for GUI and non-GUI while SRSS 5.2 and later both GUI and non-GUI are a single file, GUI on/off is specified with a flag during flashing).
Okay then. No big deal, all I have to do is just flash the firmware, right? Well yes but no. I would very quickly find out that I don’t have the firmware. I had SRSS 5.4 installed and turns out, 5.3 and later stopped including the firmware and that was something you needed MOS for. Great job Larry!
Okay then. No big deal, all I have to do is just download SRSS 5.2, right? Once again, for the second time, yes but no.
*cough*
2 days later I got access to edelivery again. I downloaded SRSS 5.2. I uninstalled SRSS 5.4 and installed 5.2, all I have to do now is just flash the firmware right? riiiight??? Once again, for the THIRD time, yes but no. For some reason I was able to flash the firmware with “utload“ (which has GUI disabled) but I couldn’t flash it with “utadm“ despite it being able to connect to my T5220 and start a session just fine. As I would find out after one whole day wasted, I was supposed to use a separate network served by the T5220, and this is what I did: Setup NET1 port as a dedicated interface for Sun Ray
-bash-3.2$ sudo utadm -a e1000g1 ### Warning: DHCP Service is in the maintenance mode There could be a problem with the DHCP configuration
### It is strongly recommended to fix the problem and then use: ### "/usr/sbin/svcadm clear svc:/network/dhcp-server:default" ### to get DHCP service out of the maintenance mode before running utadm
Do you want to Continue? (Y/[N]): y ### Configuring /etc/nsswitch.conf ### Configuring Service information for Sun Ray ### configuring e1000g1 interface at subnet 192.168.128.0 Selected values for interface "e1000g1" host address: 192.168.128.1 net mask: 255.255.255.0 net address: 192.168.128.0 host name: t5220-e1000g1 net name: SunRay-e1000g1 first unit address: 192.168.128.16 last unit address: 192.168.128.240 auth server list: 192.168.128.1 firmware server: 192.168.128.1 router: 192.168.128.1 Accept as is? ([Y]/N): ### successfully setup "/etc/hostname.e1000g1" file ### successfully setup "/etc/inet/hosts" file ### successfully setup "/etc/inet/netmasks" file ### successfully setup "/etc/inet/networks" file ### Disabling Route Advertisement ### finished install of "e1000g1" interface
### Configuring firmware version for Sun Ray All the units served by "t5220" on the 192.168.128.0 network interface, running firmware other than version "4.3_146928-01_2011.06.03.14.41" will be upgraded at their next power-on.
### Configuring Sun Ray Logging Functions
DHCP is not currently running, should I start it? ([Y]/N): ### Error: unable to start dhcp services. Please restart dhcp manually after utadm has completed.
well… oops. Shouldn’t’ve ignored that. One “svcadm clear dhcp-server“ and one “svcadm restart dhcp-server“ later… Let’s try to flash the firmware.
-bash-3.2$ sudo utfwadm -A -e 00144F6F69CA -n e1000g1 -G force -n interface option ignored. It is no longer required with -e option. Unit "00144F6F69CA" will be upgraded at its next power-on if it is served by host "t5220" and is connected to the network and is not already running firmware version "4.3_146928-01_2011.06.03.14.41".
Options:
-A # add the specified unit(s) to the upgrade list
-D # delete the specified unit(s) from the upgrade list
-P # print version information
-R # remove firmware modules from boot directory
-a # apply to all units connected to the specific interface
# or subnet
-e enetAddr # apply to the unit given by the six hex bytes
# of its ethernet address
-n intf # name of a dedicated network interface to enable upgrades on
# (e.g., hme0, vge1, etc. "all" = all interfaces)
-G option # control enabling of configuration GUI on Sun Rays
-g option # control disabling of configuration GUI on Sun Rays
-i filename # append contents of filename to config files
-N subnetwork # shared subnetwork address to enable upgrades on
-d # actively disable firmware download (useful with "-e")
-V # only generate version files, do not configure DHCP
-F # force firmware load even if downgrading
-u # use frame buffer to do download and decompression
-f firmware # use the firmware described by the path "firmware"
# for upgrades on the given network interface(s)
Power cycle with CTRL+Pause+A and…
…success!
Fun fact: the firmware is stored temporarily in the framebuffer (iirc at least) The GUI can now be accessed:
or the Unbridled rage of living on the trailing edge.
I hosted a Porting Party last where where I setup my Dec Alpha as a terminal server allowing people from all over the world to connect in and cross compile software for the 64bit version of Windows for the Dec Alpha. While many problems were overcome, and many more remain, I have to say the most annoying thing was joining a domain hosted by a SAMBA server.
In my mind, I though the easiest way to get files in & out of the Alpha was not to use something like IIS/FTP where it would probably lead to end-less issues with text/binary/active/passive modes, but rather I should rent a VPS, install the OS default SAMBA and just map drives. The benefit of the VPS is that it has a public address, so no NAT is required. The VPS had an option for either CentOS (no) or Debian 10. I went with the Debian, and did an in place upgrade to 11, then 12. Nothing special.
I’d never actually used SAMBA as a domain controller before, but I thought this would be a fun experiment. So the idea is then that the VPS running SAMBA is the Domain Controller, and my Alpha joins it as a member server. Everyone else can use Windows or any SAMBA client and map drives, and then copy files to the VPS, and then copy back and forth from the Alpha to the VPS. This part worked fine.
What didn’t work was SAMBA version 4.
I had come up with this config, based on the fragments of the default config, and and hints from samba.org.
[global]
netbios name = PDC
passdb backend = tdbsam
server max protocol = NT1
username map = /usr/local/samba/etc/username.map
workgroup = ALPHAPARTY
server string = Samba Server
security = user
hosts allow = 127.0.0.1, <<<peoples networks...>>>
load printers = yes
log file = /usr/local/samba/var/log.%m
max log size = 50
passdb backend = tdbsam
local master = yes
os level = 33
domain master = yes
preferred master = yes
domain logons = yes
wins support = yes
dns proxy = no
add user script = /usr/sbin/useradd %u
add group script = /usr/sbin/groupadd %g
add machine script = /usr/sbin/adduser -n -g machines -c Machine -d /dev/null -s /bin/false %u
delete user script = /usr/sbin/userdel %u
delete user from group script = /usr/sbin/deluser %u %g
delete group script = /usr/sbin/groupdel %g
[homes]
comment = Home Directories
browseable = no
writable = yes
[printers]
comment = All Printers
path = /usr/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
[public]
comment = share for everyone
path = /public
public = yes
writable = yes
printable = no
creaet mask = 0777
I had endless issues with the machine account not being either created correctly or not being authenticated. I tried manually creating it, to no avail. No matter what I tried it didn’t work.
Working with NT 4.0 must be depreciated or something but no matter what I tried IT JUST DIDN’T WORK.
Feeling outraged, I purged the old Samba, downloaded the source code to 3.6.25, built that, and using the same configuration I had tried to put together, it just worked.
Creating both a Linux user & directory, and the SAMBA credentials. On the terminal server, all that remains was assigning a local home directory & profile directories, as you really don’t want those over the WAN.
I have no idea if this is a warning to others, or whatever the larger issue is.
Porting Party II
At any rate I’ll be running another porting party this coming weekend. I can host cross compiling fine, but we need people with the 64bit Whistler beta installed to test. The best way to get details is over on discord. Lately the IRC bridge is down more than it’s up, and I can’t effectively send out passwords & get your network block to allow access to the RDP, since I’m not going to open up worldwide access to a Windows NT 4.0 SP5 machine.
So for anyone interested in porting their C/C++ to either the 32bit Alpha Windows, or 64bit Alpha Windows come join us on discord!
I’ll fire up the Alpha on Friday afternoon GMT and expect the event to run all weekend!
I want to have an internet server that people can map drives to, for copying data in/out for the upcoming Dec Alpha AXP64 building extravaganza! I wan tot use my Dec Alpha for building since it’s got a gigabyte of RAM. One of the hard parts is that NT 4 is beyond obsolete, and twice as much on the DEC Alpha. I was figuring renting a VPS, and using it as a SAMBA server so people can simply map a drive from home, copy files to the VPS, terminal server to the Alpha, and copy files to & from the internet. Easy right?!
I was non stop getting this error:
System error 1326 has occurred.
Login failure: unknown user name or bad password.
Except I knew the username & password was correct.
The key part involved a few parameters to get it working. Although many people reported success by simply setting the protocol level, for me I had to set that and the lanman/ntlm auth to yes. Trying to enable NT4 compatible encryption didn’t work either.
[global]
workgroup = WORKGROUP
server min protocol = NT1
client min protocol = NT1
lanman auth=yes
ntlm auth=yes
I’m not sure if it’s all that helpful to the world at large, or if it’s just super common knowledge, but I haven’t setup SAMBA in like forever. I guess I could go one further and join it to the domain but that doesn’t seem like it’s all that needed or all that smart.
Well today was a special day, I got 2 deliveries, one PC SDLC card, and the other being the 4 port high speed serial card for my cisco 7200.
In case you were wondering what was the serial cable, its a CAB-232FC FEM DCE RS-232 cable looks like here is the DB-60 connector side:
And here is the DB-25 side.
VERY RS-232 isn’t it?
Connect the cable to the to the router! Easy!
The router doesn’t have any PCMCIA storage so I configured the thing to get it’s IOS from a FTP server.I have to say that netbooting works great.
Slot the card into the board I found in the trash that has an ISA slot, and we’re off to the races! I wanted try to replicate my NT setup, so Server 3.5 was installing when of course:
Of course this 400Mhz Celeron is going to break the lookup list as anything beyond Pentium is too much. 🙁 I just installed on Qemu instead, and used MS-DOS backup/restore. Yes it worked!
On the SNA server install, I used the IBM SDLC option hoping it was this card I’d bought. I got lucky it was!
Just like 9track.net I kept it ‘leased’ and no constant RTS.
One thing to note about this SDLC card is that it takes IRQ 4 & DMA 1. So there goes any hope of a Sound Blaster or COM1. It’s not the end of the world.
And of course, I got the exact same result as last time.
I don’t know what I’m doing wrong.
I can see the serial interface up and passing traffic, and the DLSW circuit builds and is established.
I’ll either edit this with more details, or just follow up. I’m tired, and my eyes are blurry. But I thought I’d post this much to the world.
Unironically, I had purchased this for a whopping £4.68
No, really here’s the receipt. What a bargain!
Of course this is a legit copy with a legit key. But the online activation servers are all gone, and it looks like I’d have to call someone asking about my 22 year old copy of Windows, that I’ll load up and quickly forget.
Since I’m going to use QEMU, 0.90 with pcap support I thought I’d share the startup options:
I had high hopes for this thing. Clearly misplaced ambitions.
First up, it’s an upgrade version. So that means instead of installing XP I had to waste my time installing NT Workstation 3.51, then installing XP. Yuck. And of course it just want small FAT disks of the 2/4 gigabyte boundary type as it’s 1994. Not the bright future of 2002’s Windows XP.
I don’t know why Qemu 0.90 has issues with XP detecting the CD-ROM drive, but yeah that sucked. I wanted to load up some more insane SNA experiments, but there is no DLC / 802.2 driver for XP Home. wow.
At least once it’s satisfied, we can format the disk as one big happy partition, and we can get on with our lives.
Installation is rather uneventful, however we are instantly reminded that we have only 30 days to go. Since we have that nasty CD-ROM issue that means shutting down, and booting back up, but with this fun program on an ISO image, xp_activate.
I did try to make a call, to activate my Windows, but the connection was terrible and I’m not even sure if these numbers were right. No I mean I know they didn’t work.
So I did what all legit users end up doing, using the crack for my 21 year old copy of Windows.
And just a few clicks later, it was done.
Windows XP Home is activated.
I don’t know if it’s even really going to last, I didn’t try anything else, actually I already deleted it. And the XP folio is back on the bookshelf.
Not only is there no DLC, did you know you can’t uninstall TCP/IP? At least you can unbind it from your NIC. While it does have IPX/SPX there is no built in Netware client. When they said HOME they meant it!
There is a LOT going on in this image, and I’ll try to explain it, but yeah “it’s complicated”.
SNA networking & Hercules has always been a goal for a lot of people, including me as we always wanted to setup some SNA server of some kind. Especially on RISC platforms, as there is only so much fun on SQL server.
Okay I know the practical among you will say, doesn’t it support telnet 3270? Isn’t that good enough? Yes for day to day mundane stuff, absolutely. But I’m not all that interested in that, I wan’t to have the whole ancient network, and I wan’t it self contained and on my desk! Or on a laptop, as I see fit.
What started this whole adventure was a simple image from 9track.net, showing that being able to connect physical devices to Hercules was indeed possible!
This is a physical IBM 3178 & 3179 terminals talking to TK4- , a MVS3.8j pre-configured system!
The magic that makes this all possible, is a cisco router, running enterprise IOS, with dlsw support.
My setup is going to be inspired by this setup, but not exactly 100% But this is what I’m going to use on Windows 10
Dynamips for the cisco router, running JS-M 12.2(25)S8
Qemu 0.90 with PCAP running Windows NT 3.51 Server along with SNA Server 2.1
I had originally wanted to run the NT server on VMware but for some reason it just hangs trying to initialise the NT kernel. I didn’t bother trying to troubleshoot it, I just jumped to Qemu. Even service pack 5 didn’t help. VMware left me with the virtual network that will NAT if needed, and of course let me telnet to the Dynamips program. The SNA traffic is isolated to the MS Loopback adapter, which will let pcap programs talk to each other.
The first thing I did was run ‘hdwwiz’ on Windows 10, and added in the KM-TEST loopback adapter
We know what we want, so go to the manuall selection
Network adapters
And select the KM-TEST Loopback Adapter
Next I changed the protocols available on the loopback, as I don’t want my Windows 10 host interfering with the SNA network at all.
So the next thing to do is to get your network GUID’s. ethlist.exe from the Dynamips download will get you that:
C:\dynamips>ethlist.exe
Network devices:
Number NAME (Description)
0 \Device\NPF_{3DF0EC5D-7FBE-46DF-ACF8-EF5D8679A473} (loopback)
1 \Device\NPF_{D9FBD118-B9DF-4C3C-BD9E-07A0E34D8F75} (Local Area Connection* 8)
2 \Device\NPF_{F5057901-6A30-413A-80E4-4765DA794B7C} (Local Area Connection* 7)
3 \Device\NPF_{E3D3EC8D-29C3-4B70-B01C-600D3F9ED1D6} (Local Area Connection* 6)
4 \Device\NPF_{82EEDBC1-899D-416F-BD51-3DBE2287257F} (VMware Network Adapter VMnet8)
5 \Device\NPF_{3BC364F4-5A15-405D-926C-C594383F0323} (VMware Network Adapter VMnet1)
6 \Device\NPF_{DDF1FA94-7488-414F-A41A-EC88C1FB0DE4} (Ethernet)
7 \Device\NPF_{E7CA8F40-4639-410D-B5CA-F402FE69AF5D} (Ethernet 2)
I want the cisco router to have two interfaces, one with TCP/IP for me to be able to telnet into it (maybe other management as well?!) and the other one for the SNA traffic.
Setting up Dynamips
As mentioned above I’m going to use the VMnet1 for TCP/IP to the router, and the loopback adapter for SNA traffic. To try to make things a little easier to read I setup a small batch file that let’s me plug in variables to Dynamips:
set loopback=\Device\NPF_{3DF0EC5D-7FBE-46DF-ACF8-EF5D8679A473}
set vmnet1=\Device\NPF_{3BC364F4-5A15-405D-926C-C594383F0323}
set IOS=c7200-js-mz.122-25.S8.bin
set NPE=npe-200
..\dynamips.exe -P 7200 %IOS% ^
-t %NPE% ^
-p 0:C7200-IO-FE ^
-s0:0:gen_eth:%vmnet1% ^
-p 1:PA-4E ^
-s1:0:gen_eth:%loopback% ^
-p2:PA-4T+
The caret symbol will break up lines on NT, much like the ampersand will on Unix. And this let’s me use clear variables for the networks, IOS & NPE type so it’s nowhere near as complicated to edit.
This will create a cisco 7200 with an NPE-200, with the following cards:
So all my TCP/IP in this example will be using 192.168.199.0/24
As mentioned on the 9track page, all the magic happens on the cisco router. I’ve made a few changes as I may want to try the SDLC in the future to perhaps some other experiment if I can find an emulator that’ll drive it over serial, but for now let’s just get to the config:
!
version 12.2
service timestamps debug uptime
service timestamps log uptime
no service password-encryption
!
hostname dlsw
!
boot-start-marker
boot-end-marker
!
enable password cisco
!
ip subnet-zero
!
!
no ip domain-lookup
!
ip cef
no mpls traffic-eng auto-bw timers frequency 0
call rsvp-sync
!
!
!
!
!
!
!
source-bridge ring-group 1
dlsw local-peer peer-id 192.168.199.10
dlsw remote-peer 0 tcp 192.168.199.1
dlsw mac-addr 4000.1020.0100 remote-peer ip-address 192.168.199.1
dlsw udp-disable
dlsw transparent switch-support
!
interface FastEthernet0/0
ip address 192.168.199.10 255.255.255.0
duplex half
no clns route-cache
!
interface Ethernet1/0
no ip address
duplex half
no clns route-cache
dlsw transparent redundancy-enable 5555.5555.5000
dlsw transparent map local-mac 4000.1020.0100 remote-mac 4000.0999.0100
!
interface Ethernet1/1
no ip address
shutdown
duplex half
no clns route-cache
!
interface Ethernet1/2
no ip address
shutdown
duplex half
no clns route-cache
!
interface Ethernet1/3
no ip address
shutdown
duplex half
no clns route-cache
!
interface Serial2/0
no ip address
encapsulation sdlc
no keepalive
serial restart-delay 0
clockrate 64000
no clns route-cache
sdlc role primary
sdlc vmac 4000.0999.0100
sdlc address C1
sdlc xid C1 01700019
sdlc partner 4000.1020.1000 C1
sdlc dlsw C1
!
interface Serial2/1
no ip address
shutdown
serial restart-delay 0
no clns route-cache
!
interface Serial2/2
no ip address
shutdown
serial restart-delay 0
no clns route-cache
!
interface Serial2/3
no ip address
shutdown
serial restart-delay 0
no clns route-cache
!
ip classless
!
no ip http server
!
!
!
!
!
!
control-plane
!
!
dial-peer cor custom
!
!
!
!
gatekeeper
shutdown
!
!
line con 0
session-timeout 35791
stopbits 1
line aux 0
stopbits 1
line vty 0 4
password cisco
login
!
!
end
This sets up the router so I can telnet to it from my desktop at 192.168.199.10, and allows it to talk to the base Windows machine on 192.168.199.1
All the magical MAC addresses come from 9track.net, as he wrote the dlsw hooks, so I just copied that. There is probably a great deal that could be cleaned up, but once I saw the two talking I kind of froze what I was doing.
With that much in place I then jumped to WSL,and built the emulator from github. I cloned it, and renamed that to herc-dlsw. At least for me this was pretty straightforward. The Hercules fork will build with Visual Studio as well, but I knew I was going to need some kind of tn3270 emulator, and I wanted to use x3270, and I had just recently bought this discounted copy of XVision, so of course I wanted to use that.
Despite this catastrophic defect that wasn’t disclosed in the auction.
I downloaded and extracted the TK4- latest distro on WSL. I just created a ‘herc’ directory in my home to house the tk4- release. The next thing to do is overlay your dlsw enabled exe’s and libraries.
cd ~/herc-dlsw/.libs
mkdir x
cp * x
cd x
rm *.o *.lai
cp *.so $HOME/herc/hercules/linux/64/lib/hercules
cp *.la $HOME/herc/hercules/linux/64/lib/hercules
rm *.so *.la
cp * $HOME/herc/hercules/linux/64
Now with the binaries in place, I do need to setup the Xvision VM so I can receive the X11. Of course there is so many other ways to do this, but this is mine:
The important thing is that tcp port 6000 is redirected inwards, and that I’m using the NE2000 card, which on my weird fork will print out the hardware config, so I know how to find the nic.
added SLIRP
adding a [GenuineIntelC♣] family 5 model 4 stepping 3 CPU
added 64 megabytes of RAM
trying to load video rom pc-bios/vgabios-cirrus.bin
added parallel port 0x378 7
added NE2000(isa) 0x320 10
pci_piix3_ide_init PIIX3 IDE
ide_init2 [0] s->cylinders 203 s->heads 16 s->sectors 63
ide_init2 [1] s->cylinders 0 s->heads 0 s->sectors 0
ide_init2 [0] s->cylinders 2 s->heads 16 s->sectors 63
ide_init2 [1] s->cylinders 0 s->heads 0 s->sectors 0
added PS/2 keyboard
ps2.c added PS/2 mouse handler
added Floppy Controller 0x3f0 irq 6 dma 2
installing PS/2 mouse in CMOS
Bus 0, device 0, function 0:
Host bridge: PCI device 8086:1237
Bus 0, device 1, function 0:
ISA bridge: PCI device 8086:7000
Bus 0, device 1, function 1:
IDE controller: PCI device 8086:7010
BAR4: I/O at 0xffffffff [0x000e].
Bus 0, device 1, function 3:
Class 0680: PCI device 8086:7113
IRQ 0.
Bus 0, device 2, function 0:
VGA controller: PCI device 1013:00b8
BAR0: 32 bit memory at 0xffffffff [0x01fffffe].
BAR1: 32 bit memory at 0xffffffff [0x00000ffe].
And in this case it’s 0x320 IRQ 10. XVision being it’s own level of disappointment, I’ll have to cover it further, and later but suffice to say it at least catches the x3270 so I can get onto the console.
Setting up Hercules
Editing conf/tk4-_default.cnf is pretty easy as it’s on Linux and you can use VI.
First get MVS up and running. You have to run the ‘console_mode’ script to see what is going on.
cd herc/unattended
./set_console_mode
cd ..
./mvs
It’s not all that difficult XVision is using SLiRP, so it’s listening on all my IP addresses so I just do a simple
export DISPLAY=192.168.1.72:0
nohup x3270 &
And the emulator will pop up in Qemu. Just connect to localhost:3270 and you’ll be greeted by the login pannel:
Credentials are HERC01 / CUL8TR
I would HIGHLY recommend following the tutorial to get used to submitting a simple COBOL program. It walks through the key concepts of locating a file, and viewing it on MVS. Something that up until yesterday was out of my league.
We need to edit the file S3705 on SYS1.VTAMLST
Basically it’s 1,3,4 from the main pannel:
or RFE, Utilities, DSLIST
Type in the Volume name, then tab over to the left of the volume and put in V to view
Now we will get a list of all the files. We want to edit S3705, so you can tab/arrow down, but sure to put an `E’ next to it, then hit enter so we can edit the file
F7/F8 will page down/page up as needed. As mentioned we are interested in Subarea 13, PU type 2.
The line we are changing is the MAXDATA or MTU size for this unit. Since we are doing dlsw, or an emulated serial link, we need to knock it down to 256. Notice all the plus signs on the right hand? THOSE ARE IMPORTANT! Not only do they need to exist, but they also have to be on the far right.
For those wondering the MTU sizes on the client side by media type are as follows: And notice that the host size is different, as this takes in account of packet headers.
Making sure to overtype the 3780, to a 256, and ensuring the + sign hasn’t moved you can hit enter, cursor to the top and type in SAVE.
We can then edit the N13 file, changing line 35 to have MAXLU=3
Hopefully this clears up editing VTAM files.
As mentioned the easiest way to regen the system is to delete the old object files. So hit f3 a few times and get back to the dataset list
This time we want the VTAMOBJ set. Go and ‘V’iew it like last time and we will get the list of files:
Now we are going to put a ‘d’ next to N13 and S3705. This will flag them for deletion. Hit enter!
The files are now gone! On the next boot they will be rebuilt.
I just hit F3 a bunch of times and it’ll drop to some TSO shell
From here you can shutdown the system. It’ll take a few minutes, but you can start it up again just the same way you brought it up. Remember to attach your console.
Setting up SNA Server
Just like Dynamips, I setup a batch file, as the default one is just far too long to read:
@echo you need to figure out your nic name..
@echo something like
@echo \Device\NPF_{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}
set loopback=\Device\NPF_{3DF0EC5D-7FBE-46DF-ACF8-EF5D8679A473}
set vmnet1=\Device\NPF_{3BC364F4-5A15-405D-926C-C594383F0323}
qemu -m 64 -L pc-bios ^
-hda SBS15.vmdk ^
-soundhw sb16,adlib ^
-net nic,model=pcnet,macaddr=52:24:00:22:00:01 ^
-net pcap,devicename=%loopback% ^
%1 %2 %3 %4 %5 %6
This will setup a small machine with 64MB of ram, a single AMD PCNet adapter on the loopback interface. I installed Windows NT 3.51 from the Small Business Server 1.5 setup. I don’t know why VMware + NT 3.51 didn’t get along, maybe it’s my Erying, Or maybe it just plain doesn’t work, I’m not sure, and far too impatient to troubleshoot it.
It’s very important that you do add the DLC Protocol during setup. It’s in the ‘Add Software’ part. I kept my NT very simple with only NetBEUI and DLC protocols. At the moment I’m not that interested in actually networking the NT, and if I was, I would add a second NIC, just like what I did for Dynamips.
Setting up NT isn’t that interesting, but SNA server is. I did use the 2.11 on the Back Office CD, but for completeness sake of testing I tried the oldest one I could find, and 2.1 beta from June, Build 2.1.0.216.
I left the network name & control point name blank as I just want terminal, I’m not even going to think that LU6.2 applications on such an ancient version of MVS was even possible.
This is pretty much default, the Link service basically sets itself up as we only have the one NIC.
Take note of the remote network address. 400010200100 which came from above the address we directly point to the dlsw. Also it’s form the 9track blog.
Insert a 3270 LU for us to try to talk to Hercules.
I’m pretty sure it was hard coded to be a model 2.
I turned off the ability for the model to be overwitten.
Create a pool, I called it swimming, because of ‘reasons’. I made it a type 2 pool and added the terminal to it.
Next I added the EVERYONE user, and gave them access to the SWIMMING pool
Finally we are ready to save the config, and do the hand holding and start up. If the stars aligned you will see them go ACTIVE/ACTIVE and the terminal will go Available.
Sadly the terminal won’t go live, it’s stuck in SSCP.
And this is as far as I can go. I have to think that with either something far older protocol wise for the PC, such as IBM Personal Communications/3270 for Windows V2.0 (v4 didnt work either), or a far newer Mainframe software version would support whatever it is SNA server wants to give us the crazy dream of running SNA self contained.
Running Wireshark on the loopback network I see this message:
UNSUPPORTED FUNCTION
Sadly this is as far as I can take you. I do want to give a special thanks to Vinatron & blackbit for trying to troubleshoot this with me. Best we can figure is that TK4- is just too old.
Troubleshooting
From the cisco router try dlsw commands like this:
dlsw>sho dlsw circuits
Index local addr(lsap) remote addr(dsap) state uptime
2281701660 4a24.0044.0080(04) 0200.9099.8000(04) CONNECTED 00:02:23
Total number of circuits connected: 1
This does show the connection. Notice that ‘show bridge’ will show nothing in this config.
Be sure to check peers as well:
dlsw>show dlsw peers
Peers: state pkts_rx pkts_tx type drops ckts TCP uptime
TCP 192.168.199.1 CONNECT 10 13 conf 0 1 0 00:05:07
Total number of connected peers: 1
Total number of connections: 1
Make sure your interfaces are ‘up/up’ and passing traffic
FastEthernet0/0 is up, line protocol is up
Hardware is DEC21140, address is ca00.48f4.0000 (bia ca00.48f4.0000)
Internet address is 192.168.199.10/24
MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation ARPA, loopback not set
Keepalive set (10 sec)
Half-duplex, 100Mb/s, 100BaseTX/FX
ARP type: ARPA, ARP Timeout 04:00:00
Last input 00:00:00, output 00:00:00, output hang never
Last clearing of "show interface" counters never
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
Queueing strategy: fifo
Output queue: 0/40 (size/max)
5 minute input rate 1000 bits/sec, 2 packets/sec
5 minute output rate 2000 bits/sec, 2 packets/sec
12768 packets input, 1439279 bytes
Received 3609 broadcasts (0 IP multicast)
0 runts, 0 giants, 0 throttles
0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
0 watchdog
0 input packets with dribble condition detected
9999 packets output, 1037736 bytes, 0 underruns
0 output errors, 0 collisions, 1 interface resets
0 babbles, 0 late collision, 0 deferred
0 lost carrier, 0 no carrier
0 output buffer failures, 0 output buffers swapped out
dlsw>show int eth1/0
Ethernet1/0 is up, line protocol is up
Hardware is AmdP2, address is ca00.48f4.001c (bia ca00.48f4.001c)
MTU 1500 bytes, BW 10000 Kbit, DLY 1000 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation ARPA, loopback not set
Keepalive set (10 sec)
ARP type: ARPA, ARP Timeout 04:00:00
Last input 00:00:02, output 00:00:02, output hang never
Last clearing of "show interface" counters never
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
Queueing strategy: fifo
Output queue: 0/40 (size/max)
5 minute input rate 0 bits/sec, 0 packets/sec
5 minute output rate 0 bits/sec, 0 packets/sec
52426 packets input, 5148287 bytes, 0 no buffer
Received 12336 broadcasts (0 IP multicast)
0 runts, 0 giants, 0 throttles
0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
0 input packets with dribble condition detected
36383 packets output, 2465490 bytes, 0 underruns
0 output errors, 0 collisions, 3 interface resets
0 babbles, 0 late collision, 0 deferred
0 lost carrier, 0 no carrier
0 output buffer failures, 0 output buffers swapped out
dlsw>
And of course check WireShark to see if there is any handshake:
And of course check the Hercules logs to make sure your VTAM rebuilt, look for ERROR or anything related to S3705 or N13.
So this is probably nothing that exciting for most people, but for me, I wanted to have a Terminal Server onto a DECnet network. Sure I could have probably just done one nice with tun/tap, dumped all the protocols on there, and called it even. But for some reason I wanted 2 NICs to keep the IP on one side, and DECnet on the other.
One thing I wanted was an internal bridge for DECnet only traffic, and since I just need MSRDP access, SLiRP can handle a single TCP port redirect.
The flags are as always pretty simple once you work them out:
And the two network scripts starting with nt4tse-up:
#!/bin/bash
echo starting $1
ip tuntap add mode tap tap1
ifconfig tap1 up
ifconfig tap1
brctl addif decnet0 tap1
brctl show decnet0
echo done with tuntap
And the nt4tse-down:
#!/bin/bash
echo shutting down $1
ifconfig tap1 down
brctl delif decnet0 tap1
brctl show decnet0
ip tuntap del mode tap tap1
echo done shutting down $1
for completeness here is the bridge config in /etc/netplan/50-cloud-init.yaml
This way I have an IP bound bridge for things that talk IP, and a raw bridge, decnet0 that has my non IP decnet stuff on there. Naturally it’ll have my SIMH VAX on there:
# brctl show decnet0
bridge name bridge id STP enabled interfaces
decnet0 8000.aede9f227e7b no tap0
tap1
Also the ability to mount directories as fake fat drives had it’s syntax change as well