- 博客(27)
- 资源 (1)
- 收藏
- 关注
原创 使oracle运行在selinux中的实践-附源代码
已经差不多1年半没有发文了,眼看着2012即将成为过去,看着荒草丛生的博客,心中想着还是发点什么东西,也许会帮到别人。同时,也聊以自慰自己还在技术圈混呢。2011年初,在一次安装体验FC14的过程中注意到了其已经很完善的SELinux模块。记得在几年前第一次看到Linux发行版中的SELinux简直认为就是个鸡肋,什么都不能运行。但在FC14中大量的模块使我映像深刻,所有系统的默认服务
2012-12-14 00:56:53
2516
1
原创 从CPU角度看内存访问对齐
关于自然对齐 1. 首先什么是cache line? cache line就是处理器从RAM load/store数据到CPU cache所使用的数据线。2. 什么是对齐:有些人说,address of data % sizeof(data type)==0 就是对齐,其实这不准确,全面的理解它必须从CPU为什么需要对齐,不对齐就会造成数据访问花费额外的时钟周期,和额外的指令(编译器或
2011-06-26 17:03:00
7146
3
原创 再谈位运算
其实位运算最有用的是在程序中发挥什么作用,往往是妙用,会让你的程序变得简洁高效许多。用其他办法无法实现位运算的效率。今天我不讲运算规则,而从作用入手,用我们习惯的数学语言描述它们的作用,C/C++的位运算包括:1. 按位与&:a&b,作用有。
2011-02-22 18:21:00
2042
原创 迁移到fedora core 13的要点备查,和fc 13的新特性总结
最近终于放弃我的老redhat9,全部迁移到FC13,虽然很早就接触过fc2,3,4。但好像现在FC13的变化很大,不得不花点时间看看。整理一点心得以备查阅。1.selinux, 记得刚开始接触fc最讨厌的就是selinux,总是莫名奇妙禁止很多以前RH7/8/9的正常操作,所以以前一安装好就将selinux关闭。裸奔的好处是自由:0),但人要与时俱进,不能还停留在以前的时代了, 看到FC13的selinux的policy越来越完善,心里叫好,一定会省事很多。问题一:首先遇到的第一个问题是从RH9迁移过来的
2010-11-10 18:11:00
1757
原创 调试linux内核总览
<br />1. 内核自带的trace方法:<br /> a. 直接在内核中添加printk()调用。<br /> c. Oops, 基本上是用来显示内核出错的瞬间寄存器的内容。参见内核文档.kernel-Oops.txt<br />2. 无源内核调试器:<br /> a. kdb,使用SysRq键中断后,进行内核内存和寄存器的检查。需要在内核源码上打kdb补丁。也可以用一个串口终端程序。<br /> b. Kprobes, 通过编写一个简单的module,获取任何内核数据结构。 使
2010-11-01 02:04:00
1540
原创 redhat9成功升级至2.6.36内核备忘
redhat9升级至2.6内核昨天我升级内核搞了几天终于搞好了特意跟各位分享一下心得,希望对各位有效一、2.6内核有哪些特点? 1. 内核是抢占式的, 这将显著地提高交互式和多媒体应用程序的性能。2. 添加了sysfs文件系统, 它集成了下面3种文件系统的信息:针对进程信息的proc文件 系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统( 安装在/sys目录)是核心看到的设备树的一个直观反映。3. 为了区别以 .o 为扩展名的常规对象文件,内核模块现在使用的扩展
2010-10-22 12:54:00
3360
4
原创 IEEE 754浮点数表示及浮点数转换全解
基本上我们记住几个公式就行了(蓝色字体公式)。第一:浮点表示形式: N=|s| E | M | 。 单精度:s=1位,E=8位,M=23位。 双精度 s=1位,E=11位,M=52位 第二:bias=2^(k-1) - 1, bias是归一化偏置值,或模,代表指数E所能表达的最大值,k是E的位数。它的作用是将浮点数的值分布向0的方向靠拢,本来2
2010-04-01 19:04:00
4249
1
转载 Grub源码分析
GRUB整体分析总体上我们可以把GRUB看成一个微型的操作系统,他有Shell,支持Script,有文件系统……我们可以把Stage1和Stage1.5看成一个引导程序,而Stage2则是一个操作系统,只不过这个操作系统是专门用来引导其他操作系统的操作系统,为此,Stage2支持像kernel,initrd,chainloader等等为此目的而设置的内部“命令”。3.1 GRUB引导操作系统的两
2009-11-11 17:59:00
5922
原创 关于登录认证过程
最近,安装pam和登录过程,一些经验总结如下:Linux系统登录过程简述如下: read /etc/inittab get username in tty get password init ---------------------> mingetty ---------------------------> lo
2008-06-02 16:36:00
1871
转载 从程序员角度看ELF
创建时间:2001-09-15文章属性:翻译文章来源:http://www.xfocus.org文章提交:alert7 (sztcww_at_sina.com)从程序员角度看ELF原文:《 ELF:From The Programmers Perspective》作者:Hongjiu Lu hjl@nynexst.com>NYNEX Science & Technology, Inc
2008-05-29 12:45:00
3602
2
转载 将linux文件大小优化进行到底
文章来源:前言:有些时候,文件的大小是很重要的,从这片文章中,也探讨了ELF文件格式内部的工作情况与LINUX的操作系统。该片文章向我们展示了如何构造一个超小的ELF可执行文件。文章中给出的这些example都是运行在intel 386体系的LINUX上。其他系统体系上或许也有同样的效果,但我不感肯定。我们的汇编代码使用的是Nasm写的,它的风格类似于X86汇编风格。NASM软件是免费
2008-05-29 11:53:00
2645
原创 Linux 系统启动过程(initrd部分) --- Linux boot process (initrd part)
以前一直没有研究过initrd部分,只是知道linux内核启动后会首先由引导装载器读取initrd映像来启动ramdisk.它的作用是鸡和蛋问题的解决方案,即首先安装一个内存盘作为临时的root,然后加载其上的磁盘/网络磁盘驱动程序,从而找到真正的硬盘设备/网络文件系统,再挂载它为真正的root,从而进入整个linux world。但这里面到底干了些什么,以及怎么实现的没有仔细研究,也认为比较简单
2008-05-28 13:03:00
6697
4
原创 zImage和bzImage的区别
bzImage和zImage的区别来自于保护模式代码的放置位置:1.众所周知,内核映像包括两部分代码:实模式代码和保护模式代码,当引导装载器装载内核映像到代码段内存时,分别放置实模式代码和保护模式代码到不同的位置,然后进入实模式代码执行,实模式代码执行中转入CPU保护模式,开始执行32位保护模式代码。2.不管是zImage还是bzImage,他们的实模式代码部分都被装入0x9000:0000(
2007-06-22 13:51:00
4593
1
原创 Linux系统如何正确使用和安装内核模块
模块是Linux内核支持的一种动态加载的组件,大多数的模块是驱动程序。而且Linux的模块设计成可以堆叠式的----就是一个模块运行在另一个模块之上,这个模块也可能再为它上面的模块提供支持,当然所有的模块又都运行在内核之上。这样一来一个模块就可能依赖于另一个模块提供的服务,或者内核提供的服务。在安装这个模块时,安装程序就需要知道这些依赖关系并先于模块本身,安装其他依赖的模块。下面的程序和文件完成整
2007-06-15 19:57:00
5785
原创 Linux/Unix编程怎样入门
1,先有linux环境搭minGW和cygwin都有点麻烦,最最简单的办法还是装个真正的linux,用虚拟机也好,在网络上的另一台机器也好。这样不仅快,而且你有了真正的环境。2.会C/C++语言(估计你会的)3.入门阶段熟悉gcc命令行,最基本的参数,如,-g,-W,-O,-o,-c 建议看man gcc(很大找想要的)4.编译第一个helloworld程序: 基本命令 gcc helloworl
2007-04-23 10:05:00
2724
原创 我的Linux之路
我学linux是在大学,1997年左右。那时候对计算机特别着迷,刚刚摸过一两次计算机,看着windows95的星空屏保,觉得计算机太神奇了。所以C语言就学的特别认真,没事总往村里跑,突然有一天在中关村看到一张盗版盘(基本没人问津,塑料膜已经磨成半透明了):红帽子.当时是哪个版本记不的了,但上面写着自带操作系统源码,而且是unix(盗版盘上瞎写,但我当时很崇拜unix,不光因为人们都说Unix被装在
2007-03-29 15:14:00
1932
1
原创 x86 CPU的操作模式
32位Intel处理器拥有三种基本模式, ****保护模式:纯32位保护执行环境。该模式拥有一个子模式,虚拟8086模式: **虚拟8086模式是运行在保护模式中的实模式,为了在32位保护模式下执行纯16位实模式程序。它不是一个真正的CPU模式,还属于保护模式。 ****实模式:纯16位无保护执行环境。 保护模式同实
2006-10-13 14:22:00
3050
1
原创 如何使用gcc进行多阶编译
关于gcc的编译选项,不要老自己调用g++,他不能连接c++目标文件,gcc不是指C编译器,而是Compiler Collection.他自己会调用需要的编译器/连接器,as,g77,g++,gcj,ld等...gcc可以做多阶编译 uh! pretty cool :-)怎么做呢... -x 选项指定gcc从哪个等级开始编译(参数是语言名称,参见man gcc),当然可以略,gcc自己根
2006-09-05 13:31:00
1580
原创 关于Linux下C/C++开发的入门
1,先有linux环境搭minGW和cygwin都有点麻烦,最最简单的办法还是装个真正的linux,用虚拟机也好,在网络上的另一台机器也好。这样不仅快,而且你有了真正的环境。2.会C/C++语言(估计你会的)3.入门阶段熟悉gcc命令行,最基本的参数,如,-g,-W,-O,-o,-c 建议看man gcc(很大找想要的)4.编译第一个helloworld程序: 基本命令 gcc helloworl
2006-08-25 13:55:00
3157
原创 如何在安装Linux之后自己修改Swap分区大小
测试试境为RH AS4如果你不清楚swap到底是什么,或分区的概念,那么下面的过程对你来讲可能会有一定的风险。自己扩大Swap也是比较方便的。你必须有root权限,过程中一定要很小心,一不小心就破坏了整个硬盘的数据,执行下面的过程之前你需要三思而行,错误后的后果由执行者自己承担,我这个script只是作为参考。1.以root进入控制台2. #swapoff -a #
2006-08-25 13:53:00
5646
原创 如何安装MySQL5到Linux
以RH9为例若你下载的源码包:1.解压缩源码。 然后,在源顶级目录 ./configure --prefix=/usr/local/mysql ,最好是这个目录,Mysql脚本的默认安装路径。然后make & make install2.添加用户和组 groupadd mysql adduser -g mysql mysql3.进入安装目录(/usr/local/mysql)目录./bi
2006-08-25 13:46:00
1569
原创 如何手工启动X
第一种启动X的方式为xinitX服务器启动方式为$xinit /home/my/myapp -- :0如果你想运行多个程序编辑/home/my/.xinitrc如下/home/my/myapp &xterm & &twm #任何你想运行的window Manager然后运行$xinit当然"-- :0"可以省略,它的作用是表示让xinit同时启动X服务器,并带有参数,“:
2006-08-25 13:41:00
1639
原创 关于Linux内核可加载模块的版本问题
内核识别模块版本号是用两种机制,一种gensym,该机制为所有内核符号根据接口生成一个唯一的CRC符号串,如果内核和模块都开启了该功能,那么当加载版本不匹配的模块时,就会报错,而且这种错误,当使用强行加载时通常也会失败,原因很简单,因为模快使用的内核函数原型发生了变化。第二种就是kernel_version,这个全局串在linux/module.h中定义,并被编译入所有的模块中,当加载时模块时如果
2006-08-25 13:33:00
2283
原创 MS-VC vs. Linux-IDE
对于vc的问题,我用VC也有多年了va当然用过,但说实在的到后来真的没有丝毫乐趣可言,直到我遇到了emacs... 我也不想多说了,引用一篇名为《完全用GNU/Linux工作>>中的话(文中作者看样子喜欢Vim,但我喜欢Emacs):为什么 UNIX 程序员不用 IDE?明白了这个道理你就能体会到 UNIX 的设计思想了。首先,一个 IDE 集成了编辑器,编译器,汇编器,调试器,跟踪器…… 这
2006-08-25 13:09:00
1489
原创 较简单的Makefile写法
最简单的Makefile一行就可以,但你要确信这确实是你想要的hello:因为make足够聪明,它会自动把所有hello.c/hello.cpp/hello.o作为输入,这要看你当前目录下到底有什么,是目标文件还是源文件,make会自动调用gcc -c 或 ld,并编译产生输出hello。并调用正确的编译器/连接器,这叫做隐含规则.也可以这样使用隐含规则,还是因为Make足够聪明hello
2006-08-25 12:55:00
2070
原创 关于 Redhat9 的网络配置文件
完整搜索顺序是:(*为接口名)/etc/sysconfig/networking/profiles/default/ifcfg-*/etc/sysconfig/networking/profiles/default/*/etc/sysconfig/networking/default/ifcfg-*/etc/sysconfig/networking/default/*/etc/sysconfi
2006-08-25 12:53:00
2410
原创 关于Linux下的帧缓冲介绍
fb设备提供了一个图形硬件的抽象层,代表某些视频硬件的帧缓冲,帧缓冲可以直接通过规范定义的接口供软件访问(/dev/fb*)。我们熟知的Xwindows有一个非加速X服务器,XF86_FBDev就是使用帧缓冲驱动,该驱动最早出现于XFree86 3.2版本中,现在已很成熟。帧缓冲在各种显卡硬件各有不同,如ATI Rage128提供了自己的帧缓冲,Cirrus Logic,Matrox,PowerV
2005-03-06 14:49:00
2368
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人