程序员人生 网站导航

Linux学习路线

栏目:综合技术时间:2015-04-22 08:00:44

自己的学习线路


写1下最近个人的linux学习线路,学完后再好好参考其他人的:

1.《Linux程序设计》- 靠它来入门,然后装1个linux系统,学习shell(bash)和linux C,把基础打牢;
2. 《深入理解Linux内核》和《Linux内核设计与实现》:后者我已粗粗看过1遍,值得细看,前者必须尽快看完;
3. 《Linux装备驱动设计》:必买必看,实用性强;
4.《Advanced Programing in Unix Envirement》:这本书貌似翻译不给力,我有高清英文电子版,渐渐看,不着急;

剩下的根据需要具体学习吧,呵呵!

他人的建议


先学学编辑器,vim, emacs 甚么的都行.

然后学 make file 文件,只要知道1点就行,这样就能够准备编程序了.

然后看看《C 程序设计语言》K&R,这样呢,基本上就能够进行1般的编程了,顺便找本数据结构的书来看.

如果想学习 UNIX/LINUX 的编程,《APUE》绝对经典的教材,加深1下功底,学习《UNP》的第2卷.这样基本上系统方面的就能够掌握了.

然后再看 Douglus E. Comer 的《用 TCP/IP 进行网际互连》第1卷,学习1下网络的知识,

再看《UNP》的第1卷,不但学习网络编程,对系统编程的1些经常使用的技能就很熟习了,

如果继续网络编程,建议《TCP/IP进行网际互连》的第3卷,里面有很多关于利用协议 telnet、ftp 等协议的编程.

如果想写装备驱动程序,您的系统编程的接口比如文件、IPC 等要熟知了,再学习《LDD》

对几本经典教材的评价


  《The C Programing Language》K&R 经典的 C 语言程序设计教材,作者是 C 语言的发明者,教材内容深入浅出.虽然有点老,但是必备的1本手册,现在有时候我还常翻翻.篇幅比较小,但是每看1遍,就有1遍的收获.另外也可用谭浩强的《C 语言程序设计》代替.
  《Advanced Programing in Unix Envirement》 W.Richard Stevens:也是非常经典的书(空话,Stevens 的书哪有不经典的!),虽然初学者就能够看,但是事实上它是《Unix Network Programing》的1本辅助资料.国内的翻译的《UNIX 环境高级编程》的水平不怎样样,现在有影印版,直接读英文比读中文来得容易.
  **《Unix Network Programing》**W.Richard Stevens:第1卷讲 BSD Socket 网络编程接口和另外1种网络编程接口的,不过现在1般都用 BSD Socket,这本书只要看大约1半多就能够了.第2卷没有设计到网络的东西,主要讲进程间通讯和 Posix 线程.看了《APUE》以后,就能够看它了,基本上系统的东西就由《APUE》和《UNP》vol2 概括了.看过《UNP》以后,您就会知道系统编程的绝大部份编程技能,即便卷1是讲网络编程的.国内是清华翻译得《Unix 网络编程》,翻译者得功底也比较高,翻译地比较好.建议还是看中文版.
