Unix is a very flexible operating system if you know what you're doing, and linux is no exception. Since this is a class in operating systems and not in system administration, I wrote up this little guide for ways to connect to and interact with the skiff boards. This isn't a series of instructions to be followed in order, but an overview of the techniques you can use to get things done.
So if you want to change the ramdisk used by the skiff board, you'll need to change the ramdisk image on your host system before you flash it to the skiff board. Since it's a raw filesystem image in a file, you need to find a way to mount it from the host machine. This is done with the linux loopback device. Fortunately, the mount command knows how to do this without you having to mess with the details:
my_host:~# mount -o loop skiff-ramdisk-1.7-gt0 /mntThis means to mount the filesystem contained in the file skiff-ramdisk-1.7-gt0 on the directory /mnt. The biggest problem with this is that it requires root permissions to do, so you'll have to do it at home. The machines in the skiff lab won't allow you to mount anything.
Once you get the filesystem mounted, though, you can make whatever changes you like. I've made an updated ramdisk that fixes some minor problems in the skiff lab (also available in /net/hl1/j/skiff-ramdisk-1.7-gt0.gz). It fixes the resolver so you can nfs-mount using "mustang" instead of having to type its IP, and it removes the automatic nfs mount from /etc/fstab that was causing delays for some of you. It also provides the command 'mount-lab' that will mount mustang:/net/hl1 on /net. It might save you some typing. I recommend starting with this image for any modifications you want to make. (I haven't tested it yet, though. Let me know if you run into any problems with it).
Note that a filesystem image needs to be uncompressed to mount but compressed to flash with fw. You can compress and uncompress it with gzip/gunzip.
Once nfs is running, you can mount an exported directory from the skiff board using a command similar to:
skiff60:~# mount -t nfs 130.207.98.11:/hl1/j /mntThis means that I want to connect to the directory /hl1/j on the machine at IP 130.207.98.11, and make that directory appear as /mnt on my skiff board. The mount point /mnt must exist before you do this.
When mounting, you may get some portmapper errors. Don't worry, this is normal. You should find the directory successfully mounted anyway. In the skiff lab, you can use "mustang" instead of its IP if you've booted from the updated ramdisk mentioned in the ramdisk section
You can see what filesystems are mounted (locally and remotely) using 'mount' with no arguments:
skiff60:~# mount none on /proc type proc (rw) none on /dev/pts type devpts (rw,mode=0622) 130.207.98.11:/var/nfs on / type nfs (rw,addr=192.168.10.1)In the skiff lab, the nfs server is already set up for you, and you should be able to nfs mount your group's shared directory. From any coc machine (like lennon or felix), these directories should be visible in /net/hl1, and should be nfs-mountable from the skiff boards at 130.207.98.11/hl1/<your_dir_name>.
boot> load ramdiskand send a ramdisk image via xmodem. You can either make your own ramdisk as covered in the ramdisk section, or use the skiff lab customized ramdisk.
Once you've got an updated fw, you can use it to write new kernels and ramdisks to flash memory. Just put the kernel or ramdisk image you want to flash in an nfs-exported directory on your host machine, mount that export on your skiff board, then use 'fw' on the skiff board:
skiff60:~# fw kernel /nfsmount/skiffzImage skiff60:~# fw altkernel /nfsmount/skiffzImage skiff60:~# fw ramdisk /nfsmount/new_ramdisk.gz
This is probably the best option, because these filesystems are much more full-featured than the minimal ramdisks on the skiff boards.
boot> set nfs_server_address 192.168.10.1
setting param=nfs_server_address to value=192.168.10.1
boot> set nfsroot /var/nfs
setting param=nfsroot to value=/var/nfs
boot> boot
If all goes well, the skiff board will mount its root filesystem across the
network. Before trying this, you may want to change some files in the root
filesystem. In particular, my /etc/fstab looks like:
abraxas:/var/nfs / nfs defaults 0 0 none /proc proc defaults 0 0 none /dev/pts devpts mode=0622 0 0You don't want to leave the old ramdisk entry in there:
#/dev/ram / ext2 defaults 1 1Other things you may want to modify are /etc/resolv.conf, and whatever else you'd like to play with.
I know this is a lot of material, and I haven't treated it in the depth it deserves. Keep in mind that you don't have to do all of these things, and don't hesitate to ask for help if something won't work right.
$ ps ax | grep minicom 5120 pts/0 S 0:00 sh /usr/bin/minicom 5121 pts/0 S 0:00 /usr/lib/minicom.real 5160 pts/1 S 0:00 sh /usr/bin/minicom -o 5162 pts/1 S 0:00 /usr/lib/minicom.real -oIf there is more than one minicom/minicom.real pair, you should kill the extras:
$ kill 5120 5121 5160 5162
bash: myprog: command not found
You can test that your board is properly connected by booting it and pinging it from a cluster machine:
[tamaulipas-lnx][\@](127) $ ping skiff112 PING skiff112.cc.gatech.edu (130.207.98.112) from 130.207.11.223 : 56 data bytes64 bytes from 130.207.98.112: icmp_seq=0 ttl=254 time=4.2 ms 64 bytes from 130.207.98.112: icmp_seq=1 ttl=254 time=1.0 ms --- skiff112.cc.gatech.edu ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max = 1.0/2.6/4.2 ms