Archive

Posts Tagged ‘Ubuntu’

Ubuntu 10.04图形界面无法登录,密码是对的

January 13th, 2012 4 comments

前几天调整台式机的硬盘分区,之前的分区很不合理。结果Windows 7对硬盘分区的个数有限制,机器上现在的分区有六个(windows 7三个分区,ubuntu占了两个primary分区,还有一个系统OEM分区),在shrink一个分区之后就无法新建分区了。想尽了各种办法,删除个别分区,扩大分区,都不管用。最后逼得没办法,就只有把后四个全删了,再重新分。之前装的Ubuntu10.04也没了,只好重新装。我觉得我就是喜欢瞎折腾,还带有点洁癖。看到不整齐,结构不对称的东西,我就不舒服,非要把它们弄到我看得爽了才行。这样的例子太多了,浪费了我好多时间。

Ubuntu 10.04没了,再装一个,打算试个新的版本。12.04的还没出,据说4月份会出。10.04是个LTS版本,支持到2013年。而12.04据说会支持五年。可以从10.04直接升到12.04,不过过程估计会不大顺畅,毕竟这俩之间隔了好几个版本。干脆试个最新的吧,11.10。装了之后,发现新版本fancy好多,但除了好看点之外似乎没发现其他亮点。有一个变化我挺喜欢,绑定的email客户端变成了Thunderbird,这是我用了多年的客户端,比起那个Evolution好多了。虽然如此,但我很不喜欢Ubuntu绑定这些email,chat,broadcast客户端软件。这也是间接导致标题中指明的问题的原因。用惯了以前的,对Unity很不习惯。menu bar没了,变成了global menu,位于屏幕左方;Synaptic Package Manager也没了,软件的安装都集成到了Ubuntu Software Center;虽然global menu也可以和menu bar一样,加入一些程序的快捷方式,但找出这些程序比较费功夫,要么在已安装的程序中搜索,要么一个个浏览下来,这样就很麻烦了,个人非常不喜欢这样的;那个global还是autohide,位置还不能变动,这一功能貌似从Mac系统那学来的,但我不喜欢autohide,也不喜欢放在左边;等等。除了各种不惯不方便之外,另一个大问题是Unity不大稳定,有bug,比如搜索程序没搜到,明明都安装了,还有我先点了“Media Apps”,然后点“More Apps”查找已安装的程序,结果打开的还是我点“Media Apps”的东西。最后碰到的一个bug让我彻底放弃了Ubuntu 11.10。我试着用3D桌面,设置好后,把其他窗口都关了,然后看桌面,什么东西都没了,而以前又没用过,不知道有没有什么快捷键。那个global menu bar也死活不出来。不想再折腾了,也不想花那么多的时间去适应这些新玩意,果断卸了,装回Ubuntu 10.04。

装回10.04之后,愈发觉得之前说的那些绑定的email,chat,broadcast客户端软件让人看着很不爽,而且他们还出现在右上角的那些application applet indicator离。我的洁癖强迫症又犯了,google了去掉这些玩意的办法,把Empathy,Evolution,Gwibber全卸了,在Synaptic Package Manager用了“complete removal”。被能够拜托这些东西的兴奋劲给迷惑了,没有注意看弹出的dependency提醒窗口,果然各种“OK”。整得差不多了,重启再登录。在图形界面的登录窗口里输了密码,结果却没有登录系统,还是出现这个登录窗口。不是密码错误,因为没看到authentication failure的提示。试了N次,还是不行。重启用text mode登录,却没有问题。Google之。看过很多帖子之后,发现不少人跟我一样不喜欢上面那些绑定的软件,也注定着不少人碰到了我碰到的问题。最开始以为问题的原因是卸载Evolution时(complete removal)把一些其他程序用到的服务也给卸载了。重装了Evolution,重新登录,发现没有用。再找原因,有人说试下重装gnome-applets。试了,这次成功了。gnome-applets依赖于Evolution的一些服务,但complete removal时把这些服务给删了,进而导致它们的依赖着也被卸载了,包括gnome-applets。

我就是爱折腾,没事找事。。。

signal function, signal handler, and signal mask on Ubuntu

December 16th, 2011 No comments

