L
学习方向:
一、桌面系统
就
是系统安装好后的视窗系统,在Windows 下叫Windows,在Linux
下叫XWindows,其实只是名字不一样而已(看看红旗做的桌面,真是跟Windows 要做象有多象,真晕,这样虽然有助于Linux
桌面的使用,但对于Linux 系统的推广真是没什么好处)很多初学Linux 人的安装好Linux 后,进入其X Windows
桌面,兴奋不已,以为大功告成,Linux 自己会了,这种想法是很可怕的;如果我告诉你Linux 的X Windows 环境不是Linux
系统,它只是在Linux 下面运行的应用程序(类似于在Windows 下运行office2000),你是怎么想的?Windows
下的应用程序几乎是不能直接在Linux 系统下安装和使用,学编程的应该明白,所以不要去找Windows
工具盘安装你的RAR,QQ,realone 等常用工具,你是装不上的。
你可以尝试去安装你硬件的最新驱动程序,安装Linux 下的常用工具,做一些Linux 简单的汉化,你就会理解经常在论坛里问这方面问题的朋友的困难了。
总之,学桌面,不是学Linux 系统。
二、内核源代码学习。
跟unix操作系统一样都是用C语言编写。
去买正版的Linux 系统(不是很贵),会附带一张或者2 张Linux 源代码盘,Linux 程序员从这里开始,是起点也是终点。
三、系统管理
也就是管理Linux 系统环境:SHELL、图形、系统服务、硬件驱动等等
系统管理Linux 跟UNIX 类似(是看了些Unix 系统管理才这样说的),基本上都是通过命令----->配置文件----->脚本文件。
初学这建议从这里开始,不要一味去安装XWindows,这个X Windows 环境只要你尽量保持经常使用,相信学会是自然而然的事情.(感觉那真实没什么好学的,只要计算机应用在1 年以上的朋友,应该都能在下面操作吧)
四、应用开发
在Linux 应用上,Linux 确实跟它的竞争对手Windows 相比还有一定的差距。不过在高端的应用上,Linux 的市场是越来越大,如:
Linux 内核开发:
----PDA 个人掌上电脑;
----专用的网络设备;防火墙设备,VPN 设备等是用Linux 编写的,国产的,现在销售的十分不错;
----硬件驱动程序
Linux 网络编程:
----php 编程,建立动态站点;
----jsp 编程,
----perl,cgi 编程;
Linux 系统下数据库的开发:
----my sql 中小型数据库系统;
----oracle 数据库
----DB2 数据库,IBM 数据库系统
五、服务器领域
一说Linux,很多自然就想到了做服务器,但现在网络服务器方面,Linux 的市场占有率确实是第一的;Linux 服务器领域:
----代理服务器,使用的是Linux 的iptables 功能;
----电影服务器,使用的是Linux 的samba 服务的功能,文件和打印共享服务器
----游戏服务器,cs 服务器,在Linux 系统下使用cs 的Linux 版本建立的服务器
----客户存档服务器,采用的Linux 的ftp 服务器,常用的有:wu-ftp,pro-ftp 软件建立的
----www 服务器,使用的是Linux 下的apache 服务器软件
----ftp 服务器,下载服务器,使用的是Linux 下的wu-ftp,pro-ftp,vs-ftp 软件
----mail 服务器,采用的是Linux 下的sendmail,qmail 软件
----dns 服务器,使用的是Linux 下的bind 软件
----数据库服务器,使用的是mysql 或者oracle 软件
----防火墙,软件防火墙服务器,使用的是Linux 的iptables 功能建立的
----路由器,软路由器,使用的是Linux 下的routed 软件建立的
----拨号服务器,vpn 服务器等等
六、系统集成
范围太广,内容太多。相信IBM 等建立的Linux 研发中心主要就是做这个的。
结论1:首先要明白他的(1)设计理念是缘自Unix的“把任务分解成一小块一小块完成”,
建议你可以看这本电子书<<TheArtofUnixProgramming>>。是由EricStevenRaymond
写的,在google上很容易找到。这本书编重于编程,可以根据自已的兴趣选相应章节。我也没有全看完,也在研习中:-)
从
使用着手,自已装个系统。建议你从Redhat开始。现在Redhat的安装基本上都是学习MS的做法,很图形化了。只要按照图形的指示,很容易让一个系
统跑起来。我觉得初学者应该从这个入手,这样会快很多。因为Linux上的软件包都是由不同的开发团队做的,所以一般人不知道如果安装,redhat公司
做的事情就是把这些东西组织起来,然后把这些软
件卖给大家。因为他对这一行非常的精通,所以卖软件是其次,卖服务是主业。现在redhat已停止出个人版的了,改成专做企业的了,版本发行最*有些变动。现在最后一个版本好象是RH9.1。
装好系统后从使用应用软件开始,建议你先学(2)BASH SHELL 编程。因为你将业
想
往OraclDBA发展的话,精通SHELL可以在管理上给你带来很大的便利。同时对于理解Linux系统的启动和一些软件的安装很有帮助。比如说你可以
很清楚的了解Linux的整个启动过程,继而知道为什么要做那一步做了这个动作,对你将来处理实际碰到的问题至少可以明白知道问题出在哪。象很多我们日常
在Unix/Linux的管理和脚本都是分不开的,精通BASH是我们需要完成的第一步。我指的是精通,不是一般的了解,因为你只有精通了,用的时间越
长,你会发现script可以帮我们很方便的干很多事情。这里有一本电子书提供参考,是我至今见到写BASH最全,最好的一本。名叫
《AdvancedBashScriptingGuide》,你可以在www.linuxdoc.org里找到。
这里也提一下www.linuxdoc.org里
的文章是你学习Linux的良师益友,里面的很多文章都是非常不错的教材。主要分为几类:
1、FAQ2、HOWTO3、Guider4、man手册。其中的Guider有几本都是非常不错的入门书,你基本上可以不用去买本,美国出的印刷书都奇
贵,你把那里的几本书看完就差不多了。插一句,现在P2P很流行,我基本上都不买专业的书了,大部分都可以找到电子版的下载。里面的HOWTO主要讲的一
些具体的问题如何处理,门类也很多很杂,你可以根据自已现在的需求去看相应的文章。有空的时候可以多看看,这里面有些很好的solution,说不定什么
时候就可以用上。FAQ的文章不多,建议挑些重要的看下。对于man手册,一般系统上都有,不过那里应该是最*的,*时用的不多。
结论2:自已装个Redhat,学好shell。
你
用Unix/Linux时候,熟悉一个编辑器是必不可少的。用两种建议选择Emacs&VIM。Emacs比较大些,要花些空间,功能具强,以前
用过一段时间但没有深入下去,所以了解也是通过大师们文章中反复提到这个关键字和一些信息知道的,用好了功能具强,相当于一个MS下的IDE开发环
境;vim比较小些,功能也很强,是vi的增强版,我现在主要是用她来
编辑东西。vim支持多种语法,可以用来编脚本、C、Java,功能足够我
们用,学好需要一定的时间实践。因为我们用Unix/Linux,免不了有时要用console来控制,如果用惯了MS的编辑的话,你会非常痛苦,建议如
果以后想长时间使用unix/linux环境的话,学好一种这环境下的编辑器。vim也有windows的版本,开始用起来会觉得不方便,便很快你会发现
用VIM可以解决很多MS下编辑器不能解决的问题,不信你可以试试看。:-)
结论3:学会一种Unix/Linux下编辑器Emacs或Vim,
建议Vim(因为我在用,可以给你些指导)akane:(3)熟练使用VIM 文本编辑器学习Linux有几种常用的服务软件需要会用,1)apache(http)2)bind(dns)3)pro-ftp
(ftp)4)samba(fileshare)。
需要掌握这些软件的安装和简单配置,这些软件在网上都有很详细的文档。至少apache要会安装和管理,因为这是最基本的WEB服务,今天在哪里都能用
到。对于这些常用服务软件根据自已兴趣和环境要求做出选择,不一定要很精,但要会,建议精通。
结论4:(4)学会常用服务软件的安装和配置,
至
少掌握apache在Linux中还有很多小实用工具也需要掌握,这对你今后诊断问题和做相应的系统管理有很大帮助。如配置网卡地址的工具
ifconfig,查找文件的工具find,行编辑的命令sed、awk,网络状态检查netstat、ping、nc等。这些工具可以在实践中慢慢学
习。
结论5:在实践中学习一些(5)常用小工具,
如
ifconfig、netsta、troute等掌握一到两种Opensource的数据库,如现在流行的两种数据库MySQL和PostgreSQL。
MySQL用的人多些也比较简单,速度又快,做一些简单的数据库应用很多都用他做backenddatabaesserver。如果你自已想学
Oracle的话,可以直接学oracle。Oracle的东西多且全,基本上所用的功能都能在Oracle找到。但如果你想更深一层学习DB的话,你可
以考虑学PostgreSQL,他有源程序而且支持事务处理(trans-action)、子查询(sub-select),过程
(procedure)、自定义函数(function)、光标(cursor),支持了大部份SQL92和99的标准。他的文档也比较全。
结论6:建议掌握一种Opensource的DB,如MySQLakane:
(6)
学习使用oracle
数据库或mysql建议对TCP/IP协议层深入了解,我想你们上研究生时应该讲的很深。但我还是建议你再多复习相关的知识点,很多时候网络上的问题可以
通对你对TCP/IP的了解找到问题所在。建议你买那个steven的书叫(7)<<tcp/ip
详解>>,同时经常在身边准备好那几种状态切换的图,劳记在心,出问题的时候就可以知道是哪边网络不通,还是应用程度出了什么问题了。
结论7:建议再深入了解TCP/IPprotocol
建
议除了bash外,再学多一种在(8)Unix 环境下的RAD
脚本语言python。我也正在学python,通过这段时间的了解发现,这个东东有很多功能而且在开发上可以比c/c++提高至少5倍效率。有时候偏向
做系统管理,但掌握一本这种编程形的脚本对工作帮助很大,可以迅速的处理一些问题。BASH是侧重于人机交复的脚本,有些事情用BASH是无法完成的。
Python在很多Internet应用上有很多module&package,你可以很方便的使用已有的功能,比如说自已做个小的WEBSERVER,做测试工具,做数据库查询等等。
移植JFFS2文件系统
通过proc文件系统修改操作系统参数
分析romfs文件系统源代码
创建一个cramfs文件系统