Install Gnome desktop on OpenBSD 5.5
Introduction
OpenBSD is getting more and more attractive on the desktop.
- Security issues like Heartbleed make a security focused OS even more attractive
- 3D acceleration through Radeon KMS support is now there
- Xorg can now run without privilege on OpenBSD
- Really great Gnome 3.10 support
- OpenSMTPD support
Adding to that OpenBSD is super stable, reliable, consistent and simple to use in general.
I will use my Lenovo x201i to install on.
Install base OpenBSD
Install base on Lenovo x201i (amd64). Because x201 doesn't have any CDROM to insert you install CD you may use either an USB stick or use PXE boot install.
I chose the following disk layout on my 120 GB SSD disk. Around 40 GB is left for spare.
# df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/sd0a 3.9G 419M 3.3G 11% /
/dev/sd0g 39.4G 65.1M 37.3G 0% /home
/dev/sd0d 9.8G 8.0K 9.4G 0% /tmp
/dev/sd0e 14.8G 1.9G 12.1G 14% /usr
/dev/sd0f 9.8G 7.6M 9.3G 0% /var
Also make sure to setup a regular user to be used when loggin on to gnome.
Add permissions to wheel
group in /etc/sudoers
file.
PKG_PATH
Setup export PKG_PATH=ftp://ftp.stacken.kth.se/pub/OpenBSD/5.5/packages/amd64
pkg_add nano
echo "export PKG_PATH=$PKG_PATH" >> ~/.profile
Setup pf
Inspired heavily by Building an OpenBSD desktop.
# cat /etc/pf.conf
lan = "{ 10.0.0.0/8, 172.16.0.0/10, 192.168.0.0/16, 169.254.1.0/16 }"
eth = "em0"
wlan = "iwn0"
icmp_types="echoreq"
set block-policy return
set skip on lo0
match in all scrub (no-df)
antispoof quick for (egress)
block in quick on egress from { no-route urpf-failed } to any
# Default block policy. Only block incoming
block in all
pass out quick
# Pass in on SSH port
pass in inet proto tcp from $lan to port ssh
# Support ICMP e.g. ping
pass in inet proto icmp all icmp-type $icmp_type
Update firewall rules
pfctl -evf /etc/pf.conf
Install Gnome
Gnome is really trivial to install on OpenBSD!
pkg_add gnome
I had some problem with openldap-client
so I needed to install that separately.
pkg_add openldap-client
pkg_add gnome
The following services need to be started at boot. gdm
will start the gnome shell.
# cat /etc/rc.conf.local
ntpd_flags= # enabled during install
multicast_host=YES
hotplugd_flags=YES
pkg_scripts="dbus_daemon avahi_daemon gdm minidlnad"
After gnome install. Restart the machine and log on to gnome desktop as a regular user.
It is now possible to run X unpriviledged.
# cat /etc/sysctl.conf
...
machdep.allowaperture=0
Install mercurial
Install mercurial and clone the most used repos.
pkg_add mercurial
cat ~/.hgrc
[ui]
username = Peter Ljung <ljung.peter@gmail.com>
hg clone ssh://peter@silver/Documents/hg/server-conf
hg clone ssh://peter@silver/Documents/hg/eman
hg clone ssh://peter@silver/Documents/hg/eman-blog
hg clone ssh://peter@silver/Documents/hg/flux
hg clone ssh://peter@silver/Documents/hg/haskell
hg clone ssh://peter@silver/Documents/hg/jrobot
hg clone ssh://peter@silver/Documents/hg/opennas
hg clone ssh://peter@silver/Documents/hg/ops
hg clone ssh://peter@silver/Documents/hg/photogenic
hg clone ssh://peter@silver/Documents/hg/swingcvs
toad
and awifi
Install awifi
is my own script for simple wlan setup.
Download the file and make a symbolic link to it.
# pkg_add wget
# mkdir /usr/local/share/auto-wifi/
# cd /usr/local/share/auto-wifi/
# wget http://lounge.se/files/auto-wifi.s
# ln -s /usr/local/share/auto-wifi/auto-wifi.sh /usr/local/bin/awifi
# awifi
Install toad
to enable automatic USB attach/detach.
# pkg_add toad
# /etc/rc.d/toad start
# /etc/rc.d/hotplugd start
Try to insert a USB disk and access it.
ls /run/media/peter/usb0/
Install Vim
Add vim. I use the package with X11 support (gvim) and with python and ruby support.
pkg_add vim
Install smtpd
smtpd
is part of the OpenBSD base system so you don't need to install anything.
An example configuration is well explained at bsdnow.tv.
Don't forget to configure a valid hostname for your host. In /etc/hosts
.
127.0.0.1 localhost lounge.se think
Use media
Install vlc, minidlna.
# pkg_add vlc minidlna
Install Haskell and Gloss
There is some problem with OpenBSD, Haskell, LLVM and binutils. This following link indicate that it should work with binutils 2.17 and later. See FreeBSD LLVM 2.6 Release Notes which should be the case.
The llvm-gcc bootstrap will fail with some versions of binutils (e.g. 2.15) with a message of "Error: can not do 8 byte pc-relative relocation" when building C++ code. We intend to fix this on mainline, but a workaround for 2.6 is to upgrade to binutils 2.17 or later.
But I still get "can not do 8 byte pc-relative relocation" errors. So I needed to use the assembler backend (-fasm
) and override the default LLVM backend specified in (gloss-examples.cabal). Question is if all other options is removed at the same time?
pkg_add haskell-platform
cabal update
cabal install gloss
pkg_add llvm
cabal install --ghc-options="-fasm" gloss-examples
Run a test application.
export DISPLAY=":0.0"
~/.cabal/bin/gloss-eden
References
- Status of GNOME 3 on OpenBSD
- Building an OpenBSD desktop
- Transition to OpenBSD 5.5
- The ultimate OpenBSD router