《TCP/IP 详解》1共3卷,卷1讲协议,卷2讲实现,卷3讲编程利用.我没有怎样看过.,但是听说也很经典的,我没有时间看卷2,不便评价.
  **《用 TCP/IP 进行网际互连》**Douglus.E.Comer 1共3卷,卷1讲原理,卷2讲实现,卷3讲高级协议.感觉
  上这1套要比 Stevens 的那1套要好,就连 Stevens 也不能不承认它的第1卷非常经典.事实上,第1卷即便你没有1点网络的知识,看完以后也会对网络的来龙去脉了如指掌.第1卷中还有很多习题也设计得经典和实用,作者本身就是1位教师,并且卷1是国外研究生的教材.习题并没有答案,留给读者思考,问题得答案可让你成为1个中级的 Hacker,这些问题的答案可以象 Douglus 索取,不过只有他只给教师卷2我没有怎样看,卷3可以作为参考手册,其中地例子也很经典.如果您看过 Qterm 的源代码,就会知道 Qterm 的 telnet 实现部份大多数就是从这本书的源代码过来的.对网络原理的书,我推荐它,而不是 Stevens 的《TCP/IP 祥解》.
  《Operating System - Design and Implement》这个是讲操作系统的书,用 Minix做的例子.作者母语不是英文,英文看起来比较晦涩.国内翻译的是《操作系统设计与实现》,我没看过中文版,翻译者是尤晋元,他翻译的《APUE》已让我失望头顶了.读了这本书,对操作系统的底层怎样工作的就会有1个清晰的认识.
  **《Linux Device Driver》**2e,为数不多的关于Linux装备驱动程序的好书.不过内容有些杂乱,如果您没有1些写驱动的经验,初次看会有些摸不着南北.国内翻译的是《Linux装备驱动程序》第2版,初版,第2版的译者我都有很深的接触,不过整体上来讲,虽然第2版翻译的有些不尽人意,但是相比初版来讲已超越了1大截.要读这1本书,最少应当先找1些《计算机原理》《计算机体系结构》的书来马马虎虎读读,最少应当对硬件和计算机的工作进程有1些了解.

最后的建议


Linux学习的线路图:


了解Linux 的基础知识;
掌握50个以上的经常使用命令;
掌握.tgz、.rpm等软件包的安装方法;
学习添加外设,安装装备驱动程序;
熟习Linux文件系统和目录结构;
掌握vi,gcc,gdb等经常使用工具;
理解shell别名、管道、I/O重定向、输入和输出和shell脚本编程。

随着Linux利用的扩大许多朋友开始接触Linux,根据学习Windwos的经验常常有1些茫然的感觉:
不知从何处开始学起。作为1个Linux系统管理员,我看了许多有关Linux的文档和书籍,并为学习Linux付出了许多艰苦的努力。
认真正取得了1份正式的Linux系统管理工作后,我更加深入地理解了Linux的灵魂:服务与多用户。
Linux系统知识是非常广博的,但是只要掌握了重点知识,管理它并没有想象中的那末可怕。

在下面我会将作为系统管理员的1些工作心得和总结出来的经验系统地介绍给大家。

1、 学习的目的


通过Linux的学习掌握UNIX的目的想必不用多说了,在这个网络人材身价倍增的年代,想靠技术吃饭又不想掌握网络和编程技术是不明智的。当1人第1次听说Linux并跃跃欲试的时候,总会提出几个?,它是甚么(What)? 为何要用它(W hy)? 怎样学习它(How)?做为开放源码运动的主要组成部份,Linux的利用愈来愈广泛,从我们平时的文娱、学习,到商业、政府办公,再到大范围计算的利用。为了满足人们的需求,各种各样的、基于Linux的利用软件层见叠出。只要具有了LinuX的基本功,并具有了自学的能力以后,都可以通太长期的学习将专项内容予以掌握。

2、 从命令开始从基础开始


常常有些朋友1接触Linux 就是希望构架网站,根本没有想到要先了解1下Linux 的基础。这是相当困难的。虽然Linux桌面利用发展很快,但是命令在Linux中仍然有很强的生命力。Linux是1个命令行组成的操作系统,精华在命令行,不管图形界面发展到甚么水平这个原理是不会变的,Linux命令有许多强大的功能:从简单的磁盘操作、文件存取、到进行复杂的多媒体图像和流媒体文件的制作。这里笔者把它们中比较重要的和使用频率最多的命令,依照它们在系统中的作用分成几个部份介绍给大家,通过这些基础命令的学习我们可以进1步理解Linux系统:
l 安装和登录命令:login、 shutdown、 halt、 reboot 、mount、umount 、chsh
l 文件处理命令:file、 mkdir、 grep、dd、 find、 mv 、ls 、diff、 cat、 ln
l 系统管理相干命令: df、 top、 free、 quota 、at、 lp、 adduser、 groupadd kill、 crontab、 tar、 unzip、 gunzip 、last
l 网络操作命令:ifconfig、 ip 、ping 、 netstat 、telnet、 ftp、 route、 rlogin rcp 、finger 、mail 、nslookup
l 系统安全相干命令: passwd 、su、 umask 、chgrp、 chmod、chown、chattr、sudo、 pswho

