Debian安装笔记
一、偶用的Debian版本:Debian 3.1 r2 i386 Netinstall.iso。
二、安装,整个安装过程较简单,选择APT源时选HTTP,网站选择 mirrors.geekbone.org或debian.cn99.com。
三、等待自动下载软件包并安装(过程较久),如到测试APT下载源时自动连接到 security.debian.com 并下载文件时,得找个方法取消,我不
知道如何弄,所以我见到它连到这里来了就立刻重启(重启后一般还要重新进行配置一次,这次APT源选择手动修改XXX,其余按提示完成)。
四、ROOT登录。执行 zhcon 让显示支持中文。
五、执行 nano 打开 /etc/apt/sources.list 文件,把所有带有 security.debian.com 的行在行首都加 # 号(注释掉该行)。
六、执行 base-config 再次进行选择APT源,这次选择 HTTP,网站为 mirrors.geekbone.org或debian.cn99.com,等待自动操作直到完成。
七、执行 apt-get -u install x-window-system-core。(需下载 的文件为33M左右)
八、执行 apt-get -u install gdm gdm-themes。(需下载 的文件为31M左右)
九、执行 apt-get -u install gnome。(需下载 的文件为151M左右,下载过程过长,我机器为41分钟)
十、执行 apt-get install fcitx。安装中文输入法。
{以下为虚拟机下安装增加了的步骤,安装选择有不正确时也可用以下方法修改配置}
十一、进入 /etc/X11 目录,将 XF86Config-4 文件重命名为 XF86Config,命令"mv XF86Config-4 XF86Config"。
十二、用 nano 修改XF86Config文件,将/dev/input/mice换成/dev/psaux (修改鼠标配置,其实此步骤在安装X-WINDOW时可选的)。
十三、startx 命令可进入图形界面。
再次感谢老鸨!BTW:以上所说错误多多,仅供我下次安装Debian时参考!
监控系统之硬盘录像机(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 (根据聊天纪录修改)
=============================================
项目基本结束,这个是其中系统裁减的一个总结文档,不知道有没有人感兴趣:)
=============================================
前言:
为了完成用户的需求,需制作一个完整的环境供AP运行,且存在一些约束条件。
关键字:
DOM Kernel Busybox X-Window Window-Manager Interbase nvidia cutdown
目标说明:
在一个64M的DOM(Disk on module)上建立可以运行完整的AP的环境
约束条件:
1、可利用的总空间为64M,由DOM提供,但实际可用空间只有53-59M,原因可能与设备文件和DOM本身有关,未确定
2、显卡为nvidia系列
3、kernel选用2.4.20,没有使用redhat自带的版本。采集卡的Driver目前还只能在2.4.20的kernel下编译,由于其移植性较差,已经开始考虑重新整理成可适合kernelversion大于2.4.25的所有kernel,参考bttv的最新实现
4、数据库选用interbase系列,目前使用的为firebird-1.5(firebird为interbase的开源实现,接口和interbase基本相同)。
5、其他附属的功能要求,在后面的文档中会有说明
制作流程:
某些部分的原理和实现没有办法写的很全面,但基本上会提供一些url的连接,供相关人员参考。基本上按照制作流程来写,前后相互牵连的部分不做特别说明。
一、Kernel的选择和编译:
由于driver的缘故,只能使用2.4.20的kernel。2.4.20和2.4.25都有对Driver做过尝试,其他版本的kernel没有试过,应该是可以的,尚未确认。在2.6的kernel上无法编译,目前确定的原因是makefile有问题,估计做一些相应的修改还是可以的,可参考 bttv的makefile(http://linux.bytesex.org/v4l2/bttv.html)。
回到kernel上来,基本上的编译原则是尽量减去不需要的部分,以及除了一些需要临时加载的Driver尽量不要出现module。由于上面所说的理由,DOM中使用的kernel为原始的2.4.20,可以从http://www.kernel.org下载,本文档的附加文件里也可以找到。
另外,由于需求的定义,系统启动时需要显示splash画面,所以kernel还需要加入bootsplash功能,这个功能是第三方提供的,作为补丁加入kernel。作法如下:
1、打内核补丁并编译内核
假设内核源文件安装在/usr/src/linux/。下载bootsplash 3.07(地址:ftp://ftp.suse.com),然后:
yourbox:~ # cd /usr/src/linux
yourbox:/usr/src/linux # patch -p1 < /path/to/bootsplash-3.0.7-2.4.20-vanilla.diff
yourbox:/usr/src/linux #
配置内核,如make menuconfig或make xconfig,在”Console drivers” -> “Frame-Buffer support” 选择 “VESA VGA graphics console” 或其他与你的显卡相应的驱动。打开 “Use splash screen instead of boot logo”. 在 “Block Devices”中打开”Initial Ramdisk support”,保存配置并编译内核,将生成的内核拷到/boot 下,并修改lilo或grub的配置文件以使用新的内核来启动。
2、加入图片
下载并安装splash工具:ftp://ftp.suse.com/pub/people/
# cd ~/splash
# tar xvjf splashutils.tar.bz2
splashutils/
splashutils/Makefile
splashutils/splash.c
[..]
splashutils/ChangeLog
splashutils/COPYING
# cd splashutils
# make splash
gcc -Os -Wall -c -o splash.o splash.c gcc -Os -Wall -o splash splash.o
strip splash
# cp splash /sbin/
...
阅读全文...
开始接触linux是在96年,那时internet还属于新鲜概念,能用telnet上个bbs就能让人激动半天,更不要说ftp、bt、emule之类的玩艺,唯一能得到新软件的途径就是校门口卖盗版的。从某种意义上说,盗版在普及和深化计算机教育上还是有所贡献的。那时从门口买了一套rh的光盘,就开始在机器上开始折腾,但由于没有任何的帮助和获得帮助的途径,所以只是获得了对linux一些初步的认识。也正是因为rh,开始对操作系统感兴趣,也研究了一阵子minix,可惜没有坚持下去。
再次接触linux是在2003年,当时是进入一家台湾企业开发linux平台下的监控软件。由于当时要做一个基于x86的小型系统,os+ ...
阅读全文...
