-
2004-05-18
“Linux”的正确读法 - [Linux]
这是Linus Torvalds的原声,“Linux”的正确发音![face10]
点击此处下载 -
2004-04-07
Debian 新手汉化跟我来 ---- 实战演练篇 - [Linux]
[版权信息]
出处:linuxfire
联系:master@linuxfire.com
版本:0.1
版权:GPL
转载请注明来自 linuxfire 和 linuxsir
最后修改:2003年6月27日 (不定期更新,尽请关注:)
测试环境:
Debian sid + XFree86 4.3 + Fvwm
此篇是 “Debian 新手汉化跟我来 ---- 理论辅导篇” 的姊妹篇,由于我理论没过关,所以先写实践经验,难免出错,还望多提意见。
汉化前,我假定你已经安装好基本系统和 X window,如果你还没做,请参考下面链接:
http://www.linuxsir.com/bbs/showthr...&threadid=14937
1、安装语言环境 locale
apt-get install locales # 注意是复数
如果已经安装,需要改变的话,请用下面命令:
dpkg-reconfigure locales # dpkg-reconfigure 是 dpkg 中一个很常用的工具
在配置表单中,我们只需选择两个 locale:
en_US ISO-8859-1 # 美式英语,带 ISO-8859-1 西欧字符集, en_GB 为英式英语
zh_CN.GBK GBK # 基于 GBK 的简体中文环境
参考文章:
http://www.cs.uu.nl/wais/html/na-di...1-charset.html
如果你对 locale 还没有概念,请参考于明俭老师的文章 “ Linux 国际化本地化和中文化”
http://www.opencjk.org/~yumj/i18n.html
2、我习惯用 startx 脚本启动 X ,把传递给它参数以及环境变量都写到一个文件.xinitrc,此文件存放在当前用户的 HOME 目录下,. 开头,故隐藏,用 ls -a 才能看到,如没有请自行建立。
编辑 ~/.xinitrc 文件,加入类似语句
LANGUAGE=zh_CN.GBK
LANG=zh_CN.GBK
LC_ALL=zh_CN.GBK
export LANGUAGE LANG LC_ALL
export XMODIFIERS=@im=fcitx
fcitx&
exec fvwm2
killall fcitx
手工添加的话,对于 bash 可用命令:
$ set LANG = zh_CN.GBK
$ export LANG
$ set LC_ALL = zh_CN.GBK
$ export LC_ALL
$ echo $LANG
$ echo $LC_ALL
$ ......
配置好后,用 locale 命令检查,范例如下:
$ locale
LANG=zh_CN.GBK
LC_CTYPE="zh_CN.GBK"
LC_NUMERIC="zh_CN.GBK"
LC_TIME="zh_CN.GBK"
LC_COLLATE="zh_CN.GBK"
LC_MONETARY="zh_CN.GBK"
LC_MESSAGES="zh_CN.GBK"
LC_PAPER="zh_CN.GBK"
LC_NAME="zh_CN.GBK"
LC_ADDRESS="zh_CN.GBK"
LC_TELEPHONE="zh_CN.GBK"
LC_MEASUREMENT="zh_CN.GBK"
LC_IDENTIFICATION="zh_CN.GBK"
LC_ALL=zh_CN.GBK
3、/etc/environment
加入
LANG=zh_CN.GBK
(有人要问,为什么上面写了,这里还写,:(我也不知道,反正有用:)
/etc/environment 这里可以书写一些环境变量,作用同 ~/.bashrc,不过是系统泛读。
例如我可以在这两处设置 ftp_proxy 与 http_proxy 两个环境变数
......
ftp_proxy=http://LOCAL-PROXY:PORT/
http_proxy=http://LOCAL-PROXY:PORT/
export ftp_proxy http_proxy
......
参考文章:
http://www.unet.univie.ac.at/aix/fi...environment.htm
4、fcitx 输入法中的 locale 设置
apt-get install fcitx
运行一下 fcitx ,在 ~/ 下多了一个 .gWuBi 目录。
vi ~/.gWuBi/profile
检查一下里面的是不是都是 zh_CN.GBK
5、配置 XFree86,是使用 xtt 模块,去掉 freetype 模块
$ dpkg-reconfigure xserver-xfree86
......
[ ] freetype
......
xtt
......
6、安装字体渲染引擎和管理工具,以及相关中文字体
软件简介:
老一辈: xtt(传统 X 字体服务器,XFree86 带了模块) + defoma
defoma - Debian Font Manager -- automatic font configuration framework
再也不用手工写字体,让 defoma 帮你管理吧
dfontmgr - GUI frontend for defoma, DEbian FOnt MAnager
一个很方便的图形化 defoma 字体管理工具
psfontmgr - PostScript font manager -- part of Defoma, Debian Font Manager
x-ttcidfont-conf - Configure TrueType and CID fonts for X.
新生代: xft2 + fontconfig
fontconfig - generic font configuration library
libxft2 - advanced font drawing library for X
libxft2-dev - advanced font drawing library for X (development files)
libpango1.0-0 - Layout and rendering of internationalized text
自动中文编码转换工具:
zh-autoconvert - Chinese HZ/GB/BIG5/UNI/UTF7/UTF8 encodings auto-converter
GPL字体:
ttf-arphic-bsmi00lp :文鼎PL细上海宋(Big5 码)
ttf-arphic-bkai00mp :文鼎PL中楷(Big5 码)
ttf-arphic-gbsn00lp :文鼎PL简报宋(GB 码)
ttf-arphic-gkai00mp :文鼎PL简中楷(GB 码)
其它字体请看:
http://www.debian.org/intl/zh/software
xfonts-intl-chinese - International fonts for X -- Chinese.
xfonts-intl-chinese-big - International fonts for X -- Chinese big.
中文帮助:
doc-linux-zh-s - Linux HOWTOs and mini-HOWTOs in Simplified Chinese in HTML
manpages-zh - Chinese manual pages
$ apt-get install defoma dfontmgr psfontmgr x-ttcidfont-conf fontconfig libxft2 l -
2004-04-07
Debian系统配制工具(转) - [Linux]
Debian系统配制工具,再不会无所是从了, debian也很亲切呀!
刚才论坛上看到有个兄弟提议罗列debian系统配制工具,我觉的很好,为了让更多兄弟看到,发新贴,望别介意。
都是命令行的配制工具:
rcconf
系统引导是你想要启动的服务,很有用工具。
base-config
基系统配制,第一次启动后,碰到的就是它吧,配制的方面很多哦,呵呵。
debconf Debian 包裹配制系统
dpkg-reconfigure 配制一个已经安装的包裹
很有用哦,任何安装的包裹都可以用它来配制。
apt-get install etherconf
dpkg-reconfiguration etherconf
网络的配制,包括主机名,IP,DHCP,DNS,GATEWAY,NETMASK。。。等。
如果如果你用lan上网,这几个文件很重要:
/etc/hostname主机名
/etc/network/interfaces 网络配制
/etc/resolv.conf DNS配制
如:
nameserver 202.96.104.18
nameserver 202.96.103.36
dpkg-reconfiguration xserver-xfree86
鼠标,键盘,显示器和显卡配制,能不能进X,全看它了。
或手工修改/etc/X11/XF86Config-4,作用一样。
modconf
大家肯定会在刚开始装系统时碰到那个另人望而生畏的基于表单的模块选取界面(我还曾专门写一贴,关于如何选取模块),就是它了。Debian想的非常周到,它把你须要的模块都做好了,只等你动手选了,以后忘了选或想移除模块,千万不要靠重装来解决问题,呵呵。
当然也可以手动添加了:
/etc/modules
这里写的都是你引导时要加载的内核模块,可以自己添加,
/etc/modules.conf
模块配制,这个不用自己改,
在你修改了/etc/modules后,可用update-modules来重建/etc/modules.conf和 /etc/chandev.conf。
几个好用的命令:
modprobe - high level handling of loadable modules
用来加载模块
modprobe -c 显示当前正被使用的模块配制
modprobe -l 显示能匹配的模块列表,你可以找你需要的模块
modprobe modname 加载模块
modprobe -r modname 移除模块
insmod - install loadable kernel module
给正在运行的内核安装一个可加载模块。
rmmod
从正在运行的内核卸载模块。
lsmod
列出已加载的模块。
modinfo modname
显示每个模块的信息,很有趣。
apt-setup
配制apt源,就是安装时的你看到的那个,帮助你写/etc/apt/source.list
apt-get install aptconf
dpkg-reconfigure aptconf
配制apt,如禁用哪个apt源,自定义添加apt源(就象是个储藏室)等,找的是你的source.list,好玩。
apt-get install timezoneconf
dpkg-reconfigure timezoneconf
配制时区,日期,和时间。
apt-get install localeconf
dpkg-reconfigure localeconf
配制locale,不用我说了吧。
locale
查看本地的locale
dpkg-reconfigure locales
功能同localeconf
cpanel,别人提醒的,呵呵,凑个数
中文图形配制工具。
呵呵,我怎么知道的呢?
呵呵,apt-cache search debconf
记得多看看男人(man)呀,不要花太多的心思在mm上呀 :)
-
2004-04-07
Debian的FAQ (转) - [Linux]
下面的FAQ是来自弟兄们的帖子中,都是一句话就能得到答案的。我整理出来,方便大家查找。
1.一般用户su root后无法运行任何图形界面的软件?
ln -s /home/normaluser/.Xauthority /root/.Xauthority
2. X 无法启动
将XF86Config-4中的Option "UseFBDev" "true"
用#注释掉,就可以了
debian认不了光驱?
ln -sf /dev/hd? /dev/cdrom
其中hd?就是你光驱所在的接口
3.我的声卡问题解决 /dev/dsp 权限不够
正确方法是
# adduser 用户名 audio
# adduser wide288 audio
比如用户名为wide288,重新登录wide288用户
通过knoppix安装装debian的办法
用Knoppix启动后在root shell下执行knx-hdinstall按提示做几十分钟后就有一个完整的debian系统了。
4.把rpm包转成deb包的工具
就是alien了
先apt-get install alien安装,装完试试用alien -d 把rpm包转成deb包,俺用它转了G五笔的deb包,使用正常
alien -i name-of-the-pakage.rpm
直接就能装上了,有时候能解决一些rpm包的所谓关联性问题
请教,X下鼠标显示一个怪怪的方块?先谢了!
是Trident显卡的驱动问题,好像Sis的显卡也有这个问题,解决方法是:
在XF86Config-4的Device字段添加一行:
Option "sw_cursor"
在xfree86的网站上说是: Option "SWCursor" "on" ,我没有试过.
5.请问如何使一个软件不进行升级
somebody said hold was a status flag to tell apt not to automatically upgrade a package. apt will place packages on hold if they require packages that are not currently installable; you can ’apt-get install pkgname’ to explicitly install the package. To put a package on hold, ’echo pkgname hold | dpkg --set-selections’ or use the ’=’ key on the package in dselect, or ’echo pkgname install | dpkg --set-selections’ to remove the hold
我们说 hold ,其实是一个状态标志,目的是告诉 apt 停止自动升级某个包裹。
apt 将让一些包裹处于 hold 状态,如果他们请求的包裹现在不可安装;
你能够使用 ‘apt-get install pkgname’ 来安装包裹。
为了让包裹置于 hold. ’echo pkgname hold | dpkg --set-selections ’ 或在 dselect 中使用 ’=’ 键于对应的包裹。
移除 hold 用
’echo pkgname install | dpkg --set-selections’
用synaptic,软件包的状态在gui界面中显示得一清二楚.
这样也许选择的更多
dpkg --get-selections \*>status.current
vi stantus.current//你想hold的package
dpkg --set-selections<stantus.current
6.“could not locate char-major-10-135 ”的解决
It’s harmless. Just means you do not have the RTC clock module compiled into your kernel, or the module has not been loaded. There should be an alias for this in
/etc/modules.conf:
alias char-major-10-135 rtc
If not, check /etc/modutils/arch/i386 (if you have an intel/amd system) and put it in there, then run update-modules.
modconf might allow you to force load the rtc module, if it exists, at boot by putting rtc in /etc/modules. That may help.
As a last resort, if your kernel doesn’t have it, you may want to install a kernel with rtc support or compile your own.
引自 www.debianhelp.com
相信很多朋友都会看到这个讨厌的信息,上面的方法能解决问题。:)
以下是转贴
解决关于"char-major-10-135"的错误,原因是新内核没有加入RTC支持,请在内核配置中的"character device"里将"enhanced real time clock support"选上Y或M就没这个错误了
建议选上这个支持,很多要编译的程序需要这个支持,譬如mplayer
不知道这些错误大家有没有遇见过
modprobe:modprobe:Can’t locate module char-major-108
modprobe:modprobe:Can’t locate module char-major-6
我的办法最简单:
不管数值是什么,我统统的;
alias char-major-10-135 off
最后用off就好啦,管它呢,又不影响使用
7. rxvt下[Home]、[End]按键无效该怎么办?
在~/.inputrc中加上下面的代码即可。
# rxvt
"\e[7~":beginning-of-line
"\e[8~":end-of-line
8. 快速的debian镜像
deb http://debian.cn99.com/debian stable main contrib non-free
deb http://debian.cn99.com/debian-non-US stable/non-US main contrib non-free
deb http://debian.cn99.com/debian-security stable/updates main contrib non-free
deb-src http://debian.cn99.com/debian stable main contrib non-free
deb-src http://debian.cn99.com/debian-non-US stable/non-US main contrib non-free
以上的 stable,根据需要可以设置成 testing 和 unstable
9.让vim支持中文
VIM当然支持中文!!!!!!
gvim也支持!!!!
在~/.gvimrc中加上
源码:set encoding=euc-cn
s -
2004-04-03
GCC内嵌汇编之语法详解 - [Linux]
内嵌汇编语法如下:
__asm__(汇编语句模板: 输出部分: 输入部分: 破坏描述部分)
共四个部分:汇编语句模板,输出部分,输入部分,破坏描述部分,各部分使用“:”格开,汇编语句模板必不可少,其他三部分可选,如果使用了后面的部分,而前面部分为空,也需要用“:”格开,相应部分内容为空。例如:
__asm__ __volatile__("cli": : :"memory")
1、汇编语句模板
汇编语句模板由汇编语句序列组成,语句之间使用“;”、“\n”或“\n\t”分开。指令中的操作数可以使用占位符引用C语言变量,操作数占位符最多10个,名称如下:%0,%1,…,%9。指令中使用占位符表示的操作数,总被视为long型(4个字节),但对其施加的操作根据指令可以是字或者字节,当把操作数当作字或者字节使用时,默认为低字或者低字节。对字节操作可以显式的指明是低字节还是次字节。方法是在%和序号之间插入一个字母,“b”代表低字节,“h”代表高字节,例如:%h1。
2、输出部分
输出部分描述输出操作数,不同的操作数描述符之间用逗号格开,每个操作数描述符由限定字符串和C 语言变量组成。每个输出操作数的限定字符串必须包含“=”表示他是一个输出操作数。
例:
__asm__ __volatile__("pushfl ; popl %0 ; cli":"=g" (x) )
描述符字符串表示对该变量的限制条件,这样GCC 就可以根据这些条件决定如何分配寄存器,如何产生必要的代码处理指令操作数与C表达式或C变量之间的联系。
3、输入部分
输入部分描述输入操作数,不同的操作数描述符之间使用逗号格开,每个操作数描述符由限定字符串和C语言表达式或者C语言变量组成。
例1 :
__asm__ __volatile__ ("lidt %0" : : "m" (real_mode_idt));
例二(bitops.h): -
在内嵌汇编中,可以将C语言表达式指定为汇编指令的操作数,而且不用去管如何将C语言表达式的值读入哪个寄存器,以及如何将计算结果写回C 变量,你只要告诉程序中C语言表达式与汇编指令操作数之间的对应关系即可, GCC会自动插入代码完成必要的操作。
1、简单的内嵌汇编
例:
__asm__ __volatile__("hlt"); “__asm__”表示后面的代码为内嵌汇编,“asm”是“__asm__”的别名。“__volatile__”表示编译器不要优化代码,后面的指令保留原样,“volatile”是它的别名。括号里面是汇编指令。
2、内嵌汇编举例
使用内嵌汇编,要先编写汇编指令模板,然后将C语言表达式与指令的操作数相关联,并告诉GCC对这些操作有哪些限制条件。例如在下面的汇编语句:
-
2004-04-03
编译器优化 → C关键字volatile → memory破坏描述符 - [Linux]
“memory”比较特殊,可能是内嵌汇编中最难懂部分。为解释清楚它,先介绍一下编译器的优化知识,再看C关键字volatile。最后去看该描述符。
1、编译器优化介绍
内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线,提高执行速度。以上是硬件级别的优化。再看软件一级的优化:一种是在编写代码时由程序员优化,另一种是由编译器进行优化。编译器优化常用的方法有:将内存变量缓存到寄存器;调整指令顺序充分利用CPU指令流水线,常见的是重新排序读写指令。对常规内存进行优化的时候,这些优化是透明的,而且效率很好。由编译器优化或者硬件重新排序引起的问题的解决办法是在从硬件(或者其他处理器)的角度看必须以特定顺序执行的操作之间设置内存屏障(memory barrier),linux 提供了一个宏解决编译器的执行顺序问题。
void Barrier(void)
这个函数通知编译器插入一个内存屏障,但对硬件无效,编译后的代码会把当前CPU寄存器中的所有修改过的数值存入内存,需要这些数据的时候再重新从内存中读出。
2、C语言关键字volatile
C语言关键字volatile(注意它是用来修饰变量而不是上面介绍的__volatile__)表明某个变量的值可能在外部被改变,因此对这些变量的存取不能缓存到寄存器,每次使用时需要重新存取。该关键字在多线程环境下经常使用,因为在编写多线程的程序时,同一个变量可能被多个线程修改,而程序通过该变量同步各个线程,例如:
DWORD __stdcall threadFunc(LPVOID signal)
{
int* intSignal=reinterpret_cast<int*>(signal);
*intSignal=2;
while(*intSignal!=1)
sleep(1000);
return 0;
}
该线程启动时将intSignal 置为2,然后循环等待直到intSignal 为1 时退出。显然intSignal的值必须在外部被改变,否则该线程不会退出。但是实际运行的时候该线程却不会退出,即使在外部将它的值改为1,看一下对应的伪汇编代码就明白了:
mov ax,signal
label:
if(ax!=1)
goto label
对于C编译器来说,它并不知道这个值会被其他线程修改。自然就把它cache在寄存器里面。记住,C 编译器是没有线程概念的!这时候就需要用到volatile。volatile 的本意是指:这个值可能会在当前线程外部被改变。也就是说,我们要在threadFunc中的intSignal前面加上volatile关键字,这时候,编译器知道该变量的值会在外部改变,因此每次访问该变量时会重新读取,所作的循环变为如下面伪码所示:
label:
mov ax,signal
if(ax!=1)
goto label
3、Memory
有了上面的知识就不难理解Memory修改描述符了,Memory描述符告知GCC:
1)不要将该段内嵌汇编指令与前面的指令重新排序;也就是在执行内嵌汇编代码之前,它前面的指令都执行完毕
2)不要将变量缓存到寄存器,因为这段代码可能会用到内存变量,而这些内存变量会以不可预知的方式发生改变,因此GCC插入必要的代码先将缓存到寄存器的变量值写回内存,如果后面又访问这些变量,需要重新访问内存。
如果汇编指令修改了内存,但是GCC 本身却察觉不到,因为在输出部分没有描述,此时就需要在修改描述部分增加“memory”,告诉GCC 内存已经被修改,GCC 得知这个信息后,就会在这段指令之前,插入必要的指令将前面因为优化Cache 到寄存器中的变量值先写回内存,如果以后又要使用这些变量再重新读取。
使用“volatile”也可以达到这个目的,但是我们在每个变量前增加该关键字,不如使用“memory”方便。 -
2004-04-02
AT&T与INTEL的汇编语言语法的区别 - [Linux]
1、大小写
INTEL格式的指令使用大写字母,而AT&T格式的使用小写字母。
例:
INTEL AT&T
MOV EAX,EBX movl %ebx,%eax
2、操作数赋值方向
在INTEL语法中,第一个表示目的操作数,第二个表示源操作数,赋值方向从右向左。
AT&T语法第一个为源操作数,第二个为目的操作数,方向从左到右,合乎自然。
例:
INTEL AT&T
MOV EAX,EBX movl %ebx,%eax
3、前缀
在INTEL 语法中寄存器和立即数不需要前缀;AT&T 中寄存器需要加前缀“%”;立即数
需要加前缀“$”。
例:
INTEL AT&T
MOV EAX,1 movl $1,%eax
符号常数直接引用,不需要加前缀,如:movl value , %ebx,value为一常数;在符
号前加前缀$表示引用符号地址, 如movl $value, %ebx,是将value的地址放到ebx中。
总线锁定前缀“lock”:总线锁定操作。“lock”前缀在Linux 核心代码中使用很多,特
别是SMP代码中。当总线锁定后其它CPU不能存取锁定地址处的内存单元。
远程跳转指令和子过程调用指令的操作码使用前缀“l“,分别为ljmp,lcall,与之
相应的返回指令伪lret。
例:
INTEL AT&T
CALL FAR SECTION:OFFSET lcall $secion:$offset
JMP FAR SECTION:OFFSET ljmp $secion:$offset
RET FAR SATCK_ADJUST lret $stack_adjust
4 、间接寻址语法
INTEL 中基地址使用“[”、“] ”,而在AT&T 中使用“(”、“) ”;另外处理复杂操作数的
语法也不同, INTEL 为Segreg:[base+index*scale+disp] , 而在AT&T 中为
%segreg:disp(base,index,sale),其中segreg,index,scale,disp都是可选的,在指定
index而没有显式指定Scale的情况下使用默认值1。Scale和disp不需要加前缀“&”。
INTEL AT&T
Instr instr
foo,segreg:[base+index*scale+disp] %segreg:disp(base,index,scale),foo
5、后缀
AT&T 语法中大部分指令操作码的最后一个字母表示操作数大小,“b”表示byte(一个
字节);“w ”表示word(2 个字节);“l ”表示long(4 个字节)。INTEL 中处理内存操作数
时也有类似的语法如:BYTE PTR、WORD PTR、DWORD PTR。
例:
INTEL AT&T
mov al, bl movb %bl,%al
mov ax,bx movw %bx,%ax
mov eax, dword ptr [ebx] movl (%ebx), %eax
在AT&T 汇编指令中,操作数扩展指令有两个后缀,一个指定源操作数的字长,另一个
指定目标操作数的字长。AT&T 的符号扩展指令的为“movs”,零扩展指令为“movz”(相应
的Intel指令为“movsx”和“movzx”)。因此,“movsbl %al,%edx”表示对寄存器al 中的
字节数据进行字节到长字的符号扩展,计算结果存放在寄存器edx中。下面是一些允许的操
作数扩展后缀:
bl: 字节->长字
bw: 字节->字
wl: 字->长字
跳转指令标号后的后缀表示跳转方向,“f”表示向前(forward),“b”表示向后(back)。
例:
jmp 1f
1: jmp 1f
1:
6、指令
INTEL 汇编与AT&T 汇编指令基本相同,差别仅在语法上。关于每条指令的语法可以参考I386 Manual。
-
2004-04-02
早期Linux 系统开发的主要贡献者 - [Linux]
从Linux 的早期源代码中可知,Linux 系统的早期主要开发人员除了Linus 本人以外,最著名的人员之
一就是Theodore Ts’o (Ted Ts’o)。他1990 年毕业于MIT 计算机科学专业。在大学时代他就积极参加学校中
举办的各种学生活动。他喜欢烹饪、骑自行车,当然还有就是hacking on Linux,后来他开始喜欢起业余无
线电报运动。目前他在IBM 工作从事系统编程及其它重要事务。他还是国际网络设计、操作、销售和研究
者开放团体IETF 成员。Linux 在世界范围内的流行也有他很大的功劳。早在Linux 操作系统刚问世时,他就怀着极大的热情为linux 的发展提供了maillist,几乎是在Linux 刚开始发布起(1991 年开始)就一直为Linux 做出贡献的人,
也是最早向Linux 内核添加程序的人(Linux 内核0.10 版中的虚拟盘驱动程序ramdisk.c 和内核内存分配程
序kmalloc.c)。直到目前仍然从事着与Linux 有关的工作。他当时在北美洲地区最早设立了linux 的ftp 站
点(tsx-11.mit.edu),而且至今仍然为广大linux 用户提供服务。他对linux 作出的最大贡献之一是提出并实
现了ext2 文件系统。该文件系统已成为linux 世界中事实上的文件系统标准。最近他又推出了ext3 文件系
统,大大提高了文件系统的稳定性和访问效率。作为对他的推崇,第97 期(2002 年5 月)的linuxjournal
期刊将他作为了封面人物,并对他进行了采访。目前,他为IBM linux 技术中心工作,并从事着有关
LSB(Linux Standard Base)等方面的工作。
Linux 社区中另一位著名人物是Alan Cox。他原工作于英国威尔士斯旺西大学(Swansea University
College)。刚开始他特别喜欢玩电脑游戏,尤其是MUD(Multi-User Dungeon or Dimension,多用户网络游
戏)。在90 年代早期games.mud 新闻组的posts 中你可以找到他发表的大量posts。他甚至为此还写了一偏
MUD 的发展史(rec.games.mud 新闻组,1992 年3 月9 日,A history of MUD)。由于MUD 游戏与网络密切
相关,慢慢的他对计算机网络开始感兴趣。为了玩游戏并提高电脑运行游戏的速度以及网络传输的速度,
他开始接触各种类型的操作系统,为他的游戏选择一个最为满意的平台。由于没钱,即使Minix 他都买不
起,当Linux 0.11 和386BSD 发布时,他考虑良久总算买了一台386SX 电脑。由于386BSD 需要数学协处
理器的支持,而386SX 中是不带的,所以他安装了Linux 系统。于是他开始学习带有免费源代码的Linux。
开始对Linux 产生了兴趣,尤其是有关网络方面的实现。在关于Linux 的单用户运行模式问题的讨论中,
他甚至赞叹Linux 实现的巧妙(beautifully)。Linux 0.95 版发布之后,他开始为Linux 系统编写补丁程序(修改程序)(记得他最早的两个补丁程序,都没有被Linus 采纳),成为Linux 上TCP/IP 网络代码的最早使用人之一。后逐渐加入Linux 的开发队伍,并开始成为维护Linux 内核源代码的主要负责人之一,也可以说成为Linux 社团中在Linus 之后最为重要的人物。以后Microsoft 公司曾经邀请他加盟,但他却干脆地拒绝了。从2001 年开始他负责维护Linux 内核2.4.x 的代码(Linus 主要负责开发最新开发版内核的研制(奇数版,比如2.5.x 版)。
《内核骇客手册》一书的作者Michael K. Johnson 也是最早接触Linux 操作系统的人之一(从0.97 版)。
他还是著名Linux 文档计划(Linux Document Project - LDP)的发起者之一。曾经在Linux Journel 工作,
现在RedHat 公司工作。 -
2004-04-01
找到《Linux内核完全注释0.11(0.95)》一书,爱不释手:) - [Linux]
Linus 在最初开发Linux 操作系统内核时,主要参考了3 本书。一本是M. J. Bach 著的《UNIX 操作系统设计》,该书描述了UNIX 系统V 内核的工作原理和数据结构。Linus 使用了该书中很多函数的算法,Linux 内核源代码中很多重要函数的名称都取自该书。因此,在阅读本书时,这是一本必不可少的内核工作原理方面的参考书籍。另一本是John H. Crawford 等编著的《Programming the 80386》,是讲解80x86 下保护模式编程方法的好书。还有一本就是Andrew S.Tanenbaum 著的《MINIX 操作系统设计与实现》一书的第1 版。Linus 主要使用了该书中描述的MINIX 文件系统1.0 版,而且在早期的Linux 内核中也仅支持该文件系统,所以在阅读本书有关文件系统一章内容时,文件系统的工作原理方面的知识完全可以从Tanenbaum 的书中获得。
Linux 诞生和发展不可缺少的五个支柱:UNIX 最初的开放原代码版本为Linux 提供了实
现的基本原理和算法、Rechard Stallman 的GNU 计划为Linux 系统提供了丰富且免费的各种实用工具、
POSIX 标准的出现为Linux 提供了实现与标准兼容系统的参考指南、A.S.T 的MINIX 操作系统为Linux 的
诞生起到了不可忽缺的参考、Internet 是Linux 成长和壮大的必要环境。
Linux-0.11 版本是在1991 年12 月8 日发布的。在发布时包括以下文件:
bootimage.Z - 具有美国键盘代码的压缩启动映像文件;
rootimage.Z - 以1200kB 压缩的根文件系统映像文件;
linux-0.11.tar.Z - 内核源代码文件;
as86.tar.Z - linux bruce evans’二进制执行文件;
是16 位的汇编程序和装入程序;
INSTALL-0.11 - 更新过的安装信息文件。
目前除了原来的rootimage.Z 文件,其它四个文件均能找到。
Let’s start learning !!!
[face10][face10][face10][face10][face10][face10][face10][face10][face10][face10][face10] -
vi命令是unix下常用而重要命令,可在全屏幕方式下编辑一个或多个文件。若在vi执行时
没有指定一个文件,那么vi命令会自动产生一个无名的空的工作文件。若指定的文件不存在,
那么就按指定的文件名创建一个新的文件。若对文件的修改不保存的话,v i命令并不改变原
来文件的内容。
注意:vi命令并不锁住所编辑的文件,因此多个用户可能在同时编辑一个文件,那么最后
保存的文件版本将被保留。
下面是vi命令使用的一些选项及含义:
-c sub-command 在对指定的文件编辑前,先执行指定的命令 sub-command .
-r filename 恢复指定的文件filename .
-R 将指定的文件以只读的方式放入编辑器中,这样不会保存对文件的任何修 改。
-y number 将编辑窗口的大小设为number行。
下面是vi编辑所处的三种模式:
.命令模式 进入vi时所处的模式。在此模式下用户可输入各种子命令对进行*作,如删除行、
粘贴行、移向下一个字、移向不同行等。
.文本输入模式 在此模式下可以修改一行的内容并增添新行。在命令模式下键入a 、i 或
c键可进入文本输入模式,按Escape键可返回命令模式。
.命令项模式 在此模式下,可以通过子命令输入更多的参数。如:w子命令要求输入一文
件名,"/"子命令要求输入一个查找项。用户使用Escape键返回命令模式。
下面是自命令模式下执行的,在同一行上移动的自命令:
h 将光标左移一格。
l 将光标右移一格。
j 将光标下移一格。
k 将光标上移一格。
w 将光标移到下一个小字的前面。
W 将光标移到下一个大字的前面。
b 将光标移到前一个小字的前面。
B 将光标移到前一个大字的前面。
e 将光标移到下一个小字的后面。
E 将光标移到前一个大字的后面。
fc 把光标移到同一行的下一个c字符处。
Fc 把光标移到同一行的前一个c字符处。
tc 把光标移到同一行的下一个字符c的前一格。
Tc 把光标移到同一行的前一个字符c的后一格。
number| 把光标移到递number列上。
下面是命令模式下在行间移动的子命令:
+或Enter 把光标移至下一行第一个非空白字符。
- 把光标移至上一行第一个非空白字符。
0 把光标移到当前行的第一个字符处。
$ 把光标移到当前行的最后一个字符处。
H 把光标移到屏幕最顶端一行。
L 把光标移到屏幕最底端一行。
M 把光标移到屏幕中间。
下面是命令模式下改变屏幕显示的子命令:
z- 把当前行作为屏幕的最后一行,并重新显示屏幕。
z. 把当前行作为屏幕的中间一行,并重新显示屏幕。
Ctrl+l 重新显示屏幕当前内容。
/pattern/z- 寻找pattern的下一个位置,并把所在行设为屏幕的最后一行。
下面是在命令模式下用来显示页面的子命令:
Ctrl + f向后滚一页。
Ctrl + d向后滚半页。
Ctrl + b向前滚一页。
Ctrl + u向前滚半页。
Ctrl + e屏幕向下滚一行。
Ctrl + y屏幕项
共1页 1