3、 选择1本好的Linux书籍


不管在论坛还是读者反馈中,我们看到最多的问题常常是某个新手,在安装或使用linux的进程中遇到1个具体的问题就开始发问, 很多都是重复性的问题, 乃至有很多人连基本的问题描写都不是很清楚。这说明很多初学linux的人还没有掌握基本功。怎样才能快速提高掌握linux的基本功呢? 最有效的方法莫过于学习权威的linux工具书,工具书对学习者而言是相当重要的。1本毛病观念的工具书却会让新手全部误入歧途。目前国内关于linux的书籍有很多不过精品的不多,笔者强烈建议浏览影印本的“o’reilly原版linux图书http://www.oreilly.com.cn/ ”,而且出版社还提供了1个非常好的线路图:http://www.oreilly.com.cn/guide/guide_linux.php 见图-1。
这里写图片描述

关于书籍

常常有人问:我想学习内核,需要甚么基础吗?Linus Torvalds本人是这样回答的:你必须使用过Linux。 这个……还是有点太泛了吧,我想下面几个基础可能还是需要的,虽然不1定必须:

1, 关于操作系统理论的最低级的知识。不需要通读并理解《操作系统概念》《现代操作系统》等巨著,但总要知道分时(time-shared)和实时(real-time)的区分是甚么,进程是个甚么东西,CPU和系统总线、内存的关系(很粗略便可),等等。

2, 关于C语言。不需要已很精通C语言,只要能熟练编写C程序,能看懂链表、散列表等数据结构的C实现,用过gcc编译器,就能够了。固然,如果已精通C语言明显是大占便宜的。

3, 关于CPU的知识。这块儿可以在学习内核进程中补,但这样的话你就需要看讲授很详细的书,比方后面将会提到的《情形分析》。你是不是熟习Intel 80386 CPU?尝试着回答这几个问题来判断1下:1)说出80386的中断门和圈套门的区分;2)说出保护模式与实模式的区分;3)多处理器机器上,普通的读-改-写回1块内存这样的动作,为何需要特殊的手段来保护。等等。讲授基于其它CPU的Linux内核的书,目前好象只有1本《IA64Linux内核:设计与实现》──也还是Intel的,其它都是讲授基于IA32的。

以上算是知识方面吧,如果还要再补充1条,我想就是:动手编译过内核。

好了,我们接下来走。好多人装上Linux以后,第1件事找到内核源码所在的路径,打开1个C程叙文件,开始哗哗哗翻页,看看大名鼎鼎的Linux内核代码到底长啥样子──然后关闭。这是可理解的,但却不是学习的方法。刚开始,必须从读书入手。最少要对内核有1个Overview以后,才有可能带着问题去试图浏览源代码本身。 [/color:8c0c3b6f46]下面就讲1下我读过的几本书:

1, 《Linux内核设计与实现》,英文名Linux Kernel Development(所以有人叫它LKD),机械工业出版社,¥35, 美国Robert Love著,陈莉君译者。 评说:

此书是现今数一数二的入门最好图书。作者是为2.6内核加入了抢占的人,对调度部份非常精通,而调度是全部系统的核心,因此本书是很权威的。这本书讲授浅显易懂,全书没有罗列1条汇编语句,但是给出了全部Linux操作系统2.6内核的概观,使你能通过浏览迅速取得1个overview。而且对内核中较为混乱的部份(以下半部),它的讲授是最透彻的。对没怎样深入内核的人来讲,这是强烈推荐的1本书。

翻译:翻译水平、负责任程度都不错,但是印刷存在1些毛病。买了此书的朋友可以参考我在Linux高级利用版的《Linux内核设计与实现中文版勘误》:

http://bbs.chinaunix.net/forum/viewtopic.php?t=541234

另外,此书2005年有了第2版,目前还没有中译本面世。我就是对比着2nd-en勘误1st-cn的。

2, 《Linux内核源代码情形分析》上、下。毛德操、胡希明著,浙江大学出版社,上册¥80,下册¥70. 评说:

本书是基于2.4.0内核的,比较早,也没听说会出第2版。上册讲授内存管理、中断、异常与系统调用、进程控制、文件系统与传统Unix IPC;下册讲授socket、装备驱动、SMP和引导。关于这套书的评价褒贬不1,我个人认为其深度是同类著作中最优秀的。本书基于Intel IA32体系,由于厚度大,很多体系上的知识都捎带讲授了,所以如果你想深入了解内核的工作机制而又不非常熟习Intel CPU的体系构造,本书是最适合的。缺点是:版本较老,没有TCP/IP协议栈部份(它讲的socket只是Unix域协议的),图表太少,不合适初学者入门。还有就是对学生朋友来讲,可能书价偏高,这样的话可以斟酌先买上册,由于上册是核心部份,下册1大部份都在讲具体PCI/ISA/USB装备的驱动。

翻译:没甚么翻译,作者是国人,而且行文流畅。本人书桌上诸多计算机经典图书当中,这套是唯1又经典又无浏览障碍的。

www.linuxforum.net内核版好多朋友已把这书读到67遍了,我很惭愧,上册差不多读熟了,下册就SMP部份还看过──但这就花费了整整1年的时间,还有好多弄不懂的。这里顺便说明另外1个研究内核常见的误区:目标太庞大。要知道Linux内核(最新的2.6.13)bzip2紧缩以后37M,解紧缩以后244M,根本不是哪一个人能够吃透的。即便是内核的核心开发团队中,恐怕也只Linus Torvalds、Alan Cox、David Miller、Ingo Molnar寥寥数人会有比较全面的了解,其它人都是做自己专门的部份。 我自己来讲,目前已决定放弃内存管理的全部(slab层、LRU、rbtree等)、文件系统部份、外设驱动部份,暂时也没打算弄IA32之外的其它体系的部份。

3, 《深入理解Linux内核》第2版。中国电力出版社。也是陈莉君译。此书是Linux内核黑客在推荐图书时的首选。 评说:

此书C版的converse兄送了我1本初版,因此就没买第2版,比较后悔。因此只就初版说1说,初版基于2.2,第2版2.4 。我见O’Reilly官方主页上说第3版的英文版将于2005年11月出版,也不知我们什么时候才能见到。此书图表很多,形象地给出了关键数据结构的定义,与《情形分析》相比,本书内容紧凑,不会1个问题讲授动辄上百页,有提纲挈领的功用,但是深度上要逊于《情形分析》。

4, 其它的几本书。市面上能见到的其它的Linux内核的图书,象《Linux装备驱动程序》、《Linux内核源代码完全注释》和新出的《Linux内核分析及编程》等。

《Linux装备驱动程序》第2版是基于2.4的,中文翻译不错,中国电力出版。这书强调动手实践,但它是讲授“装备驱动”的,不是最核心的东西,而且有些东西没硬件的话没法实践,可能更合适驱动开发的程序员吧,不太合适那些For fun and profit的人。此书有第3版英文版,东南京大学学出版社影印,讲授2.6的,行文流畅,讲授的面也比第2版更广泛,我读过其中关于同步与互斥、内存分配的部份,感觉很不错。

《Linux内核源代码完全注释》(机械工业出版社)是同济大学的博士生赵炯的著作,讲授0.1Linux内核,我没买也没看,有看过的朋友说1说。

《Linux内核分析及编程》(电子工业出版社)是刚刚出版的,国人写的,讲授2.6.11 。很多人说好,但有人说不够系统,我没买,不敢评说。

还有1本清华出的《Linux内核编程指南(第3版)》,原书应当是好书,但是翻译、排版10分糟烂,脱字跳行,根本没法看,我买了1本又扔掉了。

5, 其它资源。 TLDP(The Linux Documentation Project)有大量文档,其中很多是关于内核的,有些是在国外出版过的,象《Linux Kernel Interls》《The Linux Kernel》《Linux Kernel Module Programming Guide》等,作者都是亲身参加开发的人,著作较为可信。

Http://www.linuxforum.net

