KVM你问我答 FAQ (四)

KVMXen有什么区别?

Xen是一个外部虚拟机管理程序(External hypervisor),它承担了管理物理机器的任务并把物理机器的各种资源分配给客户机。与Xen不同,KVM本身是Linux内核的一部分,它使用Linux自己的进程调度和内存管理。这就天然决定了KVM易于使用并于体积会很小。仅管体积小,但KVM的功能确不少。比如,KVM可以把客户机从内存中兑换到物理磁盘上,如同swap普通进程一样释放RAMKVM目前只在提供支持硬件虚拟化的x86机器上运行(如vt/svm指令集)。从这这方面讲,Xen通过修改客户机操作系统,充许虚拟机运行在没有硬件虚拟化技术的x86平台上运行。这种虚拟化技术称之为准虚拟化paravirtualization,参见另一贴:Linux的虚拟化技术KVMCPU级别不支持paravirtualization,但为了指高I/O性能,会对设备驱动程序支持准虚拟化。

KVMVmware有什么区别呢?

VMware是一个商用专用虚拟化产品,KVM是在GPL许可证下发布的自由软件。

KVMQEMU有什么区别?

QEMU是模拟器。参见Linux的虚拟化技术 KVM & QEMU 。

KVMwindows下的移移植版本吗?

没有官方的移植。Kazushi Takahashi发起了一个项目,把KVM移植到windows操作系统,这个项目名为WinKVM,这是他的官方网站WinKVM

可参见另一篇文章 http://ykyi.net/2012/06/595/

需要怎样的Linux内核版本才能运行KVM呢?

这取决于你要运行哪个版本的KVM。最近发布的KVM应该可以在任何2.6.17以后的kernel版本下运行。但很旧版本的KVM只能在一些旧的内核下运行。

需要多少内存运行KVM呢?

最小应该1GB。嗯,你应该有足够多的内存运行你将要运行的客户机,另外当然还需要内存运行host机。

是否支持对客户机动态分配内存?

这个问题有点大!
1. KVM在客户机尝试申请内存时分配内存给它们。一但内存分配结束之后,KVM则认为内存分给某客户机了。有一些操作系统,比如Microsoft Windows会在启动阶段把所有的内存都清零。这些操作系统会立即使有或管理所有的内存。
2. 而另一些操作系统,实际上目前只有Linux,它们有一个称为balloon driver的东东,如果host分配了一些内存但客户机将来不再使用了,它就会让host把它们释放掉。Ballooning是通过balloon monitor commandhost机中被控制的。
3. 有一些host机,(目前只有RHEL5.4/CentOS 5.4)有一种特性称为KSM(Kernel Sharedpage Merging)。这种特性可以把完全相面的内存页面合并,这需要host机的支持,另外KVM的版本要足够新。而有一些操作系统,如windows,会把释放的内存清零,这些页面自然就会合并了(such pages are trivially collapsed不知道有没有译对)。Ksmctl命令用来开启KSM。另外一种方法是,Fedora 12中的ksmtuned服务可以根据可用的空闲内存动态的调整KSM的合并策略是否积极还是保守。

我可以在KVM虚拟机中安装哪些操作系统呢?

支持很多种操作系统,你可以参看Guest Support Status 页面。请注意已经有一些Linux发行版在Intel处理器上会在启动阶段死机,解决办法是在grub里禁用启动画面。

KVM支持虚拟机实时迁移(Live Migration)吗?

支持!参看Migration。KVM支持从AMD的主机往INTEL主机实时迁移(Live Migration)吗?
支持!对于32位不支持NX或者XD的主机,可能会有一些问题。但是对于64位的客户机,应该没有一点问题的。在32位主机和64位主机之间实时迁移(Live Migration)32位虚拟机也应该没有问题。如果其中一台主机不支持NX,你要考虑在支持NX的那台机启动虚拟机之前禁用NX。你可以在启动客户机时加入-cpu qemu64, -nx参数。

可以在64位的主机上运行32位的客户机吗?可以用PAE吗?

KVM支持在64位主机上运行32位的客户机,不管主机是否使用PAE,客户机都可以选择使用PAE或者不使用PAEKVM不支持在32位的主机上运行64位的虚拟客户机。

可以在基于KVM的虚拟机上使用USB设备吗?

当然可以,请参照QEMU的做法,是一样的。

我可以让KVM使用更高的屏幕分辨率吗?

在启动VM之前使和 -vga std 参数可以充许你设置更多的分辨率和屏幕尺寸。
如果不能调到你想要的分辨率,你可以尝试安装一个补丁包,请参考http://article.gmane.org/gmane.comp.emulators.kvm.devel/13557 。
当你使用windows作为客户机操作系统的时候,你可以使用VBEMP x86项目中开发的驱动,这个项目是基于ReactOS开源项目的,请注意不要违反GPL许可证。

KVM支持对称多处理器(SMP)host机吗?

支持!

KVM支持对称多处理器(SMP)的客户机吗?

Yes. Up to 16 CPUs can be specified using the -smp option.
是的!目前一共最多16cpu,要使用-smp选项。

KVM已经被注册为商标了吗?

没有!

转帖请注明出处: http://ykyi.net/2012/06/kvm%E4%BD%A0%E9%97%AE%E6%88%91%E7%AD%94-faq-%E5%9B%9B/

—– KVM FAQ 全剧终 —–

 

KVM你问我答 FAQ (三)

我在使用QEMU,如何知道我有没有启用KVM的硬件加速功能?

如果你怀疑你没有启用KVM提供的硬件加速功能。你可以按照下面的步骤做检查。首先,看看你有没有得到下面的提示信息:

qemu-system-x86_64 -hda myvm.qcow2
open /dev/kvm: No such file or directory
Could not initialize KVM, will disable KVM support

如果是这种情况,请再检查:
1. kvm模块被正确载入了吗? lsmod | grep kvm.
2. 查看 dmesg 的输出,保证没有这个提示信息: “KVM, disabled by BIOS”.
3. 请确保/dev/kvm 确实存在,而且你有权限使用它。

其它诊断方式:
1. 如果你能使用 QEMU monitor ( ctrl-alt-2, 再 ctrl-alt-1 回到 VM 的显示屏 ),敲入 info kvm 命令。如果正常的话,应该有“KVM support: enabled”这条信息输出。
2. 在host机上敲 lsmod | grep kvm 命令,看看输出的最右栏。如果kvm在正常运行的话,这个数字不能是0。这行的数字与架构相关的模块(一般指的是kvm_intel,或kvm_amd)有联系,它显示了有多少个VM正在使用这个模块。举例说明,如果你有两个虚拟机正在使用KVM模块,host机的CPU使用的是vt技术,那么就会得到:

# lsmod | grep kvm
kvm_intel              44896  2
kvm                   159656  1 kvm_intel

 

使用VNC显示终端时出现“rect too big”是怎么回事

当连接VNC终端的时候,出现“rect too big”提示信息,这时VNC的会话也结束了。

这是因为当前VNC协议的一个缺陷,在处理即时象素格式变化时出现,可参看 这个贴子。如果你在使用TigerVNC,通过禁用即时象素编码选项,vncviewer的命令行选项选定为-AutoSelect=0,你就可以避免这个问题。你还可以查阅vncviewer的man帮助,根据连接速度禁用自动选择编码方式。


 

如果我的客户机是从远程访问的你该如何设置我的网络呢?以及:我的客户机网络出问题了我该怎么办?

KVM使用QEMU作为设备的模拟器。请参看QEMU的网络相关wiki (QEMU network wiki page)。
你应该会对Root Networking Mode和网络桥接感兴趣。客户机端的网络锁定有可能会因为tun/tap桥接host机端配置的出错的MAC地址时发生。参看RHEL bug #571991。

 


 

我的VM客户机的时间总出错,怎么办?

这常常发生在使用网络系统的时候,比如透过NFS或Samba。 不管是系统时钟还是RTC,保证稳定可靠的时机非常重要。Tell-tale signs of related trouble in VMs (apparently qemu/KVM/VMWare etc. are all affected) are e.g. "make[2]: Warning: File `XXXXX/cmakelists_rebuilder.stamp' has modification time 0.37 s in the future" "Clock skew detected. Your build may be incomplete."
Maemo docs state that it's important to disable UTC and set the correct time zone, however I don't really see how that would help in case of diverging host/guest clocks. IMHO much more useful and important is to configure properly working NTP server (chrony recommended, or ntpd) on both host and guest. The single most decisive trick IMHO is to specify the host NTP server as the main entry within guest VM instead of "foreign" NTP servers, to make sure to achieve the most precise coupling between these two related systems (timing drift vs. other systems does not matter nearly as much as a tight time precision for inner host/guest system interaction e.g. in the case of NFS/Samba shares etc.). For verification, see chronyc "sources -v", "tracking" ("System time" row) commands.
After having applied this very tight NTP coupling, this seems to finally have gotten rid of make's time drift warnings.
Perhaps qemu's -tdf (timing drift fix) option magically manages to help in your case, too.
See also Faqs: I received a message about "clock skew".


 

出现“rtc interrupts lost”出错信息,而且客户机应该慢,怎么办?

你可以试试把host机的.config文件中的 CONFIG_HPET_EMULATE_RTC 选项设成y。即 CONFIG_HPET_EMULATE_RTC=y


 从Intel主机上启动虚拟客户机时出现“Exception 13” 或 “Exception 12”出错信息,怎么办?

请参 模拟Intel的实模式的问题


 

我还安装了VMware/Paralles/VirtualBox,当我执行modprobe KVM时,系统死机了。

Intel VT和AMD-V都没有提供一个判断当前有没有软件在使用硬件虚拟扩展的机制。这就意味着,如果有两个内核模块同时尝试使用硬件虚拟扩展功能,非常悲惨的事情就发生了。如果死机情况发生在你同时使用另一种虚拟机的时候,你要确保另一种虚拟机没有使用硬件虚拟扩展,你再报告bug给KVM开发组。


 

QEMU/KVM屏幕上什么都没有,但是系统没有死机。我正准备在客户机上安装Kubuntu。怎么回事?

试试用 -std-vga 选项加载kvm。如果客户操作系统使用framebuffer模式,比如Kubuntu/Ubuntu。

 

当我点击客户操作系统的窗口时,鼠票就像被夺走一样。怎么做才能避免这种情况?有时鼠标在客户操作系统中不显示,或者不动,怎么办?

试试使用选项 -usb -usbdevice tablet 启动 kvm/qemu。如果还不行,在启动前设定环境变量SDL_VIDEO_X11_DGAMOUSE为0。如:

$ export SDL_VIDEO_X11_DGAMOUSE=0

可参看 http://wiki.clug.org.za/wiki/QEMU_mouse_not_working

翻译不易,转载请注明出处 ykyi.net

KVM你问我答 FAQ (二)

如果我的没有root权限,怎么使用KVM呢?

最简洁的做法就是创建一个组,比如kvm组,然后把将要使用kvm的用户添加到组里面。然后用chown命令把/dev/kvm的所有组改成kvm。如果你的系统里安装了udev,你还可以通过配置udev的方式使得linux自动把新创建的设备设成正确的组。比如在ubuntu的/etc/udev/rules.d/40-permissions.rules文件中增加一行:
KERNEL==”kvm”, GROUP=”kvm”

 



怎么做才能得到kvm的最佳性能呢?

See the Tuning KVM page.



KVM稳定吗?

KVM非常稳定而且已经用于工作生产环境之中。对于所有的开始工程,开发版的稳定性总是逊于稳定发行版。建议使用稳定发行版。KVM已经被使用比较长一段时间,模拟常用的操作系统和配置。一但有问题出现,开发者会在第一时间修复。参看Guest Support Status,列举了目前运行良好的操作系统。zausiu’s blog http://ykyi.net



KVM真的可以用于生产环境吗?

为了稳定性,强列建议你使用你使用的发行版提供的KVM模块。如前面所述,及早使用新特性总是令人开心的事情。但是,你常常要要承担一定的风险,一些未知的问题可能在使用时暴露出来。在生产环境中,最好使用你使用的发行版提供的稳定版,而开发版本,如果你愿意,可以使用在不是那么重要的环境下。



如果我用kill -9杀掉VM进程会发生什么事呢?

From the guest’s perspective, it is as if you yanked the power cord out. From the host’s perspective, the process is killed and all resources it uses are reclaimed.
从客户虚拟机的立场来看,这就如同被拨掉了电源。从Host机的立场看,仅仅是VM进程被杀死了,这个VM进程所申请的所有系统资源被回收给操作系统。如前文所说,对于linux内核,VM进程就是一个普通的进程。



请帮助我设置客户机的网络。

可以参考这里 Networking 设置网站,也可以找找QEMU的网络设置相关文档。



哪里有更多KVM的文档呢?

绝大多数问题都在QEMU的 documentation中被提到了,还有部分在扩展FAQ ( 已经废弃的老板 FAQ).

 


KVM你问我答FAQ (一)

使用KVM需要哪些准备?

你需要一台运行Linux的x86的机器。它的CPU是有VT技术支持的英特尔cpu或者有SVM(又常被称为AMD-V)支持的AMD的CPU.



KVM支持64位的处理器吗?

KVM支持64位的处理器!此时,你可以运行32位或者64位的客户机。



What is Intel VT / AMD-V / hvm?

英特尔VT,是什么?AMD-V又是什么?hvm是什么?

Intel VTAMD’s AMD-V 都指的是指令集扩展。它们在硬件层面帮助实现虚拟机管理技术。这种技术使得在虚拟机上运行的速度接近直接在真实机器上运行的速度。HVM是硬件虚拟机的缩写(Hardware Virtual Machine )则是一个生产商中立的词汇(vendor-neutral term),它常常用来指代x86指定集扩展。



从哪里得到KVM内核模块呢?

可以从这里获得 http://www.linux-kvm.org/page/Getting_the_kvm_kernel_modules



我如何知道我的CPU支持Intel VT技术或者AMD-V技术呢?

如果你的Linux操作系统比较新,尝试以下的指令:
. egrep ‘^flags.*(vmx|svm)’ /proc/cpuinfo

如果出现一些文字,那说说你的CPU支持虚拟化。你也可以在/proc/cpuinfo文件中找到处理器模块的名字,然后到供应商的网站上查询。
注意:
1. 如果安装了Xen hypervisor,为了防止被劫持,你在dom0和domU中都得不到这些输出。dom0和domU是Xen hypervisor的术语。如果你没有安装Xen,直接忽略。
2. 一些产商默认在BIOS定设中禁用了CPU的虚拟化支持。你需要先在BIOS中打开虚拟化支持。
3. 如果你用的是intel cpu,对于内核版本2.6.15以前的Linux,你得不到这样的输出。如果你用的是amd cpu,对于内核版 本2.6.16以前的linux,你得不到这样的输出。如果你不确定你的Linux内核版本,用#uname -r 命令查看。



出现 “KVM: disabled by BIOS” error 错误

Check if there is an option to enable it in the BIOS. If not, look for a more recent BIOS on the vendor’s web site.
在BIOS设定在找找看有没有启用cpu虚拟化的选项,如果没有,去到主板厂商的网站上面看看有没有新的BIOS发布并支持打开cpu虚拟化,那么你需要刷新BIOS.
注意:
1.对于部分硬件(如 HP nx 6320),你需要先关掉主机电源,再打开主机电源才能使BIOS中启用cpu虚拟化支持生效。
2.BIOS的部分设定有可能与启用CPU虚拟化冲突。比如在Thinkpad T500上,启用Intel AMT技术会出现冲突。这样kvm-intel在载入时会抱怨”disabled by bios”错误。
3. 在一些Dell的硬件中,你还需要禁用”Trusted Execution”,否则不能打开VT。

 



你该怎么使用AMD-V扩展呢?

在根用户权限下敲入:modprobe kvm-amd

 



KVM使用什么样的用户空间工具。(User space tools)

KVM使用稍稍修改过的QEMU作为用户空间工具来管理创建的虚拟机。执行QEMU以后,从linux内核的视角来看,每个虚拟机仅仅是一个普通的进程。你可以用经典的Unix命令,如top, kill, taskset等等来操作虚拟机。



KVM使用何种类型的虚拟磁盘。

QEMU支持的多种磁盘格式如raw images,qcow2(QEMU原生磁盘格式),VMWARE format,等等,KVM都支持(KVM inherits a wealth of disk formats support from QEMU)。


Linux的虚拟化技术 KVM 和 QEMU

Linux 2.6.20发布以后。一个称之为KVM的非常优秀的虚拟化框架加入了linux代码主干。KVM是Kernel-based Virtual Machine的首字母简写。这篇文章将在理论层面和实践层面都会简单介绍KVM是如何工作的。http://ykyi.net

简单的理论背景:
目前有几种虚拟化的方式。
其中一种称之为准虚拟化(para-virtulization)。使用准虚拟化的时候,为了达到虚拟化的目的,客户机系统必须被修改。修改后的客户机知道它运行在虚拟的环境中,与虚拟机管理程序(Supervisor)协同工作。这样的好处理较之全虚拟化,性能上有一定的优势。
另一种称之为全虚拟化(full virtualization)。使用这种技术则不需要修改操作系统。但相对于准虚拟化技术,全虚拟代技术牺牲了一些性能。因为没有客户机OS的参于,是非常困难得到很高的虚拟化效率的。但自从CPU产商在硬件层面推出虚拟化支持的时候,情况就不一样了。如Intel的VT,AMD的AMD-V虚拟化技术。KVM就是利用了CPU的虚拟化支持技术实现了。并且KVM作为linux内核的一个模块加载,天然继承了linux内核的诸多优势。基于KVM的虚拟机,被当成一个标准的Linux进程被Linux内核调度。这个KVM虚拟机看到的都是虚拟的硬件。对于一个标准的Linux进程,有两种运行模式:内核态和用户态。KVM给虚拟机进程加入了第三个模式:客户模式(guest mode)。而客户模式又有它自己的内核态和用户态。

KVM包括两部分组件:
1. 一个设备驱动程序用来管理虚拟化硬件。这个驱动是一个字符驱动,用来管理虚拟化硬件(for managing the virtualization hardware)。
2. 一个用户空间运行的模拟器。通常选择QEMU稍作修改。QEMU是由一个叫Fabrice Bellard的法国黑客写的。

KVM与QEMU实战,在linux下安装windows xp:

前期准备,需要安装KVM和QEMU.另外还有保证你已经编译了内核。
真正的安装超级简单。
第一步:# qemu-img create hda.img -f qcow 6G
第二步: # kvm -no-acpi -m 256 -cdrom winxpsp2.iso -hda hda.img -boot d

下面简单的解释下。
第一步创建了一个虚拟磁盘(实际上就是文件系统上一个文件而已,不过话又说回来,unix的哲学就是所有的东东都是文件。)这条命令选择了QEMU的写时复制策略。这使得这个文件会按需增长。所以一开始这个文件不会太大,以后随着你的虚拟xp占用的空间增大而增大。不过这条命令把大小限制到第大6G.
第二步:指定了win xp的镜像文件就开始安装啦!喔,这条命令使用了 -no-acpi 开关。据说acpi在QEMU中支持的不够好。不过我觉得问题应该得到解决了吧,所以也可以不用 -no-acpi。ykyi.net

于是就装好啦!真的非常简单啊~~
于是你就可以用这个虚拟的xp做一些你不愿意在真实OS上作的测试啦!或者使用只有在win下的软件。

转贴请注明出处 http://ykyi.net/2012/06/linux%E7%9A%84%E8%99%9A%E6%8B%9F%E5%8C%96%E6%8A%80%E6%9C%AF-kvm-%E5%92%8C-qemu/

Linux用两种信号量 Linux has two kinds of semaphore

面试中经常会考什么是信号量,对于linux,实际上有两种semaphore.

第一种是指一种IPC(Inter-process communication进程通讯)的方法。这种IPC是从Unix SYstem V时代开始的,System V发布时加入了三种IPC,它们是semaphore信号量,message queues消息队列,shared memory共享内存。

