Skip to main content

Posts

Showing posts from October, 2007

ubuntu 中文默认字体的设置

我一直希望能够分别设置中文和英文的字体, 但是一直都没成功。 之前一直是只设置喜欢的英文字体作为默认字体, 但是中文的话就非常难看,现象是很多文字字体,大小都不一致。 仔细想想,它(我一直用gnome)字体显示的工作原理大致是有个字体列表,然后要显示一个字的时候就依次查找,直到找到一个能够显示的为止。 比如如果我设的默认字体是个中文字体,那么英文字体一般就会跟着改变。但是现在默认字体是英文的,显示中文时自然找不到,于是它就从自己的默认列表里去找到了。 至于列表具体存放的位置, 我找了找,是在/etc/fonts/conf.d里,相关的有两个文件, 40-generic.conf 和 65-nonlatin.conf, 根据/etc/fonts/conf.avail里的说明,这些配置文件是按编号顺序依次加载的, 于是修改65-nonlatin.conf, 由于我想使用文鼎楷体,于是找到对应的 , 并把它移到所在 里的最前面,成为第一个 。 之后重启X时没进去,卡住了,然后重启了一下问题解决。 现在爽眼多了。

linux下麦克风不工作

我这里麦克风的症状如之前声卡output的一样, 不报错但是不工作(偶尔好像也报错)。 弄了好几次不见起色。 今天偶然又看看了alsa网站里的详细安装说明,发现我这里设备文件的权限没设对。 于是运行chmod a+rw /dev/dsp /dev/mixer /dev/sequencer,之后问题解决(我这里没有midi) 不过似乎噪声很大,尚待解决。但是好歹可以用了。

创建 ssh 信任连接

参考: http://www.powersite.cn/?q=node/62&p=9334c90a88934eac5df7c7710c149d&user=baidu 主要目的是让服务器给客户端建立信任关系,使得以后连接时不需要输入密码 具体步骤是 1.在客户端建立key, 如果没有创建过, 用ssh-keygen -t rsa创建一个 2.把生成的id文件(一般是~/.ssh/id_rsa)的内容追加到服务器的~/.ssh/authorized_keys文件中 就是这么简单。

evince 看中文pdf乱码的解决

有时候用evince看中文pdf会出乱码,大概是Adobe-GB1这个字体的问题, 装了xpdf-chinese*和cmap-adobe*之后,xpdf可以正常工作了, 但是evince仍不行, 控制台消息会报跟adobe-gb1有关的错误。 源里没有poppler相关的包, 我又搜了搜,终于发现了应该安装poppler-data,可以从http://poppler.freedesktop.org/下载到。那个由于是版权归Adobe,所以不能放源里。唉。 不过装了之后确实正常了,如果是ubuntu,注意用sudo make install prefix=/usr来安装。

ubuntu 7.10 rainlendar 崩溃的解决

日历软件我一直用rainlendar+GCALDaemon, 然而ubuntu升级至7.10后,rainlendar就出了问题, 虽然界面可以显示,但是点击菜单后就会崩溃。起初认为是和以前一样与scim冲突, 但是尝试修复未果。 今天搜到了http://www.rainlendar.net/cms/index.php?option=com_fireboard&Itemid=36&func=view&catid=4&id=4316 根据作者所说, 这个是和gtk和wxwidget有关。 之后我现在了2.2.b48版, 基本工作正常 链接在http://www.rainlendar.net/cms/index.php?option=com_fireboard&Itemid=36&func=view&id=4540&catid=7

[转]AT&T汇编语言与GCC内嵌汇编简介

