Thinkpad T60安装 Windows 2003 之完整篇
下载好 SATA硬盘的驱动 (Matrix Storage)
网卡驱动
1 bios设置。这一步是针对T60/X60的。开机按f1进入bios,进入configuration,然后在SATA里面将SATA的模式设置成compatibility(兼容模式),默认的是AHCI模式(高级主控接口),这一步很重要,否则安装操作系统时会蓝屏,其中的原因,是因为XP系统安装盘一般不带SATA驱动。然后按f10,回车,退出bios。
2 安装正版 windows 2003 操作系统
3 安装SATA硬盘驱动
4 恢复bios设置为AHCI模式
5 更级windows到最新(否则HD总线驱动没有,导致声卡和Modem驱动无法安装)
6 安装驱动(参考下面说明)
7 仍有未知的网络适配器,以及系统设置中的未知设备
8 下载Intel(R) PRO/Wireless 3945ABG 无线网卡驱动(此为上面未知的网络适配器)
9 下载IBM PM Device 驱动(此为上面的未知设备)
10 安装附加软件(参考下面说明)
打完收工
安装说明:(下面的目录水货的恢复盘上未必有,可以从官方网站下载最新驱动,网址为: http://www.google.com/search?q=t60%20%E9%A9%B1%E5%8A%A8%20%E4%B8%8B%E8%BD%BD&hl=zh-CN&lr=&nxpt=20.641195076218812316086)
一、芯片组驱动。运行恢复光盘里的“T60/X60 驱动和软件”目录里的“Intel芯片组驱动.exe”文件,它会解压到C:\DRIVERS\WIN\INTELINF目录下。到此目录下运行“setup.exe”就可以安装了。
二、显卡驱动。运行恢复光盘里的“T60/X60 驱动和软件”目录里的“T60/X60显卡驱动.exe”文件,它会解压到C:\DRIVERS\WIN\VIDEO目录下。到此目录下运行“setup.exe”就可以安装了。
三、电源管理驱动。运行恢复光盘里的“T60/X60 驱动和软件”目录里的“IBM电源管理.exe”文件,它会解压到C:\DRIVERS\WIN\IBMPM目录下。到此目录下运行“setup.exe”就可以安装了。
四、安全芯片驱动。运行恢复光盘里的“T60/X60 ...
阅读全文...
监控系统之硬盘录像机(DVR)
前言
经过几年的开发,对硬盘录像机产生了一些厌倦,但是有些东西还是值得纪录的,所以就写了这个技术整理。目的是为了记录一些曾经的经验和教训,聊做纪念。某些不清楚的部分不会抄一些文章过来充数,也不会为了让文字看起来比较丰满而作过多的资料调查,所以如果在阅读的过程中有任何不适或者不满,可自行离场,谢谢。
整个文档会从全局到细节,再从细节返回全局,先对整体设计、环境、行业现状进行描述,列举一些应该深入的方向,然后进行详细的叙述,最后再对整体进行一次勾勒。由于某些部分涉及技术机密,所以描述不会很清楚,还请见谅。
开篇
90年左右,第一批涉足视频监控的企业开始在国内出现,比如北京的行者等。这个阶段由于硬件的昂贵价格和硬件能力的约束,以及是软件开发上的约束,很多东西无法实现,所以在这一阶段,视频监控还是以模拟为主,就是架设好摄像头,再将视频线、云台控制线等连接到控制机房,机房内放置对应的监视器(其实就是电视机的改装体,甚至在一些地方,就是直接用老式的黑白电视机来代替)。然后将视频头接入监视器,云台控制线接入云台控制器。这时的云台控制器大多直接从国外进口,其包含的技术含量并不高,但物以稀为贵,价格还是很高的。某些场合下并不需要云台控制,所以只需监视器和录像机即可工作。但用录像带录制有一些天生存在的问题,比如录像时间不够长,磁带保存困难。为了有更长的录制时间,制造商们制造出了超常的录像带,尺寸比较大,给运送和保存造成了一定困难。即便如此,一卷录像带也不过能录制2个小时的影像,就是说每隔2个小时就需要更换一次录像带。由于录像带使用的是感光方式的光学胶卷,所以要长时间保存就对环境有比较高的要求,而且由于尺寸比较大,造成保存空间比较大。同时,由于录像带不可中断的特点,若要临时查看现场录像,只能将正在录制的录像带中断,之后这卷录像带上还未录制的部分就无法再次利用了,一般只能报废,从而产生无法避免的浪费。
不管怎样,模拟的监控系统还是满足了绝大多数的需求,可以很好的工作。在此说句题外话,个人觉得国内的开发人员都有一...
阅读全文...
跨平台的移动鼠标代码
#include < stdio.h >
#include < stdlib.h >
#include < string.h >
#ifdef WIN32
#include < windows.h >
#else
#include < unistd.h >
#include < X11/X.h >
#include < X11/Xlib.h >
#endif
int main(int argc, char* argv[])
{
char sx[10], sy[10];
int x, y;
if ( argc < 3 ) return 0;
strcpy(sx, argv[1]);
strcpy(sy, argv[2]);
x = atoi(sx);
y = atoi(sy);
#ifdef WIN32
SetCursorPos(x, y);
#else
Display *dpy;
Window rootwindow;
dpy = XOpenDisplay(NULL);
if ( ! dpy ) {
printf("Couldn't open Xdisplay.\n");
exit(1);
}
rootwindow = DefaultRootWindow(dpy);
XWarpPointer(dpy, rootwindow, rootwindow, 0, 0, 0, 0, x, y);
XCloseDisplay(dpy);
#endif
return 0;
}
改编自fltk,添加了linux平台下的Sleep实现,只支持Windows和Linux,分别用vc和gcc编译,代码如下:
| 1 | //threads.h, LGPL |
| 2 | |
| 3 | #ifndef Threads_H |
| 4 | #define Threads_H |
| 5 | |
| 6 | #ifdef WIN32 |
| 7 | |
| 8 | #include < windows.h > |
| 9 | #include < process.h > |
| 10 | |
| 11 | typedef unsigned long Fl_Thread; |
| 12 | |
| 13 | static int fl_create_thread(Fl_Thread& t, void *(*f) (void *), void* p) |
| 14 | { |
| 15 | return t = (Fl_Thread)_beginthread((void( __cdecl * )( void * ))f, 0, p); |
| 16 | } |
| 17 | |
| 18 | #else |
| 19 | |
| 20 | // Use POSIX threading... |
| 21 | #include < pthread.h > |
| 22 | #include < unistd.h > |
| 23 | |
| 24 | typedef pthread_t Fl_Thread; |
| 25 | |
| 26 | static int fl_create_thread(Fl_Thread& t, void *(*f) (void *), void* p) |
| 27 | { |
| 28 | return pthread_create((pthread_t*)&t, 0, f, p); |
| 29 | } |
| 30 | |
| 31 | static void Sleep(unsigned long dwMilliseconds) |
| 32 | { |
| 33 | usleep(dwMilliseconds * 1000); |
| 34 | } |
| 35 | |
| 36 | #endif |
| 37 | |
| 38 | #endif // !Threads_h |
使用示例:
| 1 | #include "thread.h" |
| 2 | ... |
| 3 | |
| 4 | static Fl_Thread m_thread; // define |
| 5 | ... |
| 6 | |
| 7 | // thread create |
| 8 | fl_create_thread(m_thread, thread_fun, 0); |
| 9 | ... |
| 10 | |
| 11 | static void* thread_fun(void *p) |
| 12 | { |
| 13 | while (1) { |
| 14 | ... |
| 15 | } |
| 16 | |
| 17 | return 0; |
| 18 | } |
从编译Linux kernel说开来
编译内核的概念是linux最帅的地方,windows是不会提供操作系统的源代码的,而linux则不然,操作系统的源代码全部都是公开的。
对于发行版而言,比如rh9,debian,suse等,都提供编译好的kernel供用户使用,但是这样的kernel未必是用户需要的,这时就可以自
己对 kernel的源代码进行编译,然后替换掉原来的kernel。
其实编译kernel并不恐怖,只是一件很简单的事情,就几条
指令而已。/usr/src/linnux是kernel源代码常用的放置目录,进入此目录,执行make
menuconfig,会出来一个图形界面,里面是kernel的各种配置和选项,把自己喜欢的驱动和配置选上,不需要的去除即可。然后make
dep,这是检查新的配置是否正确和做一些初始化工作。然后就是make
bzImage,这是真正开始编译kernel,bzImage是编译后的kernel文件名,可以为任意名字,只是一般会以bzImage、
zImage或vmlinuz之类为名。如果编译成功会生成一个bzImage文件,这就是kernel了。系统启动最主要的就是调用这个文件,里面包括
了文件系统、硬件驱动、网络基础、内存管理、进程管理等,在/boot下面有一个bzImage或者vmlinuz之类的文件就是原有的kernel,只
要把编译后的kernel文件(bzImage)替换掉就换成新的kernel了,或者用新名字复制到/boot下,再将grub或lilo的配置文件修
改一下,下次启动系统的时候即可使用新的kernel。下面是make
modules,这是编译驱动,或者说叫模块,在linux下驱动可以和kernel编译在一起,也可以编译成单独的模块文件,如果是第一种,
kernel启动的时候就会自动尝试载入驱动,第二种则是需要的时候手工加载驱动,也可以手动卸载。这是windows没有的功能,比如显卡的驱动在
windows下不重新启动系统是无法更新的,但在linux下却可以。比如对显卡做升级动作的时候其实就是在编译module,并卸载旧驱动,加载新驱
动,整个步骤无需重启系统。最后一步,就是make
modules_install,这个步骤是在/lib/modules下面生成一个按照kernel版本号为格式的目录,再将编译好的modules复
制进去。kernel启动的时候会通过这样的路径搜索modules文件,类似windows的system32目录。
写了这么多,
很多没玩过linux的人看了会很迷糊,但了解一些相关认识还是很有趣的,因为这才是linux好玩的地方,一个随便捏来捏去的操作系统,可以满足某些人
士的变态心理-_-# windows可以运行的硬件平台很有限,因为不公开,而且尺寸也很大,linux却因为可以自己编译,所以支持几乎所有的硬件平
台,x86,cs51,avr,pda,手机,alpha,大型机等等。同时尺寸还很小,一般编译一个可以运行到shell的系统,只要4、5M的尺寸就
可以搞定。加一个x-window也就30M左右,这在windows是不可想象的。这都是kernel公开,可以手动编译的好处和乐趣....
2006-05-10 20:55 (根据聊天纪录修改)
开始接触linux是在96年,那时internet还属于新鲜概念,能用telnet上个bbs就能让人激动半天,更不要说ftp、bt、emule之类的玩艺,唯一能得到新软件的途径就是校门口卖盗版的。从某种意义上说,盗版在普及和深化计算机教育上还是有所贡献的。那时从门口买了一套rh的光盘,就开始在机器上开始折腾,但由于没有任何的帮助和获得帮助的途径,所以只是获得了对linux一些初步的认识。也正是因为rh,开始对操作系统感兴趣,也研究了一阵子minix,可惜没有坚持下去。
再次接触linux是在2003年,当时是进入一家台湾企业开发linux平台下的监控软件。由于当时要做一个基于x86的小型系统,os+ ...
阅读全文...
