📚读书笔记:hello小崔的知乎专栏

type
status
date
slug
summary
tags
category
icon
password

作者简介

最初认识Linux,是2013年大学科协(科技协会)学长推荐,因为即将大三毕业,又不计划考研,便希望我学习更深层面方向。当时比较火的两个东西一个是物联网,另一个就是嵌入式、Linux。现在回想起来,最初的自己真的是有点傻里傻气,又庆幸当初傻的坚持下去,才能如今工作和兴趣都是Linux内核。
当时没什么眼界,也没有人带着入门,就跑到学校图书馆找Linux书籍看,别说老旧的图书馆(书都是很老很老的)还真的找到几本Linux入门书籍,便借阅下来读,后来觉得看的懵懵懂懂,实践不够(linux实践书籍真不多),便买开发板(500多,附光盘)学习,所以在毕业前夕,经过一年的啃书和开发板学习,也算是编过内核、写过驱动、应用摄像头读取视频流的嵌入式毕业生了。

第一章 Linux 学习

1.1 什么是 Linux

相关网站搜集:

1.2 Linux 学习路线

第一、二阶段
  • 学习C语言与数据结构
  • 精读《C++ Primer》
  • 推荐《C和指针》、《C陷阱与缺陷》
第三阶段
  • 《Unix网络编程》和《TCP/IP详解》,可同Linux内核学习再看,当然也可以这里看,都行;
  • 《Linux程序设计》主要介绍linux调用接口,熟悉Linux,内容详细;
  • 汇编语言学习《汇编语言(第3版) 》,王爽著;
第四阶段
  • 如果是从事 Linux 开发,可以跳过;
第五阶段
  • Linux 内核学习推荐:《深入理解Linux内核》、《Linux内核设计与实现》;
  • Linux 内核源码学习推荐:《Linux内核源代码情景分析》、《奔跑吧,Linux内核》;
  • Linux 设备驱动学习推荐:《Linux 设备驱动程序》、《Linux设备驱动开发详解:基于最新的Linux 4.0内核》
  • Linux 社区学习,平时多逛逛Linux社区,看看别人patch,有能力可自发现bug然后自提patch;

1.3 工具推荐

如果是在 Windows 上学习的话,建议安装 VMWare 与 MobaXterm。
读后感:要懂得真多啊~

第二章 编译原理

2.1 Makefile 开发工具学习小结

主要介绍 Makefile 的基本语法和调试参数。
读后感:现代项目都使用了更高级的工具来生成 Makefile,不用手写,但是需要看懂并能够调试。

第三章 Linux 工具学习

3.1 LTP 学习

LTP 特点

  1. LTP作为linux kernel系统调用和libc库测试工具,拥有大量的内核基本特性的测试用例,同时仓库由世界各地内核参与者维护开发,保证了用例的质量。
  1. LTP用例短小而精练,各个用例解耦,符合功能测试的特色,使用C语言和Shell语言,对于初学者非常友好,适合学习从而形成良好的写作习惯;
  1. LTP不仅用例优美,而且框架合理,使用方便,层次性好,容易理解(可以移植直接使用哦);
  1. 最重要的,LTP有良好的社区氛围,代码存放github(linux-test-project/ltp),参与者通过邮件列表([email protected])与社区maintainer或其他开发者交流。社区活跃,每天均有大量回复和提交(当然比不过linux,但是更方便查看,不会天天收件箱被刷爆);
  1. 在对内核知识点学习过程中,如果感觉没有练手的地方,可以试着写写用例,加深理解,同时熟悉社区运作模式;
作者点评:个人认为LTP仓库用例对于内核功能点测试覆盖非常充分,同时代码精练不冗余,但是作为基本功能用例,缺少针对性压力测试用例(虽然包括了stress用例,但是从压力测试角度分析是远远不够);

学习资料

内置文档
  • doc/test-writing-guidelines.txt
  • doc/build-system-guide.txt
  • doc/c-test-tutorial-simple.txt
在线文档
读后感:我曾经为 LTP 内核适配过 5.4 的内核,修复了一些编译问题,在我看来 LTP 针对的还是服务器或者比较稳定的内核长期支持版本,对于比较新的版本是覆盖不到的。

LTP 下载编译执行

编译:
交叉编译:
推荐执行方式:
syscalls 文件位于 runtest/syscall。如果要定制化的跑用例,可以如下操作:

LTP 代码学习

  1. 查看官方文档进行学习;
  1. 通过克隆项目进行学习;

LTP 问题分析

shell -x 会打印执行的所有步骤;

3.2 用户态调试工具

分析工具 strace,lstrace,perror

第四章

4.4 ARM64 架构各种虚拟机

读书笔记:使用python管理系统读书笔记:python工匠