Barebox介绍

从裸机上电开始启动计算机的过程听起来是相当复杂的。在PC的世界里,BIOS统治这个领域已经几十年了。不过,哲学上讲任何世界都是从出生,到繁荣,再后到死亡的过程。BIOS的寿命也即将迎来终结。BIOS的掘墓者即是EFI。对于MAC用户来说,EFI的使用已经有好长一段时间了。而在嵌入式Linux的世界里,u-boot则在长时间里扮演着老大哥的角色。

U-boot,或者来自DENX的das U-boot提供了非常丰富的功能。如:网络,脚本,支持FLASH(这里的flash是存储方面的flash,而不是adobe的那个flash)。一般的嵌入式系统工程序师需要的工具,都提供好了。

还是那句话,对于万事万物,都是生生死死的过程啊。u-boot的功能越来越强大。催生了新的事物的诞生。它的名字就是:Barebox。

Barebox最开始被称之为:u-boot-v2,它是一个像u-boot一样野心勃勃的bootloader。不过Barebox更有Linux的味道一些。它的发展抛弃了u-boot而越来越像Linux。它有文件系统,有基本的shell,甚至还有与Linux近似的驱动模块。

Barebox的另一个创新即是,bootloader可以被构建成一个用户空间的应用程序。这样的好处是显而易近的,你可以更方便的开方和调试Barebox。

说了这么多,看看Barebox是个什么样子呢?

uboot:/

uboot:/ ls
. .. dev env
 

和Linux一样,dev目录夹下面放了系统的设备文件。比如,mem设备文件描述了计算机的内存。

再回到u-boot,它有一个特殊的命令:md。md命令可以查看内存的内容。对于Barebox,提供了同样的工具。不过这个工具是以一种POSIX的方式实现的:打开/dev/mem设备,lseek移动文件指针,read读出文件内容。这样的实现方式不仅仅提升了代码结构,它还使得md命令可以不需修改就应用到其它设备上,比如flash存诸器。

如果你想测试一下Barebox到底如何。你可以有两种方法。

  • 第一:你可以下载Barebox的沙盒功能即把它构建成一个Linux的用户空间的应用。来自Barebox官方的解释是:

Sandbox:
If you develop features for Barebox, you can use the 'sandbox' target which compiles Barebox as a POSIX application in the Linux userspace: it can be started like a normal command and even has network access (tun/tap). Files from the local filesytem can be used to simulate devices.   如果你要为Barebox开发功能,你可以使用'沙盒'。这种方式把Barebox构建成一个Linux的用户空间程序。它像一般的命令一样,而且还有网络功能。来自文件系统的文件可以被用来模拟设备。

  • 第二:不说你也知道,把Barebox安装到真真正正的硬件上吧!对于我,我就尝试过在PC机的一块旧式的主板上安装Barebox。 

最后,Barebox的官方网站是: http://barebox.org/

copyright ykyi.net

在嵌入式系统部署虚拟化的八大理由

在服务器和桌面上部署虚拟化已经越来越流行。但是大多数一定没有想过在嵌入式环境下部署虚拟化。

Hypervisor(又被称之为虚拟机管理程序virtual machine monitor)如今已经在这颗星球上所有的数据中心遍地开花。因为它给数据中心带来了节省硬件,节省能源的费用,还降低了管理的成本。事实上,从兆兆级的路由器到富媒体的机顶盒,再到手机等等嵌入式系统,它们同样能从虚拟化中受益。 zausiu’s blog http://ykyi.net

因为嵌入式系统的资源非常有限。它们还通常是定制的系统,软硬件紧密结合在一起。初看来,在嵌入式设备中部署虚拟化显得过于隆重。但下文告诉你在嵌入式设备中部署虚拟化的八大理由。

1. 更坚固

定制的硬件是非常昂贵的,如果把多种物理设备集成到一起就能降低成本。集成在一起当然比分布式的环境要简单得多。如果所有的虚拟机运行在相同的服务机上,划分网络的风险就不存在了,硬件故障也有了‘原子性’(hardware failures are atomic),而且在虚拟化环境下已经有非常成熟的解决方案处理硬件故障,这样的故障通常会让没有部署虚拟化的系统崩溃。

2. 更安全

试想,如果一个部署了java虚拟机的手机系统把java stack和通讯栈运行在两个虚拟机上。那么即使应用程序管理部分被攻破了,也不会危险到通迅栈。对于恶意代码,虚拟机环境是一个大沙箱。

3. 更可靠

通过虚拟化可以把特权代码和一般代码分开,能够阻止和减少整个设备的故障率。

4. 易于管理和开发

即使是运行实行操作系统,你不要因为那些非常有限的管理功能就心满意足了。一个运行windows的负责管理功能的虚拟机能够运行图形介面的程序,方便了用户也方便了开发者。

5. 硬件虚拟化

VMM相当适合硬件虚拟化。它连同虚拟控制器一起动态的切分或者合并物理资源。对于大型的,分布式的嵌入式设备如路由器则可以在部署了虚拟化的情况下自由的切分或合并。Zausiu’s blog http://ykyi.net

6. 效率

单核世界已经快速离我们远去,即将消失在历史长河中。而大多数嵌入式软件没有充分利用多核或多处理机的优势。那么,虚拟化帮助系统充分利用嵌入式系统的性能。

7. 新特性

一些振奋人心的超酷特性,如:快照,实时迁移(live migration),External Hibernation能够加强嵌入式设备的可用性,且方便可级。

8. 法律问题

从商用专有代码连接GPL代码会被迫遵守GPL协议。而把GPL代码运行在虚拟机上就可以规僻GPL协议的约束了。

这篇文章译自: http://www.linuxplanet.com/linuxplanet/reports/6490/1 这八大理由中的很多条目我觉得没有说服力!