linux 2.6 设备驱动模型
1.背景
随着设备拓扑结构越来越复杂,需要为内核建立一个统一的设备模型,对系统结构做一般性的抽象描述。
有了该抽象结构,可支持多种不同的任务:
a) 电源管理 完成电源管理工作需要对系统结构的理解,且有严格的顺序,如:一个USB宿主适配器,在处理完所有与其相连接的设备面前是不能关闭的;
b) 与用户空间通信 由/sysfs虚拟文件系统展示设备的属性
c) 热插拔设备
d) 对象生命周期
2.sysfs 虚拟文件系统
sysfs 是一个特殊的文件系统,类似于/proc。sysfs不仅象/proc一样允许用户空间访问内核的数据,而且它以更结构化的方式向用户提供内核数据信息。
sysfs的一个目的就是展示设备驱动模型中各组件的层次关系。其顶级目录包括:
a) block
b) device
c) bus
d) drivers
e) class
f) power
g) firmware
每个目录代表一个kobject对象,每个文件代表kobject的属性。
3. Kobject、Kset 和 subsystem
3.1 Kobject
Kobject 是组成设备模型的基本 ......
MAC地址为网卡的物理地址,在Windows系统下非常容易修改,在linux模式下则有些复杂, 我们看看VMware虚拟机中修改Linux MAC地址的方法
方法一:
这个方法最直接简单有效,修改Linux系统里相关rc.local文件MAC值即可。
方法二:
修改虚拟机的*.vmx文件,这种方法最值得推荐,因为这样就类似于重新“烧录”了VMware虚拟机的“物理网卡ROM”。方法是:
分两种情况:
第一种:
ethernet0.addressType="static"
ethernet0.Address="00:50:56:0A:0B:0C"
"static"说明VM的"物理网卡"的MAC是静态设定的,你可以改成一个以005056开头的另外一个MAC即可。改完启动VM时如果问你 SSID的话,选择“KeepAlways”。
第二种:
ethernet0.addressType="generated"
uuid.location="564ddcf1ffaa75ea-f1b9ee0d689c655c"
uuid.bios="564ded23138c9691-7c68b2098baabbcc"
ethernet0.generatedAddress="00:0c:29:aa:bb:cc"
"generated"说明VM的"物理网卡"的MAC是系统随机动态设定的,你可以通过将uuid.bios后六位及 ethernet0.generatedAddress后六位改成你想要改成的以000c29开头的MAC即可。
方法三:
修改Linux系统里相关/etc/sysconfig/network-sc ......
在使用Windows命令行操作MySQL数据库的时候,以utf8格式存储在MySQL数据库中的数据,从命令行读取出来总是乱码,显示全是问号。或者从命令行插入新数据,结果相反,在命令行中显示是正常的,但是在PHPMyAdmin中却是乱码。
经过上网查找研究,发现mysql的命令行客户端根本无法以utf-8的形式返回数据,解决如下。
插入或者返回数据之前先运行这一句:SET NAMES GB2312; ......
在使用Windows命令行操作MySQL数据库的时候,以utf8格式存储在MySQL数据库中的数据,从命令行读取出来总是乱码,显示全是问号。或者从命令行插入新数据,结果相反,在命令行中显示是正常的,但是在PHPMyAdmin中却是乱码。
经过上网查找研究,发现mysql的命令行客户端根本无法以utf-8的形式返回数据,解决如下。
插入或者返回数据之前先运行这一句:SET NAMES GB2312; ......
1、下载MySQL的Linux安装文件
Linux下安装MySQL需要下面两个文件:
MySQL-server-5.1.7-0.i386.rpm
下载地址为:http://dev.mysql.com/downloads/mysql/5.1.html,打开此网页,下拉网页找到“Linux x86 generic RPM (statically linked against glibc 2.2.5) downloads”项,找到“Server”和“Client programs”项,下载需要的上述两个rpm文件。
2、Linux下安装MySQL
rpm文件是Red Hat公司开发的软件安装包,rpm可让Linux在安装软件包时免除许多复杂的手续。该命令在安装时常用的参数是 –ivh ,其中i表示将安装指定的rmp软件包,V表示安装时的详细信息,h表示在安装期间出现“#”符号来显示目前的安装过程。这个符号将持续到安装完成后才停止。
1)安装服务器端
在有两个rmp文件的目录下运行如下命令:
[root@test1 local]# rpm -ivh MySQL-server-5.1.7-0.i386.rpm MySQL-client-5.1.7-0.i386.rpm
显示如下信息。
warning: MySQL-server-5.1.7-0.i386.rpm
signature: NOKEY, key ID 5072e1f5
Preparing... ############################### ......
1、下载MySQL的Linux安装文件
Linux下安装MySQL需要下面两个文件:
MySQL-server-5.1.7-0.i386.rpm
下载地址为:http://dev.mysql.com/downloads/mysql/5.1.html,打开此网页,下拉网页找到“Linux x86 generic RPM (statically linked against glibc 2.2.5) downloads”项,找到“Server”和“Client programs”项,下载需要的上述两个rpm文件。
2、Linux下安装MySQL
rpm文件是Red Hat公司开发的软件安装包,rpm可让Linux在安装软件包时免除许多复杂的手续。该命令在安装时常用的参数是 –ivh ,其中i表示将安装指定的rmp软件包,V表示安装时的详细信息,h表示在安装期间出现“#”符号来显示目前的安装过程。这个符号将持续到安装完成后才停止。
1)安装服务器端
在有两个rmp文件的目录下运行如下命令:
[root@test1 local]# rpm -ivh MySQL-server-5.1.7-0.i386.rpm MySQL-client-5.1.7-0.i386.rpm
显示如下信息。
warning: MySQL-server-5.1.7-0.i386.rpm
signature: NOKEY, key ID 5072e1f5
Preparing... ############################### ......
级别: 中级
申 毅 (shenyyi@cn.ibm.com),
软件工程师, IBM 中国软件开发中心
2008 年 5 月 29 日
想让进程在断开连接后依然保持运行?如果该进程已经开始运行了该如何补救? 如果有大量这类需求如何简化操作?
我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务,
结果却由于网络的不稳定导致任务中途失败。如何让命令提交后不受本地关闭终端窗口/网络断开连接的干扰呢?下面举了一些例子,
您可以针对不同的场景选择不同的方式来处理这个问题。
nohup/setsid/&
场景:
如果只是临时有一个命令需要长时间运行,什么方法能最简便的保证它在后台稳定运行呢?
hangup 名称的来由
在 Unix
的早期版本中,每个终端都会通过 modem 和系统通讯。当用户 logout 时,modem 就会挂断(hang up)电话。 同理,当 modem
断开连接时,就会给终端发送 hangup 信号来通知其关闭所有子进程。
解决方法:
我们知道,当用户注销(logout)或者网络断开时,终端会收到
HUP(hangup)信号从而关闭其所有子进程。因此,我们的解决办法就有两种途径:要么让进程忽略 HUP
信号,要么让进程运行在新的会话里从而成为不 ......
Apache 2 and PHP Installation
The following notes are how I got Apache 2 and PHP 5 (or PHP 4) working together on Linux. These instructions also apply, mostly, for any UNIX-like system, especially other Linux distributions. If you have a recent Linux distribution (say since 2002), you already have Apache 2 and PHP, so you don't need to do this unless you want the latest Apache 2 or PHP release or need to customize the Apache or PHP software. Don't forget to remove (or at least disable) the Apache rpm package if you install your own custom Apache.
Apache 2 Version Tip: Beginning with Apache 2.0.42 the API will be kept stable (yeah!). That means you will NOT have to recompile modules (and possibly upgrade/fix source) every time you install a new Apache release. This assumes you stay in the same Apache release series. For example, upgrading from 2.2.0 to 2.2.2 should work. This will not apply to upgrading to the next series (e.g., "development" 2.3.x or "stable" 2.4.x). ......