CUWiN is always seeking ways to help people use our software and hardware. To that end, we are committed to providing the how-to documents that break things down in the simplest possible manner. We have started this part of the manual with two documents: how-to build a CUWiN Metrix node and how-to PXEboot a Soekris 4526 using NetBSD. These documents are dynamic in that we are constantly changing the way we build wireless networks to take advantage of new technologies, new hardware, and the software that we develop. Therefore, if you having a problem with a particular document, check back to make sure that it has been updated. If it hasn't been updated, email us, giving as much detail as possible about the place in the document where you are having trouble.
Since we have a limited staff and always seem to have about ten more irons in the fire than we can possibly deal with, we encourage you to develop your own how-to guides and submit them to us via email. We are always happy to add new things that can help people do it themselves.
NOTE: This process will clobber the load of Linux on this unit. I have not been able to successfully save the original image, but that was probably largely due to my own pilot error -- it turns out that Linux uses the entire flash memory.
First, you must have an image compiled. Redboot prefers to load srecords, and the default kernel builds an srecord file.
% ./build.sh -m evbmips-eb kernel=MERAKI
We're going to use HTTP to load the files. I just put the resulting netbsd.srec file into the root htdocs on my server. You could probably put it somewhere else too.
% cp sys/arch/evbmips/compile/obj/MERAKI/netbsd.srec \
/var/apache/htdocsNext we need to connect to the Mini via a serial line. I set up a line called "usb" in /etc/remote, so that I can tip in like this:
% tip -115200 usb
connected
However you connect, its 115200 8N1. Once you power up the unit, you'll see something like this:
Ethernet eth0: MAC address 00:18:0a:01:06:d1
IP: 192.168.84.1/255.255.255.0, Gateway: 0.0.0.0
Default server: 192.168.84.9
RedBoot(tm) bootstrap and debug environment [ROMRAM]
Release, version V1.04 - built 12:24:00, Apr 17 2006
Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc.
Board: Meraki Mini
RAM: 0x80000000-0x82000000, [0x8003d110-0x80fe1000] available
FLASH: 0xa8000000 - 0xa87e0000, 128 blocks of 0x00010000 bytes each.
== Executing boot script in 2.000 seconds - enter ^C to abort
Quickly press Control-C to interrupt the boot. Run "fconfig" to update the configuration data flash.
RedBoot> fconfig
Now it will prompt you for all the flash parameters. You might want to record the old parameters in case you want to restore them. I didn't bother.
The following is what I entered, I have the Mini configured as 192.168.251.93 and I have a HTTP server providing the srecord image on 192.168.251.21. It is possible that BOOTP could be used too, but I've not tested it. Redboot isn't particularly robust.
Run script at boot: false
Use BOOTP for network configuration: false
Gateway IP address: 192.168.251.1
Local IP address: 192.168.251.93
Local IP address mask: 255.255.255.0
Default server IP address: 192.168.251.21
Console baud rate: 115200
GDB connection port: 9000
Force console for special debug messages: false
Network debug at boot time: false
Update RedBoot non-volatile configuration - continue (y/n)? y
... Erase from 0xa87d0000-0xa87e0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87d0000: .
Next we reset the board, so the new parameters will take effect.
RedBoot> reset
Wait a short bit (~2 secs or less) for the unit to reboot. It will not autoboot this time, instead going right to the prom property.
Ethernet eth0: MAC address 00:18:0a:01:06:d1
IP: 192.168.251.93/255.255.255.0, Gateway: 192.168.251.1
Default server: 192.168.251.21
RedBoot(tm) bootstrap and debug environment [ROMRAM]
Release, version V1.04 - built 12:24:00, Apr 17 2006
Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc.
Board: Meraki Mini
RAM: 0x80000000-0x82000000, [0x8003d110-0x80fe1000] available
FLASH: 0xa8000000 - 0xa87e0000, 128 blocks of 0x00010000 bytes each.
RedBoot>
Now we load our netbsd.srec file. The following assumes the path to it on your HTTP server is /netbsd.srec. Adjust accordingly if you need to.
RedBoot> load -m http /netbsd.srec
Entry point: 0x80041000, address range: 0x80041000-0x80202350
At this point, if you just type "go", the NetBSD kernel you loaded will boot. This is the safest way to run NetBSD on the Meraki, becuase it never disrupts flash.
===========
| WARNING |
===========
Proceeding from this point will erase the flash on your unit,
and might leave it unusable. Proceed at your own risk.
If you're still here, you must want to write NetBSD to flash. It is instructive to look at what is already in flash:
RedBoot> fis list
Name FLASH addr Mem addr Length Entry point
RedBoot 0xA8000000 0xA8000000 0x00030000 0x00000000
stage2 0xA8030000 0x80100000 0x00020000 0x80100000
FIS directory 0xA87D0000 0xA87D0000 0x0000F000 0x00000000
RedBoot config 0xA87DF000 0xA87DF000 0x00001000 0x00000000
Note that the flash starts at 0xA8000000. Allocation is done in flash sector sizes of 64K at a time. (I.e. except for the RedBoot config, all flash addresses should end in 0000 when displayed in hex.)
Unfortunately, the Linux code doesn't properly allocate everything in RedBoot. It turns out that stage2 is the Linux bootloader. There is a JFFS2 image located at 0xa8050000 thru 0xa8150000. The Linux kernel is located at 0xa8150000 through 0xa8490000. I mistakenly believed the data between 0xa849000 and 0xa87d0000 to be free. But I was wrong. Pretty much the whole flash is used.
I have not tested this theory, but it should be possible to read the flash data that we are going to overwrite, and save it in a file. Then in theory we could restore it. I only had the one unit, and I neglected to perform this step. Doh!
Anyway our kernels are always under 2MB, so we allocate based on that. (If you put an mfs in your kernel, it will be bigger, and you might need to change some parameters appropriately. I recommend leaving the first 320K of flash alone. You _must_ leave the first 192K alone, because it is used by RedBoot, and the 128K after that is useful if you ever want to restore Linux. I'm not sure if the Meraki Linux code drop includes the source for this bit.)
Recall our kernel load from above (if you do it again, its harmless):
RedBoot> load -m http /netbsd.srec
Entry point: 0x80041000, address range: 0x80041000-0x80202350
So, lets write it to flash. The fis create command below should all be typed on one line, but to facilitate display, I've broken it up and used a backslash "\" to indicate that the data should continue unbroken. Don't type the backslash.
The results look like this (it will take a while to do this, maybe a couple of minutes, the SPI flash is not fast):
RedBoot> fis create -b 0x80041000 -l 0x200000 -f 0xa8490000 \
-e 0x80041000 -r 0x80041000 netbsd
... Erase from 0xa8490000-0xa8690000: ................................
... Program from 0x80041000-0x80241000 at 0xa8490000: ................................
... Erase from 0xa87d0000-0xa87e0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87d0000: .
RedBoot>
Notice that it did two erases/programs. That's because we also updated the RedBoot directory in upper flash. In case you were wondering:
-b indicates the source address to copy from
-l indicates the image length (2 MB)
-f indicates the destination flash address
-e indicates the entry address when the image is loaded
-r indicates the image load address when the image is loaded
netbsd is the image name (you could name it something else!)
If you change the flash destination address and length, you can store a larger kernel. I recommend never starting your flash address lower than 0xa8150000 and you must not let the image extend beyond 0xa87d0000.
Here's the image listing in flash:
RedBoot> fis list
Name FLASH addr Mem addr Length Entry point
RedBoot 0xA8000000 0xA8000000 0x00030000 0x00000000
stage2 0xA8030000 0x80100000 0x00020000 0x80100000
netbsd 0xA8490000 0x80041000 0x00200000 0x80041000
FIS directory 0xA87D0000 0xA87D0000 0x0000F000 0x00000000
RedBoot config 0xA87DF000 0xA87DF000 0x00001000 0x00000000
Lets reset and make sure that we can use it.
RedBoot> reset
Ethernet eth0: MAC address 00:18:0a:01:06:d1
IP: 192.168.251.93/255.255.255.0, Gateway: 192.168.251.1
Default server: 192.168.251.21
RedBoot(tm) bootstrap and debug environment [ROMRAM]
Release, version V1.04 - built 12:24:00, Apr 17 2006
Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc.
Board: Meraki Mini
RAM: 0x80000000-0x82000000, [0x8003d110-0x80fe1000] available
FLASH: 0xa8000000 - 0xa87e0000, 128 blocks of 0x00010000 bytes each.
RedBoot>
Now lets try loading the NetBSD image from flash:
RedBoot> fis load netbsd
It will take a few seconds to load the image from flash. Now lets boot!
RedBoot> go [ netbsd boots... dmesg begins... MIPS32/64 params: cpu arch: 32 ...
That's it. After this, the rest is just normal NetBSD. If you want to set this up automatically, you can setup an automatic boot script using fconfig. The commands you want to setup in the script are just:
fis load netbsd go
Enjoy.
To build a standard CUWiN node you'll need the following components (from left to right) -- patch cable, omni antenna, power-over-ethernet injector, Metrix node, and a pole & pole-mount (not shown):
Once you gather these supplies, the second step is to fasten the antenna to its antenna mount:
Third, you'll want to install the components of the Metrix box (soekris board and mini-PCI radio):
Next we'll attach and weatherize the patch cable. First, screw the cable onto the antenna:
Next, using electrical tape, cover the connection point:
Then, use weatherizing "goo" and cover the electrical tape. Note that you should knead the goo until it's smooth and work out any major air bubbles:
And then cover the "goo" with a second wrapping of electrical tape -- congrats, you've weatherized the connection!
Once the connection point is weatherized, you can fasten the antenna assembly onto your mounting pole:
The most complicated part of building a CUWiN node is correctly assembling the mounting hardware for the Metrix node. But, a few tips and tricks will make this an easy task. The mounting hardware consists of various and sundry screws, bolts, washers, and nuts, along with two mounting plates (the two long black rectangles) and (my favorite, but not pictured) two clevis hangers:
You will certainly be tempted to put a bunch of the hardware together and mount it onto the back of your Metrix node (as I've done in the left-hand metrix box)... DON'T DO THIS -- it is pretty much impossible to actually attach the clevis hanger (those two funny-looking gray do-hickies in the lower-right quadrant) to that bolt (trust me, I've tried). Instead, put the large bolt through the mounting plate (as shown on the right-hand side of the picture) and disassemble the clevis hangers:
Then hold the bolt steady with a crescent wrench and, using a socket wrench, tighten down the nut:
Once you're done, you'll have a nifty little widget:
Attach this to the back of the Metrix box:
Then do the same steps with the second set of hardware. Once attached, then reassemble the clevis hangers. If you follow these simple directions you should end up with a Metrix box that looks like this:
Then mount the box beneath the antenna (just slide the box onto the pole and tighten down the bolts that run through the middle of the clevis hanger). NOTE: a 1" clevis hanger will fit a 1.25" pole -- if you use a 1.25" clevis hanger, better use a 1.5-2" pole... It all makes sense once you know the proper use for a clevis hanger, but I'll just let that one gnaw at your curiousity threshold. You'll then attach the other end of the patch cable to the node:
Finally, you'll want to weatherize the patch cable connection, add your ethernet cable, close up the box (don't forget the desiccant), grab a chimney/eve/wall/etc. mount, and put the node in a high spot:
Congratulations!!! If you've managed to avoid entangling yourself in the CAT5 and ending up hanging upside-down off the side of the roof, you're done!
This how-to document is designed to walk people through the process of upgrading the CUWiN software on a Soekris 4526 board using a FreeBSD operating system.
Three different command line prompts will be used: # indicates the normal user; $ indicates the root user; and > indicates a prompt from the node. All key strokes (e.g. Shift, Control, Enter, etc...) will use the following syntax: <key> [e.g. <Shift>, <Ctrl>, etc.].
For text editing, we use VI, but feel free to use whatever text editor you like. Some useful vi commands:
<i> - enter the edit mode to change text
<Esc> - to escape the edit mode
:q! - to exit without saving changes
<Shift>zz - to save changes and exit
$ /etc/rc.d/sshd start$ ifconfig -ainet 10.23.54.27 netmask 0xffffff00 broadcast 10.23.54.255inet”. Record this a second time, replacing the digits following the last period with “254”. In our example, this would be 10.23.54.254 – this is the ip address of the node.$ ssh root@10.23.54.254root” and the default password is “changme”. If you have changed the password, use that password.$ stty <space> erase Control-v <Backspace>blah” with your username on your local machine, and the ip address with the ip address of your machine (from step C.2). The “~” stands for you home directory. If the file is not in your home directory, replace “~/” with the correct path to the upgrade file. Also, replace “upgrade.tgz” with the correct name of the upgrade file that you downloaded from the website. If you wish to erase the current configuraton file on the node and use the default one provided in the upgrade, replace the “-f” with a “-C -f”.$ upgrade -f blah@10.23.54.27:~/upgrade.tgz “The authenticity of host '10.23.54.27 (10.23.54.27)' can't be established. DSA key fingerprint is a8:75:fe:7d:46:b7:a8:05:65:77:43:7a:67:e7:a4:fc. Are you sure you want to continue connecting (yes/no)?”
Respond by typing “yes”.
upgrade” command).fdisk: DIOCGDEFLABEL: Invalid argument fdisk: DIOCGDINFO: Invalid argument Disk: /dev/rwd0d NetBSD disklabel disk geometry: cylinders: 977, heads: 4, sectors/track: 32 (128 sectors/cylinder) total sectors: 125056 BIOS disk geometry: cylinders: 977, heads: 4, sectors/track: 32 (128 sectors/cylinder) total sectors: 210453442400 Partition 0: NetBSD (sysid 169) start 32, size 62512 (31 MB, Cyls 0-488/2/17) Making partition 0 active. Preparing for upgrade on /dev/wd0e. /dev/rwd0e: 30.5MB (62512 sectors) block size 8192, fragment size 1024 using 4 cylinder groups of 7.63MB, 977 blks, 1920 inodes. super-block backups (for fsck_ffs -b #) at: 32, 15664, 31296, 46928, Installing the upgrade. The authenticity of host '10.23.54.27 (10.23.54.27)' can't be established. DSA key fingerprint is a8:75:fe:7d:46:b7:a8:05:65:77:43:7a:67:e7:a4:fc. Are you sure you want to continue connecting (yes/no)?yes Warning: Permanently added '10.23.54.27' (DSA) to the list of known hosts. Password: 100% |*************************************| 4041 KB 237.68 KB/s --:-- ETA Updating etc/fstab Updating primary bootstrap Updating active partition Disk: /dev/rwd0d NetBSD disklabel disk geometry: cylinders: 977, heads: 4, sectors/track: 32 (128 sectors/cylinder) total sectors: 125056 BIOS disk geometry: cylinders: 977, heads: 4, sectors/track: 32 (128 sectors/cylinder) total sectors: 210453442400 Partition 1: NetBSD (sysid 169) start 62544, size 62512 (31 MB, Cyls 488/2/17-977) Making partition 1 active. Copying existing /etc/cuw_config. Upgrade complete (/dev/wd0e). #
$ rebootThis how-to document is designed to walk people through the process of installing the software on a Soekris 4526 board using a PXE boot on a FreeBSD operating system. This is the kind of board you might buy from Metrix.net.
Three different command line prompts will be used:
<key> [e.g. <Shift>, <Ctrl>, etc.].
For text editing, we use VI, but feel free to use whatever text editor you like. Some useful vi commands:
$ mkdir /tftpboot$ cd /tftpboot$ wget http://cuwireless.net/files/netbsd.gz$ wget http://cuwireless.net/files/pxeboot_ia32_com0_19200.bin$ chmod -R 744 /tftpboot # pkg_add -r ics-dhcp3-server# vi /usr/local/etc/dhcpd.confddns-update-style ad-hoc;
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.101;
option subnet-mask 255.255.255.0;
range 192.168.1.1 192.168.1.100;
}class "pxe-clients-ia32" {
match if substring(option vendor-class-identifier, 0, 9) = "PXEClient";
next-server 192.168.1.101;
filename "pxeboot_ia32_com0_19200.bin";
}class "netbsd-pxe-clients-ia32" {
match if substring(option vendor-class-identifier, 0, 17) =
"NetBSD:i386:libsa";
next-server 192.168.1.101;
filename "tftp:netbsd.gz";
}
# dhcpd &# pgrep dhcpd# vi /etc/inetd.conftftp dgram udp wait root /usr/libexec/tftpd tftpd -l -U 777 -s /tftpboot
# vi /etc/remote#cuwin node stuff
cuw0:dv=/dev/cuad0:br#19200:pa-none:dc:
$ shutdown -r now# dhcpd &# pgrep inetd# pgrep dhcpd# tip cuw0Pre-boot eXecution Environment PXE-2.0 (build 082) Copyright (C) 1997-2000 Intel Corporation CLIENT MAC ADDR: 00 00 24 C3 A8 40 CLIENT IP: 192.168.1.9 MASK: 255.255.255.0 DHCP IP: 192.168.1.101 GATEWAY IP: 192.168.1.101 >> NetBSD/i386 PXE Boot, Revision 1.1 >> (rgmussel@cuw.ojctech.com, Sun Apr 23 07:50:45 CDT 2006) >> Memory: 582/64512 k Press return to boot now, any other key for boot menu Starting in 0 PXE BIOS Version 2.1 Using PCI device at bus 0 device 6 function 0 Ethernet address 00:00:24:c3:a8:40 net_open: client addr: 192.168.1.9 net_open: subnet mask: 255.255.255.0 net_open: net gateway: 192.168.1.101 net_open: server addr: 192.168.1.101 net_open: file name: tftp:netbsd.gz 2159776+33612688-
> stty <space> erase Control-v <Backspace>> ifconfig sip0inet 10.168.64.254 netmask 0xffffff00> ifconfig sip0 inet 10.168.64.254 netmask 0xffffff00 -alias> ifconfig sip0inet 192.168.1.7 netmask 0xffffff00 broadcast 192.168.1.255.> ping 192.168.1.101 -c 564 bytes from 192.168.1.101: icmp_seq=0 ttl=64 time=0.656 m> upgrade -f -C blah@192.168.1.101:/tftpboot/upgrade.tgz
fdisk: DIOCGDEFLABEL: Invalid argument
fdisk: DIOCGDINFO: Invalid argument
Disk: /dev/rwd0d
NetBSD disklabel disk geometry:
cylinders: 977, heads: 4, sectors/track: 32 (128 sectors/cylinder)
total sectors: 125056
BIOS disk geometry:
cylinders: 977, heads: 4, sectors/track: 32 (128 sectors/cylinder)
total sectors: 210453442400
Partition 0:
NetBSD (sysid 169)
start 32, size 62512 (31 MB, Cyls 0-488/2/17)
Making partition 0 active.
Preparing for upgrade on /dev/wd0e.
/dev/rwd0e: 30.5MB (62512 sectors) block size 8192, fragment size 1024
using 4 cylinder groups of 7.63MB, 977 blks, 1920 inodes.
super-block backups (for fsck_ffs -b #) at:
32, 15664, 31296, 46928,
Installing the upgrade.
The authenticity of host '192.168.1.101 (192.168.1.101)' can't be established. DSA key fingerprint is a8:75:fe:7d:46:b7:a8:05:65:77:43:7a:67:e7:a4:fc. Are you sure you want to continue connecting (yes/no)?yes
Warning: Permanently added '192.168.1.101' (DSA) to the list of known hosts.
Password:
100% |*************************************| 4041 KB 237.68 KB/s --:-- ETA
Updating etc/fstab
Updating primary bootstrap
Updating active partition
Disk: /dev/rwd0d
NetBSD disklabel disk geometry:
cylinders: 977, heads: 4, sectors/track: 32 (128 sectors/cylinder)
total sectors: 125056
BIOS disk geometry:
cylinders: 977, heads: 4, sectors/track: 32 (128 sectors/cylinder)
total sectors: 210453442400
Partition 1:
NetBSD (sysid 169)
start 62544, size 62512 (31 MB, Cyls 488/2/17-977)
Making partition 1 active.
Copying existing /etc/cuw_config.
Upgrade complete (/dev/wd0e).
#
$ reboot<Ctrl>~D [i.e. <Ctrl>-<Shift>-~, release the keys, and then <Ctrl>-<Shift>-d].Congratulations! If you made it this far, you are ready to put the node on the roof and get to work!
*NOTE* Some of these instructions are specific to Arch Linux. If you would like to contribute instructions for other Linux distributions, please email them to us.
A text version of this document is available here: pxeboot4526archlinux.txt
Three different command line prompts will be used: # indicates the normal user; $ indicates the root user; and > indicates a prompt from the node. The end of all command line entries are signaled by the following notation: <enter>. All key strokes (e.g. Shift, Control, Enter, etc...) will use the following syntax: <key> [e.g. <Shift>, <Ctrl>, etc.].
For text editing, we use VI, but feel free to use whatever text editor you like. Some useful vi commands:
i - enter the edit mode to change text
<Esc> - to escape the edit mode
:q! - to exit without saving changes
<Shift>zz - to save changes and exit
# mkdir ~/cuwin
# svn co http://svn.cuwireless.net/svn/cuw/trunk
# wget http://superb-west.dl.sourceforge.net/sourceforge/wireless/cuwin-0.6.0-netbsd-src.tar.bz2
# tar -jxvf cuwin-0.6.0-netbsd-src.tar.bz2
# mv trunk cuwin/cuw-trunk
# mv cuwin-0.6.0-netbsd-src cuwin/scratch
# vi .mkstabootrc
BUILDDIR=$HOME/cuwin/scratch
SRC=$HOME/cuwin/scratch/src
LOWER_FAT=yes
MACHINE_ARCH=i386
:wq
# vi ~/cuwin/scratch/src/build.sh
# cd ~/cuwin/cuw-trunk/src/boot-image
# ./buildmd
23-April-staboot.md
If you do, you have successfully compiled the software. If not, don't be discouraged, that happens. We are working on a Troubleshooting Guide, but that may not be available for a few months. In the mean time, you should just use the sources provided on the website listed in 2.A.
# mkdir /var/tftpboot
# cp ~/cuwin/cuw-trunk/src/boot-image/23-April-staboot.img /var/tftpboot/netbsd
# cp ~/cuwin/scratch/O/sys/arch/i386/stand/pxeboot_com0_19200/pxeboot_ia32_com0.bin /var/tftpboot/pxeboot_ia32_com0_19200.bin
# cd ~/cuwin/cuw-trunk/src/boot-image
# ./cw_passwd ./pwds root
# ./cw_passwd ./pwds newusername
# cd ~/cuwin/cuw-trunk/src/boot-image
# ./buildelanup install
# cp upgrade.tgz /var/tftpboot/.
# cd /var/tftpboot
# gzip netbsd
# chown -R nobody:nobody /var/tftpboot
# chmod -R 777 /var/tftpboot
# ps wuax | grep dhcp # find /etc /usr/local/etc -name '*dhcp*' print # pacman -Sy dhcp
# vi /etc/dhcpd.conf
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.101;
option subnet-mask 255.255.255.0;
range 192.168.1.1 192.168.1.15
}
class "pxe-clients-ia32" {
match if substring(option vendor-class-identifier, 0, 9) = "PXEClient";
next-server 192.168.1.101;
filename "pxeboot_ia32_com0_19200.bin";
}
class "netbsd-pxe-clients-ia32" {
match if substring(option vendor-class-identifier, 0, 17) = "NetBSD:i386:libsa";
next-server 192.168.1.101;
filename "tftp:netbsd.gz";
}
# ifconfig -a
# ifconfig dev0
# ifconfig dev0 down
# ifconfig dev0 inet 192.168.1.101 netmask 255.255.255.0
inet 192.168.1.101 netmask 255.255.255.0 broadcast 192.168.1.255
# vi /etc/inetd.conf
tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -U 777 -s /var/tftpboot
# vi /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
disable = yes
}
# ls /etc/rc.d/ # /etc/rc.d/tftpd start
# /usr/sbin/in.tftpd -l -U 777 -s /var/tftpboot # /usr/libexec/tftpd -l -U 777 -s /var/tftpboot
# vi /etc/hosts.allow
# /etc/rc.d/dhcpd start
# /etc/rc.d/tftpd start
# /etc/rc.d/sshd start
> download <enter>
~C lsx b4501_xxx.bin > flashupdate
> reboot
> reboot
Pre-boot eXecution Environment PXE-2.0 (build 082)
Copyright (C) 1997-2000 Intel Corporation
CLIENT MAC ADDR: 00 00 24 C3 A8 40
CLIENT IP: 192.168.1.9 MASK: 255.255.255.0 DHCP IP: 192.168.1.101
GATEWAY IP: 192.168.1.101
>> NetBSD/i386 PXE Boot, Revision 1.1
>> (rgmussel@cuw.ojctech.com, Sun Apr 23 07:50:45 CDT 2006)
>> Memory: 582/64512 k
Press return to boot now, any other key for boot menu
Starting in 0
PXE BIOS Version 2.1
Using PCI device at bus 0 device 6 function 0
Ethernet address 00:00:24:c3:a8:40
net_open: client addr: 192.168.1.9
net_open: subnet mask: 255.255.255.0
net_open: net gateway: 192.168.1.101
net_open: server addr: 192.168.1.101
net_open: file name: tftp:netbsd.gz
2159776+33612688-
# stty <space> erase Control-v <bksp>
# fixlabel
# ifconfig sip0
inet 10.168.64.254 netmask 0xffffff00
# ifconfig sip0 inet 10.168.64.254 netmask 0xffffff00 -alias
# ifconfig sip0 inet 192.168.1.7 netmask 0xffffff00 broadcast 192.168.1.255
# ping 192.168.1.101 -c 5 64 bytes from 192.168.1.101: icmp_seq=0 ttl=64 time=0.656 m
# upgrade -f blah@192.168.1.101:/var/tftpboot/upgrade.tgz
fdisk: DIOCGDEFLABEL: Invalid argument
fdisk: DIOCGDINFO: Invalid argument
Disk: /dev/rwd0d
NetBSD disklabel disk geometry:
cylinders: 977, heads: 4, sectors/track: 32 (128 sectors/cylinder)
total sectors: 125056
BIOS disk geometry:
cylinders: 977, heads: 4, sectors/track: 32 (128 sectors/cylinder)
total sectors: 210453442400
Partition 0:
NetBSD (sysid 169)
start 32, size 62512 (31 MB, Cyls 0-488/2/17)
Making partition 0 active.
Preparing for upgrade on /dev/wd0e.
/dev/rwd0e: 30.5MB (62512 sectors) block size 8192, fragment size 1024
using 4 cylinder groups of 7.63MB, 977 blks, 1920 inodes.
super-block backups (for fsck_ffs -b #) at:
32, 15664, 31296, 46928,
Installing the upgrade.
The authenticity of host '192.168.1.101 (192.168.1.101)' can't be established.
DSA key fingerprint is a8:75:fe:7d:46:b7:a8:05:65:77:43:7a:67:e7:a4:fc.
Are you sure you want to continue connecting (yes/no)?yes
Warning: Permanently added '192.168.1.101' (DSA) to the list of known hosts.
Password:
100% |*************************************| 4041 KB 237.68 KB/s --:-- ETA
Updating etc/fstab
Updating primary bootstrap
Updating active partition
Disk: /dev/rwd0d
NetBSD disklabel disk geometry:
cylinders: 977, heads: 4, sectors/track: 32 (128 sectors/cylinder)
total sectors: 125056
BIOS disk geometry:
cylinders: 977, heads: 4, sectors/track: 32 (128 sectors/cylinder)
total sectors: 210453442400
Partition 1:
NetBSD (sysid 169)
start 62544, size 62512 (31 MB, Cyls 488/2/17-977)
Making partition 1 active.
Copying existing /etc/cuw_config.
Upgrade complete (/dev/wd0e).
#