Linux系统
文章平均质量分 86
wenshizhang
这个作者很懒,什么都没留下…
展开
-
Linux显卡驱动亮度调节功能书写指南.md
综述最近在一些项目中,接触了一些嵌入式领域的常用显卡。这类显卡一般都是不提供亮度调节等功能的,因此这部分需要自己实现。这也是第一次从头实现背光这一套,还比较简单的,记录一下。一般来讲,内核驱动的通用套路是,内核把公共的部分抽象出来做好,和设备相关的部分就需要各设备驱动自己做。这也就是我们常说的驱动框架,背光设备的话,肯定是套drm驱动里面的东西。背光设备初始化,一定是在显卡初始化里面做的,初始化好的的背光设备,会在/sys/class/backlight/XXX,上层调用这个接口,驱动处理相关的事件。原创 2021-03-04 14:59:35 · 776 阅读 · 1 评论 -
当我们谈论开机的时候我们都在谈论什么(二)——保护模式
本文所谈论到的cpu是Intel的x86体系架构的cpu,作者才疏学浅,其他体系的暂不讨论。读者可以未经作者允许随意转载,但请注明出处并且保证文章的完整性本文主要谈一下几个方面: 1、保护模式和实模式是个什么鬼 2、怎么由保护模式进入实模式 3、实模式跳转到保护模式的示例代码在讲之前照例讲几句闲话: 1、实模式是操作系统之源,没有它,操作系统就是无本之木、无水之源 2、现在操作系统的书很少原创 2015-12-05 11:48:29 · 922 阅读 · 0 评论 -
当我们谈论开机的时候我们在谈论些什么(三)——特权级(未完成)
注:本文所有说到特权级大小的地方都是指的数字。本文阐述了两部分内容: 1、一致代码段和非一致代码段 2、怎么设置特权级特权级这部分比较绕,说起来并没有很多东西,但是需要整理整理。一、一致代码段和非一致代码段代码段分为一致代码段和和非一致代码段(只有代码段才区分这个,数据段并不区分)。一般我们认识一个新事物需要搞懂两个问题:为什么和怎么做。所以本文会解释为什么做这个区分,和怎么区分的。 做出这个原创 2015-12-07 21:36:52 · 689 阅读 · 0 评论 -
阅读linux0.11——boot
linux0.11boot主要分为三个部分,分别在三个程序里面实现,bootsect.s、head.s和setup.s。下面我们简单来分析分析这三个文件。一、bootsect.s这个程序是最先被执行的,根据linus的解释说,这个程序会被BIOS启动例程(bios-startup routines)加载到内存的0x7c00处(不明白为什么都是加载在这个位置,于渊的《一个操作系统的实现》也是说这么说的原创 2016-03-16 18:04:46 · 1070 阅读 · 0 评论 -
阅读Linux0.11——head.s
最近经过反馈,博主得知了自己在输出自己的知识方面做的非常不好。经过认真的反思,好吧主要是思考别人是怎么做的,以及结合我的特点,得出如下结论: 1、认为每一个听众或者读者都是零基础,要直白的讲出想要讲给别人的知识。虽然这句话听起来像是废话,但是挺不容易的。举个栗子,拿Linux来说,我接触这个已经三四年时间,很多知识我觉得是很理所当然的,比如讲编程的时候我没必要一字一句讲的清清楚楚。解释一些API的原创 2016-03-23 16:13:26 · 890 阅读 · 0 评论 -
APUE阅读笔记(八)——进程控制
说明:1、为什么写的第一篇阅读笔记就是八呢?因为之前看apue并没有写读书笔记,一直看到第八章,也就是标题中的这一章,才发现,不写是不行的,因为当我自己大量的接受新知识的时候,会遗忘的很厉害,也就是传说中的前学后忘。 2、之前差的那些章节,准备回过头再看一遍,然后写点笔记 3、这是一个笔记,笔记中尽可能详细的记录了我的理解,可能跟你的理解不一样,欢迎赐教。目录:1、进程ID 2、fork和vf原创 2016-04-18 12:59:03 · 795 阅读 · 0 评论 -
Linux路径名查找
对于文件系统的大部分操作(open、stat、unlink等等)都要涉及多多少少的路径解析。路劲解析是根据路径名(name string)得到对应的dentry对象,通过路径行走的方式。本文就来介绍路径行走。路径行走解释 路径是由一个开始字符(根目录、当前工作目录或者fd指向的目录),和一串其他的文件名组成的,path中的每一个文件名用/分割开。名称查找(Name Lookup)就是希望根据已知的原创 2016-05-11 16:12:11 · 3323 阅读 · 0 评论 -
如何在配置kdump
说明1、作者使用的操作系统是cenos 7 2、在百度上查了很多资料,都没什么用 3、本文只是讲了开启kdump服务,后面还会讲怎么分析core文件什么是kdump? kdump 是一种先进的基于 kexec 的内核崩溃转储机制。当系统崩溃时,kdump 使用 kexec 启动到第二个内核。第二个内核通常叫做捕获内核,以很小内存启动以捕获转储镜像。第一个内核保留了内存的一部分给第二内核启动用。原创 2016-06-15 21:24:51 · 12482 阅读 · 0 评论 -
When move one file to USB drive remindy too large file
BlahGood evening! It’s been a long time since last time I write a blog. Igot some news –got a intern job! That ‘s first time, I been so excited, then I forgot to write a blog. Good new is I always writ原创 2017-01-05 20:09:04 · 704 阅读 · 0 评论 -
Create VM base on KVM
EnvironmenthostsOS: OpenSuSE Leap 42.1Desktop: GNOMEguestOS: OpenSuSE Leap 42.1Desktop: GNOMEIntroduce of KVMKernel-based Virtual Machine (KVM) is a virtualization infrastructure for the Linux ke原创 2017-01-12 14:11:03 · 576 阅读 · 0 评论 -
中断初探
中断初探最近几个月调了很多中断的bug,啃了很久的源码。整理了一些东西,大佬们笑纳。离开了架构谈中断都是不深刻的,大佬们肯定玩腻了X86了,今天就以龙芯内核(龙芯官网即可获得:git://cgit.loongnix.org/kernel/linux-3.10.git)为例简单介绍一下哈。中断在内核中的生命周期主要分为三个部分:初始化,注册和中断处理,剩余的所有事情都是硬件完成的。这部分打算分享...原创 2019-08-09 20:29:22 · 590 阅读 · 0 评论 -
中断再探
前面简单介绍中断初始化和注册的基本流程,这里接上文留下来的两部分内容,中断处理和中断调试技巧。从内核开发的角度来讲说,前文是科普帮组理解我在讲什么,本文是纯干货。基本上可以帮助我修复了我遇到90%的中断错误。中断处理众所周知,中断处理统一入口是do_IRQ函数,经过一层层调用真正到处理函数。今天的分享主要集中在滴啊用 do_IRQ之前操作。CPU检测到有中断发生,然后调用handle_int...原创 2019-09-25 21:23:18 · 320 阅读 · 0 评论 -
bochs使用手册
对于每一个尝试自己写计算机开机引导甚至是一个操作系统的人来说bochs是一个很好用的工具,强大的调试功能以及自带的制作虚拟盘的工具都是亮点。 和大多数人一样,初次接触这个工具难免会比较生疏,所以要把很常用的命令记录下来,以便查看。 本手册不定期更新。1、如何运行自己的扇区引导1)、自己写好的扇区引导用nasm编译成.bin为后缀的纯二进制文件。(nasm是一个很强大的编译工具,他可以直接把汇编源原创 2015-11-25 21:49:51 · 3000 阅读 · 0 评论 -
bochs安装及配置
之前自己写了一个扇区引导,写好了以后可能激动难耐,顺手就dd进了一个盘。然后linux的分区就找不到了。修复grub以后还是起不来,没办法,只能忍痛重装系统了(真是一样的教训)。所以,以后这种东西还是要在一个模拟器里边玩比较妥当,不然每次写好了还要开关机而且要冒着一系列风险。说到了这里,一阵肉痛。我的系统啊。 言归正传,ubuntu下可以用命令行来安装bochs,(sudo apt-get ins原创 2015-11-24 20:03:51 · 5833 阅读 · 0 评论 -
内核同步机制的一些见解(未完成)
本文主要回答三个问题: 1、为什么要内核同步 2、内核同步有哪些策略 3、Liunx内核同步的代码实现 先来说说内核抢占,这时一个很重要的概念。内核抢占通俗来讲,的那个一个内核进程在运行的时候,是否允许另外一个内核进程进行抢占。内核抢占减少了用户程序的分派延时,提供了更好地人机交互。但是有的进程要求在持续运行直到结束,所以系统也提供了这样的接口,代码如下:#define preempt_di原创 2015-10-28 20:55:30 · 635 阅读 · 0 评论 -
ps aux命令显示的状态列中的状态(转)
D 不可中断 Uninterruptible sleep (usually IO) R 正在运行,或在队列中的进程 S 处于休眠状态 T 停止或被追踪 Z 僵尸进程 W 进入内存交换(从内核2.6开始无效) X 死掉的进程< 高优先级N 低优先级L 有些页被锁进内存s转载 2015-10-16 13:34:45 · 633 阅读 · 0 评论 -
我的第一个内核模块和makefile文件编写
相信很多做过内核编程的人都写过makefile,虽然之前写过一些简单的内核模块写过makefile,到今天想要写一个内核模块的时候发现之前学的的已经全部忘记了。而且之前写的时候也没有写一些博客什么的记录下来。Orz…. 言归正传,Makefile这个文件还是真的不好写。相信你跟我一样之前编程的时候为了图好看的代码风格,敲了很多很多的空格,基本上逢符号必空格。今天在写makefile时原创 2015-09-16 16:47:46 · 713 阅读 · 0 评论 -
fedora双系统问题
之前安装ubuntu实在是安不上,就选择了fedora。fedora跟ubuntu不一样的地方在分区的时候。ubuntu我一般都是选择自动分区,如果你的硬盘有足够大的空间,就可以很流畅安装没有问题。 但是在fedora上不行,一块硬盘只能分四个分区,这个是有限制的。如果你的win7加上主分区占去了全部的,那么fedora分不到自己的区就一致显示没有足够的可用空间。就会一致装不上(就原创 2015-09-16 22:11:48 · 475 阅读 · 0 评论 -
写自己的内核模块——获取一个进程的物理地址
首先,根据一个虚拟地址是可以得到物理地址的,这个内核模块是可以做到的。 大概就以下这几步: 1、得到当前进程的task_struct结构体(类似于current宏的实现) 2、得到进程的mm_struct结构体 3、搞一个虚拟地址(一个变量的地址或者一个函数的地址) 4、先得到pgd,然后根据pgd找到pud,根据pud找到pte,当当当当,你得到了该变量(或者函数)所在页面的页表表项地址原创 2015-11-07 15:14:56 · 2859 阅读 · 2 评论 -
ubuntu不常用命令集中贴(不定期更新~~~)
很多不太用的命令记不住,每次到用的时候采取找不是很方便,所以写一个集中贴记录下来。 查看当前kernel版本号码:uname -r原创 2015-09-16 15:24:21 · 465 阅读 · 0 评论 -
ubuntu双系统装机集中贴
最近帮很多人装机,遇到了千奇百怪的问题,决定写两个记录下来,虽然还没有解决。 第一个先是uefi BIOS改不了U盘启动。当我进入BIOS以后居然不是那个诡异蓝,改的boot order,保存的时候还是不行,顿时就觉得不能做朋友了。经过大量的百度最后终于改好了(因为是帮别人装机,当时没拍照,现在有点记不清是怎么改的了,只能下回在遇到这个问题来详细列出来),装机没什么困难,就一直点下一步下原创 2015-09-16 15:17:10 · 422 阅读 · 0 评论 -
ubuntu下设置一个wifi热点
我使用的是ap-hotspot,比较简单,命令行一共就三四步的样子。先来提一下配置的方法,然后讲我遇到的问题。 第一步:安装hoseapd和ap-hotspot。sudo apt-get updatesudo apt-get install postapdsudo apt-get install ap-hotspot第二步:配置ap-hotspotsudo ap-hotspot configu原创 2015-10-11 11:25:47 · 1710 阅读 · 0 评论 -
makefile文件的编写
上次讲座的时候帮所有人已经调试通过了,下来了还是有很多人说他们的编译还是报错了。 对于我们这些编惯了程序的人来说,Makefile文件是不好写,脚本的很多规则跟程序是不一样的,不能多一个空格,该写tab的地方不能用空格代替…..我总结了以下,编译错误都是因为Makefile文件书写不对。现在我把比较常见的错误整理出来,如果你回去编译了还是不通过,先来对照对照是不是这个错原创 2015-09-21 19:41:03 · 1185 阅读 · 1 评论 -
mycd命令
今天写了自己的ls命令,完了以后突发奇想,想写一个自己的cd命令,查了以下还真的有函数来实现修改当前的工作目录,chdir函数。下面根据man手册给出这个函数的详细解释信息。 函数描述:改变工作路径 函数头文件和定义:#include#include <stdlib.h>#include <string.h>#include <unistd.h>char * cd_get_p原创 2015-09-22 20:38:58 · 1151 阅读 · 0 评论 -
ubuntu中孤儿进程的父进程pid并不是1??
刚刚写了一个孤儿进程,顺手打印了他的ppid,居然发现不是1,什么鬼??!!! 因为在发现这个结果之前这个进程已经跑了很多遍了,新fork的进程都没有退出,以为是因为这个原因所以结果跟我想的一样。 然后sudo reboot,接着运行发现运行结果孤儿进程的ppid并不是1,ps aux发现这个代替了init进程来接管孤儿进程的进程名字叫做init–user,重启了几回都是这原创 2015-09-22 21:58:22 · 3544 阅读 · 4 评论 -
当我们谈开机的时候我们在谈论些什么
本文主要解决了以下几个问题: 1、当你按下电源键以后都发生了什么? 2、Linux kernel初始化都在初始化什么? 3、init进程何时创建? 注:本文所有的的内核代码都是来自于kernel3.14.54,读者可以未经作者允许随意转载,但请保证文章的完整性。第一部分:当你按下电源的时候,你的计算机都做了什么。 当你按下电源的时候,你的内存,寄存器都是空的(材质都是易失性存储,断电后数据原创 2015-11-13 17:09:54 · 721 阅读 · 0 评论 -
ubuntu 创建新用户问题
今天要使用新用户翻开好久不看的鸟哥,鸟哥上说先用useradd创建一个新用户,此时新用户暂时是被封锁的。打开/etc/shadow看到最后一行跟别的就是不一样的。详情如图(newuser为新用户名称)。![](http://img.blog.csdn.net/20150910164807437)使用passwd命令改了密码以后,shadow文件下的一致了。但是切换用户还是有问题,新用户没有家目录。原创 2015-09-10 17:07:46 · 1465 阅读 · 0 评论