When I was trying to run the program in Figure 10.23 in APUE2e using Ubuntu command line, after I typed Ctrl+C twice, the program terminated, which meant that the second SIGINT signal generated was not caught by the signal handler (sig_int) installed previously. This was different from the book’s running results. So I added a checking line in sig_int to check whether the signal handler of SIGINT was changed after sig_int was called. The running result revealed that the signal handler of SIGINT has been set to default SIG_DFL, which meant the handler installed previously was called only one time. To make the program catch the SIGINT signal continuously, an additional call to signal had to be called in sig_int: signal(SIGINT, sig_int). I checked the Ubuntu manual for signal function and it said that:

If the disposition is set to a function, then first either the disposition is reset to SIG_DFL, or the signal is blocked (see Portability below), and then handler is called with argument signum. If invocation of the handler caused the signal to be blocked, then the signal is unblocked upon return from the handler.

Read more…

APUE2e编程环境搭建

April 15th, 2011 1 comment

APUE2e书于上周末看完了,不容易啊。这学期是狠了心看的,就怕一直拖着到毕业也看不完。算一下,断断续续,看了一年多的时间。不过我只是看,并没有把书上的代码都敲一遍,虽然代码都仔细读了,但还不够。于是想装个linux练一下,导致我这周基本上都在双系统安装上折腾。Ubuntu 10.10之前作为client os装在Win7上,像应用程序一样,没有问题。但这次我想单独安装,毕竟像应用程序一样安装在Windows上,一个不小心就可以把它卸载了,上面的东西一下就没了。单独安装,问题出现了一堆。Ubuntu 10.10在我的Thinkpad W500安装了三次,都以失败告终。这里的失败不是完全的失败,系统第一次可以启动,虽然会报错,但能进入图形界面。第二次就不行了,进了命令行模式。想着可能安装过程出了问题,于是重装。就这样装了三次,而且每次都会尝试着找些解决办法。试过安装图形界面包,试过修复所有的package,试过设置BIOS里的显卡,都不work。我记得之前也装过双系统的,也是Ubuntu,那时候都没有问题。也许是版本不行,于是找了10.04的安装,可以了。接着一番折腾,总算把系统基本设置好了。

回到正题。APUE2e的编译问题,我在之前的一篇文章说过。如果想自己练一遍所有代码,那得搭个环境,省去些麻烦。APUE2e的大部分程序里都用到了头文件apue.h,这是书上自带的,linux的库函数里没有这个。此外,还有两个关于错误输出的文件,error.c和errorlog.c,都是APUE2e自己定义的,也无法在linux的库函数中找到。这两个文件在APUE2e源码解压之后得到的文件夹的lib子文件夹里。error.c定义了“error functions that output to standard error”,代码在书地附录B的Figure B.3上; errorlog.c定义了“error functions for daemons”,代码在书地附录B的Figure B.4上。两个文件里定义的函数在apue.h中都声明过了,而error.c和errorlog.c都有#include “apue.h”语句。编写C程序时,对于指定的头文件(include语句),一般在project当前文件夹(#include “xx.h”)和/usr/include中查找(#include <xx.h>)。为了方便,我就把apue.h,error.c和errorlog.c都放到了/usr/include底下,但要做一定的修改。具体如下:
Read more…

Categories: 技术乱弹 Tags: ,

Vista和Ubuntu双系统引导 – 修改默认启动的操作系统

January 25th, 2010 No comments

之前在台式机上装了双系统,电脑自带的是Vista Home Premium,而我装了Ubuntu 9.10。Ubuntu的Grub自动给电脑做好了引导程序,但默认的启动系统我选的是Ubuntu,不是Vista。后来发现,还是Vista用的多,但启动系统时一不留神就进来Ubuntu,得重启后再进Vista,如此折腾了多次。今天心血来潮,想把默认启动的系统改为Vista。Google了很多修改grub的文章,大多是针对Ubuntu 9.10之前的版本的,这些版本使用的是grub,而Ubuntu 9.10用的是Grub2。Grub2和Grub还是有些不同的,比如/boot/grub/文件夹下就找不到menu.lst。而网上的多数方法都是针对Grub。有关Grub2的修改的文章有一些,但大部分方法不对头,这些方法建议修改/boot/grub/grub.cfg的相关内容,如set default=”0″,来指定默认的启动系统。但这样治标不治本,更新grub之后,所作的修改都会失效。究其原因,可以看grub.cfg文件开头的一段描述:
Read more…

Categories: 技术乱弹 Tags: ,