Subject: Re: Problems installing on a PowerBook G3 Series
To: Donald Lee <donlee@icompute.com>
From: Bob Nestor <rnestor@augustmail.com>
List: port-macppc
Date: 12/16/1999 07:01:14
Donald Lee  (donlee@icompute.com) wrote:

>>Donald Lee  (donlee_ppc@icompute.com) wrote:
>>
>>>>On Mon, Dec 13, 1999 at 04:54:28PM -0500, Paul Emerson wrote:
>>>>> 
>>>>> The floppy gets hit for a few seconds (if that) then nothing; system 
>>>>> is just hung.  I've had a few times where I heard the hard disk whirl 
>>>>> and then total power shutdown.
>>>>
>>>>  You might want to try a netboot instead.  In my limited
>>>>experience, I've never gotten a boot floppy to work on a
>>>>PowerMac.  The netbooting has worked fine for me.  It's a bit of
>>>>work to set up, but is very well documented, and once it is set
>>>>up, you can always netboot for damage control if Bad Things
>>>>Happen (root partition gets corrupted, etc).
>>>>
>>>>  Good luck!
>>>
>>>Can anyone provide pointers to said documentation?
>>>I have questions about both the setup of the TFTP server, and
>>>also about the OFW part (like how do you set up the eth iface w/OFW...)
>>

I'm not sure what documentaiton Paul was referring to, but when I looked 
I couldn't find anything that I could make heads or tails of.  I do have 
a setup that works now though, and I'd be happy to share my files with 
you if that will help you.  It really isn't difficult once you know what 
to do, but getting to the point of understanding what to do can be one 
hell of a leap!

Anyway, here is my explaination which is probably a bit inaccurate but 
it's a start. If someone would jump in and correct or refine this and get 
it in the macppc FAQ it would probably help a lot of othere with the same 
problem.

There are a couple of variations on how to do this network booting.
1) Boot a kernel designed to run from local storage
2) Boot a kernel designed to run from NFS storage with DHCP
3) Boot a kernel designed to run from NFS storage with bootparms
4) A combination of the above with operator entered parameters

I've played with all these a bit and here are my observations:
1) This is the easiest.  You boot the PPC machine holding down the "N" 
key (if you have the new world ROM) and the system comes up in NetBSD.  
Otherwise you go into OFP and do a "boot enet" or "boot enet:0" and the 
system comes up.

2) This option allows you to boot a kernel over ethernet and have it 
obtain information about Root, SWAP, and Usr filesystems from the remote 
host via DHCP.  This only works if you have both systems runnning on a 
ethernet that is not connected to any other system also running DHCP 
since your boot host system will have to supply the parameters in 
response to a DHCP broadcast.  In my case I have only one ethernet that 
is used both internally and externally and my ISP supplies my IP adddress 
via DHCP, so if I boot this type of kernel the DHCP broadcast goes 
unanswered by my ISP.  If I try to answer it things get really confused 
because there are now two systems responding to DHCP requests.

3) This option is much like #2 above except the system doesn't obtain 
it's parameters via DHCP, but instead uses BOOTP.  This will work on my 
configuration since my ISP ignores BOOTP requests, but most GENERIC 
kernels I've seen built don't enable the bootparms option, instead they 
enable the bootdhcp option.  So this requires a special PPC kernel build.

4) This one is a bit trickier as it involves booting a secondary boot 
program that in turn will load the kernel after obtaining the boot 
parameters from the user.  I've played with a bit but never had a lot of 
success with it.  Bill Studenmund is working on this and will probably 
have something in the 1.4.2 release to support it.  I noticed the latest 
snapshot kernel has some of this, but unfortunately the kernel won't come 
up on my G3.

OK, now that I've given you the background let me give you the files for 
#1 above. 

In /etc/inetd.conf make sure the tftp is enabled:
tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /tftpboot

In /etc/bootptab make sure you have a valid entry for your PPC Mac:
speedy:\
      :bf=netbsd:\
      :dn=home.org:\
      :ds=192.168.1.16:\
      :gw=192.168.1.16:\
      :ha=000502f10bd2:\
      :hn:\
      :ht=ethernet:\
      :ip=192.168.1.5:\
#      :rp=/ppc:\
      :sa=192.168.1.16:\
      :sm=255.255.255.0:\
      :td=/tftpboot:

Obviously you'll need to change these to match your network setup. Speedy 
is the name of my PPC mac and it's on my "home.org" network running on 
the 192.168.1.x subnet. Speedy has an ethernet address of 
00:05:02:f1:0b:d2 and is assigned an IP address of 192.168.1.5; the DNS 
server on this subnet is running on 192.168.1.16.

Create a directory called /tftpboot at the root level of your host. Make 
sure it has at a minimum a read-execute access for group and world.

Copy your PPC kernel into the /tftpboot directory with a minimum read 
access. This kernel should be expanded, i.e. not gzip'ed.  You should be 
able to use either an Installation Kernel or an operational kernel. An 
Installation Kernel is one found in the .../binary/kernel directory. It 
is a stand-alone kernel that will boot up into sysinst and allow you to 
perform a system installation over ethernet onto a local filesystem.  An 
operational kernel is one found in the .../binary/sets/kern.tgz file.  It 
will allow you to run from the local filesystem that was installed with 
the Installation kernel.  This is normally the kernel that is installed 
on the local system disk by the installation process. Make sure the name 
of the kernel file here matches the name given in the /etc/bootptab file.

Having done all that just reboot your PPC machine and, if you have a new 
world ROM, hold down the "N" key. The system will eventually come up in 
NetBSD or MacOS.  If it comes up in MacOS you've had a boot problem.  
Check the /var/log/messages file on your remote host to see what tftp 
reported.  Usually it's some sort of file protrection problem, but if 
nothing shows up that gives you a clue then the problem was most likely a 
kernel incompatible with your PPC mac.  Try a differnent one.

For option #2 above I'm going from memory which is known to be a bit 
faulty. Basically you'll have to create a DHCP conf file in 
/etc/dhcp.conf that maps your PPC Mac, and you uncomment the line (:rp:) 
in /etc/bootptab that points to this filesystem. The kernel you boot will 
hae to have the BOOT_DHCP option enabled. Once it comes into memory it 
will query for it's operational parameters using DHCP.

For option #3 above it's very similar. You make sure your kernel has the 
BOOT_BOOTPARAMS option enabled; you make sure your remote host has a 
populated PPC filesystem and you create an /etc/bootparams file that 
contains:
    speedy  root=pluto:/ppc
Where speedy is my PPC mac, pluto is my NetBSD remote host and /ppc is my 
PPC filesystem on the remote host.

Option #4 requires some special files that are being worked on.

For more information on running from a remote filesystem see "man 
diskless".

Hope this helps, and good luck!
-bob