![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
文章平均质量分 94
hello小崔
Linux&机器学习爱好者
展开
-
学习linux0.11内核代码——引导启动程序setup.s
一、功能描述 setup.s是一个操作系统加载程序,主要作用是 1)利用ROS BIOS中断读取机器系统数据,并将这些数据保存到0x90000开始的位置(覆盖了bootsect程序所在地方),所取得的参数和保留的内存位置如下表: 2)将setup程序将system模块从0x10000-0x8ffff整块向下移动到内存绝对地址0x00000处; 3)加载中断描述符表寄存器(idt...原创 2018-08-29 20:15:24 · 473 阅读 · 0 评论 -
学习linux0.11内核代码——引导启动程序bootsect.s(3)
4) 屏幕显示“Loading system…”! Print some inane message! 显示信息:“'Loading system ...' 回车”,共显示24个字符! 使用BIOS中断0x10功能号ah=0x03和ah=0x13实现! 请仔细阅读中断的使用! BIOS中断0x10功能号ah=0x03,功能:读光标位置! 输入:bh=页号! 返回:c...原创 2018-08-29 20:08:25 · 240 阅读 · 0 评论 -
学习linux0.11内核代码——引导启动程序bootsect.s(4)
6) 确定根文件系统设备号并保存其设备号于root_dev! Linux中,软驱的主设备号是2,次设备号=type*4+nr,其中nr为0-3分别对应软驱A、B、C和D;! type是软驱类型(2->1.2MB或7->1.44MB)。! 因为7*4+0=28,所以/dev/PS0 (2,28)指1.44MB A驱动器,其设备号是0x021c(2*256+28)! 同理,...原创 2018-08-29 20:09:55 · 431 阅读 · 0 评论 -
学习linux0.11内核代码——引导启动程序bootsect.s(1)
引导启动程序boot 一、 引导启动程序boot总体功能 1、 linux操作系统启动流程 1) power on,CPU进入实模式(虚地址到实地址转换:DS段寄存器左移4位与偏移地址相加,得到物理地址,即物理地址=seg段*16+off偏移,可以不需要全局描述符、局部描述符或页表将逻辑地址转换为物理地址。实模式和保护模式资料可参照http://blog.chinaunix.net/u...原创 2018-08-29 19:59:18 · 522 阅读 · 0 评论 -
学习linux0.11内核代码——引导启动程序bootsect.s(2)
二、 bootsect.s程序 1、 在PC加电自检后,ROM-BIOS会把引导扇区代码bootsect加载到0x7C00处并执行,执行过程中bootsect把自己移到0x90000处。程序主要负责: 1)把从磁盘第2扇区开始的4个扇区的setup模块(setup.s生成)加载到内存0x90200处(此处为紧接着ROM-BIOS之后),加载后内存如下分布(第一扇区即存放bootsect.s...原创 2018-08-29 20:06:27 · 681 阅读 · 0 评论 -
daemon not running.starting it now on port 5037
最近使用adb,执行adb devices,出现错误:daemon not running.starting it now on port 5037问题解决方法: 原因是5037端口被占用,查到哪个进程使用并关闭进程即可。 1. 开始->运行->cmd,调出命令窗口; 2. 输入命令:netstat -aon|findstr “5037”后回车, TCP 127.0.0.1...原创 2018-08-26 20:40:29 · 15796 阅读 · 0 评论 -
Makefile的几点小知识
1.Makefile中的target和依赖Makefile文件中经常见到A:Bcommand A这种,其中A被称为target,B为target的依赖,在检测A是否执行command A之前,会先检测依赖B,如果不存在会先执行B相关command举例:File2 := file2$(File2): echo File2default: $(File2) ...原创 2019-07-21 11:09:28 · 270 阅读 · 0 评论 -
移动硬盘弹出文件或目录损坏且无法读取解决办法
最近想将移动硬盘的会声会影X2软件安装到电脑(哎呀,还是大学时候视频处理社团的软件,都是回忆呀),但是打开安装目录显示“移动硬盘弹出文件或目录损坏且无法读取”解决办法:右键盘符(我的是F盘)->属性->工具->检查->扫描驱动器->修复驱动器->修复驱动器->…(修复后会继续发现问题,就继续修复)->修复成功->拔出重插硬盘->目录...原创 2019-02-11 17:30:15 · 4263 阅读 · 2 评论 -
ubuntu 修改某扩展名文件以.c格式打开
vim ~/.vim/ftdetect/cel.vim添加:au BufRead,BufNewFile *.cce set filetype=c原创 2018-09-20 22:25:04 · 1763 阅读 · 0 评论 -
ubuntu在登陆界面循环登陆问题
今天ubuntu14.04 系统在登陆界面一直循环登陆,无法正常进入系统,解决办法:登陆界面输入 ctrl+alt+F1进入命令行模式,然后输入账户密码成功进入,后续看下哪里问题。...原创 2018-08-03 22:38:39 · 3314 阅读 · 0 评论 -
用户态调测工具(二):perror和man
errno linux中输入man perror 命令,如下#include <stdio.h>void perror(const char *s);#include <errno.h>const char * const sys_errlist[];int sys_nerr; int errno; /* Not really原创 2018-08-03 22:53:24 · 405 阅读 · 0 评论 -
用户态调测工具(一):strace和ltrace
简单科普:Linux的用户态和内核态 Linux操作系统的体系架构分为用户态和内核态(或者用户空间和内核)。内核从本质上看是一种软件–控制计算机的硬件资源,并提供上层应用程序运行的环境。 用户态即上层应用程序的活动空间,应用程序的执行必须依托于内核提供的资源,包括CPU资源、存储资源、I/O资源等。为了使上层应用能够访问到这些资源,内核必须为上层应用提供访问的接口:即系统调用。 一般来说系...原创 2018-08-03 22:44:52 · 2172 阅读 · 0 评论 -
使用GCOV统计内核代码率
摘要Gcov是gcc自带的代码覆盖率统计工具,配合lcov工具可以统计并生成代码覆盖率。Linux kernel将Gcov嵌入了原生的内核编译框架中,可以使用gcov统计内核代码覆盖情况。内核编译1.版本编译1)打开kernel GCOV支持我们需要打开如下的几个config项:CONFIG_DEBUG_FS=yCONFIG_GCOV_KERNEL=yCONFIG_GCOV_FOR...原创 2018-09-20 22:43:31 · 1784 阅读 · 0 评论 -
out-of-tree模块做覆盖率统计
1.准备如下测试用例,并编译成模块hi.c#include <linux/init.h>#include <linux/module.h>#include <linux/kernel.h>MODULE_LICENSE("GPL");MODULE_AUTHOR("cbx");int testModule(int a, int b){ r...原创 2018-09-20 22:54:09 · 1172 阅读 · 0 评论 -
内核态调测工具(一) kprobe
Kprobe介绍Kprobe是一种内核调测手段,它可以动态地跟踪内核的行为、收集debug信息和性能信息。可以跟踪内核几乎所有的代码地址(almost:不允许跟踪的名单blacklist在/sys/kernel/debug/kprobes/blacklist),并且当断点被击中后会响应处理函数。Kprobe有三个子功能: Kprobes:几乎可以插入内核的任何指令; Jprobes:可...原创 2018-08-23 22:54:05 · 2108 阅读 · 0 评论 -
LTP(Linux Test Project)学习(一)——LTP介绍
LTP(Linux Test Project)开源项目由SGI发起,IBM维护, 贡献者包括IBM, Cisco, Fujitsu, SUSE, Red Hat, Oracle公司等。LTP特点: 1. LTP作为linux kernel系统调用和libc库测试工具,拥有大量的内核基本特性的测试用例,同时仓库由世界各地内核参与者维护开发,保证了用例的质量。 个人认为LTP仓库用例对于内核...原创 2018-08-06 22:59:26 · 2160 阅读 · 0 评论 -
LTP(Linux Test Project)学习(六)—— 问题分析:chattr命令的限制
(挑选本人之前发现的bug,可以更加深入讲解下问题分析历程) 对应补丁commit:9af831cdf6d2328e6f6fcd85dd1d5523fd8681d3BUG发现个人在学习linux或linux相关代码实践时,喜欢使用qemu启动虚拟机(启动快,方便替换内核)。 在刚开始接触ltp时候,便开始跨平台执行ltp(想看下ltp的兼容性),当时FAIL很多用例,然后逐个开始分析,...原创 2018-08-10 18:46:08 · 9108 阅读 · 0 评论 -
LTP(Linux Test Project)学习(四)——LTP邮件列表订阅
邮件列表订阅地址: https://lists.linux.it/listinfo/ltp (README.md中获取)1.登陆网址,填入个人邮箱、姓名及邮箱passwd: 2.点击 Subscription 提交,提交完毕后邮箱会收到一封确认邮件 3.按要求网页链接确认或者回复邮件确认就会成功订阅ltp邮件列表 4.个人推荐使用Mozilla Thunderbird客户端收...原创 2018-08-07 23:24:10 · 505 阅读 · 0 评论 -
LTP(Linux Test Project)学习(七)——LTP提交补丁
写在前面其实在写提交补丁之前,需要开篇大概讲一下开源社区运作模式和流程,并讲下在开源社区如何参与讨论以及一些注意事项,但是因为内容限制,这里无法展开讲述。但既然提交补丁已经涉及到与其他参与者交流,我还是大概讲下提交补丁需要注意的事情:提交补丁之前请仔细检查补丁,并通过checkpatch.pl工具仔细检查(后面会提到这个工具),确保提交上去的正确性(毕竟邮件发送完毕后无法撤回);在提问...原创 2018-08-09 22:55:35 · 1072 阅读 · 1 评论 -
LTP(Linux Test Project)学习(五)——LTP代码学习
LTP代码学习方法主要介绍两个步骤,个人认为效果最好,见效也快。方法1 查看官方介绍文档(如果你最开始接触ltp,那么步骤1一定要看)1)用例Makefile配置介绍,见:https://github.com/linux-test-project/ltp/wiki/BuildSystem 用例介绍,见:https://github.com/linux-test-project/ltp...原创 2018-08-08 19:07:03 · 2677 阅读 · 2 评论 -
LTP(Linux Test Project)学习(三)——LTP目录介绍
仓库目录 $ tree -d -L 2 . ├── autom4te.cache ├── confI21Iza ├── doc (ltp介绍和使用说明) │ ├── man1 │ └── man3 ├── gitignore_clean ├── include (ltp执行框架头文件) │ ├── lapi │ ├── mk │ └── old ├──...原创 2018-08-06 23:02:18 · 1239 阅读 · 0 评论 -
LTP(Linux Test Project)学习(二)——LTP下载编译执行
下载 1)网站下载 登陆 https://github.com/linux-test-project/ltp 点击 Clone or download 下载zip 2)git下载 git clone https://github.com/linux-test-project/ltp.git git clone git@github.com:linux-test-project/ltp....原创 2018-08-06 23:00:45 · 6306 阅读 · 0 评论 -
capabilities: ambient capabilities说明
linux capability介绍最早之前,linux对任务权限分为privileged processes(UID等于0,属于超级用户或者root用户)和unprivileged processes(UID非0)。privileged processes拥有系统的所有权限,而unprivileged processes拥有部分权限(根据进程凭证,比如effective UID, effec...原创 2018-09-04 21:34:11 · 4020 阅读 · 0 评论 -
Linux 4.16 亮点特性
源于https://kernelnewbies.org/Linux_4.161.XFS文件系统的反向映射和reflink特性已经稳定 反向映射和reflink功能分别在4.8和4.9版本合并,现在已经稳定。这些功能通过cp –reflink=always使用,支持重复数据删除,数据写时等2.对membarrier(2)系统调用进行提速 此版本对membarrier(2)系统调用进行提速...原创 2018-08-28 22:29:31 · 808 阅读 · 0 评论 -
Linux 4.15亮点特性
源于https://kernelnewbies.org/Linux_4.151.Meltdown和Spectre问题修复 这个版本更新了最新的解决Meltdown和Spectre(你可能从未听说过的安全问题)问题的补丁。2.对AMD amdgpu驱动有更好的模式设置和显示支持 这个版本包括了amdgpu驱动长期缺失的“display code”(132k LoC)功能。为DCE8 (C...原创 2018-08-28 22:28:33 · 1120 阅读 · 0 评论 -
Linux 4.4亮点特性
源于https://kernelnewbies.org/Linux_4.41.更快更精简的支持同步I/O和异步I/O的loop设备 这个版本引入了支持同步异步I/O的loop块设备。在循环读/写loop文件有几个优点:同步I/O可以避免使用双缓存,减少内存使用;与用户控件同步I/O不同,不需要固定的页面成本;在某些情况下避免了上下文切换。2.虚拟GPU驱动支持3D 延续Linux4.1...原创 2018-08-17 07:45:22 · 1871 阅读 · 0 评论 -
Linux 4.6亮点特性
源于https://kernelnewbies.org/Linux_4.61.USB3.1 SuperSpeedPlus(10Gbps)支持 USB 3.1新增SuperSpeedPlus协议,支持高达10Gbps的速度。使用SuperSpeedPlus协议的USB 3.1设备称为USB 3.1 Gen2设备。2.提高OOM kill任务时的可靠性 在以前的版本,OOM keller(...原创 2018-08-18 18:33:52 · 800 阅读 · 0 评论 -
Linux 4.5 亮点特性
源于https://kernelnewbies.org/Linux_4.51.copy_file_range(2)系统调用支持 以前的复制文件,是指将数据从磁盘读到用户空间,然后将用户空间复本复制到目标文件(磁盘),这种做法虽然没问题,但是需要在用户空间进行额外的数据复制。在此版本中,copy_file_rang(2)系统调用可以直接将一组数据从文件拷贝到目标文件(数据磁盘拷贝),避免了用户...原创 2018-08-17 22:16:10 · 1239 阅读 · 0 评论 -
Linux 4.3 亮点特性
源于https://kernelnewbies.org/Linux_4.31.删除Ext3文件系统 Ext3文件系统已经从liux核心代码删除。原因是Ext4支持已经可以替代Ext3,所以maintainers认为Ext3代码已经无用可以删除。2.userfaultfd()用于处理用户空间缺页错误的系统调用 当进程map系统调用但是虚拟地址对应的物理地址未被分配是,内核会发生缺页中断处...原创 2018-08-15 00:36:44 · 449 阅读 · 0 评论 -
Linux 4.2 亮点特性
源于https://kernelnewbies.org/Linux_4.21.应用于现代AMD Radeon硬件的新驱动amdgpu amdgpu是VI+AMD asics的新驱动,当前支持Tonga, Iceland,Carrizo以及为CI测试提供一些编译选项。支持所有主要功能(显示,gfx,计算,dma,视频解码/编码等)。2.虚拟GPU驱动支持 Virtio驱动是虚假的驱动程序...原创 2018-08-15 00:35:41 · 635 阅读 · 0 评论 -
Linux 4.1亮点特性
1.Ext4 加密技术支持 Linux原本支持数据加解密,比如dm-crypt或者ecryptfs,但是会消耗部分性能和内存。现在Ext4文件系统本身支持加密技术:数据和文件名都可以使用用户提供密钥加密,密钥适用于文件、目录和目录的子目录。 这个功能需要e2fsprogs版本4.13。2.实验性的对MD添加集群支持 这个版本对MD(Linux software RAID)添加集群支持。C...原创 2018-08-10 18:48:11 · 589 阅读 · 0 评论 -
Linux 单用户模式patch解析
在我之前文章提到Linux 4.1内核支持单用户模式(传送门:https://blog.csdn.net/cui841923894/article/details/81568351),此模式下用户UID和GID均为0同时不再区分用户权限(类root权限),应用于在某些小系统(例如嵌入式系统)。 接下来我们看下这个patch是如何实现内核单用户的。内核patch解析patch查看地址:...原创 2018-08-31 20:04:05 · 805 阅读 · 0 评论 -
useradd在Linux中是怎样完成添加用户的
在上篇文字《Linux 单用户模式patch解析》(传送门:https://blog.csdn.net/cui841923894/article/details/82261386)的最后有个疑问,为什么在单用户模式下useradd操作仍然可以执行成功(su操作却失败),单用户模式不应该屏蔽所有用户操作吗?难道是因为patch漏了对内核中useradd函数的禁用? 带着上面疑问,展开了我的探索之旅...原创 2018-08-31 20:08:45 · 1401 阅读 · 0 评论 -
Linux 4.7亮点特性
源于https://kernelnewbies.org/Linux_4.71.支持Radeon RX480 GPU 此版本支持Radeon RX480 GPU,这个一款基于新的Polaris框架的amdgpu驱动设备。2.目录并行查找 目录高速缓存缓存了有关路径名的信息,这些信息可以快速用于路径名的查找。这可以加速许多常见的操作,比如,它可以无需读取磁盘而确定特定文件或者目录是否存在。...原创 2018-08-24 19:01:40 · 3478 阅读 · 0 评论 -
Linux 4.14亮点特性
源于https://kernelnewbies.org/Linux_4.141.支持更大的内存 原始x86-64平台受限于4级分页的限制,最大支持256TiB的虚拟地址空间和64TiB的物理地址空间。现在我们已经碰到了这个限制:一些供应商现在开始提供64TiB内存的服务器。因此内核x86平台支持5级分页,突破了128PiB虚拟地址空间和4PiB物理地址空间的限制,This “ought to...原创 2018-08-25 20:16:54 · 1286 阅读 · 0 评论 -
Linux 4.13亮点特性
源于https://kernelnewbies.org/Linux_4.131.改进异步I/O Linux中的异步I/O实现存在一些缺陷,其中之一就是它在某些情况下意外阻塞。 此版本为异步I / O添加了一种返回错误而不阻塞的方法。 详情:https://lwn.net/Articles/724198/2.Ext4支持更多的目录条目 添加“largedir”,允许ext4目录创建超...原创 2018-08-25 20:16:06 · 281 阅读 · 0 评论 -
Linux 4.12亮点特性
源于https://kernelnewbies.org/Linux_4.121.支持Radeon RX Vega(https://en.wikipedia.org/wiki/AMD_RX_Vega_series)2.支持USB Type-C(https://en.wikipedia.org/wiki/USB-C)3.新的BFQ I/O调度,获得更快的响应 BFQ(Budget Fai...原创 2018-08-25 20:15:24 · 234 阅读 · 0 评论 -
Linux 4.11亮点特性
源于https://kernelnewbies.org/Linux_4.111.statx(2)系统调用支持 由于stat(2)系统调用存在一些缺点(比如在系统时间y2038问题不完善或者在网络文件系统不是很好用),可以使用新的系统调用statx(2)。 详情:https://lwn.net/Articles/707602/2.perf ftrace支持 perf工具包中添加新的命令...原创 2018-08-25 20:14:38 · 291 阅读 · 0 评论 -
Linux 4.10亮点特性
源于https://kernelnewbies.org/Linux_4.101.KVMGT支持 这个版本在KVM上增加了英特尔GVT-G(KVMGT)的支持,这个是从英特尔第四代酷睿(Haswell)处理器和英特尔图形处理器以来,拥有mediated pass-through模式,带有完整的GPU虚拟化解决方案。此功能基于新的VFIO Mediated Device框架。与direct pa...原创 2018-08-25 20:08:32 · 734 阅读 · 0 评论 -
Makefile开发工具学习小结
make命令与Makefile文件1、 目的:解决大型程序编译多个源文件带来的问题,可以大大提高开发效率。 2、 Makefile文件主要告诉应用程序应该如何构造,一般与其他源文件放在同一目录。一个大的工程,可以用多个不同的makefile文件分别管理项目不同部分。 3、 Makefile语法:由一组依赖关系和规则组成 1) 每个依赖关系由一个目标和一组该目标所依赖的源文件...原创 2018-08-29 19:56:24 · 269 阅读 · 0 评论