[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Debian network installation on IBM RS/6000 44P-170 (POWER3) - HOWTO



This HOWTO explains how to perform a network install of Debian 3.0 (Woody)
on an IBM RS/6000 44P-170 workstation.

It should definitely also work for other low-end systems such as the 260,
270 and B80. However, I have not yet tested that. I would also expect it to
work on the mid- and high-end POWER3 systems.

You would use the same approach for 604 based CHRP systems like the 43P-150
and B50; however, you would use a different kernel.

The combined ramdisk/kernel image which contains the installer
'boot-floppies' was boot'ed from Open Firmware through BOOTP/tftp. The
drivers, base and kernel was downloaded over the network through 'wget'. My
goal was not to rely on diskette, CD or hard drive partitions to perform
the install. I wanted a pure network install.

I made no modifications to 'boot-floppies'. However, some features do not
work. In those instances I broke out to the shell and issued the commands
manually, or as with the case of making the system bootable, delayed the
task until the install was complete.

I will work on this document some more and find a URL for it.

Please do not hesitate to contact me if anything is unclear or if you have
any questions.

Rolf

--
Rolf Brudeseth
rolfb@us.ibm.com
pSeries System Engineering & Integration, IBM Enterprise Systems Group
Austin, TX


Create initial ramdisk image (zImage.initrd)
============================================

I just happen to have an IBM RS/6000 43P-150 workstation where I already
have SuSE 7.3 installed. I used this system to compile the zImage.initrd
image and used it as an BOOTP/tftp server.

I got the latest kernel (2.4.18) from:
http://www.kernel.org/pub/linux/kernel/v2.4/

I got the ramdisk image from:
http://ftp.debian.org/debian/dists/woody/main/disks-powerpc/current/chrp/images-1.44/root.bin

Then I compiled the kernel:
$ mv root.bin /usr/src/linux/arch/ppc/boot/images/ramdisk.image.gz
$ cd /usr/src/linux
$ make mrproper
$ make config
$ make deps
$ make zImage.initrd

I used the standard POWER3 config file:
/usr/src/linux/arch/ppc/configs/power3_defconfig

I would have saved a few key strokes during the install if I had modified
the config file to enable serial port console.
It appears that it is enabled in the config file:
~snip
#
# Character devices
#
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_SERIAL=y
CONFIG_SERIAL_CONSOLE=y
~snip

However, I must have missed something because it was definitely not
enabled.

Then I copied the combined image to the tftpboot directory:
$ cp /usr/src/linux/arch/ppc/boot/images/zImage.initrd.chrp-rs6k /tftpboot


Setting up the BOOTP/tftp server
================================

After the fact, this is fairly straight forward.

I started up the BOOTP/tftp daemons and configured the bootptab file on the
server:
$ cat /etc/bootptab
elas23:\
ht=ethernet:\
bf=zImage.initrd.chrp-rs6k

Then, some issues that I noticed later, that we may as well take care of
now.

First, note that the 'bf' flag only equals the image. It turn out that
unlike other BOOTP servers I have used, the one SuSE offers assumes that
the path is with respect to /tftpboot, and not /.

Second, while booting the zImage.initrd image, the target system would
always hang before loading the whole file. It turns out one has to issue
the following command on the server:
$ arp -s target_ip target_hw_addr

I do not fully understand why; however, it is all documented here:
http://penguinppc.org/~hollis/linux/rs6k-netboot.shtml

We are now done with the server. The remainder of tasks are performed on
the target.


Booting the initial ramdisk image
=================================

Power on the target system. At the SMS menu, press 8 on a ascii terminal or
F8 when using graphics card, monitor, keyboard and mouse.

You should now get to the Open Firmware prompt. I happened to use a vt102
terminal, which explains the 'console' statement that you will see in the
remainder of this document:

Type in the following:
0> boot net:server_ip,,target_ip console=ttyS0,9600
- or in my case -
0> boot net:9.3.52.92,,9.3.52.88 console=ttyS0,9600


Preparing the hard drive
========================

You should now be in the installer 'boot-floppies'.

First, select the 'Partition a Hard Disk' option. I kept it simple:
sda1    Type 41: PPC PReP Boot     8M
sda2    Type 82: Linux Swap      128M
sda3    Type 83: Linux           The rest of the drive

The boot-loader 'yaboot' will later be loaded into 'sda1'. Make sure this
partition is not larger than 8-10M. Due to a bug (I am not sure where) the
boot-loader will not function well if the partition gets much larger than
this.

For good measure I flagged the 'sda1' partition as bootable; however, I am
not sure that this is necessary.

The next steps in the installer are:
- Initialize and Activate a Swap Partition
- Initialize a Linux Partition


Configure the network
=====================

The next steps in the installer are:
- Configure the Hostname
- Configure the Network


Install Driver Modules (but not Kernel yet)
===========================================

This is where you normally would select the following option in the
installer:
- Install Kernel and Driver Modules

However, since I know that the FTP/HTTP method will fail, I am going to the
shell instead.
In boot-floppies, I select:
- Execute a Shell

If you issue the 'df' command, you will see that '/dev/sda3' is mounted
under '/target'. If not, simply issue the command:

# mount /dev/sda3 /target

Now, to download and install the driver modules:

# cd /target
# wget
http://ftp.debian.org/debian/dists/woody/main/disks-powerpc/current/chrp/drivers.tgz
# tar -zxvf drivers.tgz
# ./install.sh


Install Base
============

While still at the shell in the '/target' directory issue:

# wget
http://ftp.debian.org/debian/dists/woody/main/disks-powerpc/base-images-current/basedebs.tar

Now exit the shell:

# exit

In boot-floppies, select the following option:
- Install the Base System

I would have chosen: 'network: HTTP or FTP over the network'

However, since this feature also is broken, I chose: 'mounted: already
mounted filesystem'
The mount point is: /target

That is why I also downloaded 'basedebs.tar' before exiting the shell.


Install kernel
==============

This is as good of a time as any. The previous step created the
/target/boot directory and the next step is to make the system bootable.

I get the uncompressed kernel from the system where I compiled the kernel:
/usr/src/linux/vmlinux

In boot-floppies, I select:
- Execute a Shell

# cd /target/boot
# wget ftp://user:password@host/usr/src/linux/vmlinux


Make System Bootable
====================

The following option in boot-floppies does not work:
- Make System Bootable

However, if I go to the shell and execute any of the following commands I
am still not able to make the system bootable:
# yabootconfig - with various parameters I know should work
# ybin - with various parameters I know should work
# dd if=/target/usr/lib/yaboot/yaboot of=/dev/sda1

It appears that 'yaboot' on the initrd image is broken. What options do I
have left?

Well, I can boot from the network again. However, this time I boot the
image with the 'noinitrd' and 'root' kernel parameters specified.

I issue the reboot command:
# cd /
# umount /target
# reboot

When the system comes up to the SMS menu I again hit 8 or F8, but issue the
following command at the Open Firmware prompt:

0> boot net:server_ip,,target_ip console=ttyS0,9600 noinitrd
root=root_partition
- or in my case -
0> boot net:9.3.52.92,,9.3.52.88 console=ttyS0,9600 noinitrd root=/dev/sda3

Now the system boots up and indicates that the installation is done, and
starts running through the configuration menu.

BE VERY CAREFUL WHEN ENTERING VALUES LIKE ROOT PASSWORD!

The reason for this is that the screen emulation is not working correctly
with these menus (at least not for me and my vt102 terminal). Make sure to
press the backspace/delete button a few times in each field. Otherwise, you
will get to the login prompt but not be able to log in, because the root
password will not be what you typed in.

For the same reason I would wait with running 'apt-sel' and 'dselect'.

However, if this happens, you can still recover. Power the system down by
pressing the power button. Boot up the initrd image, mount '/target' and
edit the '/target/etc/passwd' or '/target/etc/shadow' files with the
'nano-tiny' editor, depending upon whether you enabled shadow passwords or
not. Remove the password field. Then reboot and boot up again with the
'noinitrd' and 'root' kernel parameters specified.


Log in to system & misc configuration
=====================================

You should now be able to log into the system and run dpkg, apt or dselect,
whichever is your preference.

You would also like to make the system bootable:

# yabootconfig --kernel-args console=ttyS0,9600

No other parameters should be necessary, since 'yabootconfig' is good at
guessing.

You may also want to reboot the system and press 1 or F1 at the SMS menu,
and ensure that the hard drive where you just installed Debian is on the
list of boot devices.


Good luck!




Reply to: