Linux操作系统
文章平均质量分 65
操作系统
CodeAllen嵌入式
公众号【CodeAllen嵌入式】,优快云博客专家,专注通信电子及嵌入式软件方向职业规划,全网技术矩阵粉丝15w+,欢迎交流一起成长!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Windows 11 本地安装 WSL 支持 Ubuntu 24.04 完整指南
Windows Subsystem for Linux (WSL) 是微软推出的革命性功能,允许用户在 Windows 系统中直接运行 Linux 发行版,无需安装虚拟机或双系统。WSL 2 基于轻量级虚拟机技术,提供接近原生的 Linux 性能,同时与 Windows 系统完美集成。以管理员身份打开 PowerShell。2.安装 Ubuntu 24.04。1.安装 WSL 2。重启计算机使配置生效。原创 2026-01-10 04:34:42 · 120 阅读 · 0 评论 -
【Linux内核设计与实现】 2 Linux内核与传统Unix内核的比较
系列文章参考资料为《Linux内核设计与实现》,源码为个人私有,未经允许不得转载技术交流群或资料添加微信号:CoderAllen,回复关键字即可1.对于MMU的需求Unix内核几乎毫无例外都是一个不可分割的静态可执行库,所以其必须以巨大的,单独的可执行块的形式在一个单独的地址空间中运行,这就需要硬件系统提供页机制(MMU)管理内存初期的Linux也是需要MMU的支持的,但有些特殊版本是不依赖于此的,这是一个非常简洁的设计,可以使Linux运行与没有MMU的小型嵌入式系统上2.单内核和微内核单.原创 2020-11-16 00:48:45 · 1091 阅读 · 0 评论 -
Linux内核源码下载方法
学习Linux看源码是最好的方法,但是很多人留言不知道怎么下载源码,下边进行了总结(资料来源于网络)官网链接:https://www.kernel.org/HTTPhttps://www.kernel.org/pub/GIThttps://git.kernel.org/提供另一个链接,比官网下载速度快:http://ftp.sjtu.edu.cn/sites/f...原创 2020-02-02 12:00:40 · 5165 阅读 · 1 评论 -
【Linux内核设计与实现】 1 操作系统和内核的概念
系列文章参考资料为《Linux内核设计与实现》,源码为个人私有,未经允许不得转载技术交流群或资料添加微信号:CoderAllen,回复关键字即可操作系统是指在整个系统中负责完成最基本功能和系统管理的那些部分。这些部分包括:内核、设备驱动程序、启动引导程序、命令行shell、或者其他种类的用户界面、基本的文件管理管理工具、系统工具,这些都是必不可少的部分系统 这个词包含了操作系统和所有运行在它之上的应用程序在一个系统中,内核才是核心,其他部分必须依靠内核提供的服务,内核有时候被称为 管理者 或.原创 2020-11-16 00:15:09 · 1165 阅读 · 0 评论 -
进程和线程的关系
进程进程其实是处于执行期的程序,进程不仅仅是一端可执行的代码,进程还包含其他资源,像打开的文件,挂起的信号,内核中的数据,处理器的状态,也就是说进程是正常执行的程序的实时结果的集合线程线程,也叫执行线程,是在进程中活动的对象,内核调度的对象是线程,而不是进程。...原创 2021-07-06 00:32:09 · 1318 阅读 · 0 评论 -
【Linux内核设计与实现】 4 什么是进程?
进程是Unix操作系统抽象概念最基本的一种,涉及线程等概念。主要目的是为了运行用户程序,这也因此进程管理是所有操作系统的心脏,Linux也不例外进程就是出于执行期的程序,但进程并不仅仅局限于一段可以执行的代码,通常还包括其他资源,比如打开的文件,挂起的信号,内核内部数据,处理器状态,存放全局的数据段等实际上,内核就是正在执行的程序代码的实时结果,内核需要有效而又透明的管理所有细节执行线程,简称线程(thread),是在进程中活动的对象。程序本身并不是进程,进程是处于执行期的程序以及相关的资源的总称,原创 2020-12-06 23:45:15 · 1006 阅读 · 0 评论 -
Linux内核 timespec_add_ns()
该函数的第二个参数是一个64位的无符号整数,表示的是纳秒,与第一个参数的字段tv_nsec相加,结果大于999999999则向结构体的字段tv_sec进位。执行命令insmod timespec_add_ns.ko插入模块,然后输入命令dmesg -c查看系统输出信息,出现如图所示结果。函数实现timespec结构体变量与整数的相加,无符号整数表示的是纳秒数,结果保存在结构体变量中。在内核源码中的位置:linux-3.19.3/include/linux/time.h。转载 2022-09-23 21:12:29 · 1313 阅读 · 0 评论 -
比较好的学习Linux内核的三本书
学习比较系统的知识,第一推荐是看优秀的书籍以下所有信息均来自于豆瓣正常的话,我会按照从上到下的顺序学习,学习过程中主要是以书籍为时间线,源码为主要参考对象,会分享一些自己的学习认知ps:三本书籍的高清PDF均放在了技术交流群中,需要的朋友加我微信获取交流群信息Linux内核设计与实现(原书第3版)下面值得参考的两本书,一个偏原理,一个偏实际编程Linux设备驱动程序...原创 2020-09-29 22:57:36 · 1851 阅读 · 0 评论 -
Linux内核源码阅读以及工具详解
接上篇Linux内核源码下载方法这篇总结了如何利用source insight对Linux内核代码进行阅读和学习(资料来源于网络)随着linux的逐步普及,现在有不少人对于Linux的安装及设置已经比较熟悉了。与Linux 的蓬勃发展相适应,想深入了解Linux的也越来越多。而要想深入了解Linux,就需要阅读和分析linux内核的源代码。Linux的内核源代码可以从很多途径得到。一般来讲...转载 2020-02-02 12:08:39 · 4367 阅读 · 2 评论 -
【Linux内核设计与实现】 3 Linux内核版本命名机制及内核下载链接
Linux内核有两种:稳定的和处于开发中的稳定的内核具有工业级的强度,可以广泛的应用和部署。Linux内核通过一个简单的命名机制来区分稳定和处于开发中的内核。Linux内核版本的最新发布状态,参见Linux官网:https://kernel.org/...原创 2020-12-05 23:36:03 · 1005 阅读 · 0 评论 -
GDB下载和安装教程
基于 Linux 系统的免费、开源,衍生出了多个不同的 Linux 版本,比如 Redhat、CentOS、Ubuntu、Debian 等。这些 Linux 发行版中,有些默认安装有 GDB 调试器,但有些默认不安装。判断当前 Linux 发行版是否安装有 GDB 的方法也很简单,就是在命令行窗口中执行 gdb -v 命令。以本机安装的 CentOS 系统为例:[root@bogon ~]# gdb -vbash: gdb: command not found如上所示,执行结果为“comman转载 2021-07-03 22:50:00 · 7862 阅读 · 1 评论 -
GDB是什么?
从现在开始,我将系统教大家学习使用 GDB,本节先解决第一个问题,即 GDB 是什么。要知道,哪怕是开发经验再丰富的程序员,编写的程序也避免不了出错。程序中的错误主要分为 2 类,分别为语法错误和逻辑错误:程序中的语法错误几乎都可以由编译器诊断出来,很容易就能发现并解决; 逻辑错误指的是代码思路或者设计上的缺陷,程序出现逻辑错误的症状是:代码能够编译通过,没有语法错误,但是运行结果不对。对于这类错误,只能靠我们自己去发现和纠正。也就是说,程序中出现的语法错误可以借助编译器解决;但逻辑错误则只能靠原创 2021-06-30 22:36:39 · 6127 阅读 · 0 评论 -
Linux调试器GDB使用
Linux调试器GDB使用例程(1)查看源文件(2)设置断点(3)查看所有断点(4)运行程序(5)查看变量值(6)继续运行程序(7)单步运行例程#include <stdio.h>int cal(int n){ if (n == 1) return 1; else return n * cal(n - 1); }int main(){ int n = 5; n = cal(n); print原创 2020-07-02 23:10:15 · 1202 阅读 · 0 评论 -
8.Makefile路径搜索使用案例
我们了解了一下路径搜索的使用方式,我们再来看一下具体的使用方法。为了体验实例的效果的更加明显,我们按照源代码树的布局来放置文件。我们把源代码放置在src目录下,包含的文件文件是:list1.c、list2.c、main.c 文件,我们把头文件包含在 include 的目录下,包含文件 list1.h、list2.h 文件。Makefile 放在这两个目录文件的上一级目录。我们按照之前的方式来编写 Makefile 文件:main:main.o list1.o list2.ogcc -o $@ $转载 2021-07-03 22:38:15 · 1225 阅读 · 0 评论 -
10.Makefile ifeq、ifneq、ifdef和ifndef
日常使用 Makefile 编译文件时,可能会遇到需要分条件执行的情况,比如在一个工程文件中,可编译的源文件很多,但是它们的类型是不相同的,所以编译文件使用的编译器也是不同的。手动编译去操作文件显然是不可行的(每个文件编译时需要注意的事项很多),所以 make 为我们提供了条件判断来解决这样的问题。需要解决的问题:要根据判断,分条件执行语句。条件语句的作用:条件语句可以根据一个变量的值来控制 make 执行或者时忽略 Makefile 的特定部分,条件语句可以是两个不同的变量或者是常量和变量之间的比较。转载 2021-07-03 22:41:52 · 1837 阅读 · 0 评论 -
2.Makefile文件中包含哪些规则?
想要书写一个完整的 Makefile文件,需要了解 Makefile 的相关的书写规则。我们已经知道了 Makefile 描述的是文件编译的相关规则,它的规则主要是两个部分组成,分别是依赖的关系和执行的命令,其结构如下所示:targets : prerequisites command或者是targets : prerequisites; command command相关说明如下:targets:规则的目标,可以是 Object File(一般称它为中间文件),...转载 2021-05-25 01:50:31 · 1681 阅读 · 0 评论 -
7.Makefile目标文件搜索(VPATH和vpath)
我们都知道一个工程文件中的源文件有很多,并且存放的位置可能不相同(工程中的文件会被放到不同的目录下),所以按照之前的方式去编写 Makefile 会有问题。我们之前列举的例子,所有的源文件基本上都是存放在与 Makefile 相同的目录下。只要依赖的文件存在,并且依赖规则没有问题,执行 make命令整个工程就会按照对我们编写规则去编译,最终会重建目标文件。那如果需要的文件是存在于不同的路径下,在编译的时候要去怎么办呢(不改变工程的结构)?这就用到了 Makefile 中为我们提供的目录搜索文件的功能。常转载 2021-06-14 00:30:39 · 1510 阅读 · 0 评论 -
1.Makefile文件是什么?
我们教程主要是讲的是 Makefile 。很多 Linux(Unix) 做开发的初学者不了解 Makefile 是什么,甚至大部分 Windows 开发工程师对 Makefile 都特别陌生。这个其实很正常,如果你是在 Windows 下作开发的话不需要去考虑这个问题,因为 Windows 下的集成开发环境(IDE)已经内置了 Makefile,或者说会自动生成 Makefile,我们不用去手动编写。Linux 中却不能这样,需要我们去手动的完成这项工作。Linux 下可以学习的开发语言有很多,常见的有转载 2021-05-25 01:47:36 · 1039 阅读 · 0 评论 -
4.Makefile通配符的使用
Makefile 是可以使用 shell 命令的,所以 shell 支持的通配符在 Makefile 中也是同样适用的。 shell 中使用的通配符有:"*","?","[...]"。具体看一下这些通配符的表示含义和具体的使用方法。通配符 使用说明 * 匹配0个或者是任意个字符 ? 匹配任意一个字符 [] 我们可以指定匹配的字符放在 "[]" 中 通配符可以出现在模式的规则中,也可以出现在命令中,详细的使用情况如下。实例 1:.PHONY:clean.转载 2021-05-25 01:54:15 · 1105 阅读 · 0 评论 -
6.Makefile自动化变量
关于自动化变量可以理解为由 Makefile 自动产生的变量。在模式规则中,规则的目标和依赖的文件名代表了一类的文件。规则的命令是对所有这一类文件的描述。我们在 Makefile 中描述规则时,依赖文件和目标文件是变动的,显然在命令中不能出现具体的文件名称,否则模式规则将失去意义。那么模式规则命令中该如何表示文件呢?就需要使用“自动化变量”,自动化变量的取值根据执行的规则来决定,取决于执行规则的目标文件和依赖文件。下面是对所有的自动化变量进行的说明:自动化变量 说明 $@ 表示规则.转载 2021-06-14 00:27:52 · 1147 阅读 · 0 评论 -
3.Makefile的工作流程
简单了解一下 Makefile 书写规则之后,再来深入研究一下 Makefile 的是怎样工作的?当我们在执行 make 条命令的时候,make 就会去当前文件下找要执行的编译规则,也就是 Makefile 文件。我们编写 Makefile 的时可以使用的文件的名称 "GNUmakefile" 、"makefile" 、"Makefile" ,make 执行时回去寻找 Makefile 文件,找文件的顺序也是这样的。我们推荐使用 Makefile(一般在工程中都这么写,大写的会比较的规范)。如果文件不存在转载 2021-05-25 01:52:23 · 1085 阅读 · 0 评论 -
9.Makefile隐含规则
这个章节讲述的是 Makefile 的隐含规则,所谓的隐含规则就是需要我们做出具体的操作,系统自动完成。编写 Makefile 的时候,可以使用隐含规则来简化Makefile 文件编写。实例:test:test.ogcc -o test test.otest.o:test.c我们可以在 Makefile 中这样写来编译 test.c 源文件,相比较之前少写了重建 test.o 的命令。但是执行 make,发现依然重建了 test 和 test.o 文件,运行结果却没有改变。这其实就是隐含规则转载 2021-07-03 22:40:19 · 1267 阅读 · 0 评论 -
5.Makefile变量的定义和使用
变量对于我们来说是不陌生的,在学习各种编程语言时会经常用到。就拿C语言来说,变量的使用是十分常见的,变量可以用来保存一个值或者是使用变量进行运算操作。Makefile 中的变量也是这样,我们可以利用它来表示某些多处使用而又可能发生变化的内容,不仅可以节省重复修改的工作,还可以避免遗漏。变量的定义Makefile 文件中定义变量的基本语法如下:变量的名称=值列表Makefile 中的变量的使用其实非常的简单,因为它并没有像其它语言那样定义变量的时候需要使用数据类型。变量的名称可以由大小写.转载 2021-05-25 01:56:57 · 1362 阅读 · 0 评论 -
Linux 文本处理命令 - tail
root@localhost ~]# tail [选项] 文件名。如果想终止输出,按【Ctrl+c】键中断 tail 命令即可。此命令常用的选项及含义如表 1 所示。原创 2022-12-02 23:28:12 · 685 阅读 · 0 评论 -
Linux 文本处理命令 - mount
这里简单介绍一下 /etc/fstab 文件,此文件是自动挂载文件,系统开机时会主动读取 /etc/fstab 这个文件中的内容,根据该文件的配置,系统会自动挂载指定设备。有关自动挂载(修改此文件)的具体介绍,会在后续文章中讲解。其实,硬盘分区(设备)挂载和卸载(使用 umount 命令)的概念源自 UNIX,UNIX 系统一般是作为服务器使用的,系统安全非常重要,特别是在网络上,最简单有效的方法就是“不使用的硬盘分区(设备)不挂载”,因为没有挂载的硬盘分区是无法访问的,这样系统也就更安全了。原创 2022-12-03 00:39:52 · 605 阅读 · 0 评论 -
scp 时遇到 ssh连接所生成的known_hosts出现的问题
.ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥正常只需要删除自己用到的ip就好有时候会遇到交换区文件问题,这时候强制修改也不行,终极方法:删除root目录下的这个文件rm ~/.ssh/known_hosts...原创 2021-05-11 16:06:28 · 1580 阅读 · 0 评论 -
Linux 文本处理命令 - grep
需要注意的是,在基本正则表达式中,如通配符 *、+、{、|、( 和 )等,已经失去了它们原本的含义,而若要恢复它们原本的含义,则要在之前添加反斜杠 \,如 \*、\+、\{、\|、\( 和 \)。grep 命令是用来在每一个文件或中(或特定输出上)搜索特定的模式,当使用 grep 时,包含指定字符模式的每一行内容,都会被打印(显示)到屏幕上,但是使用 grep 命令并不改变文件中的内容。很多时候,我们并不需要列出文件的全部内容,而是从文件中找到包含指定信息的那些行,要实现这个目的,可以使用grep.原创 2022-12-02 23:52:59 · 1277 阅读 · 0 评论 -
Linux man命令的使用方法
Linux man命令的使用方法原文链接:http://www.linuxidc.com/Linux/2017-03/142407.htmLinux提供了丰富的帮助手册,当你需要查看某个命令的参数时不必到处上网查找,只要man一下即可。可以使用man man 查看man的使用方法1.man共有以下几个章节代码功能1 标准用户命令(Executable programs or shell commands)2 系统调用(System calls)functions provid转载 2021-02-10 17:19:56 · 1221 阅读 · 0 评论 -
Linux 文本处理命令 - less
less 命令的作用和 more 十分类似,都用来浏览文本文件中的内容,不同之处在于,使用 more 命令浏览文件内容时,只能不断向后翻看,而使用 less 命令浏览,既可以向后翻看,也可以向前翻看。在使用 less 命令查看文件内容的过程中,和 more 命令一样,也会进入交互界面,因此需要读者掌握一些常用的交互指令,如表 2 所示。[root@localhost ~]# less [选项] 文件名。此命令可用的选项以及各自的含义如表 1 所示。原创 2022-12-02 23:26:06 · 875 阅读 · 0 评论 -
脚本中mkdir 与 mkdir -p 的区别
我的首发平台是公众号【CodeAllen】,学习交流QQ群:736386324,本文版权归作者所有,转载请注明出处脚本中mkdir 与 mkdir -p 的区别1、直接用mkdir指令2、mkdir -p :递归创建目录,即使上级目录不存在,会按目录层级自动创建目录...原创 2021-03-08 12:26:13 · 1117 阅读 · 0 评论 -
Linux 文本处理命令 - umask
例如,若 umask 默认权限的值为 033,按照数字形式计算文件的初始权限,666-033=633,但我们按照字母的形式计算会得到 (rw-rw-rw-) - (----wx-wx) = (rw-r--r--),换算成数字形式是 644。这里的减法,其实是“遮盖”的意思,也就是说,最大默认权限中和 umask 权限公共的部分,通过减法运算会被遮盖掉,最终剩下的“最大默认权限”,才是最终赋予文件或目录的初始权限。显然,如果想最终得到文件或目录的初始权限值,我们还需要了解文件和目录的最大默认权限值。原创 2022-12-03 00:25:16 · 696 阅读 · 0 评论 -
Linux 文本处理命令 - chmod
既然文件的基本权限就是 3 种用户身份(所有者、所属组和其他人)搭配 3 种权限(rwx),chmod 命令中用 u、g、o 分别代表 3 种身份,还用 a 表示全部的身份(all 的缩写)。再举个例子,通常我们以 Vim 编辑 Shell 文件批处理文件后,文件权限通常是 rw-rw-r--(644),那么,如果要将该文件变成可执行文件,并且不让其他人修改此文件,则只需将此文件的权限该为 rwxr-xr-x(755)即可。-R(注意是大写)选项表示连同子目录中的所有文件,也都修改设定的权限。原创 2022-12-03 00:23:21 · 693 阅读 · 0 评论 -
Linux 文本处理命令 - more
组合键向上翻页也无法看全文件中的内容,该怎么办呢?这就需要使用 more 命令。[root@localhost ~]# more [选项] 文件名。当使用 cat 命令查看文件内容时,如果文件过大,以至使用。more 命令比较简单,一般不用什么选项。more 命令的执行会打开一个交互界面。more 命令选项及含义。原创 2022-12-02 23:23:14 · 581 阅读 · 0 评论 -
Linux 文本处理命令 - head
head 命令默认显示文件的开头 10 行内容。[root@localhost ~]# head [选项] 文件名。注意,如不设置显示的具体行数,则默认显示 10 行的文本数据。该命令常用选项以及各自的含义,如表 1 所示。【例 1】基本用法。原创 2022-12-02 23:24:49 · 529 阅读 · 0 评论 -
Linux常用命令行
Ubuntu目录结构:FHS结构根据Ubuntu文件特性使用以下指令:命令:ls英文:list功能:列出目录内容命令格式和常用选项: ls -l /-a/-h [目录]实例:ls -l 显示更完整信息ls /home 则显示/home的内容ls ~ 显示/home/book 的内容ls 选项或者ls 选项 目录名常用的选项:-l :long缩...原创 2018-02-13 12:16:44 · 770 阅读 · 1 评论 -
Linux 文本处理命令 - cat
注意,cat 命令用于查看文件内容时,不论文件内容有多少,都会一次性显示。如果文件非常大,那么文件开头的内容就看不到了。不过 Linux 可以使用。这两种格式中,前者用于显示文件的内容,常用选项及各自的含义如表 1 所示;组合键向上翻页,但是这种翻页是有极限的,如果文件足够长,那么还是无法看全文件的内容。[root@localhost ~]# cat 文件1 文件2 > 文件3。[root@localhost ~]# cat [选项] 文件名。因此,cat 命令适合查看不太大的文件。原创 2022-12-02 23:18:18 · 1595 阅读 · 0 评论 -
vi/vim编辑器必知必会
一、我们为什么要学习vim编辑器?Linux的命令行界面下面有非常多的文本编辑器。比如经常听说的就有Emacs、pico、nano、joe与vim等。vim可以看做是vi的高级版。我们为什么一定要学习vim呢?有以下几个原因:(1)所有的Unix like系统都会内置vi文本编辑器,其他的文本编辑器则不一定会存在。(2)很多软件的编辑接口都会主动调用vi。(3)vim具有程序编辑的能力,可以主动以字体颜色辨别语法的正确性,方便程序设计。(4)程序简单,编辑速度快。二、下面先介绍一转载 2021-07-15 21:49:04 · 1282 阅读 · 0 评论 -
Vim快捷键
Vim的一些快捷键记录:一、移动光标按键 功能 说明 h,j,k,l 上,下,左,右 ctrl-e 移动页面 ctrl-f 上翻一页 ctrl-b 下翻一页 ctrl-u 上翻半页 ctrl-d 下翻半页 w 跳到下一个字首,按标点或单词分割 W 跳到下一个字首,长跳,如end-of-line被认为是一个字 e 跳到下一个字尾 E 跳到下一个字尾,长跳 b 跳到上一个字 B转载 2021-07-15 21:54:23 · 1135 阅读 · 0 评论 -
1.vi工作模式(3种)以及模式切换(转换)
vi 编辑器是一个功能强大的编辑器。学习 vi 要从其基本工作模式开始学起。了解这些工作模式对用户理解 vi 编辑器的行为是不无裨益的。对于一些从图形界面中转入 vi 的开发者来说,了解 vi 的工作模式十分重要。本节将深入讨论 vi 编辑器的工作模式。vi 编辑器有 3 种基本工作模式,分别是命令模式、文本输入模式和末行模式。下面详 细介绍这 3 种模式。1) 命令行模式该模式是进入 vi 编辑器后的默认模式。任何时候,不管用户处于何种模式,按下Esc键即可进入命令模式。在命令模式下,用户可原创 2021-05-25 02:07:31 · 5336 阅读 · 0 评论 -
【嵌入式Linux】补充部分
本部分主要专注构建从0到1的嵌入式Linux学习知识体系,主要设计环境配置,嵌入式Linux基础部分,Linux文件系统及系统移植,驱动开发等知识。目前持续更新中,更新时间:2022年11月12日Linux的起源:从一个故事说起FreeBSD与Linux十个本质上的区别什么是GUN?POSIX标准是什么?Linux的基本概念和特点Citrix,微软,VMware:它们的优缺点什么是类Unix系统?UNIX/Linux系统结构Linux x86 和ARM什么区别?为什么STM32没法跑Li原创 2022-11-13 00:16:18 · 794 阅读 · 0 评论
分享