深入解读Linux与Android的相互关系 12/12/2011
大家都知道Android是基于Linux内核的操作系统,也曾经和Linux基金会因为内核问题产生过分歧,本文将开始对Android的内核进行剖析,主要介绍Android和Linux之间的关系,后续还会讲到Android系统在Linux系统之上扩展的部分功能和驱动。 虽然Android基于Linux内核,但是它与Linux之间还是有很大的差别,比如Android在Linux内核的基础上添加了自己所特有的驱动程序。下面我们就来分析一下它们之间究竟有什么关系? 一、Android为什么会选择Linux 成熟的操作系统有很多,但是Android为什么选择采用Linux内核呢?这就与Linux的一些特性有关了,比如: 1、强大的内存管理和进程管理方案 2、基于权限的安全模式 3、支持共享库 4、经过认证的驱动模型 5、Linux本身就是开源项目 更多关于上述特性的信息可以参考Linux 2.6版内核的官方文档,这便于我们在后面的学习中更好地理解Android所特有的功能特性。接下来分析Android与Linux的关系。 二、Android不是Linux 看到这个标题大家可能会有些迷惑,前面不是一直说Android是基于Linux内核的吗,怎么现在又不是Linux了?迷惑也是正常的,请先看下面几个要点,然后我们将对每一个要点进行分析,看完后你就会觉得Android不是Linux了。 因为它没有本地窗口系统,没有glibc的支持,而且并不包括一整套标准的Linux使用程序,同时增强了Linux以支持其特有的驱动。 1.它没有本地窗口系统 什么是本地窗口系统呢?本地窗口系统是指GNU/Linux上的X窗口系统,或者Mac OX X的Quartz等。不同的操作系统的窗口系统可能不一样,Android并没有使用(也不需要使用)Linux的X窗口系统,这是Android不是Linux的一个基本原因。 2.它没有glibc支持 由于Android最初用于一些便携的移动设备上,所以,可能出于效率等方面的考虑,Android并没有采用glibc作为C库,而是Google自己开发了一套Bionic Libc来代替glibc。 3.它并不包括一整套标准的Linux使用程序 Android并没有完全照搬Liunx系统的内核,除了修正部分Liunx的Bug之外,还增加了不少内容,比如:它基于ARM构架增加的Gold-Fish平台,以及yaffs2 FLASH文件系统等。 4.Android专有的驱动程序 除了上面这些不同点之外,Android还对Linux设备驱动进行了增强,主要如下所示。 1)Android Binder 基于OpenBinder框架的一个驱动,用于提供 Android平台的进程间通信(InterProcess Communication,IPC)功能。源代码位于drivers/staging/android/binder.c。 2)Android电源管理(PM) 一个基于标准Linux电源管理系统的轻量级Android电源管理驱动,针对嵌入式设备做了很多优化。源代码位于: kernel/power/earlysuspend.c kernel/power/consoleearlysuspend.c kernel/power/fbearlysuspend.c kernel/power/wakelock.c kernel/power/userwakelock.c 3)低内存管理器(Low Memory Killer) 比Linux的标准的OOM(Out Of Memory)机制更加灵活,它可以根据需要杀死进程以释放需要的内存。源代码位于 drivers/staging/ android/lowmemorykiller.c。 4)匿名共享内存(Ashmem) 为进程间提供大块共享内存,同时为内核提供回收和管理这个内存的机制。源代码位于mm/ashmem.c。 5)Android PMEM(Physical) PMEM用于向用户空间提供连续的物理内存区域,DSP和某些设备只能工作在连续的物理内存上。源代码位于drivers/misc/pmem.c。 6)Android Logger 一个轻量级的日志设备,用于抓取Android系统的各种日志。源代码位于drivers/staging/android/logger.c。 7)Android Alarm 提供了一个定时器,用于把设备从睡眠状态唤醒,同时它还提供了一个即使在设备睡眠时也会运行的时钟基准。源代码位于drivers/rtc/alarm.c。 8)USB Gadget驱动 一个基于标准 Linux USB gadget驱动框架的设备驱动,Android的USB驱动是基于gaeget框架的。源代码位于drivers/usb/gadget/。 9)Android Ram Console 为了提供调试功能,Android允许将调试日志信息写入一个被称为RAM Console的设备里,它是一个基于RAM的Buffer。源代码位于drivers/staging/android / ram_console.c。 10)Android timed device 提供了对设备进行定时控制的功能,目前支持vibrator和LED设备。源代码位于drivers/staging/android /timed_output.c(timed_gpio.c)。 11)Yaffs2 文件系统 Android采用Yaffs2作为MTD nand flash文件系统,源代码位于fs/yaffs2/目录下。Yaffs2是一个快速稳定的应用于NAND和NOR Flash的跨平台的嵌入式设备文件系统,同其他Flash文件系统相比,Yaffs2能使用更小的内存来保存其运行状态,因此它占用内存小。Yaffs2的垃圾回收非常简单而且快速,因此能表现出更好的性能。Yaffs2在大容量的NAND Flash上的性能表现尤为突出,非常适合大容量的Flash存储。 上面这些要点足以说明Android不是Linux。本书的主要内容将围绕Android的这些特有的部分展开,我们的讲解会尽量通俗易懂,但还是建议大家先复习一下Linux内核的基本知识。在具体学习之前,我们还是先来总体浏览一下Android对Linux内核进行了哪些改动,在移植时就需要对这些改动加以调整。 Add Comment Ubuntu屡遭挑衅:近期新闻大盘点 12/05/2011
Linux Mint 12的新闻最近炒的沸沸扬扬,这是一个基于 Ubuntu 的发行版,继承了 Ubuntu 的众多优点。用户体现不错,最近风头一时无两!反观 Ubuntu,在推出Ubuntu11.10之后沉寂了一段时间,而且负面的消息不少,诸如“焦点热议:Ubuntu的人气在下降?”,“Linux桌面系统排行榜出炉:Ubuntu落至第四”,作为Ubuntu的一个拥趸,我觉得应该给大家盘点一下Ubuntu最近发生的消息,让大家更好的了解 Ubuntu的近况! 首先来大致的说一下最近的发生的事情,然后再一一分解!Ubuntu 11.10加速企业安装Hadoop,预计2014年进入移动操作系统领域,Ubuntu11.10下Xen、KVM和VirtualBox比拼,Ubuntu软件中心最受好评的20款软件推荐以及年度盛典:Ubuntu中的奥斯卡TOP10揭晓,焦点热议:Ubuntu的人气在下降?这个焦点话题当然也是需要讨论下滴! Ubuntu即将进入移动操作系统领域,不过移动设备预计将在2014年推出,大家可能会感觉到很无奈,这起码还得三年的时间,干嘛要这么早放出消息吊我们的胃口呢?创建一个新的移动平台并不仅仅要拉拢开发者(Ubuntu有自己的一批开发者),但更重要的是如何与设备制造商和移动运营商进行合作,这当中涉及的利害关系非常复杂。虽然为时尚早,不过还是希望Ubuntu届时会有上佳表现吧……我们继续慢慢等,先上张图瞧瞧。 Ubuntu 11.10开始支持Juju(先前代号为Ensemble)预案,该预案提供30多种云端应用程序的自动部署功能,支持MySQL、Tomcat 6与Hadoop等,协助企业加快大规模部署云端应用的程序,加速企业安装Hadoop。Ubuntu Linux操作系统的开发商Canonicla宣布将与戴尔合作在中国超过百家新的零售店出售预装了Ubuntu的电脑,此外Canonical公司宣布了一个新的合作伙伴Zentyal 公司,两者将基于Ubuntu Advantage进行业务合作。Ubuntu的商业运作进行的挺不错。 同样在Ubuntu 11.10平台上,国外有人进行了对VirtualBox、Xen、和KVM不同Linux虚拟化进行对比测试,主要进行了C-Ray多线程运算测试、 POV-Ray渲染测试、全局照明渲染测试、传统DES密码测试、MD5密码测试、Blowfish加密测试等十几项测试,有兴趣的同学可以通过本文结尾处的链接进入该专题详细研究,资料非常详细! Ubuntu 11.10引入了全新的LightDM登录界面,在各种Linux发行版中堪称最漂亮的,但是用户依然还不满足,于是Ubuntu 12.04就准备将Chameleonic(变色龙)主题引入到登录界面中来。当然最终情况如何还要看开发进度和用户反馈而定。Ubuntu 12.04作为一个LTS版本,将提供5年技术支持。其中最重要的考虑就是选择谁作为系统默认应用,Rhythmbox也许会成为默认音乐播放器,不过一切尚在讨论之中,这消息大家就当看着玩吧! 随着操作系统的发展,系统变得越来越庞大、臃肿,事实上这几乎是任何系统、软件的“必由之路”,就连Linux也不例外,比如接下来即将发行的 Ubuntu 12.04 LTS,它的默认目标容量将达到750MB常规的CD光盘将容不下它了。因此Ubuntu 12.04将告别CD光盘迈入DVD时代咯...... inux最早由Linus Benedict Torvalds在1991年开始编写。在这之前,Richard Stallman创建了Free Software Foundation(FSF)组织以及GNU项目,并不断的编写创建GNU程序(此类程序的许可方式均为GPL: General Public License)。在不断的有杰出的程序员和开发者加入到GNU组织中后,便造就了今天我们所看到的Linux,或称GNU/Linux。 Linux的发行版本可以大体分为两类,一类是商业公司维护的发行版本,一类是社区组织维护的发行版本,前者以著名的Redhat(RHEL)为代表,后者以Debian为代表。下面介绍一下各个发行版本的特点: Redhat,应该称为Redhat系列,包括RHEL(Redhat Enterprise Linux,也就是所谓的Redhat Advance Server,收费版本)、Fedora Core(由原来的Redhat桌面版本发展而来,免费版本)、CentOS(RHEL的社区克隆版本,免费)。Redhat应该说是在国内使用人群最多 的Linux版本,甚至有人将Redhat等同于Linux,而有些老鸟更是只用这一个版本的Linux。所以这个版本的特点就是使用人群数量大,资料非 常多,言下之意就是如果你有什么不明白的地方,很容易找到人来问,而且网上的一般Linux教程都是以Redhat为例来讲解的。Redhat系列的包管 理方式采用的是基于RPM包的YUM包管理方式,包分发方式是编译好的二进制文件。稳定性方面RHEL和CentOS的稳定性非常好,适合于服务器使用, 但是Fedora Core的稳定性较差,最好只用于桌面应用。 Debian,或者称Debian系列,包括Debian和Ubuntu等。Debian是社区类Linux的典范,是迄今为止最遵循GNU规范 的Linux系统。Debian最早由Ian Murdock于1993年创建,分为三个版本分支(branch): stable, testing 和 unstable。其中,unstable为最新的测试版本,其中包括最新的软件包,但是也有相对较多的bug,适合桌面用户。testing的版本都经 过unstable中的测试,相对较为稳定,也支持了不少新技术(比如SMP等)。而stable一般只用于服务器,上面的软件包大部分都比较过时,但是 稳定和安全性都非常的高。Debian最具特色的是apt-get / dpkg包管理方式,其实Redhat的YUM也是在模仿Debian的APT方式,但在二进制文件发行方式中,APT应该是最好的了。Debian的资 料也很丰富,有很多支持的社区,有问题求教也有地方可去:) Ubuntu严格来说不能算一个独立的发行版本,Ubuntu是基于Debian的unstable版本加强而来,可以这么说,Ubuntu就是 一个拥有Debian所有的优点,以及自己所加强的优点的近乎完美的 Linux桌面系统。根据选择的桌面系统不同,有三个版本可供选择,基于Gnome的Ubuntu,基于KDE的Kubuntu以及基于Xfc的 Xubuntu。特点是界面非常友好,容易上手,对硬件的支持非常全面,是最适合做桌面系统的Linux发行版本。 Gentoo,伟大的Gentoo是Linux世界最年轻的发行版本,正因为年轻,所以能吸取在她之前的所有发行版本的优点,这也是Gentoo 被称为最完美的Linux发行版本的原因之一。Gentoo最初由Daniel Robbins(FreeBSD的开发者之一)创建,首个稳定版本发布于2002年。由于开发者对FreeBSD的熟识,所以Gentoo拥有媲美 FreeBSD的广受美誉的ports系统 ——Portage包管理系统。不同于APT和YUM等二进制文件分发的包管理系统,Portage是基于源代码分发的,必须编译后才能运行,对于大型软 件而言比较慢,不过正因为所有软件都是在本地机器编译的,在经过各种定制的编译参数优化后,能将机器的硬件性能发挥到极致。Gentoo是所有Linux 发行版本里安装最复杂的,但是又是安装完成后最便于管理的版本,也是在相同硬件环境下运行最快的版本。 最后,介绍一下FreeBSD,需要强调的是:FreeBSD并不是一个Linux系统!但FreeBSD与Linux的用户群有相当一部分是重 合的,二者支持的硬件环境也比较一致,所采用的软件也比较类似,所以可以将FreeBSD视为一个Linux版本来比较。FreeBSD拥有两个分支: stable和current。顾名思义,stable是稳定版,而 current则是添加了新技术的测试版。FreeBSD采用Ports包管理系统,与Gentoo类似,基于源代码分发,必须在本地机器编后后才能运 行,但是Ports系统没有Portage系统使用简便,使用起来稍微复杂一些。FreeBSD的最大特点就是稳定和高效,是作为服务器操作系统的最佳选 择,但对硬件的支持没有Linux完备,所以并不适合作为桌面系统。 下面给为选择一个Linux发行版本犯愁的朋友一些建议: 如果你只是需要一个桌面系统,而且既不想使用盗版,又不想花大量的钱购买商业软件,那么你就需要一款适合桌面使用的Linux发行版本了,如果你 不想自己定制任何东西,不想在系统上浪费太多时间,那么很简单,你就根据自己的爱好在ubuntu、kubuntu以及xubuntu中选一款吧,三者的 区别仅仅是桌面程序的不一样。 如果你需要一个桌面系统,而且还想非常灵活的定制自己的Linux系统,想让自己的机器跑得更欢,不介意在Linux系统安装方面浪费一点时间,那么你的唯一选择就是Gentoo,尽情享受Gentoo带来的自由快感吧! 如果你需要的是一个服务器系统,而且你已经非常厌烦各种Linux的配置,只是想要一个比较稳定的服务器系统而已,那么你最好的选择就是CentOS了,安装完成后,经过简单的配置就能提供非常稳定的服务了。 如果你需要的是一个坚如磐石的非常稳定的服务器系统,那么你的唯一选择就是FreeBSD。 如果你需要一个稳定的服务器系统,而且想深入摸索一下Linux的各个方面的知识,想自己定制许多内容,那么我推荐你使用Gentoo。 简谈ubuntu之DIY发行版 11/21/2011
二十一世纪到了,每个人都强调自己的个性,于是一种叫做DIY的东西悄然兴起。 操作系统作为全人类智慧的结晶,自然DIY起来难度极大,因而DIY出一个操作系统成就感绝对比买宜家的东西的成就感大。 为了不至于从头开始编写一个操作系统,我们当然把采用现成的操作系统作为一个底线。 当然,我们可以通过LFS让我们爽到底,但是,能够做到LFS的人可真的是凤毛麟角。而且更重要的是LFS简直在挑战我的忍耐程度。 我的这篇文章,教大家如何DIY一个自己的ubuntu发行版。在非常节省时间的情况下,达到耍酷的目的。 就好比LFS一样,我们需要一个创作基地。我们首先建立一个变量。建立这个变量的好处很明显,即使你不用~/diy_ubuntu这个目录,一样可以照着这个文章继续做下去。 $ export WORK=~/diy_ubuntu $ mkdir -p $WORK 然后我们把光盘镜像文件挂到/mnt $ sudo mount -t iso9660 -o loop dapper-live-i386.iso /mnt $ cd $WORK 复制文件光盘文件 $ mkdir ubuntu-livecd $ cp -a /mnt/. ubuntu-livecd $ chmod -R u+w ubuntu-livecd $ sudo umount /mnt 由于光盘中包含了很多windows下面的自由软件,我们来把不必要的文件删除。当然你可以保留。 $ rm -rf $WORK/ubuntu-livecd/programs 把光盘中的压缩文件挂起来,这个样子以后你可以在$WORK/old目录中看到一个完整的linux操作系统的目录。 $ mkdir $WORK/old $ sudo mount -t squashfs -o loop,ro $WORK/ubuntu-livecd/casper/filesystem.squashfs $WORK/old 我们建立一个2GB大小的文件系统,然后把这个文件当作一个设备文件格式化,结果系统给出了一个警告,别理会它,选择是就是。 $ sudo dd if=/dev/zero of=$WORK/ubuntu-fs.ext2 bs=1M count=2147 $ sudo mke2fs $WORK/ubuntu-fs.ext2 然后我们把这个空文件系统挂起来。 $ mkdir $WORK/new $ sudo mount -o loop $WORK/ubuntu-fs.ext2 $WORK/new 复制linux操作系统的文件.由于我们事先得到的linux是压缩的,所以我们把它解压了。 $ sudo cp -a $WORK/old/. $WORK/new 当然现在$WORK/old就没有用处了。废掉它 $ sudo umount $WORK/old 我们首先进入刚才得到的那个操作系统 $ sudo cp /etc/resolv.conf $WORK/new/etc/ $ sudo mount -t proc -o bind /proc $WORK/new/proc $ sudo chroot $WORK/new /bin/bash 现在你就进入系统了,高喊linux for human beings,大炼ubuntu,想干什么就干什么。 # vi /etc/apt/sources.list #选择适合你的源 # apt-get update # apt-get dist-upgrade # apt-get install 你想装的软件 # apt-get clean .... #更多的配置 最后离开你的那个操作系统 # exit $ sudo umount $WORK/new/proc $ sudo rm $WORK/new/etc/resolv.conf 现在你已经回到了你的初始状态中 把manifest重新整一遍 $ sudo chroot $WORK/new dpkg-query -W --showformat='${Package} ${Version}\n' > $WORK/ubuntu-livecd/casper/filesystem.manifest 然后做一下“磁盘清理” $ sudo dd if=/dev/zero of=$WORK/new/dummyfile $ sudo rm $WORK/new/dummyfile 重新压缩系统 $ sudo rm $WORK/ubuntu-livecd/casper/filesystem.squashfs $ cd $WORK/new $ sudo mksquashfs . $WORK/ubuntu-livecd/casper/filesystem.squashfs 你的改动都保存了。现在把$WORK/new废掉 $ cd $WORK $ sudo umount $WORK/new 把文件的md5重新算一下 $ cd $WORK/ubuntu-livecd $ sudo find . -type f -print0 |xargs -0 md5sum |sudo tee md5sum.txt 建立光盘镜像,命令很长,忍受着点。 $ cd $WORK $ sudo mkisofs -o ubuntu-new.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -r -V "My Cool Ubuntu Live CD" -cache-inodes -J -l ubuntu-livecd 然后你就可以用iso把光盘烧了 Linux 系统的市场占有率已突破 5% 关口 11/21/2011
根据著名的 Web 开发门户网站 W3schools 的一份系统平台统计报告 ( OS Platform Statistics ),2010 年 11 月份 Linux 系统的市场占有率已突破 5% 关口,比上月增长了 0.3% 。另外, WinXP 依旧是使用最多的操作系统,而整个 Windows 家庭占据了 90% 的市场份额。 从下面图表中我们可以看出,虽然 Linux 的市场占有率与 Windows 相比有着超大的距离,但它从今年一月开始就一直处于增长状态。另外, Mac 的占有率始终徘徊在6.x%~7.x% 之间。 很多人认为会造成一定的影响,有助于提升 Linux 的市场占有率。首先, Chrome OS 本身就基于 Linux 开发,所以使用 Chrome OS 的人越多, 同时 Linux 市场占有率也就会随之增高。 其次,个人认为,Google Chorme OS 推出的实质是加速推动应用程序 Web 化,用流行的语言来说就是云端化。同时也对改变用户使用习惯可能会产生比较大的推动作用,这也意味着应用程序会进一步脱离平台依赖,使用什么样的平台已不 再重要,所以相信今后会有更多的用户会选择免费又安全的 Linux 平台。 Linux 上的云计算 11/03/2011
最近,没有哪家技术性网站不提到所谓的云计算的。云计算其实就是以服务的形式提供计算资源(计算机和存储)。这又涉及到以一种简单、透明的方式动态地将服务延伸到更多的计算机和存储的能力。所有这些都类似于效用计算(utility computing)背后的思想。在效用计算中,计算资源被看作一种计量服务,就像更传统的公共设施(例如水或电)一样。它们的区别不在于这些思想背后的目标,而在于组合到一起、使这些思想成为现实的现有技术。 云计算背后最重要的概念之一就是可伸缩性,而实现它的关键则是虚拟化(virtualization)。虚拟化在一台共享计算机上聚集多个操作系统和应用程序,以便更好地利用服务器。虚拟化还允许在线迁移,因此,当一个服务器超载时,可以将一个操作系统的一个实例(以及它的应用程序)迁移到一个新的、不那么繁忙的服务器上。 IBM 和 Amazon Web Services 云计算提供一种在虚拟环境中开发应用程序的方法,该环境的计算能力、带宽、存储、安全和可靠性都不成问题 — 您不需要在自己的系统上安装软件。在虚拟云计算环境中,可以开发、部署和管理应用程序,您仅需支付所使用的时间和容量,但这使您能够根据不断变化的业务需求调整应用程序。 IBM 和 Amazon Web Services 进行合作,让您能够在 Amazon Elastic Compute Cloud (EC2) 虚拟环境中使用 IBM 软件产品。我们在 EC2 上提供的软件产品包括:
要获得更多关于云计算的资源,请参见 developerWorks 上的 Cloud Computing for Developers space。 从外部看,云计算只是将计算和存储资源从企业迁出,并迁入到云中。用户定义资源需求(例如计算和广域网、带宽需求),云提供者在它的基础设施中虚拟地装配这些组件,如图 1 所示。 图 1. 云计算在 Internet 中迁移资源 但是,为什么您会心甘情愿地放弃对自己资源的控制,而让它们虚拟地存在于云中呢?原因有很多,但我相信最重要的两个原因是成本和可伸缩性。云计算的目标是使这些资源比您自己所能提供和管理的资源更廉价。云计算除了降低成本外,还有更大的灵活性和可伸缩性。云计算提供者可以轻松地扩展虚拟环境,以通过提供者的虚拟基础设施提供更大的带宽或计算资源。 云计算在环保方面的优势是,它可以在不同的应用程序之间虚拟化和共享资源,以提高服务器的利用率。图 2 显示了一个例子。在这个例子中,不同的应用程序使用了 3 个独立的平台,每个应用程序都在它自己的服务器上运行。在云中,可以在多个操作系统和应用程序之间共享(虚拟化)服务器,从而减少服务器的数量。更少的服务器意味着需要更少的空间(减少数据中心占用的空间)和更少用于制冷的电力(减少碳污染)。 图 2. 虚拟化和资源使用 但是,有得必有失,云计算并非没有缺点。本文后面会探索其中的一些问题。但是现在,让我们更深入地探究云计算。 云计算剖析 当您深入观察云时,您会发现,它实际上并不是一个单独的服务,而是一个服务集合,如图 3 所示。这些层定义了提供的服务的级别。 图 3. 云计算的层次 我们从最低级的服务开始,即基础设施(Infrastructure-as-a-Service 或 IaaS)。IaaS 就是将基础设施(计算资源和存储)作为服务出租。这意味着虚拟计算机不仅具有有保证的处理能力,而且为存储和 Internet 访问预留了带宽。实际上,IaaS 具有在有特定服务质量约束的情况下出租计算机或数据中心的能力,使之能执行任意操作系统和软件。 云计算的价值 除了减少与云计算资源相关的管理成本外,云计算还有其他优点。例如,当您通过 Internet 将自己与自己的资源分离开时,那些资源在哪里并不重要。又如,它们可以在一个可自然制冷的环境中,从而减少能耗。 顺着栈往上看,上一级的服务是平台(Platform-as-a-Service 或 PaaS)。PaaS 类似于 IaaS,但是它包括操作系统和围绕特定应用的必需的服务。例如,除了虚拟服务器和存储外,PaaS 还提供一个特定的操作系统和应用程序集(通常是作为一个虚拟机,即 VM,或文件,例如 VMware 的 .vmdk 格式),以及对必要的服务(例如 MySQL 数据库或其他专用本地资源)的访问。换句话说,PaaS 就是 IaaS 加上一个用于给定应用的定制软件栈。 最后应用程序。这一层被称作 Software-as-a-Service(SaaS),它是从一个集中的系统部署软件,使之在一台本地计算机上(或从云中远程地)运行的一个模型。由于是计量服务,SaaS 允许出租一个应用程序,并计时收费。 这是高度概括的云计算的视图。这个视图忽略了云的其他一些方面,例如data-Storage-as-a-Service(dSaaS),后者以计量服务的形式提供存储,消费者按使用的容量(使用的存储的容量)和利用率(存储的带宽需求)付费。另外还有云服务,它为互操作性和外部应用程序编程接口(API),例如 Web 服务,提供了内部机制。 云计算现状 最近几个月,对云计算和相关基础设施的投资呈爆炸式增长。这样巨大的投资表明,对云中资源的虚拟化存在着巨大的需求。去年已经有了很多新的服务,图 4 展示了其中一部分。 图 4. 云计算各层及相关产品 这绝不是一份详尽的产品类别,因为变化非常频繁。但是,这的确给出了一些产品的概览,并展示了它们之间的区别。 Linux 和开放源代码在云中的应用 现在让我们来探索一下,Linux 和开源社区如何为云计算领域做出贡献。您可能已经猜到,Linux 和开放源代码扮演着极其重要的角色。 Software-as-a-Service SaaS(软件即服务)就是以服务的形式访问 Internet 上的软件。一种早期的 SaaS 方法是 Application Service Provider(ASP)。ASP 提供对 Internet 上存放或交付的软件的订阅。ASP 交付软件,并根据软件的使用收费。这样一来,您就不必购买软件,只需随需租用软件。 SaaS 实例 传统应用程序与 Saas 应用程序之间的对比的一个有趣的例子是 SoftwarePlanner.com 提供的应用程序生命周期管理工具。该公司以传统形式或 SaaS 的形式提供他们的工具。当使用传统形式时,客户将应用程序套件放在他们的企业中;而当使用 SaaS 形式时,客户拥有应用程序套件,并将其放到 Internet 上。 SaaS 的另一个方面是在 Internet 上使用远程执行的软件。这种软件可以是本地应用程序所使用的服务(并定义为 Web 服务),也可以是通过 Web 浏览器看到的远程应用程序。远程应用程序服务的一个例子是 Google Apps,它通过一个标准的 Web 浏览器提供一些企业应用。要远程地执行应用程序,通常需要依赖于一个应用服务器来公布所需的服务。应用服务器 是一个软件框架,它公布软件服务的 API(例如事务管理或数据库访问)。具体的例子有 Red Hat JBoss Application Server、Apache Geronimo 和 IBM® WebSphere® Application Server 等。另外还有很多其他的应用服务器, 小节给出了一份详细的列表。 SaaS 的另一个最近的例子是 Google 的 Chrome 浏览器。这个浏览器是作为新桌面的理想环境,除了具有传统的 Web 浏览体验外,还可以通过它来(以本地或远程方式)交付应用程序。 Platform-as-a-Service PaaS 可描述为一个完整的虚拟平台,它包括一个或多个服务器(在一组物理服务器上虚拟而成)、操作系统以及特定的应用程序(例如用于基于 Web 的应用程序的 Apache 和 MySQL)。在某些情况下,这些平台可以预先定义和选择。而在另一些情况下,可以提供一个 VM 镜像,该镜像包含所有的特定于用户的应用程序。 PaaS 一个有趣的例子是 Google App Engine。App Engine 是一个服务,通过它可以在 Google 的可伸缩性极佳的架构上部署 Web 应用程序。App Engine 为可通过 Internet 引用的 Python 应用程序提供一个沙盒(将来还会支持更多的语言)。除了支持用户认证、镜像操作和电子邮件发送外,App Engine 还提供了 Python API,用于持久地存储和管理数据(使用 Google Query Language 或 GQL)。Web 应用程序运行时所在的沙盒将限制对底层操作系统的访问。虽然 App Engine 限制了应用程序可用的功能,但是它支持有用的 Web 服务的构造。了解更多信息。 注意:在一定的带宽和存储约束范围内,在 App Engine 中部署应用程序是免费的。但是,如果要用 App Engine 构建生产 Web 站点,则需要评估使用费。 PaaS 的另一个例子是 10gen,它既是一个云平台,又是一个可下载的开放源代码包,可用于创建您自己的私有云。10gen 是类似于 App Engine 的一个软件栈,它提供与 App Engine 类似的功能 — 但有一些不同之处。通过 10gen,可以使用 Python 以及 JavaScript 和 Ruby 编程语言开发应用程序。该平台还使用沙盒概念隔离应用程序,并且通过自己的应用服务器的许多计算机(当然,是在 Linux 上构建)提供一个可靠的环境。 Infrastructure-as-a-Service IaaS 是以服务的形式交付计算机基础设施。这一层与 PaaS 的不同之处在于,只提供虚拟硬件,而没有软件栈。客户提供一个 VM 镜像,该镜像在一个或多个虚拟服务器上被调用。IaaS 是作为服务的计算的最原始的形式(除了对物理基础设施的访问)。最著名的商业 IaaS 提供程序是 Amazon Elastic Compute Cloud(EC2)。在 EC2 中,可以指定一个特定的 VM(操作系统和应用程序集),然后将应用程序部署到它上面,或者提供要在服务器上执行的 VM 镜像。然后,只需根据计算时间、存储和网络带宽付费。 Eucalyptus 项目(Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems)是 Amazon EC2 的一个开源实现,它与商业服务接口兼容。和 EC2 一样,Eucalyptus 依赖于 Linux 和 Xen 进行操作系统虚拟化。Eucalyptus 是加利福尼亚大学(Santa Barbara)为进行云计算研究而开发的。您可以从该大学的网站上下载它,或者通过 Eucalyptus Public Cloud 体验它,不过后者有一些限制。 另一个 EC2 风格的 IaaS 是 Enomalism 云计算平台。Enomalism 是一个开放源代码项目,它提供了一个功能类似于 EC2 的云计算框架。Enomalism 基于 Linux,同时支持 Xen 和 Kernel Virtual Machine(KVM)。与其他纯 IaaS 解决方案不同的是,Enomalism 提供了一个基于 TurboGears Web 应用程序框架和 Python 的软件栈。 其他云开发 除了前面已经讨论过的开发外,还有其他一些基于 Linux 的开放源代码包,它们在云环境中也比较有用。Hadoop 是一个开放源代码 Java™ 软件框架,它类似于 PaaS,但是着重于在一组联网的服务器上操纵大型的数据集(受 Google MapReduce 的启发,后者支持大型数据集的并行处理)。因此,它在 Web 搜索和广告应用中派上用场 — 特别是在 Yahoo! 上。Hadoop 还提供一些子项目,这很像 Google 应用程序。例如,HBase 提供类似于 Google BigTable 数据库的功能,Hadoop Distributed File System(HDFS)提供类似于 Google File System(GFS)的功能。 问题和挑战 云计算的问题显而易见 — 其中最重要的两个问题是保密性和安全性。保密性可以通过加密来解决,但是在选择云计算服务时,要审慎一些。在 Web 刚开始发展时,即使是电子商务也受到了怀疑。在全球,每年要发生价值上万亿美元的电子商务事务,所以云计算可以收益于当今所有提供 Web 安全的技术(例如安全套接字层或 SSL)。 云计算的风暴已经开始,推动云计算的 Linux 开源开发也在迅猛发展。随着云计算领域出现巨大的投资,向集中式数据中心的转型已显而易见。有趣的新技术和架构即将到来! Linux是一套免费使用和自由传播的类Unix操作系统,这个系统是由全世界各地的成千上万的程序员设计和实现的.它以高效性和灵活性着称.并且能够在PC计算机上实现全部的Unix特性,具有多任务、多 08/23/2011
Linux是一套免费使用和自由传播的类Unix操作系统,这个系统是由全世界各地的成千上万的程序员设计和实现的.它以高效性和灵活性着称.并且能够在PC计算机上实现全部的Unix特性,具有多任务、多用户的能力. 但有人曾问,装了LINUX有什麽好处?有什麽功能?我只能一言以蔽之:『UNIX有的好处LINUX都有』这样的回答有点不负责任,但也蛮实在的.因此,在此分类说明一些LINUX能够做的事,若各位朋友认为有需要补足之处也欢迎补充或指正: 文书处理 vi:最令UNIX初学者裹足不前的editor,然而我太爱用它了,连DOS里都装了DOS的版本 joe/cjoe:很像WORDSTAR(或PE2吧!)的editor LaTeX/TeX:一种幕後排版系统,所谓幕後排版就是不能WYSIWYG Emacs:GNU引以为傲的文书编辑/开发程式(尤其是LISP)之整合环境 中文输入 yact:basedonSVGALIB(不必RunX-window)之24x24中文字系统, 大部份的Trident,ET4000,...,S3卡皆可用,唯S3之卷页有BUG xcincrxvt:操作方式与倚天中文一样的X-window中文系统 cxterm:用惯倚天的人大概不习惯,但它的好处是可以很容易地自行订定 输入法,或者修改现有的 chdrv:个人觉得BUG很多 DOSEMUET316x15字型:也是可以的 视窗系统 X-Free86:就是X-Window罗 Xview:外观和Sun的OPENWindow一样 网路功能 telnet,ftp,rsh,rlogin,finger...etc就不必说了 telnetd,ftpd,rshd,blablabla WWWBrowser,Send/ReceiveE-Mail 可以当router,gateway 可以当PC-NFS,让连成网路的DOS/Linux机器share相同的档案系统 还可以当PrinterServer 可以当terminalserver提供PPP/SLIPDial-up(可接multi-portRS-232) 可以架各种版本的BBS(Palm,Firebird,Phoenix,Pivot,...etc) 可以当NameServer,NewsServer,WWWServer,blabla 编译程式 GNUC/C:不要钱的Ccompiler是世界第一最好的compiler?不信吗? 不信的人自己乖乖地拿钱去砸Borland,Micro$oft... GNUPascalToCtranslator GNUFortranToCtranslator GNUmake biaozou 08/13/2011
Linux认证:桌面Linux是如何成功的! 08/10/2011
桌面Linux是什么?说到底,桌面Linux应该是怎样的?这个问题虽然简单,正确回答确属不易。为什么? 人使用计算机避免不了使用桌面(Desktop)。人应该使用什么样的桌面?尤其是在科研与教育领域里面,包括政府的行政管理与社会决策,人是活动的主体,到底应该使用什么样的桌面?这是一个根本性的问题,不容回避。什么尊重用户的选择,适应用户的习惯,全都是废话、托词。任何独立的智力工都必须尊重自己的自主思考(权力),不被外界力量所随意忽悠。实际上,桌面是个人进行“自主”工作的计算机界面,是一个很神圣的理性(工作)界面。多年以来,人们坚持不断地追求这个问题的答案。 2006年,两位爱尔兰工程师,Brian Brazil和Paul O‘Malley,想解决这个问题。他们的努力立即被美国《自由软件基金会》(FSF)注意到,主动联系他们,寻求合作。这两位爱尔兰工程师,一位是编码程序员(前者,都柏林大学计算机科学系),一位是系统管理员(后者),是一对很好的搭档。2006年11月3日,第一个“理想”桌面问世,取名 “gNewSense 1.0”,这是他们两人联合创作的处女作,样子很像当年的Ubuntu发行版。随后,在《自由软件基金会》的直接支持下,gNewSense网站、、网络wiki平台,等很快建立起来,一个十分活跃的全球网络开发社区形成了。我们把话说明白了,gNewSense遵守Debian的哲学理念,基于Ubuntu的开发架构,细心地维护理想中的“桌面”纯洁性,此举很快吸引了大批Ubuntu的粉丝加盟,形成了一股势力强大的开发洪流,奔腾向前,一发不可收拾。2009年9月14日,gNewSense 2.3版本正式发布,被DaniWeb国际IT讨论社区排名为2009年第一Linux发行版,这并不令人感到十分意外。 gNewSense桌面给我们的启示是:当今,国际软件开发社区十分活跃,自由软件的成果积累(自由软件源)已经相当丰富、成熟,只要一个想法(Project)顺应了历史发展的潮流,就能很快地积聚起足够的网络资源,迅速开发出(准确地说,集成出)相应的产品,并且使该产品在网络上极快地自由传播。这就是客观现实。我们必须直接面对。当前,许多私有软件厂商,自己的产品卖不动,傻傻地在等政府输血救命,谓之“不识时务”也。 为什么说,gNewSense桌面是我们理想中的桌面?它是完全透明的,无论是程序还是文档,用户全能自己掌握(将其研究明白)。它是使用自由的,而且可以随意送人。它不涉及任何私有软件,就是一点点儿也不沾边。它是安全的,不怕病毒、木马和后门。它是可靠的,系统运行非常稳定。这种东西本身虽然不能赚钱,但是,将其放入(灌入、嵌入)U盘,再拿U盘出租,必定能够赚大钱。这种桌面(比如,叫做U盘桌面)可以用于任何目的和人群,可以用于任何地方,比如用于社会网吧和电脑教室等公共场所。试想一下,网吧老板出租U盘的热闹景象,合理合法,有何不可?任何国家政府,包括我国政府,不会反对gNewSense桌面,但是,你可以不用它,而不需要任何理由。22日晚,gNewSense桌面(自启动U盘)将在中国科学院研究生院公共场所亮相。这是很有意义的时刻,诸位到现场做见证人。 Linux认证:Linux内核参数修改方法 08/08/2011
由于Linux的内核参数信息都存在内存中,因此可以通过命令直接修改,并且修改后直接生效。但是,当系统重新启动后,原来设置的参数值就会丢失,而系统每次启动时都会自动去/etc/sysctl.conf文件中读取内核参数,因此将内核的参数配置写入这个文件中,是一个比较好的选择。 首先打开/etc/sysctl.conf文件,查看如下两行的设置值,这里是: kernel.shmall = 2097152 kernel.shmmax = 4294967295 如果系统默认的配置比这里给出的值大,就不要修改原有配置。同时在/etc/sysctl.conf文件最后,添加以下内容: fs.file-max = 6553600 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 1024 65000 net.core.rmem_default = 4194304 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 262144 这里的“fs.file-max = 6553600”其实是由“fs.file-max = 512 * PROCESSES”得到的,我们指定PROCESSES的值为12800,即为“fs.file-max =512 *12800”。 sysctl.conf文件修改完毕后,接着执行“sysctl -p”使设置生效。 [root@localhost ~]# sysctl -p 常用的内核参数的含义如下。 kernel.shmmax:表示单个共享内存段的最大值,以字节为单位,此值一般为物理内存的一半,不过大一点也没关系,这里设定的为4GB,即“4294967295/1024/1024/1024=4G”。 kernel.shmmni:表示单个共享内存段的最小值,一般为4kB,即4096bit。 kernel.shmall:表示可用共享内存的总量,单位是页,在32位系统上一页等于4kB,也就是4096字节。 fs.file-max:表示文件句柄的最大数量。文件句柄表示在Linux系统中可以打开的文件数量。 ip_local_port_range:表示端口的范围,为指定的内容。 kernel.sem:表示设置的信号量,这4个参数内容大小固定。 net.core.rmem_default:表示接收套接字缓冲区大小的缺省值(以字节为单位)。 net.core.rmem_max :表示接收套接字缓冲区大小的最大值(以字节为单位) net.core.wmem_default:表示发送套接字缓冲区大小的缺省值(以字节为单位)。 net.core.wmem_max:表示发送套接字缓冲区大小的最大值(以字节为单位)。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||


RSS Feed