Installing Olive 7.1

Olive refers to a regular PC that’s running Juniper Networks’ JUNOS software. Juniper developed Olive early on so they could perform testing of JUNOS during development. These days Olive is deprecated in favor of cheap, low-end M and J-series routers.

Olive is in no way, shape, or form supported by Juniper or JTAC.

Olive requires a valid copy of a JUNOS jinstall file. This file can be found on a “real” Juniper router and/or obtained from Juniper under a support contract.

Preparing for Install

Requirements:

  • FreeBSD 4.x ISO image
  • A valid jinstall package for JUNOS <= 7.4
  • Intel network cards that use the fxp or em driver
  • Serial cable/null-modem cable

If you’re reading this page you’re probably aware that JUNOS is based on FreeBSD 4.x. A copy of FreeBSD will be used bootstrap into JUNOS.

The jinstall package is a literal FreeBSD software package (think pkg_add) that contains JUNOS. To do the initial install you’ll need JUNOS 7.4 or earlier (more on this below).

The right network cards are crucial to having Olive do anything useful. As other sites have documented (see References), Intel-based cards are the only ones supported, specifically cards supported by the FreeBSD 4.x fxp and em drivers.

Just like the real deal, Olive systems are managed initially through their serial port. You’ll need a serial cable or null-modem cable to manage the box and do initial configuration.

Installation

Install FreeBSD 4.x. A very generic installation is all that’s required. Much of it gets blown away when you installl the JUNOS package anyways. Setup your disklabels like this:

ad0s1a    /          250M
ad0s1b    swap       1G
ad0s1e    /config    12M
ad0s1f	  /var       large (make it the rest of the disk)

During the first reboot after the JUNOS package is installed, the install script will repartition the disk appropriately if it doesn’t like what it finds. The sizes listed above are what the script resized everything to in my Olive install.

After installation, boot the system normally, do a bit of tweaking and install JUNOS.

# rm /dev/wd0c && ln -s /dev/ad0c /dev/wd0c
# mkdir /var/etc
# touch /var/etc/master.passwd
# touch /var/etc/group
# touch /var/etc/inetd.conf
# pkg_add jinstall-xxx.tgz

At this point, if you tried to install anything higher than JUNOS 7.4 you’ll get an error message and the pkg_add will stop.

ELF binary type "0" not known.
Abort trap

Whenever you upgrade JUNOS it always checks to make sure your PICs are properly supported by the version you’re upgrading to. To that end, there is a binary within the package called checkpic. The checkpic binary in newer JUNOS packages causes the ELF error. Installing an older version of JUNOS and then upgrading to something newer seems to work just fine. I have a bit more info on checkpic here: checkpic.txt.

Michael Calzada (michaelcalzada at bellsouth.net) points out that the JuniperClue Wiki offers another solution: http://juniper.cluepon.net/index.php/Olive.

Once the JUNOS package is installed, reboot the system.

# reboot

Make sure your serial cable/null-modem cable is connected so you can watch the bootup and manage the box once it’s up.

The system will reboot and run the bootstrap installer. It’ll repartition the disk (if necessary), install more packages (jbase, jkernel, jpfe, etc) and then it’ll reboot again. Once it comes back up you can login.

root@olive% cli
root@olive> show version
Hostname: olive
Model: olive
JUNOS Base OS boot [7.1R1.3]
JUNOS Base OS Software Suite [7.1R1.3]
JUNOS Kernel Software Suite [7.1R1.3]
JUNOS Packet Forwarding Engine Support (M20/M40) [7.1R1.3]
JUNOS Routing Software Suite [7.1R1.3]
JUNOS Online Documentation [7.1R1.3]
JUNOS Crypto Software Suite [7.1R1.3]

Installing under VMWare

Michael Calzada (michaelcalzada at bellsouth.net) was able to get JUNOS 8.0 running on his Olive box under VMWare:

You can modify the vmx file for the VM by adding: ethernet0.virtualDev = “e1000” to report the NIC as em0 instead of lnc0.

Under FreeBSD you can see the network adapter “em0”, so does olive 7.5 and up.

The trick was to install JunOS 7.2 first then in another VMachine install plain vanilla FreeBSD and mount the olive 7.2 disk as a secondary and copy the 7.5 code to that partition. Then reboot the Olive and upgrade from 7.2 to 7.5. The em0 card will now be recognized. FTP JunOS 8.0 to Olive and perform an upgrade.

The show system boot-messages from Michael’s system can be seen here: olive8-boot-messages.txt

Limitations

Olive does have some limitations.

MTU on fxp and em Cards Limited to 1500 Bytes

The single greatest limitation is that MTU on the fxp and em NICs is locked at 1500 bytes by the driver. This impacts the ability to do vlan-tagging and MPLS. If you do configure an interface for vlan-tagging the router will drop the MTU of that logical interface to 1496 bytes in order to accomodate the dot1q header. So although everything works just fine, as soon as a full size Ethernet frame hits that interface it gets dropped.

root@olive> show configuration interfaces fxp1
vlan-tagging;
unit 100 {
     vlan-id 100;
     family inet {
         address 172.16.0.101/24;
     }
}

root@olive> show interfaces fxp1.100
   Logical interface fxp1.100 (Index 64) (SNMP ifIndex 22)
     Flags: SNMP-Traps VLAN-Tag [ 0x8100.100 ] Encapsulation: ENET2
   Input packets : 316
   Output packets: 51
     Protocol inet, MTU: 1496
       Flags: Is-Primary
       Addresses, Flags: Is-Default Is-Preferred Is-Primary
         Destination: 172.16.0/24, Local: 172.16.0.101, Broadcast: 172.16.0.255

There is somewhat of a workaround (at least with the fxp cards) and that is to put the interface into promiscuous mode by either running tcpdump(8) from the shell or using the command monitor traffic interface.

Multicast Traffic doesn’t pass on Intel GigE Cards

The GigE cards don’t seem to pass multicast traffic. Running monitor traffic interface shows zero received mcast packets. This will obviously be an issue when running any routing protocol that uses multicast for HELLOs, etc.

Hardware Support

The following NICs have been tested and known to work with Olive:

  • Intel EtherExpress Pro 10/100B (82557, 82559 chipset)
  • Intel PRO/1000MT, PRO/1000GT

You will need a recent version of JUNOS in order to use the later generation 1000MT/GT cards.

Although I haven’t been able to test this, I suspect any card supported by the FreeBSD 4.x fxp or em driver will work just fine.

Here is a show system boot-messages from my Olive system.

References