linux驱动程序开发 上课笔记

根文件系统概述

/bin

存放系统命令

/sbin

system binary 系统二进制文件
存放只有root用户才能操作的命令

/dev

devise

存放设备文件,每一个硬件进来都会映射成一个设备文件
如/dev/ttySAC0 这里的0指的是串口0

设备的分类:
字符设备(每次读写的时候以字符为单位,通常是慢速的,其通常是顺序读取的,不支持随机存取。如:键盘 串口)

早期电话的调制解调器都是连在串口上的,如配置路由器交换机时,都是连接到串口上的。

块设备 (以块为单位,磁盘中的块一般包括
512字节,内存中的块一般包括1kb/4kb字节),这种方式虽然有浪费,但极大地提高了读写的效率,所以大容量设备如: 硬盘等都是块设备,键盘是字符设备。

设备创建 (自动和手动)
(1)手动创建:mknod命令

在驱动程序insmod成功之后,通过mknod命令手动创建设备文件至/dev目录下:mknod /dev/xxx c 主设备号 次设备号。("c"表示字符设备、"b"表示块设备、"p"表示网络设备)

(2)自动创建设备文件:mdev
自动创建需要内核支持sysfs文件系统

/etc

存放系统应用程序所对应的配置文件,在windows中对应的是注册表
用户级的配置文件通常和用户系统放在一起

注册表:效率要高一点 但注册表会越来越臃肿,导致注册表的检索效率变慢,且会影响软件的再次安装

配置文件: 容易找到和删除

重要的系统配置文件(linux中不以后缀名做区分):
passwd: 存放用户名
shadow: 存放口令/密码
(分开存的原因:早期是放一起明文存放的, root用户可以看到其他用户的口令,为了改进这一点将密码加密(用加密算法(需要存放密钥)或者 将密码进行散列计算(由散列反推是很难做到的,一般加上sault 这样散列的健壮性更好))放到shadow中)
group: 分组文件

/etc下的重要目录

/lib

library: 存放库文件
存放共享库和可加载模块(驱动程序) 该目录用于支撑根文件系统
普通用户可以查看,超级用户可以修改。
/lib/crda/pubkey 放置了一些公钥密码
/lib/systemd 存放了一些系统脚本,例如shutdown、sleep
/lib/console 放置了一些驱动安装程序(sh文件)
libc.so 存放c语言库

/home

用户主目录,对于每个用户都有一个对应的主目录
/home下每一个字目录对应一个用户

/root用户的主目录存放在 /root下

/ :代表根目录或者是路径分隔符(windows下是 \ 可以记忆汉字八 因为windows是后出现的,所以是八的第二笔划)

/usr

里面存放的是共享,只读的程序和数据
os中共享用加锁(行加锁 表加锁)

/usr 下的目录

/include:c程序的头文件里给出了头文件的定义,加上lib库文件才能运行。
/lib:库文件
/share:与架构无关的数据
/local: 本地目录

/var

/var 所有服务的登录的文件或错误信息文件(LOG FILES)都在/var/log下,此外,一些数据库如MySQL则在/var/lib下,还有,用户未读的邮件的默认存放地点为/var/spool/mail

/proc

存放系统运行状态信息 如cpu信息 硬盘信息
里面的文件由内核动态运行生成 不需要保存

/proc/1: 也叫做init进程,其是所有进程的父进程,它来收养所有的孤儿进程(proc/0用来创建1)

/proc/cpuinfo 处理器信息 输入命令: cat cpuinfo 即可看它的内容

/proc/dma 显示当前使用的DMA通道 
/proc/interrupts 显示使用的中断 (可以由很多用户处理,信箱只能由一个用户处理)

/proc/meminfo 存储信息
/proc/modules 系统加载了那些模块
/proc/uptime 系统启动时间长度

挂载模块: mount -t proc(表明文件类型) proc(设备名)/proc(具体的目录 将设备的内容映射到哪里)

查看: cat /proc/cpuinfo

/mnt

挂载点目录 
有些将u盘挂载到 /media

/temp

用于存放临时文件(带~的同名文件:定时保存文件,防止断电等意外;还有中间文件)

它的删除一般由操作系统处理,一般用户不要手动处理

Linux 文件类型

普通文件 目录文件 字符设备文件 块设备文件

FIFO:通常用来保存中间数据 FIFO管道(命名管道:可以暂存上一部分传来的内容,等有程序接入时流出)

套接口 socket:ip+端口号(相当于插座和插头) 是服务器客户端模式 不是p2p模式

链接文件:硬链接和软链接
详情见这里

删除文件:一般是删除文件名和inode,但数据区不动
在删除的时候多次写入0,然后再删除,这样恢复的可能性极低

硬接文件:不同的文件名指向同一个inode 
inode会记录有几个链接文件,当里面的记录为0时才会删除inode,文件才会被删除

文件属性:
r:读inode 和 数据区
w:写数据区 inode被动改变
x:执行

如何创建文件系统 —— Busybox

Busybox: (1)开源 (2)体积足够小,将众多unix命令集合在1kb范围内 (3)只需要在/dev目录创建设备

init进程(PID = 1)
对应的可执行程序为:/sbin/init

开源的代码:首先要查看开源协议

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五月的天气

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值