OpenBSD Desktop on MSI Wind Laptop
Introduction
I choose MSI Wind both for its well known quality but also because the chipsets are well supported by OpenBSD 4.5. Ethernet chipset and WLAN chipset are from RealTek and RALink which both are well supported. The Atom CPU is well suited for small laptop computers and the Intel graphics chipsets are configured automatically in the default OpenBSD 4.5 install.
Install xfce
Start xfce on boot using xdm
To boot into xdm simply add the following to /etc/rc.conf.local
.
xdm_flags=""
.xsession
of the actual user will be executed after user login via xdm. Simply add the following to .xsession
for each user that like to start xfce. Note that I also need to execute .profile before xfce is started as this is not taken care of by default. .xsession
is run as the chosen user in its home folder. See xdm(1) for more information.
. /root/.profile
/usr/local/bin/startxfce4
WLAN setup
I used the description Using WPA on OpenBSD on the Vinci blog as support to the OpenBSD manual pages.
Check that the wifi driver has been configured correctly at boot up using dmesg. The driver is in my case ral0.
Create a "WPA pre-shared key" using wpa-psk.
wpa-psk <SSID> <password>
Configure network interface ral0
using the created key mapping in hostname.if (in my case /etc/hostname.ral0
).
dhcp chan 6 nwid <SSID> wpa wpapsk <wpa-psk output>
WEP and open networks
It is still common that open networks on hotels, cafes and airports are using either WEP encryption or using open wifi access in combination with a login via browser.
Starting with WEP security the corresponding configuration in hostname.if would be. Double quotes shall be used when space is used in values.
dhcp nwid "<SSID>" nwkey <hexadecimal password starting with 0x>
Or as the following for string based WEP keys.
dhcp nwid "<SSID>" nwkey "<WEP string password>"
You may also configure the network manually using ifconfig and dhclient. For example.
sudo ifconfig ral0 nwid "home" nwkey "secret" up
sudo dhclient ral0
For open networks you may just exclude the nwkey
. Often it is neccesary to login the a certain webpage before the DNS is opened to external internet.
You may also scan for available networks if you don't know the SSID.
sudo ifconfig ral0 scan
Dynamic WLAN access
- http://undeadly.org/cgi?action=article&sid=20071224164233
- http://marc.info/?l=openbsd-misc&m=119611252029773&w=2
- http://www.aei.mpg.de/~pau/OpenBSD_wifiprobe.sh
ahem... the tools are ALREADY there, of course, and they're fantastic
(ifconfig, dhclient, and all iwi, iwn, ipw Damien wrote!)
This doesn't work yet for me. May need some patch of the script to work.
AutoWifi
I finally made my own wifi script, called auto-wifi.sh. Not production proof but useful in most situations.
Multipath setup
As I have both an wired interface and a wireless interface where both may be available or not available. Sometimes I have wired connection and sometimes only a wireless connection. The problem is how to handle routing in this situation. It seems that routes are configured per interface, but I do not understand how to specify a route for a specific interface using route. OpenBSD does however support multipath routes. See Multipath in Networking FAQ and PF: Address Pools and Load Balancing, but I have failed to get it to work. There is also a good overview over different routing capabilities in OpenBSD Routing with OpenBSD using OpenOSPFD and
OpenBGPD, but solutions used here (OpenBGPD and OpenOSPFD) are normally used in routers/gateways in large networks which most likely is overkill for my purpose.
Possibly you could also use ifstated or hotplugd to dynamically reconfigure network depending on available network.
In OpenBSD 4.8 both interfaces seems to go up simultaneously. I have also learned that you can setup failover between two interfaces using trunk(4) interfaces. See Interface trunking
3G access via bluetooth
This does not work yet
When you neither have internet access through ethernet nor WLAN there is one last option, 3G access via your mobile phone. The Wind has a bluetooth which is supported by OpenBSD. Check out the following link for an excellent guide on how to set this up.
Some tips on ppp setup to GPRS/UMTS can be found here.
- Connection to internet via GPRS/UMTS or
- GPRS/UMTS with OpenBSD
- GPRS in FreeBSD
- Internet access over Bluetooth; a summary
- Ericsson MBM F3705g setup
- Configuring Huawei E182E
- OpenBSD NC4200: Using Celcom ZTE MF190 USB Modem
- http://www.chrisk.de/blog/2011/03/how-to-openbsd-with-huawei-e1750-umts/
Name lookup
If you configure network interfaces using DHCP the information in resolv.conf(5) will be overwritted by dhclient(5).
In my setup I want to use /etc/hosts
for local machines and external DNS for external name lookup. To make sure that lookup priority is ensured you need to add an lookup directive in resolv.conf.tail to ensure that hosts(5) are searched before DNS lookup.
# echo "lookup file bind" > /etc/resolv.conf.tail
See FAQ 6 Networking - DHCP Client for more information.
Locate problem
Directly after install the locate database will not be updated. By default locate database is updated through /etc/weekly
script. Common tips indicate that this script should be run to update the locate database, but this does not work in OpenBSD 4.5. The weekly
script is run from the root
's crontab
which set up HOME=/var/db
. When run as root outside /var
the weekly script fails. There are three ways around this problem.
- Run locate.updatedb directly
cd /var/db
before runningweekly
script- Wait until
weekly
script is run bycron
. This should work but is not verified.
Upgrade to OpenBSD 4.6
Upgrading to the latest version of OpenBSD went swift as usual. The following steps were performed to complete the upgrade.
- Copy the contents CD1(i386) to the local harddisk.
- Backup
/etc
to etc.tgz. - Disable automatic start of XDM at boot.
- Reboot and boot from
bsd.rd
now located on the harddisk. - Choose Update path in the installer. Reboot.
- Upgrade packages from packages included on CD.
- Upgrade the rest of the packages from favorite ftp server.
- Update PKG_PATH setting in
.profile
- Enable XDM at boot.
- Reboot and your done!
Some of the commands entered during this install ...
<<on MacOS X host with CD>>
sudo scp -r /Volumes/OpenBSD4.6CD1.../4.6 root@wind:/
<<on target>>
tar czf etc-4.5.tgz /etc
# xdm_flags="" <<in rc.local.conf>>
<<reboot>>
boot wd0a:/4.6/i386/bsd.rd <<at boot prompt>>
export PKG_PATH=/4.6/packages/i386
pkg_add -ui -F update -F updatedepends
export PKG_PATH=ftp://ftp.sunet.se/pub/OpenBSD/4.6/packages/i386 <<also update .profile>>
pkg_add -ui -F update -F updatedepends
<<reboot>>