星期日, 十月 17, 2010
ubuntu和macosx共享文件
家里电脑比较多,各种系统都有,文件共享是个大问题,ubuntu提供了一个文件共享功能,一开始觉得很不好用,不过今天总算成功了。
1、system - preferences - file sharing和personal file sharing应该是无关紧要的,我都把它们关闭了。
2、在nautilus里选择要share的目录。
3、右键 - sharing options,或者在属性里选择share。
4、几个选项全选中,或者根据需要选中,share name随便设置一个,应用后可以看到目录图标上多了一个share的标志。
5、在mac里,从finder菜单选择connect to server,输入共享地址,比如smb://192.168.1.4,必须是smb协议。
6、connect!
直接在finder里点击shared里的电脑是不行的,finder只认windows和mac的smb共享,linux的不认。
本想用ftp的,不过懒得设置了。
1、system - preferences - file sharing和personal file sharing应该是无关紧要的,我都把它们关闭了。
2、在nautilus里选择要share的目录。
3、右键 - sharing options,或者在属性里选择share。
4、几个选项全选中,或者根据需要选中,share name随便设置一个,应用后可以看到目录图标上多了一个share的标志。
5、在mac里,从finder菜单选择connect to server,输入共享地址,比如smb://192.168.1.4,必须是smb协议。
6、connect!
直接在finder里点击shared里的电脑是不行的,finder只认windows和mac的smb共享,linux的不认。
本想用ftp的,不过懒得设置了。
星期六, 十二月 13, 2008
ISV alpha测试版发布
经过5天时间的努力,isv的第一个alpha测试版终于完成了,版本号0.8。
特性:
播放一个目录中的图像序列,常见的图像格式都支持。-_________-!
计划特性:
v0.9
更准确的帧率
非序列图像 (bug fix)
v1.0
多线程
v1.1+
内存缓存
v?.?
图像处理(反正也是magick++来做,随时可以加上)
已知问题:
检测文件名的正则表达式不能正确解析非序列文件,即不带数字编号的文件,例如project2_image.jpg.
帧率不准和消耗cpu资源过大。这个问题基本上是定时器的问题,期望用多线程来解决。
写在后面的废话:
mac上缺少一个轻量级的序列播放器,当然nuke,shake都可以播放序列,可以总觉得他们太庞大,对于只是播放序列而言,操作也太繁琐。当然我的这个也不小,算上imagemagick库,fltk库,boost::regex库,也得数十MB。-_______________-!
自己写一个播放器最大的问题就是获取文件序列和解析图像文件,解析图像交给magick++了,解析文件名用boost::regex,我硬盘上序列基本上都可以播放。
图上有真相:
特性:
播放一个目录中的图像序列,常见的图像格式都支持。-_________-!
计划特性:
v0.9
更准确的帧率
非序列图像 (bug fix)
v1.0
多线程
v1.1+
内存缓存
v?.?
图像处理(反正也是magick++来做,随时可以加上)
已知问题:
检测文件名的正则表达式不能正确解析非序列文件,即不带数字编号的文件,例如project2_image.jpg.
帧率不准和消耗cpu资源过大。这个问题基本上是定时器的问题,期望用多线程来解决。
写在后面的废话:
mac上缺少一个轻量级的序列播放器,当然nuke,shake都可以播放序列,可以总觉得他们太庞大,对于只是播放序列而言,操作也太繁琐。当然我的这个也不小,算上imagemagick库,fltk库,boost::regex库,也得数十MB。-_______________-!
自己写一个播放器最大的问题就是获取文件序列和解析图像文件,解析图像交给magick++了,解析文件名用boost::regex,我硬盘上序列基本上都可以播放。
图上有真相:

