I was trying to get quagga working on a Suse 9.0 Professional system. I installed the quagga-0.96.2-17 rpm from the installation cd's. I had trouble getting it up and working, and wanted to document and post what it took to finally get it working. The problems didn't seem to come from quagga itself, but the configuration options that Suse compiled into it. I felt it important to stick with stock Suse RPMS though to make updates and such easier.
After the rpm was installed, I tried to start the zebra daemon.
host:~ # /etc/init.d/zebra start
Starting routing daemon (Zebra)privs_init: could not lookup user quagga
startproc: exit status of parent of /usr/sbin/zebra: 1
It looks like zebra is started as the quagga user, that doesn't exist. Create one and try again
---------------------------------------------------------------------
host:~ # /etc/init.d/zebra start
Starting routing daemon (Zebra)privs_init: could not lookup group quagga
startproc: exit status of parent of /usr/sbin/zebra: 1
Same for a quagga group. Create it.
---------------------------------------------------------------------
host:~ # /etc/init.d/zebra start
Starting routing daemon (Zebra)bind: Permission denied
can't open configuration file [/etc/quagga/zebra.conf]
startproc: exit status of parent of /usr/sbin/zebra: 1
Moved /etc/quagga/quagga.conf to /etc/quagga/zebra.conf
---------------------------------------------------------------------
host:/etc/quagga # /etc/init.d/zebra start
Starting routing daemon (Zebra)bind: Permission denied done
At this point, the zebra daemon looked like it was started. I ignored the bind permission error and tried configuring
---------------------------------------------------------------------
quagga# write mem
Can't open configuration file /etc/quagga/zebra.conf.PlkF42.
Make sense, if the daemon starts as the quagga user, it needs write permissions. While I was at it, I changed permissions for /var/log/quagga/, since this was listed in the config file as the log location
host:/etc/quagga # chown -R quagga.quagga /etc/quagga/
host:/etc/quagga # chown -R quagga.quagga /var/log/quagga/
---------------------------------------------------------------------
Back to the bind permission denied problem. Tried running zebra on the command line as root in case it was a permissions problem.
host:/var/run # /usr/sbin/zebra
bind: Permission denied
bind: Permission denied
Same thing. I think privileges had already changed to the quagga user. I went through an strace and saw that it was trying to create files in /var/run. I really wish it'd been configured to use something like /var/run/quagga/ to make permissions easier. But since this machine is dedicated to quagga, it wasn't overly painful to work around it.
host:/var/run # chown root.quagga /var/run
host:/var/run # chmod 775 /var/run
---------------------------------------------------------------------
host:/var/run # /etc/init.d/zebra start
Starting routing daemon (Zebra) done
After this, configuration went smoothly. I was able to get it to talk ospf with the Cisco router that it'll be set up with
Hope this is useful to someone.
Danny Rappleyea