中国Linux论坛的内核版。该版是研究内核的中文Linux社区中水平最高的,有很多专家级别的牛人,强烈推荐去学习1下(但建议不要问太过分简单的问题,人家脾气再好也会烦的^_^),它的置顶贴简直是1个包罗万象的FAQ,精华区也有很多资料。只惋惜太过曲高和寡,人气不是很旺。

6, 1本不是讲授Linux的书:《现代体系结构上的Unix系统:内核程序员的SMP和Caching技术》,人民邮电出版社2003版,定价¥39. 本书虽然不是讲授Linux,但是对所有Unix内核都是适用的,合适对SMP和CPU的Cache这些组成原理知识不是很熟的朋友,而且是很多国外牛人推荐的书。中文版翻译非常负责。

还有个很重要的问题:怎样阅读内核源代码。有的朋友喜欢在Windows上工作,用Source Insight;有的在Linux,用Source Navigator;还有专门阅读源代码的软件,象lxr(Linux Cross Reference);还有用ctags/ectags/cscope等,这些都是很优秀的软件。我个人用Vim ctags阅读(参考了www.linuxforum.net内核版wheelz大侠的文档,)。

另外,前边已提到的1个重要的问题是:你研究内核的目的是甚么, 开发? 乐趣?如果是开发,而且是国内做开发,把kernel API熟习1下就差不太多了(你也知道国内的水平有多差),比方说copy_from_user()、kmalloc()函数等,kernel API在Internet上找得到,编译内核时也能够用DocBook生成(具体请参考内核源代码包下的README文件);如果是研究,那就差别很大了,需要下很大的苦功:会用kmalloc()绝不说明你晓得Linux内核的虚存管理子系统,正犹如会讲汉语不说明你懂中国文化1样。

说完了,发现前面讲的太罗嗦了,简化1下:

1, 动手编译内核

2, 精读《Linux内核设计与实现》

3, 上www.linuxforum.net内核版看置顶贴与精华区

另外就凭自己兴趣选择吧。

下面是1篇没写完的《Linux内核模块编程入门》,不补写了,将就着看吧。

Linux内核模块编程入门

看到昨天有好几个问linux内核编程问题的帖子,很多是卡在了入门问题上,就整理1下入门的初步流程。针对2.6内核的Linux系统,需要你的机器上已安装了kernel-devel这个包,也就是编译模块所必须的东西:内核的头文件和1些Makefile。

1,Hello World程序:

[code:1:fbc83fc10a]/*file: hello.c*/ #ifndef __KERNEL__ #define __KERNEL__ #endif #ifndef MODULE #define MODULE #endif #include #include #include static int hello_init(void) { printk(KERN_ALERT "Hello, The fucking crazy world/n"); return 0; } static void hello_exit(void) { printk(KERN_ALERT "Bye, The fucking crazy world!/n"); } module_init(hello_init); module_exit(hello_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR("albcamus ");[/code:1:fbc83fc10a]

2.6内核的kbuild子系统跟2.4相比有本质的改变。我们下面尝试两种方式编译这个程序:

1, 你可以在本目录下这样写1个Makefile

[code:1:fbc83fc10a]obj-m := hell.o clean: rm -rf *.o .*.cmd *.ko *.mod.c .tmp_versions[/code:1:fbc83fc10a]

然后用这样的命令行编译:

make -C /lib/modules/`uname -r`/build M=`pwd` modules

这时候ls1下,就可以看到生成了很多文件,其中hello.ko就是我们需要的内核模块。

2, 专业点儿,Makefile这样写:

[code:1:fbc83fc10a]obj-m := hello.o KERNELBUILD := /lib/modules/`uname -r`/build default: make -C $(KERNELBUILD) M=$(shell pwd) modules clean: rm -rf *.o .*.cmd *.ko *.mod.c .tmp_versions[/code:1:fbc83fc10a]

然后只要make1下就能够了。

插入模块用insmod命令:

insmod ./hello.ko

