1- BACKGROUND.
1b- NOTES AND FILES.
2- PROCEDURE TO UPGRADE SCS USING CONFIGURED KERNEL (HEISENBERG).
3- STEPS TO SWITCH FROM PS2 TO USB.
4- STEPS TO SWITCH FROM USB TO PS2.
5- PROCEDURE TO REVERSE UPGRADE.
6- PROCEDURE TO CREATE HEISENBERG KERNEL.
7- LINKS.
LAST UPDATED: 29 July 2020
1- BACKGROUND.
The SCS PC exists on Criterion sorting machines and runs Slackware 8.1 with a modified 2.4.20 kernel and RTAI modules 24.1.11
The problem or one of the problems was that the pc would not work with a usb mouse or keyboard. There were also issues with only some usb memory sticks working correctly.
It was also observed that in a number of depots, the memory on this pc had been upgraded but it is worth noting that HIGH MEMORY support was not set on that kernel so such upgrades were pointless. I had in the past recompiled the kernel to ENABLE HIGH MEMORY but as I also read [source to be added], the RTAI modules don't like or work correctly large amounts of memory.
The problem; When the kernel is recompiled to have usb support for said keyboard and mouse, the existing modules no longer work.
There is no source files for the Bowe modules and compiling a kernel with a different version won't work as the previously compiled modules can not be inserted into a different kernel.
I set about recompiling the kernel to the same version number so as to allow the modules that had been previously compiled using this version to be able to be inserted as required.
I believe in the end, I skipped building the modules again with the new kernel and simply built the new kernel. I also believe I may have added support for hardware into the kernel as opposed to modules but cant confirm this at the time of writing this.
I set about recompiling the kernel to the same version number so as to allow the modules that had been previously compiled using this version to be able to be inserted as required.
I believe in the end, I skipped building the modules again with the new kernel and simply built the new kernel. I also believe I may have added support for hardware into the kernel as opposed to modules but cant confirm this at the time of writing this.
More details on the background to follow.
1b- NOTES AND FILES (FOR REFERENCE)
Transcript of notes - taken July 2019 (lacking in detail, for reference only)
##### START #####
make menuconfig
make dep
make bzimage
copy bzimage to /boot
copy System.map to /boot
update lilo.conf
Sort Network
Remove network entries in loadSCS.start
add rc.netdevice to include modprobe e1000e
edit rc.inet with IP + GW
Update Mouse
ln - ls /dev/input/mice
/dev/mouse
Update X11
edit /etc/x11/XF86Config
option "Protocol" "IMPS/2"
option "Device" "/dev/mouse"
option "XkbLayout" "uk"
##### END #####
Contents of various files, for reference only
##### START #####
heisenberg.bmp* lilo.conf* rc.keymap* rc.netdevice* setup.sh* vmlinuz-2.4.20-rthal5*
Contents of /boot/README.txt
# The following kernels are installed;
#
#
# vmlinuz - This is the original kernel and is the same as
# vmlinuz-2.4.20-rathal5_OLD
#
#
# vmlinuz-2.4.20-rathal5 - This is the Heisenberg kernel built by H Nisbet 4th July 2019
# supporting usb keyboard and mouse.
#
# vmlinuz-2.4.20-rathal5_OLD - Original kernel
# Note, if booting to this kernel, PS/2 mouse will not work
# in the GUI as the configuration had to be changed to support
# usb. This change would need to be manually reverted, essentially
# making changes to the X configuration file.
#
#
# vmlinuz-2.4.18 - Probably the original kernel distributed with Slackware 8.1
Contents of rc.keymap
# File to load UK keyboard map at boot time.
# Added by H Nisbet 05 July 2019
#!/bin/sh
echo Attempting to change keyboard map to uk layout
if [ -x /usr/bin/loadkeys ]; then
/usr/bin/loadkeys uk.map
fi
Contents of rc.netdevice
# Added by H Nisbet 04 July 2019
# Following recompile of kernel, the following
# is added to enable onboard NIC
#
# /home/nsa/Config/loadSCS.start has been modified to remove
# modprobe and ifconfig
#
# This file will now load the module at boot time
# /etc/rc.d/rc.inet1 will now set the IP address and Gateway
echo Attempting to load NIC module e1000e
/sbin/modprobe e1000e
#/sbin/modprobe e1000
A note on the above file;
Any SCS computers that were previously networked, may well have had the modprobe and ifconfig commented out previously as detailed above in rc.netdevice but at that time, it is likely that the /sbin/modprobe e1000e will have been entered into rc.modules
Obviously if this was the case, the latter can be commented out in rc.modules as the above file now does this.
Contents of lilo.conf
# LILO configuration file
# generated by 'liloconfig'
#
# Start LILO global section
lba32 # Allow booting past 1024th cylinder with a recent BIOS
boot = /dev/hda
prompt
timeout = 100
change-rules
reset
#bitmap=/boot/ULXBBH.bmp
bitmap=/boot/heisenberg.bmp
# VESA framebuffer console @ 1024x768x256
#vga = 773
image = /boot/vmlinuz-2.4.20-rthal5
root = /dev/hda1
label = "SCS Mode"
read-only
image = /boot/vmlinuz
root = /dev/hda1
label = "Safe Mode"
read-only
image = /boot/vmlinuz-2.4.20-rthal5_OLD
root = /dev/hda1
label = old
read-only
Contents of the auto folder
heisenberg.bmp* lilo.conf* rc.keymap* rc.netdevice* setup.sh* vmlinuz-2.4.20-rthal5*
Contents of /boot folder
total 6204
drwxr-xr-x 2 root root 4096 Nov 20 2019 ./
drwxr-xr-x 17 root root 4096 Jul 19 2015 ../
-rw-r--r-- 1 root root 791 Nov 20 2019 README.txt
lrwxrwxrwx 1 root root 23 May 6 2006 System.map -> /boot/System.map-2.4.20
-rw-r--r-- 1 root root 564951 May 6 2006 System.map-2.4.20
-rw-r--r-- 1 root root 515922 May 31 2002 System.map-ide-2.4.18
-rw-r--r-- 1 root root 153690 Feb 13 2003 ULXBBH.bmp
-rw-r--r-- 1 root root 7988 Mar 9 2002 boot-bmp.b
-rw-r--r-- 1 root root 7964 Mar 9 2002 boot-menu.b
-rw-r--r-- 1 root root 6204 Mar 9 2002 boot-text.b
-rw-r--r-- 1 root root 512 May 6 2006 boot.0300
lrwxrwxrwx 1 root root 16 May 6 2006 boot.b -> /boot/boot-bmp.b
-rw-r--r-- 1 root root 728 Mar 9 2002 chain.b
lrwxrwxrwx 1 root root 17 May 6 2006 config -> config-ide-2.4.18
-rw-r--r-- 1 root root 33409 May 31 2002 config-ide-2.4.18
-rwxr--r-- 1 root root 153690 Nov 20 2019 heisenberg.bmp*
-rw------- 1 root root 45568 Nov 20 2019 map
-rw-r--r-- 1 root root 512 Mar 9 2002 mbr.b
-rw-r--r-- 1 root root 656 Mar 9 2002 os2_d.b
-r-------- 1 root root 1228299 May 6 2006 vmlinuz
-r-------- 1 root root 1265367 Nov 20 2019 vmlinuz-2.4.20-rthal5
-r-------- 1 root root 1228299 Nov 20 2019 vmlinuz-2.4.20-rthal5_OLD
-rw-r--r-- 1 root root 1061033 May 31 2002 vmlinuz-ide-2.4.18
Note on the above;
vmlinuz file size 1228299 is Safe Mode
vmlinuz-2.4.20-rthal5 file size 1265367 is the new kernel
vmlinux-2.4.20-rthal5_OLD file size 1228299 is a backup of vmlinuz
[it looks like the safe mode was the same as the default vmlinuz]
Contents of auto.sh [for reference only]
key_press ()
{
echo
read -n 1 -s -r -p "Press any key to continue"
echo
echo
}
clear
echo Starting heisenberg script...
key_press
KERNEL="vmlinuz-2.4.20-rthal5"
KERNEL_PATH="/boot/"
### BACKUP OLD KERNEL
BAC="$KERNEL.BAC"
if [ -e $KERNEL_PATH$BAC ]
then
echo Backup already exists, aborting kernel backup...
echo Please investigate and run the script again.
echo Hint: $KERNEL_PATH$BAC
echo
key_press
exit 1
else
echo $KERNEL_PATH$BAC doesnt exist, we are good to go...
if [ -e $KERNEL_PATH$KERNEL ]
then
echo Backing up old kernel
cp $KERNEL_PATH$KERNEL $KERNEL_PATH$BAC
else
echo $KERNEL_PATH$KERNEL doesnt seem to exist
echo Please investigate and run the script again
echo Hint: $KERNEL+PATH$KERNEL
echo
key_press
exit
fi
fi
key_press
### COPY NEW KERNEL
echo Copying new kernel
cp $KERNEL $KERNEL_PATH/
key_press
### COPY NIC stuff
echo copying rc.netdevice
cp rc.netdevice /etc/rc.d/rc.netdevice
chmod +x /etc/rc.d/rc.netdevice
key_press
### COPY loadSCS.Start
echo Modifying the loadSCS.start script
cp /home/nsa/Config/loadSCS.start /home/nsa/Config/loadSCS.start.OLD
echo sed doesnt seem to be working correctly
echo loadSCS.start will need to be modified manually.
echo Please do this now...
#cp loadSCS.start /home/nsa/Config/loadSCS.start
#chmod +x /home/nsa/Config/loadSCS.start
key_press
### PREPARE lilo
echo Preparing lilo
cp heisenberg.bmp /boot/
cp /etc/lilo.conf /etc/lilo.conf.OLD
cp lilo.conf /etc/lilo.conf
lilo
key_press
### PREPARE mouse and keyboard
#echo Preparing usb mouse and keyboard
#key_press
### PREPARE Keyboard map
echo Preparing keyboard map
cp rc.keymap /etc/rc.d/
chmod +x /etc/rc.d/rc.keymap
key_press
##### END #####
2- PROCEDURE TO UPGRADE SCS USING CONFIGURED KERNEL (HEISENBERG).
Download heisenberg.tar from:
http://172.16.144.252/stuff/SCS/heisenberg.tar
into a new directory and extract using;
tar -xf heisenberg.tar
This will produce the following files (note permissions and owner/groups which should be modified if necessary when they are copied to their destinations);
filename - permissions - owner - group
heisenberg.bmp 744 root root
lilo.conf 644 root root
rc.keymap 755 root root
rc.netdevice 755 root root
setup.sh
vmlinuz-2.4.20-rthal5* r root root
##### STOP ##### STOP ##### STOP #####
The purpose of the setup.sh file was to install the new kernel and make the necessary changes but from memory and from reading through the file today (17 June 2020), it wasn't quite complete, I'm not 100% sure why not, time, interest, motivation, illness, who knows... but the good news is that the upgrade can be done manually as follows;
Note: root is probably needed for most of the following steps.
2.1) BACKUP OLD KERNEL;
cp /boot/vmlinuz /boot/vmlinuz-2.4.20-rthal5_OLD
or alternatively as per the auto.sh script;
cp /boot/vmlinuz /boot/vmlinuz-2.4.20-rthal5_BAC
Ensure that the backup filename matches that which is in the lilo.conf file obviously.
2.1.1) System.map (For reference)
I'm not 100% sure if this has been an oversight but when I normally or previously compiled kernels, on copying the kernel to /boot/ I also copied the System.map to /boot/ having different System.map files for different kernel versions. Perhaps here I have only one as I've compiled the kernel with the same version number for reasons discussed in Section 1 above.
See here and more importantly here (both my blog posts from some time ago regarding kernel compilation). also see here for more information about the System.map file.
See here and more importantly here (both my blog posts from some time ago regarding kernel compilation). also see here for more information about the System.map file.
I'll revise this at some point in the future if I can clarify whether or not it was needed in this case.
cp vmlinuz-2.4.20-rthal5 /boot/
2.3) COPY NETWORK;
cp rc.netdevice /etc/rc.d/rc.netdevice
chmod +x /etc/rc.d/rc.netdevice
Modify /etc/rc.d/rc.inet1 as network IP will no longer be set by loadSCS.start
2.4) BACKUP AND MODIFY loadSCS.Start
Note: If machine was previously networked correctly, this step likely isn't required.
cp /home/nsa/Config/loadSCS.start /home/nsa/Config/loadSCS.start.OLD
Note, the above simply creates a backup of the loadSCS.start file, it still needs to be modified and this can be done by commenting out the following two lines;
#modprobe e1000e
#ifconfig eth0 up 192.168.1.100 netmask 255.255.255.0
This will now be taken care of by the rc.netdevice from the previous step.
2.5) PREPARE LILO
We copy the new bitmap file, make a backup or current configuration file and then copy the new configuration file;
cp heisenberg.bmp /boot/
cp /etc/lilo.conf /etc/lilo.conf.OLD
cp lilo.conf /etc/lilo.conf
We then need to run lilo to effect the change;
lilo
2.6) COPY README.TXT (IF IT EXISTS);
cp README.TXT /boot/
Note, the following two steps are only required if we are actually going to use a usb keyboard and mouse. Otherwise, these can be done at a later date.
2.7) PREPARE MOUSE AND KEYBOARD;
cp rc.keymap /etc/rc.d/
chmod +x /etc/rc.d/rc.keymap
ln -is /dev/input/mice /dev/mouse
2.8) UPDATE X11;
Edit /etc/X11/XF86Config section "InputDevice" as below;
Section "InputDevice"
# Identifier and driver
Identifier "Mouse1"
Driver "mouse"
# Option "Protocol" "PS/2"
# Option "Device" "/dev/psaux"
Option "Protocol" "imps/2"
Option "Device" "/dev/mouse"
Also under "InputDevice" under Identifier "Keyboard1", comment out and add as below;
# Option "XkbLayout" "us"
Option "XkbLayout" "uk"
2.9) REBOOT;
shutdown -r now
3- STEPS TO SWITCH FROM PS2 TO USB.
4- STEPS TO SWITCH FROM USB TO PS2.
Finally, we need to create the linking required, similar to STEP 2.7 but we may need to firstly unlink the file from STEP 2.7 I'm unsure if this needs to be done, but if so, can be done by;
unlink /dev/mouse
Finally, link the file similar to STEP 2.7 only this time using the /dev/psaux file as per STEP 2.8;
ln -si /dev/psaux /dev/mouse5- PROCEDURE TO REVERSE UPGRADE.
Reversing the network side of things need not be discussed here as most SCS computers were networked (properly) by me previously anyway.
the README.txt file as per 2.6 should be deleted as this would only serve to confuse and the original boot image ULXBBH.bmp should be restored, removing Heisenberg.bmp, this can of course and should be done in lilo.conf
The steps in section 4 above should then be carried out to remove the usb device configuration and revert back to ps2, which would need to be done if the old kernel was to be used for whatever reason.
6- PROCEDURE TO CREATE HEISENBERG KERNEL.
UPDATE: The Heisenberg .config file and also what is assumed to be the original .config file can be found here and here respectively.
TODO - Add details of how the kernel was compiled, whilst allowing the modules to be inserted without error.
7- LINKS.
In no particular order...https://www.linuxquestions.org/questions/slackware-14/build-and-insert-modules-into-running-kernel-slackware-8-1-2-4-20-kernel-with-rtai-patch-4175656586/
https://www.kernel.org/doc/ols/2001/rtai.pdf
https://mirrors.edge.kernel.org/pub/linux/kernel/v2.4/
https://mirrors.slackware.com/slackware/slackware-8.1/
https://www.slackbook.org/html/index.html
https://www.rtai.org
https://www.tldp.org/HOWTO/Module-HOWTO/x197.html
https://www.rtai.org/userfiles/downloads/RTAI/rtai-24.1.11.tgz
https://blog.david14.com/2019/06/linux-mouse-gpm.html
https://www.linuxquestions.org/questions/slackware-14/setting-up-a-usb-mouse-in-slackware-401496/
https://rlworkman.net/system.map/
https://gist.github.com/plisken1/b4e425ffbc9a4d80c814944ce741998e
https://gist.github.com/plisken1/e2e16041198e74f457d9ead66a71c322
No comments:
Post a Comment
Note: only a member of this blog may post a comment.