1、Linux 基础
安装Linux操作系统
Linux文件系统
Linux常用命令
Linux启动过程详解
熟悉Linux服务能够独立安装Linux操作系统
能够熟练使用Linux系统的基本命令
认识Linux系统的常用服务安装Linux操作系统
Linux基本命令实践
设置Linux环境变量
定制Linux的服务 Shell 编程基础使用vi编辑文件
使用Emacs编辑文件
使用其他编辑器
2、Shell 编程基础
Shell简介
认识后台程序
Bash编程熟悉Linux系统下的编辑环境
熟悉Linux下的各种Shell
熟练进行shell编程熟悉vi基本操作
熟悉Emacs的基本操作
比较不同shell的区别
编写一个测试服务器是否连通的shell脚本程序
编写一个查看进程是否存在的shell脚本程序
编写一个带有循环语句的shell脚本程序
3、Linux 下的 C 编程基础
linux C语言环境概述
Gcc使用方法
Gdb调试技术
Autoconf
Automake
Makefile
代码优化 熟悉Linux系统下的开发环境
熟悉Gcc编译器
熟悉Makefile规则编写Hello,World程序
使用 make命令编译程序
编写带有一个循环的程序
调试一个有问题的程序
4、嵌入式系统开发基础
嵌入式系统概述
交叉编译
配置TFTP服务
配置NFS服务
下载Bootloader和内核
嵌入式Linux应用软件开发流程
熟悉嵌入式系统概念以及开发流程
建立嵌入式系统开发环境制作cross_gcc工具链
编译并下载U-boot
编译并下载Linux内核
编译并下载Linux应用程序
嵌入式系统移植
Linux内核代码
平台相关代码分析
ARM平台介绍
平台移植的关键技术
移植Linux内核到 ARM平台 了解移植的概念
能够移植Linux内核移植Linux2.6内核到 ARM9开发板
5、嵌入式 Linux 下串口通信
串行I/O的基本概念
嵌入式Linux应用软件开发流程
Linux系统的文件和设备
与文件相关的系统调用
配置超级终端和MiniCOM 能够熟悉进行串口通信
熟悉文件I/O 编写串口通信程序
编写多串口通信程序
6、嵌入式系统中多进程程序设计
Linux系统进程概述
嵌入式系统的进程特点
进程操作
守护进程
相关的系统调用了解Linux系统中进程的概念
能够编写多进程程序编写多进程程序
编写一个守护进程程序
sleep系统调用任务管理、同步与通信 Linux任务概述
任务调度
管道
信号
共享内存
任务管理 API 了解Linux系统任务管理机制
熟悉进程间通信的几种方式
熟悉嵌入式Linux中的任务间同步与通信
编写一个简单的管道程序实现文件传输
编写一个使用共享内存的程序
7、嵌入式系统中多线程程序设计
线程的基础知识
多线程编程方法
线程应用中的同步问题了解线程的概念
能够编写简单的多线程程序编写一个多线程程序
8、嵌入式 Linux 网络编程
网络基础知识
嵌入式Linux中TCP/IP网络结构
socket 编程
常用 API函数
分析Ping命令的实现
基本UDP套接口编程
许可证管理
PPP协议
GPRS 了解嵌入式Linux网络体系结构
能够进行嵌入式Linux环境下的socket 编程
熟悉UDP协议、PPP协议
熟悉GPRS 使用socket 编写代理服务器
使用socket 编写路由器
编写许可证服务器
指出TCP和UDP的优缺点
编写一个web服务器
编写一个运行在 ARM平台的网络播放器
9、GUI 程序开发
GUI基础
嵌入式系统GUI类型
编译QT
进行QT开发熟悉嵌入式系统常用的GUI
能够进行QT编程使用QT编写“Hello,World”程序
调试一个加入信号/槽的实例
通过重载QWidget 类方法处理事件
10、Linux 字符设备驱动程序
设备驱动程序基础知识
Linux系统的模块
字符设备驱动分析
fs_operation结构
加载驱动程序了解设备驱动程序的概念
了解Linux字符设备驱动程序结构
能够编写字符设备驱动程序编写Skull驱动
编写键盘驱动
编写I/O驱动
分析一个看门狗驱动程序
对比Linux2.6内核与2.4内核中字符设备驱动的不同
Linux 块设备驱动程序块设备驱动程序工作原理
典型的块设备驱动程序分析
块设备的读写请求队列了解Linux块设备驱动程序结构
能够编写简单的块设备驱动程序比较字符设备与块设备的异同
编写MMC卡驱动程序
分析一个文件系统
对比Linux2.6内核与2.4内核中块设备驱动的不同
11、文件系统
虚拟文件系统
文件系统的建立
ramfs内存文件系统
proc文件系统
devfs 文件系统
MTD技术简介
MTD块设备初始化
MTD块设备的读写操作了解Linux系统的文件系统
了解嵌入式Linux的文件系统
了解MTD技术
能够编写简单的文件系统为 ARM9开发板添加 MTD支持
移植JFFS2文件系统
通过proc文件系统修改操作系统参数
分析romfs 文件系统源代码
创建一个cramfs 文件系统
一.为什么要学linux?
当然最重要是爱好和兴趣!如果你这种必要学,或者根本不喜欢,请不要浪费时间,你学也学不好!
二.起步
你应该为自己创造一个学习linux的环境--在电脑上装一个linux或unix
如何选择版本:北美用redhat,欧洲用SuSE,桌面mandrake较多,而debian是技术最先进的linux开发人员中用debian的最多,其次是redhat,从全球linux各应用领域市场份额来看无疑redhat是最多的,此外还有很多出名的发行版本,不再列举。
对于初学linux的人来说,我建议是使用redhat,原因如下:
1)现在很多书都是以redhat为例讲的,为了与书本协调一致
2)周围的人都用redhat,交流比较方便
3)redhat应用范围广,有典型性和代表性
4)它易于使用和安装,我们没有必要把时间浪费在“装系统”上而应集中精力学习最有用的东西。
【注】现在觉得RH很死板,AS,ES等用在服务器上或许不错,Personal desktop用mandrake,debian,suse都不错,笔者现在用Mandrake,因为她长得漂亮:)
如果你并不打算深入学习linux,而是有诸如适应北京市政府办公平台迁移到linux上这种需要,那么中软,红旗等中文linux是不错的选择
我强烈建议:自己亲自动手把linux装到你的硬盘上,你必须学会独立安装linux系统的技能,对于现在的版本来说,其实跟装WinXP一样简单
从此现在开始,请不要以windows的工作方式来考虑问题,应该尝试挖掘linux身上的“天才unix”的气质。
三.进阶
掌握至少50个以上的常用命令
理解shell管道"|",文件流重定向">"及追加">>"等
熟悉Gnome/KDE等X-windows桌面环境操作
掌握.tgz.rpm.biz等软件包的常用安装方法
学习添加外设,安装设备驱动程序(比如modem)
熟悉Grub/Lilo引导器及简单的修复操作
熟悉系统固有目录的名称及公用
学会用mount命令访问其他文件系统
了解vi,gcc,gdb等常用编辑器,编译器,调试器
学习linux环境下的简单组网
建议:买一本不需要太厚的linux教材,大致可以满足要求(现在的书越来越多了,还带很多图,我当时可没这么多书)
四.高级应用
澄清一些概念:linux的普通操作与真正的系统管理不能相提并论,后者需要很多知识
1.英语
即使你不学linux,我也强烈建议你学好英文[U.S.english]。因为实质上计算机语言就是英文和字符,所谓的多国语言只是外部包装。你必须能无障碍的阅读大量的英文技术文档在搜索引擎找到的英文网站和网页中熟练的检索最好能有用英文直接交流的能力,摆脱了这个障碍,你的学习和理解速度就能快很多,你就有机会拉开和别人的差距。
2.shell[sed/awk]
shell是命令解释器,是内核与用户界面交流通道,shell写的小脚本有点类似于win下的.bat但shell比.bat强大的多,shell不只是解释命令,更是一种编程语言,有时候几百行的c用shell几十行就能代替完成工作,因为shell的工作方式建立在系统已有的众多应用程序之上
这也是CS中的一个重要思想。此外,shell可以实现工作自动化,这个概念也比较重要sed,awk用来处理文本,历来很常用。
3.Perl/PHP
漂亮的脚本, CGI的首选,比ASP好,应用面很广
4.C\C++
C、C++是linux/unix的核心语言,系统代码都是C写的
5.ASM
系统底层及内核,硬件,设备驱动程序,嵌入式开发都需要。//走核心路线的话,c\c++,asm最重要
6.Java,Python,Tcl,XML
五、系统管理篇
在熟悉linux的基础上还需要掌握至少一种unix。我首推Solaris,其次是FreeBSD比如运营级系统一般是Solaris+Oracle/DB2之类的学习apache、ssh、sendmail/Qmail、proftp/vsftp、Samba、Squid、MySQL/PostgreSQL/Oracle、Bind等各种应用服务器的构架及电子商务的应用熟悉TCP/IP协议族,学习诸如apache+php+proftp+mysql+quota的实现以及大型局域网,分布式集群等各种企业级应用解决方案熟悉多用户管理,数据库管理,文件系统,逻辑存储管理,日志分析,备份与灾难数据修复系统补丁,内核升级,以及在此基础上的防火墙构架等以保障系统安全在内的各种系统管理技能。
我觉得,如果在此基础上再掌握路由/交换设备便是一个不错的系统管理员
各种基于linux的解决方案可参考相关书籍和文献,必要时用google或各大linux站点站内搜索引擎寻找最新文档,以避免错误和漏洞有几本技术大全和技术内幕我认为都是这方面不错的书
六、深入学习linux
我个人理解的读linux内核需要的基础:在此之前,希望先把应用层的东西学一下,那样会比较好理解
1.C
如果学过潭浩强的大学教科书(除了编几个数学模型好像什么也做不了的那种),建议再看一下《The C Programming Language》Second Edition这本圣经(如果想学缓冲区溢出,这点C的功力可能是不够的,还有<C陷阱与缺陷>,<C专家编程>,<C\C++深层探索>,反正经典书看多了是没有坏处的)
2.asm (AT&T语法,保护模式)
保护模式下的比较复杂,基本上每本讲内核的书都会有介绍有80x86 Intel语法的基础就行,
有兴趣可以看看Intel的官方网站
3.数据结构(离散数学)
计算机专业的核心课程,重要性我就不说了
4.操作系统原理
看懂这个再去读linux吧
5.微机原理/组成原理(数字电路)
底层直接和硬件打交道,所以这个也要
6.了解linux/unix
我想至少你要会操作吧,了解unix的API
7.软件工程/编译原理
这方面的经典书去www.china-pub.com可以搜到很多我觉得APUE这种书不适合初学者,还是先看看UPE
选择适合自己的linux发行版
谈到linux的发行版本,太多了,可能谁也不能给出一个准确的数字,但是有一点是可以肯定的,linux正在变得越来越流行, 面对这么多的Linux 发行版,打算从其他系统转到linux系统来的初学者可能会感到困惑,即便是忠实的 Linux 用户也没有时间和精力去挨个尝试,因此初学者在学习linux的之前,需要有一个明确的方向,选择一个适合自己的系统开始学习linux至关重要!下面我们就分类介绍。
1.1 初学者入门首选-redhat系列
在学习redhat系列linux之前,首先要了解以下redhat linux各个发行版本之间的关系。
1.Red Hat Linux
Red Hat Linux是redhat最早发行的个人版本的linux, 其1.0版本于1994年11月3日发行。虽然其历史不及其它linux发行版本悠久,但比起很多的Linux发行套件,Red Hat 的历史悠久得多。自从Red Hat 9.0版本发布后,RedHat 公司就不再开发桌面版的 Linux发行套件,Red Hat Linux停止了开发,而将全部力量集中在服务器版的开发上,也就是 Red Hat Enterprise Linux 版。2004年4月30日,Red Hat公司正式停止对Red Hat 9.0版本的支持,标志著Red Hat Linux的正式完结。原本的桌面版Red Hat Linux发行套件则与来自开源社区的 Fedora进行合并,成为 Fedora Core 发行版本。
目前Red Hat分为两个系列:由Red Hat公司提供收费技术支持和更新的Red Hat Enterprise Linux,以及由社区开发的免费的Fedora Core。
2.Fedora Core
Fedora Core(缩写为FC)被红帽公司定位为新技术的实验场地,许多新的技术都会在 FC 中检验,如果稳定的话红帽公司则会考虑加入 Red Hat Enterprise Linux 中。
Fedora Core 1发布于2003年年末,而FC的定位便是桌面用户。FC提供了最新的软件包,同时,它的版本更新周期也非常短,仅6个月。由于版本更新频繁,性能和稳定性得不到保证,因此,一般在服务器上不推荐采用Fedora Core。
其实可以这么认为,Fedora就是Red Hat发行Red Hat企业版linux的一个实验版本,以用户做测试,为Red Hat企业版发布奠定基础。
3.Red Hat Enterprise Linux
Red Hat Enterprise Linux(缩写为RHEL,Red Hat的企业版)。Red Hat现在主要做服务器版的linux开发,在版本上注重了性能和稳定性以及对硬件的支持。 由于企业版操作系统的开发周期较长,注重性能、稳定性和服务端软件支持,因此版本更新相对较缓慢。
RedHat Enterprise Linux又分为4个版本 Advanced Server(AS)、ES Workstation(WS)、Desktop,它们的差别不太大,只是功能方面的差别。
4.Centos
CentOS全名为“社区企业操作系统”(Community Enterprise Operating System)
CentOS产生的背景:
Redhat发布Redhat 9。0后,不再开发redhat 10,11……,全面转向Redhat enterprise linux(简写为rhel)的开发,和以往不同的是,新的redhat企业版要求用户先购买lisence,redhat同时承诺确保产品的稳定性,安全性。rhel二进制代码不再提供下载,而是作为redhat 服务的一部分,但源代码依然是开放的。在这种情况下,出现了centos、whitebox、dao 等等一批open source的企业版本,其中以centos最为活跃。
下面讲述centos是如何制作产生的:
CentOS社区将Redhat的网站上的所有源代码下载下来,进行重新编译。由于AS/ES/WS是商业产品,因此,必须将所有Redhat的Logo和标识改成自己的CentOS标识。比如将AS4.0原版的SRPM源码编译后,换上Centos社区的logo,这样就成为了CentOS 4.0。Redhat Enterprise Linux AS4 Update1的源码编译后,就成为了CentOS4.1。AS4 Update2的源码编译后,就成为了CentOS4.2等等。CentOS就是这样产生的。
因此,可以说CentOS就是Redhat的AS/ES/WS的免费版本,使用centos可以获得与redhat 企业级linux一样的功能和性能。同时centos还提供免费的长期升级和更新服务。因此, 在众多的RHEL的克隆版本中,CentOS是很出众很优秀的。
虽然说centos是RHEL的克隆,但并不是一模一样,所说的克隆是具有100%的互换性。对于centos其实不尽相同,RHEL的软件在CentOS上面不能保证100%的正常工作。
在了解了Redhat系列各个版本的差异后。其实我们就找到了为何选择Redhat linux作为初学者入门学习的理由了。
首先:在国内,乃至是全世界的Linux用户最熟悉、最耳闻能详的发行版肯定就是Red Hat了。因为Red Hat是linux界的“老大”,美国Red Hat公司发布的Red Hat linux是商业上运作最成功的一个Linux发行套件,因此Red Hat公司发行的linux值得信任, Red Hat linux的功能和性能也毋庸置疑。
其次:Red hat现在拥有庞大的网络用户群体,网络linux资源基本90%都是基于Redhat linux的,如果您在学习过程中遇到任何问题,随便搜索网络,就有成千上万的答案展示在你面前。
第三: Red Hat linux系列版本相互补充,相得益彰:如果你第一次接触linux,那么建议你先安装Fedora Core, Fedora Core安装简单,对硬件支持很好,界面也很华丽,同时也可以体验Redhat linux的最新功能;如果你对linux有一定的了解,需要深入学习,建议你使用CENTOS系统;如果你是在做linux企业级应用,建议你使用RHEL版本。
最后: redhat应用范围广,具有典型性和代表性,很多系统(例如红旗redflag,中标linux,oracle发布的Enterprise Linux )都是以Red Hat linux为基准的,因而,可以说学会了Red Hat linux,就能触类旁通,其它类似的linux系统也能很快掌握; 现在周围学习linux的一般也都是以redhat linux为主,这样交流方便,学习中出现问题,更容易得到解决。同时redhat linux的安装和使用也是最简单的,因此,基本上不会在”装系统”上浪费过多时间。
1.2 企业级应用首选-suse linux
企业级的应用追求的是可靠性和稳定性,这就要求构建企业级应用的系统平台具有高可靠性和高稳定性。企业级linux的发行版本就是解决的这个问题。
SUSE是德国最著名的Linux发行版,在全世界范围中也享有很高的声誉。2003年11月4日,Novell公司对外宣布将收购SuSE。2004年1月该收购顺利完成,Novell同时将SuSE正式命名为SuSE Linux。 Novell公司收购suse,加速了suse linux的发展, suse linux无论在桌面市场还是服务器市场都更加专业化,据不完全统计,suse linux现在欧洲linux市场占有将近80%的份额,大部分关键性应用都是建立在suse linux下。由于suse 进入中国时间较短,同时加上suse在中国的营销模式短时间不能被国内接受,因此现在suse在中国的市场份额还不是很大,但是这些并不影响suse linux高可靠与稳定性的事实,随着suse的发展,相信suse linux在中国的应用会越来越多。
1.3 游戏娱乐首选-Ubuntu Linux
说到linux桌面市场, Ubuntu Linux几乎占据了桌面linux的半壁江山, Ubuntu Linux主打linux桌面之最,界面美观, 简易而不失华丽,如果想在linux下进行娱乐休闲,Ubuntu Linux绝对是首选。
Ubuntu 的安装非常的人性化,只须按照提示一步一步进行,安装与Windows一样简单!并且,Ubuntu被誉为对硬件支持最好最全面的Linux 发行版之一,许多在其他发行版上无法使用,或者在默认配置时无法使用的硬件,在Ubuntu上都能轻松搞定。因此你可以像安装windows一样轻松的安装Ubuntu。尽情体验Ubuntu linux带来的乐趣。
1.4 linux作为服务器是发展趋势
在上面的章节中主要介绍了几种最常见的linux发行版本,其实linux的发行版本还有很多很多,比较常见的还有Debian GNU/Linux, Mandriva, Gentoo,Slackware, Knoppix,MEPIS, Xandros,国产的红旗redflag,中标linux等等,这里不再一 一介绍,其实纵观linux的各个发行版,linux发行版本无非是朝着这两个方面而来,一是服务器市场,而是桌面市场。
以Ubuntu Linux为代表的linux发行版走的是桌面市场路线,虽然它们给用户带来很多惊喜,更新也很快,但是由于桌面市场有着windows这样强劲的对手,linux桌面发展举步维艰。
以redhat系列版本为代表的linux发行版现在主要面向企业级linux的服务器市场,重点开发linux的企业版本,suse linux同样主要力量也集中在开发企业级linux上面,其它的例如国产redhat flag,中标linux等都重点投入在了linux服务器市场。linux两大发布厂商现在都走了linux服务器市场的路线,可见linux作为企业级服务器有着巨大的发展前途,据权威部门统计,linux在服务器市场的占有率每年都在持续上升。
其实很多linux的应用都是针对linux服务器的,本书的讲述也是主要针对linux在服务器下的各种应用展开的。
二、 养成良好的linux操作习惯
当你进入linux的学习之后,请不要用windows的工作方式来思考问题,因为它们之间确实有很大的不同,比如它们之间的内存管理机制,进程运行机制等都有很大不同,这些异同点将在下面章节陆续讲述,因此,抛开windows那种思维,用全新的理念尝试去挖掘linux身上特有的潜质,对初学者至关重要。
2.1 一定要习惯命令行方式
Linux是一个命令行组成的操作系统,精髓在命令行,无论图形界面发展到什么水平,命令行方式的操作永远是不会变的,Linux命令有许多强大的功能:从简单的磁盘操作、文件存取、到进行复杂的多媒体图象和流媒体文件的制作都离不开命令行。虽然linux也有桌面系统,但是X-window也只是运行在命令行模式下的一个应用程序。
因此,可以这么说,命令是学习linux系统的基础,学习linux,很大程度上就是学习命令,很多linux高手其实都是玩儿命令很熟的人。
也许对于刚刚从windows系统进入linux学习的初学者来说,立刻进入枯燥的命令学习,实在太难,但是你一旦学会就爱不释手。因为它的功能实在太强大了。您未来的学习之路也将会以指数增加的方式增长。
2.2 理论结合实践
有很多初学者都会遇到这么一个问题,说到系统的每个命令,都很熟悉,但是在系统出现故障的时候,面对出现问题的linux系统无从下手了。不知道在什么时候用什么命令去检查系统,这是很多linux新手最无奈的事情了。说到底,就是学习的理论没有很好的与系统实际操作相结合。
很多linux知识,例如每个命令的参数含义,在书本上说的很清楚,看起来也很容易理解,但是一旦组合起来使用,却并不是那么容易,没有多次的动手练习,其中的技巧是无法掌握的。
人类大脑不像计算机的硬盘一样,除非硬盘坏掉或者硬盘被格式化,否则储存的资料将永远而且时刻的记忆在硬盘中。而在人类记忆的曲线中,必须要不断的重复练习才会将一件事情记得比较熟。同样的,学习 Linux 也一样,如果无法经常学习的话,学了后面的,忘记了前面的;还有些linux初学者也学了很多linux知识,但是由于长期不用,导致学过的东西在很短的时间内又忘记了,久而久之,失去了学习的信心。
可见,增加自己Linux 的实战技能,只有勤于动手,勇于实践,这也是学好linux的根本。
2.3 学会使用linux联机帮助
各个Linux的发行版本的技术支持时间都较短,这对于Linux初学者来说往往是不够的, 其实当安装了一个完整的Linux系统后其中已经包含了一个强大的帮助,只是可能你还没有发现和使用它们的技巧。例如,对于一个linux tar命令的使用,你不是很熟悉,那么只要你在命令行输入man tar, 就会得到tar的详细说明和用法;
主流的linux发行版都自带了非常详细的帮助文档,包括使用说明和FAQ,从系统的安装到系统的维护,再到系统安全,针对不同层次人群的详尽文档。仔细阅读文档后60%的问题都可在这里得到解决。
2.4 学会独立思考问题,独立解决问题
遇到问题,首先想到的应该是如何自己去解决这个问题,解决方式很多,看书查资料,网络搜索引擎,技术论坛等等,通过这几种方式,90%的问题都能得到解决,通过这种方式一方面锻炼了自己独立解决问题的能力。另一方面技术上也能得到快速提高。
如果通过如上方式实在解决不了的话,可以向人询问,得到答案后要考虑为何这么做,然后做笔记记录解决过程。最忌讳的方式是只要遇到问题,就去问人,虽然这样可能会很快解决问题,但是长久下去遇到问题就会依赖别人,技术上也不会进步。
2.5 学习专业英语
如果你想深入学习Linux,一定要尝试去看英文文档。因为,技术性的东西写的最好的,最全面的文档都是英语写的,最先发布的高新技术也都是用英语写的。即便是非英语国家的人发布技术文档,也都首先翻译成英语在国际学术杂志和网络上发表。安装一个新的软件时先看README,再看INSTALL,然后看FAQ,最后才动手安装,这样遇到问题就知道为什么。因此,学习一点专业的英语是很有必要的。
2.6 Linux学习基本步骤
到这里,我们总结一下linux的学习路线图,给各位初学者作为参考。
初级阶段:
1. 命令是必须要学的,linux常用的命令大概在80个左右,这些常用命令一定要熟练掌握。
2. 掌握linux软件包的常用安装方法,例如源码安装,rpm方式安装等等。
3. 学习安装设备驱动程序(比如网卡、显卡驱动)
4. 熟悉Grub/Lilo引导程序及简单的修复操作。
5. 熟悉Linux文件系统和目录结构以及linux基本运行原理。
6. 掌握vi,gcc,gdb等常用编辑器,编译器,调试器。
7. 理解shell别名、管道、I/O重定向、输入和输出以及shell简单脚本编程。
8. 学习Linux环境下的网络基本组建。
高级阶段:
1:尝试阅读linux内核源码:
这需要具有一定的C、C++语言基础,因为C、C++是linux/unix的核心语言,系统代码都是C写的。
2:尝试编译安装和调试自己的linux内核:
在阅读源码了解了linux底层的运行原理后,完全可以编译一个适合自己的linux系统来。
3:深入学习shell, perl,cgi等脚本语言:
这些脚本语言在linux下非常强大,它们能完成你想做的任何事情,熟练掌握这些语言,可以让你在linux系统下游刃有余,如鱼得水。
4:构建企业级linux高可用集群系统:
linux下有很多开源免费的集群软件,利用这些免费的集群软件完全可以构建出与商业unix系统想媲美的集群系统来。
三、用虚拟机软件学习linux
3.1 什么是虚拟机软件
虚拟机软件可以在一台电脑上模拟出来若干台PC电脑,每台PC可以运行单独的操作系统而互不干扰,可以实现一台电脑“同时”运行几个操作系统,还可以将这几个操作系统连成一个网络。
图1:安装了3台虚拟机的windows系统
比如图1中,是在一台电脑上安装了Windows 2000 Server,再在Win2000 server上安装虚拟机软件VMWare,利用VMWare模拟出来3台PC,在这3台PC上分别运行RedHat Linux、Win2000和Solaris 9 for x86操作系统。这4个操作系统同时在一台电脑上运行,互不干扰,并且同在一个局域网内。
听了上面的基本介绍,你可能知道虚拟机软件到底是做什么用的了。那么好,我们继续做更深入的介绍。
目前PC上的虚拟机软件最常用的有下述两个:
VMWare 网址为:http://www.vmware.com
Virtual PC 网址为:http://www.connectix.com
3.2 使用虚拟机软件的好处
1、如果要在一台电脑上安装linux和windows系统,不用虚拟机的话,有两个办法:一是装多个硬盘,每个硬盘装一个操作系统。这个方法比较昂贵。二是在一个硬盘上装双系统。这个方法不够安全,因为系统盘的MBR是操作系统的必争之地,windows更是霸道,每次重新安装系统都要重写系统的MBR,这样的话搞不好会几个操作系统同归于尽。而使用虚拟机软件既省钱又安全,因此,对于新手来说,利用虚拟机学习linux简直是再好不过了。
2、在虚拟机上安装linux系统,你不用担心会格式化掉自己的硬盘,你甚至可以随意的对虚拟系统进行任何的设置和更改操作,你可以格式化虚拟系统硬盘,重新分区虚拟系统硬盘等等, 因为虚拟机是你真实系统上运行的软件,对虚拟机系统的任何操作都是对软件的操作。
3、利用虚拟机模拟出来的linux系统和真实的linux系统是一摸一样的,现在各个公司专门的linux服务器是不会让新手随意去动的,而供测试的linux服务器一般又很紧缺,在自己电脑上安装虚拟linux系统,可以随意的学习测试,而不受任何环境影响。
3.3 虚拟机的运行环境和硬件需求
1:运行环境
VMWare可运行在Windows(WinNT以上)和Linux操作系统上。
Virtaul PC可运行在Windows(Win98以上)和MacOS上。
注:运行虚拟机软件的操作系统叫Host OS,在虚拟机里运行的操作系统叫Guest OS。
2:硬件需求
虚拟机是将两台以上电脑任务集成到一台电脑上来,因此对硬件要求比较高,主要是内存,硬盘和cpu;内存要足够大,因为每个虚拟机都会占用一定的内存资源,内存的总大小等于各个虚拟系统的总和。可喜的是,现在内存已经很便宜了,内存就不是问题了。同样,硬盘空间也是每个虚拟机都要占用的,cpu现在都到了多核阶段,也不是问题。
3.4 虚拟机的安装与使用
1.VMware虚拟机概述
上面章节讲到,虚拟机软件有VMWare和Virtual PC,它们各有优缺点,其中VMWare在全球占领了80%的市场份额,因此我们也主要讲述VMWare的安装与使用。
VMware是提供一套虚拟机解决方案的软件,主要产品分为如下3个:
(1)VMware-ESX-Server: 这个版本并不需要操作系统的支持。它本身就是一个操作系统,用来管理硬件资源。所有的系统都安装在它的上面。带有远程web管理和客户端管理功能。
(2)VMware-GSX-Server: 这个版本就要安装在一个操作系统下了,这个操作系统叫做HOST OS。 这个HOST OS可以是Windows 2000 Server以上的Windows系统或者是Linux(官方支持列表中只有RH,SUSE,Mandrake很少的几种),和VMware-ESX-Server一样带有远程web管理和客户端管理功能。
(3)VMware-WorkStation: 这个版本和VMware-GSX-Server版本的机构是一样的。也是要安装在一个操作系统下,对操作系统的要求也是Windows 2000以上或者Linux。和Vmware的区别就是没有web远程管理和客户端管理。
Vmware GSX Server不支持虚拟机双CPU,而且已经停止开发新版本, Vmware Server 是Vmware 公司决定将GSX Server免费后,重修代码后发布的, 目前有版本更新。因此我们选择免费的GSX Server作为讲述的版本。
2.虚拟机软件的安装
我们在windows下安装windows版本的VMware server,然后在VMware server上安装linux操作系统。虚拟机软件的安装很简单,只需按照windows常规方法安装即可完成,这里不在讲述。
3.创建一个虚拟机系统
虚拟机软件安装完毕,双击桌面上的 VMware Server 图标以启动应用程序:
(1) 按CTRL-N创建一个新虚拟机,弹出新建虚拟机向导,如图2所示界面,点击下一步:
图2
(2)选择虚拟机配置,如图3所示,这里选择“Custom”,点击下一步:
图3
(3) 选择客户机操作系统,如图4所示,这里选择“Linux”,版本选择“Red Hat Enterprise Linux 4”,点击下一步:
图4
(4) 给虚拟机命名,如图5所示,虚拟机名称设为Red Hat Enterprise Linux 4,虚拟机路径设为“C:\Virtual Machines\Red Hat Enterprise Linux 4”,点击下一步:
图5
(5) 设置访问权限,如图6所示,去掉“Make this virtual machine private”。 这样可以保证系统安装完毕,虚拟机linux系统可以和windows系统互通。点击下一步:
图6
(6) 启动/关闭选项,如图7所示,虚拟机帐户,选择“User that powers on the virtual machine”,点击下一步:
图7
(7) 虚拟机处理器配置,如图8所示,这里选择一个处理器。 如果你有多个处理器可以选择多个,点击下一步:
图8
(8) 设置虚拟机内存大小,如图9所示,可以通过滑竿选择给虚拟机系统分配的内存大小,一般选择是windows系统内存的一半。这里选择800M。点击下一步:
图9
(9) 选择虚拟机网络连接类型,如图10所示,这里选择“Use bridged networking”网桥方式,点击下一步:
图10
(10) 选择 I/O 适配器类型,如图11所示,这里选择“LSI Logic”,点击下一步:
图11
(11) 选择虚拟磁盘,如图12所示,选择“Create a new virtual disk”,点击下一步:
图12
(12) 选择磁盘类型,如图13所示,选择“SCSI (Recommended)”,点击下一步:
图13
(13) 指定虚拟机磁盘容量,如图14所示,磁盘容量,可根据自己的需求选择大小,安装Linux,一般5G即可满足需求,这里输入“25GB”,选择“Split disk into 2 GB files”,点击下一步:
图14
(14) 指定磁盘文件路径,如图15所示,可以点击“Browse”指定磁盘文件的路径,这里的路径为“F:\Red Hat Enterprise Linux 4\Red Hat Enterprise Linux 4.vmdk”,然后点击完成,即可完成虚拟机的创建。
图15
(15) 虚拟机创建完毕后,出现虚拟机控制台界面,如图16所示,这样我们就创建了一个 linux虚拟机系统,接下来就需要在虚拟机下安装linux系统了。
图16
(16) 点击图16虚拟机控制台中的“Edit virtual machine settings”选项,即可到“virtual machine settings”界面,如图17所示:
在这个界面中,我们可以添加虚拟机各种资源、编辑虚拟机的各种属性,例如修改虚拟机内存大小、编辑网卡连接方式、添加一个虚拟磁盘、指定光盘的引导方式等。还可以删除虚拟机中的各种资源。
图17
(17) 点击图18中“add”按钮,出现图18所示界面:在这个界面中,可以给虚拟机添加各种硬件资源,例如,硬盘、光驱、软驱、网卡、声卡等设备。
图18
到此为止,虚拟机的安装和基本配置已经介绍完毕,接下来开始讲述在虚拟机上安装linux的方法。
4.虚拟机上linux安装方式
在虚拟机上安装linux系统,常用的方法有两种:光驱安装和iso镜像文件安装。
(1) 光驱安装方式
在 VMware Server控制台上,双击右面板上的 CD-ROM 设备,然后选择Use physical drive,location选择host,下面下拉框选择Auto detect即可。如图19所示,最后,Linux系统光盘放入光驱,单击“Start this virtual machine”即可进入Linux安装界面。
(2) iso文件安装方式
在 VMware Server 控制台上,双击右面板上的 CD-ROM 设备,然后选择Use ISO image,然后指定iso文件路径,如图20所示,最后,单击Start this virtual machine即可进入Linux安装界面。
图19
图20
Linux系统的安装,我们将在在后面文章中讲述,这里不在多说。
四、linux学习资源
4.1 网络资源,搜索引擎,论坛
Linux的开源特性决定了linux知识的开放性和充足性。当今,linux非常流行,linux学习资源也非常之多,书店到处可见linux方面的书籍,选择一本适合自己的慢慢去学习,再好不过。
除了书本的知识,网络里也有无限的linux学习资源,各大linux技术门户,linux社区论坛,都是学习linux的好地方;在这里,有一批无私奉献的linux狂热爱好者,他们把自己的学习经验和学习总结无偿的发布出来;他们每天在linux论坛的各个角落热情的回答广大网友提出的问题;他们不求回报,因为他们热爱技术,热爱linux。
遇到学习问题,或者要查找某些linux资料,搜索引擎绝对是第一选择,例如google.cn和baidu.com,99%的技术资料都能在这里搜到。查找linux资料,不要错过这两个优秀的搜索引擎。
4.2 有本书在身边
网络中有很多linux学习资源,丰富的学习资源,虽然给我们学习提供了很好的便捷性,但是也造成了我们学习的盲目性,学习资源的丰富性,引出的另一个问题是资源的混杂,刚入门的新手感觉无从下手,可能今天看了一点内存管理的资料,明天学习了一点磁盘管理的资料,并且总是感觉自己理解了也学会了,但是就是无法灵活的掌握,究其原因,就是没有系统的学习linux。
因此,选择一本好书在自己身边是必须的,一本好书应该是由浅入深,有点及线,有线及面的介绍知识,选择一本好书,同时结合网络资源进行循序渐进的学习,此时,你的学习就不会再有空洞感,进步也会飞快。你会感觉学习linux是一件很快乐的事情。
五、linux的应用领域
很多新手都有一个很疑惑的问题:“我学习linux系统,能在上面干什么呢,或者说linux系统具体能做什么”,有这样的疑问,也很正常,但是随着对linux了解的加深,这些疑问就会慢慢消除,下面具体讲述下linux操作系统的应用领域(也就是linux到底是干啥的)。
1:服务器领域
现在的服务器市场以linux、unix、windows三分天下, linux可谓后起之秀,从产生发展到现在,在服务器应用领域节节攀升,并且每年增长势头迅猛。
Linux作为企业级服务器应用广泛,利用Linux系统可以使企业构架WWW服务器、代理服务器、邮件服务器、DNS服务器、透明网关、路由器等等,不但给企业降低了运营成本,同时获得了linux系统带来的高稳定性和高可靠性。
随着linux在服务器领域的广泛应用,这几年来,linux已经悄悄进入政府、教育、银行、石油等行业,同时各大unix厂商也推出在unix平台支持linux操作系统,例如IBM AIX。这一切表明,linux在服务器市场前景光明,相信在不久的将来,linux会渗透到社会各个领域。
2.嵌入式Linux系统
由于 Linux系统开放源码,功能强大、可靠、灵活而且具有伸缩性,再加上它广泛支持大量的微处理器体系结构、硬件设备、图形支持和通信协议,因此,在嵌入式应用的领域里,从因特网设备到专用的控制系统,Linux 操作系统的前景都很光明的。
例如,诺基亚和摩托罗拉公司都推出了linux平台的手机。
Linux 的应用:
要谈到 Linux 如何学习之前,我们得就 Linux 目前的一般应用来说明一下,才好理解您需要什么样的学习方式!桌上型计算机:
所谓的桌上型计算机就是一般使用者在屏幕前面工作时候的常见的操作系统了!我们称之为『Desktop』系统,就是简称的桌上型计算机了!说到桌上型计算机就不能不提一下 X-Window System 。由前一章提到的 Unix 与 Linux 的历史中,我们知道在 1986 年美美的窗口画面就已经在 Unix 上面出现过了,那个时候窗口画面被简称为 X 系统,而后来到了 1994 年的时候正式被整合在 Linux 里头!至于微软的 Windows 则是在 1995 年才出现!所谓的 X Window System 就是以 XFree86 这个计划释出的 X11 这个窗口软件为管理显示核心的一套窗口接口的软件,我们常常简称他为图形使用者接口( Graphical User Interface )。这个 XFree86 只是 Linux 核心上面的一套软件而已,他主要的工作就是管理图形接口输出的时候,几乎所有显示相关的硬件的控制,例如显示卡、屏幕、键盘、鼠标、等等,都是 XFree86 管理的!或者,我们可以称 XFree86 为 X-Window System 的服务器,简称为 X Server 。至于我们所看到的美美的窗口画面,则是使用 X Server 提供的显示相关硬件的功能,来达到图形显示的『窗口管理员( Window Mananger, WM )』所发挥的能力啦!这也就是说, WM 是挂在 X Server 上面来运作的一套显示窗口接口的软件,例如我们常见的 KDE, GNOME 等等都是 WM。那么这个桌上型计算机平时都在干些什么?简单的说,桌上型计算机的日常工作是:上网浏览;文书处理;网络接口之公文处理系统;办公室软件( Office Software )处理数据;收发电子邮件;大致上就是这些工作啰!在这些工作中, Linux 有美丽的图形接口 X Window System 提供良好的使用者接口 ( GUI ) ,此外,目前发展中的 WM 也都具有中文化的功能!至于 Office 软件则有类似 Open Office 的软件支持,所以,基本上在桌上型计算机型态的使用中, Linux 已经足以应付大部分的上班族群的工作了。工作站计算机:
工作站计算机与桌上型计算机不太一样的地方,在于工作站通常得要应付比较重要的公事应用,例如工程界流体力学的数值模式运算、娱乐事业的特效功能处理、软件开发者的工作平台等等。Linux 上面有强大的运算能力,以及支持度相当广泛的 GCC 编译软件,因此在工作站当中也是相当良好的一个操作系统选择。例如我们研究室目前就要将 Sun Unix 上面执行的大型模式移转到 Linux 上面,据美国环保署内部人员的测试,发现 Linux 不但比较便宜 ( X86 系统嘛! )而且速度还比较快呢!网络服务器:
承袭了 Unix 的良好传统, Linux 上面的网络功能特别的强大!此外,由于 GNU 计划,让 Linux 上面的服务器软件几乎都是免费的!因此,做为一部网络服务器,例如 WWW, Mail Server, File Server, FTP Server 等等, Linux 绝对是上上之选!嵌入式系统:
近年来电子相关产业相当的蓬勃发展,其中,小型微电脑的发展甚为重要!例如家电产品、PDA、以及其它微型的计算机配备。这些计算机配备通常是直接嵌入于产品当中的,例如 PDA 本身就是一个小型的计算机操作系统啦!这些系统我们就称为嵌入式系统。而要让这些嵌入式系统能够动作,自然就需要制作一套简单的操作系统啰,这个时候,可修改核心让功能变简单的 Linux 则是很好的选择。因此,近年来有相当多的嵌入式系统选择 Linux 做为发展的平台呢!上面这些就是目前常见的几个 Linux 的应用方向。那么根据上面的应用,你觉得应该要怎样学习 Linux 呢?
从『头』学起
其实,不论学什么系统,『从头学起』是很重要的!还记得你刚刚接触微软的 Windows 都在干什么?还不就是由档案总管学起,然后慢慢的完到控制台、玩到桌面管理,然后还去学办公室软件,我想,你总该不会直接就套过这一段学习的历程吧!?那么 Linux 的学习其实也差不多,就是要从头慢慢的学起啦!不能够还不会走路之前就想要学飞了吧! ^_^!
常常有些朋友会写信来问鸟哥一些问题,不过,信件中大多数的问题都是很基础的!例如:『为什么我的使用者个人网页显示我没有权限进入?』、『为什么我下达一个指令的时候,系统告诉我找不到该指令?』、『我要如何限制使用者的权限』等等的问题,这些问题其实都不是很难的,只要了解了 Linux 的基础之后,应该就可以很轻易的解决掉这方面的问题呢!所以请耐心的,慢慢的,将后面的所有章节内容都看完。自然你就知道如何解决了!
此外,网络基础与安全也很重要,例如 IP 的基础,网络的 Gateway 设定基础与网络的相关概念!很多的朋友一开始问的问题就是『为什么我的 mail server 无法收到信件?』这种问题相当的困扰,因为发生的原因太多了,而朋友们常常一接触 Linux 就是希望『架站!』根本没有想到要先了解一下 Linux 的基础!这是相当伤脑筋的!尤其近来计算机怪客 ( Cracker ) 相当多, ( 真奇怪,闲闲没事干的朋友还真是不少.... ) ,一个不小心您的主机就被当成怪客跳板了!甚至发生被警告的事件也层出不穷!这些都是没能好好的注意一下网络基础的原因呀!
所以, 鸟哥希望大家能够更了解 Linux ,好让他可以为你做更多的事情喔!而且这些基础知识是学习更深入的技巧的必备条件呀!因此建议:先理解一下基础的硬件知识,不用一定要全懂(没那么多时间),但是至少要『听过、有概念』即可;先了解一下 Linux 的基础知识,这些包含了『使用者、群组的概念』、『权限的观念』,『程序的定义』等等;必需至少学会一种以上的文书编辑器,例如最好学会通用版本的 vi 啰!实际操作 Linux 时,必定要学习的 Shell ,最好 Shell scripts 也能够了解;如果上面你都通过了,那么网络的基础就是下一阶段要接触的咚咚,这部份包含了『IP 概念』『路由概念』『TCP/IP』等等;如果连网络基础都通过了,那么网站的架设对你来说,简直就是『太简单啦!』
在一些基础知识上,这里推荐一下 Study-Area 里面的基础文章,相当的实用!计算机基础网络基础
选择一本好的工具书
『工具书』对于学习者而言是相当重要的!不过,一本错误观念的工具书却会让新手整个误入歧途....,以下有几个网站有特别介绍了几本书籍,如果有兴趣的话,欢迎参考看看!实在是很建议买一本『基础一点』的工具书来学习 Linux ,等到有一定的基础之后,才来买架设网站以及『安全防护』方面的书籍,尤其是『安全防护』的书籍, VBird 认为,网络安全一定会越来越受到重视的!当然,有兴趣的话,小弟的『鸟哥的 Linux 私房菜 -- 基础学习篇』也可以参考看看啰! ^_^请推荐有关网络的书小红帽技术论坛
实作经验
要增加自己的体力,就是只有运动;要增加自己的知识,就只有读书;当然,要增加自己对于 Linux 的认识,大概就只有实作经验了!所以,赶快找一部计算机,赶快安装一个 Linux 套件,然后快点进入 Linux 的世界里面晃一晃!相信对于你自己的 Linux 能力必然大有斩获!除了自己的实作经验之外,也可以参考网络上一些善心人士整理的实作经验分享喔!例如最有名的 Study-Area ( http://www.study-area.org )等网站。
此外,人脑不像计算机的硬盘一样,除非硬盘坏掉了或者是数据被你抹掉了,否则储存的数据将永远而且立刻的记忆在硬盘中!在人类记忆的曲线中,你必须要『不断的重复练习』才会将一件事情记得比较熟!同样的,学习 Linux 也一样,如果你无法经常摸索的话,那么,抱歉的是,学了后面的,前面的忘光光!学了等于没学,这也是为什么鸟哥当初要写『鸟哥的私房菜』这个网站的主要原因,因为,我的忘性似乎比一般人还要好~~呵呵!所以,除了要实作之外,还得要常摸!才会熟悉 Linux 而且不会怕他呢!
好了,底下列出几个学习网站来提供大家做为参考实作的依据:(注:由于不同的网站当初撰写的时候所用的 Linux 套件或版本与目前的主流并不相同,因此参考他人的实作经验时,必须要特别留意对方的版本,否则反而可能造成你的困扰喔!)
Study-Area鸟哥的私房菜馆狼主的网络实验室卧龙大师的网络技术文件大南国小(林克敏主任文件集)张毓麟先生的小文章台湾 Linux 社群吴仁智的文件集
X-Window 还是 command line由前面的介绍我们可以知道,虽然目前 X-Window 的接口越做越漂亮,而且也已经渐渐的可以来控管整个系统了!但是必须要注意的是, X-Window 毕竟还只是一个 Linux 上面的软件,并不是一套『操作系统』,所以实际上使用他来设定系统的时候,还是有相当多的困扰的,因为毕竟他无法完全的管理好我们的 Linux 啊!虽然就以 Desktop 的型态来说,X-Window 是让 Linux 立刻深入人心的方法。不过, X-Window 在使用的时候还是有相当多的问题的,最大的问题来自于『系统资源的有效应用』,以 VBird 的使用情况来说,我的系统资源并没有很好,但是 X-Window 本身相当的消耗系统资源,如果一开 X-Window ,那么你的内存几乎都被 X-Window 吃光了!您要如何来用剩下的系统资源来进行高效率的其它工作呢?!这也是为什么很多的书籍与网站都会希望使用者架设网站的时候,不要启动图形使用者接口 的原因啰!以下再来说说 X-Window 学习与 command line 学习的角度。X-Window
如果您对于 Linux 的要求是『桌上型计算机』,并且你又不架设网站的话,那么学习 X-Window 对您而言,绝对是需要的!至于指令列模式对你就不是这么必要了!但是,如果 Linux 对你而言是『服务器与工作站』的话,那么 X-Window 可能就不是这么重要,但是指令列模式可就大大的重要啦!因为,如果以 X-Window 作为学习 Linux 的方式,那么未来一定会有死角,这是因为 X-Window 了不起也只是 Linux 的『一套软件』而不是『Linux 核心』此外,目前发展出来的 X-Window 对于系统的管理上还是有无法掌握的地方, 举个例子来说,如果 Linux 本身捉不到网络卡的时候, 请问如何以 X-Window 来捉这个硬件呢?!还有,如果需要以 tarball 的方式来安装软件并加以设定的时候, 请以 X-Window 来架设他!这可能吗?当然可能,但是这是在考验『X-Window 开发商』的技术能力, 对于了解 Linux 架构与核心并没有多大的帮助的!所以说,如果只是想要『会使用 Linux 』的角度来看, 那么确实使用 X-Window 也就足够了,反正搞不定的话,花钱请专家来搞定即可;但是如果想要更深入 Linux 的话,那么指令列模式才是不二的学习方式!服务器端
如果 Linux 对你而言是『生财』的工具,呵呵!那可不是只要学习 X-Window 能够解决的了!举个例子来说好了,假如你的客户人在台北,而你人在远方的台南,他的 Linux 服务器出了问题,要你马上解决他, 请问:要您亲自上台北去修理?还是他搬机器下来让你修理?!或者是直接请他开个账号给你进去设定即可?!想当然尔,就会选择开账号给你进入设定即可啰!因为这是最简单而且迅速的方法!然而这个方法使用的方式却不是 X-Window 作的到的!因为 X-Window 太耗资源,实在不容易让您这样子联机(很麻烦的啦!)所以啰!文字界面是相当重要的!尤其如果想要深入 Linux 的核心时,那么以文字界面来了解 Linux 就更需要了!所以说,不要怕麻烦,还是多摸一些文字界面的东西吧!!帮助会比较大哩!所以基本上, VBird 还是希望大家可以多多的以 文字接口( command line )的方式来学习 Linux 啦!网络数据查询
其实,在网络上面已经有相当多的 FAQ 整理出来了!所以,当你发生任何问题的时候,除了自己检查,或者到上述的实作网站上面查询一下是否有设定错误的问题之外,最重要的当然就是到各大 FAQ 的网站上查询啰!以下列出一些有用的 FAQ 网站给您参考一下:CLDP 中文文件计划Unix 的一般常见问题asklinux还有相当的的网络资源可以查询!如果你有发现更新的信息时,记得来信通知 VBird 喔!
真的没办法、发问吧天助自助者:
一般而言, Linux 在下达指令的过程当中,或者是 log file 里头就可以自己查得错误信息了,举个例子来说,当您下达: ls -l /vbird时,由于系统并没有 /vbird 这个目录,所以会在屏幕前面显示:ls: /vbird: No such file or directory这个错误讯息够明确了吧!系统很完整的告诉您『查无该数据』!呵呵!所以啰,请注意,发生错误的时候,请先自行以屏幕前面的信息来进行 debug ( 除错 )的动作,然后,如果是网络服务的问题时,请到 /var/log 这个目录里头去查阅一下 log file ,这样可以几乎解决大部分的问题了!讨论区的提问:
万一真的经过了自己的查询,却找不到相关的信息,那么就发问吧!不过,在发问之前建议您最好先看一下『提问的智慧』这一篇讨论!然后,你可以到底下几个讨论区发问看看:Study-Area 讨论区鸟哥的私房菜馆讨论区狼主的网络实验室讨论区小红帽技术论坛LinuxFab竹猫星球不过,基本上每一个讨论区的内容是大同小异的,发问的时候一定要注意到某些礼节!最好是先以搜寻的方式搜寻一下该讨论区是否有您需要的文章之后,在发问!这样可以获得事半功倍的功能喔!此外, Netman 兄提供的一些学习的基本方针,提供给大家参考:在Windows里面﹐程序有问题时﹐如果可能的话先将所有其它程序保存并结束﹐然后尝试按救命三键(Ctrl+Alt+Delete)﹐将有问题的程序(不要选错了程序哦)“结束工作”﹐看看能不能恢复系统。不要动不动就直接关机或reset。有系统地设计档案目录﹐不要随便到处保存档案以至以后不知道放哪里了﹐或找到档案也不知道为何物。养成一个做记录的习惯。尤其是发现问题的时候﹐把错误信息和引发状况以及解决方法记录清楚﹐同时最后归类几定期整理。别以为您还年轻﹐等你再弄多几年计算机了﹐您将会非常庆幸您有此一习惯。如果看在网络上看到任何好文章﹐可以为自己留一份copy﹐同时定好题目﹐归类存档。作为一个使用者﹐人要迁就机器﹔做为一个开发者﹐要机器迁就人。学写 script 的确没设定 server 那么好玩﹐不过以我自己的感觉是﹕关键是会得“偷”﹐偷了会得改﹐改了会得变﹐变则通矣。在Windows里面﹐设定不好设备﹐您可以骂它﹔在Linux里面﹐如果设定好设备了﹐您得要感激它﹗其它的一些建议
除了上面的学习建议之外,还有其它的建议吗?确实是有的!其实,无论作什么事情,对人类而言,两个重要的因素是造成我们学习的原动力:成就感兴趣很多人问过我,鸟哥是怎么学习 Linux 的?由鸟哥之前的 自我介绍 与对于 Linux 的接触历程,你大概会知道,原来我本人对于计算机就蛮有兴趣的,加上工作的需要,而鸟哥又从中得到了相当多的成就感,所以啰,就一发不可收拾的爱上 Linux 啰!因此,鸟哥个人认为,学习 Linux 如果玩不出兴趣,他对你也不是什么重要的生财工具,那么就不要再玩下去了!因为很累人ㄋㄟ~而如果你真的想要玩这么一套优良的操作系统,除了前面提到的一些建议之外,说真的,得要培养出兴趣与成就感才行!那么如何培养出兴趣与成就感呢?可能有几个方向可以提供给你参考:建立兴趣:Linux 上面可以玩的东西真的太多了,你可以选择一个有趣的课题来深入的玩一玩!不论是 Shell 还是图形接口等等的,只要能够玩出兴趣,那么再怎么苦你都会不觉得喔!成就感:成就感是怎么来的?说实在话,就是『被认同』来的!怎么被认同呢?写心得分享啊!当你写了心得分享,并且公告在 BBS 上面,自然有朋友会到你的网页去瞧一瞧,当大家觉得你的网页内容很棒的时候,哈哈!你肯定会加油继续的分享下去而无法自拔的!那就是我啦...... ^_^!而且,就鸟哥的经验来说,你『学会一样东西』与『要教人家会一样东西』思考的纹路是不太一样的!学会一样东西可能学一学会了就算了!但是要『教会』别人,那可就不是闹着玩的!得要思考相当多的理论性与实务性方面的咚咚,这个时候,你所能学到的东西就更深入了!鸟哥常常说,我这个网站对我在 Linux 的了解上面真的的帮助很大!协助回答问题:另一个创造成就感与满足感的方法就是『助人为快乐之本!』当你在 BBS 上面告诉一些新手,回答他们的问题,你可以获得的可能只是一句『谢谢!感恩吶!』但是那句话真的会让人很有快乐的气氛!很多的老手都是因为有这样的满足感,才会不断的协助新来的朋友的呢!此外,回答别人问题的时候,就如同上面的说明一般,你会更深入的去了解每个项目,哈哈!又多学会了好多东西呢!参与讨论:参与大家的技术讨论一直是一件提升自己能力的快速道路!因为有这些技术讨论,你提出了意见,不论讨论的结果你的意见是对是错,对你而言,都是一次次的知识成长!这很重要喔! ^_^此外,除了这些鸟哥的经验之外,还有在 BBS 上面有一封对于 Linux 新手相当有帮助的文件数据,大家可以多看一看:Linux 初学者之旅 2002/01Linux 初学者之旅 2002/07最新的 Linux 初学者之旅信息人的有效学习(洪朝贵教授网页)里面提到了几乎新手都会有的问题!此外,在网络上还有另外一篇介绍 Linux 的文章,也蛮好玩的,不过他是 Word 版本,目前并不打算将他修改一番,因为要保持原文件的风貌呀!呵呵!有兴趣的朋友真的可以好好的看一看:Linux 初学者入门
安装Linux操作系统
Linux文件系统
Linux常用命令
Linux启动过程详解
熟悉Linux服务能够独立安装Linux操作系统
能够熟练使用Linux系统的基本命令
认识Linux系统的常用服务安装Linux操作系统
Linux基本命令实践
设置Linux环境变量
定制Linux的服务 Shell 编程基础使用vi编辑文件
使用Emacs编辑文件
使用其他编辑器
2、Shell 编程基础
Shell简介
认识后台程序
Bash编程熟悉Linux系统下的编辑环境
熟悉Linux下的各种Shell
熟练进行shell编程熟悉vi基本操作
熟悉Emacs的基本操作
比较不同shell的区别
编写一个测试服务器是否连通的shell脚本程序
编写一个查看进程是否存在的shell脚本程序
编写一个带有循环语句的shell脚本程序
3、Linux 下的 C 编程基础
linux C语言环境概述
Gcc使用方法
Gdb调试技术
Autoconf
Automake
Makefile
代码优化 熟悉Linux系统下的开发环境
熟悉Gcc编译器
熟悉Makefile规则编写Hello,World程序
使用 make命令编译程序
编写带有一个循环的程序
调试一个有问题的程序
4、嵌入式系统开发基础
嵌入式系统概述
交叉编译
配置TFTP服务
配置NFS服务
下载Bootloader和内核
嵌入式Linux应用软件开发流程
熟悉嵌入式系统概念以及开发流程
建立嵌入式系统开发环境制作cross_gcc工具链
编译并下载U-boot
编译并下载Linux内核
编译并下载Linux应用程序
嵌入式系统移植
Linux内核代码
平台相关代码分析
ARM平台介绍
平台移植的关键技术
移植Linux内核到 ARM平台 了解移植的概念
能够移植Linux内核移植Linux2.6内核到 ARM9开发板
5、嵌入式 Linux 下串口通信
串行I/O的基本概念
嵌入式Linux应用软件开发流程
Linux系统的文件和设备
与文件相关的系统调用
配置超级终端和MiniCOM 能够熟悉进行串口通信
熟悉文件I/O 编写串口通信程序
编写多串口通信程序
6、嵌入式系统中多进程程序设计
Linux系统进程概述
嵌入式系统的进程特点
进程操作
守护进程
相关的系统调用了解Linux系统中进程的概念
能够编写多进程程序编写多进程程序
编写一个守护进程程序
sleep系统调用任务管理、同步与通信 Linux任务概述
任务调度
管道
信号
共享内存
任务管理 API 了解Linux系统任务管理机制
熟悉进程间通信的几种方式
熟悉嵌入式Linux中的任务间同步与通信
编写一个简单的管道程序实现文件传输
编写一个使用共享内存的程序
7、嵌入式系统中多线程程序设计
线程的基础知识
多线程编程方法
线程应用中的同步问题了解线程的概念
能够编写简单的多线程程序编写一个多线程程序
8、嵌入式 Linux 网络编程
网络基础知识
嵌入式Linux中TCP/IP网络结构
socket 编程
常用 API函数
分析Ping命令的实现
基本UDP套接口编程
许可证管理
PPP协议
GPRS 了解嵌入式Linux网络体系结构
能够进行嵌入式Linux环境下的socket 编程
熟悉UDP协议、PPP协议
熟悉GPRS 使用socket 编写代理服务器
使用socket 编写路由器
编写许可证服务器
指出TCP和UDP的优缺点
编写一个web服务器
编写一个运行在 ARM平台的网络播放器
9、GUI 程序开发
GUI基础
嵌入式系统GUI类型
编译QT
进行QT开发熟悉嵌入式系统常用的GUI
能够进行QT编程使用QT编写“Hello,World”程序
调试一个加入信号/槽的实例
通过重载QWidget 类方法处理事件
10、Linux 字符设备驱动程序
设备驱动程序基础知识
Linux系统的模块
字符设备驱动分析
fs_operation结构
加载驱动程序了解设备驱动程序的概念
了解Linux字符设备驱动程序结构
能够编写字符设备驱动程序编写Skull驱动
编写键盘驱动
编写I/O驱动
分析一个看门狗驱动程序
对比Linux2.6内核与2.4内核中字符设备驱动的不同
Linux 块设备驱动程序块设备驱动程序工作原理
典型的块设备驱动程序分析
块设备的读写请求队列了解Linux块设备驱动程序结构
能够编写简单的块设备驱动程序比较字符设备与块设备的异同
编写MMC卡驱动程序
分析一个文件系统
对比Linux2.6内核与2.4内核中块设备驱动的不同
11、文件系统
虚拟文件系统
文件系统的建立
ramfs内存文件系统
proc文件系统
devfs 文件系统
MTD技术简介
MTD块设备初始化
MTD块设备的读写操作了解Linux系统的文件系统
了解嵌入式Linux的文件系统
了解MTD技术
能够编写简单的文件系统为 ARM9开发板添加 MTD支持
移植JFFS2文件系统
通过proc文件系统修改操作系统参数
分析romfs 文件系统源代码
创建一个cramfs 文件系统
一.为什么要学linux?
当然最重要是爱好和兴趣!如果你这种必要学,或者根本不喜欢,请不要浪费时间,你学也学不好!
二.起步
你应该为自己创造一个学习linux的环境--在电脑上装一个linux或unix
如何选择版本:北美用redhat,欧洲用SuSE,桌面mandrake较多,而debian是技术最先进的linux开发人员中用debian的最多,其次是redhat,从全球linux各应用领域市场份额来看无疑redhat是最多的,此外还有很多出名的发行版本,不再列举。
对于初学linux的人来说,我建议是使用redhat,原因如下:
1)现在很多书都是以redhat为例讲的,为了与书本协调一致
2)周围的人都用redhat,交流比较方便
3)redhat应用范围广,有典型性和代表性
4)它易于使用和安装,我们没有必要把时间浪费在“装系统”上而应集中精力学习最有用的东西。
【注】现在觉得RH很死板,AS,ES等用在服务器上或许不错,Personal desktop用mandrake,debian,suse都不错,笔者现在用Mandrake,因为她长得漂亮:)
如果你并不打算深入学习linux,而是有诸如适应北京市政府办公平台迁移到linux上这种需要,那么中软,红旗等中文linux是不错的选择
我强烈建议:自己亲自动手把linux装到你的硬盘上,你必须学会独立安装linux系统的技能,对于现在的版本来说,其实跟装WinXP一样简单
从此现在开始,请不要以windows的工作方式来考虑问题,应该尝试挖掘linux身上的“天才unix”的气质。
三.进阶
掌握至少50个以上的常用命令
理解shell管道"|",文件流重定向">"及追加">>"等
熟悉Gnome/KDE等X-windows桌面环境操作
掌握.tgz.rpm.biz等软件包的常用安装方法
学习添加外设,安装设备驱动程序(比如modem)
熟悉Grub/Lilo引导器及简单的修复操作
熟悉系统固有目录的名称及公用
学会用mount命令访问其他文件系统
了解vi,gcc,gdb等常用编辑器,编译器,调试器
学习linux环境下的简单组网
建议:买一本不需要太厚的linux教材,大致可以满足要求(现在的书越来越多了,还带很多图,我当时可没这么多书)
四.高级应用
澄清一些概念:linux的普通操作与真正的系统管理不能相提并论,后者需要很多知识
1.英语
即使你不学linux,我也强烈建议你学好英文[U.S.english]。因为实质上计算机语言就是英文和字符,所谓的多国语言只是外部包装。你必须能无障碍的阅读大量的英文技术文档在搜索引擎找到的英文网站和网页中熟练的检索最好能有用英文直接交流的能力,摆脱了这个障碍,你的学习和理解速度就能快很多,你就有机会拉开和别人的差距。
2.shell[sed/awk]
shell是命令解释器,是内核与用户界面交流通道,shell写的小脚本有点类似于win下的.bat但shell比.bat强大的多,shell不只是解释命令,更是一种编程语言,有时候几百行的c用shell几十行就能代替完成工作,因为shell的工作方式建立在系统已有的众多应用程序之上
这也是CS中的一个重要思想。此外,shell可以实现工作自动化,这个概念也比较重要sed,awk用来处理文本,历来很常用。
3.Perl/PHP
漂亮的脚本, CGI的首选,比ASP好,应用面很广
4.C\C++
C、C++是linux/unix的核心语言,系统代码都是C写的
5.ASM
系统底层及内核,硬件,设备驱动程序,嵌入式开发都需要。//走核心路线的话,c\c++,asm最重要
6.Java,Python,Tcl,XML
五、系统管理篇
在熟悉linux的基础上还需要掌握至少一种unix。我首推Solaris,其次是FreeBSD比如运营级系统一般是Solaris+Oracle/DB2之类的学习apache、ssh、sendmail/Qmail、proftp/vsftp、Samba、Squid、MySQL/PostgreSQL/Oracle、Bind等各种应用服务器的构架及电子商务的应用熟悉TCP/IP协议族,学习诸如apache+php+proftp+mysql+quota的实现以及大型局域网,分布式集群等各种企业级应用解决方案熟悉多用户管理,数据库管理,文件系统,逻辑存储管理,日志分析,备份与灾难数据修复系统补丁,内核升级,以及在此基础上的防火墙构架等以保障系统安全在内的各种系统管理技能。
我觉得,如果在此基础上再掌握路由/交换设备便是一个不错的系统管理员
各种基于linux的解决方案可参考相关书籍和文献,必要时用google或各大linux站点站内搜索引擎寻找最新文档,以避免错误和漏洞有几本技术大全和技术内幕我认为都是这方面不错的书
六、深入学习linux
我个人理解的读linux内核需要的基础:在此之前,希望先把应用层的东西学一下,那样会比较好理解
1.C
如果学过潭浩强的大学教科书(除了编几个数学模型好像什么也做不了的那种),建议再看一下《The C Programming Language》Second Edition这本圣经(如果想学缓冲区溢出,这点C的功力可能是不够的,还有<C陷阱与缺陷>,<C专家编程>,<C\C++深层探索>,反正经典书看多了是没有坏处的)
2.asm (AT&T语法,保护模式)
保护模式下的比较复杂,基本上每本讲内核的书都会有介绍有80x86 Intel语法的基础就行,
有兴趣可以看看Intel的官方网站
3.数据结构(离散数学)
计算机专业的核心课程,重要性我就不说了
4.操作系统原理
看懂这个再去读linux吧
5.微机原理/组成原理(数字电路)
底层直接和硬件打交道,所以这个也要
6.了解linux/unix
我想至少你要会操作吧,了解unix的API
7.软件工程/编译原理
这方面的经典书去www.china-pub.com可以搜到很多我觉得APUE这种书不适合初学者,还是先看看UPE
选择适合自己的linux发行版
谈到linux的发行版本,太多了,可能谁也不能给出一个准确的数字,但是有一点是可以肯定的,linux正在变得越来越流行, 面对这么多的Linux 发行版,打算从其他系统转到linux系统来的初学者可能会感到困惑,即便是忠实的 Linux 用户也没有时间和精力去挨个尝试,因此初学者在学习linux的之前,需要有一个明确的方向,选择一个适合自己的系统开始学习linux至关重要!下面我们就分类介绍。
1.1 初学者入门首选-redhat系列
在学习redhat系列linux之前,首先要了解以下redhat linux各个发行版本之间的关系。
1.Red Hat Linux
Red Hat Linux是redhat最早发行的个人版本的linux, 其1.0版本于1994年11月3日发行。虽然其历史不及其它linux发行版本悠久,但比起很多的Linux发行套件,Red Hat 的历史悠久得多。自从Red Hat 9.0版本发布后,RedHat 公司就不再开发桌面版的 Linux发行套件,Red Hat Linux停止了开发,而将全部力量集中在服务器版的开发上,也就是 Red Hat Enterprise Linux 版。2004年4月30日,Red Hat公司正式停止对Red Hat 9.0版本的支持,标志著Red Hat Linux的正式完结。原本的桌面版Red Hat Linux发行套件则与来自开源社区的 Fedora进行合并,成为 Fedora Core 发行版本。
目前Red Hat分为两个系列:由Red Hat公司提供收费技术支持和更新的Red Hat Enterprise Linux,以及由社区开发的免费的Fedora Core。
2.Fedora Core
Fedora Core(缩写为FC)被红帽公司定位为新技术的实验场地,许多新的技术都会在 FC 中检验,如果稳定的话红帽公司则会考虑加入 Red Hat Enterprise Linux 中。
Fedora Core 1发布于2003年年末,而FC的定位便是桌面用户。FC提供了最新的软件包,同时,它的版本更新周期也非常短,仅6个月。由于版本更新频繁,性能和稳定性得不到保证,因此,一般在服务器上不推荐采用Fedora Core。
其实可以这么认为,Fedora就是Red Hat发行Red Hat企业版linux的一个实验版本,以用户做测试,为Red Hat企业版发布奠定基础。
3.Red Hat Enterprise Linux
Red Hat Enterprise Linux(缩写为RHEL,Red Hat的企业版)。Red Hat现在主要做服务器版的linux开发,在版本上注重了性能和稳定性以及对硬件的支持。 由于企业版操作系统的开发周期较长,注重性能、稳定性和服务端软件支持,因此版本更新相对较缓慢。
RedHat Enterprise Linux又分为4个版本 Advanced Server(AS)、ES Workstation(WS)、Desktop,它们的差别不太大,只是功能方面的差别。
4.Centos
CentOS全名为“社区企业操作系统”(Community Enterprise Operating System)
CentOS产生的背景:
Redhat发布Redhat 9。0后,不再开发redhat 10,11……,全面转向Redhat enterprise linux(简写为rhel)的开发,和以往不同的是,新的redhat企业版要求用户先购买lisence,redhat同时承诺确保产品的稳定性,安全性。rhel二进制代码不再提供下载,而是作为redhat 服务的一部分,但源代码依然是开放的。在这种情况下,出现了centos、whitebox、dao 等等一批open source的企业版本,其中以centos最为活跃。
下面讲述centos是如何制作产生的:
CentOS社区将Redhat的网站上的所有源代码下载下来,进行重新编译。由于AS/ES/WS是商业产品,因此,必须将所有Redhat的Logo和标识改成自己的CentOS标识。比如将AS4.0原版的SRPM源码编译后,换上Centos社区的logo,这样就成为了CentOS 4.0。Redhat Enterprise Linux AS4 Update1的源码编译后,就成为了CentOS4.1。AS4 Update2的源码编译后,就成为了CentOS4.2等等。CentOS就是这样产生的。
因此,可以说CentOS就是Redhat的AS/ES/WS的免费版本,使用centos可以获得与redhat 企业级linux一样的功能和性能。同时centos还提供免费的长期升级和更新服务。因此, 在众多的RHEL的克隆版本中,CentOS是很出众很优秀的。
虽然说centos是RHEL的克隆,但并不是一模一样,所说的克隆是具有100%的互换性。对于centos其实不尽相同,RHEL的软件在CentOS上面不能保证100%的正常工作。
在了解了Redhat系列各个版本的差异后。其实我们就找到了为何选择Redhat linux作为初学者入门学习的理由了。
首先:在国内,乃至是全世界的Linux用户最熟悉、最耳闻能详的发行版肯定就是Red Hat了。因为Red Hat是linux界的“老大”,美国Red Hat公司发布的Red Hat linux是商业上运作最成功的一个Linux发行套件,因此Red Hat公司发行的linux值得信任, Red Hat linux的功能和性能也毋庸置疑。
其次:Red hat现在拥有庞大的网络用户群体,网络linux资源基本90%都是基于Redhat linux的,如果您在学习过程中遇到任何问题,随便搜索网络,就有成千上万的答案展示在你面前。
第三: Red Hat linux系列版本相互补充,相得益彰:如果你第一次接触linux,那么建议你先安装Fedora Core, Fedora Core安装简单,对硬件支持很好,界面也很华丽,同时也可以体验Redhat linux的最新功能;如果你对linux有一定的了解,需要深入学习,建议你使用CENTOS系统;如果你是在做linux企业级应用,建议你使用RHEL版本。
最后: redhat应用范围广,具有典型性和代表性,很多系统(例如红旗redflag,中标linux,oracle发布的Enterprise Linux )都是以Red Hat linux为基准的,因而,可以说学会了Red Hat linux,就能触类旁通,其它类似的linux系统也能很快掌握; 现在周围学习linux的一般也都是以redhat linux为主,这样交流方便,学习中出现问题,更容易得到解决。同时redhat linux的安装和使用也是最简单的,因此,基本上不会在”装系统”上浪费过多时间。
1.2 企业级应用首选-suse linux
企业级的应用追求的是可靠性和稳定性,这就要求构建企业级应用的系统平台具有高可靠性和高稳定性。企业级linux的发行版本就是解决的这个问题。
SUSE是德国最著名的Linux发行版,在全世界范围中也享有很高的声誉。2003年11月4日,Novell公司对外宣布将收购SuSE。2004年1月该收购顺利完成,Novell同时将SuSE正式命名为SuSE Linux。 Novell公司收购suse,加速了suse linux的发展, suse linux无论在桌面市场还是服务器市场都更加专业化,据不完全统计,suse linux现在欧洲linux市场占有将近80%的份额,大部分关键性应用都是建立在suse linux下。由于suse 进入中国时间较短,同时加上suse在中国的营销模式短时间不能被国内接受,因此现在suse在中国的市场份额还不是很大,但是这些并不影响suse linux高可靠与稳定性的事实,随着suse的发展,相信suse linux在中国的应用会越来越多。
1.3 游戏娱乐首选-Ubuntu Linux
说到linux桌面市场, Ubuntu Linux几乎占据了桌面linux的半壁江山, Ubuntu Linux主打linux桌面之最,界面美观, 简易而不失华丽,如果想在linux下进行娱乐休闲,Ubuntu Linux绝对是首选。
Ubuntu 的安装非常的人性化,只须按照提示一步一步进行,安装与Windows一样简单!并且,Ubuntu被誉为对硬件支持最好最全面的Linux 发行版之一,许多在其他发行版上无法使用,或者在默认配置时无法使用的硬件,在Ubuntu上都能轻松搞定。因此你可以像安装windows一样轻松的安装Ubuntu。尽情体验Ubuntu linux带来的乐趣。
1.4 linux作为服务器是发展趋势
在上面的章节中主要介绍了几种最常见的linux发行版本,其实linux的发行版本还有很多很多,比较常见的还有Debian GNU/Linux, Mandriva, Gentoo,Slackware, Knoppix,MEPIS, Xandros,国产的红旗redflag,中标linux等等,这里不再一 一介绍,其实纵观linux的各个发行版,linux发行版本无非是朝着这两个方面而来,一是服务器市场,而是桌面市场。
以Ubuntu Linux为代表的linux发行版走的是桌面市场路线,虽然它们给用户带来很多惊喜,更新也很快,但是由于桌面市场有着windows这样强劲的对手,linux桌面发展举步维艰。
以redhat系列版本为代表的linux发行版现在主要面向企业级linux的服务器市场,重点开发linux的企业版本,suse linux同样主要力量也集中在开发企业级linux上面,其它的例如国产redhat flag,中标linux等都重点投入在了linux服务器市场。linux两大发布厂商现在都走了linux服务器市场的路线,可见linux作为企业级服务器有着巨大的发展前途,据权威部门统计,linux在服务器市场的占有率每年都在持续上升。
其实很多linux的应用都是针对linux服务器的,本书的讲述也是主要针对linux在服务器下的各种应用展开的。
二、 养成良好的linux操作习惯
当你进入linux的学习之后,请不要用windows的工作方式来思考问题,因为它们之间确实有很大的不同,比如它们之间的内存管理机制,进程运行机制等都有很大不同,这些异同点将在下面章节陆续讲述,因此,抛开windows那种思维,用全新的理念尝试去挖掘linux身上特有的潜质,对初学者至关重要。
2.1 一定要习惯命令行方式
Linux是一个命令行组成的操作系统,精髓在命令行,无论图形界面发展到什么水平,命令行方式的操作永远是不会变的,Linux命令有许多强大的功能:从简单的磁盘操作、文件存取、到进行复杂的多媒体图象和流媒体文件的制作都离不开命令行。虽然linux也有桌面系统,但是X-window也只是运行在命令行模式下的一个应用程序。
因此,可以这么说,命令是学习linux系统的基础,学习linux,很大程度上就是学习命令,很多linux高手其实都是玩儿命令很熟的人。
也许对于刚刚从windows系统进入linux学习的初学者来说,立刻进入枯燥的命令学习,实在太难,但是你一旦学会就爱不释手。因为它的功能实在太强大了。您未来的学习之路也将会以指数增加的方式增长。
2.2 理论结合实践
有很多初学者都会遇到这么一个问题,说到系统的每个命令,都很熟悉,但是在系统出现故障的时候,面对出现问题的linux系统无从下手了。不知道在什么时候用什么命令去检查系统,这是很多linux新手最无奈的事情了。说到底,就是学习的理论没有很好的与系统实际操作相结合。
很多linux知识,例如每个命令的参数含义,在书本上说的很清楚,看起来也很容易理解,但是一旦组合起来使用,却并不是那么容易,没有多次的动手练习,其中的技巧是无法掌握的。
人类大脑不像计算机的硬盘一样,除非硬盘坏掉或者硬盘被格式化,否则储存的资料将永远而且时刻的记忆在硬盘中。而在人类记忆的曲线中,必须要不断的重复练习才会将一件事情记得比较熟。同样的,学习 Linux 也一样,如果无法经常学习的话,学了后面的,忘记了前面的;还有些linux初学者也学了很多linux知识,但是由于长期不用,导致学过的东西在很短的时间内又忘记了,久而久之,失去了学习的信心。
可见,增加自己Linux 的实战技能,只有勤于动手,勇于实践,这也是学好linux的根本。
2.3 学会使用linux联机帮助
各个Linux的发行版本的技术支持时间都较短,这对于Linux初学者来说往往是不够的, 其实当安装了一个完整的Linux系统后其中已经包含了一个强大的帮助,只是可能你还没有发现和使用它们的技巧。例如,对于一个linux tar命令的使用,你不是很熟悉,那么只要你在命令行输入man tar, 就会得到tar的详细说明和用法;
主流的linux发行版都自带了非常详细的帮助文档,包括使用说明和FAQ,从系统的安装到系统的维护,再到系统安全,针对不同层次人群的详尽文档。仔细阅读文档后60%的问题都可在这里得到解决。
2.4 学会独立思考问题,独立解决问题
遇到问题,首先想到的应该是如何自己去解决这个问题,解决方式很多,看书查资料,网络搜索引擎,技术论坛等等,通过这几种方式,90%的问题都能得到解决,通过这种方式一方面锻炼了自己独立解决问题的能力。另一方面技术上也能得到快速提高。
如果通过如上方式实在解决不了的话,可以向人询问,得到答案后要考虑为何这么做,然后做笔记记录解决过程。最忌讳的方式是只要遇到问题,就去问人,虽然这样可能会很快解决问题,但是长久下去遇到问题就会依赖别人,技术上也不会进步。
2.5 学习专业英语
如果你想深入学习Linux,一定要尝试去看英文文档。因为,技术性的东西写的最好的,最全面的文档都是英语写的,最先发布的高新技术也都是用英语写的。即便是非英语国家的人发布技术文档,也都首先翻译成英语在国际学术杂志和网络上发表。安装一个新的软件时先看README,再看INSTALL,然后看FAQ,最后才动手安装,这样遇到问题就知道为什么。因此,学习一点专业的英语是很有必要的。
2.6 Linux学习基本步骤
到这里,我们总结一下linux的学习路线图,给各位初学者作为参考。
初级阶段:
1. 命令是必须要学的,linux常用的命令大概在80个左右,这些常用命令一定要熟练掌握。
2. 掌握linux软件包的常用安装方法,例如源码安装,rpm方式安装等等。
3. 学习安装设备驱动程序(比如网卡、显卡驱动)
4. 熟悉Grub/Lilo引导程序及简单的修复操作。
5. 熟悉Linux文件系统和目录结构以及linux基本运行原理。
6. 掌握vi,gcc,gdb等常用编辑器,编译器,调试器。
7. 理解shell别名、管道、I/O重定向、输入和输出以及shell简单脚本编程。
8. 学习Linux环境下的网络基本组建。
高级阶段:
1:尝试阅读linux内核源码:
这需要具有一定的C、C++语言基础,因为C、C++是linux/unix的核心语言,系统代码都是C写的。
2:尝试编译安装和调试自己的linux内核:
在阅读源码了解了linux底层的运行原理后,完全可以编译一个适合自己的linux系统来。
3:深入学习shell, perl,cgi等脚本语言:
这些脚本语言在linux下非常强大,它们能完成你想做的任何事情,熟练掌握这些语言,可以让你在linux系统下游刃有余,如鱼得水。
4:构建企业级linux高可用集群系统:
linux下有很多开源免费的集群软件,利用这些免费的集群软件完全可以构建出与商业unix系统想媲美的集群系统来。
三、用虚拟机软件学习linux
3.1 什么是虚拟机软件
虚拟机软件可以在一台电脑上模拟出来若干台PC电脑,每台PC可以运行单独的操作系统而互不干扰,可以实现一台电脑“同时”运行几个操作系统,还可以将这几个操作系统连成一个网络。
图1:安装了3台虚拟机的windows系统
比如图1中,是在一台电脑上安装了Windows 2000 Server,再在Win2000 server上安装虚拟机软件VMWare,利用VMWare模拟出来3台PC,在这3台PC上分别运行RedHat Linux、Win2000和Solaris 9 for x86操作系统。这4个操作系统同时在一台电脑上运行,互不干扰,并且同在一个局域网内。
听了上面的基本介绍,你可能知道虚拟机软件到底是做什么用的了。那么好,我们继续做更深入的介绍。
目前PC上的虚拟机软件最常用的有下述两个:
VMWare 网址为:http://www.vmware.com
Virtual PC 网址为:http://www.connectix.com
3.2 使用虚拟机软件的好处
1、如果要在一台电脑上安装linux和windows系统,不用虚拟机的话,有两个办法:一是装多个硬盘,每个硬盘装一个操作系统。这个方法比较昂贵。二是在一个硬盘上装双系统。这个方法不够安全,因为系统盘的MBR是操作系统的必争之地,windows更是霸道,每次重新安装系统都要重写系统的MBR,这样的话搞不好会几个操作系统同归于尽。而使用虚拟机软件既省钱又安全,因此,对于新手来说,利用虚拟机学习linux简直是再好不过了。
2、在虚拟机上安装linux系统,你不用担心会格式化掉自己的硬盘,你甚至可以随意的对虚拟系统进行任何的设置和更改操作,你可以格式化虚拟系统硬盘,重新分区虚拟系统硬盘等等, 因为虚拟机是你真实系统上运行的软件,对虚拟机系统的任何操作都是对软件的操作。
3、利用虚拟机模拟出来的linux系统和真实的linux系统是一摸一样的,现在各个公司专门的linux服务器是不会让新手随意去动的,而供测试的linux服务器一般又很紧缺,在自己电脑上安装虚拟linux系统,可以随意的学习测试,而不受任何环境影响。
3.3 虚拟机的运行环境和硬件需求
1:运行环境
VMWare可运行在Windows(WinNT以上)和Linux操作系统上。
Virtaul PC可运行在Windows(Win98以上)和MacOS上。
注:运行虚拟机软件的操作系统叫Host OS,在虚拟机里运行的操作系统叫Guest OS。
2:硬件需求
虚拟机是将两台以上电脑任务集成到一台电脑上来,因此对硬件要求比较高,主要是内存,硬盘和cpu;内存要足够大,因为每个虚拟机都会占用一定的内存资源,内存的总大小等于各个虚拟系统的总和。可喜的是,现在内存已经很便宜了,内存就不是问题了。同样,硬盘空间也是每个虚拟机都要占用的,cpu现在都到了多核阶段,也不是问题。
3.4 虚拟机的安装与使用
1.VMware虚拟机概述
上面章节讲到,虚拟机软件有VMWare和Virtual PC,它们各有优缺点,其中VMWare在全球占领了80%的市场份额,因此我们也主要讲述VMWare的安装与使用。
VMware是提供一套虚拟机解决方案的软件,主要产品分为如下3个:
(1)VMware-ESX-Server: 这个版本并不需要操作系统的支持。它本身就是一个操作系统,用来管理硬件资源。所有的系统都安装在它的上面。带有远程web管理和客户端管理功能。
(2)VMware-GSX-Server: 这个版本就要安装在一个操作系统下了,这个操作系统叫做HOST OS。 这个HOST OS可以是Windows 2000 Server以上的Windows系统或者是Linux(官方支持列表中只有RH,SUSE,Mandrake很少的几种),和VMware-ESX-Server一样带有远程web管理和客户端管理功能。
(3)VMware-WorkStation: 这个版本和VMware-GSX-Server版本的机构是一样的。也是要安装在一个操作系统下,对操作系统的要求也是Windows 2000以上或者Linux。和Vmware的区别就是没有web远程管理和客户端管理。
Vmware GSX Server不支持虚拟机双CPU,而且已经停止开发新版本, Vmware Server 是Vmware 公司决定将GSX Server免费后,重修代码后发布的, 目前有版本更新。因此我们选择免费的GSX Server作为讲述的版本。
2.虚拟机软件的安装
我们在windows下安装windows版本的VMware server,然后在VMware server上安装linux操作系统。虚拟机软件的安装很简单,只需按照windows常规方法安装即可完成,这里不在讲述。
3.创建一个虚拟机系统
虚拟机软件安装完毕,双击桌面上的 VMware Server 图标以启动应用程序:
(1) 按CTRL-N创建一个新虚拟机,弹出新建虚拟机向导,如图2所示界面,点击下一步:
图2
(2)选择虚拟机配置,如图3所示,这里选择“Custom”,点击下一步:
图3
(3) 选择客户机操作系统,如图4所示,这里选择“Linux”,版本选择“Red Hat Enterprise Linux 4”,点击下一步:
图4
(4) 给虚拟机命名,如图5所示,虚拟机名称设为Red Hat Enterprise Linux 4,虚拟机路径设为“C:\Virtual Machines\Red Hat Enterprise Linux 4”,点击下一步:
图5
(5) 设置访问权限,如图6所示,去掉“Make this virtual machine private”。 这样可以保证系统安装完毕,虚拟机linux系统可以和windows系统互通。点击下一步:
图6
(6) 启动/关闭选项,如图7所示,虚拟机帐户,选择“User that powers on the virtual machine”,点击下一步:
图7
(7) 虚拟机处理器配置,如图8所示,这里选择一个处理器。 如果你有多个处理器可以选择多个,点击下一步:
图8
(8) 设置虚拟机内存大小,如图9所示,可以通过滑竿选择给虚拟机系统分配的内存大小,一般选择是windows系统内存的一半。这里选择800M。点击下一步:
图9
(9) 选择虚拟机网络连接类型,如图10所示,这里选择“Use bridged networking”网桥方式,点击下一步:
图10
(10) 选择 I/O 适配器类型,如图11所示,这里选择“LSI Logic”,点击下一步:
图11
(11) 选择虚拟磁盘,如图12所示,选择“Create a new virtual disk”,点击下一步:
图12
(12) 选择磁盘类型,如图13所示,选择“SCSI (Recommended)”,点击下一步:
图13
(13) 指定虚拟机磁盘容量,如图14所示,磁盘容量,可根据自己的需求选择大小,安装Linux,一般5G即可满足需求,这里输入“25GB”,选择“Split disk into 2 GB files”,点击下一步:
图14
(14) 指定磁盘文件路径,如图15所示,可以点击“Browse”指定磁盘文件的路径,这里的路径为“F:\Red Hat Enterprise Linux 4\Red Hat Enterprise Linux 4.vmdk”,然后点击完成,即可完成虚拟机的创建。
图15
(15) 虚拟机创建完毕后,出现虚拟机控制台界面,如图16所示,这样我们就创建了一个 linux虚拟机系统,接下来就需要在虚拟机下安装linux系统了。
图16
(16) 点击图16虚拟机控制台中的“Edit virtual machine settings”选项,即可到“virtual machine settings”界面,如图17所示:
在这个界面中,我们可以添加虚拟机各种资源、编辑虚拟机的各种属性,例如修改虚拟机内存大小、编辑网卡连接方式、添加一个虚拟磁盘、指定光盘的引导方式等。还可以删除虚拟机中的各种资源。
图17
(17) 点击图18中“add”按钮,出现图18所示界面:在这个界面中,可以给虚拟机添加各种硬件资源,例如,硬盘、光驱、软驱、网卡、声卡等设备。
图18
到此为止,虚拟机的安装和基本配置已经介绍完毕,接下来开始讲述在虚拟机上安装linux的方法。
4.虚拟机上linux安装方式
在虚拟机上安装linux系统,常用的方法有两种:光驱安装和iso镜像文件安装。
(1) 光驱安装方式
在 VMware Server控制台上,双击右面板上的 CD-ROM 设备,然后选择Use physical drive,location选择host,下面下拉框选择Auto detect即可。如图19所示,最后,Linux系统光盘放入光驱,单击“Start this virtual machine”即可进入Linux安装界面。
(2) iso文件安装方式
在 VMware Server 控制台上,双击右面板上的 CD-ROM 设备,然后选择Use ISO image,然后指定iso文件路径,如图20所示,最后,单击Start this virtual machine即可进入Linux安装界面。
图19
图20
Linux系统的安装,我们将在在后面文章中讲述,这里不在多说。
四、linux学习资源
4.1 网络资源,搜索引擎,论坛
Linux的开源特性决定了linux知识的开放性和充足性。当今,linux非常流行,linux学习资源也非常之多,书店到处可见linux方面的书籍,选择一本适合自己的慢慢去学习,再好不过。
除了书本的知识,网络里也有无限的linux学习资源,各大linux技术门户,linux社区论坛,都是学习linux的好地方;在这里,有一批无私奉献的linux狂热爱好者,他们把自己的学习经验和学习总结无偿的发布出来;他们每天在linux论坛的各个角落热情的回答广大网友提出的问题;他们不求回报,因为他们热爱技术,热爱linux。
遇到学习问题,或者要查找某些linux资料,搜索引擎绝对是第一选择,例如google.cn和baidu.com,99%的技术资料都能在这里搜到。查找linux资料,不要错过这两个优秀的搜索引擎。
4.2 有本书在身边
网络中有很多linux学习资源,丰富的学习资源,虽然给我们学习提供了很好的便捷性,但是也造成了我们学习的盲目性,学习资源的丰富性,引出的另一个问题是资源的混杂,刚入门的新手感觉无从下手,可能今天看了一点内存管理的资料,明天学习了一点磁盘管理的资料,并且总是感觉自己理解了也学会了,但是就是无法灵活的掌握,究其原因,就是没有系统的学习linux。
因此,选择一本好书在自己身边是必须的,一本好书应该是由浅入深,有点及线,有线及面的介绍知识,选择一本好书,同时结合网络资源进行循序渐进的学习,此时,你的学习就不会再有空洞感,进步也会飞快。你会感觉学习linux是一件很快乐的事情。
五、linux的应用领域
很多新手都有一个很疑惑的问题:“我学习linux系统,能在上面干什么呢,或者说linux系统具体能做什么”,有这样的疑问,也很正常,但是随着对linux了解的加深,这些疑问就会慢慢消除,下面具体讲述下linux操作系统的应用领域(也就是linux到底是干啥的)。
1:服务器领域
现在的服务器市场以linux、unix、windows三分天下, linux可谓后起之秀,从产生发展到现在,在服务器应用领域节节攀升,并且每年增长势头迅猛。
Linux作为企业级服务器应用广泛,利用Linux系统可以使企业构架WWW服务器、代理服务器、邮件服务器、DNS服务器、透明网关、路由器等等,不但给企业降低了运营成本,同时获得了linux系统带来的高稳定性和高可靠性。
随着linux在服务器领域的广泛应用,这几年来,linux已经悄悄进入政府、教育、银行、石油等行业,同时各大unix厂商也推出在unix平台支持linux操作系统,例如IBM AIX。这一切表明,linux在服务器市场前景光明,相信在不久的将来,linux会渗透到社会各个领域。
2.嵌入式Linux系统
由于 Linux系统开放源码,功能强大、可靠、灵活而且具有伸缩性,再加上它广泛支持大量的微处理器体系结构、硬件设备、图形支持和通信协议,因此,在嵌入式应用的领域里,从因特网设备到专用的控制系统,Linux 操作系统的前景都很光明的。
例如,诺基亚和摩托罗拉公司都推出了linux平台的手机。
Linux 的应用:
要谈到 Linux 如何学习之前,我们得就 Linux 目前的一般应用来说明一下,才好理解您需要什么样的学习方式!桌上型计算机:
所谓的桌上型计算机就是一般使用者在屏幕前面工作时候的常见的操作系统了!我们称之为『Desktop』系统,就是简称的桌上型计算机了!说到桌上型计算机就不能不提一下 X-Window System 。由前一章提到的 Unix 与 Linux 的历史中,我们知道在 1986 年美美的窗口画面就已经在 Unix 上面出现过了,那个时候窗口画面被简称为 X 系统,而后来到了 1994 年的时候正式被整合在 Linux 里头!至于微软的 Windows 则是在 1995 年才出现!所谓的 X Window System 就是以 XFree86 这个计划释出的 X11 这个窗口软件为管理显示核心的一套窗口接口的软件,我们常常简称他为图形使用者接口( Graphical User Interface )。这个 XFree86 只是 Linux 核心上面的一套软件而已,他主要的工作就是管理图形接口输出的时候,几乎所有显示相关的硬件的控制,例如显示卡、屏幕、键盘、鼠标、等等,都是 XFree86 管理的!或者,我们可以称 XFree86 为 X-Window System 的服务器,简称为 X Server 。至于我们所看到的美美的窗口画面,则是使用 X Server 提供的显示相关硬件的功能,来达到图形显示的『窗口管理员( Window Mananger, WM )』所发挥的能力啦!这也就是说, WM 是挂在 X Server 上面来运作的一套显示窗口接口的软件,例如我们常见的 KDE, GNOME 等等都是 WM。那么这个桌上型计算机平时都在干些什么?简单的说,桌上型计算机的日常工作是:上网浏览;文书处理;网络接口之公文处理系统;办公室软件( Office Software )处理数据;收发电子邮件;大致上就是这些工作啰!在这些工作中, Linux 有美丽的图形接口 X Window System 提供良好的使用者接口 ( GUI ) ,此外,目前发展中的 WM 也都具有中文化的功能!至于 Office 软件则有类似 Open Office 的软件支持,所以,基本上在桌上型计算机型态的使用中, Linux 已经足以应付大部分的上班族群的工作了。工作站计算机:
工作站计算机与桌上型计算机不太一样的地方,在于工作站通常得要应付比较重要的公事应用,例如工程界流体力学的数值模式运算、娱乐事业的特效功能处理、软件开发者的工作平台等等。Linux 上面有强大的运算能力,以及支持度相当广泛的 GCC 编译软件,因此在工作站当中也是相当良好的一个操作系统选择。例如我们研究室目前就要将 Sun Unix 上面执行的大型模式移转到 Linux 上面,据美国环保署内部人员的测试,发现 Linux 不但比较便宜 ( X86 系统嘛! )而且速度还比较快呢!网络服务器:
承袭了 Unix 的良好传统, Linux 上面的网络功能特别的强大!此外,由于 GNU 计划,让 Linux 上面的服务器软件几乎都是免费的!因此,做为一部网络服务器,例如 WWW, Mail Server, File Server, FTP Server 等等, Linux 绝对是上上之选!嵌入式系统:
近年来电子相关产业相当的蓬勃发展,其中,小型微电脑的发展甚为重要!例如家电产品、PDA、以及其它微型的计算机配备。这些计算机配备通常是直接嵌入于产品当中的,例如 PDA 本身就是一个小型的计算机操作系统啦!这些系统我们就称为嵌入式系统。而要让这些嵌入式系统能够动作,自然就需要制作一套简单的操作系统啰,这个时候,可修改核心让功能变简单的 Linux 则是很好的选择。因此,近年来有相当多的嵌入式系统选择 Linux 做为发展的平台呢!上面这些就是目前常见的几个 Linux 的应用方向。那么根据上面的应用,你觉得应该要怎样学习 Linux 呢?
从『头』学起
其实,不论学什么系统,『从头学起』是很重要的!还记得你刚刚接触微软的 Windows 都在干什么?还不就是由档案总管学起,然后慢慢的完到控制台、玩到桌面管理,然后还去学办公室软件,我想,你总该不会直接就套过这一段学习的历程吧!?那么 Linux 的学习其实也差不多,就是要从头慢慢的学起啦!不能够还不会走路之前就想要学飞了吧! ^_^!
常常有些朋友会写信来问鸟哥一些问题,不过,信件中大多数的问题都是很基础的!例如:『为什么我的使用者个人网页显示我没有权限进入?』、『为什么我下达一个指令的时候,系统告诉我找不到该指令?』、『我要如何限制使用者的权限』等等的问题,这些问题其实都不是很难的,只要了解了 Linux 的基础之后,应该就可以很轻易的解决掉这方面的问题呢!所以请耐心的,慢慢的,将后面的所有章节内容都看完。自然你就知道如何解决了!
此外,网络基础与安全也很重要,例如 IP 的基础,网络的 Gateway 设定基础与网络的相关概念!很多的朋友一开始问的问题就是『为什么我的 mail server 无法收到信件?』这种问题相当的困扰,因为发生的原因太多了,而朋友们常常一接触 Linux 就是希望『架站!』根本没有想到要先了解一下 Linux 的基础!这是相当伤脑筋的!尤其近来计算机怪客 ( Cracker ) 相当多, ( 真奇怪,闲闲没事干的朋友还真是不少.... ) ,一个不小心您的主机就被当成怪客跳板了!甚至发生被警告的事件也层出不穷!这些都是没能好好的注意一下网络基础的原因呀!
所以, 鸟哥希望大家能够更了解 Linux ,好让他可以为你做更多的事情喔!而且这些基础知识是学习更深入的技巧的必备条件呀!因此建议:先理解一下基础的硬件知识,不用一定要全懂(没那么多时间),但是至少要『听过、有概念』即可;先了解一下 Linux 的基础知识,这些包含了『使用者、群组的概念』、『权限的观念』,『程序的定义』等等;必需至少学会一种以上的文书编辑器,例如最好学会通用版本的 vi 啰!实际操作 Linux 时,必定要学习的 Shell ,最好 Shell scripts 也能够了解;如果上面你都通过了,那么网络的基础就是下一阶段要接触的咚咚,这部份包含了『IP 概念』『路由概念』『TCP/IP』等等;如果连网络基础都通过了,那么网站的架设对你来说,简直就是『太简单啦!』
在一些基础知识上,这里推荐一下 Study-Area 里面的基础文章,相当的实用!计算机基础网络基础
选择一本好的工具书
『工具书』对于学习者而言是相当重要的!不过,一本错误观念的工具书却会让新手整个误入歧途....,以下有几个网站有特别介绍了几本书籍,如果有兴趣的话,欢迎参考看看!实在是很建议买一本『基础一点』的工具书来学习 Linux ,等到有一定的基础之后,才来买架设网站以及『安全防护』方面的书籍,尤其是『安全防护』的书籍, VBird 认为,网络安全一定会越来越受到重视的!当然,有兴趣的话,小弟的『鸟哥的 Linux 私房菜 -- 基础学习篇』也可以参考看看啰! ^_^请推荐有关网络的书小红帽技术论坛
实作经验
要增加自己的体力,就是只有运动;要增加自己的知识,就只有读书;当然,要增加自己对于 Linux 的认识,大概就只有实作经验了!所以,赶快找一部计算机,赶快安装一个 Linux 套件,然后快点进入 Linux 的世界里面晃一晃!相信对于你自己的 Linux 能力必然大有斩获!除了自己的实作经验之外,也可以参考网络上一些善心人士整理的实作经验分享喔!例如最有名的 Study-Area ( http://www.study-area.org )等网站。
此外,人脑不像计算机的硬盘一样,除非硬盘坏掉了或者是数据被你抹掉了,否则储存的数据将永远而且立刻的记忆在硬盘中!在人类记忆的曲线中,你必须要『不断的重复练习』才会将一件事情记得比较熟!同样的,学习 Linux 也一样,如果你无法经常摸索的话,那么,抱歉的是,学了后面的,前面的忘光光!学了等于没学,这也是为什么鸟哥当初要写『鸟哥的私房菜』这个网站的主要原因,因为,我的忘性似乎比一般人还要好~~呵呵!所以,除了要实作之外,还得要常摸!才会熟悉 Linux 而且不会怕他呢!
好了,底下列出几个学习网站来提供大家做为参考实作的依据:(注:由于不同的网站当初撰写的时候所用的 Linux 套件或版本与目前的主流并不相同,因此参考他人的实作经验时,必须要特别留意对方的版本,否则反而可能造成你的困扰喔!)
Study-Area鸟哥的私房菜馆狼主的网络实验室卧龙大师的网络技术文件大南国小(林克敏主任文件集)张毓麟先生的小文章台湾 Linux 社群吴仁智的文件集
X-Window 还是 command line由前面的介绍我们可以知道,虽然目前 X-Window 的接口越做越漂亮,而且也已经渐渐的可以来控管整个系统了!但是必须要注意的是, X-Window 毕竟还只是一个 Linux 上面的软件,并不是一套『操作系统』,所以实际上使用他来设定系统的时候,还是有相当多的困扰的,因为毕竟他无法完全的管理好我们的 Linux 啊!虽然就以 Desktop 的型态来说,X-Window 是让 Linux 立刻深入人心的方法。不过, X-Window 在使用的时候还是有相当多的问题的,最大的问题来自于『系统资源的有效应用』,以 VBird 的使用情况来说,我的系统资源并没有很好,但是 X-Window 本身相当的消耗系统资源,如果一开 X-Window ,那么你的内存几乎都被 X-Window 吃光了!您要如何来用剩下的系统资源来进行高效率的其它工作呢?!这也是为什么很多的书籍与网站都会希望使用者架设网站的时候,不要启动图形使用者接口 的原因啰!以下再来说说 X-Window 学习与 command line 学习的角度。X-Window
如果您对于 Linux 的要求是『桌上型计算机』,并且你又不架设网站的话,那么学习 X-Window 对您而言,绝对是需要的!至于指令列模式对你就不是这么必要了!但是,如果 Linux 对你而言是『服务器与工作站』的话,那么 X-Window 可能就不是这么重要,但是指令列模式可就大大的重要啦!因为,如果以 X-Window 作为学习 Linux 的方式,那么未来一定会有死角,这是因为 X-Window 了不起也只是 Linux 的『一套软件』而不是『Linux 核心』此外,目前发展出来的 X-Window 对于系统的管理上还是有无法掌握的地方, 举个例子来说,如果 Linux 本身捉不到网络卡的时候, 请问如何以 X-Window 来捉这个硬件呢?!还有,如果需要以 tarball 的方式来安装软件并加以设定的时候, 请以 X-Window 来架设他!这可能吗?当然可能,但是这是在考验『X-Window 开发商』的技术能力, 对于了解 Linux 架构与核心并没有多大的帮助的!所以说,如果只是想要『会使用 Linux 』的角度来看, 那么确实使用 X-Window 也就足够了,反正搞不定的话,花钱请专家来搞定即可;但是如果想要更深入 Linux 的话,那么指令列模式才是不二的学习方式!服务器端
如果 Linux 对你而言是『生财』的工具,呵呵!那可不是只要学习 X-Window 能够解决的了!举个例子来说好了,假如你的客户人在台北,而你人在远方的台南,他的 Linux 服务器出了问题,要你马上解决他, 请问:要您亲自上台北去修理?还是他搬机器下来让你修理?!或者是直接请他开个账号给你进去设定即可?!想当然尔,就会选择开账号给你进入设定即可啰!因为这是最简单而且迅速的方法!然而这个方法使用的方式却不是 X-Window 作的到的!因为 X-Window 太耗资源,实在不容易让您这样子联机(很麻烦的啦!)所以啰!文字界面是相当重要的!尤其如果想要深入 Linux 的核心时,那么以文字界面来了解 Linux 就更需要了!所以说,不要怕麻烦,还是多摸一些文字界面的东西吧!!帮助会比较大哩!所以基本上, VBird 还是希望大家可以多多的以 文字接口( command line )的方式来学习 Linux 啦!网络数据查询
其实,在网络上面已经有相当多的 FAQ 整理出来了!所以,当你发生任何问题的时候,除了自己检查,或者到上述的实作网站上面查询一下是否有设定错误的问题之外,最重要的当然就是到各大 FAQ 的网站上查询啰!以下列出一些有用的 FAQ 网站给您参考一下:CLDP 中文文件计划Unix 的一般常见问题asklinux还有相当的的网络资源可以查询!如果你有发现更新的信息时,记得来信通知 VBird 喔!
真的没办法、发问吧天助自助者:
一般而言, Linux 在下达指令的过程当中,或者是 log file 里头就可以自己查得错误信息了,举个例子来说,当您下达: ls -l /vbird时,由于系统并没有 /vbird 这个目录,所以会在屏幕前面显示:ls: /vbird: No such file or directory这个错误讯息够明确了吧!系统很完整的告诉您『查无该数据』!呵呵!所以啰,请注意,发生错误的时候,请先自行以屏幕前面的信息来进行 debug ( 除错 )的动作,然后,如果是网络服务的问题时,请到 /var/log 这个目录里头去查阅一下 log file ,这样可以几乎解决大部分的问题了!讨论区的提问:
万一真的经过了自己的查询,却找不到相关的信息,那么就发问吧!不过,在发问之前建议您最好先看一下『提问的智慧』这一篇讨论!然后,你可以到底下几个讨论区发问看看:Study-Area 讨论区鸟哥的私房菜馆讨论区狼主的网络实验室讨论区小红帽技术论坛LinuxFab竹猫星球不过,基本上每一个讨论区的内容是大同小异的,发问的时候一定要注意到某些礼节!最好是先以搜寻的方式搜寻一下该讨论区是否有您需要的文章之后,在发问!这样可以获得事半功倍的功能喔!此外, Netman 兄提供的一些学习的基本方针,提供给大家参考:在Windows里面﹐程序有问题时﹐如果可能的话先将所有其它程序保存并结束﹐然后尝试按救命三键(Ctrl+Alt+Delete)﹐将有问题的程序(不要选错了程序哦)“结束工作”﹐看看能不能恢复系统。不要动不动就直接关机或reset。有系统地设计档案目录﹐不要随便到处保存档案以至以后不知道放哪里了﹐或找到档案也不知道为何物。养成一个做记录的习惯。尤其是发现问题的时候﹐把错误信息和引发状况以及解决方法记录清楚﹐同时最后归类几定期整理。别以为您还年轻﹐等你再弄多几年计算机了﹐您将会非常庆幸您有此一习惯。如果看在网络上看到任何好文章﹐可以为自己留一份copy﹐同时定好题目﹐归类存档。作为一个使用者﹐人要迁就机器﹔做为一个开发者﹐要机器迁就人。学写 script 的确没设定 server 那么好玩﹐不过以我自己的感觉是﹕关键是会得“偷”﹐偷了会得改﹐改了会得变﹐变则通矣。在Windows里面﹐设定不好设备﹐您可以骂它﹔在Linux里面﹐如果设定好设备了﹐您得要感激它﹗其它的一些建议
除了上面的学习建议之外,还有其它的建议吗?确实是有的!其实,无论作什么事情,对人类而言,两个重要的因素是造成我们学习的原动力:成就感兴趣很多人问过我,鸟哥是怎么学习 Linux 的?由鸟哥之前的 自我介绍 与对于 Linux 的接触历程,你大概会知道,原来我本人对于计算机就蛮有兴趣的,加上工作的需要,而鸟哥又从中得到了相当多的成就感,所以啰,就一发不可收拾的爱上 Linux 啰!因此,鸟哥个人认为,学习 Linux 如果玩不出兴趣,他对你也不是什么重要的生财工具,那么就不要再玩下去了!因为很累人ㄋㄟ~而如果你真的想要玩这么一套优良的操作系统,除了前面提到的一些建议之外,说真的,得要培养出兴趣与成就感才行!那么如何培养出兴趣与成就感呢?可能有几个方向可以提供给你参考:建立兴趣:Linux 上面可以玩的东西真的太多了,你可以选择一个有趣的课题来深入的玩一玩!不论是 Shell 还是图形接口等等的,只要能够玩出兴趣,那么再怎么苦你都会不觉得喔!成就感:成就感是怎么来的?说实在话,就是『被认同』来的!怎么被认同呢?写心得分享啊!当你写了心得分享,并且公告在 BBS 上面,自然有朋友会到你的网页去瞧一瞧,当大家觉得你的网页内容很棒的时候,哈哈!你肯定会加油继续的分享下去而无法自拔的!那就是我啦...... ^_^!而且,就鸟哥的经验来说,你『学会一样东西』与『要教人家会一样东西』思考的纹路是不太一样的!学会一样东西可能学一学会了就算了!但是要『教会』别人,那可就不是闹着玩的!得要思考相当多的理论性与实务性方面的咚咚,这个时候,你所能学到的东西就更深入了!鸟哥常常说,我这个网站对我在 Linux 的了解上面真的的帮助很大!协助回答问题:另一个创造成就感与满足感的方法就是『助人为快乐之本!』当你在 BBS 上面告诉一些新手,回答他们的问题,你可以获得的可能只是一句『谢谢!感恩吶!』但是那句话真的会让人很有快乐的气氛!很多的老手都是因为有这样的满足感,才会不断的协助新来的朋友的呢!此外,回答别人问题的时候,就如同上面的说明一般,你会更深入的去了解每个项目,哈哈!又多学会了好多东西呢!参与讨论:参与大家的技术讨论一直是一件提升自己能力的快速道路!因为有这些技术讨论,你提出了意见,不论讨论的结果你的意见是对是错,对你而言,都是一次次的知识成长!这很重要喔! ^_^此外,除了这些鸟哥的经验之外,还有在 BBS 上面有一封对于 Linux 新手相当有帮助的文件数据,大家可以多看一看:Linux 初学者之旅 2002/01Linux 初学者之旅 2002/07最新的 Linux 初学者之旅信息人的有效学习(洪朝贵教授网页)里面提到了几乎新手都会有的问题!此外,在网络上还有另外一篇介绍 Linux 的文章,也蛮好玩的,不过他是 Word 版本,目前并不打算将他修改一番,因为要保持原文件的风貌呀!呵呵!有兴趣的朋友真的可以好好的看一看:Linux 初学者入门