AT&T汇编语言与GCC内嵌汇编简介 版本 0.1 时间04/3/30 EMAIL chforest_chang@hotmail.com 1 AT&T 与INTEL的汇编语言语法的区别 1.1大小写 1.2操作数赋值方向 1.3前缀 1.4间接寻址语法 1.5后缀 1.6指令 2 GCC内嵌汇编 2.1简介 2.2内嵌汇编举例 2.3语法 2.3.1汇编语句模板 2.3.2输出部分 2.3.3输入部分 2.3.4限制字符 2.3.5破坏描述部分 2.4GCC如何编译内嵌汇编代码 3后记 本节先介绍 AT&T汇编语言语法与INTEL汇编语法的差别,然后介绍GCC内嵌汇编语法。阅读本节需要读者具有INTEL 汇编语言基础。 1 AT&T 与INTEL的汇编语言语法的区别 1.1 指令大小写 INTEL格式的指令使用大写字母,而AT&T 格式的使用小写字母。 例: INTEL AT&T MOV EAX,EBX movl %ebx,%eax 1.2 指令操作数赋值方向 在INTEL语法中,第一个表示目的操作数,第二个表示源操作数,赋值方向从右向左。 AT&T语法第一个为源操作数,第二个为目的操作数,方向从左到右,合乎自然。 例: INTEL AT&T MOV EAX,EBX movl %ebx,%eax 1.3 指令前缀 在INTEL语法中寄存器和立即数不需要前缀; AT&T中寄存器需要加前缀“%”;立即数需要加前缀“$”。 例: INTEL AT&T MOV EAX,1 movl $1,%eax 符号常数直接引用,不需要加前缀,如: movl value , %ebx value为一常数; 在符号前加前缀 $, 表示引用符号地址, 如 movl $value, %ebx 是将value的地址放到ebx中。 总线锁定前缀“lock”: 总线锁定操作。“lock”前缀在Linux 核心代码中使用很多,特别是SMP 代码中。当总线锁定后其它CPU 不能存取锁定地址处的内存单元。 远程跳转指令和子过程调用指令的操作码使用前缀“l“,分别为ljmp,lcall, 与之相应的返回指令伪lret。 例: INTEL AT&T lcall $secion:$offs

ubuntu 升级至7.10后framebuffer console故障排除

症状:没有修改任何配置,升级后framebuffer console突然不工作了,纯控制台变成黑屏,手工加载fbcon, vesafb, nvidiafb(我的显卡是nvidia)也不行。 折腾了好半天,参考了一些网页,比如 https://bugs.launchpad.net/ubuntu/+source/initramfs-tools/+bug/129910 了解了大致原因,一个是 fbcon不能自动加载,另外是framebuffer的驱动被加入了blacklist 得解决方案: 1.修改/etc/initramfs-tools/modules, 添加fbcon, vesafb(每个模块占一行) 2.修改/etc/modprobe.d/blacklist-framebuffer, 把含vesafb, nvidiafb的两行注释掉 3.确认grub里的启动参数中设置好了vga 问题解决。 注:第一步里似乎不用加上nvidiafb, 但是另外两个似乎要加上

ubuntu 升级至7.10后网卡设备名自动改变的解决方法

症状是每次开机时会说invaid MAC address, 然后就会生成一个随机的MAC。 但是7.04时这个可以忽略。7.10里每次MAC一更改,网卡设备名就会更改,从eth0一直往上加。 查了一下,是udev这个东西搞的鬼。具体来说是/etc/udev/rules.d/75-persistent-net-generator.rules 我把一开始的GOTO="persistent_net_generator_do"该成了GOTO="persistent_net_generator_end",即直接跳过了生成新设备名的代码,问题得以解决。

ubuntu 升级至7.10后 vim-latexsuite 不工作

在 https://bugs.launchpad.net/ubuntu/+source/vim-latexsuite/+bug/137205 处找到了相关资料。 原因就是vim的runtimepath不包含/usr/share/vim/addons,但是vim-latexsuite默认是被装在那里的(不知道ubuntu7.04是如何配置的)。 解决办法,可以将/usr/share/vim/addons的内容拷至/usr/share/vim/vimfiles,也可以在.vimrc里加入set runtimepath+=/usr/share/vim/addons。

ubuntu 升级至7.10后无法登录

现象是输入密码的地方可以进入,但输入后X过一会儿就崩溃了,之后自动回到登录状态。 首先是要确定已装好显卡驱动,譬如我的nvidia显卡,更改内核后需要重新安装。 之后我把~/.gnome*和~/.config/autostart都改名后再进就正常了,然后试着该回来,又不行了。 后来折腾了几次,主要都是这几个文件夹,现在好了,发现新的gnome自启动好像不用~/.config/autostart了.

Intel HD Audio 在 linux 下耳机插孔不工作的解决办法

症状是:使用hda-intel模块驱动声卡,扬声器工作正常,但插入耳机后耳机不出声,而扬声器仍发声。 参考了http://leufke.info/linux/asus/index.html, 可以尝试给snd-hda-intel模块加入position_fix=1的参数,一般来说是修改/etc/modprobe.d/options,加入options snd-hda-intel position_fix=1即可