这时候候大家可能会问:为何我的屏幕上没有见到输出?这个是console的日志记录级别和你printk消息时指定的级别(本例中指定为KERN_ALERT,为次高,仅次于KERN_EMERG)决定的。不管如何,你可以tail 或cat看看系统日志的最后几行,系统日志1般为/var/log/messages,或直接用dmesg命令,肯定能看到输出了。

2,头文件问题。

C程序员都知道,要使用某个外部的函数,应当#include某个头文件,这个头文件包括了那个函数的原型(prototype)。内核的头文件在include/下,其中include/asm是个符号链接,指向你所用内核的具体的体系结构目录,比方说我的系统是i386的,那末include/asm就指向include/asm-i386 。

内核编程中我们不能链接libc库,不能使用libc库中的函数,所以很有些麻烦。1些重要的函数,象strcpy/strcmp/snprintf等,kernel也为我们实现并导出(export)了,而我们需要#include相干的头文件,在include/linux和include/asm中,你需要自己寻觅你所要使用的函数在哪一个头文件中声明,并将其#include进来。

4 、养成在命令行下工作


1定要养成在命令行下工作的习惯,要知道X-window只是运行在命令行模式下的1个利用程序。在命令行下学习虽然1开始进度较慢,但是熟习后,您未来的学习之路将是以指数增加的方式增长的。从网管员来讲,命令行实际上就是规则,它总是有效的,同时也是灵活的。即便是通过1条缓慢的调制解调器线路,它也能操纵几千千米之外地远程系统。

5、用Unix思惟思考Linux


由于Linux是参照Unix的思想来设计的,理解和掌握它就必须以Unix的思惟来进行,而不能以Windows思惟。不可否认,windows在市场上的成功很大1部份在于技术思想的独到的地方。可是这个创新是在面对个人用户的条件下进行的,而面对着企业级的服务利用,它还是有些力不从心。多年来在计算机操作系统领域1直是2者独大:unix在服务器领域,Windows在个人用户领域。因而可知,用户需求决定了所采取的操作系统。不管甚么缘由,如果要学习Linux,那末首先要将思惟从Windows的“这个小河” 中拖出来,放入Unix的海洋。

6 、学习shell


对Shell(中文名称壳),习惯Windows的读者肯定是非常陌生的,由于Windows只有1个“Shell”(如果可以说是Shell的话),那就是Windows自己。用1句话容易理解的解释就是,shell是用户输入命令与系统解释命令之间的中介。最直观的说法,1种Shell有1套自己的命令。举1个容易理解的例子,Linux的标准Shel是Bash Shel;Solaris的shell是B shell;Linux的Shell是以命令行的方式表现出来的。读者可能会不理解,Windows从命令行“进化”到了图形界面,那末Linux现在还使用命令行岂不是1种倒退?

当初我刚刚接触Linux时就曾有过这类想法。可是后来发现,如果使用图形界面,那末分配给利用软件的资源就少了,在价格昂贵的服务器上,能够以较低的硬件配置实现一样的功能是非常重要的。
下面举例说明,1台服务器有1GB内存,假定其中512MB用于处理图形界面,若要安装1个需要784MB内存的数据库软件,唯一的办法就是扩大内存。但是如果使用命令行,系统可能只需要64MB内存,其它的内存就能够供数据库软件使用了。使用命令行,不但是内存,而且CPU及硬盘等资源的占用都要节省很多。所以,作为服务器使用命令行是优点而不是缺点。既然Shell有这么多优点,就必须要学习它。

7、勤于实践


要增加自己Linux 的技能,只有通过实践来实现了。所以,赶快找1部计算机,赶快安装1个 Linux 发行版本,然落后入精彩的Linux世界。相信对你自己的 Linux 能力必定大有斩获。另外,人脑不像计算机的硬盘1样,除非硬盘坏掉了或是资料被你抹掉了,否则贮存的资料将永久而且立刻的记忆在硬盘中。在人类记忆的曲线中,你必须要不断的重复练习才会将1件事情记得比较熟。

