科技 > 操作系统 > Linux

[转]做为一个初学者,对linux一无所知,到底有没有一个公式化的方法可以一步一步进入高手的行列呢?

312人参与2020-05-10

做为一个过来人,我谈谈我自己的看法,欢迎大家补充:

首先肯定的一点是:不要一上来就看内核代码,基本上你会很快被挫败感打败。内核正在变得越来越庞大,学习曲线越来越陡峭,当你一无所知的时候冒然进入linux kernel,你会发现处处都是障碍,处处都是大坑,你根本走不下去。最好的方法是把对内核源代码的热情先放在心里,从基本功开始。

我认为的基本功包括两个方面:
1、linux的基本操作。内核中的很多设计都是源于应用,你不理解用户空间的操作,也就不会知道内核空间在干什么。这时候,你需要做的就是在自己的计算机上安装一个gnu/linux操作系统,debian、ubuntu什么的都ok,最好去掉其他的os,这可以强迫你在linux下进行学习,工作,生活。在这个过程中,你可能需要google检索一些信息,安装一些软件,学习使用这些软件,理解一些基本的linux的背景知识......如果你想要从事底层的软件开发,那么尽量在终端下工作,这样会让你和linux kernel更接近一些,从而提供更多关于内核的基础知识。

2、第二个方面是软件相关的基础知识。你最好学习一些软件的逻辑思维,学习掌握一门语言,当然最好是c语言。掌握其基本的语法和语义,然后在linux环境下进行实际训练。这里不得不隆重推出一本经典之作《unix高级环境编程》,仔细阅读这本书,然后动手实践,编写linux下的小程序,给自己找些乐子。

有了基本功之后,你可以选择强攻linux kernel,不过呢我还是建议从一个小的rtos入手,构建下面的知识体系:
1、关于os的基本概念。什么是进程、什么是线程,什么是中断,什么是文件系统,什么是内存管理,什么是上下文,什么是设备管理等等。

2、关于处理器以及周边硬件的基础知识。可以选择arm,也可以选择其他的处理器,主要是从软件角度来理解一个处理器,知道cpu的基本组成,知道什么是mmu,tlb,中断处理流程,总线的概念,什么是指令集等等。这时候,相信你会接触一些汇编指令,不一定要能写,但是一定要能读懂。

上面的阶段都没有接触linux内核,但是不要着急,我们马上就要直面linux内核了,第一个问题就是选择什么版本,不需要太新,但是越早的内核就会越简单,有助你可以把阅读linux内核代码的习惯持续下去。你有几个选择:
1、配合《linux内核完全注释》来理解0.12内核。我没有看过这本书,听说不错。
2、配合《linux内核情景分析》来理解2.4内核。当年就是这本书引领我来阅读内核的,我一直都对其充满感激之情
3、配合《深入理解linux内核》来理解2.6.10内核。非常好的书,强烈推荐,我基本上阅读了好几遍这本书,中文版一遍,英文版3遍,每次都有不同的收获。

阅读代码的过程有些枯燥,可以考虑撰写实际的驱动程序来调节一下,《linux设备驱动》是不二之选。

 

最后,整理一些心得:
1、英语很重要、英语很重要、英语很重要。一定要学好英语,尽量看英文版书籍。
2、多动手,多思考,多总结。如果有机会,把自己的心得整理出来并发布,和其他工程师交流,这个过程可以有助于夯实你对linux kernel的理解。
3、clone linux stable的代码仓库,多读一读git log,那是无穷的宝藏;

转载地址:

http://www.wowotech.net/forum/viewtopic.php?id=5

http://www.wowotech.net/ 

留下您精彩的一笔!!点此进行留言回复

最近更新

linux系统怎么判断路由转发功能是否开启?

06-22

深度Linux自带的录屏工具怎么录制gif图?

06-22

Linux怎么查找影子文件并进入?

06-22

Linux如何安装运行.AppImage文件?.AppImage文件两种运行方法介绍

06-22

linux怎么添加每天定时任务? linux添加定时任务的教程

06-22

Linux下如何安装deb格式的安装包?deb安装包安装教程

06-22

推荐阅读

[转]做为一个初学者,对linux一无所知,到底有没有一个公式化的方法可以一步一步进入高手的行列呢?

05-10

nginx配置文件 http 强跳转 https

10-09

管理用SSH远程登录Linux服务器的用户的权限

08-25

通过XShell远程连接Ubuntu

09-28

【原创】(十二)Linux内存管理之vmap与vmalloc

12-01

linux ulimit命令用法解析

05-01

Linux中安装使用semanage来修改文本的教程

07-31

在linux系统下显示中文目录和文件名的方法介绍

05-29

redhat linux 下载大全 完全整理

06-04

debian系统,启动Wireshark,出现Couldn't run /usr/bin/dumpcap in child process:权限不够

05-15

Linux常用操作命令

01-21

ssh离线下载远程服务器全部内容的实现方法

04-12

热门评论