從傳統觀點來說,操作系統不得不為它們自己開發軟件,而且很多的軟件只能運行在它們被指定的平台上。許多人為某些平台編制了一些“業務交換軟件”,使得一些軟件也能在其它操作系統中運行,雖然有些潛在的問題存在。通過使用ABI,openBSD能讓為某些操作系統開發的軟件在自己的系統中運行。這通常是用來運行為Linux和FreeBSD設計的軟件。
ABI((Application Binary Interface)是核心的一部分,它用於為軟件提供服務--這包括聲卡訪問、讀取文件、屏幕輸出的--這些軟件運行所需的一切。對軟件來說,ABI就是操作系統。依靠你的系統中對別的系統ABI的支持,你能夠使得軟件像運行在它本來的系統中一樣運行。
openBSD中包括了支持運行Linux、FreeBSD、SVR4、SCO的ABI的模塊。當你嘗試運行Linux的軟件時,核心能識別出它,並把這個軟件教給響應的ABI來處理。
ABI的一大限制是:它只能處理與核心特征相關的問題,而不能擺脫硬件的限制。軟件只能運行在與編譯時所處的體系結構相同的環境中。你在i386版的openBSD中,運行為i368版的Solaris 2.6編譯的軟件,但是你不能在i386版的openBSD上,運行Sparc版的Solaris中的軟件。
當然,軟件不止對核心有依賴。軟件還需要使用動態鏈接庫。OpenBSD對Linux(/usr/ports/emulators/redhat)還有FreeBSD(/usr/ports/emulators/freebsd_lib)提供了動態鏈接庫。因為BSD/OS、SVR4、還有SCO都是專利操作系統,openBSD不太容易為它們的共享庫提供ports。你必須從響應的操作系統上獲取鏈接庫。
在大多數情況下,Linux和FreeBSD的ABI能“正確的運行”,而且對於依賴它們的ports來說也足夠可靠。例如:很少人使用Linux Netscape port,(它也能在openBSD上運行)。如果你正確的安裝了共享庫(shared libraries),那麼使用ABI不需要配置。如果你使用ports安裝了軟件,你甚至可能已經不知不覺的使用了Linux mode。
依靠openBSD自身的軟件和外來ABI的支持,openBSD能夠廣泛的支持許多軟件packages。openBSD也包括了許多基本的UNIX軟件,大它們多數都通過/etc中的文件進行配置。