I've been using the same set of applications on an IR809 for a while now. I gave the unit to a colleague and put the latest version of IOS on another unit.

I turned it on with the mini-USB serial cable plugged into my laptop and was faced with the dreaded: rommon-2

When I tried to boot the image that was in flash:, I got this error:

% ERROR: Image name flash:/ir800-universalk9-mz.SPA.155-3.M is invalid (Bad se...

I'm not sure how this happened. Now I have a router without any bootable IOS image on it.

The IR809 is a different beast than normal Cisco routers. It has a hypervisor running the entire show, much like a VMware blade server. Access to the actual hardware is via rommon-1, rommon-2 indicates the IOS image won't boot. Trouble is, rommon-2 is brain damaged. If does not have the "copy" command, which could be used to copy a boot image from USB into flash. In this case it would have been handy. What to do?

I setup a TFTP server and tried to use "boot" to try to bring up IOS.

First: setup a TFTP server on my brain damaged Windows laptop... where to get it? I've been using tftpd32 for a while, it works well.

Give the Laptop NIC an IP address, I chose 192.168.11.234

Next connect the NIC from my Laptop to GE0 on the IR809. Enter the command to give it an IP address, etc.:

rommon-2> set ip 192.168.11.222 255.255.255.0
rommon-2> set gw 192.168.11.234
Correct gateway addr 192.168.11.234
Address: 192.168.11.222
Netmask: 255.255.255.0
Server: 0.0.0.0
Gateway: 192.168.11.234

So far, so good. Now boot.

rommon-2> boot tftp://192.168.11.234/ir800-universalk9-bundle.SPA.156-3.M.bin
Address: 192.168.11.222
Netmask: 255.255.255.0
Server: 192.168.11.234
Gateway: 192.168.11.234
Booting: /ir800-universalk9-bundle.SPA.156-3.M.bin console=ttyS0,9600n8nn quie
loader_ver="0.0.5"....Retry 1: Congestion or cable issue
Retry 1: Congestion or cable issue
Retry 1: Congestion or cable issue
...
TFTP error 0 (Undefined error code)

Error 25: Disk read error

Now what? (I realize now, this was dumb. The "bundle" is not bootable..., but let's continue)

Turn off power... rommon-2 again. boot...

rommon-2> boot flash:ir800-universalk9-mz.SPA.155-3.M
Booting image: flash:ir800-universalk9-mz.SPA.155-3.M.... [Multiboot-elf, , shtab=0x9c90500
Signature verification was successful, entry=0x110240]
[CU:0]
Jumps to: 0x110240

So far so good. (Now I realize, that the same image actually booted at this point, I still don't know what fixed it).

Ok, let's install 15(6).3. Now I have "copy" at least:

copy tftp://192.168.11.234/ir800-universalk9-bundle.SPA.156-3.M.bin flash:

Worked.

Set the boot image config...

IR800#conf t
IR800(config)#boot system flash:/ir800-universalk9-mz.SPA.155-3.M
IR800(config)#end

IR800#wr mem
IR800#reload

Now I'm in business, or so I thought. I tried to install a big application and got the error that the IR809 didn't have enough available RAM. What's happening? Using the ioxclient, I took a look:


$ ioxclient plt rsmgr alc
Currently active profile : IR809-VZ-X045
Command Name: plt-rsmgr-allocations
Resource Allocation Info :

{
"cpu": {
"app_cpu_allocations": [],
"available_cpu": 732,
"total_cpu": 732
},
"devices": {},
"disk": {
"app_disk_allocations": [],
"available_persistent_disk": 256,
"total_persistent_disk": 256
},
"memory": {
"app_memory_allocations": [],
"available_memory": 360,
"total_memory": 360
}
}

Hmm... last I checked the previous unit had 720MB available, not 360MB. Don't panic.

I remembered having to install the "ioxvm" package in the past. So, I guessed this was the issue. (At this point I installed the wrong IOx version - 1.1.x.x, but recovered by installing 1.2.x.x).

Let's take another look:


$ ioxclient plt rsmgr alc
Currently active profile : IR809-VZ-X045
Command Name: plt-rsmgr-allocations
Saving current configuration
Resource Allocation Info :

{
"cpu": {
"app_cpu_allocations": [],
"available_cpu": 732,
"total_cpu": 732
},
"devices": {
"app_device_mapping": []
},
"disk": {
"app_disk_allocations": [],
"available_persistent_disk": 607,
"total_persistent_disk": 607
},
"memory": {
"app_memory_allocations": [],
"available_memory": 720,
"total_memory": 720
}
}

Ahh... problem solved.