Monthly Archives: January 2010

搞定PXE中的网卡驱动

硬件:
主板ASUS P5QL Pro

软件:
CentOS 5.4 64bit

公司最近进的一台机器用的是用的华硕p5ql pro的板子,要上centos系统,最开始没有注意到没有centos54居然不支持网卡驱动,等到PXE加载完,installation报找不到ks文件(我指定了ks的),我这才意识到,原来centos54并不支持这个网卡。。。

实在是不想刻碟,太麻烦,想起来原来赵小明老师跟我们讲过,这种情况,只要把网卡的驱动加载到启动用的initrd.img中就可以了,于是就开始看看怎么把驱动加载到启动文件当中。

首先,当然是要找一台机器把驱动编译好。
驱动可以在asus的官方网站可以下载到。
编译的机器,最好用没有升过级的内核,不然,不保证可以直接用。
编译好之后,可以得到一个名称为 atl1e.ko 的文件
这个,就是我们要用到的文件

接下来,才是重头戏,我们要把这个文件加入到initrd.img中。
开始之前,建议参考一下这篇文s档: http://www.ibm.com/developerworks/cn/linux/l-linux-netinst/index.html
如果你发现里面的那个脚本不能用,恭喜你,你碰到了跟我一样的问题了,我这篇文章的意义就在于此!

使用file命令,我们可以知道initrd.img这个文件是一个gzip文件,那么,我们就要用gzip进行解压

mv initrd.img initrd.img.gz
gunzip initrd.img.gz

再使用file命令,我们又可以得知,解压之后的文件,是一个cpio格式的文件,那么,我就可以用cpio来进行解压

cpio -ivmd < initrd.img

解压之后,我们会得到许多目录与文件,因为我们要修改的只是驱动部分,所以要用到的就只有modules目录。

进入这个目录,我们只能看到五个文件

module-info  modules.alias  modules.cgz  modules.dep  pci.ids

其中module-info是记录硬件设备信息的,在这个文件里面,我们要添加如下三行

atl1e
eth
"AR8121/AR8113 PCI-E Ethernet Adapter"

其实的atl1e是模块名称,eth是设备类型(eth代表以太网卡),第三行是模块的描述

然后就是第二个文件,modules.alias,在这个文件里面,我们只要添加一行

alias pci:v00001969d00001026sv*sd*bc*sc*i* atl1e

虽然只有一行,但是解释起来还是挺麻烦的。这里涉及到一些硬件相关的信息。
其1969是硬件厂商的信息,可以从http://www.pcidatabase.com/查到是Atheros Communications的产品,而1026是产品的编号,继续查询可以得知是AR8121/AR8113的芯片。
这些信息的得到,是比较麻烦的,当然,我用的是一张很老的debian的救援盘,然后用lspci -n得到这些数据的

其他的,sv,sd,sc,i等等我也搞不太清楚是什么意思,我反正照着r8169的抄。你可以看看这篇文章:http://www.examda.com/linux/fudao/20091227/094826740-3.html

接下来,我们跳过modules.cgz,讲讲modules.dep
这是一个描述模块之间的依赖关系的文件,因为在这块网卡的驱动中没有找到相关的依赖说明,所以我就没有修改此文件。

pci.ids这个文件,是modules目录里面,我们要修改的第二重要的文件
在这个文件里面,我们要添加网卡的对应关系,要添加如下两行:

1969  Atheros(R)
        1026  AR8121/AR8113 PCI-E Ethernet Adapter

记得这两行的写法有一个从属关系,1026是从属于1969的

最后,让我们来说说modules.cgz,通过file命令,我们又可以得知到,这是一个gzip文件,同样,我们要进行解压:

mv modules.cgz modules.cgz.gz
gunzipmodules.cgz.gz

新到的新的modules.cgz,又是一个cpio文件,我们又要用cpio来进行解压

cpio -ivmd < modules

之后,就会得到2.6.18-164.el5这么一个目录,把我们开始得到的atl1e.ko文件拷贝到其中的2.6.18-164.el5/x86_64/目录中(其中还有其他许多ko文件)。

所有的工作都做得差不多了,接下来就是要进行封装了。
首先是封装modules.cgz

find 2.6.18-164.el5/|cpio  -o -H crc > newmodules
gzip newmodules
rm -rf 2.6.18-164.el5 modules
mv newmodules.gz modules.cgz

