Juniper Olive

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.

On this blog, I go over some of things I did to get JUNOS software running on a PC.

Juniper's official position on this deployment is that it is not supported. But, having said that, this is a great way to learn about the JUNOS software and ultimately, get Juniper certified or get a job as a Juniper engineer.

Olive requires a valid copy of a JUNOS jinstall file. This file can be found on a Juniper router and/or obtained from Juniper Networks under a support contract. If you don't have that, please do not contact me as I will not provide that.


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


1. Install FreeBSD
2. Make a few file system changes
3. Add the jinstall package
4. Upgrade your JUNOS as you desire

If you've done any research at all about Juniper Olive, you probably realize that JUNOS is based on FreeBSD 4.x. A copy of FreeBSD will be used bootstrap into JUNOS software. The jinstall package is literally a FreeBSD software package that contains the JUNOS. To do the initial install you'll need JUNOS 7.4 or earlier.

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

To initially connect to an Olive system (after the install), you are going to have to connect via the serial port. You'll need a serial cable or null-modem cable to manage the box and do initial configuration.


1. Install the base OS. For this install, we need FreeBSD version 4.4. (Here is an ISO for you) to download. A very generic installation is all that is required. Much of it gets blown away when you installl the JUNOS package anyway.
2. Boot from CDRom.
3. [Enter] to boot immediately.
4. Skip kernel configuration and continue with installation.
5. At the "/stand/sysinstall Main Menu", choose Standard.
6. At the "FDISK partition Editor", I used "A" for Use Entire Slice.
7. Choose "S" for Set Bootable.
8. Choose "Q" for Finish.
9. For the boot manager, go with "Standard" for a standard MBR.
10. At Disklabel Editor, I created the following slices:
ad0s1a / 500MB
ad0s1b swap 500MB
ad0s1c /config 100MB
ad0s1f /var (the rest)
11. At "choose distributions", go with "minimal"
12. Choose installation media: 1 CD/DVD
13. after the system reboots, make some mods to the system:

# 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
14. Add the jinstall package:

# pkg_add jinstall-xxx.tgz (you can't use "request system reboot" for the first reboot)

15. After the package completes, then

# reboot

Here you will need a console connection to your system as the PC is now functioning as a "router" and it won't have a GUI. Your PC screen will probably say something like this after the reboot:
"Loading /boot/loader"
"BTX loader 1.00 BTX version is 1.01"

With your console connection, you see the jinstall package doing its thing and then the router reboots again.

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.

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 found that even though I had supported NICs, I still could not pass any traffic. I had enable "PCI Bus Mastering" in the BIOS to get things to work.

The system will reboot and run the bootstrap installer. It will 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]

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