2008年4月5日星期六

绿色emule,黄色emule

我只有在找A片时才会想到电驴,Verycd上的东西直接交给迅雷了,但迅雷上搜索A片不方便,这时候,就该色驴上场了。我通常直接从官网上直接下一个最新版的zip包,解压后直接使用,非常绿色,当然,在炒股时,我也是这样。

我看A片一般是不认人的,觉得好就多留一段时间,不喜欢直接删了,最初用的关键词也很简单,从“强奸”“少女”“人妻”之类开始,然后举一反三,挑几个名字有诱人的开下。后来有专家朋友给了我一个亲自整理女优及论坛清单,搜索时就更加得心应手了。

不过今天想看看韩寒的最爱,下了Emule0.48a后运行,发现已经是中文版的了,而且会自动在下载目录下生成emule目录,不会是迅雷给我张冠李戴了吧?直接用“目标另存为”下,结果还是一样。中毒了?用360安全卫士查看了一下进程,发现使用的语言文件来自C:\programdata,再次搜索后发现,原来从0.48a开始,emule在Vista上,默认是每个用户一个配置,所以会在用户的下载目录下生成emule目录以保存下载文件,而每个用户的配置文件是在C:\Users\Username \AppData\Local\eMule,用户无关的如语言文件则保存在 C:\ProgramData\eMule,真是狡驴三窟。要恢复原来默认的绿色配置,需要到扩展配置里去更改(大约在最后的位置)。

搞清了来龙去脉,突然没了看A的兴致,到这里来博一下。

2008年3月14日星期五

Vista的自动更新问题

家里的Vista自动更新已经出问题一段时间了,包括Defender,试了网上的一些方法,如删掉softwaredistribution文件夹之类,统统无效,看着系统托盘中的提示图标,别提多郁闷了。

今天下午花时间找了一下,在一个老外的帖子找到了解决办法(抱歉我现在找不到了),真的很简单,只要在自动更新的设置中,不选择“下载、安装或通知更新时包括推荐的更新”就OK了

2008年2月10日星期日

当爱已成网事

当性爱已成网事
哎..已经顾不了太多
因为我的爱 阿娇
已经赤裸裸

暴露了内幕真相
陈冠希 你就急着防备抵抗
可我知道这结果
那他妈的没有意义
你不必为谁道歉
只要我们能够看得清楚
照片我会好好收藏


想看的看了
让手纸在前面等我

2008年2月9日星期六

Kubuntu Hardy Alpha 4 硬盘启动及试用问题

上一次我介绍了怎样通过移动硬盘启动Ubuntu的Live CD,当时,我是拿kubuntu-kde4.0-i386.iso来试的。可事情没有这么简单,如果你使用一周前刚刚发布的Ubuntu 8.04 Hardy Heron Alpha4来测试,会发现每次启动不到一半就挂了。

通过检查initrd.gz,终于发现,原来Hardy Alpha 4要进行启动设备的uuid验证,而如果变量$IGNORE_UUID不是空字符串或者/conf目录下没有uuid.conf文件则会跳过该检验,那个Kde4.0 LiveCD就是后一情况,对于我们来说,最简单的方法就是设置变量IGNORE_UUID,所要做的只是编辑一下syslinux配置文件,给内核传递一个ignore_uuid参数:

append file=/cdrom/preseed/kubuntu.seed boot=casper initrd=/casper/initrd.gz ignore_uuid splash --
如此一番修改后,终于可以成功启动系统了,但最终还是倒在了xorg上,在命令行运行startx、X或者xinit都失败了。还有,对我来说,已经是老问题了,关机时依然不能自动关闭电源。

以上是在我的笔记本上测试的结果,显卡是ATI X1600,在单位的Dell机上测试,运行良好。

2008年2月8日星期五

syslinux应用简介

syslinux是一个轻量级的启动装载器,只用Windows的人可能不明白是什么东西,如果玩过Linux,一定知道lilo和grub,是的,所谓轻量级我想就是跟grub们相比而言的,尤其是grub2。

syslinux有很多变种(都是官方的)适用于各种媒质,如syslinux用于从微软的文件系统fat 16/32引导,isolinux用于从光盘引导,pexlinux用于从网络引导,extlinux用于从ext2/3文件系统引导。

从这也可以看出,syslinux对于各种设备的兼容做的很细致,据grub4dos的人说,用于兼容性方面的代码甚至超过了程序主要功能的实现代码。

