SuSE SLES-8 has some differences in their installation structure from the older SuSE 7.3 systems. The kernels prepared by Leigh Brown, who maintains a fantastic Linux on 7043-140 website (http://www.solinno.co.uk/7043-140/), do not have everything needed to get the SLES-8 installer (YaST2) to run from the CDs.
To make this work, I had to create a new Boot Disk and a new Initial RAM Disk. Here's what I did:
I took the stock 2.4.22 kernel (from http://www.kernel.org/), applied all of Leigh Brown's patches from http://www.solinno.co.uk/7043-140/files/2.4.22/, and started with the kernel configuration file from that directory as well. I modified the configuration by enabling cramfs, the Compressed filesystem and making sure the loop-back and the S3trio video driver would also be compiled into the kernel. The changes made to the kernel configuration file are:
CONFIG_CRAMFS=y CONFIG_ZLIB_INFLATE=y CONFIG_BLK_DEV_LOOP=y CONFIG_FB_S3TRIO=y
I also removed the RAID block device just to be sure the kernel would still fit on a floppy, although that was probably unnecessary.
I put this altered configuration file into the base of the kernel source tree as ".config", then built the kernel and its modules:
make dep make bzImage make modules make modules_install
I then copied the resulting image to a floppy:
dd if=arch/ppc/boot/images/zImage.prep of=/dev/fd0
All this was necessary because SuSE SLES-8 has a root filesystem image on CD1 (boot/root) that is a cramfs image, and the PPC kernels I found did not have cramfs built in. I used the 2.4.22 kernel even though SLES-8 still uses 2.4.19 simply because it was easiest for me to get and patch.
I needed to create a new initial RAM disk because the SLES-8 CDs did not contain an initrd image that would fit onto a floppy. The zImage.prep.initrd on CD2 is 2.3MB. So I started with the one I had from SuSE 7.3 for PowerPC, and modified it to work with the SLES-8 installation process.
I removed the /modules directory, because all the modules in there were for a 2.4.12 kernel, and were useless for my installation. Having them there seems to prevent YaST2 from being started, probably because the scripts that set up for YaST2 attempt to load some modules and get these old ones which fail.
I replaced the linuxrc with linuxrc-1.4.40, because I needed to modify that to get error and debugging output on the serial console to see what was going on. I also modified it to give me its simple root shell to see what it had to work with. I'm not entirely sure that using this newer version of linuxrc was necessary, but I could not have found out about the dependency on cramfs without it. I discarded all those modifications because they are not needed and clutter the output. The linuxrc sources I used are the unmodified ones from SuSE.
I also created a /mounts directory, which is where the new linuxrc wants to mount filesystems. I do not know if this is a feature of linuxrc-1.4.40 or not, but without that directory it was unable to mount boot/root from CD1 at all.
Upon reflection, I probably could have used the initial RAM disk from that 7.3 installation by just replacing the old modules in /modules with the cramfs, loop and s3trio modules from the 2.4.22 kernel (had I built them as modules). But I had built the new RAM disk in the course of debugging the problems, so it seemed a pity not to use it.
[Note from Leigh Brown] - You can download Ed's files here:
Armed with these two floppies, I was able to boot from the boot disk and load the initial RAM disk by following the instructions on Leigh's website. The linuxrc on the initrd reads boot/root from CD1 and starts up YaST2. From there, I could easily do the installation once I figured out how to set HyperTerm to really be a VT100. I partitioned my disks and selected a basic installation. See the Sys Ppc32 page for details on doing all of that.
After the installation completes, YaST2 will try to reboot the system. But the kernel it has copied into the PREP Boot partition will not run on the 7043-140, so this fails. The result is a blank screen. I put the boot disk back in and gave the following to the OpenFirmware prompt:
boot floppy: root=/dev/sda3 video=s3trio:off console=ttyS0
That boots the kernel from the floppy, but mounts the newly-installed root filesystem from the hard disk. It continues to use the serial console. This successfully booted, YaST2 came up again and did some post-boot tasks, including asking me about creating a root account and setting up the network device. It then brought the system up to runlevel 3.
I logged in as root and copied the correct kernel to the PREP Boot partition, with:
dd if=/dev/fd0 of=/dev/sda1
I then used Leigh's "preptool" program to arrange for that kernel to boot from the root partition on the hard-drive:
./preptool -s"root=/dev/sda3" /dev/sda1
I then copied the 2.4.22 modules tarball over the network and installed it into /lib/modules.
Then I rebooted, made sure that the system was set to boot off the first disk, switched it to use the system console instead of the serial console, and it came up.