Archlinux 安装问题和解决汇总

发布于: 2009年10月20日

IBM T43,2G RAM,80G HD,PM 2.0G,ATI X300

320G新移动硬盘一块。

分区如下:

sdb5 1GB Swap

sdb6 300MB /boot

sdb7 20GB /

sdb8 20GB /home

sdb9 170GB ext3 /media/data

sdb10 80GB NTFS /media/win_data

问题1: 移动硬盘无法启动Linux/Windows。

问题描述:移动硬盘作为USB-HDD启动,grub/menu.lst (hd1,5)启动kernel失败. (hd0,0)启动windows也失败。

解决:

a)移动硬盘自作聪明把自己认为是(hd0),必须在Grub 中设为(hd0)才行,不过进Linux系统后,还是自己乖乖的把自己设成(sdb)。

b)(hd0,0)无法启动Windows, 设成(hd1,0)也不干,因为人家本来就是名正言顺的正室,怎么能沦为二房?于是设成了下面这样:

title Windows
map (hd0) (hd1)
map (hd1) (hd0)
rootnoverify (hd1,0)
makeactive
chainloader +1

增加

map (hd0) (hd1)
map (hd1) (hd0)

这两行,欺骗一下正室。

问题2:安装KDE后无法启动
问题描述:安装kde后,执行startkde命令出现下面的错误
$DISPLAY is not set or cannot connect to the X server

问题解决:原来pacman -S kde后,arch连 X Server 都不给我装

pacman -S xorg

编辑~/.xinitrc,添加startkde,然后终端下面startx启动
startx 解决问题

问题3:启动KDE 死机

问题描述:root用户安装xorg后执行 Xorg -configure 在root用户目录生成xorg.conf.new
cp xorg.conf.new /etc/X11/xorg.conf

这样就生成xorg.conf并copy到了它应该在的地方。但是一进X就死机,鼠标键盘都不能使用。
问题解决:根据ATI驱动安装的wiki文档

添加

在xorg.conf文件末尾添加

Section “DRI”
Mode 0666
EndSection

