Tag Archives: Linux

使用VirtualBox虚拟机和KGDB调试Linux内核

搞过内核开发的人都知道,内核调试是个脑力活,也是个体力活,因为底层的内核开发和应用程序开发有着较大的差别。应用程序的开发在操作系统之上,有许多优 秀的IDE供我们选择,从而能够非常方便进行调试;而内核级的开发则不一样,操作系统的内核调试器除完成一般的调试功能外,还必须工作在内核中。在 Linux中,内核调试方法有多种,可以在内核中插入printk()函数来调试分析,可以使用/proc文件系统对内核进行分析,也可以使用kgdb进 行内核源代码级的调试。本文将介绍如何使用VirtualBox 3.0.12 + RHEL 5 + KGDB的方式调试Linux内核(在一台主机运行RHEL 5,用VirtualBox 3.0.12虚拟两个RHEL 5代替两台机器,并在两台虚拟机上配置KGDB来进行内核的调试)。 kgdb提供了一种使用gdb调试Linux内核的机制。使用kgdb调试内核需要准备两台机器,一台作为开发机(用来远程查看内核信息并调试内核),另一台作为目标机(跑有要调试的内核), 并通过串口将它们连接起来。在2.6.26以前的Linux内核中使用kgdb需要打上补丁,而在2.6.26及以后的内核里已经加入了对kgdb的支 持。当kgdb内核调试环境搭好后,目标机上运行的是打了kgdb补丁的Linux内核,而开发机上运行gdb,gdb通过串口与要调试的内核进行通信, 对目标机上的内核进行控制,从而实现远程对内核的调试。 首先从http://www.virtualbox.org下 载for RHEL5的VirtualBox,目前的最新版本是VirtualBox 3.0.12。装上VirtualBox后,就可以虚拟出两个RHEL 5虚拟机来代替两台机器了。当然我们也可以使用VirtualBox的clone功能,如果第一台虚拟机的文件名为rhel1.vdi,可使用命令VBoxManage clonevdi rhel1.vdi rhel2.vdi命令迅速克隆出另一台虚拟机。我们将一台虚拟机用作目标机,另一台用作开发机。我 们可以利用主机的命名管道来完成两台虚拟机间的通信。一台虚拟机在主机中创建命名管道并将其串口与管道相连,另外一台虚拟机也将自己的串口连接到主机的命 名管道上,这样就实现了两个虚拟机串口的连接。两台虚拟机都使用自己的COM1端口,主机的命名管道同为/tmp/vbox,在配置时由一台虚拟机创建, 另一台则不创建。我们可使用以下的方式来测试两虚拟机的串口是否连接成功: (1)首先启动创建管道的虚拟机,再启动另一台虚拟机,然后使用命令stty ispeed 115200 ospeed 115200 -F /dev/ttyS0将各自COM1端口的输入输出波特率都设为115200。 (2)在其中一台虚拟机v1终端上执行cat /dev/ttyS0, 在另一台虚拟机v2上执行 echo ok … Continue reading

Posted in Linux&Minix, 虚拟化 | Tagged , , , | Leave a comment

在RHEL 5上安装Xenoprof

Xenoprof是HP公司针对OProfile工具开发的一个接口,它使得OProfile能够适用于基于Xen的虚拟环境,从而能够对内核、应用程序等的性能信息进行监控,在官网http://xenoprof.sourceforge.net/上有详细的介绍。之前我在《OpenSolaris, Fedora and Xen 之 Fedora 10上Xen 3.3.1的安装与配置》一文中写了关于Xen 3.3.1的安装过程,本文我将介绍如何在RHEL 5上安装Xenoprof。 安装好Xen后,进入Dom0,如果你还未安装Xenoprof,键入opcontrol --reset命令,会有以下错误信息,而正常情况下是没有任何提示信息的。 [root@v6 oprofile-0.9.3]# opcontrol --reset FATAL: Module oprofile not found. FATAL: Module oprofile not found. Kernel doesn't support oprofile 具体安装过程如下: 1. 从http://oprofile.sourceforge.net/上下载oprofile-0.9.3(虽然目前的最新版是0.9.5,但目前Xenoprof只支持到oprofile 0.9.3); 2. 从Xenoprof官方网站http://xenoprof.sourceforge.net/上下载oprofile-0.9.3-xen-r2.patch; 3. tar xzvf oprofile-0.9.3.tar.gz解压oprofile,并将oprofile-0.9.3-xen.r2.patch复制进oprofile-0.9.3文件夹,然后执行patch … Continue reading

Posted in C/C++/Others, Linux&Minix, 虚拟化 | Tagged , , , | Leave a comment

Minix、Linux及Solaris文件系统分析和对比

文件系统是操作系统中负责管理和存储文件的重要软件机构,它由三部分组成:与文件管理有关的软件、被管理的文件以及实施文件管理所需的数据结构。从系统角度来看,文件系统是对文件存储器空间进行组织和分配,负责文件的存储并对存入的文件进行保护和检索的系统。本文分析了Minix、Linux和Solaris文件系统,并对三者的文件系统特性进行了比较。 Continue reading

Posted in Linux&Minix, Solaris | Tagged , , , , , | Leave a comment

