For anyone who is having issues booting an Olive in ProxMox, hopefully this will help. I will outline some of the ProxMox specific hurdles and how I overcame them. I am skipping any general kvm issues that are not proxmox as that information is available elsewhere.
So I've seen a number of threads (though none on these forums) on getting Juniper Olives to run in a KVM, so I tried it and got it mostly working. I got it working via cmdline, but not via the GUI.
Yesterday, I got it to work via the GUI.
Parameters not available in the GUI:
While the GUI does not support any of these, it does allow an 'args:' parameter in the VM config file.
(edit) The first issue isn't an issue as -nographic only directs the serial output to the console and not to vnc, so can't be used with -daemonize. The way to access the serial output is explained at the end.
For the second issue, the following line in my config file did the trick:
The third one is also fixable in that same config file.
To do this, I used the GUI to create the networks, then started and stopped the VM to create the initial entries (and MAC addrs) in the file, then replaced the nettype in the file with 'i82559er'.
For #4, I had to edit some PERL.
1. Add a 'nodefaults' option to the config file parser and set the default value to 'true' (to not mess up any other VMs):
/usr/share/perl5/PVE/OpenVZ.pm
2. Make the '-nodefaults' argument conditional on that parameter being set.
(this file also contains another parser, so I changed it, too, just in case).
/usr/share/perl5/PVE/QemuServer.pm
For #5, well it actually did work, but you have to hit ctrl-alt-2 in the VNC window to switch to the serial output.
So, now I can start and stop my olives from the GUI, with just a little config adjustment.
If there's anyway to get the official PVE code modified to allow for the negating the -nodefaults option, that would be grand.
So I've seen a number of threads (though none on these forums) on getting Juniper Olives to run in a KVM, so I tried it and got it mostly working. I got it working via cmdline, but not via the GUI.
Yesterday, I got it to work via the GUI.
Parameters not available in the GUI:
- nographic
Installing JunOS disables the video and redirects all text output to "serial" which will display to the terminal if you use the -nographic arg. This is the equivalent to plugging a terminal into the serial OOB port of a phy router.
Use this instead of -daemonize when launching from the cmdline!
Use this instead of -daemonize when launching from the cmdline!
- -bios /usr/share/kvm/bios-0.10.6.bin
The olive also requires a different BIOS (instructions and details elsewhere in the interwebs).
- network type: i82559er
This is not listed as an option in the dropdown lists, but required nonetheless.
- not -nodefaults
Ok, so the GUI automatically adds the '-nodefaults' argument which causes the olive to not boot and it is not an option to disable this.
- Access the "serial" output
The JunOS installation disables the standard video output which is what the GUI uses when you click 'console'
While the GUI does not support any of these, it does allow an 'args:' parameter in the VM config file.
file:/etc/pve/nodes/myserver/qemu-server/100.conf
(edit) The first issue isn't an issue as -nographic only directs the serial output to the console and not to vnc, so can't be used with -daemonize. The way to access the serial output is explained at the end.
For the second issue, the following line in my config file did the trick:
Code:
args: -bios /usr/share/kvm/bios-0.10.6.bin
The third one is also fixable in that same config file.
To do this, I used the GUI to create the networks, then started and stopped the VM to create the initial entries (and MAC addrs) in the file, then replaced the nettype in the file with 'i82559er'.
Code:
net0: i82559er=CE:29:3D:DD:D7:AF,bridge=vmbr0
net1: i82559er=B2:4D:4F:22:E5:D5,bridge=vmbr1
net2: i82559er=86:AF:0E:57:83:0F,bridge=vmbr2
net3: i82559er=7E:83:D2:6C:A4:89,bridge=vmbr3
net4: i82559er=46:0D:C1:88:C4:F8,bridge=vmbr4
net5: i82559er=D6:55:98:FB:C5:5A,bridge=vmbr5
For #4, I had to edit some PERL.
1. Add a 'nodefaults' option to the config file parser and set the default value to 'true' (to not mess up any other VMs):
/usr/share/perl5/PVE/OpenVZ.pm
Code:
my $confdesc = {
nodefaults => {
optional => 1,
type => 'boolean',
description => "Specifies if a VM should get the -nodefaults argument (required for Juniper Olive).",
default => 1,
},
onboot => {
optional => 1,
type => 'boolean',
description => "Specifies whether a VM will be started during system bootup.",
default => 0,
},
<etc>
}
2. Make the '-nodefaults' argument conditional on that parameter being set.
(this file also contains another parser, so I changed it, too, just in case).
/usr/share/perl5/PVE/QemuServer.pm
Code:
my $confdesc = {
nodefaults => {
optional => 1,
type => 'boolean',
description => "Specifies if a VM should get the -nodefaults argument (required for Juniper Olive).",
default => 1,
},
<etc>
}
sub config_to_command {
<etc>
push @$cmd, '-nodefaults' unless defined($conf->{nodefaults}) && $conf->{nodefaults} == 0;
<etc>
}
For #5, well it actually did work, but you have to hit ctrl-alt-2 in the VNC window to switch to the serial output.
So, now I can start and stop my olives from the GUI, with just a little config adjustment.
If there's anyway to get the official PVE code modified to allow for the negating the -nodefaults option, that would be grand.
Last edited: