Setting up GC-Linux with NFS
originally written by Isobel and Steve_-, wikified by Stonebone
zImage-nfs.dol works on the following test environment:
Subnet: 192.168.0.0 255.255.255.0 ----------+----------------------+-------- | | | | +------+-------+ +------+-------+ | NFS Server | | GameCube | | 192.168.0.49 | | 192.168.0.47 | +--------------+ +--------------+ /nfsroot/cube
The file can be hex-edited if want other addresses. Find for example ip=192.168.000.047 and edit. It can also be replaced by ip=dhcp (pad with spaces).
Setting Up the NFS Server
The nfs server must be configured to export the /nfsroot/cube directory like in the following /etc/exports file:
Remember to execute the command exportfs with the -a option
To get started, download a 22 MB Debian base system image. Dump it over /nfsroot/cube.
Edit the file /nfsroot/cube/etc/fstab. Replace the IP and path (currently serverIp:fullNfsrootPath) with your servers IP and path. (192.168.0.49:/nfsroot/cube/)
You may also want to edit /nfsroot/cube/etc/resolv.conf to let linux use the right nameserver.
Getting Started on the Gamecube
Now try to boot the cube. Assuming everything went ok, you see a booted debian base system waiting for you to log in. If you have a keyboard you should be able to do this. For those who don't have a keyboard, an ssh daemon is installed. The password for root is: cube.
Since the Gamecube only has 24MB of ram, adding some swap space would be nice.
Swap Option 1: ARAM
There is also a second ram called aram which can be used for this purpose. If /dev/aram doesn't exist you need to create it with:
# mknod /dev/aram b 37 0
Then to activate the swap run:
# mkswap /dev/aram # swapon /dev/aram
Swap Option 2: NBD Swap
Another option is to setup a NBD swap space on the server your doing the NFS mount from.
This can be used to create a 256 meg swap file at /nfsroot/cube/var/swap-gc
# dd if=/dev/zero of=/nfsroot/cube/var/swap-gc bs=$((1024*1024)) count=256
Then, install and start the NBD server on a port of your choice.
# sudo apt-get install nbd-server # nbd-server 55321 /media/cube/var/swap-gc
This will run the NBD server on port 55321
The NBD client is installed in /root of the debian-sid base install for the cube. Start the client like this:
# mknod /dev/nd0 b 43 0 # /root/nbd-client SERVER 55321 /dev/nd0 # mkswap /dev/nd0 # swapon /dev/nd0
Please note that you have to do these commands (mknod, nbd-client, mkswap, and swapon) every time you boot. It might be a good idea to add something in the startup scripts. One way of doing this is to create the file /nfsroot/cube/etc/init.d/local, put the commands in there. By running the following command (on the cube) makes this file is run at every boot:
# update-rc.d local defaults
Next, you need to configure the debian base system. Run the following command:
You're asked a few questions which you have to answer. Be sure to have NBD swap enabled for anything related to package lists, or you will have several areas that crash when trying to do this.
Now the date needs to be set. See the man-page of date to do it by hand. As an alternative, you might also want to take a look at the package ntpdate (to install it: apt-get install ntpdate).
Now you want to upgrade everything to the latest version
# apt-get upgrade
You may run into a problem that it wants to remove an essential package. To get around this, you need to run the command with
# apt-get -o APT::ForceLoopBreak=1 upgrade
Now if you haven't set up NTP, you better do so now. PAM will not let you ssh into the cube on your next reboot if it finds a timestamp significantly newer then the time of the clock.
# apt-get install ntpdate