-------------------------------------------------------------------------------
README for the ARM Netboot
Contact: Mike Frysinger <vapier@gentoo.org>
-------------------------------------------------------------------------------


this is the first release so i'm sure it has bugs :).
i've tested it only on Netwinders so far.
you will need two machines, the server (running Linux),
and the client you will install onto (an ARM machine).


here i assume:
unpacked files are in /mnt/netboot
your network follows the typical private 192.168.0.x setup
server is 192.168.0.10
client is 192.168.0.15
feel free to replace these values with whatever your setup
entails

the client, upon booting correctly, will launch dropbear,
a small sshd.  the default root password is 'i love gentoo'.
you can change it if you want, just edit the nfsroot/etc/shadow
file.  then run `ssh root@192.168.0.15` and login.



-------------------------------------------------------------------------------
quick & dirty details:
(1) download the files
mkdir /mnt/netboot
cd /mnt/netboot
wget http://dev.gentoo.org/~vapier/arm/vmlinux.bz2
wget http://dev.gentoo.org/~vapier/arm/nfsroot.tar.bz2

(2) unpack them somewhere (make sure you're root!)
cd /mnt/netboot
bunzip2 vmlinux.bz2
tar -jpxf nfsroot.tar.bz2

(3) setup tftp server
emerge atftp
nano /etc/conf.d/atftp
(set TFTPD_ROOT to /mnt/netboot)
/etc/init.d/atftp start

(4) setup nfs server
emerge nfs-utils
grep nfs /proc/filesystems
(you should see like nfs/nfsd ... if not,
enable those network filesystems in your kernel)
echo "/mnt/netboot 192.168.0.15(async,rw,no_root_squash)" >> /etc/exports
/etc/init.d/nfs start

(5) boot your client !  here is netwinder specific details:
start the netwinder, get into the firmware, and run these commands:
setenv netconfig_eth1 flash
setenv eth1_ip 192.168.0.15/24
setenv kernconfig tftp
setenv kerntftpserver 192.168.0.10
setenv kerntftpfile vmlinux
setenv rootconfig nfs
setenv rootpath 192.168.0.10:/mnt/netboot/nfsroot
save-all
boot

you should see output like:
Receiving bootfile vmlinux from bootserver 192.168.0.10
Transferring block #### (byte #####)
<then the kernel boots !>

(6) common stuff for system setup
 * you need a sep boot partition that is ext2 ... you can use 1 big partition
   for your root and boot, but it needs to be ext2 and having a root that is
   ext2 sucks.  the firmware can read ext3 partitions, but only if it has been
   unmounted cleanly.  so if your system loses power, the ext3 will be marked
   dirty and the firmware will barf saying it cannot read the partition.
 * upgrading your firmware:
    - emerge the latest sys-boot/nettrom package (firmware)
    - emerge the latest sys-block/nwutil package (netwinder utils/flasher)
    - read the flashwrite(8) manpage
    - make sure you have the flash driver enabled in the kernel under char
      devices: NetWinder flash support
    - run "flashwrite /boot/nettrom"
    - hope your box didnt just get bricked
 * after your first reboot, reset your firmware settings so you don't keep
   booting from network / nfs
 * once you built your first kernel, you can boot it two ways:
    - copy the vmlinux kernel to your boot partition and have nettrom load it
      as an elf
    - copy the zImage kernel to your boot partition and use nwlilo:
        nwlilo <path_to_zImage> "<kernel_command_line_foo>"
        e.g. nwlilo /boot/zImage "root=/dev/hda3 video=cyber2000fb"
 * it isn't uncommon for Netwinders to have broken DMA handling ... the way
   you would notice this is that detecting partitions at boot takes quite a
   while.  to work around this, you can have the bootloader append 'ide=nodma'
   to the kernel commandline while booting:
       setenv cmdappend ide=nodma
       save-all
-------------------------------------------------------------------------------



-------------------------------------------------------------------------------
some debugging tips:
 * test tftp server
on another machine, try this:
$ atftp
tftp> connect 192.168.0.10
tftp> get vmlinux
tftp>
if you see anything else, your tftp server is
probably broken/misconfigured/etc...

 * test nfs server
on another machine, try this:
$ rpcinfo -p 192.168.0.10 | grep nfs
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
if you dont see at least 1 line like this,
check your kernel/nfsd/etc...
-------------------------------------------------------------------------------