一样的,学习 Linux 也1样,如果你没法常常学习的话,学了后面的,前面的忘了。你对Linux命令熟习后你可以开始搭建1个小的Linux网络,这是最好的实践方法。Linux是网络的代名词,Linux网络服务功能非常强大,不论是邮件服务器、Web服务器、DNS服务器等都非常完善。固然你不需搭建所有服务,可以渐渐来。需要说明的是这个Linux网络对初学者有两3台计算机便可。自己多动手,不要非要等着他人帮你解决问题。

8、学会使用文档


和私有操作系统不同,各个Linux的发行版本的技术支持时间都较短,这对Linux初学者是常常不够的。其实当你安装了1个完全的Linux系统后其中已包括了1个强大的帮助,只是可能你还没有发现和使用它们的技能。主流Linux发行版都自带非常详细的文档(包括手册页和FAQ),从系统安装到系统安全,针对不同层次的人的详实文档,仔细浏览文档后40%问题都可在此解决。查阅经典工具书和Howto,特别是Howto是全球数以万计的Linux、Unix的经验总结非常有参考价值通常40%的问题一样可以解决。安装1个新的软件时先看README,再看INSTALL然后看FAQ,最后才动手安装,这样遇到问题就知道为何。如果说明文档不看,结果出了问题再去论坛来找答案反而浪费时间。

当查找文档时, 1定要看文档是在何种版本、何种环境及何种状态下出现的何种结果。对文档的有效性, 1时还没法在操作前就知道结论如何, 那末对某个专题或问题,浏览相干的多篇文章将会节省大量的时间, 还可以保证尽可能“干净”的环境,有效避免由于不同操作所酿成的更多问题。操作时要仔细核对各个步骤及输出的结果,尽可能保持与文档1致。

9、在Linux论坛获得帮助


如果上面的措施没有解决问题,此时你就需要Linux社区的帮助了。需要说明的是你要有周全的思考,准备好你的问题,不要草率的提问,否则只会得到到草率的回答或根本得 不到任何答案。越表现出在寻求帮助前为解决问题付出的努力,你越能得到实质性的帮助。最好先搜索1下论坛是不是有您需要的文章。这样可以取得事半功倍的效果。

你需要提供精确有效的信息。这其实不是要求你简单的把成吨的出错代码或数据完全转储摘录到你的发问中。如果你有庞大而复杂的测试条件,尽可能把它剪裁得越小越好。可能你会遇到这类情况,对1个问题会出现不同内容回答,这时候你需要通过实践来验证。另外把这个问题放在其他Linux社区要求帮助也是1种选择。如果得不到答案,请不要以为我们觉得没法帮助你。有时只是看到你问题的人不知道答案罢了。这时候换1个社区是不错的选择。

10、学习专业英文


如果你想深入学习Linux,看不懂由于文档实在是太难了。写的最好的,最全面的文档都是英语写的,最早发布的技术信息也都是用英语写的。即使是非英语国家的人发布技术文档,也都首先翻译成英语在国际学术杂志和网络上发表。
通过man、info等命令,可以从在线帮助中快速地取得所需要的命令和操作方法。不要惧怕海量的系统帮助,仔细浏览几个man或info文档就会发现,这些帮助几近都依照固定格式写成1命令名称、参数、参数说明、使用例子、参考等。当英语成为1种习惯, 就会自觉地查找或定阅互联网上感兴趣的英文材料。这样,在不知不觉中就已和世界同步。

101、在社区同享你的经验


随着Linux利用的扩大,出现了很多Linux社区。其中有1些非常优秀的社区:水木清华、其中有1些非常优秀的社区:www.linuxforum.net(国内最高水平GNU站点)、http://www.chinaunix.net/ (中国最大的Unix技术社区),随着知识的不断积累,就能够把自己动手解决1些前人没有遇到的问题写出文档在网络上同享给其他读者。这个时候, 也就成了1名“高手”。Linux的使用者1般都是专业人士,他们有着很好的电脑背景且愿意协助他人,Linux高手更具有鼓励新手的文化精神。

最后是1个笔者的Linux学习的线路图(roadmap):


