谈一谈我的 Linux 学习方法

简介: 谈一谈我的 Linux 学习方法

很多朋友应该已经知道,我是由机械强行转行到 Linux。但是,我是 Linux 应用开发,而不是运维!所以,很多朋友拿一些运维相关的问题来问我,我也答不上来啊!


我不是说运维工程师怎样,只是说,这是两个不同的方向。我是做 Linux 的,但不代表关于Linux的什么都懂。就像你们天天用 Windows 电脑,但你们会在 Window 下开发个应用程序吗(专业人员除外)?


由于我自己也是个转行的,所以我的底子相对科班来讲肯定要薄弱。但是,我也是在不停的学习,丰富自己的知识,提高自己的技能。下面我结合自己的自学经历,谈一谈自己对于Linux学习的一些经验与看法。


很多学习经验我已经分享到了我的那篇自学之路,点击下文即可查看:


Linux应用开发自学之路


Linux 常用命令怎么学?


不管是做 Linux 哪个方向的,Linux 的一些基本操作是肯定需要过关的。对于这些基本操作,百度上搜索一下「Linux 常用命令」,会出来一堆的资料。这些资料里,挑一个最顺眼的看就可以了。


很多人推荐「鸟哥的私房菜」,但我并不是很推崇它。对于运维人员来讲,这是一本必备书,但如果仅仅是学习 Linux 的基本操作的话,完全没必要这本书。为啥呢?因为这本书面面俱到,对于初学者来讲,肯定是量太大了。


Linux 的命令有非常多个,但常用的命令可能也就那么二三十个。所以,先把那些命令全部学完之后,再去拓展更高级的命令。有些命令你可能一辈子都用不到,所以千万不要要求自己全部掌握 Linux 所有命令。


Linux 应用开发是什么?


很多朋友一直在问我,Linux 应用开发到底是什么?我通常会拿 Windows 应用程序来比喻:


QQ 是 Windows下的一个应用程序是吧?Windows 是操作系统,而 QQ 就是跑在 Windows 上的一个应用程序。而 Linux 应用开发就是在 Linux 操作系统上开发一个类似于 QQ 这样的应用程序。


所以 Linux 应用开发更偏向的是 开发 ,而运维更偏向的是 Linux 的一些操作。

对于 Linux 应用开发的学习请查看下文:


Linux应用开发自学之路

Linux 底层开发学习方法


Linux 还有一个重要的方向是底层开发。很多公司,特别是小公司,经常是底层开发人员由应用开发人员一并兼任,所以,底层开发也是嵌入式人员需要掌握的技能之一。


对于底层开发,一般涉及到四个方面:bootloader、内核、驱动程序、根文件系统。学好这四个方面,基本上就是一个合格的底层开发工程师。


bootloader


bootloader 其实就是一个复杂一些的裸板程序。虽然复杂了一些,但还是很多人把它看懂了,并且很多高手甚至自己动手写了另外一个功能相同的 bootloader。

bootloader 涉及到比较底层的操作,直接面对硬件,所以需要有一定的硬件知识。可以参考的书籍是:ARM体系架构与编程嵌入式Linux应用开发完全手册,除此之外,可以参考韦东山的1期视频


内核


内核是一个非常庞大的代码,想要把它看完读懂要花费不少的时间。当然,对于新手,千万不要要求自己去看懂内核,除非你是学生。对于内核,可以参考两本书:Linux内核完全注释Linux内核源代码情景分析


驱动程序


同样的,驱动程序部分也是直接面对硬件,所以硬件知识是必不可少的。要想写好驱动,一定要学会看原理图,读懂芯片手册。没有别的办法,多练吧。对于驱动,可以参考的书有:Linux设备驱动开发Linux设备驱动开发详解嵌入式Linux应用开发完全手册,除此之外,可以参考韦东山的2期视频


根文件系统


根文件系统首先是内核启动时所mount的第一个文件系统,内核代码映像文件保存在根文件系统中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行。


Tips:


对于底层开发的学习,没有特别的办法,就是要做到多看、多理解、多练。有时可能会比较繁琐,写了很多代码,改了很多参数,但是却一直没达到预期效果。遇到这种情况,一定要沉住气,一步步排查,找到问题的症结点。

目录
相关文章
|
1月前
|
Ubuntu 物联网 Linux
从零安装一个Linux操作系统几种方法,以Ubuntu18.04为例
一切就绪后,我们就可以安装操作系统了。当系统通过优盘引导起来之后,我们就可以看到跟虚拟机中一样的安装向导了。之后,大家按照虚拟机中的顺序安装即可。 好了,今天主要介绍了Ubuntu Server版操作系统的安装过程,关于如何使用该操作系统,及操作系统更深层的原理,还请关注本号及相关圈子。
|
26天前
|
缓存 监控 Linux
Linux系统清理缓存(buff/cache)的有效方法。
总结而言,在大多数情形下你不必担心Linux中buffer与cache占用过多内存在影响到其他程序运行;因为当程序请求更多内存在没有足够可用资源时,Linux会自行调整其占有量。只有当你明确知道当前环境与需求并希望立即回收这部分资源给即将运行重负载任务之前才考虑上述方法去主动干预。
377 10
|
1月前
|
Ubuntu Linux 图形学
推广与体验Ubuntu Linux的便捷方法
如果你的朋友或家人对尝试Linux感兴趣,但希望在安装之前先体验一下,你可以分享以下链接给他们:Ubuntu在线导览。通过这个链接,他们可以在任何地方轻松体验Ubuntu,无需安装即可深入了解这个流行的操作系统。
|
1月前
|
XML 缓存 Linux
在Linux环境下解决Visual Studio Code字体显示异常和字体替换方法。
解决Linux下VS Code字体显示异常,需要对Linux字体渲染机制有所理解,并对VS Code的配置选项进行合理设置。替换字体时则要通过系统字体配置或VS Code设置来完成。通过上述方法,可以有效地解决字体显示问题,从而提升代码编辑的视觉体验。
160 0
|
4月前
|
NoSQL Linux 编译器
GDB符号表概念和在Linux下获取符号表的方法
通过掌握这些关于GDB符号表的知识,你可以更好地管理和理解你的程序,希望这些知识可以帮助你更有效地进行调试工作。
186 16
|
2月前
|
网络协议 Ubuntu Linux
Wireguard in Linux的安装方法
本文介绍了如何在Ubuntu和Rocky Linux中安装配置WireGuard,并探讨了配置过程中可能出现的DNS泄露问题及解决方法,包括通过nmtui设置DNS及调整DNS优先级参数。
|
5月前
|
Linux Shell
Linux系统下快速批量创建和删除文件的方法
总的来说,使用shell脚本来批量处理文件是一种非常强大的工具,只要你愿意花时间学习和实践,你会发现它能大大提高你的工作效率。
283 19
|
10月前
|
Linux 编译器 开发工具
【Linux快速入门(三)】Linux与ROS学习之编译基础(Cmake编译)
【Linux快速入门(三)】Linux与ROS学习之编译基础(Cmake编译)
550 2
|
10月前
|
存储 安全 Linux