Minix,Linux2.6,Solaris10进程模型分析和对比

进程在操作系统中是一个非常重要的概念,应用程序被加载到内存后叫进程,也就是一个程序的一次动态执行。每个进程对应一道特定的程序,程序是静态的,而进程是动态的,进程描述程序的执行过程并且可以作为共享资源的基本单位。要想理解操作系统的各种机制原理,有必要对进程概念有深入透彻的理解。 本文重点介绍了Minix、Linux2.6及Solaris10的进程模型,并对三种操作系统的进程模型进行了比较。 Continue reading

Posted in Linux&Minix, Solaris | Tagged , , | Leave a comment

体验最华丽的Linux操作系统openSUSE 11.0

装上最华丽的Linux操作系统openSUSE 11.0了,目前我的笔记本是Windows XP、OpenSolaris、Ubuntu和openSUSE共存的局面。 华丽的openSUSE 11.0桌面 一直想体验传说中的openSUSE 11.0,之前曾在OpenSolaris里使用VirtualBox安装过,但效果并不理想,特别是分辨率等效果不能达到最佳状态,而且在响应速度上也不能让人满意。过去曾经因为安装Ubuntu不能覆盖OpenSolaris的Grub而导致整个硬盘的分区表被破坏,而电脑上已经装上了OpenSolaris,为了不丢失硬盘数据,我一直特别谨慎,没有再安装其他系统。昨天猛然发现OpenSolaris里竟然没有smc,在网上搜索时发现了一个smc的替代软件Visual Panel,评价也不错,于是毫不犹豫地装上了。重启后发现OpenSolaris系统已经被破坏,原因就在于Visual Panel支持的是build 91以上的OpenSolaris,而我的系统版本过低,仔细看看那篇博文最后的几条评论,才后悔不已:一个外国朋友也因为这个原因系统无法启动,而且似乎无法修复。没办法,只有重装,懒得折腾。突然想起早几天刻录的openSUSE 11.0,何不先安装个openSUSE玩玩呢? 从openSUSE 11.0的安装界面就可想象得出它与众不同的炫,整个安装过程很快,感觉比Ubuntu要快一些,只不过安装的配置过程比Ubuntu稍复杂,所以新手最好在指导下安装(由于三个主分区已经被使用,所以我把它装在逻辑分区里)。安装完成后,openSUSE的Grub能自动将之前的Ubuntu8.10和Windows XP挂上。 一切比较顺利,拷贝出了openSUSE的/boot/grub/menu.lst后,继续安装OpenSolaris。安装后默认的Grub变成了OpenSolaris的,Ubuntu和openSUSE暂时无法识别,按照之前配置Ubuntu的方法修改了/rpool/boot/grub/menu.lst配置文件,即把title、boot、initrd等属性添加了进去,重启后发现Grub上四个系统虽都挂上了,但openSUSE不能正常启动,总是提示文件或目录被破坏。无奈进入Grub命令行,由于系统启动文件默认在根分区的第一个扇区,于是我开始尝试另一种boot方式。 #root (hd0,2) #chainloader +1 #boot 成功了!进入了openSUSE的Grub界面,系统也顺利地启动起来了!原来OpenSolaris的Grub并没有覆盖openSUSE的Grub,而只是变成默认的了,其他系统Grub还是存在的。把OpenSolaris配置文件里openSUSE的信息改成: Title openSUSE 11.0 Root (hd0,2) Chainloader +1 这样四个系统都会被OpenSolaris的Grub识别并顺利启动,相信如果默认使用openSUSE的Grub,这样配置OpenSolaris应该也是没有问题的。 体验了openSUSE 11.0后,发现它的桌面效果确实比Ubuntu好一些,风格也和Windows很相似,并且几乎集成了所有常用的软件(麻雀虽小,五脏俱全)。不过在使用Firefox上网时发现其响应速度相对比较慢,且默认的中文字体看起来有些奇怪,不过这些并不能掩饰它优秀的视觉效果。在中文输入法上, FCITX是很好的选择。在http://packages.opensuse-community.org/搜索fcitx安装后,终端键入sudo vi /etc/sysconfig/language,INPUT_METHOD="" 修改为fcitx ,然后重新启动openSUSE系统即可。 不知道openSUSE有没有像Fedora那样集成了Xen,去玩玩虚拟化……

Posted in Linux&Minix, Solaris | Tagged , , | 2 Comments

如何在硬盘上同时安装OpenSolaris、Linux和Windows三系统

对于大多数电脑用户来说,Windows操作系统仍然是其首选。而如果要使用OpenSolaris、Linux等其它优秀的操作系统,可以在Windows上使用虚拟机,也可以直接在硬盘上安装多系统。使用虚拟机最大的瓶颈就是性能,而性能正是IT领域最关心的问题。所以,对于一个IT人士,在自己的电脑上同时安装多系统是有必要的。本文主要介绍了如何在硬盘上同时安装OpenSolaris 2008.05、Ubuntu 8.10和Windows XP三系统,由于水平有限,说得不当之处请谅解。 Continue reading

Posted in Linux&Minix, Solaris | Tagged , | 3 Comments