[FAQ Index]
[To Section 8 - General Questions]
[To Section 10 - System Management]
9 - Migrating to OpenBSD
Table of Contents
For more information for Linux users, please refer to http://sites.inka.de/mips/unix/bsdlinux.html.
9.1 - Tips for users of other Unix-like Operating Systems
While OpenBSD is a very traditional Unix-like operating system and will
be very familiar to those who have used other Unix-like systems, there
are important differences.
New users to OpenBSD must look at their own experience:
if your only knowledge of Unix is some experience with one variant
of Linux, you may find OpenBSD "strange".
Rest assured, Linux looks pretty strange to anyone who starts from
OpenBSD.
You must recognize the difference between "standard" and your
experience.
If you learned Unix from any of the good
books on general Unix, understanding the "Unix philosophy" and then
extended your knowledge to a particular platform, you will find OpenBSD
to be a very "true" and familiar Unix.
If you learned Unix using a "type this to do that" process or a book
such as "Learn PinkBeenie v8.3 in 31.4 Hours", and told yourself you
"know Unix", you will most likely find OpenBSD very different.
One important difference between OpenBSD and many other operating systems
is the documentation. OpenBSD developers take great pride in the system
man pages.
The man pages are the authoritative source of OpenBSD
documentation -- not this FAQ, not third-party independently maintained
pages, not "HOWTO"s, etc.
When a developer makes a change to the system, they are expected to
update the man pages along with their change to the system code, not
"later" or "when they get around to it" or "when someone complains".
A manual page exists for virtually every program, utility, driver,
configuration file, and so on on the stock system.
It is expected that a user will check the man pages before asking for
help on the mail lists.
Here are some of the commonly encountered differences between OpenBSD
and other Unix variants.
- OpenBSD is a fairly pure "BSD-Style" Unix, following the 4.4BSD
design closely.
Linux and Solaris are "System V" style systems.
Some Unix-like operating systems (including some Linux distributions)
mix many SysV and BSD characteristics.
A common place where this causes confusion is the
startup scripts, OpenBSD uses the
traditional BSD4.4-style
rc(8)
style.
- OpenBSD is a complete system, intended to be kept in sync.
It is not a "Kernel plus utilities" that can be upgraded separately
from each other.
Failure to keep your system (kernel, user utilities, and applications)
in sync will result in bad things happening.
- As many applications are not developed to directly compile and run
on an OpenBSD environment, OpenBSD has a
ports tree, a system where users can
easily acquire code, patch it for OpenBSD, install dependencies, compile
it, install and remove it in a standardized and maintainable way.
Pre-compiled packages are created and
distributed by the OpenBSD ports team.
Users are encouraged to use these
packages over compiling their own.
- OpenBSD uses CVS to keep track of source code changes.
OpenBSD pioneered anonymous CVS, which
allows anyone to extract the full source tree for any version of OpenBSD
(from 2.0 to current, and all revisions of all files in between) at any
time, and you can access the most recent changes within hours of its
commit.
There is also a very convenient and easy to use
web interface to
CVS.
- OpenBSD produces an official release available on CD and FTP every six
months on a predefined schedule.
Snapshots for all supported platforms are made semi-regularly with the
current development code.
It is the goal that the source tree is kept fully buildable and the
resultant system usable at all times.
The tree is occasionally broken, but this is an extraordinary event that
will be corrected rapidly, not something that will be permitted to
continue.
- OpenBSD has gone through heavy and continual security auditing to
ensure the quality (and thus, security) of the code.
- OpenBSD's kernel is /bsd.
- The names of hard disks are usually /dev/wd (IDE) and
/dev/sd (SCSI or devices emulating SCSI disks).
- /sbin/route
with no arguments in Linux gives the state of all the active routes,
under OpenBSD (and many other OSs), you need the "show"
parameter, or do a
"netstat -r".
- OpenBSD does NOT support Journaling Filesystems like ReiserFS, IBM's
JFS or SGI's XFS.
Instead we use the Soft Updates feature
of the already very robust Unix Fast File System (FFS) to accomplish the
goals of performance and stability. The EXT2 filesystem is supported, but
journaled variants such as EXT3 or EXT4 are not.
- OpenBSD comes with Packet Filter (PF),
not ipfw, ipchains, netfilter, iptables, or ipf. This means that
Network Address Translation (known as IP-Masquerading in Linux),
queuing, and filtering is done through
pfctl(8),
pf(4), and
pf.conf(5).
See the PF User's Guide for detailed
configuration information.
- Interface address is stored in
/etc/hostname.<interfacename>
(for example, /etc/hostname.em0 for a NIC using the
em(4)
driver).
It can contain a hostname (resolved in
/etc/hosts)
instead of an IP address.
- The machine name is in
/etc/myname.
- The default gateway is in
/etc/mygate.
- OpenBSD's default shell is
/bin/ksh,
which is pdksh, the
Public Domain Korn shell.
Other included shells are
csh
and
sh.
Shells such as bash and tcsh can be added as
packages or installed from
ports.
Users familiar with bash are encouraged to
try ksh(1) before loading bash on their
system -- it does what most people desire of bash.
- Password management on OpenBSD is different from password management
on some other Unix-like operating systems.
The actual passwords are stored in the file
master.passwd(5)
which is readable only by root.
This file should be altered only with the
vipw
program.
- Devices are named by driver, not by type. For example, there are
no eth* devices. It would be em0 for an Intel PRO/1000 Ethernet card, bge0
for a Broadcom BCM57xx or BCM590x Ethernet device, ral0 for a RaLink wireless
device, etc.
All of these drivers have man pages in section 4.
So, to find more information about the features supported by the
PRO/1000 driver, you can do
"man
4 em".
- OpenBSD/i386, amd64, and several other platforms use a "two layer"
disk partitioning system, where the first layer is the
fdisk, BIOS-visible partition, familiar
to most users of IBM compatible computers.
The second layer is the disklabel,
a traditional BSD partitioning system.
OpenBSD supports up to 15 disklabel partitions on a disk, all residing
within one fdisk partition.
This permits OpenBSD to coexist with other OSs, including other
Unix-like OSs.
OpenBSD must be one of the four "primary" partitions.
- Some other OSs encourage you to customize your kernel for your
machine.
OpenBSD users are encouraged to simply use
the standard GENERIC kernel provided and tested by the developers.
Users attempting to "customize" or "optimize" their kernel usually
cause far more problems than they solve, and will not be supported
by developers.
- OpenBSD works hard to maintain the license
policy and security of the project.
For this reason, some newer versions of some software which fail to meet
either the license or security goals of the project have not and may
never be integrated into OpenBSD.
Security and free licensing will never take a back seat to having the
biggest version number.
9.2 - Dual booting Linux and OpenBSD
Yes! It is possible!
Read INSTALL.linux.
9.3 - Converting your Linux (or other Sixth Edition-style) password file
to BSD-style
First, figure out if your Linux password file is shadowed or not. If it
is, install John the Ripper from
packages or ports (security/john) and
use the unshadow utility that comes with it to merge your
passwd and shadow files into one Sixth Edition-style file.
Using your Linux password file, we'll call it linux_passwd, you
need to add in ::0:0 between fields four and seven.
awk(1)
does this for you.
# cat linux_passwd | awk -F : '{printf("%s:%s:%s:%s::0:0:%s:%s:%s\n", \
> $1,$2,$3,$4,$5,$6,$7); }' > new_passwd
At this point, you want to edit the new_passwd file and remove
the root and other system entries that are already present in your
OpenBSD password file or aren't applicable with OpenBSD (all of them).
Also, make sure there are no duplicate usernames or user IDs between
new_passwd and your OpenBSD box's /etc/passwd. The
easiest way to do this is to start with a fresh /etc/passwd.
# cat new_passwd >> /etc/master.passwd
# pwd_mkdb -p /etc/master.passwd
The last step, pwd_mkdb is necessary to rebuild the
/etc/spwd.db and /etc/pwd.db files. It also creates a Sixth Edition-style
password file (minus encrypted passwords) at /etc/passwd for programs
which use it. OpenBSD uses a stronger encryption for passwords,
blowfish, which is very unlikely to be found on any system which uses
full Sixth Edition-style password files. To switch over to this stronger
encryption, simply have the users run 'passwd' and change their
password. The new password they enter will be encrypted with your
default setting (usually blowfish unless you've edited
/etc/login.conf). Or, as root, you can run passwd
username.
9.4 - Running Linux binaries on OpenBSD
OpenBSD/i386 is able to run Linux binaries when the kernel is compiled
with the COMPAT_LINUX option and the runtime sysctl kern.emul.linux is
also set.
If you are using the GENERIC kernel (which you should be), COMPAT_LINUX
is already enabled, and you will just need to do:
# sysctl kern.emul.linux=1
For this to be done automatically each time the computer boots,
remove the # (comment) character at the beginning of the line
#kern.emul.linux=1 # enable running Linux binaries
in /etc/sysctl.conf, so that it reads
kern.emul.linux=1 # enable running Linux binaries
and reboot your system to have it take effect.
To run any Linux binaries that are not statically linked (most of them),
you need to follow the instructions on the
compat_linux(8)
manual page.
A simple way to get most of the useful Linux libraries is
to install the fedora/base package from your nearest FTP mirror.
To find out more about the packages and ports system read
FAQ 15 - The OpenBSD Packages and Ports System.
To install the above mentioned package you would issue
# export PKG_PATH=ftp://your.ftp.mirror/pub/OpenBSD/5.4/packages/i386/
# pkg_add -i fedora_base
Note that
pkg_add(1)
will automatically execute sysctl to set kern.emul.linux to the correct
value upon adding this package.
However, it does not change /etc/sysctl.conf, so if you wish
Linux emulation to be enabled by default, you need to modify
kern.emul.linux there.
9.5 - Accessing your Linux files from OpenBSD
OpenBSD supports the EXT2FS file system.
For further information, see FAQ 14.
[FAQ Index]
[To Section 8 - General Questions]
[To Section 10 - System Management]