星期二, 一月 08, 2008
从ubuntu的邮件列表上转一篇: 终于可以在ubuntu上养驴了
https://lists.ubuntu.com/archives/ubuntu-zh/2005-August/000159.html
1. P2P 软件
推荐使用MLdonkey(http://mldonkey.berlios.de/),支持edonkey、bt、gnutella等多种P2P网络。
1.1. 安装运行
MLdonkey上提供了各个OS上的二进制版,无需安装,下载解压后运行mlnet即可。
mlnet启动后会自动在当前用户目录下生成.mldonkey目录,所有的配置和下载的文件默认都保存在这里。
1.2. 配置和使用
1.2.1. 默认管理接口
MLdonkey自带了一个web服务器,默认端口4080,可以通过web浏览器进行管理。
你也可以通过telnet进行管理:
telnet localhost 4000
在downloads.ini的Interfaces部分有关于这些管理接口的配置,允许你指定端口、允许访问的IP等,默认只允许本机(127.0.0.1)访问。
1.2.2. Sancho:使用GUI进行管理
Sancho(http://sancho-gui.sourceforge.net/)很好用,也和MLdonkey一样,解压即可使用(运行sancho)。注意要下载那个“linux binaries - gtk”版本的,“linux binaries - fox”版会有乱码。
第一次使用会引导您进行一些配置,如配置文件夹的位置(默认是用户目录下的.sancho)等,最贴心的是你可以指定mlnet的位置,使你每次启动Sancho的时候自动启动MLdonkey,而关闭Sancho的同时也关闭MLdonkey。如果你没有运行MLdonkey,这时会出错,关闭后再次启动即可。
Sancho软件自身的一些配置
* 为了方便使用,可以在面板上添加Sancho的启动器,Sancho目录的distrib子目录下自带了一些图片,选择sancho-32.xpm作为图标应该正好。
* Sancho软件自身相关的配置基本上都在tools->Preferences菜单的sancho:xxx条目中,另一个条目就是Paths,就是在这里你可以指定mlnet的位置
* 如果你知道某个MLdonkey配置项的名称,你可以选择All条目,在这里你可以通过搜索快速定位配置项。
* 最小化到系统托盘:sancho:Main->General标签,选择“On minimize button: minimize to systray”。
* 悬浮窗口:右键系统托盘图标->Toggle DND box
使用MLdonkey
* 命令: 以下用到的命令是MLdonkey自己的一套管理命令,在web管理接口选择Help+->LongHelp,可以看到完整的列表。
命令必须通过管理接口运行。telnet接口是命令行界面,直接输入运行;web接口在Input框中输入;Sancho中切换到Console,在窗口底部有长条形窗口可以用来输入命令。在Console中你还可以查看MLdonkey的输出,比如连接服务器出错的原因等。
* 服务器
选择eDonkey服务器很重要,通常决定了你能下载什么文件。服务器列表在server.ini文件中,默认是空的。使用如下命令导入eMule的server.met
servers "/home/username/server.met"
在Sancho的Console中查看连接服务器的信息,许多服务器都会提示“ERROR : Your edonkey client is too old, please update it”和“WARNING : Your 4662 port is not reachable. Please review your network config”,后一条好像对连接没什么影响,出现前一条则说明你无法连接该服务器了,我连接195.245.244.243就是这样,Verycd上发布的国内的东西(非转帖自国外)根本下不了(没有源)。我不知道如何解决,有人说这是MLdonkey对服务器不友好,我看是服务器对MLdonkey不友善,幸好现在有了Kad和Overnet,使我们不在那么依赖服务器
* Kad和Overnet
Kad和Overnet使我们不再依赖服务器而能连接到Kad(Overnet)中的每头驴。显然需要一些已知的主机来开始我们的Kad之旅。这些主机就是boot peers,也都记录在server.ini中,默认是空的。准备好nodes.dat(eMule自带的Kad peers数据文件)和contact.dat(在downloads.ini中的web_infos配置项可以找到下载地址),用如下命令导入到 MLdonkey
ov_load "/home/username/contact.dat"
kad_load "/home/username/nodes.dat"
接下来,还需要在MLdonkey中激活Kad和Overnet,配置项是enable_kademlia和enable_overnet。
好了,现在你已经可以下载Verycd的资源了,虽然搜索源时好象有点慢
* 带宽控制
默认的带宽控制可能有点保守,下载只有50K,在Bandwidth中,自己改吧
* 其它P2P网络
在Sancho界面的左下角有一排按钮,是用来激活其它P2P网络的,你甚至可以用来下载http、ftp文件(fileTP)
* 文件名乱码
Sancho提供了改名功能:右键菜单->Rename
* 添加下载
MLdonkey对Firefox有很好的支持,在MLdonkey目录的子目录ed2k_mozilla下有一个xpi文件,用Firefox打开来安装插件,重启Firefox后就可以直接点击ed2k链接来添加下载了。
在Sancho界面的右下角有一排按钮,鼠标放上去都会有提示,fileTP是用来输入http、ftp下载地址的,“Open the link Repper”允许你输入一个网页地址,然后自动帮你找出该网页上的有效下载地址,不过功能似乎较弱,“Toggle link entry window”可以让你输入ed2k、torrent等地址
几句话:与我在同在一个内网的另一台XP上的eMule(中国驴版)相比,速度是慢了些,当然这也有可能是我在XP上开了VNN之故,而且这些客户端据说也对针对国内用户做了优化,而MLdonkey使用没多久,许多参数可能没有设置好。Anyway,驴儿跑起来了,虽然是慢跑(20-30k)的样子
为什么不apt-get?版本都比较老了,而且也不象会及时更新的样子,而用过eMule的都知道,几个月就更新一次
aMule更接近eMule,可能速度更快,但apt的也已经很久没更新了,gtk1的东西用起来总是很不爽,纯粹个人喜好
星期二, 十一月 20, 2007
Firefox3 beta1第一印象
看到solidot说firefox3 beta1出来了,传说中的ff3终于出来,赶紧下来试试。
第一印象,这个软件的界面还是“建设中”,原先的主题都用不了,而默认的主题似乎也有问题,标题栏是白色的,和系统的很不协调。这个问题不严重,正式版应该就没有这样的事情了。
接着,还是界面。osx版本终于改用本地控件了,当然只是网页中的空间是本地主题,这个算是一个不错的改进。不过之前说的增强本地化不会就这么点动作吧?
然后是中文方面的。这次不用再费劲的去调整那两个css了,什么都不管,中文显示的就不错。问题还是有的,比如baidu的“百度一下”竟然还是宋体。现在还不能确定,因为系统改动比较多,也许问题还是没有解决。
最后是稳定性。从下载到现在才刚刚10分钟,没什么好说的。我猜好不到哪里去。
更新:
刚才又下载了linux版的,现在用了一会儿,感觉比osx版的要好一些。界面的本地化也做得比较不错,目前没有什么毛病。
第一印象,这个软件的界面还是“建设中”,原先的主题都用不了,而默认的主题似乎也有问题,标题栏是白色的,和系统的很不协调。这个问题不严重,正式版应该就没有这样的事情了。
接着,还是界面。osx版本终于改用本地控件了,当然只是网页中的空间是本地主题,这个算是一个不错的改进。不过之前说的增强本地化不会就这么点动作吧?
然后是中文方面的。这次不用再费劲的去调整那两个css了,什么都不管,中文显示的就不错。问题还是有的,比如baidu的“百度一下”竟然还是宋体。现在还不能确定,因为系统改动比较多,也许问题还是没有解决。
最后是稳定性。从下载到现在才刚刚10分钟,没什么好说的。我猜好不到哪里去。
更新:
刚才又下载了linux版的,现在用了一会儿,感觉比osx版的要好一些。界面的本地化也做得比较不错,目前没有什么毛病。
星期三, 十月 31, 2007
如何在windows linux osx之间交换数据
自从用osx之后,不同格式的分区之间的数据交换就一直是一个严重的问题。linux支持的格式比较多,但是除了自身的格式 之外,其他系统的也只是支持fat32。很明显,现在fat32已经不能满足要求了,随便一个什么dvd的iso都有可能超过4G。osx也有同样的问题,除了自身的格式之外,也是只支持fat32。osx和linux对ntfs的支持也只有read only,虽然说ntfs 3G支持在linux和osx上写入ntfs,但是根据实际的使用经验,很多目录都列不出来。
现在三个系统都可以读取并且支持4G以上文件的是:ext2/3,hfs+,ntfs,ufs
ufs先不考虑,它有很多中标准,solaris和bsd的就不一样,几种bsd之间的也不一样,osx好像支持自己的ufs。
ntfs也无法在linux和osx上完美的实现读写,也不考虑了。
在windows上用ifs可以读写ext2/3,除了不支持权限和日志之外,还算完美,用macdrive可以读写hfs+的分区,当然也是不支持日志。
在linux上,内核本身就支持hfs+的读写,也是不支持日志,需要在osx里把日志关闭才可以在linux中读写。在有日志的时候就是read only。
在osx中关闭某个卷的日志:
sudo diskutil disableJournal "/Volumes/nameofdisk"
然后在linux中mount:
mount -t hfsplus /dev/xxx /media/MACDRIVE
参考:
http://fosswire.com/2007/09/12/dealing-with-mac-formatted-drives-on-linux/
星期六, 六月 23, 2007
linux中的设备节点(/dev/*)(转)
http://www.linuxsir.org/bbs/showthread.php?t=306623
设备管理是linux中比较基础的东西,但是由于Linux智能程度的越来越高,Udev的使用越来越广泛,使得越来越多的Linux新用户对 /dev 目录下的东西变得不再熟悉。有时候遇见问题就会变得抓狂
本文是我在写作《DIY 一个基于LFS的实用 Mini-LAPP 服务器》过程中整理的资料,拿出来与大家共享
Linux 中的设备有2种类型:字符设备(无缓冲且只能顺序存取)、块设备(有缓冲且可以随机存取)。每个字符设备和块设备都必须有主、次设备号,主设备号相同的设备是同类设备(使用同一个驱动程序)。这些设备中,有些设备是对实际存在的物理硬件的抽象,而有些设备则是内核自身提供的功能(不依赖于特定的物理硬件,又称为"虚拟设备")。每个设备在 /dev 目录下都有一个对应的文件(节点)。可以通过 cat /proc/devices 命令查看当前已经加载的设备驱动程序的主设备号。内核能够识别的所有设备都记录在原码树下的 Documentation/devices.txt 文件中。在 /dev 目录下除了字符设备和块设备节点之外还通常还会存在:FIFO管道、Socket、软/硬连接、目录。这些东西没有主/次设备号。
Linux内核所能识别的所有设备都记录在
http://www.lanana.org/docs/device-list/
而内核原码树中的 Documentation/devices.txt 可能不是最新版本。
了解这些设备的最基本要求就是对 每个设备文件的含义了如指掌,下面就医列表的形式列出常见的设备文件以及相应的含义(比较偏僻的就省略了):
----------------------------------------------------------------------
主设备号 设备类型
次设备号=文件名 简要说明
----------------------------------------------------------------------
0 未命名设备(例如:挂载的非设备)
0 = 未空设备号保留
1 char 内存设备
1 = /dev/mem 直接存取物理内存
2 = /dev/kmem 存取经过内核虚拟之后的内存
3 = /dev/null 空设备。任何写入都将被直接丢弃,任何读取都将得到EOF。
4 = /dev/port 存取 I/O 端口
5 = /dev/zero 零字节源,只能读取到无限多的零字节。
7 = /dev/full 满设备。任何写入都将失败,并把errno设为ENOSPC以表示没有剩余空间。
8 = /dev/random 随机数发生器。完全由用户的输入来产生随机数。
如果用户停止所有动作,则停止产生新的随机数。
9 = /dev/urandom 更快,但是不够安全的随机数发生器。尽可能由用户的输入来产生随机数,
如果用户停止所有动作,则把已经产生的随机数做为种子来产生新的随机数。
10 = /dev/aio 异步 I/O 通知接口
11 = /dev/kmsg 任何对该文件的写入都将作为 printk 的输出
1 block RAM disk
0 = /dev/ram0 第1个 RAM disk (initrd只能使用ram0)
1 = /dev/ram1 第2个 RAM disk
...
200 = /dev/ram200 第200个 RAM disk
4 char TTY(终端)设备
0 = /dev/tty0 当前虚拟控制台
1 = /dev/tty1 第1个虚拟控制台
...
63 = /dev/tty63 第63个虚拟控制台
4 block 如果根文件系统以是以只读方式挂载的,那么就不可能创建真正的设备节点,
此时就使用该设备作为动态分配的主(major)设备的别名
0 = /dev/root
5 char 其他 TTY 设备
0 = /dev/tty 当前 TTY 设备
1 = /dev/console 系统控制台
2 = /dev/ptmx 所有 PTY master 的复用器
7 char 虚拟控制台捕捉设备(这些设备既允许读也允许写)
0 = /dev/vcs 当前虚拟控制台(vc)的文本内容
1 = /dev/vcs1 tty1 的文本内容
...
63 = /dev/vcs63 tty63 的文本内容
128 = /dev/vcsa 当前虚拟控制台(vc)的文本/属性内容
129 = /dev/vcsa1 tty1 的文本/属性内容
...
191 = /dev/vcsa63 tty63 的文本/属性内容
7 block 回环设备(用一个普通的磁盘文件来模拟一个块设备)
对回环设备的绑定由 mount(8) 或 losetup(8) 处理
0 = /dev/loop0 第1个回环设备
1 = /dev/loop1 第2个回环设备
...
8 block SCSI 磁盘(0-15)
0 = /dev/sda 第1个 SCSI 磁盘(整个磁盘)
16 = /dev/sdb 第2个 SCSI 磁盘(整个磁盘)
32 = /dev/sdc 第3个 SCSI 磁盘(整个磁盘)
...
240 = /dev/sdp 第16个 SCSI 磁盘(整个磁盘)
分区表示方法如下(以第3个 SCSI 磁盘为例)
33 = /dev/sdc1 第1个分区
34 = /dev/sdc2 第2个分区
...
47 = /dev/sdc15 第15个分区
对于Linux/i386来说,分区1-4是主分区,5-15是逻辑分区。
9 block Metadisk(RAID)设备
0 = /dev/md0 第1组 metadisk
1 = /dev/md1 第2组 metadisk
...
metadisk 驱动用于将同一个文件系统分割到多个物理磁盘上。
10 char 非串口鼠标,各种杂项设备和特性
1 = /dev/psaux PS/2鼠标
131 = /dev/temperature 机器内部温度
134 = /dev/apm_bios APM(高级电源管理) BIOS
135 = /dev/rtc 实时时钟(Real Time Clock)
144 = /dev/nvram 非易失配置 RAM
162 = /dev/smbus 系统管理总线(System Management Bus)
164 = /dev/ipmo Intel的智能平台管理(Intelligent Platform Management)接口
173 = /dev/ipmikcs 智能平台管理(Intelligent Platform Management)接口
175 = /dev/agpgart AGP图形地址重映射表(Graphics Address Remapping Table)
182 = /dev/perfctr 性能监视计数器
183 = /dev/hwrng 通用硬件随机数发生器
184 = /dev/cpu/microcode CPU微代码更新接口
186 = /dev/atomicps 进程状态数据的原子快照
188 = /dev/smbusbios SMBus(系统管理总线) BIOS
200 = /dev/net/tun TAP/TUN 网络设备(TAP/TUN以软件的方式实现了网络设备)
TAP模拟了以太网帧(第二层),TUN模拟了IP包(第三层)。
202 = /dev/emd/ctl 增强型 Metadisk RAID (EMD) 控制器
220 = /dev/mptctl Message passing technology (MPT) control
223 = /dev/input/uinput 用户层输入设备驱动支持
227 = /dev/mcelog X86_64 Machine Check Exception driver
228 = /dev/hpet HPET driver
229 = /dev/fuse Fuse(用户空间的虚拟文件系统)
231 = /dev/snapshot 系统内存快照
232 = /dev/kvm 基于内核的虚构机(基于AMD SVM和Intel VT硬件虚拟技术)
11 block SCSI CD-ROM 设备
0 = /dev/scd0 第1个 SCSI CD-ROM
1 = /dev/scd1 第2个 SCSI CD-ROM
...
13 char 核心输入设备
32 = /dev/input/mouse0 第1个鼠标
33 = /dev/input/mouse1 第2个鼠标
...
62 = /dev/input/mouse30 第31个鼠标
63 = /dev/input/mice 所有鼠标的统一
64 = /dev/input/event0 第1个事件队列
65 = /dev/input/event1 第2个事件队列
...
95 = /dev/input/event1 第32个事件队列
21 char 通用 SCSI 设备(通常是SCSI光驱)
0 = /dev/sg0 第1个通用 SCSI 设备
1 = /dev/sg1 第2个通用 SCSI 设备
...
29 char 通用帧缓冲(frame buffer)设备
0 = /dev/fb0 第1个帧缓冲设备
1 = /dev/fb1 第2个帧缓冲设备
...
31 = /dev/fb31 第32个帧缓冲设备
30 char iBCS-2 兼容设备
0 = /dev/socksys 套接字访问接口
1 = /dev/spx SVR3 本地 X 接口
32 = /dev/inet/ip 网络访问接口
33 = /dev/inet/icmp
34 = /dev/inet/ggp
35 = /dev/inet/ipip
36 = /dev/inet/tcp
37 = /dev/inet/egp
38 = /dev/inet/pup
39 = /dev/inet/udp
40 = /dev/inet/idp
41 = /dev/inet/rawip
此外,iBCS-2 还需要下面的连接必须存在
/dev/ip -> /dev/inet/ip
/dev/icmp -> /dev/inet/icmp
/dev/ggp -> /dev/inet/ggp
/dev/ipip -> /dev/inet/ipip
/dev/tcp -> /dev/inet/tcp
/dev/egp -> /dev/inet/egp
/dev/pup -> /dev/inet/pup
/dev/udp -> /dev/inet/udp
/dev/idp -> /dev/inet/idp
/dev/rawip -> /dev/inet/rawip
/dev/inet/arp -> /dev/inet/udp
/dev/inet/rip -> /dev/inet/udp
/dev/nfsd -> /dev/socksys
/dev/X0R -> /dev/null
36 char Netlink 支持
0 = /dev/route 路由, 设备更新, kernel to user
3 = /dev/fwmonitor Firewall packet 复制
59 char sf 防火墙模块
0 = /dev/firewall 与 sf 内核模块通信
65 block SCSI 磁盘(16-31)
0 = /dev/sdq 第17个 SCSI 磁盘(整个磁盘)
16 = /dev/sdr 第18个 SCSI 磁盘(整个磁盘)
32 = /dev/sds 第19个 SCSI 磁盘(整个磁盘)
...
240 = /dev/sdaf 第32个 SCSI 磁盘(整个磁盘)
66 block SCSI 磁盘(32-47)
0 = /dev/sdag 第33个 SCSI 磁盘(整个磁盘)
16 = /dev/sdah 第34个 SCSI 磁盘(整个磁盘)
32 = /dev/sdai 第35个 SCSI 磁盘(整个磁盘)
...
240 = /dev/sdav 第48个 SCSI 磁盘(整个磁盘)
89 char I2C 总线接口
0 = /dev/i2c-0 第1个 I2C 适配器
1 = /dev/i2c-1 第2个 I2C 适配器
...
98 block 用户模式下的虚拟块设备(分区处理方式与 SCSI 磁盘相同)
0 = /dev/ubda 第1个用户模式块设备
16 = /dev/udbb 第2个用户模式块设备
...
103 block 审计(Audit)设备
0 = /dev/audit 审计(Audit)设备
128-135 char Unix98 PTY master
这些设备不应当存在设备节点,而应当通过 /dev/ptmx 接口访问。
136-143 char Unix98 PTY slave
这些设备节点是自动生成的(伴有适当的权限和模式),不能手动创建。
方法是通过使用适当的 mount 选项(通常是:mode=0620,gid=<"tty"组的gid>)
将 devpts 文件系统挂载到 /dev/pts 目录即可。
0 = /dev/pts/0 第1个 Unix98 PTY slave
1 = /dev/pts/1 第2个 Unix98 PTY slave
...
153 block Enhanced Metadisk RAID (EMD) 存储单元(分区处理方式与 SCSI 磁盘相同)
0 = /dev/emd/0 第1个存储单元
1 = /dev/emd/0p1 第1个存储单元的第1个分区
2 = /dev/emd/0p2 第1个存储单元的第2个分区
...
15 = /dev/emd/0p15 第1个存储单元的第15个分区
16 = /dev/emd/1 第2个存储单元
32 = /dev/emd/2 第3个存储单元
...
240 = /dev/emd/15 第16个存储单元
180 char USB 字符设备
96 = /dev/usb/hiddev0 第1个USB人机界面设备(鼠标/键盘/游戏杆/手写版等人操作计算机的设备)
...
111 = /dev/usb/hiddev15 第16个USB人机界面设备
180 block USB 块设备(U盘之类)
0 = /dev/uba 第1个USB 块设备
8 = /dev/ubb 第2个USB 块设备
16 = /dev/ubc 第3个USB 块设备
...
192 char 内核 profiling 接口
0 = /dev/profile Profiling 控制设备
1 = /dev/profile0 CPU 0 的 Profiling 设备
2 = /dev/profile1 CPU 1 的 Profiling 设备
...
193 char 内核事件跟踪接口
0 = /dev/trace 跟踪控制设备
1 = /dev/trace0 CPU 0 的跟踪设备
2 = /dev/trace1 CPU 1 的跟踪设备
...
195 char Nvidia 图形设备(比如显卡)
0 = /dev/nvidia0 第1个 Nvidia 卡
1 = /dev/nvidia1 第2个 Nvidia 卡
...
255 = /dev/nvidiactl Nvidia 卡控制设备
202 char 特定于CPU模式的寄存器(model-specific register,MSR)
0 = /dev/cpu/0/msr CPU 0 的 MSRs
1 = /dev/cpu/1/msr CPU 1 的 MSRs
...
203 char CPU CPUID 信息
0 = /dev/cpu/0/cpuid CPU 0 的 CPUID
1 = /dev/cpu/1/cpuid CPU 1 的 CPUID
...
===================================================================
这部分详细说明一些应该或可能存在于 /dev 目录之外的文件。
链接最好使用与这里完全相同的格式(绝对路径或相对路径)。
究竟是使用硬链接(hard)还是软连接(symbolic)取决于不同的设备。
必须的链接
必须在所有的系统上都存在这些连接:
链接 目标 链接类型 简要说明
/dev/fd /proc/self/fd symbolic 文件描述府
/dev/stdin fd/0 symbolic 标准输入文件描述府
/dev/stdout fd/1 symbolic 标准输出文件描述符
/dev/stderr fd/2 symbolic 标准错误文件描述符
/dev/nfsd socksys symbolic 仅为 iBCS-2 所必须
/dev/X0R null symbolic 仅为 iBCS-2 所必须
[注意] /dev/X0R 是 <字母 X>-<数字 0>-<字母 R>
推荐的链接
推荐在所有的系统上都存在这些连接:
链接 目标 链接类型 简要说明
/dev/core /proc/kcore symbolic 为了向后兼容
/dev/ramdisk ram0 symbolic 为了向后兼容
/dev/ftape qft0 symbolic 为了向后兼容
/dev/bttv0 video0 symbolic 为了向后兼容
/dev/radio radio0 symbolic 为了向后兼容
/dev/i2o* /dev/i2o/* symbolic 为了向后兼容
/dev/scd? sr? hard 代替 SCSI CD-ROM 的名字
本地定义的链接
下面的链接很可能需要根据机器的实际硬件配置创建其中的一部分甚至全部。
这些链接仅仅是为了迎合习惯用法,它们既非必须也非推荐。
链接 目标 链接类型 简要说明
/dev/mouse mouse port symbolic 当前鼠标
/dev/tape tape device symbolic 当前磁带
/dev/cdrom CD-ROM device symbolic 当前CD-ROM
/dev/cdwriter CD-writer symbolic 当前CD-writer
/dev/scanner scanner symbolic 当前扫描仪
/dev/modem modem port symbolic 当前调制解调器
/dev/root root device symbolic 当前根文件系统所在设备
/dev/swap swap device symbolic 当前swap所在设备
/dev/modem 不应当用于能够同时支持呼入和呼出的modem,因为往往会导致锁文件问题。
如果存在 /dev/modem ,那么它应当指向一个恰当的主 TTY 设备。
对于SCSI设备,
/dev/tape 和 /dev/cdrom 应该分别指向"cooked"设备 /dev/st* 和 /dev/sr* ;
而 /dev/cdwriter 和 /dev/scanner 应当分别指向恰当的 /dev/sg* 。
/dev/mouse 可以指向一个主串行 TTY 设备、一个硬件鼠标、
或者一个对应鼠标驱动程序的套接字(例如 /dev/gpmdata)。
套接字和管道
持久套接字和命名管道可以存在于 /dev 中。常见的有:
/dev/printer socket lpd 本地套接字
/dev/log socket syslog 本地套接字
/dev/gpmdata socket gpm 鼠标多路复用器(multiplexer)
/dev/gpmctl socket (LFS-LiveCD中出现)
/dev/initctl fifo pipe init 监听它并从中获取信息(用户与 init 进程交互的通道)
挂载点
以下名称被保留用于挂载特殊的文件系统。
这些特殊的文件系统只提供内核界面而不提供标准的设备节点。
/dev/pts devpts PTY slave 文件系统
/dev/shm tmpfs 提供对 POSIX 共享内存的直接访问
===================================================================
终端(或TTY)设备是一种特殊的字符设备。终端设备是可以在会话中扮演控制终端角色的任何设备,
包括:虚拟控制台、串行接口(已废弃)、伪终端(PTY)。
所有的终端设备共享一个通用的功能集合:line discipline,
它既包含通用的终端 line discipline 也包含SLIP和PPP模式。
所有的终端设备的命名都很相似。这部分内容将解释命名规则和各种类型的TTY(终端)的使用。
需要注意的是这些命名习惯包含了几个历史遗留包袱。
其中的一些是Linux所特有的,另一些则是继承自其他系统,
还有一些反映了Linux在成长过程中抛弃了原来借用自其它系统的一些习惯。
井号(#)在设备名里表示一个无前导零的十进制数。
虚拟控制台(Virtual console)和控制台设备(console device)
虚拟控制台是在系统视频监视器上全屏显示的终端。
虚拟控制台被命名为编号从 /dev/tty1 开始的 /dev/tty# 。
/dev/tty0 是当前虚拟控制台。
/dev/tty0 用于在不能使用帧缓冲设备(/dev/fb*)的机器上存取系统视频卡,
注意,不要将 /dev/console 用于此目的。
/dev/console 由内核管理,系统消息将被发送到这里。
单用户模式下必须允许 login 使用 /dev/console 。
串行接口(已废弃)
这里所说的"串行接口"是指 RS-232 串行接口和任何模拟这种接口的设备,
不管是在硬件(例如调制解调器)还是在软件(例如ISDN驱动)中模拟。
在linux中的每一个串行接口都有两个设备名:
主设备或呼入(callin)设备、交替设备或呼出(callout)设备。
设备类型之间使用字母的大小写进行区分。
比如,对于任意字母X,"tty"设备名为 /dev/ttyX# ,而"cu"设备名则为 /dev/cux# 。
由于历史原因,/dev/ttyS# 和 /dev/ttyC# 分别等价于 /dev/cua# 和 /dev/cub# 。
名称 /dev/ttyQ# 和 /dev/cuq# 被保留为本地使用。
伪终端(PTY)
伪终端用于创建登陆会话或提供其它功能,
比如通过 TTY line discipline (包括SLIP或者PPP功能)来处理任意的数据生成。
每一个 PTY 都有一个master端和一个slave端。按照 System V/Unix98 的 PTY 命名方案,
所有master端共享同一个 /dev/ptmx 设备节点(打开它内核将自动给出一个未分配的PTY),
所有slave端都位于 /dev/pts 目录下,名为 /dev/pts/# (内核会根据需要自动生成和删除它们)。
一旦master端被打开,相应的slave设备就可以按照与 TTY 设备完全相同的方式使用。
master设备与slave设备之间通过内核进行连接,等价于拥有 TTY 功能的双向管道(pipe)。
===============================
你可能会很奇怪,为什么没有 /dev/hda 这样的设备,难道不常用么?
原因在于从 2.6.19 开始,内核引入了新的ATA驱动,将SATA/IDE硬盘同意使用 /dev/sd? 来表示了,所以 /dev/hd? 就没有存在的必要了
设备管理是linux中比较基础的东西,但是由于Linux智能程度的越来越高,Udev的使用越来越广泛,使得越来越多的Linux新用户对 /dev 目录下的东西变得不再熟悉。有时候遇见问题就会变得抓狂
本文是我在写作《DIY 一个基于LFS的实用 Mini-LAPP 服务器》过程中整理的资料,拿出来与大家共享
Linux 中的设备有2种类型:字符设备(无缓冲且只能顺序存取)、块设备(有缓冲且可以随机存取)。每个字符设备和块设备都必须有主、次设备号,主设备号相同的设备是同类设备(使用同一个驱动程序)。这些设备中,有些设备是对实际存在的物理硬件的抽象,而有些设备则是内核自身提供的功能(不依赖于特定的物理硬件,又称为"虚拟设备")。每个设备在 /dev 目录下都有一个对应的文件(节点)。可以通过 cat /proc/devices 命令查看当前已经加载的设备驱动程序的主设备号。内核能够识别的所有设备都记录在原码树下的 Documentation/devices.txt 文件中。在 /dev 目录下除了字符设备和块设备节点之外还通常还会存在:FIFO管道、Socket、软/硬连接、目录。这些东西没有主/次设备号。
Linux内核所能识别的所有设备都记录在
http://www.lanana.org/docs/device-list/
而内核原码树中的 Documentation/devices.txt 可能不是最新版本。
了解这些设备的最基本要求就是对 每个设备文件的含义了如指掌,下面就医列表的形式列出常见的设备文件以及相应的含义(比较偏僻的就省略了):
----------------------------------------------------------------------
主设备号 设备类型
次设备号=文件名 简要说明
----------------------------------------------------------------------
0 未命名设备(例如:挂载的非设备)
0 = 未空设备号保留
1 char 内存设备
1 = /dev/mem 直接存取物理内存
2 = /dev/kmem 存取经过内核虚拟之后的内存
3 = /dev/null 空设备。任何写入都将被直接丢弃,任何读取都将得到EOF。
4 = /dev/port 存取 I/O 端口
5 = /dev/zero 零字节源,只能读取到无限多的零字节。
7 = /dev/full 满设备。任何写入都将失败,并把errno设为ENOSPC以表示没有剩余空间。
8 = /dev/random 随机数发生器。完全由用户的输入来产生随机数。
如果用户停止所有动作,则停止产生新的随机数。
9 = /dev/urandom 更快,但是不够安全的随机数发生器。尽可能由用户的输入来产生随机数,
如果用户停止所有动作,则把已经产生的随机数做为种子来产生新的随机数。
10 = /dev/aio 异步 I/O 通知接口
11 = /dev/kmsg 任何对该文件的写入都将作为 printk 的输出
1 block RAM disk
0 = /dev/ram0 第1个 RAM disk (initrd只能使用ram0)
1 = /dev/ram1 第2个 RAM disk
...
200 = /dev/ram200 第200个 RAM disk
4 char TTY(终端)设备
0 = /dev/tty0 当前虚拟控制台
1 = /dev/tty1 第1个虚拟控制台
...
63 = /dev/tty63 第63个虚拟控制台
4 block 如果根文件系统以是以只读方式挂载的,那么就不可能创建真正的设备节点,
此时就使用该设备作为动态分配的主(major)设备的别名
0 = /dev/root
5 char 其他 TTY 设备
0 = /dev/tty 当前 TTY 设备
1 = /dev/console 系统控制台
2 = /dev/ptmx 所有 PTY master 的复用器
7 char 虚拟控制台捕捉设备(这些设备既允许读也允许写)
0 = /dev/vcs 当前虚拟控制台(vc)的文本内容
1 = /dev/vcs1 tty1 的文本内容
...
63 = /dev/vcs63 tty63 的文本内容
128 = /dev/vcsa 当前虚拟控制台(vc)的文本/属性内容
129 = /dev/vcsa1 tty1 的文本/属性内容
...
191 = /dev/vcsa63 tty63 的文本/属性内容
7 block 回环设备(用一个普通的磁盘文件来模拟一个块设备)
对回环设备的绑定由 mount(8) 或 losetup(8) 处理
0 = /dev/loop0 第1个回环设备
1 = /dev/loop1 第2个回环设备
...
8 block SCSI 磁盘(0-15)
0 = /dev/sda 第1个 SCSI 磁盘(整个磁盘)
16 = /dev/sdb 第2个 SCSI 磁盘(整个磁盘)
32 = /dev/sdc 第3个 SCSI 磁盘(整个磁盘)
...
240 = /dev/sdp 第16个 SCSI 磁盘(整个磁盘)
分区表示方法如下(以第3个 SCSI 磁盘为例)
33 = /dev/sdc1 第1个分区
34 = /dev/sdc2 第2个分区
...
47 = /dev/sdc15 第15个分区
对于Linux/i386来说,分区1-4是主分区,5-15是逻辑分区。
9 block Metadisk(RAID)设备
0 = /dev/md0 第1组 metadisk
1 = /dev/md1 第2组 metadisk
...
metadisk 驱动用于将同一个文件系统分割到多个物理磁盘上。
10 char 非串口鼠标,各种杂项设备和特性
1 = /dev/psaux PS/2鼠标
131 = /dev/temperature 机器内部温度
134 = /dev/apm_bios APM(高级电源管理) BIOS
135 = /dev/rtc 实时时钟(Real Time Clock)
144 = /dev/nvram 非易失配置 RAM
162 = /dev/smbus 系统管理总线(System Management Bus)
164 = /dev/ipmo Intel的智能平台管理(Intelligent Platform Management)接口
173 = /dev/ipmikcs 智能平台管理(Intelligent Platform Management)接口
175 = /dev/agpgart AGP图形地址重映射表(Graphics Address Remapping Table)
182 = /dev/perfctr 性能监视计数器
183 = /dev/hwrng 通用硬件随机数发生器
184 = /dev/cpu/microcode CPU微代码更新接口
186 = /dev/atomicps 进程状态数据的原子快照
188 = /dev/smbusbios SMBus(系统管理总线) BIOS
200 = /dev/net/tun TAP/TUN 网络设备(TAP/TUN以软件的方式实现了网络设备)
TAP模拟了以太网帧(第二层),TUN模拟了IP包(第三层)。
202 = /dev/emd/ctl 增强型 Metadisk RAID (EMD) 控制器
220 = /dev/mptctl Message passing technology (MPT) control
223 = /dev/input/uinput 用户层输入设备驱动支持
227 = /dev/mcelog X86_64 Machine Check Exception driver
228 = /dev/hpet HPET driver
229 = /dev/fuse Fuse(用户空间的虚拟文件系统)
231 = /dev/snapshot 系统内存快照
232 = /dev/kvm 基于内核的虚构机(基于AMD SVM和Intel VT硬件虚拟技术)
11 block SCSI CD-ROM 设备
0 = /dev/scd0 第1个 SCSI CD-ROM
1 = /dev/scd1 第2个 SCSI CD-ROM
...
13 char 核心输入设备
32 = /dev/input/mouse0 第1个鼠标
33 = /dev/input/mouse1 第2个鼠标
...
62 = /dev/input/mouse30 第31个鼠标
63 = /dev/input/mice 所有鼠标的统一
64 = /dev/input/event0 第1个事件队列
65 = /dev/input/event1 第2个事件队列
...
95 = /dev/input/event1 第32个事件队列
21 char 通用 SCSI 设备(通常是SCSI光驱)
0 = /dev/sg0 第1个通用 SCSI 设备
1 = /dev/sg1 第2个通用 SCSI 设备
...
29 char 通用帧缓冲(frame buffer)设备
0 = /dev/fb0 第1个帧缓冲设备
1 = /dev/fb1 第2个帧缓冲设备
...
31 = /dev/fb31 第32个帧缓冲设备
30 char iBCS-2 兼容设备
0 = /dev/socksys 套接字访问接口
1 = /dev/spx SVR3 本地 X 接口
32 = /dev/inet/ip 网络访问接口
33 = /dev/inet/icmp
34 = /dev/inet/ggp
35 = /dev/inet/ipip
36 = /dev/inet/tcp
37 = /dev/inet/egp
38 = /dev/inet/pup
39 = /dev/inet/udp
40 = /dev/inet/idp
41 = /dev/inet/rawip
此外,iBCS-2 还需要下面的连接必须存在
/dev/ip -> /dev/inet/ip
/dev/icmp -> /dev/inet/icmp
/dev/ggp -> /dev/inet/ggp
/dev/ipip -> /dev/inet/ipip
/dev/tcp -> /dev/inet/tcp
/dev/egp -> /dev/inet/egp
/dev/pup -> /dev/inet/pup
/dev/udp -> /dev/inet/udp
/dev/idp -> /dev/inet/idp
/dev/rawip -> /dev/inet/rawip
/dev/inet/arp -> /dev/inet/udp
/dev/inet/rip -> /dev/inet/udp
/dev/nfsd -> /dev/socksys
/dev/X0R -> /dev/null
36 char Netlink 支持
0 = /dev/route 路由, 设备更新, kernel to user
3 = /dev/fwmonitor Firewall packet 复制
59 char sf 防火墙模块
0 = /dev/firewall 与 sf 内核模块通信
65 block SCSI 磁盘(16-31)
0 = /dev/sdq 第17个 SCSI 磁盘(整个磁盘)
16 = /dev/sdr 第18个 SCSI 磁盘(整个磁盘)
32 = /dev/sds 第19个 SCSI 磁盘(整个磁盘)
...
240 = /dev/sdaf 第32个 SCSI 磁盘(整个磁盘)
66 block SCSI 磁盘(32-47)
0 = /dev/sdag 第33个 SCSI 磁盘(整个磁盘)
16 = /dev/sdah 第34个 SCSI 磁盘(整个磁盘)
32 = /dev/sdai 第35个 SCSI 磁盘(整个磁盘)
...
240 = /dev/sdav 第48个 SCSI 磁盘(整个磁盘)
89 char I2C 总线接口
0 = /dev/i2c-0 第1个 I2C 适配器
1 = /dev/i2c-1 第2个 I2C 适配器
...
98 block 用户模式下的虚拟块设备(分区处理方式与 SCSI 磁盘相同)
0 = /dev/ubda 第1个用户模式块设备
16 = /dev/udbb 第2个用户模式块设备
...
103 block 审计(Audit)设备
0 = /dev/audit 审计(Audit)设备
128-135 char Unix98 PTY master
这些设备不应当存在设备节点,而应当通过 /dev/ptmx 接口访问。
136-143 char Unix98 PTY slave
这些设备节点是自动生成的(伴有适当的权限和模式),不能手动创建。
方法是通过使用适当的 mount 选项(通常是:mode=0620,gid=<"tty"组的gid>)
将 devpts 文件系统挂载到 /dev/pts 目录即可。
0 = /dev/pts/0 第1个 Unix98 PTY slave
1 = /dev/pts/1 第2个 Unix98 PTY slave
...
153 block Enhanced Metadisk RAID (EMD) 存储单元(分区处理方式与 SCSI 磁盘相同)
0 = /dev/emd/0 第1个存储单元
1 = /dev/emd/0p1 第1个存储单元的第1个分区
2 = /dev/emd/0p2 第1个存储单元的第2个分区
...
15 = /dev/emd/0p15 第1个存储单元的第15个分区
16 = /dev/emd/1 第2个存储单元
32 = /dev/emd/2 第3个存储单元
...
240 = /dev/emd/15 第16个存储单元
180 char USB 字符设备
96 = /dev/usb/hiddev0 第1个USB人机界面设备(鼠标/键盘/游戏杆/手写版等人操作计算机的设备)
...
111 = /dev/usb/hiddev15 第16个USB人机界面设备
180 block USB 块设备(U盘之类)
0 = /dev/uba 第1个USB 块设备
8 = /dev/ubb 第2个USB 块设备
16 = /dev/ubc 第3个USB 块设备
...
192 char 内核 profiling 接口
0 = /dev/profile Profiling 控制设备
1 = /dev/profile0 CPU 0 的 Profiling 设备
2 = /dev/profile1 CPU 1 的 Profiling 设备
...
193 char 内核事件跟踪接口
0 = /dev/trace 跟踪控制设备
1 = /dev/trace0 CPU 0 的跟踪设备
2 = /dev/trace1 CPU 1 的跟踪设备
...
195 char Nvidia 图形设备(比如显卡)
0 = /dev/nvidia0 第1个 Nvidia 卡
1 = /dev/nvidia1 第2个 Nvidia 卡
...
255 = /dev/nvidiactl Nvidia 卡控制设备
202 char 特定于CPU模式的寄存器(model-specific register,MSR)
0 = /dev/cpu/0/msr CPU 0 的 MSRs
1 = /dev/cpu/1/msr CPU 1 的 MSRs
...
203 char CPU CPUID 信息
0 = /dev/cpu/0/cpuid CPU 0 的 CPUID
1 = /dev/cpu/1/cpuid CPU 1 的 CPUID
...
===================================================================
这部分详细说明一些应该或可能存在于 /dev 目录之外的文件。
链接最好使用与这里完全相同的格式(绝对路径或相对路径)。
究竟是使用硬链接(hard)还是软连接(symbolic)取决于不同的设备。
必须的链接
必须在所有的系统上都存在这些连接:
链接 目标 链接类型 简要说明
/dev/fd /proc/self/fd symbolic 文件描述府
/dev/stdin fd/0 symbolic 标准输入文件描述府
/dev/stdout fd/1 symbolic 标准输出文件描述符
/dev/stderr fd/2 symbolic 标准错误文件描述符
/dev/nfsd socksys symbolic 仅为 iBCS-2 所必须
/dev/X0R null symbolic 仅为 iBCS-2 所必须
[注意] /dev/X0R 是 <字母 X>-<数字 0>-<字母 R>
推荐的链接
推荐在所有的系统上都存在这些连接:
链接 目标 链接类型 简要说明
/dev/core /proc/kcore symbolic 为了向后兼容
/dev/ramdisk ram0 symbolic 为了向后兼容
/dev/ftape qft0 symbolic 为了向后兼容
/dev/bttv0 video0 symbolic 为了向后兼容
/dev/radio radio0 symbolic 为了向后兼容
/dev/i2o* /dev/i2o/* symbolic 为了向后兼容
/dev/scd? sr? hard 代替 SCSI CD-ROM 的名字
本地定义的链接
下面的链接很可能需要根据机器的实际硬件配置创建其中的一部分甚至全部。
这些链接仅仅是为了迎合习惯用法,它们既非必须也非推荐。
链接 目标 链接类型 简要说明
/dev/mouse mouse port symbolic 当前鼠标
/dev/tape tape device symbolic 当前磁带
/dev/cdrom CD-ROM device symbolic 当前CD-ROM
/dev/cdwriter CD-writer symbolic 当前CD-writer
/dev/scanner scanner symbolic 当前扫描仪
/dev/modem modem port symbolic 当前调制解调器
/dev/root root device symbolic 当前根文件系统所在设备
/dev/swap swap device symbolic 当前swap所在设备
/dev/modem 不应当用于能够同时支持呼入和呼出的modem,因为往往会导致锁文件问题。
如果存在 /dev/modem ,那么它应当指向一个恰当的主 TTY 设备。
对于SCSI设备,
/dev/tape 和 /dev/cdrom 应该分别指向"cooked"设备 /dev/st* 和 /dev/sr* ;
而 /dev/cdwriter 和 /dev/scanner 应当分别指向恰当的 /dev/sg* 。
/dev/mouse 可以指向一个主串行 TTY 设备、一个硬件鼠标、
或者一个对应鼠标驱动程序的套接字(例如 /dev/gpmdata)。
套接字和管道
持久套接字和命名管道可以存在于 /dev 中。常见的有:
/dev/printer socket lpd 本地套接字
/dev/log socket syslog 本地套接字
/dev/gpmdata socket gpm 鼠标多路复用器(multiplexer)
/dev/gpmctl socket (LFS-LiveCD中出现)
/dev/initctl fifo pipe init 监听它并从中获取信息(用户与 init 进程交互的通道)
挂载点
以下名称被保留用于挂载特殊的文件系统。
这些特殊的文件系统只提供内核界面而不提供标准的设备节点。
/dev/pts devpts PTY slave 文件系统
/dev/shm tmpfs 提供对 POSIX 共享内存的直接访问
===================================================================
终端(或TTY)设备是一种特殊的字符设备。终端设备是可以在会话中扮演控制终端角色的任何设备,
包括:虚拟控制台、串行接口(已废弃)、伪终端(PTY)。
所有的终端设备共享一个通用的功能集合:line discipline,
它既包含通用的终端 line discipline 也包含SLIP和PPP模式。
所有的终端设备的命名都很相似。这部分内容将解释命名规则和各种类型的TTY(终端)的使用。
需要注意的是这些命名习惯包含了几个历史遗留包袱。
其中的一些是Linux所特有的,另一些则是继承自其他系统,
还有一些反映了Linux在成长过程中抛弃了原来借用自其它系统的一些习惯。
井号(#)在设备名里表示一个无前导零的十进制数。
虚拟控制台(Virtual console)和控制台设备(console device)
虚拟控制台是在系统视频监视器上全屏显示的终端。
虚拟控制台被命名为编号从 /dev/tty1 开始的 /dev/tty# 。
/dev/tty0 是当前虚拟控制台。
/dev/tty0 用于在不能使用帧缓冲设备(/dev/fb*)的机器上存取系统视频卡,
注意,不要将 /dev/console 用于此目的。
/dev/console 由内核管理,系统消息将被发送到这里。
单用户模式下必须允许 login 使用 /dev/console 。
串行接口(已废弃)
这里所说的"串行接口"是指 RS-232 串行接口和任何模拟这种接口的设备,
不管是在硬件(例如调制解调器)还是在软件(例如ISDN驱动)中模拟。
在linux中的每一个串行接口都有两个设备名:
主设备或呼入(callin)设备、交替设备或呼出(callout)设备。
设备类型之间使用字母的大小写进行区分。
比如,对于任意字母X,"tty"设备名为 /dev/ttyX# ,而"cu"设备名则为 /dev/cux# 。
由于历史原因,/dev/ttyS# 和 /dev/ttyC# 分别等价于 /dev/cua# 和 /dev/cub# 。
名称 /dev/ttyQ# 和 /dev/cuq# 被保留为本地使用。
伪终端(PTY)
伪终端用于创建登陆会话或提供其它功能,
比如通过 TTY line discipline (包括SLIP或者PPP功能)来处理任意的数据生成。
每一个 PTY 都有一个master端和一个slave端。按照 System V/Unix98 的 PTY 命名方案,
所有master端共享同一个 /dev/ptmx 设备节点(打开它内核将自动给出一个未分配的PTY),
所有slave端都位于 /dev/pts 目录下,名为 /dev/pts/# (内核会根据需要自动生成和删除它们)。
一旦master端被打开,相应的slave设备就可以按照与 TTY 设备完全相同的方式使用。
master设备与slave设备之间通过内核进行连接,等价于拥有 TTY 功能的双向管道(pipe)。
===============================
你可能会很奇怪,为什么没有 /dev/hda 这样的设备,难道不常用么?
原因在于从 2.6.19 开始,内核引入了新的ATA驱动,将SATA/IDE硬盘同意使用 /dev/sd? 来表示了,所以 /dev/hd? 就没有存在的必要了
星期日, 六月 10, 2007
恢复ext3分区上被删除的数据
redhat给出的说法是,ext3分区上的数据一旦被删除,则无法恢复。在这里看到一篇文章,介绍的正是用手工的方法来恢复ext3上被删除的数据。
linux ext3文件被删除如何恢复
全都转贴过来,以备查找。
linux ext3文件被删除如何恢复
全都转贴过来,以备查找。
linux ext3文件被删除如何恢复
Ext3文件系统结构的简单介绍
在Linux 所用的Ext3文件系统中,文件是以块为单位存储的,默认情况下每个块的大小是1K,不同的块以块号区分。每个文件还有一个节点,节点中包含有文件所有 者,读写权限,文件类型等信息。对于一个小于12个块的文件,在节点中直接存储文件数据块的块号。如果文件大于12个块,那么节点在12个块号之后存储一 个间接块的块号,在这个间接块号所对应的块中,存储有256个文件数据块的块号(Ext2fs中每个块号占用4字节,这样一个块中所能存储的块号就是 1024/4=256)。如果有更大的文件,那么还会在节点中出现二级间接块和三级间接块。
2。恢复被误删文件的方法
大多数Linux发行版都提供一个debugfs工具,可以用来对Ext3文件系统进行编辑操作。不过在使用这个工具之前,还有一些工作要做。
首先以只读方式重新挂载被误删的文件所在分区。使用如下命令:(假设文件在/usr分区)
mount -r -n -o remount /usr
-r表示只读方式挂载;-n表示不写入/etc/mtab,如果是恢复/etc上的文件,就加上这个参数。如果系统说xxx partion busy,可以用fuser命令查看一下是哪些进程使用这个分区上的文件:
fuser -v -m /usr
如果没有什么重要的进程,用以下命令停掉它们:
fuser -k -v -m /usr
然后就可以重新挂载这些文件系统了。
如 果是把所有的文件统一安装在一个大的/分区当中,可以在boot提示符下用linux single进入单用户模式,尽量减少系统进程向硬盘写入数据的机会,要不干脆把硬盘挂在别的机器上。另外,恢复出来的数据不要写到/上面,避免破坏那些 有用的数据。如果机器上有dos/windows,可以写到这些分区上面:
mount -r -n /dev/hda1 /mnt/had
然后就可以执行debugfs:(假设Linux在 /dev/hda5)
#debugfs /dev/hda5
就会出现debugfs提示符debugfs:
使用lsdel命令可以列出很多被删除的文件的信息:
debugfs:lsdel
debugfs: 2692 deleted inodes found.
Inode Owner Mode Size Blocks Time deleted
164821 0 100600 8192 1/ 1 Sun May 13 19:22:46 2001
…………………………………………………………………………………
36137 0 100644 4 1/ 1 Tue Apr 24 10:11:15 2001
196829 0 100644 149500 38/ 38 Mon May 27 13:52:04 2001
debugfs:
列出的文件有很多(这里找到2692个),第一字段是文件节点号,第二字段是文件所有者,第三字段是读写权限,接下来是文件大小,占用块数,删除时间。然后就可以根据文件大小和删除日期判断那些是我们需要的。比如我们要恢复节点是196829的文件:
可以先看看文件数据状态:
debugfs:stat
Inode: 196829 Type: regular Mode: 0644 Flags: 0x0 Version: 1
User: 0 Group: 0 Size: 149500
File ACL: 0 Directory ACL: 0
Links: 0 Blockcount: 38
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x31a9a574 -- Mon May 27 13:52:04 2001
atime: 0x31a21dd1 -- Tue May 21 20:47:29 2001
mtime: 0x313bf4d7 -- Tue Mar 5 08:01:27 2001
dtime: 0x31a9a574 -- Mon May 27 13:52:04 2001
BLOCKS:
594810 594811 594814 594815 594816 594817 ………………………………….
TOTAL: 38
然后就可以用dump指令恢复文件:
debugfs:dump /mnt/hda/01.sav
这样就把文件恢复出来了。退出debugfs:
debugfs:quit
另一种方法是手工编辑inode:
debugfs:mi
Mode [0100644]
User ID [0]
Group ID [0]
Size [149500]
Creation time [0x31a9a574]
Modification time [0x31a9a574]
Access time [0x31a21dd1]
Deletion time [0x31a9a574] 0
Link count [0] 1
Block count [38]
File flags [0x0]
Reserved1 [0]
File acl [0]
Directory acl [0]
Fragment address [0]
Fragment number [0]
Fragment size [0]
Direct Block #0 [594810]
…………………………….
Triple Indirect Block [0]
使用mi指令后每次显示一行信息以供编辑,其它行可以直接按回车表示确认,把deletion time改成0(未删除),Link count改成1。改好后退出debugfs:
debugfs:quit
然后用fsck检查/dev/hda5
fsck /dev/hda5
程序会说找到丢失的数据块,放在lost+found里面。'
在Linux 所用的Ext3文件系统中,文件是以块为单位存储的,默认情况下每个块的大小是1K,不同的块以块号区分。每个文件还有一个节点,节点中包含有文件所有 者,读写权限,文件类型等信息。对于一个小于12个块的文件,在节点中直接存储文件数据块的块号。如果文件大于12个块,那么节点在12个块号之后存储一 个间接块的块号,在这个间接块号所对应的块中,存储有256个文件数据块的块号(Ext2fs中每个块号占用4字节,这样一个块中所能存储的块号就是 1024/4=256)。如果有更大的文件,那么还会在节点中出现二级间接块和三级间接块。
2。恢复被误删文件的方法
大多数Linux发行版都提供一个debugfs工具,可以用来对Ext3文件系统进行编辑操作。不过在使用这个工具之前,还有一些工作要做。
首先以只读方式重新挂载被误删的文件所在分区。使用如下命令:(假设文件在/usr分区)
mount -r -n -o remount /usr
-r表示只读方式挂载;-n表示不写入/etc/mtab,如果是恢复/etc上的文件,就加上这个参数。如果系统说xxx partion busy,可以用fuser命令查看一下是哪些进程使用这个分区上的文件:
fuser -v -m /usr
如果没有什么重要的进程,用以下命令停掉它们:
fuser -k -v -m /usr
然后就可以重新挂载这些文件系统了。
如 果是把所有的文件统一安装在一个大的/分区当中,可以在boot提示符下用linux single进入单用户模式,尽量减少系统进程向硬盘写入数据的机会,要不干脆把硬盘挂在别的机器上。另外,恢复出来的数据不要写到/上面,避免破坏那些 有用的数据。如果机器上有dos/windows,可以写到这些分区上面:
mount -r -n /dev/hda1 /mnt/had
然后就可以执行debugfs:(假设Linux在 /dev/hda5)
#debugfs /dev/hda5
就会出现debugfs提示符debugfs:
使用lsdel命令可以列出很多被删除的文件的信息:
debugfs:lsdel
debugfs: 2692 deleted inodes found.
Inode Owner Mode Size Blocks Time deleted
164821 0 100600 8192 1/ 1 Sun May 13 19:22:46 2001
…………………………………………………………………………………
36137 0 100644 4 1/ 1 Tue Apr 24 10:11:15 2001
196829 0 100644 149500 38/ 38 Mon May 27 13:52:04 2001
debugfs:
列出的文件有很多(这里找到2692个),第一字段是文件节点号,第二字段是文件所有者,第三字段是读写权限,接下来是文件大小,占用块数,删除时间。然后就可以根据文件大小和删除日期判断那些是我们需要的。比如我们要恢复节点是196829的文件:
可以先看看文件数据状态:
debugfs:stat
Inode: 196829 Type: regular Mode: 0644 Flags: 0x0 Version: 1
User: 0 Group: 0 Size: 149500
File ACL: 0 Directory ACL: 0
Links: 0 Blockcount: 38
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x31a9a574 -- Mon May 27 13:52:04 2001
atime: 0x31a21dd1 -- Tue May 21 20:47:29 2001
mtime: 0x313bf4d7 -- Tue Mar 5 08:01:27 2001
dtime: 0x31a9a574 -- Mon May 27 13:52:04 2001
BLOCKS:
594810 594811 594814 594815 594816 594817 ………………………………….
TOTAL: 38
然后就可以用dump指令恢复文件:
debugfs:dump /mnt/hda/01.sav
这样就把文件恢复出来了。退出debugfs:
debugfs:quit
另一种方法是手工编辑inode:
debugfs:mi
Mode [0100644]
User ID [0]
Group ID [0]
Size [149500]
Creation time [0x31a9a574]
Modification time [0x31a9a574]
Access time [0x31a21dd1]
Deletion time [0x31a9a574] 0
Link count [0] 1
Block count [38]
File flags [0x0]
Reserved1 [0]
File acl [0]
Directory acl [0]
Fragment address [0]
Fragment number [0]
Fragment size [0]
Direct Block #0 [594810]
…………………………….
Triple Indirect Block [0]
使用mi指令后每次显示一行信息以供编辑,其它行可以直接按回车表示确认,把deletion time改成0(未删除),Link count改成1。改好后退出debugfs:
debugfs:quit
然后用fsck检查/dev/hda5
fsck /dev/hda5
程序会说找到丢失的数据块,放在lost+found里面。'
星期二, 五月 15, 2007
在linux中将图像序列转换为视频文件
linux中的后期软件一般都不带视频文件输出,只支持序列方式。这是个老问题了,非常让人不爽的老问题。要把序列转换为视频,现在有一些软件可以完成这个工作。
avidemux2,把它放在第一位,不是说它有多好,而是第一个先想起了它。avidemux2支持的格式不多,但是一般常用的都支持。问题是不支持太长的序列,我用它导入一个1000多张的序列,结果就告诉我pipe操作错误。
ffmpeg,这个工具的文档不够详细,经常让你去看代码,然而代码里几乎没有多少有价值的注释。例子只有常用的一些,支持的格式也不少,还凑合吧。当然没有gui,传说中有个kde的gui,不过没有见过。写一个例子:
final.000.png
final.001.png
final.002.png
...
ffmpeg -i final.%03d.png -f avi -vcodec mpeg4 -r 25 -b 640k output.avi
最近的blender,最近的blender支持用ffmpeg输出,格式比ffmpeg本身要少一点,也是只有常见的格式,但是没有rm/rmvb和wmv的支持。blender的sequence的稳定性还不错,几千张的序列处理起来也没有问题。
avidemux2,把它放在第一位,不是说它有多好,而是第一个先想起了它。avidemux2支持的格式不多,但是一般常用的都支持。问题是不支持太长的序列,我用它导入一个1000多张的序列,结果就告诉我pipe操作错误。
ffmpeg,这个工具的文档不够详细,经常让你去看代码,然而代码里几乎没有多少有价值的注释。例子只有常用的一些,支持的格式也不少,还凑合吧。当然没有gui,传说中有个kde的gui,不过没有见过。写一个例子:
final.000.png
final.001.png
final.002.png
...
ffmpeg -i final.%03d.png -f avi -vcodec mpeg4 -r 25 -b 640k output.avi
最近的blender,最近的blender支持用ffmpeg输出,格式比ffmpeg本身要少一点,也是只有常见的格式,但是没有rm/rmvb和wmv的支持。blender的sequence的稳定性还不错,几千张的序列处理起来也没有问题。
星期四, 五月 03, 2007
在maya中使用wacom数位版
在windows和macosx上这不是什么稀奇事,不过在linux上,这得看运气。
在折腾了一阵子gimp之后,也不知道为什么突然想试试maya中wacom是否有压感了,结果,没有什么比现在这个结果更让我兴奋了。真是奇迹啊!
03年7月买的这个favo410,不久就在linux中驱动成功,可是唯独maya中没有压感。这年来,几乎尝试了所有的办法,都没有结果。在highend3d上很早就有人说的maya对wacom的支持已经没有问题了,不过他们用的都是intuos级别的。没想到我的favo,今天竟然莫名其妙的就有压感了。现在还不清楚是什么原因,最有可能的就是最近把内核升级为2.6.21,因为几乎所有其它的设置都还是2.6.20时候的。
还有一点,xorg.conf中,对wacom配置了两遍,只是用了不同的名字,当然这个配置在2.6.20的时候还没有作用呢。
Section "ServerLayout"
Identifier "Default Layout"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "wacom" "SendCoreEvents"
InputDevice "stylus" "SendCoreEvents"
Option "AIGLX" "false"
EndSection
Section "InputDevice"
Driver "wacom"
Identifier "wacom"
Option "Device" "/dev/input/wacom" # USB ONLY
Option "Type" "stylus"
Option "USB" "on" # USB ONLY
Option "Suppress" "0"
Option "Mode" "Absolute"
Option "PressCurve" "0,5,95,100"
Option "Threshold" "25"
EndSection
Section "InputDevice"
Driver "wacom"
Identifier "stylus"
Option "Device" "/dev/input/wacom" # USB ONLY
Option "Type" "stylus"
Option "USB" "on" # USB ONLY
Option "Suppress" "0"
Option "Mode" "Absolute"
Option "PressCurve" "0,5,95,100"
Option "Threshold" "25"
EndSection
在折腾了一阵子gimp之后,也不知道为什么突然想试试maya中wacom是否有压感了,结果,没有什么比现在这个结果更让我兴奋了。真是奇迹啊!
03年7月买的这个favo410,不久就在linux中驱动成功,可是唯独maya中没有压感。这年来,几乎尝试了所有的办法,都没有结果。在highend3d上很早就有人说的maya对wacom的支持已经没有问题了,不过他们用的都是intuos级别的。没想到我的favo,今天竟然莫名其妙的就有压感了。现在还不清楚是什么原因,最有可能的就是最近把内核升级为2.6.21,因为几乎所有其它的设置都还是2.6.20时候的。
还有一点,xorg.conf中,对wacom配置了两遍,只是用了不同的名字,当然这个配置在2.6.20的时候还没有作用呢。
Section "ServerLayout"
Identifier "Default Layout"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "wacom" "SendCoreEvents"
InputDevice "stylus" "SendCoreEvents"
Option "AIGLX" "false"
EndSection
Section "InputDevice"
Driver "wacom"
Identifier "wacom"
Option "Device" "/dev/input/wacom" # USB ONLY
Option "Type" "stylus"
Option "USB" "on" # USB ONLY
Option "Suppress" "0"
Option "Mode" "Absolute"
Option "PressCurve" "0,5,95,100"
Option "Threshold" "25"
EndSection
Section "InputDevice"
Driver "wacom"
Identifier "stylus"
Option "Device" "/dev/input/wacom" # USB ONLY
Option "Type" "stylus"
Option "USB" "on" # USB ONLY
Option "Suppress" "0"
Option "Mode" "Absolute"
Option "PressCurve" "0,5,95,100"
Option "Threshold" "25"
EndSection
星期三, 五月 02, 2007
糟糕的gimp
对于painting来说,gimp实在是很糟糕。有人说gimp是SB设计的给SB用的东西,这个形容很恰当。在2.3中增加了一个jitter选项,根据使用的感受,即使没有这个jitter,gimp画出来的东西也已经很jitter了。
说归说,不过我一直想办法解决gimp中抖动的问题,通过这个jitter,发现bursh位移的部分控制在gimpbrushcore.c定义的,使用 的是增量。对历史增量取平均后,出现了很大的惯性,而对历史坐标取平均后,发现gimp并不总是更新历史坐标,而且画笔经常被“挂住”,真是*& ^%$#!
然而,这些问题在mypaint中却一个也没有。
2001年有人在bugreport上提出了这个bug,但是6年过去了,这个bug仍然无人愿意解决它。gimp的开发者脑子确实有点问题。
说归说,不过我一直想办法解决gimp中抖动的问题,通过这个jitter,发现bursh位移的部分控制在gimpbrushcore.c定义的,使用 的是增量。对历史增量取平均后,出现了很大的惯性,而对历史坐标取平均后,发现gimp并不总是更新历史坐标,而且画笔经常被“挂住”,真是*& ^%$#!
然而,这些问题在mypaint中却一个也没有。
2001年有人在bugreport上提出了这个bug,但是6年过去了,这个bug仍然无人愿意解决它。gimp的开发者脑子确实有点问题。
星期二, 四月 24, 2007
fc6的不常用studio软件源
提供了一些不常用的专用软件,比如cinepaint,povray,synfig,muse等。
http://math.ifi.unizh.ch/fedora/
可能会依赖freshrpms/linva/dag里的某些包。
http://math.ifi.unizh.ch/fedora/
可能会依赖freshrpms/linva/dag里的某些包。
Linux中的绘画软件
除了著名的gimp之外,几乎听不到有其它的名字(inkscape可不是一类的),可是gimp在绘画方面也差的太远。
很偶然地,看到了下面这些东东,好用否先不说,先试试看。
mudbox类的,雕塑建模,肯定不如mudbox:
http://sharp3d.sourceforge.net/mediawiki/index.php/Main_Page
blender在linux里对wacom的支持不佳,这个也许还可以用用。
绘画类的,肯定比不上painter和ps cs:
http://people.ee.ethz.ch/~mrenold/mypaint/
http://www.goghproject.com/index.html
像素绘画软件:
http://mtpaint.sourceforge.net/
矢量动画类,moho那类的,可惜现在moho没有linux版了:
http://www.synfig.com/gallery.php
看起来很不错的软件。
很偶然地,看到了下面这些东东,好用否先不说,先试试看。
mudbox类的,雕塑建模,肯定不如mudbox:
http://sharp3d.sourceforge.net/mediawiki/index.php/Main_Page
blender在linux里对wacom的支持不佳,这个也许还可以用用。
绘画类的,肯定比不上painter和ps cs:
http://people.ee.ethz.ch/~mrenold/mypaint/
http://www.goghproject.com/index.html
像素绘画软件:
http://mtpaint.sourceforge.net/
矢量动画类,moho那类的,可惜现在moho没有linux版了:
http://www.synfig.com/gallery.php
看起来很不错的软件。
星期一, 四月 23, 2007
在vmware中使用wacom tablet
为什么要在wmware中配置wacom绘图板?
因为在linux系统中,至今仍然没有一个好用的绘画软件。尽管gimp在图像编辑方面已经比较成熟了,但是在绘画方面仍然太落后,比起photoshop来,至少有5年的差距,比起painter差距就更大了。更糟糕的是,这个差距在不断的扩大,在绘画方面,gimp近几年几乎没有任何进步,还停留在1.x时代。有人认为krita正在超越gimp,然而在绘画方面,krita还远未达到gimp的水平,tablet也还没有支持。尽管wine已经可以比较正常的运行photoshop cs,但是效率,稳定性和驱动方面的问题使这一方案几乎不可行。
另一个方面是X11和linuxwacom驱动。不知道高档wacom tablet在linux上表现如何,至少在4x5这一尺寸的级别上,在linux中的表现和在windows中就很大的差距。最明显的就是在gimp中画弧线的时候,会有大量的抖动,在画斜线的时候也是如此。我曾经试过在linuxwacom的内核模块那里加入一些过滤算法,但是效果仍然很不理想。在驱动方面比起官方驱动差距也是很大的。
现在,我们已经有足够充分的理由让wacom tablet在vmware中工作起来。client应该用xp或者2k,如果还用linux的话就没有意义了。os10理论上来说也可以。
通常创建的虚拟机是不包含usb支持的,我们需要在VM的属性里加入usb支持。需要注意的是,vmware server中在设置界面上添加的usb支持,只能使vm支持2个usb设备。启动虚拟机后,可以在vmware server console的查看vm能够连接到的usb devices。usb打印机,摄像头,还有手柄都可以看到,但是没有键盘,鼠标和wacom tablet等hid输入设备。现在需要手动添加一些设置。
关闭虚拟机,打开虚拟机的vmx文件,加上:
usb.generic.allowHID = "TRUE"
保存。再次运行虚拟机,现在就可以在usb devices里看到hid设备了。但是windows中却没有提示发现这些hid设备,这是因为在同一时刻,设备不能被主机和客户机同时使用。我们只需要wacom在客户机中工作。
最直接的办法就是将wacom的内核模块卸掉,只需rmmod wacom即可。
现在启动虚拟机,在windows启动完成后,到usb devices中选上wacom tablet。需要注意的是,根据VMTN的论坛上讨论,在windows启动过程中连接上wacom tablet可能会无法识别。这时,windows会提示发现usb设备,可能会提示是未知设备,暂且不要管它。下载最新的wacom驱动,装上。安装过程中,windows会提示要安装驱动,仍然不要管它,取消即可。在驱动装完之后,wacom仍然不能使用。这时,还需要将原有的vmware mouse驱动卸载,否则它会和wacom的驱动冲突。
至此,安装过程基本结束,重启windows。之后,可能需要调整一下鼠标的速度。
现在来关心一下photoshop。总的来说,速度肯定比在主机运行中慢,但是绘画的操作感并没有太大的差别,平面刷新的速度慢了,好在慢的不多,即使如此,在绘画方面的综合效能仍然领先gimp很多。
对于usb打印机来说,可能是主机和客户机同时支持的,我在客户机中打印了一页,没有发现什么问题。
相关链接:
http://www.vmware.com/community/thread.jspa?messageID=562879
http://www.vmware.com/community/thread.jspa?messageID=601149
http://www.vmware.com/community/message.jspa?messageID=403564
http://kb.vmware.com/selfservice/microsites/search.do?cmd=displayKC&externalId=1648
因为在linux系统中,至今仍然没有一个好用的绘画软件。尽管gimp在图像编辑方面已经比较成熟了,但是在绘画方面仍然太落后,比起photoshop来,至少有5年的差距,比起painter差距就更大了。更糟糕的是,这个差距在不断的扩大,在绘画方面,gimp近几年几乎没有任何进步,还停留在1.x时代。有人认为krita正在超越gimp,然而在绘画方面,krita还远未达到gimp的水平,tablet也还没有支持。尽管wine已经可以比较正常的运行photoshop cs,但是效率,稳定性和驱动方面的问题使这一方案几乎不可行。
另一个方面是X11和linuxwacom驱动。不知道高档wacom tablet在linux上表现如何,至少在4x5这一尺寸的级别上,在linux中的表现和在windows中就很大的差距。最明显的就是在gimp中画弧线的时候,会有大量的抖动,在画斜线的时候也是如此。我曾经试过在linuxwacom的内核模块那里加入一些过滤算法,但是效果仍然很不理想。在驱动方面比起官方驱动差距也是很大的。
现在,我们已经有足够充分的理由让wacom tablet在vmware中工作起来。client应该用xp或者2k,如果还用linux的话就没有意义了。os10理论上来说也可以。
通常创建的虚拟机是不包含usb支持的,我们需要在VM的属性里加入usb支持。需要注意的是,vmware server中在设置界面上添加的usb支持,只能使vm支持2个usb设备。启动虚拟机后,可以在vmware server console的查看vm能够连接到的usb devices。usb打印机,摄像头,还有手柄都可以看到,但是没有键盘,鼠标和wacom tablet等hid输入设备。现在需要手动添加一些设置。
关闭虚拟机,打开虚拟机的vmx文件,加上:
usb.generic.allowHID = "TRUE"
保存。再次运行虚拟机,现在就可以在usb devices里看到hid设备了。但是windows中却没有提示发现这些hid设备,这是因为在同一时刻,设备不能被主机和客户机同时使用。我们只需要wacom在客户机中工作。
最直接的办法就是将wacom的内核模块卸掉,只需rmmod wacom即可。
现在启动虚拟机,在windows启动完成后,到usb devices中选上wacom tablet。需要注意的是,根据VMTN的论坛上讨论,在windows启动过程中连接上wacom tablet可能会无法识别。这时,windows会提示发现usb设备,可能会提示是未知设备,暂且不要管它。下载最新的wacom驱动,装上。安装过程中,windows会提示要安装驱动,仍然不要管它,取消即可。在驱动装完之后,wacom仍然不能使用。这时,还需要将原有的vmware mouse驱动卸载,否则它会和wacom的驱动冲突。
至此,安装过程基本结束,重启windows。之后,可能需要调整一下鼠标的速度。
现在来关心一下photoshop。总的来说,速度肯定比在主机运行中慢,但是绘画的操作感并没有太大的差别,平面刷新的速度慢了,好在慢的不多,即使如此,在绘画方面的综合效能仍然领先gimp很多。
对于usb打印机来说,可能是主机和客户机同时支持的,我在客户机中打印了一页,没有发现什么问题。
相关链接:
http://www.vmware.com/community/thread.jspa?messageID=562879
http://www.vmware.com/community/thread.jspa?messageID=601149
http://www.vmware.com/community/message.jspa?messageID=403564
http://kb.vmware.com/selfservice/microsites/search.do?cmd=displayKC&externalId=1648
星期四, 四月 19, 2007
Vmware Server 1.0.2 - kernel 2.6.20
今年发布的vmware-server 1.0.2仍然要修改compat_kernel.h才能在kernel2.6.20上工作,唯一的进步就是不用修改vmnet.tar里的东西了。
将/usr/lib/vmware/modules/source/目录中的vmmon.tar展开,修改vmmon-only/include/compat_kernel.h,把第21行的
static inline _syscall1(int, compat_exit, int, exit_code);
改成:
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)
static inline _syscall1(int, compat_exit, int, exit_code);
#endif
之后,再打包回vmmon.tar。执行vmware-config.pl。
将/usr/lib/vmware/modules/source/目录中的vmmon.tar展开,修改vmmon-only/include/compat_kernel.h,把第21行的
static inline _syscall1(int, compat_exit, int, exit_code);
改成:
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)
static inline _syscall1(int, compat_exit, int, exit_code);
#endif
之后,再打包回vmmon.tar。执行vmware-config.pl。
星期六, 四月 07, 2007
星期五, 四月 06, 2007
星期二, 四月 03, 2007
星期二, 三月 20, 2007
FC6里的lm_sensor,风扇和温度监控
自从把内核升级到2.6.20之后,Gkrellm里的sensor就不工作了,换用fedora官方的内核也仍然如此。当然这个温度电压什么的看不看都无关紧要,最重要的是原来可以工作现在却不能工作让我很是恼火。对此,只有放狗了。
用vt8237 linux sensor gkrellm当关键字,一下子就找到了fedora的老家去了,
http://forums.fedoraforum.org/forum/showthread.php?t=48665&highlight=lm_sensors
看样子是运行了一下/usr/sbin/sensors-detect就好了。

今天好像废话多了点。
自从把内核升级到2.6.20之后,Gkrellm里的sensor就不工作了,换用fedora官方的内核也仍然如此。当然这个温度电压什么的看不看都无关紧要,最重要的是原来可以工作现在却不能工作让我很是恼火。对此,只有放狗了。
用vt8237 linux sensor gkrellm当关键字,一下子就找到了fedora的老家去了,
http://forums.fedoraforum.org/forum/showthread.php?t=48665&highlight=lm_sensors
看样子是运行了一下/usr/sbin/sensors-detect就好了。

今天好像废话多了点。
星期三, 三月 14, 2007
New BlueCurve And Redhat-Artwork without QT/KDE
redhat-artwork需要qt/kde才能编译,如果不用srpm,autoconf在检测qt的时候会出点小问题,感觉就想吃了苍蝇一样。我好像对qt/kde从来没有过好感,当然也没有很糟糕的感觉。
切入正题,ubuntu提供了一个单独的bluecurve(wonderland)源码包,但是我发现编译出来和srpm编译出来的有些差异,尚且不知道是哪里的问题。如果要用srpm的编译,就得除去对qt/kde的依赖,archlinux的论坛上有人提出了一种方法。
http://bbs.archlinux.org/viewtopic.php?pid=227281
redhat-artwork需要qt/kde才能编译,如果不用srpm,autoconf在检测qt的时候会出点小问题,感觉就想吃了苍蝇一样。我好像对qt/kde从来没有过好感,当然也没有很糟糕的感觉。
切入正题,ubuntu提供了一个单独的bluecurve(wonderland)源码包,但是我发现编译出来和srpm编译出来的有些差异,尚且不知道是哪里的问题。如果要用srpm的编译,就得除去对qt/kde的依赖,archlinux的论坛上有人提出了一种方法。
http://bbs.archlinux.org/viewtopic.php?pid=227281
这是他给出的patch,没有多少改动,看看改改即可。--- old/art/Makefile.am
+++ new/art/Makefile.am
@@ -1,5 +1,5 @@
## icon must be built before gtk, or the gtkrc won't get the stock icons
-SUBDIRS=tools cursor nautilus xmms gdm kdm icon gtk metacity kde qt
+SUBDIRS=tools cursor nautilus gdm icon gtk metacity
themedir = $(datadir)/themes/Bluecurve
theme_DATA = index.theme
--- old/configure.in
+++ new/configure.in
@@ -57,12 +57,6 @@
AC_SUBST(GDK_PIXBUF2_CFLAGS)
AC_SUBST(GDK_PIXBUF2_LIBS)
-KDE_SET_PREFIX
-KDE_CHECK_FINAL
-
-dnl KDE_USE_QT
-AC_PATH_KDE
-
AC_OUTPUT([
Makefile
po/Makefile.in
@@ -71,22 +65,13 @@
art/gdm/Bluecurve/Makefile
art/gdm/FedoraBubbles/Makefile
art/gdm/FedoraDNA/Makefile
-art/kdm/Makefile
-art/kdm/Bluecurve/Makefile
-art/kdm/FedoraDNA/Makefile
art/gtk/Makefile
art/gtk/Bluecurve/Makefile
art/gtk/Bluecurve/gtk-2.0/Makefile
-art/qt/Makefile
-art/qt/Bluecurve/Makefile
-art/kde/Makefile
-art/kde/kwin/Makefile
-art/kde/kwin/Bluecurve/Makefile
art/metacity/Makefile
art/icon/Makefile
art/icon/Bluecurve/Makefile
art/icon/Bluecurve/sheets/Makefile
-art/xmms/Makefile
art/nautilus/Makefile
art/nautilus/Bluecurve/Makefile
art/nautilus/Bluecurve/sidebar_tab_pieces/Makefile
订阅:
博文 (Atom)