Linux中另一种Semaphore是内核用来同步的机制。在kernel中,semaphore通常当成一个二值信号量使用。获得信号量时有可能会睡眠,这样进程就会被调度开,放弃处理机;如果某段内核代码得到了一个信号量,这段代码还可以睡眠。这点不像spinlock,尝试得到spinlock会不停地忙等,得到spinlock后不充许睡眠。当然这个“不充许”不是语法层面的,而是应该被程序员遵守。否则整个系统的的性能就会被这代不遵守约定的代码毁掉了。

copyright ykyi.net

 

内核线程是什么东东 What is Kernel threads

有一些Unix内核,比如Solaris和SVR4.2/MP,被组织成一些内核线程。一个内核线程是一个执行上下文且可以被调度;这样的内核线程可能与一个用户程序相关联,也有可以只执行一些内核函数。上下文切换的时候,切换内核线程上下文的开销远比切换用户进程上下文的开销要小。因为内核线程通常共用一个地址空间。而Linux的内核线程则有不同。Linux的内核线程仅仅周期性的执行一个内核函数。而且,Linux内核进线程并不表示一个基本的可执行上下文。 zausiu's blog. http://ykyi.net

Some Unix Kernels, such as Solaris and SVR4.2/MP, are organized as a set of kernel threads. A kernel thread is an execution context that can be independently scheduled; it may be aasociated with a user program, or it may run only some kernel functions. Context switches between kernel threads are usually much less expensive than context switches between ordinary processes, because the former usually operate on a common address space. Linux uses kernel threads in a very limited way to execute a few kernel functions periodically; however, they do not represent the basic execution context abstractions.

十个选择Oracle Linux而不是RedHat企业版Linux的原因

Linux在当今基于云的解决方案中被普通采用。而Oracle Linux目前最完整的集成解决方案。它提供了高性能和高可靠性,却只是选择Redhat Linux的花费的1/7

http://ykyi.net 译!

原因一: Oracle Linux成本低:

Oracle Linux可以自由下载和部署。

对Oracle Linux的支持订阅(Support Subscription)非常简单且价格便宜。

支持花费(Support costs)不到Redhat的七分之一。

你不能够下载Redhat Ent Linux,除非你购买了Support Subscription。

而Redhat Ent Linux的订阅以及插件的价格都很贵。

Redhat Ent Linux的授权许可证非常的复杂。

 

原因二: Oracle Linux已包含管理工具。

Oracle Linux支持用户使用免费的Oracle Linux服务器的生命期管理工具,这个工具相当于Redhat的卫星服务以及相关模块。

同样的Oracle企业管理者工具也能被授权管理从应用到磁盘的整个解决方案。

而红帽的卫星服务器用户则需要分别为每台服务器都申请许可证。可想而知,花费要高很多。

 

原因三:Oracle Linux的高有效性。

Oracle Linux includes OCFS2 and Oracle Linux Basic and Premier Support subscribers have free access to Oracle Clusterware

Red Hat charges separately for add-ons that include clustering software for HA

FAQ: Oracle Clusterware for Oracle Unbreakable Linux

Oracle Cluster File System 2 (OCFS2)

 

原因四:Oracle Linux可免费下载源代码,二进制文件和堪误表

Oracle Linux installation media (DVD) are free to download, use and distribute

All source code, binaries and errata for Oracle Linux including both the Unbreakable Enterprise Kernel and the Red Hat Compatible Kernel are freely, publicly available

Red Hat Enterprise Linux cannot be downloaded unless you buy a support subscription

Download Oracle Linux

 

原因五:对Premier Backporting的企业级质量支持

Same level of 24/7 enterprise-class support as Oracle Database

Backport bug fixes are available between update releases without forcing customers to upgrade to the entire update release

Zero downtime updates with Ksplice

Various levels of support include business hours only

Red Hat forces customers to upgrade to the latest update release in order to apply only a few bug fixes

Need to re-boot for software updates and patches

White paper: Oracle Linux Support (PDF)

Data sheet: Ksplice (PDF)

 

原因六:高性能!

