與任何其他的 UNIX 派生系統相比,由于 NetBSD 的巧妙設計決策和對可移植代碼的不懈追求,使得它可以運行于更多種類的硬件平臺之上。無論正在將操作系統移植到專用的嵌入式系統,或者正在尋找具有穩定性和跨實驗室硬件平臺的兼容性的系統,相對于 Linux 和 GNU 公共許可 (GPL) 而言,NetBSD 及其開放許可都是一種頗具吸引力的選擇。
NetBSD Web 站點上列出的一個特性是,該操作系統根本不用做廣告。不做廣告沒有關系,但針對該操作系統中一些常常被忽視的方面給出相應的描述,當然也沒有什么壞處。
NetBSD 具有一種重要的體系結構,這種體系結構得到了廣泛的認可,并且很少在 Berkeley Software Distribution (BSD) 領域之外被談及。該系統經過構思良好的設計,這提供了廣泛的硬件支持、占用空間小、可靠性和安全性等特性。NetBSD 的獨一無二的特性包括用于處理設備驅動程序的新的范例和其他重要的創新。
這些設計決策和對源代碼的不懈追求(它不僅能夠工作,并且能夠正確地工作)幫助 NetBSD 成為了現有的、最具可移植性的 UNIX® 派生系統。它特別適合于嵌入式系統,但是您也應該考慮將其作為更多的主流服務器、臺式計算機和便攜式計算機的操作系統。
三種可免費獲得的、主要的 BSD 派生操作系統分別是:NetBSD、FreeBSD 和 OpenBSD。所有這三種系統都與原始的 BSD UNIX 分發版有關,而 BSD UNIX 則可以追溯到 20 世紀 70 年代。在 20 世紀 90 年代早期,幾乎同時出現了 Linux®,它成為 UNIX 真正的競爭者,并形成了創建免費的基于 BSD 的類 UNIX 操作系統的不同路線。所有這三種 BSD 版本都具有自己的長處,FreeBSD 擁有最廣泛的用戶基礎,OpenBSD 則在安全性方面占優勢,而 NetBSD 以可移植性著稱。
您可以將 NetBSD 移植到幾乎所有具有處理器的計算機上,所以就有了這樣的格言,“它當然可以運行于 NetBSD”。NetBSD 支持 50 多種平臺,從舊式的 68K 和每秒百萬條指令 (MIPS) 系統,到來自 Advanced Micro Devices, Inc. (AMD) 和 Intel® 的最新 x86_64 處理器。而且可能更重要的是,對 NetBSD 進行了相應的移植,使其可用于各種各樣的嵌入式系統。
在 21 世紀的日常生活中,嵌入式系統扮演了重要的角色,其銷售數量遠遠超過了傳統的計算設備,如臺式計算機、便攜式計算機和服務器。從移動電話到汽車,再到有線電視盒,在生活中的各個方面都更有可能使用到計算機。通常,這些設備中的操作系統和軟件與設計過程中傳統的工程決策一樣重要。
NetBSD 嵌入式系統的示例也很多,從有用的設備(路由器和交換機)到不同尋常的設備(NetBSD 烤面包機)。嵌入式系統中常用的體系結構的種類要遠遠超過傳統計算機的選擇,所以可移植性是至關重要的。
NetBSD 的占用空間小、易于移植和 BSD 許可都使得它成為嵌入式系統的最佳選擇。占用空間小是非常重要的,因為大多數嵌入式系統僅具有很小的內存容量。因此,操作系統必須盡可能占用少的空間。易于移植可以顯著地減少將新產品推向市場的開發時間,這是在競爭中保持領先優勢的關鍵。BSD 許可允許各個公司基于 NetBSD 構建自己的商業產品,并在保持源代碼專有的同時,銷售其商業產品以獲得利潤。
當一個組織為其商業產品選擇 NetBSD(或其他的 BSD 變種)而不是 Linux 時,BSD 許可是公司決策制定過程中的一個非常重要的因素。Linux 內核和大多數 Linux 軟件的發行都符合通用公共許可 (GPL),該許可需要發行所有經過修改的源代碼。與此相反,BSD 許可允許公司修改并銷售 NetBSD 代碼,而無需發行經過修改的源代碼,從而允許公司在利用開放源碼的軟件作為其產品基礎時,最大限度地保護其知識產權。
近些年來,大量的公司因為不恰當地使用 GPL 軟件而受到控告。選擇符合 BSD 許可而發行的軟件,為商業產品提供了更大的操作空間,這是 NetBSD 適合于嵌入式系統的另一個原因。例如,如果公司 A 打算在運行 Intel XScale® 技術的新型智能電話中使用 NetBSD,那么該公司可以為 Evolution-Data Optimized (EV-DO) 設備添加內核支持。在 BSD 許可下,該公司可以保持其代碼的所有權,所以公司 B 將無法在其新的電話中使用相同的代碼。如果公司 A 決定使用 Linux 內核,那么在 GPL 許可下,他們必須發布對內核進行的任何修改的源代碼。
注意:要查找關于構建小型 NetBSD 內核作為嵌入式系統的起點的信息,可參閱參考資料部分中的 BSD 新聞稿。
任何具有一定工作經驗的系統管理員都明白,硬件的更改是不可避免的。您經??梢钥吹竭@樣的信息技術 (IT) 體系結構,它們曾經風靡一時,但卻沒能經受住時間的考驗,這可能是出于技術的或商業的原因。遺憾的是,當許多這樣的系統消失時,其中的操作系統也隨之消失。運行具有高度可移植性的操作系統(如 NetBSD)的重要優點是跨平臺的一致性。如果系統管理員可以確信,某種操作系統可以成功地運行于實驗室中最舊的工作站和最新式的服務器,那么管理員的工作將變得更加簡單。這種簡化過程可以稱為通過同種軟件實現硬件的兼容性。通過在兩個平臺上使用 Microsoft Office 程序,可以在運行 Microsoft® Windows® 和 Mac OS X 的計算機之間共享效率文檔,這就是一個類似的示例。在操作系統級別上進行共享,是相同概念的高級擴展,它適合于開發人員而不是普通用戶。
有些系統管理員可能會爭辯說,他們一直并將始終使用 x86 平臺。所以,他們為什么應該對具有移植性的操作系統感興趣呢?這里有兩個答案(其中一個包含了相應的問題):
如果意識到不需要將軟件和控制系統移植到新的操作系統是實實在在的優點,則可以節省投資并獲得內心的寧靜。通過這些優點,系統管理員和程序員可以重點關注更深入的問題,而不是僅關注如何與新的操作系統保持一致。
NetBSD 內核的每個部分都經過仔細的分析,并充分考慮到了靈巧的設計和可移植性。下面簡要地介紹 NetBSD 內核中的一些設計要素。
NetBSD 的與計算機無關的驅動程序框架是一種處理設備驅動程序的獨特方法,并且是簡單而快速的移植的關鍵。在大多數操作系統中,設備驅動程序特定于相應的硬件(顯卡、網卡 (NIC),等等)、總線(如互連外圍設備 (PCI)、工業標準體系結構 (ISA)、通用串行總線 (USB))和平臺(i386、68k、PowerPC®,等等)。在 NetBSD 中,編寫設備驅動程序的目標是跨多總線和多平臺,從而允許開發人員可以通過包含附加設備驅動程序代碼來為新的設置添加兼容性,而不用重新編寫全新的驅動程序。與傳統的操作系統設備驅動程序范例相比,這是一個巨大的改變,它可以幫助操作系統開發人員、系統管理員和組件供應商克服最大的障礙。
NetBSD 鼓勵可移植性和互操作性,它包括對許多不同的文件系統的支持。Berkeley 快速文件系統 (FFS) 是缺省選擇,它支持 32 位和 64 位的配置。NetBSD 支持的其他主要文件系統包括 Linux ext2、Windows NTFS 和 FAT32 文件系統。它還通過 Rockridge 和 Joliet 擴展支持標準的 CD 文件系統、國際標準組織 (ISO) 9660。
現在,便攜式計算機的廣泛使用以及以數字形式存儲的公司和個人信息越來越多,使得災難的發生成為可能。每隔幾個月,您就會在新聞標題中讀到這樣的故事,包含敏感數據的計算機、硬盤丟失了,失主可能是政府實驗室、信用卡公司或個人,他或她將其所有的金融信息存儲在個人計算機中,其中包括他們的身份證號。實際上,帳號、密碼和權限只能在遵守固定規則的操作系統環境中保護您的數據。比特數據畢竟是比特數據,可以將硬盤從一臺計算機中取出并放入到另一臺計算機中,這樣就可以很容易地讀取其中的數據,除非對數據進行了加密處理??梢酝ㄟ^各種方式來實現文件加密,但通常很少使用,因為這會加重系統管理員或用戶的工作負擔。大多數數據加密方法需要對在什么地方與什么時候對數據進行加密作出明確的決策、手動裝入和卸載加密的映像,并輸入相應的密碼。
NetBSD 使用加密設備驅動程序 (CGD) 通過虛擬設備實現加密的文件系統。CGD 位于操作系統中的其他部分和實際磁盤之間,CGD 可以作為連接到系統的其他磁盤設備,允許對安全存儲數據進行透明訪問。
注意:有關如何啟用 CGD 的信息,請參閱.netbsd.html#resources">參考資料部分的 NetBSD 指南。
NetBSD 對安全性非常重視,包含 CGD 僅僅是許多示例中的一個。如果說可移植性是 NetBSD 社區最重要的規則,那么安全性也非常重要。致力于編寫良好的代碼是極為重要的,包含代碼審核和后續的檢查過程。其次,如 OpenBSD,缺省安裝包括最少的安裝包和配置。在服務器上安裝了 NetBSD 之后,系統管理員的第一件事情可能就是配置網絡并啟用安全 Shell (SSH),這也說明了缺省配置僅啟用了很少的內容。盡管有些新用戶可能認為這種方法給他們帶來了一些困難,但對于任何類 UNIX 操作系統來說,學習如何控制和配置服務是非常重要的環節,并且該學習過程不會需要很長的時間??焖俚亻喿x官方的 NetBSD 指南將有助于新用戶掌握這些內容。
注意:有關 gna.org 中為 NetBSD 的新用戶提供文檔說明的附加鏈接,請參閱參考資料部分。
NetBSD 中的應用程序支持非常廣泛,而且各式各樣。類 UNIX 操作系統的管理員所熟悉的大多數標準軟件都是在 NetBSD 中可用的、以及可以通過 NetBSD Packages Collection (pkgsrc) 輕松安裝的,其中包括 5000 多個包。如果無法在 pkgsrc 中找到所需的內容,您可以通過 NetBSD 中內置的二進制模擬器來運行,模擬器中最著名的是運行于 i386 的 Linux 模擬器。
然而,NetBSD 的缺省安裝所占用的空間非常小。不僅關閉了大多數的服務,而且只安裝了很少的包?;A分發版中包含了內核、編譯器、網絡服務、XFree 和標準的 UNIX 實用工具。要安裝那些在類 UNIX 操作系統中找到的包(如 MySQL 或 PostgreSQL),可以使用 pkg_add
命令提取和安裝軟件(從本地磁盤、CD/DVD,或通過網絡)。如果您正在安裝 x86 系統,那么可以使用 i386pkg-3.0.iso CD 中的 /cdrom/packages/i386/All/。通過 pkg_add
命令安裝的包位于 /usr/pkg/,不會和 NetBSD 的核心組件發生沖突。
對于非本機的應用程序,NetBSD 可以透明地運行來自各種類 UNIX 操作系統的二進制代碼,并且不會對性能造成很大的影響。盡管已經將大多數流行的開放源碼應用程序移植到了 NetBSD,但是有些商業應用程序(如 Matlab 和 Mathematica)無法由用戶團體進行移植,因為這些代碼是專有的。在這種情況下,二進制模擬對于 NetBSD 用戶來說非常重要。模擬過程進行了簡化,因為這些二進制代碼對于該系統的基礎體系結構而言是本地的。不要將二進制模擬和硬件模擬的較少使用 CPU 的進程弄混,這里沒有使用到后者。二進制模擬通常適合于在產品環境中運行處理器密集型應用程序。
NetBSD 細致入微的、編寫良好的代碼和高度的可移植性使得它成為許多部署方案的最佳選擇。遺憾的是,許多開發人員和系統管理員并不十分熟悉 BSD 派生系統,從而錯過了重要的機會。要進行正確的決策,最重要的是做到博識。BSD 可能是或者不是您合適的選擇,但是不要僅因為您對其他的系統比較熟悉而忽視它。使用本文作為起點,讓您自己去熟悉 NetBSD,然后嘗試使用該分發版,至少您可以學習如何去使用它。