Ubuntu的Live CD就是使用isolinux来引导的,如果你不想为了一个Alpha版本而浪费一张光盘,可以将iso镜像文件放在U盘或移动硬盘上,轻松的换用syslinux来引导。

  1. 将iso镜像中的casper和isolinux文件夹拷贝到移动硬盘的fat32分区根目录,这对于引导系统,只想体验一下LiveCD来说已经足够了,如果你还要进行系统安装等,可能还要其它文件。
  2. 将isolinux文件夹改名为syslinux,现在将syslinux文件夹中的isolinux.cfg文件改名为syslinux.cfg。
  3. 安装syslinux到移动硬盘。如果是在Windows下,使用下面的命令:
    syslinux.exe /mfa G:
  4. a表示激活分区,f是force的意思,m是写mbr,G:是移动硬盘分区的盘符。运行后会在根目录生成一个ldlinux.sys的隐藏文件。

    Ubuntu的Live CD使用的isolinux打了gfxboot补丁,如果你使用官方版本的syslinux,启动后就没有菜单以及语言选择等内容。所以建议大家使用同样打了补丁的Ubuntu版本的syslinux:
    sudo aptitude install syslinux mtools
    sudo syslinux -f /dev/sdb1
    需要mtools是因为要修改fat32文件系统上的文件属性。/dev/sdb1是移动硬盘fat32设备的文件名,不需要mount。
好了,现在插上移动硬盘,将电脑设置为从USB设备启动,OK?如果启动失败,很有可能是分区表的原因,想想当初,我将移动硬盘上的第一个分区设为主分区,fat32格式,也许是个英明的决定。

附记:除了gfxboot,syslinux也有自己的菜单系统这里有一个样例配置文件,在它的邮件列表上,说起gfxboot,有人似乎很不屑suse写的代码。

2008年2月7日星期四

Linux flash插件更新及最新sources.list

今天更新了几个软件,发现其中flashplugin-nonfree更新失败

正在设置 flashplugin-nonfree (9.0.48.0.2+really0ubuntu12.1) ...
Installing from local file /var/cache/flashplugin-nonfree/install_flash_pla
yer_9_linux.tar.gz
md5sum mismatch install_flash_player_9_linux.tar.gz
The Flash plugin is NOT installed.
网上搜了一下,原来是个Bug

解决办法是:删除/var/cache/flashplugin-nonfree/目录中的文件,按Bug report中给出的方法“IMPORTANT NOTICE no.2”,清除cache,purge掉flashplugin-nonfree,为了保证源是最新的,我注释掉了cn99的源,使用了archive.ubuntu.com的,重新update后,再全新安装flashplugin-nonfree,一切还算顺利,有个小尾巴是,最后检查的时候发现还是从cn99下的:
apt-cache policy flashplugin-nonfree
flashplugin-nonfree:
已安装:9.0.48.0.2+really0ubuntu12.1
候选的软件包:9.0.48.0.2+really0ubuntu12.1
版本列表:
*** 9.0.48.0.2+really0ubuntu12.1 0
500 http://debian.cn99.com gutsy-updates/multiverse Packages
500 http://debian.cn99.com gutsy-proposed/multiverse Packages
100 /var/lib/dpkg/status
9.0.48.0.2+really0ubuntu12 0
500 http://debian.cn99.com gutsy/multiverse Packages
不清楚是怎么回事。更新是确实的,因为上news.163.com不再崩溃了,为了看“老衲”以及诸位淫才的评论,昨晚还崩溃了一次,呵呵。

另附上我自己使用的sources.list:
# For available mirrors, you can check the url:
# https://launchpad.net/ubuntu/+archivemirrors
deb http://debian.cn99.com/ubuntu/ gutsy main restricted universe multiverse
#deb-src http://debian.cn99.com/ubuntu/ gutsy main restricted universe multiverse
deb http://debian.cn99.com/ubuntu/ gutsy-security main restricted universe multiverse
deb http://debian.cn99.com/ubuntu/ gutsy-updates main restricted universe multiverse
deb http://debian.cn99.com/ubuntu/ gutsy-backports main restricted universe multiverse
deb http://debian.cn99.com/ubuntu/ gutsy-proposed main restricted universe multiverse

# The Official repos, always up-to-date, but slow
# So we comment out it for daily use.
#deb http://archive.ubuntu.com/ubuntu/ gutsy main restricted universe multiverse
#deb http://archive.ubuntu.com/ubuntu/ gutsy-security main restricted universe multiverse
#deb http://archive.ubuntu.com/ubuntu/ gutsy-updates main restricted universe multiverse
#deb http://archive.ubuntu.com/ubuntu/ gutsy-backports main restricted universe multiverse
#deb http://archive.ubuntu.com/ubuntu/ gutsy-proposed main restricted universe multiverse

# wine
deb http://wine.budgetdedicated.com/apt gutsy main
#deb-src http://wine.budgetdedicated.com/apt gutsy main

# skype
#deb http://download.skype.com/linux/repos/debian/ stable non-free

#VirtualBox
deb http://www.virtualbox.org/debian gutsy non-free

#bzr
#deb http://bazaar-vcs.org/releases/debs/feisty ./

2008年1月4日星期五

几个Linux内核模块管理工具

介绍几个Linux内核模块管理的相关工具。

首先是lsmod,我们用它来查看当前加载的模块。

rmmod可以帮我们卸载某个模块,如果该模块被其它模块使用,就会卸载失败,可以查看lsmod输出的第4列来确定模块被哪些模块依赖,先卸载它们,最后卸载被依赖的模块。

