------------------------------------------------------------------------------- README for the ARM Netboot Contact: Mike Frysinger ------------------------------------------------------------------------------- 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 #####) (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 "" 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... -------------------------------------------------------------------------------