此文是博主佐须之男网易云电台《嵌入式开发那些事》的文字稿,音频地址如下:
http://music.163.com/#/program?id=1369279797
大家好我是佐须之男,我从08年至今一直从事着路由器相关的工作:固件定制、技术咨询、开发培训,是一名自由职业者(博客:http://forgotfun.org)。在培训班中有很多学员问OpenWrt如何上手、需要具备哪些基础知识?虽然我在OpenWrt领域谈不上是专家级别,但还是想给大家聊一下我的看法和观点,起一个抛砖引玉的作用。
记得在我刚参加工作时,很多小企业为了降低成本,对嵌入式开发人员的能力要求极高,需要你既熟悉软件又精通硬件,自己画板然后写软件都是正常不过的事。这是真事,我很多前辈的确是全能型人才,我一直把他们作为榜样。现在很多老板恨不得回到那个时代,当年的大牛真的是物美价廉,他们用极低的人力成本获取了巨大的财富。很多人对嵌入式的认知还停留在我工作那会儿,其实现在嵌入式对个人能力要求并没有以前那么苛刻了,现在毕竟都是团队合作。
首先OpenWrt是一套小型的Linux系统,知识体系继承自Linux。因此对于新手来说,首先需要补充的知识肯定是Linux相关的。现在Linux相关书籍那么多。不可能每本都去看,所以最佳的学习途径还是借助互联网。反观我以前看的Linux书籍,其实很多都是国内外资料的整理和翻译,真正有价值的书籍并不多。
学习OpenWrt可以从两个方面入手,命令和文件。命令就是OpenWrt自带的命令,我们可以逐个去理解每个命令的用法和作用。文件就是OpenWrt系统的文件构成,通过阅读文件内容和了解文件作用,这样可以加深理解OpenWrt的运行机制。比如insmod命令,我们可以先通过man手册查看此命令的用法,然后在终端中试验。文件这块呢,比如/etc/passwd文件,网上有很多介绍此文件作用的文章,可以通过修改文件来试验效果。加以时日,相信大家可以在短期能增加对OpenWrt理解和认识。
上面我所说的是使用级别,假如需要达到开发级别需要更多的努力。因为一旦涉及开发,使用这块的基础知识是必不可少的。那说下OpenWrt开发需要哪些知识?首先是能看懂C语言,并不需要你熟练掌握C语言,能改简单的代码就OK,具体为啥我们后面会解释到。其次就是需要掌握一门解释类语言比如python、lua、shell,这些其实是开发过程中最常用的语言。随着技术的发展,C语言在嵌入式行业已经呈现边缘化的趋势,在整个开发中只是用来开发驱动等底层,很少用来实现业务逻辑的,未来主流趋势的是lua或python。现在主流芯片已经采用ARM架构,嵌入式行业已经越过了性能瓶颈,迎来的是业务瓶颈。智能家居、物联网时代假如还是采用爷爷辈的C语言的话,那估计等你开发完别家产品估计都升级到第二代或者第三代了,你还在搞原型。关于界面这块,很多公司都配备了前端,基本上HTML部分由前端包揽。所以基本上你只要掌握一门语言,然后会简单的html就可以进入OpenWrt开发的殿堂。
下面做下总结,OpenWrt其实是很容易入门的,除非你是做相关封闭领域的开发,比如无线mesh、wifi探针这类可能会遇到天花板。假如遇到难题大家可以来找我,顺便给我的“跟着佐大学Lede/OpenWrt开发入门培训班”做个广告,有兴趣的可以了解下。https://forgotfun.org/2018/04/openwrt-training-2018.html