Oracle's Unbreakable Enterprise Kernel closely tracks the mainline kernel and offers customers access to the latest Linux innovations

The Unbreakable Enterprise Kernel is fast, modern, and reliable and delivers the following advantages over a Red Hat Enterprise Linux 5-compatible kernel:

More than 75% performance gain in OLTP performance tests

200% speedup of Infiniband messaging

137% faster solid-state disk access

Red Hat Enterprise Linux 5 (RHEL5) is using a four-year-old kernel, so customers using RHEL5 did not benefit from Linux innovations

Webcast: Get the Facts: Oracle's Unbreakable Enterprise Kernel

Webcast: Boost Your Performance with Oracle Linux Infiniband and RDS Improvements

Sun Blades and Oracle Linux Deliver Top SPEC CPU2006 Benchmark Results

Webcast: Eliminating Silent Data Corruption in Linux

 

原因七:易于部署。

To enable faster time to market for customers, Oracle provides documented best practices with Oracle Validated Configurations for Linux, which include recommendations on deploying pretested stacks of server, storage, drivers, networking components, Oracle Linux, and Oracle software in a physical and virtual environment

Oracle VM Templates offer pre-installed and pre-configured images of enterprise software running on Linux, eliminating the need to install and configure from scratch

Red Hat does not offer such a program

Red Hat does not adequately test with Oracle software

Webcast: Accelerate Your Linux Deployments with Oracle Validated Configurations

Webcast: Linux Configuration and Diagnostic Tips and Tricks

FAQ: Oracle Validated Configurations Program

 

原因八:已经集成多种实用工具和功能。

Oracle's Sun x86 servers come preinstalled with Oracle VM and Oracle Linux; support for Oracle Linux is already included with the Oracle Premier Support for Systems

Red Hat needs to partner with other hardware and software companies to offer full stack

Data sheet: Oracle Linux and Oracle VM-Ready x86 Sun Servers (PDF)

Data sheet: Oracle Premier Support for Systems (PDF)

Executive brief: Reduce TCO with x86 Systems and Oracle Linux (PDF)

 

原因九:Oracle Linux为在数据中心部署已经做了完整的测试。

Oracle makes significant investment in testing Linux internally, both in the development farm and Global IT

More than 80,000 hours of QA is run on Oracle Linux servers each day in our development farm

More than 42,000 servers run Oracle Linux supporting Oracle's Global IT

Red Hat does not test with Oracle Database and Oracle Applications

Podcast: Next-generation Data Centers: An Interview with Oracle Chief Information Officer and Senior Vice President Mark Sunday

 

原因十:Oracle Linux提供了全套解决方案。

10. Complete Solution with a Single Point of Contact for Support

Only Oracle offers a complete and integrated, applications-to-disk Linux solution (servers, operating system, database, and applications), including a single point of supporteliminating finger pointing among various vendors

Need to deal with numerous vendors for the solution and for support

 

怎么订阅Linux内核邮件列表

官方页面:

http://vger.kernel.org/majordomo-info.html

As of now, subscription support is not handled at the web!

从现在开始,订阅操作不在通过web方式操作啦。

All VGER list control activities (joining and leaving, that is) are handled via email server at address:

所以的VGER列表的操作都通过邮件的方式搞定。

majordomo@vger.kernel.org

All email sent to there must be TEXT/PLAIN, there can be no multipart messages, no VCARDs, nothing “fancy''. In presense of such things, Majordomo will very likely do wrong thing.

所以的邮件都必须以纯文本发送。不需要multipart message,不需要VCARD,不需要花哨的东东。如果你违反了,Majordomo系统就会出错。

When you send there email, do make sure that all of the email headers, both visible and transport level, have same addresses in them. People experience problems when for example “From:'', “Sender:'' and possible “Reply-To:'' headers present different addresses. The most common manifestation is complete silence from VGER!

你必须确定你发送的邮件的FROM, SENDER, REPLY-TO部分都是同一个邮箱地址.如果这几个地址不一致的话,系统很可能不给你任务回复信息。

You can test email delivery between you, and VGER by sending an empty test letter to: <autoanswer@vger.kernel.org>

