今晚听了一个关于linux的讲座,算是比较直接地了解了关于开源linux方面总体的前沿应用,感触很深。

BKJIA独家特稿】作者前言:本人从事windows、linux/unix系统工程师多年了,也做过相当长时间的项目实施工程师,维护和架构过大型广告网站、商业网站及证券类网站,感觉对linux/unix算是比较熟悉了,所以就这个职业的规则算是有点心得了吧。

姓名:李涛

  做讲座的大哥在整个过程中以一种侃侃而谈的方式,介绍了他从01年开始学习、实践到的知识,经验~基本上是想到什么就说什么,可能这就是技术人才特有的气质吧。从他身上我看到了对技术的渴望和执着追求。虽然我的愿望也是这样的,但在水平方面却有着千差万别。

BKJIA编辑推荐:SA,神仙与装机男:运维的工作到底啥样儿?

学号:17021211100

  对于我来说,也对于很多学计算机专业的同学来说,到大三的现在仍然没有找准自己在IT技术上的方向。我进入Linux的学习太晚了,主要是出于对这种技术的不了解,可以说是一些错误的认识。但我们的师兄站在讲台上随意而谈大量开源软件和内核方面的专业术语的时候,我在思考我该怎么办,我的未来怎样走?我能从事什么样的工作?此刻我还会为使用别人做好的漏洞扫描工具去试图攻击别人防范低下的电脑而快乐么?

另外,抚琴煮酒有幸担任过一段时间的RHCE教学工作,发现在教学过程中,许多学员都对为什么学习Linux感到很迷惘,更别谈什么职业规划了。我在工作和学习中,也接触了不少爱学习的人,但发现他们在学习的过程中都走进了误区,白白浪费了不少精力;我写此文的目的,就是说明一下linux/unix的从业现状,帮助同学们走出学习的误区,希望能起到抛砖引玉的作用。

转载自 有修改

  师兄说linux学习的过程很辛苦,甚至是痛苦。这些在决定考研的那一刻开始,我已经准备好了。对于以后,最大的痛苦不是在学习的过程,而是在于,我们为了开源事业,为linux的传承付出大量的时间和努力,甚至是一生的时间的时候,我们不知道这样做是否值得?是否快乐?


【嵌牛导读】:本文主要介绍了在嵌入式开发学习的过程中,需要掌握的专业技能和学习的过程。

  或许这些都不重要,甚至功利一点,只要有个好的工作,能有条件和小白在一起,已经足够!现在我们的迷茫,在以后总有个时间,得到一个完整的答案。没错,现在的时间已经不容许我再多加犹豫。痛痛快快地决定,比萎缩不前来得更有意义。此刻我面对linux的激情已经点燃,由于经历,决定我未来的结局只会是大器不成或大器晚成,不变的是此刻我终于找准了自己的方向,就是朝着很多人梦想着的“linux工程师”不懈努力。在我的心里,有几个字再次成为今晚的主题:开源传万世,全赖你我他。

根据同事多年跟踪的学员情况,我们发现,学员在同等条件学习Linux后,选择开发要比系统应用薪水要上升的更为迅速,而且更容易突破5000、8000或10000等每月的门槛;但是这个方向难度会更大,同时会更枯燥些,需要毅力和身体,更需要兴趣。如何入门及如何规划自己的Linux学习之路一直是困扰Linux爱好者的一大难题,实际上,Linux的入门与学习并不难,只是由于长期使用其他操作系统的习惯与没有正确的引导指向,所以一个本身不是难题的问题变成了难题。

【嵌牛鼻子】:C语言,Linux系统

  以下散碎地罗列下,会议的一些收获(观点没有验证正确性):

我这里想提一个问题给同学们:企业为什么要用linux,为什么要用unix?许多同学会说Linux/unix更好,更稳定,其实不然。企业为什么要用它们,其实是本着节约成本和创造价值的目的。服务器操作系统的软件投入和服务投入是相当大的经费,这也是现在为什么开源免费的CentOS和FreeBSD越来越受欢迎的原因之一。再说下硬件的负载均衡器,我说下大家最为熟悉的F5,性能一般的17万;性能越好,价格也水涨船高。但其实许多企业所需要的Linux集群环境其实并发不是大太,完全可以用开源免费的软件来代替,例如LVS、Nginx,而这些软件一般都是部署在Linux上,这也是近年来Linux越来越受欢迎的原因之一。

