当前位置: 首页 > news >正文

为何投奔BSD

选择BSD是朋友推荐的,他是个老BSDer,在这之前,我只是听说过,却没有实际使用过。在使用BSD以前,我一直用Linux,在我开始用Linux的时候,还不存在什么fedora,中关村的颐宾楼一层还在卖饺子。但自从接触到了BSD,并使用了一个月之后,就坚定的转投了BSD阵营。

如果不是因为那场恼人UNIX官司,也许服务器操作系统的历史就会被改写了。这也造成了BSD不为大多数人所知并采用的历史原因之一。那么,我说说转投BSD的诸多理由。至于BSD的由来,就不说了,网上一大堆维基百科。

一、TCP/IP协议最早是在BSD系统上实现的,因此在这层协议上,BSD有天生的优势。仅仅这一点,就足够我抛弃Linux了。BSD是如此的高效和安全,以至于交换机和路由器防火墙的操作系统都是用BSD系统写的。最典型的代表就是Cisco,Cisco的IOS基本都是基于BSD开发。如果熟悉Cisco的操作,进到BSD的loader prompt就一定不会陌生。基于这一点,BSD也支持更多的路由协议,RIP?OSPF?BGP?不在话下。

二、专业的维护,相比于Linux的松散,BSD相对中央集权一些。并且BSD只有三个发行版,NetBSD,FreeBSD和OpenBSD,根据不同的需要选择不同的版本。世界上不存在什么RedBSD,SuseBSD或者ArchBSD,TurboBSD之类的东西。几乎所有常用的软件都可以在ports下简单方便的安装,而且,相比于Linux安装二进制的方式,ports的源码编译方式要更简单安全。你需要做的,只是进到目录里make install clean。其他的,由系统完成。相比来说,yum简直就是系统管理员的噩梦。依赖关系糟糕透顶,软件包里充满bug。

三、网络安全,目前UNIX服务器采用最多的登录方式是啥?telnet?那是30年前。没用过的人都知道是SSH登录。但是,有多少人知道,SSH是OpenBSD开发的?如今服务器上应用最广泛的连接管理接口是BSD上开发并移植的。OpenBSD是如此的执着于安全,以至于被***破解大赛所禁止使用。谁会认为经过移植的东西会比原作者写的更好?相比于iptables复杂冗长的参数行,ipfw更贴近人类的语言。比如,禁止80端口访问:
iptables:
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 80 -j drop
ipfw:
ipfw add 10001 deny tcp from IP to IP 80

四、血统,其实这不能算一个选择BSD的技术理由,但BSD实在太迷人了。不得不提及了。BSD应该算是正统UNIX的后裔,那场版权官司毁了一切UNIX,而现在,UNIX只是一种标志了。后继者们都无法使用UNIX的商标,包括BSD。但与Linux的完全自创模仿不同,BSD是真正UNIX思想的继承者之一。而且BSD比Linux更加自由,你可以使用它的代码,并无需公开你修改后的代码。现如今,BSD的开发者们继续在世界各地创造奇迹。Mac OS就是其中之一。苹果操作系统的核心开发者之一就是以前BSD的开发者。整个操作系统包含3个主要部分:Darwin,FreeBSD,Mach,这也包括苹果手机的操作系统。Debian,已经推出包含BSD内核的发布版。Gentoo,emerge与ports一脉相承,开发者也是BSD社区里出来的。

以上就是我选择BSD的主要理由。高效,安全。最近可能要发布9.0了,默认将使用ZFS作为文件系统,拭目以待。

相关文章:

  • 如何查看linux系统安装时间
  • Win XP多用户管理-单机多用户+网络多用户
  • github廖雪峰git
  • sql笔试
  • 一起谈.NET技术,在Mono 2.8上部署ASP.NET MVC 2
  • 设计模式的征途—15.观察者(Observer)模式
  • 一起谈.NET技术,走向ASP.NET架构设计——第三章:分层设计,初涉架构(中篇)...
  • 1111
  • Prototype
  • spikecoding : Code to losslessly store audio using spike coding.
  • Training: Get Sourced
  • Theory
  • Linux内核学习笔记3——分段机制和分页机制
  • CTreeCtrl控件风格设置
  • 【2018南京】 Tournament (dp + 决策单调性 + wqs 二分)
  • JavaScript 如何正确处理 Unicode 编码问题!
  • 【Leetcode】104. 二叉树的最大深度
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • angular2开源库收集
  • CODING 缺陷管理功能正式开始公测
  • happypack两次报错的问题
  • javascript从右向左截取指定位数字符的3种方法
  • JSDuck 与 AngularJS 融合技巧
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • Rancher如何对接Ceph-RBD块存储
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 离散点最小(凸)包围边界查找
  • 前端技术周刊 2019-01-14:客户端存储
  • 无服务器化是企业 IT 架构的未来吗?
  • 用Python写一份独特的元宵节祝福
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (十)c52学习之旅-定时器实验
  • (转) ns2/nam与nam实现相关的文件
  • (转)iOS字体
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)VC++中ondraw在什么时候调用的
  • (转)菜鸟学数据库(三)——存储过程
  • (转)创业家杂志:UCWEB天使第一步
  • .NET Framework .NET Core与 .NET 的区别
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .stream().map与.stream().flatMap的使用
  • 。Net下Windows服务程序开发疑惑
  • [ C++ ] STL---仿函数与priority_queue
  • [ 数据结构 - C++] AVL树原理及实现
  • [17]JAVAEE-HTTP协议
  • [C#] 如何调用Python脚本程序
  • [CareerCup] 13.1 Print Last K Lines 打印最后K行
  • [CTF]2022美团CTF WEB WP
  • [Erlang 0129] Erlang 杂记 VI 2014年10月28日
  • [hdu 3652] B-number