这里要注意的是把旧的文件modules.cgz文件与解压生成的目录删除以减少体积

这里封装好之后,我们要封装整个intrid.img文件了。

rm -f initrd.img vmlinuz
find . | cpio -c -o > ../new
gzip ../new
mv ../new.gz initrd.img

同上面的一样,要把一些与intrid.img不相干的文件文件删除以减少体积。

这个时候所有的东西时都管弄完了,你再用这个新生成的initrd.img进行引导,就可以正确的识别你的网卡并从网络读取文件了。

最后要注意的是:
装好的系统并不能使用这块网卡,装好系统之后,还是要进行网卡的编译。
当然,你也可以学我的,在kickstart文件当中,用%post来完成网卡的编译

从pfx文件得到crt以及key文件

IIS一般使用pfx文件,而apache却使用的是crt+key文件,有时候客户只给pfx文件,这个时候,就要直接进行转换了

以下操作如pfx文件没有设置密码,请直接敲回画
从pfx文件得到key文件:

openssl pks12 -in site.pfx -nocerts -nodes -out site.key

从pfx文件得到crt文件

openssl pkcs12 -in site.pfx -clcerts -nokeys -out site.crt

删除 RDP 客户端中的终端服务器许可证[转]

the remote computer disconnected the session because of an error in the licensing protocol. please try connecting to the remote computer again or contact your server administrator.

来源:http://support.microsoft.com/kb/187614/zh-cn

如果某个未经授权的客户端首次连接到终端服务器,终端服务器将向该客户端发出一个临时的终端服务器客户端访问许可证 (CAL) 令牌。用户登录到会话后,终端服务器指示许可证服务器将发出的临时终端服务器 CAL 令牌标记为已验证。在客户端下一次连接时,系统会尝试将已验证的临时终端服务器 CAL 令牌升级为完全终端服务器 CAL 令牌。如果没有许可证令牌可用,则临时终端服务器 CAL 令牌将继续工作 90 天。该许可证存储在客户端的注册表中。

32 位 RDP 客户端将其许可证存储在 HKEY_LOCAL_MACHINE\Software\Microsoft\MSLicensing 项下。

重要说明:此部分、方法或任务包含有关如何修改注册表的步骤。但是,注册表修改不当可能会出现严重问题。因此,请一定严格按照下列步骤操作。为了获得进一步保护,请在修改注册表之前对其进行备份。这样就可以在出现问题时还原注册表。有关如何备份和还原注册表的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
322756 (http://support.microsoft.com/kb/322756/ ) 如何在 Windows 中备份和还原注册表

要清理客户端的许可证缓存,只需删除此项及其子项。在客户端下一次连接到服务器时,它将获得另一个许可证。

对于 16 位 RDP 客户端,请运行 regedit /v。然后删除“\Software\Microsoft\MSLicensing”下的项以清理客户端的许可证缓存。还可以删除 \Windows\System\Regdata 中的 BIN 文件。

Macintosh RDP 客户端将许可证存储在本地计算机上 /users/Shared/Microsoft/RDC Crucial Server Information/ 下的文件夹层次结构中的一个文件内。要清理 Macintosh 客户端的许可证缓存,请删除此文件夹中的内容。客户端将在下一次连接时尝试从服务器获得新许可证。

如果删除运行 Windows Vista 或更高版本的客户端上的 HKEY_LOCAL_MACHINE\Software\Microsoft\MSLicensing 子项,则以后连接终端服务器的尝试可能会失败。并且,您会收到以下错误消息:

An Error occurred in the Licensing Protocol

要解决此问题,请右键单击“远程桌面连接”快捷方式,然后单击“以管理员身份运行”。默认情况下,远程桌面连接以具有最低用户权限的用户身份运行。默认情况下,受限用户不具有向 HKEY_LOCAL_MACHINE 写入注册表项的权限。因此,重写 MSLicensing 项的尝试失败。使用管理凭据启动“远程桌面连接”可提供写入所需注册表项所必需的权限。

后记:
这个东西一直困扰我好久,因为自己不用windows,而在linux下面,可以直接用-n newname来解决,所以就一直隔这里了。这几天被同事一直催着解决这个问题,没办法,这下仔细研究了一下。
看样子,选中关键词很重要啊。。。。