【嵌牛提问】:如何学习Linux?

  1、linux是一个跨平台兼容得很好的操作系统;

另外,千万不能仅仅学习Linux系统本身。Linux仅仅是操作系统,重要的是其上的应用,就是能为你能创造多少价值。学习Linux的一个误区在于精力只是局限于Linux本身,从Linux的操作到Linux的内核,也不管自己到底要干嘛;但是系统毕竟是拿来用的,学习使用Linux的目的是创造效益,如果不是仅仅制作Linux系统,不是加入Red
Hat这样的专业Linux发布版厂商,那么你在学习了Linux基础后就跟掌握了Windows没两样,很显然这是不够的,你还需要更进一步的学习:选择Linux上的应用,或者Linux上的软件开发,当然还有数据库方向。下面我就这三方面详细说明下:

【嵌牛正文】:

  2、开源不等于免费;

a)Linux的系统、网络、服务、集群、网站、网络应用方向:

嵌入式学习是一个循序渐进的过程,如果是希望向嵌入式软件方向发展的话,目前最常见的是嵌入式Linux方向,关注这个方向,我认为大概分3个阶段:

  3、linux可以在内核的基础上做大量的开发,以适应不同用户需求;

1、Web应用服务器,如sina、百度等大型网站

1、嵌入式Linux上层应用,包括QT的GUI开发

  4、Apache、DNS、mysql是开源软件方面的开发典范,很多的公司都基于源码的基础上开发出成熟的应用;

2、Mail应用服务器,如163或外企mail系统等

2、嵌入式Linux系统开发

  5、开源方面的很好应用实例:使用DNS域名服务器开发分布式服务、SNORT入侵检测开发应用、开发mysql应用于非关键性方向;

3、中间件或J2EE服务器,如为JBOSS Weblogic做平台

3、嵌入式Linux驱动

  6、团队合作一方面体现于团队间没有任何保留的内容,个人的价值由团队的价值来体现;

4、网络应用等。

嵌入式目前主要面向的几个操作系统是,Linux,WINCE、VxWorks等等。

  7、linux之所以在嵌入式应用上有广阔的前景在于,linux可以随意增加、删除部分功能来实现系统最大的精简,使系统能置于容量很小的存储设备中。

b)嵌入式开发、UNIX/Linux应用系统开发,Linux内核驱动开发方向,主要有以下几类:

Linux是开源免费的,而且其源代码是开放的,更加适合我们学习嵌入式。

  ……ca88会员登录入口 1

1、Linux下的C/C++ 系统程序开发

你可以尝试以下路线:

2、Linux平台Java体系开发和PHP开发

(1)
C语言是所有编程语言中的强者,单片机、DSP、类似ARM的种种芯片的编程都可以用C语言搞定),因此必须非常熟练的掌握。

3、Linux下的图形界面开发

推荐书籍:《The C Programming Language》
这本经典的教材是老外写的,也有中译版本。

4、Linux底层内核/驱动开发

(2)
操作系统原理,是必需的,如果你是计算机专业毕业那也就无所谓了,如果是非计算机专业的就必须找一本比较浅显的计算机原理书籍看一看,把啥叫“进程”“线程”“系统调度”等等基本问题搞清楚。

5、嵌入式Linux开发等。

(3)Linux操作系统就是用C语言编写的,所以你也应该先学习下Linux方面的编程,只有你会应用了,才能近一步去了解其内核的精髓。

c)Linux下的数据库,如Mysql、oracle和windows下的SQL Server及DB2等。

推荐书籍:《UNIX环境高级编程》(第2版)

数据库的重要性我就不重复了,而DBA的作用称得上举足轻重了:在技术类岗位的薪资待遇上,总监之下就是DBA了。BKJIA也有专门的数据库频道,编辑在这里推荐一下。

(4)
了解ARM的架构,原理,以及其汇编指令,我们在嵌入式开发中,一般很少去写汇编,但是最起码的要求是能够看懂arm汇编。

以上是Linux/unix发展的三个方向,大家可以在平时工作和学习中有所偏重,三个专业精通一个即可。注意我这里说的是精通,而非仅仅熟悉的程度。

(5) 系统移植的时候,就需要你从最下层的

如果按照地域划分,Linux/unix系统运维方面的工作适合在北京、上海、深圳和广州,开发比较适合在杭州和南京等地区。说来惭愧,我生活的武汉,Linux/unix应用比较少,其系统运维方面的工作还真是不好找,我2009年回武汉发展时,好不容易托猎头朋友在外企找了个system
admin的职位;而且北京、上海那边许多成熟的开源技术,如LVS、CDN,在武汉这边基本是看不到的,甚是遗憾。

bootloader开始,然后内核移植,文件系统移植等。而移植这部分对硬件的依赖是非常大的,其配置步骤也相对复杂,也没有太多详细资料。

我这里想说的是:如果是初学Linux/unix的同学,建议可以以RHEL/CentOS为主,在找工作中尽量不要想到待遇问题,在工作实践中,尽量熟悉shell和一些基础的网络应用,内网开发服务器的配置环境一定要熟悉;如果有机会出外做项目的,一定要兢兢业业,因为这个是成长得最快最好的时候。另外,无论是学习还是施工期间,有关环境配置一定要形成文档,尽量写得详细和完善,这样无论是对自身技术提高还是跟同事进行工作交接都是非常有帮助的;如果没有对外项目的机会,可以写技术型博客,详细记录自己的学习过程。有兴趣的可参考田逸兄的博客,建议学习。如果想进一步提高自己的水平,建议多上一些跟linux/unix有关的论坛,跟一些同行或技术大牛交流,这样提高起来也非常快。

(6) 驱动开发

如果是资深的linux/unix的系统管理员,建议可以脱离系统级别,向网络架构师的发向发展。网络架构是件艺术活,有时系统性能就是看网站架构师的能力了。通常情况下,此职位由公司的技术总监担任,它要求技术总监对系统、程序、网络及数据库都有相当的了解,这个也是抚琴煮酒目前努力的方向。唠唠叨叨半天了,希望我这篇文章对广大的Linux新人及系统管理员有所帮助,最后祝大家工作愉快!

linux驱动程序设计既是个极富有挑战性的领域,又是一个博大精深的内容。

抚琴煮酒的相关文章】

linux驱动程序设计本质是属于linux内核编程范畴的,因而是对linux内核和内核编程是有要求的。在学习前你要想了解linux内核的组成,因为每一部分要详细研究的话足够可以扩展成一本厚书。

以上只不过是大概的框架,在实际的开发中还会涉及很多东西,比如:交叉编译、makefile、shell脚本等等,所以说学习嵌入式的周期较长,门槛较高,自学的话更是需要较强的学习能力和专业功底。只要能坚持下来一定会取得成功!

嵌入式是一个比较大的概念,有四个分支(主要)

1.微控制器(单片机为例)

2./微处理器(arm为例)

3.dsp(数字信号处理)

4.soc(片上系统)

对于我们初学者而言,首先要学习单片机,以51为代表,等你学好51之后,可以深入学习更艰难的东西;当然,并不是说你只需要学习单片机;要想学好单片机,你还得学c语言,得学汇编,得学一大堆应用软件;等到单片机能够掌握的不错的时候又需要自己进行原理图、PCB板的设计;还得掌握系统设计的工程管理什么的;比较多……

单片机还是比较简单的,等到学好之后,开始学习arm的时候,你就接触的多了,什么操作系统啊、驱动编写啊、内核移植啊、应用程序的添加啊、上位机的编写啊,那个就多了,不过到时候你就全知道了。。。

ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标:

(1)掌握主流嵌入式微处理器的结构与原理(初步定为arm9)

(2)必须掌握一个嵌入式操作系统(初步定为uclinux或linux,版本待定)

(3)必须熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。

从事嵌入式软件开发的好处是:

(1)目前国内外这方面的人都很稀缺。这一领域入门门槛较高,所以非专业IT人员很难切
入这一领域;另一方面,是因为这一领域较新,目前发展太快,大多数人无条件接触。

(2)与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不低)。

(3)哪天若想创业,搞自已的产品,嵌入式不像应用软件那样容易被盗版。硬件设计一般
都是请其它公司给订做(这叫“贴牌”:OEM),都是通用的硬件,我们只管设计软件就变成自己的产品了。

(4)兴趣所在,这是最主要的。

从事嵌入式软件开发的缺点是:

(1)入门起点较高,所用到的技术往往都有一定难度,若软硬件基础不好,特别是操作系统级软件功底不深,则可能不适于此行。

(2)这方面的企业数量要远少于企业计算类企业。

(3)有少数公司经常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。但大多数公司也并无此要求,只要有经验即可。

(4)平台依托强,换平台比较辛苦。

兴趣的由来:

1、成功观念不同,不虚度此生,就是我的成功

2、喜欢思考,挑战逻辑思维

3、喜欢C语言

4、喜欢底层开发,讨厌vb类开发工具(并不是说vb不好)

5、发展前景好,适合创业,不想自己要死了的时候还是一个工程师

方法步骤:

1、基础知识

目的:能看懂硬件工作原理,但重点在嵌入式软件,特别是操作系统级软件,那将是我的优势。

科目:数字电路、计算机组成原理、嵌入式微处理器结构、汇编语言、C/C++、编译原理、离散数学、数据结构和算法、操作系统、软件工程、网络、数据库。

方法:虽科目众多,但都是较简单的基础,且大部分已掌握。不一定全学,可根据需要选修。如thec++programminglanguage(一直没时间读)、数据结构-C2。

2、学习linux

目的:深入掌握linux系统。

方法:使用linux—〉linxu系统编程开发—〉驱动开发和分析linux内核。看几遍后,看情景分析,对照深看,两本交叉,深是纲,情是目。剖析则是0.11版,适合学习,最后深入代码。

主攻书籍:linux内核完全剖析、unix环境高级编程、深入理解linux内核、情景分析和源代。

3、学习嵌入式linux

目的:掌握嵌入式处理器其及系统。

方法:

(1)嵌入式微处理器结构与应用:直接arm原理及汇编即可,不要重复x86。

(2)嵌入式操作系统类:ucOS/II简单,开源,可供入门。而后深入研究uClinux。

(3)必须有块开发板(arm9以上),有条件可参加培训(进步快,能认识些朋友)

主攻书籍:毛德操的《嵌入式系统》及其他arm9手册与arm汇编指令等。

4、深入学习

A、数字图像压缩技术:主要是应掌握MPEG、mp3等编解码算法和技术。

B、通信协议及编程技术:TCP/IP协议、802.11,Bluetooth,GPRS、GSM、CDM
A等。

C、网络与信息安全技术:如加密技术,数字证书CA等。

D、DSP技术:DigitalSignalProcess,DSP处理器通过硬件实现数字信号处理算
法。

说明:太多细节未说明,可根据实际情况调整。重点在于1、3,不必完全按照顺序作。对于学习C++,理由是C++不只是一种语言,一种工具,她还是一种艺术,一种文化,一种哲学理念、但不是拿来炫耀得东西。对于linux内核,学习编程,读一些优秀代码也是有必要的。

注意:
要学会举一反多,有强大的基础,很多东西简单看看就能会。想成为合格的程序员,前提是必须熟练至少一种编程语言,并具有良好的逻辑思维。一定要理论结合实践。

不要一味钻研技术,虽然挤出时间是很难做到的,但还是要留点余地去完善其他的爱好,比如宇宙,素描、机械、管理,心理学、游戏、科幻电影。还有一些不愿意做但必须要做的!

永远不要梦想一步登天,不要做浮躁的人,不要觉得路途漫上。等机会来了在创业(不要相信有奇迹发生,盲目创业很难成功,即便成功了发展空间也不一定很大)。

Author

发表评论

电子邮件地址不会被公开。 必填项已用*标注