游戏推荐: fish fillets

画面简单但关卡不简单的小游戏 关卡设计非常巧妙,到了后面有时我连看着攻略都过不去。 如果完全是自己研究出来的解法,过关后甚至有想哭的感觉:设计得太精妙了! 极力推荐! 现在版本叫fish fillets next generation.

vaucanson-g: latex画自动机的宏包

最近作业要画自动机,找来找去发现这个 vaucanson-g 挺不错,只不过要注意根据它的文档所说,它只能生成 postscript指令,因此我这不能用pdflatex直接编译为pdf,而是要用pslatex编成dvi, 然后再依次转成ps,pdf才可以。 效果还不错,不过目前只用到英文,也没有插图,还没出现问题,不知道它对于中文和插图支持得如何。

wine Windows Media Player 10

参考: http://feeds.feedburner.com/~r/winereview/~3/161431304/windows-media-player-9-10-on-linux-with.ht ml 主要步骤是: 1.安装一些dll, 一般可以从windows目录拷来或下载,然后用regsvr32注册以及winecfg中native的设置。包括如下dll: quartz.dll devenum.dll jscript.dll MSCAT32.dll 2.安装Microsoft XML Parser 3.安装解码器,我用的K-Lite Mega Codec Pack 4.安装Windows Media Player 10 一开始几次都没弄好,主要是可能忘了注册某几个dll, 一般来说几次重装就没问题了。 根据引用的帖子所说,好像网络方面不能用,别的都没问题。

wine qq

参考: http://linuxdesktop.cn/2007/04/13/step-by-step-install-qq2006-with-wine 我大概是按着这个帖子做的,但也不尽然。 主要应该还是弄来riched20.dll和riched32.dll, 可以从windows盘拷,也可以装一个。之后安装QQ,最后注意把TIMPlatform.exe改名基本就OK了。 原文说要把键盘加密那个sys也改名, 不过我这里没有找到。 还有就是一开始我用的是2007飘云版,但是虽然能正常登录及显示好友列表,而一进聊天窗口就卡住了。后来用的官方版本(也是2007)就好了。 最后就是我的wine没有打输入法补丁,因此用scim无法输入中文,不过问题不大。

关于在bochs的gdb-stub中加入对虚拟内存访问的支持

最近操统课需要用到bochs这个模拟器,我用的2.3.5. 但是实际出现了以个问题,就是gdb-stub这个功能不大正常,运行gdb后可以正常下断点,但是单步进可以,单步过却和单步进相同,这个问题不大比较恶心的是无法显示局部变量的值,总是显示0xffffffff                          google了半天没看到一点有用的。。。。。唉,只好自己搞                          参阅了gdb protocol后我修改了bochs的gdbstub.cc,让其显示出与gdb交互的内容,大致了解了内存这部分的步骤,主要是gdb给server(即bochs)发一个内存读取的请求,格式为m addr,length, 然后server返回十六进制的数据                          在bochs的gdbstub.cc 558行为处理这个指令的,不难看懂,我修改了它,让它输出access_linear的返回值,然后再调试,查看局部变量,果然valid为0,进一步,到access_linear, 经过痛苦地多次调试,发现问题处在valid=BX_MEM(0)->dgb_fetch_mem...一行,最后进到或则个函数,在memory/misc_mem.cc 512行下看到了这部分,原来是bochs发现读取的地址越界,就用0xff填充,然后返回0, 我修改了0xff,然后用gdb调试时证实了这一点。                          最后往上看,发现是addr比内存的长度还要大, 加入调试输出后发现gdb读的地址是0xf010 9fe0左右,而BX_MEM_THIS len仅有2000000,这显然会越界。                          起初我考虑也许是那里关于内存大小的设置没有弄好,但没有找到具体位置,但后来发现其实那BX_MEM_THIS len 是在.bochsrc里有定义的,0x2000000=2^25=32k,而那个0xf0109fe0是内核做的虚拟内存,gdb只跟bochs打交道,而虚拟内存是内核弄的,虚拟机又管不着。因此好像没什么好办法。。。 之后我查了很多关于虚拟内存的资料,发现其实是cpu直接支