I read somewhere on the internet that old hardware does not die, it only gets more difficult to support over time.
I plan to post the workarounds I found to support the 560Z with Core Linux. There are links to the original documentation throughout my post. This is a digest of all the bits and pieces I found here and there.
I found this IBM ThinkPad 560Z PII Mobile 233 @ 300 MHz with 64 MB RAM years ago. The lid is cracked as if a brick fell on it, but all the rest is in a great condition. RAM can be expanded as there is a free slot, but the RAM itself is hard to find at a price that makes sense for this project.
According to the sticker under it, this 560Z was made in Mexico on 10/98, so October 1998. It is close to 25 years old now.
With this low quantity of RAM, I went with the Core version that has only a terminal.
The 560Z doesn't have a CD-ROM drive and I don't have an external floppy to connect to it. To workaround this, I'm using an IDE to USB adapter. That way I can more easily flash the drive with the image I want.
To make a working image to flash on the drive, there are steps in this other post about the ThinkPad 600X:
http://forum.tinycorelinux.net/index.php/topic,22583.msg170008.html#msg170008I made my image by connecting the IDE drive to my 2012 laptop running Debian 12 and using the command
sudo dd if=/dev/sd<replace> of=core14.dd conv=sync,noerror bs=512M count=3 status=progress
You'll need to find your drive with
sudo fdisk -l
and you'll need to adapt the count=3 if you chose different partition sizes than me.
Once you have your image, you can either write it to another IDE drive or go on and use the current IDE drive in the 560Z. Check that it boots and check
sudo ifconfig eth0
to see if the network card gets its IP address.
For an unknown reason, the 560Z doesn't always gets its IP address on its own after rebooting. When it doesn't find its IP and you know your network you can use the following commands:
sudo ifconfig eth0 192.168.0.180
sudo route add default gw 192.168.0.1
sudo cat /etc/resolv.conf
sudo echo "nameserver 1.1.1.1" > /etc/resolv.conf
Adjust the IP addresses here to your network configuration! ifconfig sets a static IP, route adds the default gw which is used to get to addresses on the internet. cat /etc/resolv.conf shows you if you have a name server/DNS server to resolve hostnames. In my case, it was empty, so I added 1.1.1.1 which is the cloudflare name server. Feel free to replace with another one you wish to use. I read here (
https://www.cyberciti.biz/faq/howto-linux-bsd-unix-set-dns-nameserver/) that you can add up to 3 name servers.
Next thing I adjusted is the resolution. vga=788 is good with the 560Z. I didn't find a way to edit the extlinux.conf while the 560Z is running so I did sudo poweroff disconnected the power cable and pulled the IDE drive out to connect it again to my Debian machine. Debian mounted the drive automatically and I went to /mnt/<replace with your mount point>/tce/boot/extlinux/ and then did a
sudo vim extlinux.conf
and changed the file to this (for context, I'm giving the whole file. Read on to see the exact lines I changed...):
UI vesamenu.c32
MENU TITLE Tiny Core Bootloader
TIMEOUT 1
DEFAULT core
LABEL core
KERNEL /tce/boot/vmlinuz
INITRD /tce/boot/core.gz
APPEND vga=788 syslog showapps tce=UUID="3541ff21-9683-4df0-9ecd-a5a3fce0014c" swapfile=UUID="a53d3aa0-1607-44a2-8c43-bf71d35edf59"
LABEL unknown
MENU LABEL Unknown OS
COM32 chain.c32
APPEND boot 1
I changed this line:
TIMEOUT 1
which had value 100 to wait 10 seconds on the OS selection screen at bootup which I don't need as I always want to boot in Core Linux on the 560Z since it is the only OS.
I also changed this line:
APPEND vga=788 syslog showapps tce=UUID="3541ff21-9683-4df0-9ecd-a5a3fce0014c" swapfile=UUID="a53d3aa0-1607-44a2-8c43-bf71d35edf59"
Originally, right after the tc-install.sh I had this:
APPEND quiet vga=normal syslog showapps waitusb=5 tce=sda1 waitusb=5:UUID="d39a00cb-d63f-470e-8c46-0bdbd1db2d6f" tce=UUID="d39a00cb-d63f-470e-8c46-0bdbd1db2d6f"
I was confused why waitusb and tce= appeared twice so I went to the core book:
http://tinycorelinux.net/book.htmlIt is pretty clear so search the flags and read the paragraphs they appear in you'll understand what's happening.
I tested and found out I didn't need waitusb=10 so I removed it. I initially thought that increasing waitusb would help my network adapter get its IP automatically, but after testing various values, it didn't improve that so I removed it and everything else was fine. I also removed waitusb=10:UUID="d39a00cb-d63f-470e-8c46-0bdbd1db2d6f" because my partition is on the IDE drive, not a USB drive.
I noticed tce=sda1 and tce=UUID="d39a00cb-d63f-470e-8c46-0bdbd1db2d6f" and the tce=sda1 is redundant see the Core book to understand why. I kept only tce=UUID=, but I changed the UUID to "3541ff21-9683-4df0-9ecd-a5a3fce0014c". Read on to know why.
You'll see I added swapfile=UUID="a53d3aa0-1607-44a2-8c43-bf71d35edf59", read the Core book to know more. Note that you may not need this. I partitionned my IDE drive this way:
1. First primary partition about 1 GB which has everything to boot Core Linux. UUID="d39a00cb-d63f-470e-8c46-0bdbd1db2d6f"
2. Second primary partition which contains most of the space of the IDE drive. UUID="3541ff21-9683-4df0-9ecd-a5a3fce0014c"
3. Third and last primary partition which is formatted as a swap partition. UUID="a53d3aa0-1607-44a2-8c43-bf71d35edf59"
I partitioned the drive using gparted in on Debian machine.
Once this was all done, I inserted the IDE drive again in the 560Z, plugged the power and turned it on. All was working great so went on.
If you are curious to look at the swaps usages:
cat /proc/meminfo
cat /proc/swaps
I found those commands here:
https://unix.stackexchange.com/questions/23072/how-can-i-check-if-swap-is-active-from-the-command-lineI wanted to test the internet connection more so I tried curl. Get it using:
tce-load -wi curl.tcz
You'll see it installs also curl.tcz, ca-certificates.tcz and openssl-1.1.1.tcz. That's nice as it looks like https will work well! Once the install completes, you can try to curl some websites you care about:
curl google.com/
will print some html formatted text to the terminal. That command sends an HTTP GET to the website you give it. It can do more than that. You'll see in its manual.
Next, I wanted tmux as 1 terminal is good, but n terminals is great!
tce-load -wi tmux.tcz
Once the install completed, I tried to run tmux and it told me it couldn't start because the locale wasn't set correctly because the locale was set to ANSI-
something-1968. So by reading this post
http://forum.tinycorelinux.net/index.php/topic,23825.0.html, the Core Book and
http://tinycorelinux.net/14.x/x86/tcz/getlocale.tcz.info I decided to run
tce-load -wi getlocale.tcz
and once it was installed I ran
sudo getlocale.sh
and then I was confused by this
cp: can't stat '/tmp/mylocale.tcz': No such file or directory
md5sum: can't open 'mylocale.tcz': No such file or directory
Done. The extension is at /mnt/sda2/tce/optional/mylocale.tcz and in onboot.lst
du: /mnt/sha2/tce/optional/mylocale.tcz: No such file or directory
sh: bad number
Reboot with lang=xyz (for example lang=fr_CA.UTF-8) to start using this.
Press enter to quit.
I found that /mnt/sha2/tce/optional/mylocale.tcz didn't exist. So I thought, meh, 64 MB of RAM even with the swap partition, maybe something goes wrong and the file doesn't get written. I turned off the laptop removed the IDE drive and put it in the 600X to run the getlocale.sh again. There it worked. So once that was done, I turned off the 600X and connected again the drive to my Debian to add the flag
lang=fr_CA.UTF-8
. Replace it with the locale you chose when running getlocale.sh if your following my steps. I put the drive back in the 560Z. When the 560Z finished booting, the locale got set correctly and tmux works now.
That's it for now.
Special thanks to Curaga for getlocale.tcz and to juanito, cheslavic and Nicholas Marriott for tmux.tcz
If anyone appears to know a place in Montréal, Canada where I could shop for a used and working 64MB RAM module (60 ns, non-parity, 3.3 volt, 144Pin EDO) under 20$ CAD I am interested.