modprobe用来加载某个模块,如果该模块依赖其它尚未加载的模块,则一并加载。

depmod用来生成modules.dep文件,modprobe就是通过它来确认模块之间的依赖关系。我们知道,内核和模块都提供了许多符号可供第3方使用,depmod正是依据A模块是否使用了B模块的符号来确定它们的依赖关系的。

depmod -a
Ubuntu中有一些个脚本,如lrm-managerlrm-video,是用来管理版权受限的模块的,lrm的意思是linux restricted modules,如Nvidia的视频驱动。

关于受限驱动模块,你还可以看一下/etc/default/linux-restricted-modules-common文件,在这里可以设定禁止加载哪些模块。

关于启动时哪些模块被加载,或者加载细节等等的一些配置,可以看一下/etc下的modprobe.dmodutils目录和modules文件。

deb文件制作与修改初级

deb文件是Debian/Ubuntu系统的软件包分发格式,就象RedHat/Fedora的rpm。

首先我们来看一下deb包的结构。

随便找一个deb文件,比如说foo.deb:

dpkg -e ../foo.deb
dpkg -x ../foo.deb .
第1条命令在当前路径生成了有一个DEBIAN目录,它是deb包中的控制部分,目录中一般有这么几个文件
  1. control文件中记录了该deb包的元信息,如软件包名,版本,谁打的包,与哪些软件包冲突等等。
  2. md5sums文件中是该软件包要安装到系统中的文件的md5值。
  3. preinst文件是安装之前预处理的脚本。如安装新版本的Apache服务器时可能要先停止正在运行的服务。这个和以下的几个文件都是shell脚本。
  4. prerm文件用于安装前删除一些文件。
  5. postinst文件用于安装后的处理脚本。继续上面的例子,你可以在这里启动新版本的Apache服务。
  6. postrm文件用来在安装后删除一些文件。
第2条命令在当前目录解压了要安装到系统的数据文件,如果以当前目录为根目录,它们的路径就是被安装到系统的路径。

另外再介绍两个解压deb包的命令
ar p ../foo.deb control.tar.gz | tar zxvf -
ar p ../foo.deb data.tar.bz2 | tar jxvf -
这里第1条命令与上面略有不同,它直接将DEBIAN目录下的文件解压到当前目录,而不生成DEBIAN目录,如果你最后还要还原成deb包的话,这会有点不方便。第2条命令的效果则和先前的一样。

你可以按照你的要求,随意增加、删除、修改所有这些文件。如果你要为一个解压即可以运行的软件制作一个deb包,你要做的一般就是安排好目录,添加几个快捷方式。如果是用make;make install自己编译的,我的办法是先用checkinstall生成一个deb包,然后再解开来做一些修改,如果需要的话。

最后再将它们打包成deb文件
cd ..
dpkg -b 待打包目录 软件包名
如上所述,待打包目录形如foo/DEBIAN,foo/usr/bin/... ,这也是为什么上面讲解压时,命令中的deb包都放在上层目录的原因。

2008年1月3日星期四

System.map文件:内核符号-地址转换表

赵炯编译的文章-《System.map文件的作用》 几乎把什么都说了,我就这里做个摘要吧

  1. System.map是在编译内核时自动生成的,由于编译器,内核版本,编译平台等因素,每次编译后的System.map都会不同。
  2. 内核自身并不使用System.map
  3. 所谓内核符号就是变量、函数名等等,它们在内核中的地址可能是这样的:c03441a0
  4. klogd之类的程序使用System.map将内核消息中的地址转换成符号名,以方便人们理解。
  5. /proc/ksyms在2.6内核中换成了/proc/kallsyms,在内核初始化时创建,是当前内核实时的符号-地址表
  6. 应用程序如klogd,会自动在相应目录查找System.map。

initrd.img:内核初始化过程中使用的内存文件系统

initrd.img是一个gzipcpio双重打包的文件,如果你把它解开就会发现,其实它包含了一个微型的根文件系统:

mkdir initrd
cd initrd
cp /boot/initrd.img-2.6.22-14-generic ..
zforce ../*
gunzip ../initrd.img-2.6.22-14-generic.gz
cpio -i -F ../initrd.img-2.6.22-14-generic
ls
其中包含了一些常用的命令,许多脚本,内核模块等等。内核在启动过程中,会将它解压到内存,建立一个临时的用户环境,利用这些工具处理一些必须在这个阶段完成的任务,如加载根设备驱动等等。

重新打包可以这样:
find . | cpio -o -H newc | gzip -9 > ../initrd.gz
Ubuntu上建议用户使用update-initramfs来维护和生成initrd.img,高级用户可以使用mkinitramfs。以前的标准工具mkinitrd似乎不再被使用。其实它们都是一些脚本。
sudo update-initramfs -u -k all
我们可以通过Grub或Lilo给内核传递参数,告诉它应该使用哪一个initrd.img文件:
initrd /boot/initrd.img-2.6.22-14-generic