如何学习嵌入式Linux?

2019-07-12 19:59发布

 ——转自亚嵌 随着Linux应用的扩展许多朋友开始接触Linux,根据学习Windwos的经验往往有一些茫然的感觉:不知从何处开始学起。这里介绍学习Linux的一些建议。 一、从基础开始: 常常有些朋友在Linux论坛问一些问题,不过,其中大多数的问题都是很基础的。例如:为什么我使用一个命令的时候,系统告诉我找不到该目录,我要如何限制使用者的权限等问题,这些问题其实都不是很难的,只要了解了 Linux 的基础之后,应该就可以很轻易的解决掉这方面的问题。而有些朋友们常常一接触Linux 就是希望构架网站,根本没有想到要先了解一下Linux 的基础。这是相当困难的。 二、Linux命令是必须学习的:虽然Linux桌面应用发展很快,但是命令在Linux中依然有很强的生命力。Linux是一个命令行组成的操作系统,精髓在命令行,无论图形界面发展到什么水平这个原理是不会变的,Linux命令有许多强大的功能:从简单的磁盘操作、文件存取、到进行复杂的多媒体图象和流媒体文件的制作。举一个例子:Linux的常用命令find,察看man文档,初学者一定会觉得太复杂而不原意用,但是你一旦学会就爱不释手.它的功能实在太强了,在配合exec参数或者通过管道重定向到xargs命令和grep命令,可以完成非常复杂的操作,如果同样的操作用图形界面的工具来完成,恐怕要多花十几陪的时间. 不同版本的Linux命令数量不一样,这里笔者把它们中比较重要的和使用频率最多的命令,按照它们在系统中的作用分成几个部分介绍给大家,通过这些基础命令的学习我们可以进一步理解Linux系统: 安装和登录命令:login、 shutdown、 halt、 reboot 、mount、umount 、chsh 文件处理命令:file、 mkdir、 grep、dd、 find、 mv 、ls 、diff、 cat、 ln 系统管理相关命令: df、 top、 free、 quota 、at、 lp、 adduser、 groupadd kill、 crontab、 tar、 unzip、 gunzip 、last 网络操作命令:ifconfig、 ip 、ping 、 netstat 、telnet、 ftp、 route、 rlogin rcp 、finger 、mail 、nslookup 系统安全相关命令: passwd 、su、 umask 、chgrp、 chmod、chown、chattr、sudo、 pswho 三、选择一本好的工具书:工具书对于学习者而言是相当重要的。一本错误观念的工具书却会让新手整个误入歧途。目前国内关于Linux的书籍有很多不过精品的不多,笔者强烈建议阅读影印本的“O'Reilly原版Linux图书http://www.oreilly.com.cn/ ”,而且出版社还提供了一个非常好的路线图:http://www.oreilly.com.cn/guide/guide_linux.php。 四、选择一个适合你的Linux发行版本:目前全球有超过1百多个Linux发行版本,在国内也能找到十几个常见版本。如何选择请根据你的需求和能力,Redhat Linux 和Debian Linux是网络管理员的理想选择。对于英语不是很好的读者红旗Linux、中标Linux这些中文版本比较适合。现在一些Linux网站有一些Linux版本的免费下载,这里要说的是并不适合Linux初学者。 五、 养成在命令行下工作: 一定要养成在命令行下工作的习惯,要知道X-window只是运行在命令行模式下的一个应用程序。在命令行下学习虽然一开始进度较慢,但是熟悉后,您未来的学习之路将是以指数增加的方式增长的。从网管员来说,命令行实际上就是规则,它总是有效的,同时也是灵活的。即使是通过一条缓慢的调制解调器线路,它也能操纵几千公里以外地远程系统。 六、 选择一个适合你的Linux社区: 随着Linux应用的扩展,出现了不少Linux社区。其中有一些非常优秀的社区:www.linuxforum.net(国内最高水平GNU站点)、http://www.chinaunix.net/ (中国最大的Unix技术社区),但是这几个论坛往往是Linux高手的舞台,如果在探讨高级技巧的论坛张贴非常初级的问题经常会没有结果。 七、勤于实践: 要增加自己Linux 的技能,只有通过实践来实现了。所以,赶快找一部计算机,赶快安装一个 Linux 发行版本,然后进入精彩的Linux世界。相信对于你自己的 Linux 能力必然大有斩获。此外,人脑不像计算机的硬盘一样,除非硬盘坏掉了或者是资料被你抹掉了,否则储存的资料将永远而且立刻的记忆在硬盘中。在人类记忆的曲线中,你必须要不断的重复练习才会将一件事情记得比较熟。同样的,学习 Linux 也一样,如果你无法经常学习的话,学了后面的,前面的忘了。你对Linux命令熟悉后你可以开始搭建一个小的Linux网络,这是最好的实践方法。Linux是网络的代名词,Linux网络服务功能非常强大,不论是邮件服务器、Web服务器、DNS服务器等都非常完善。当然你不需搭建所有服务,可以慢慢来。需要说明的是这个Linux网络对于初学者有两三台计算机即可,其中一台计算机最好安装Windows系统。自己多动手,不要非要等着别人帮你解决问题 八、 如何得到联机匡助:和私有操纵系统不同,各个Linux的发行版本的技术支持时间都较短,这对于Linux初学者是往往不够的。实在当你安装了一个完整的Linux系统后其中已经包含了一个强盛的匡助,只是可能你还没有发现和使用它们的技巧。
  1. 主流Linux发行版都自带非常具体的文档(包括手册页和FAQ),从系统安装到系统安全,针对不同层次的人的详尽文档,仔细阅读文档后40%题目都可在此解决。
  2. 查阅经典工具书和Howto,特别是Howto是全球数以万计的Linux、Unix的经验总结非常有参考价值通常40%的题目同样可以解决。
  九、在Linux论坛获取匡助:假如上面的措施没有解决题目,此时你就需要Linux社区的匡助了。Linux的使用者一般都是专业人士,他们有着很好的电脑背景且愿意协助他人,Linux高手更具有鼓励新手的文化精神。如何在Linux社区获得匡助,需要说明的是你要有周全的思索,预备好你的题目,不要草率的发问,否则只会得到到草率的回答或者根本得 不到任何谜底。越表现出在寻求匡助前为解决题目付出的努力,你越能得到实质性的匡助。最好先搜寻一下论坛是否有您需要的文章。这样可以获得事半功倍的效果。 下面笔者在论坛看到的一个好题目:“安装红旗4.0 后,系统紫光输入法自带的双拼方案和我的习惯不一样,如何自定义双拼方案解决?谢谢?”这个题目很简练,笔者五分钟后就给出了解决方法:“首先备份原文件到其他目录,然后删掉/usr/local/unispim/unispimsp.ksc,编纂/usr/local/unispim/unispimsp.ini ,最后重启动计算机,天生新的unispimsp.ksc”另外得到回复后假如题目解决,向匡助过你的人发个说明,让他们知道题目是怎样解决的,这种增补有助于他人在邮件列表/新闻组/论坛中搜索对你有过匡助的完整解决方案,这可能对他们也很有用。 下面看看一个让人无法回答的题目:“救命各位高手,向你们请教一些题目:如何在Linux下配制HTTP、FTP、Samba、DNS、DHCP、Sendmail服务器,谢谢” 这样的题目我想即使Linux高手也很难快速正确精练的回答你。 你需要提供精确有效的信息。这并不是要求你简朴的把成吨的犯错代码或者数据完全转储摘录到你的提问中。假如你有庞大而复杂的测试前提,尽量把它剪裁得越小越好。可能你会碰到这种情况,对于一个题目会泛起不同内容回答,这时你需要通过实践来验证。另外把这个题目放在其他Linux社区哀求匡助也是一种选择。假如得不到谜底,请不要认为我们觉得无法匡助你。有时只是看到你题目的人不知道谜底罢了。这时换一个社区是不错的选择。 另外发问的时候一定要留意到某些礼仪。由于Linux社区是一个疏松的组织、也不承担回复每个帖子的义务。它不是技术支持。
  十、用Unix思维学习Linux:Linux是参照Unix思惟设计的,理解把握Linux必需按照Unix思维来进行。思惟性的转变比暂时性的技术进步更有用,由于他能匡助你加快学习速度。
  十一、学习专业英文:假如你想深入学习Linux,看不懂由于文档其实是太难了。写的最好的,最全面的文档都是英语写的,最先发布的技术信息也都是用英语写的。即便长短英语国家的人发布技术文档,也都首先翻译成英语在国际学术杂志和网络上发表。安装一个新的软件时先看README,再看INSTALL然后看FAQ,最后才动手安装,这样碰到题目就知道为什么。假如说明文档不看,结果出了题目再去论坛来找谜底反而铺张时间。
  十二、最后是Linux学习的路线图:
  1. 把握至少50个以上的常用命令。
  2. 认识Gnome/KDE等X-windows桌面环境操纵 。
  3. 把握.tgz、.rpm等软件包的常用安装方法
  4. 学习添加外设,安装设备驱动程序(好比网卡)
  5. 认识Grub/Lilo引导器及简朴的修复操纵 。
  6. 认识Linux文件系统和目录结构。
  7. 把握vi,gcc,gdb等常用编纂器,编译器,调试器。Linux下编程,主要是选用一个文本编纂工具(如vi eclipse nano gedit等)编写,再用GCC编译链接,最后用gdb调试。
  8. 理解shell别号、管道、I/O重定向、输入和输出以及shell脚本编程。
  9. 学习Linux环境下的组网。
  十三、深入学习linux的大致方向
  1.文件系统:linux的相关的系统设定,各种linux环境下的软件的使用与调试。这类知识是基础,但并不简朴,学好了,绝对可以当讲师的。
  2.网络服务:linux这种类UNIX的操纵系统其另一个作用域是网络服务器。linux本身自带几乎所有网络上的用得到的服务,可以充当任何网络服务器,好比DNS、DHCP、ftp、NFS、Proxy等等。而且其特点是,所有这些服务的配置与设定都可以通过文本形式的配置文件进行配置。所以学好linux下网络服务的配置与使用,完全可以当CIO(首席信息官)了,由于已经具备linux网络工程师的能力了。
  3.软件设计:linux是开源的大环境,也是较原始的编成环境,其下的C/C++、PHP等都是比windows下更纯语言。但linux下高级的开发环境较少,不像VC等工具好使,所以linux下的软件工程师要具备的知识更多。要是学好了linux下的软件设计,也算编成是高手了。
  linux这三大块知识的学习不相互影响,但也有相互依靠和促进的作用,想深入某一个领域,不见得要其它领域都把握,但建议也对其它领域也有所涉及,会有事半功倍的效果。
  十四、学习嵌入式linux的三个方向
  1、嵌入式linux应用软件开发
  2、linux内核的剪裁和移植
  3、嵌入式linux底层驱动的开发