解决.但是不知道为什么。:(

问题4:Fcitx自启动问题
问题描述:根据Fcitx文档,将Fcitx & 写入~/.bashrc or ~/.xinitrc 可实现自启动。实际上是有问题的。

~/.xinitrc中,只有执行startx命令时,才会跟随启动,用XDM/KDM等启动时无效

~/.bashrc中,每次开一个虚拟console都会启动一次fcitx, 而实际上已经启动了,于是新虚拟console的窗口顶端就会报错,十分不方便。

解决:写入~/.bash_profile,不过每次登录tty2~tty6时,同样会报错,不过将就了。

问题5: 识别声卡看不发声音

问题描述:声卡能正常识别,dmesg也显示Alsa声音驱动正常安装,但就是不发声音

解决:
将你的用户加入到audio组:
# gpasswd -a USERNAME audio

问题6: 无线网卡

问题描述:这是我最郁闷的问题。笔记本无法识别无线网卡真是一场灾难。

问题解决:我被自己的固有思维欺骗了。进Windows时无线网卡自己启动,或者使用Fn+F5进行启动,无线网卡的LCD灯亮起,然后配置。在Linux下这个灯始终不亮,咋办?于是到处找热键驱动,ibm_acpi, thinkpad_acpi模块折腾2天。

最后在http://www.thinkwiki.org/wiki/Thinkpad-acpi 看到下面这段:

As of kernel 2.6.27 the thinkpad-acpi bay and dock drivers should no longer be used. Instead use the standard ACPI bay and dock drivers. As of kernel 2.6.31 the thinkpad-acpi bay and dock drivers have been removed completely.

而我的内核正是2.6.31, 难道这个问题无解?

最后,故事以近乎荒唐的方式结尾。

ifconfig -a

秀出所有网络端口,找到无线端口的名字(eth1)

ifconfig eth1 up

启动完成。

辛苦记录以上文字,希望对我将来或者对你现在有用。

回到Linux桌面,发行版的选择

发布于: 2009年10月20日

作为Linux爱好者,虽然一直用着Windows,却始终有一种耿耿于怀的想安装Linux的情节。

Windows一直让人舍弃的大原因有二:网银和游戏。

网银中的网上购物已经被招商银行暂时解决了,而网银的账户管理级别上有我老婆这个财政大臣在,也用不着我操心了。

随着年龄的增长,游戏已经被我渐渐遗忘。看者Xbox360上厚厚的灰尘,握着手中新买的移动硬盘,我想,是时候选择一个Linux发行版了。

Ubuntu是我最近比较关注的发行版,但是我心里还有另外一个情节,那就是Slackware. 那是我最早接触的发行版,也是最早安装成功的发行版。

在RH8.1到RH9过渡的年代,在Mandrive还是Mandrake的年代,在SUSE还没有被Novell收购的年代,我尝试安装了以上的各个发行版,Slackware 9是我最早安装成功的版本。那个时代,Slackware估计是唯一一个还使用kernel 2.4.xx的发行版。这个极为稳定,保守和坚守KISS(Keep It Simple Stupid)哲学的发行版。

但是,Slackware在国内始终是个小众,中文相关的文档相当陈旧(linuxsir上),不想过多折腾的我,犹豫了良久,这时新兵Archlinux 进入了我的视野。

这个2003年才出现的新兵,有着与Slackware一样的KISS哲学和太多我喜欢的特点。还有一个杀手裥是他足够多的Wiki文档,包括大量的中文文档

继上一轮Linux使用之旅后,我的全新一轮Linux之旅就此开始。

Linux PHP5连接SQL Server 2000

发布于: 2008年11月01日

Windows下PHP连接SQL Server 2000 可以用一个”容易”来形容。

1.打开php.ini, 找到下面这行

;extension=php_mssql.dll

去掉前面的分号,变成

extension=php_mssql.dll

2.确认php.ini内extension_dir制定的目录里面有php_mssql.dll文件

3.重启web server

4.检查php_info() 确定有下面行:

5. Done

Linux下完成同样的事情稍显复杂一些,毕竟SQL Server 是 MS的东东。

1.需要额外安装一个叫“FreeTDS”的的开源软件,可以到http://www.freetds.org/下载最新版本,我下载时的最新版本为0.82, 文件名:freetds-stable.tgz, 该软件的官方说明是这样的:

FreeTDS is a set of libraries for Unix and Linux that allows your programs to natively talk to Microsoft SQL Server and Sybase databases.

2.解压安装命令:

tar zxvf freetds-stable.tgz

cd freetds-0.82

./configure –pre-fix=/usr/local/freetds –with-tdsver=7.0  //关于–with-tdsver,官方说明是: normally 5.0 for Sybase and 7.0 for Microsoft

make

make install

3. 测试freetds

用下面格式的命令:

/usr/local/freetds/bin/tsql -S servername -p port -U username -P password

测试看能否连接sql server

4.重新编译PHP, 我重新编译时,一般先php_info()看一下当前的编译条件,copy过来,再加上我需要添加的编译条件

./configure –你之前的编译条件 –with-mssql=/usr/local/freetds

5. 编译错误排除,我在编译的时候出现下面错误

configure: error: Directory /usr/local/freetds is not a FreeTDS installation directory

需要新建两个文件:
$ touch /usr/local/freetds/include/tds.h
$ touch /usr/local/freetds/lib/libtds.a

6. make & make install

7. 重启web server

PHP测试,用下面代码:
<?php
$msserver=your server;
$msuser=Your Username;
$mspass=Your Password;
$msdb=mssql_connect($msserver,$msuser,$mspass) or die(“Connect MSSQL Fail!”);
echo “Connect MSSQL Successful!”
?>

目前,我还有字符编码的问题需要解决。唉…数据库的字符编码是最头疼的问题之一了。

本文为寻找人生的起点(http://blog.cn-ic.org)原创,如需转载,请注明出处,并保留原文链接 http://blog.cn-ic.org/?p=146。

Linux下配置PHP5连接Oracle 10.2.0

发布于: 2008年06月16日

按惯例,必须先本地安装Oracle,至少是Oracle Client, 最好是全部服务器程序。安装Oracle 不在本文讨论范围。另外本文假设安装Oracle 10.2.0 全部服务器程序。

首先,编译安装PHP, 必须增加一条“–with-oci=/path/to/oracle”, 下面是我的PHP编译完整命令:

'./configure' '--prefix=/opt/php5' '--with-config-file-path=/opt/php5' '--with-bz2' '--with-exec-dir=/usr/bin/' '--with-curl' '--with-freetype-dir=/usr' '--with-png-dir=/usr' '--with-gd=shared' '--enable-gd-native-ttf' '--with-xml' '--with-jpeg-dir=/usr' '--with-openssl' '--with-zlib' '--with-pear=/usr/share/pear' '--with-mysql=shared,/usr' '--with-apxs2=/usr/sbin/apxs' '--with-oci8=/oracle/product/10.2.0'

其次,修改apache文件,识别oracle path。其中apache 识别php不再赘述。可以修改apache 的启动文件apachectl,找到下面文字
# |||||||||||||||||||| START CONFIGURATION SECTION ||||||||||||||||||||
# -------------------- --------------------
#
# the path to your httpd binary, including options if necessary
HTTPD='/usr/sbin/httpd'

在下面添加
export ORACLE_BASE=/oracle
export ORACLE_HOME=/oracle/product/10.2.0/
export PATH=$PATH:$ORACLE_HOME/BIN:
export LD_LIBRARY_PATH=/oracle/product/10.2.0/lib:$LD_LIBRARY_PATH

重启apache

最后,测试。写一个php 测试脚本,我的脚本如下:
检查phpinfo页面, 应该会有下面的文字

oci8

OCI8 Support enabled
Version 1.2.5
Revision $Revision: 1.269.2.16.2.43 $
Active Persistent Connections 0
Active Connections 0
Oracle Version 10.1
Compile-time ORACLE_HOME /oracle/product/10.2.0
Libraries Used no value
Temporary Lob support enabled
Collections support enabled

表示php 已经正查支持OCI8模块了。但并不保证能正查连接Oracle,只是说OCI8相关的函数可以使用而已。
//PHP连接Oracle函数
function php_conn_ora(){
$username='your username';
$passwd='your password';
$protocol='TCP';
$SERVICE_NAME='you service_name or SID';
$ORACLE_SERVER_IP_ADDRESS='your oracle ip';
$Port='1521';
PutEnv("NLS_LANG=SIMPLIFIED CHINESE_CHINA.AL32UTF8");
if(!$conn = oci_pconnect($username, $passwd, "(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = $protocol)(HOST = $ORACLE_SERVER_IP_ADDRESS)(PORT = $Port)) ) (CONNECT_DATA = (SERVICE_NAME = $SERVICE_NAME) ) )")) echo("Error in Connecting to DataBase");
return $conn;
}
//Query 函数
function ora_query($sql){
global $conn_ora;
$result=oci_parse($conn_ora,$sql);
oci_execute($result,OCI_DEFAULT);
return $result;
}
//Echo 环境变量
$ORACLE_HOME = getenv("ORACLE_HOME");
echo "ORACLE_HOME=$ORACLE_HOME
\n";
$LD_LIBRARY_PATH = getenv("LD_LIBRARY_PATH");
echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH
\n";
$PATH = getenv("PATH");
echo "PATH=$PATH
\n";
//连接测试
$conn_ora=php_conn_ora();
$sql="select * from sometable where rownum<=2";
$result=ora_query($sql);
oci_fetch_all($result,$array);
echo "<pre>";
var_dump($array);
echo "</pre>";

通过浏览器访问上面的脚本文件,如果一切正常,至少会有正常的环境变量结果输出,还有你的数据查询结果:

ORACLE_HOME=/oracle/product/10.2.0
NLS_LANG=AMERICAN_AMERICA.AL32UTF8
PATH=/usr/kerberos/sbin:/oracle/product/10.2.0/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/oracle/bin
//下面省略数据查询结果

异常处理:
这种事情一般很难一蹴而就,经常会有这样那样的问题。下面是我碰到过的情况:
测试页面包含下面提示文字:

...OCIEnvNlsCreate() failed. There is something wrong with your system - please check that ORACLE_HOME is set and points to the right directory...

解决办法:
1.检查测试脚本的环境变量输出是否正常。如果为:

ORACLE_HOME=
NLS_LANG=
PATH=

表示执行apache服务的用户没有得到正确环境变量。建议的解决办法是,将上面写入apachectl文件的文字:
export ORACLE_BASE=/oracle
export ORACLE_HOME=/oracle/product/10.2.0/
export PATH=$PATH:$ORACLE_HOME/BIN:
export LD_LIBRARY_PATH=/oracle/product/10.2.0/lib:$LD_LIBRARY_PATH

写道/etc/init.d/httpd文件试试,可以写到下面文字之后
apachectl=/usr/sbin/apachectl
httpd=${HTTPD-/usr/sbin/httpd}
prog=httpd
pidfile=${PIDFILE-/var/run/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd}
RETVAL=0

2.如果上面的显示正常,请检查oracle安装目录是否能为执行apache服务的用户读取。如果没有,请执行

chmod a+r /path/to/oracle

本文为寻找人生的起点(http://blog.cn-ic.org)原创,如需转载,请注明出处,并保留原文链接 http://blog.cn-ic.org/?p=94。

“Free Rainbow Tables”分布式计算破解密码

发布于: 2008年01月20日

本文为寻找人生的起点(http://blog.cn-ic.org)原创,如需转载,请注明出处,并保留原文链接。

在上一篇文章使用Rainbow tables和Ophcrack的组合工具破解Windows密码中,我们了解到可以通过Rainbow Table与Ophcrack的组合以更加快速的方式暴力破解Windows密码。但是对于个人,下载或者自己制作几G,甚至几十G的Rainbow Table,结果只破解一、两个密码,仍然有点得不尝失。

于是一个叫做free rainbow tables 的网站应运而生,它免费提供LM,NTLM,MD5等的hash密码破解,只要你上去注册一个帐户,提交你的密码hash(从SAM,system文件dump hash可以参考John/bkhive/samdump, 在Linux下破解SAM密码)。

计算过程不是网站的服务器完成的,而是分布于世界各地的上千台网友的PC分布计算而成。所以你也可以参与计算过程:

1.下载客户端计算程序:http://www.freerainbowtables.com/en/download/

目前上面只提供windows下的程序(DistrRTgen v3.0),但是实际上在它的论坛里面,我还找到了Linux版本的源程序,我把它放到这里来了distrrtgen3 Linux版本,纯CL程序,无GUI

2.安装:

windows版本:安装软件需要.net framework 2.0版本,可以到微软主页免费下载,其他就略过了。

Linux版本:必须安装libssl-dev, libcurl-dev两个包

解压缩下载的软件包,运行

#make configure
#make

运行成功的话会在文件夹下生成一个名为distrrtgen的可执行文件,

3.运行并填入注册的帐户密码

Windows版本再次略过

Linux版本,

运行一次:./distrrtgen,

然后关闭,修改~/.distrrtgen/目录下的distrrtgen.conf文件,填入用户名,密码

再次运行: distrrtgen源码目录的distrrtgen文件即可

4.运行过程,服务器以8M文件为一个计算单位,计算完成后上传8M计算过的文件,然后在下载下个8M文件,如此反复。

5.提交hash. Windows版本可以在软件界面提交hash,Linux版本没有这个功能,只能到网站登录后在网页上提交

人多力量大,很多人一起干活总比一个人强。但是受很多因素限制,如:

1.他们的Rainbow Table还是不够全面,NTLM的Rainbow table只到字母+数字的9位(虽然已经是123G之巨了),大于9位的NTLM密码就成了无接

2.有些东西他本来就是无解的,比如你要是提交一个文件的MD5 hash,你看它是还能解得出?

所以目前网站公布的成功比例是44%左右,其中包括我提交的一个NTLM hash就没有结果。但是对于个人来说基本上可以满足要求了。如果提交到他们网站上破解不了的hash,相信一个人的力量也搞不定了,况且几百个人一起计算,相信速度也会比一个人快很多。

使用Rainbow tables和Ophcrack的组合工具破解Windows密码

发布于: 2008年01月20日

本文为寻找人生的起点(http://blog.cn-ic.org)原创,如需转载,请注明出处,并保留原文链接。

从前面的两篇文章(得到WindowsXP管理员权限的有效方法John/bkhive/samdump, 在Linux下破解SAM密码)可以看出我对Windows系统权限突破的兴趣。由于目前的压迫尚未推翻,所以反抗还在继续。这次讨论的是采用Rainbow Table与Ophcrack结合的另外一种暴力破解机制。这里假设的前提是你已经得到加密hash。如果你还没有办法得到hash,请参考上面提到的两篇文章。

说实话,google上关于rainbow tables的相关说明并不多。相信最全的解释可以通过这个链接 了解。但是wiki的,英文的,除非有特别必要的需求之前我还没有打算细细研究。但是据我目前的了解,作如下解释,不确切之处还请指出:

Rainbow tables是一些表,它可以是指定字符的各种组合以及这些组合经过MD5或LM或NTLM等加密手段加密后的对照表。所以可想而知,这些表是相当庞大的。当你得到这些表后,破解hash密码实际上相当于字典破解了,速度相对普通的暴力破解会大大增加。下面让我告诉你著名的基于Rainbow tables的开源破解软件Ophcrack的帮助文档里面描述的表有多大吧:

针对LM密码的Rainbow Tables:

1.包含所有字母和数字1-7位组合的Table分成有两个 Alphanumeric SSTIC04-10k(388MB)和Alphanumeric SSTIC04-5k(720MB),从我查得的资料表明这两个Table在密码组合个数上是一致的。但是Alphanumeric SSTIC04-5k文件更大一倍,如果有1G以上的内存的话,破解速度快4四倍(为什么会有这种诡异的差异,没有查到)。他们包含800亿个hash, 由于LM加密对大小写不敏感,所以能破解2^83个1-14位的LM密码。

下载地址: http://lasecwww.epfl.ch/~oechslin/projects/ophcrack/

2.LM延伸表,包含所有字母+数字+33个特殊字符(!”#$%&'()*+,-./:;<=>?@[\]^_`{|} ~)的96%的1-7位组合包含7万亿个hash,能破解2^92个LM密码。大小7.5G

获取方式:目前没有官方下载,可以通过ophcrack的网站购买DVD,价格$240,地址:http://www.objectif-securite.ch/en/products.php

另外我找到freerainbowtables.com的bt下载,号称更大,33.8G(http://www.freerainbowtables.com/tables/lm.php),或者下载软件自己生成(生成方式见本文后面)。

针对NTLM密码的Rainbow Tables:

1.NT hash table: 包含1-6位的字母+数字+33个特殊字符组合,7位字母+数字组合,8位小写字母+字符组合;包含7万亿个hash,能破解7万亿个密码。大小8.5G

获取方式: 目前没有官方下载,可以通过ophcrack的网站购买DVD,大小就是上面描述的8.5G,价格$240,地址:http://www.objectif-securite.ch/en/products.php

同样可以上 freerainbowtables.com看看(地址:http://www.freerainbowtables.com/tables/ntlm.php),有很多选择,最大的1-9位小写字母+数字组合有123G,小心你的磁盘。

从上面的内容我们可以看到Rainbow tables都相当庞大。而实际上这些东西从某种意义上来说都只是字典文件而已。当然它跟传统的字典是有区别的,它是一个庞大的字符加密hash与字符加密前的对照表,使用相应破解工具在破解过程中进行的只是对比的工作,省却了将字符加密计算的过程,从而大大节省了时间。

如果上面提到的Rainbow Tables的获取有困难,或者不满意他们的组合方式,也可以自己生成,这里有一个开源工具:

RainbowCracK:http://www.antsight.com/zsl/rainbowcrack/作者可能是个叫Lei Shuang 的国人。

目前最新版本:rainbowcrack-1.2

提供Windows二进制码(rainbowcrack-1.2-win.zip)和可用于所有平台(Windows/Linux/Unix等)的源码(rainbowcrack-1.2-src.zip

提供自定义组合字符,

提供lm,md5,sha1以及自定义组合加密方式。如果加一个补丁( Algorithm patch for RainbowCrack 1.2)还提供NTLM,MD2, MD4 and RIPEMD160加密算法

如果你打算使用工具自己生成的大Table的话,你需要做好心理准备,需要强劲的CPU,大的磁盘可用空间,以及大量的时间(使用单台PC以年为单位的时间)。所以该工具的主页上也有一些Table提供下载。

讲了半天,上面提到的还只是Rainbow tables的各种表,至于如何使用这些表,还需要一个工具。这里推荐大名鼎鼎的Ophcrack:

Ophcrack主页:http://ophcrack.sourceforge.net/

最新版本:Ophcrack-2.4.1,提供Windows二进制文件包(ophcrack-win32-installer-2.4.1.exe )和可用于所有平台(Windows/Linux/Unix等)的源码(ophcrack-2.4.1.tar.gz)

使用该软件破解需要两个条件

1.需要另外提供Rainbow tables,就是上面提到的

2.要求已经得到密码的hash,方法可参考John/bkhive/samdump, 在Linux下破解SAM密码,所以主页还提供了 bkhive-1.1.1.tar.gzsamdump2-1.1.1.tar.gz

另外Ophcrack还提供一个Live CD,最新版本1.2.2,下载地址:ophcrack-livecd-1.2.2.iso

ophcrack-livecd 基于一个叫SLAX6的小Linux 系统,整个系统包括SLAX6,ophcrack for linux 以及一些小的字母+数字的Rainbow tables。大小477M

所以只要可以通过光盘启动,无需安装就可以开始破解了。

关于Windows密码的LM加密和NTLM加密:

LM又叫LanManage,它是Windows古老而脆弱的密码加密方式。任何大于7位的密码都被分成以7为单位的几个部分,最后不足7位的密码以0补足7位,然后通过加密运算最终组合成一个hash。所以实际上通过破解软件分解后,LM密码破解的上限就是7位,这使得以今天的PC运算速度在短时间内暴力破解LM加密的密码成为可能(上限是两周),如果使用Rainbow tables, 那么这个时间数量级可能被下降到小时。而这种脆弱的加密方式在Windows2003还在使用。当然我们也可以通过设定注册表参数禁用LM加密,代之以NTLM方式加密(默认生成LM以及NTLM两种方式的加密hash).方法如下:

1. 打开注册表编辑器;

2. 定位到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa;

3. 选择菜单“编辑”,“添加数值”;

4. 数值名称中输入:LMCompatibilityLevel ,数值类型为:DWORD,单击 确定;

5. 双击新建的数据,并根据具体情况设置以下值:

0 – 发送 LM 和 NTLM响应;

1 – 发送 LM 和 NTLM响应;

2 – 仅发送 NTLM响应;

3 – 仅发送 NTLMv2响应;(Windows 2000有效)

4 – 仅发送 NTLMv2响应,拒绝 LM;(Windows 2000有效)

5 – 仅发送 NTLMv2响应,拒绝 LM 和 NTLM;(Windows 2000有效)

6. 关闭注册表编辑器;

7. 重新启动机器

在Windows NT SP3引入了NTLM加密以及Windows2000以后逐步引入的NTLM 2.0加密解决了这个问题,让我们在短期内破解长度超过8位的密码成为一种运气。但是LM加密方式默认还是开启的,除非通过上面的方法刻意关闭它。

浙ICP备18056264号-1