l 了解Linux 的基础知识,这些包括了用户管理、群组的概念、权限的观念等;
l 掌握最少50个以上的经常使用命令;
l 掌握.tgz、.rpm等软件包的经常使用安装方法
l 学习添加外设,安装装备驱动程序(比如网卡)
l 熟习Linux文件系统 和目录结构。
l 掌握vi,gcc,gdb等经常使用编辑器,编译器,调试器 。
l 理解shell别名、管道、I/O重定向、输入和输出和shell脚本编程。
l 网络的基础包括: 掌握路由概念、OSI7层网络模型、TCP/IP模型及相干服务对应的层次对Linux学习非常重要的。然后学习Linux环境下的组网。

Linux内核书籍


LKD《Linux内核设计与实现》


本书重在原理。合适入门的最好图书。作者是为2.6内核加入了抢占的人,对调度部份非常精通,而调度是全部系统的核心,因此本书是很权威的。

ULK《深入理解Linux内核》


此书比上1本多了些细节。是Linux内核黑客在推荐图书时的首选。写的比较简单易懂,合适刚刚接触LINUX内核的。

此书图表很多,形象地给出了关键数据结构的定义,与《Linux内核源代码情形分析》相比,本书内容紧凑,不会1个问题讲授动辄上百页,有提纲挈领的功用,但是深度上要逊于《Linux内核源代码情形分析》。

LDD3《LINUX装备驱动程序(第3版)》


这书强调动手实践!但它是讲授“装备驱动”的,不是最核心的东西,而且有些东西没硬件的话没法实践,可能更合适驱动开发的程序员吧

其中关于同步与互斥、内存分配的部份,感觉很不错。

《Linux内核源代码情形分析》


好,很经典,是浙江大学教授毛德操写的,惋惜成书于2001年以后1直没有更新。分上下册。
很多是基于2.4内核讲授的需要注意。如果学习的话也建议学习2.6,2.6跟2.4比产生了很多显著改良,应当学习的。
全书内容博大精深,不是非常好懂,对细节问题描写比较清晰。但是感觉对内核的整体感觉不够强。另外缺少网络部份的分析。觉得不是很合适初学者。

《Linux内核源代码分析》


点评:面对中高级,这本书很好,对了解操作系统是1本不可多得的好书。

《LINUXKERNEL技术手册》


参考手册,很薄,值得1看。

《深入Linux内核架构》


这本书针对的是比较新的内核版本2.6.24;内容比较全面,深入浅出。
如果没有对Linux内核的初步结构的认识,那末会看得比较费劲。建议可以1边去翻在国内已闻名已久的4本Linux内核著作(《Linux内核原代码情形分析》、《Linux内核设计与实现》、《深入理解Linux内核》、《Linux装备驱动程序》),再1边看这本书,把这本书当作1个补充或当作1个内核框架图谱说明书来浏览,收效会更好。

《Linux内核完全注释》


主要描写和注释了Linux0.11内核全部源代码。对初学Linux内核操作系统的人来说,该书能够引领读者快速入门,并且能全面了解1个简单操作系统的工作机理。对进1步学习现在的Linux内核具有非常大的指点作用。对学习嵌入式利用的技术人员来说,通过《完全注释》1书的学习也能迅速融入嵌入式利用领域。

《Orange S:1个操作系统的实现》


从只有210行的引导扇区代码动身,1步1步地向读者显现1个操作系统框架的完成进程。

《30天自制操作系统》


小日本写的,不过确切写的内容很好,讲怎样自己1步步写操作系统,从汇编到C都有触及。

《深入理解Linux虚拟内存管理》


简称LVMM,是1本介绍Linux虚拟内存管理机制的书。如果你希望深入的研究Linux的内存管理子系统,仔细的研读这本书无疑是最好的选择。

《深入理解LINUX网络内幕》


1本讲授网络子系统实现的书,通过这本书,我们可以了解到Linux内核是如何实现复杂的网络功能的。

以上5本书籍被作者可谓是久经考验的神作(概括为“2+1+2”,第1个2是指2本全面讲授内核的书,中间的1指1本讲授驱动开发的书,后面的2则指2本有关内核具体子系统的书,希望这5本书籍能一样对你有用。
------分隔线----------------------------
------分隔线----------------------------

最新技术推荐