你可以发送一个空邮件给 autoanswer@vger.kernel.org来测试一下。

## zausiu 译 http://ykyi.net ##

If you don't know how to use Majordomo, start with word:

如果你不知道如何使用majordomo,试下help命令。

help

as the message body — as the entire content of the message.

整个邮件内容只有一个单词:help
Majordomo does not care of what you use as “Subject:''.

Majordomo并不关心你的邮件主题。

Basic introduction is given below.

基本介绍如下:

A listing of all lists, and their archives at VGER's Majordomo.  邮件列表被分成各个部分,所有部分的列表见这个URL.


Very short Majordomo intro

Majordomo 的简短介绍

Send request in email to address <majordomo@vger.kernel.org>

发送邮件到 majordomo@vger.kernel.org

To subscribe a list (“linux-kernel'' is given as an example), use following as the only content of your letter:

要订阅一个列表时,以订阅linux-kernel为例,使用如下邮件内容:

subscribe linux-kernel

Like via this URL: "subscribe linux-kernel".

To get off a list (“linux-kernel'' is given as an example), use following as the only content of your letter:

退订时也很简单

unsubscribe linux-kernel

Like via this URL: "unsubscribe linux-kernel".

Indeed these commands have optional second parameter: your email address, but Majordomo has a tendency to become upset, and refuse to serve, if you use it, and your "From:"/"Sender:"/"Reply-To:" headers don't match with your real address. Less confusion is better, of course.

其实,这个命令还可以用可选的参数。但是majordomo很可能会出错。如果你使用参数,但是你的邮件头中的FROM,REPLY-TO不一致,就会出错了。越少麻烦越好呢,不是吗?

A listing of all lists, and their archives at VGER's Majordomo.


## zausiu 译 http://ykyi.net ##

Taboo things to be done when discussing at VGER lists

使用VGER列表的禁忌。

The Majordomo is configured with a set of filter rules which when triggered will send the email to "/dev/null".
(List owner actually, but they are overworked elsewere, and use "d" button usually…)

Majordomo配置了筛选规则,如果你违返了,就如果发信给/dev/null,你得不到任何回复。

列表的维护者非常非常忙碌,他们很愿意删掉与他们的工作内容无关的邮件。

  • Usage of HTML in email — even as an alternate format — is considered to be signature characteristics of SPAM. 绝对不要使用HTML邮件,即使作为可选的方式。这样的邮件会被当成是垃圾邮件.
    Ignore this at your own peril! 忽略下面的禁忌,后果自负!
  • A collection of phrases/keywords which appear commonly at those bloody SPAMs — in case it is a TEXT/PLAIN spam, and not HTML-SPAM…系统收集了一个在该死的垃圾邮件中经常出现的词汇的短语,如果你的邮件内容中也有,那么即使你发送的是纯文件邮件,也会被过系统过滤掉。
  • Message size exceeding 100 000 characters causes blocking. 邮件大小不可以超过100 000个字符。

See the actual Majordomo taboo expressions.

At the Linux-Kernel List FAQ you can see several other things which may cause your subscription to disappear.
去到FAQ查看更多在订阅和取消订阅时可能碰到的问题。

gcc的-E选项什么意思

gcc的-E选项可以为你生成预编译后的文件。预编译后的文件将把c文件中的宏以及该文件包含的所有头文件展开。这样就没有了一层一层进入嵌套包含的头文件。下面是一个使用gcc的-E选项的例子。

下面是来自gcc mannual page的解释:

-E Stop after the preprocessing stage; do not run the compiler proper. The output is in the form of  preprocessed source code, which is sent to the standard output. Input files which don't require preprocessing are ignored.

 

$ gcc -E drivers/char/mydrv.c -D__KERNEL__ -Iinclude -Iinclude/asm-x86/mach-default > mydrv.i

 

其中的-I选项告诉编译器在哪些目录中搜索所需要的头文件。

还可以用gcc的-S选项生成汇编码的文件。如:

$ gcc -S drivers/char/mydrv.c -D__KERNEL__ -Iinclude -Ianother/include/path

ykyi.net