差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

后一修订版
前一修订版
public:it:linux:linux-program [2021/02/03 16:53] – 创建 oakfirepublic:it:linux:linux-program [2024/04/23 13:26] (当前版本) oakfire
行 1: 行 1:
 ====== Linux 编程 ====== ====== Linux 编程 ======
 +  * [[https://linux-kernel-labs-zh.xyz/lectures/intro.html]]: 布加勒斯特理工大学的 Linux 内核教学课程,动手实践设备驱动的编写。涉及的概念讲解得不错。
 +  * Linux 源代码布局:<code>
 ++-------+
 +| linux |
 ++-+-----+
 +  |
 +  +------+--------+---------+---------+--------------+--------------+
 +  |      |        |                              |              |
 +  |      v        v                              v              v
 +  |  +------+ +-------+ +-------+ +--------+ +---------------+ +---------+
 +  |  | arch | | block | | certs | | crypto | | Documentation | | drivers |
 +  |  +------+ +-------+ +-------+ +--------+ +---------------+ +---------+
 +  |
 +  +-------+----------+--------+---------+--------+--------+---------+
 +  |                |        |                |        |         |
 +  |                v        v                v        v         v
 +  |  +----------+ +----+ +---------+ +------+ +-----+ +--------+ +-----+
 +  |  | firmware | | fs | | include | | init | | ipc | | kernel | | lib |
 +  |  +----------+ +----+ +---------+ +------+ +-----+ +--------+ +-----+
 +  |
 +  +-----+------+---------+------------+------------+------------+
 +  |          |                    |            |            |
 +  |          v                    v            v            v
 +  |  +----+ +-----+ +---------+ +---------+  +----------+ +-------+
 +  |  | mm | | net | | samples | | scripts |  | security | | sound |
 +  |  +----+ +-----+ +---------+ +---------+  +----------+ +-------+
 +  |
 +  +------+--------+--------+
 +                |        |
 +                v        v
 +     +-------+ +-----+ +------+
 +     | tools | | usr | | virt |
 +     +-------+ +-----+ +------+
 +</code>
 +
 +  * 以下是 Linux 源代码文件夹的顶层目录:
 +    * arch——包含特定架构(architecture)的代码;每个架构在特定的子文件夹中实现(例如 arm、arm64 以及 x86)
 +    * block——包含与读写块设备数据相关的块子系统代码:创建块 I/O 请求、调度(scheduling)请求(有几个 I/O 调度程序可用)、合并请求,并将其通过 I/O 堆栈传递给块设备驱动程序
 +    * certs——使用证书实现签名检查支持
 +    * crypto——各种加密算法的软件实现,以及允许将这些算法分载到硬件中的框架
 +    * Documentation——各个子系统的文档、对 Linux 内核命令行选项的描述、对 sysfs 文件和格式的描述以及设备树绑定(支持的设备树节点和格式)
 +    * drivers——各种设备的驱动程序以及 Linux 驱动程序模型实现(对驱动程序、设备总线及其连接方式的抽象描述)
 +    * firmware——由各种设备驱动程序使用的二进制或十六进制固件文件
 +    * fs——虚拟文件系统切换(通用文件系统代码)以及各种文件系统驱动程序的位置
 +    * include——头文件
 +    * init——在启动过程中运行的通用(而不是特定于架构的)初始化代码
 +    * ipc——对各种进程间通信系统(Inter Process Communication)调用的实现,例如消息队列、信号量、共享内存
 +    * kernel——进程管理代码(包括对内核线程、工作队列的支持)、调度程序(scheduler)、跟踪、时间管理、通用中断代码(generic irq code)以及锁定(locking)
 +    * lib——各种通用函数,例如排序、校验和、压缩和解压缩、位图操作等
 +    * mm——内存管理代码,用于物理和虚拟内存,包括页面、SL*B 和 CMA 分配器、交换(swapping)、虚拟内存映射、进程地址空间操作等
 +    * net——各种网络协议栈的实现,包括IPv4和IPv6;BSD 套接字实现、路由、过滤、数据包调度以及桥接(bridging)等
 +    * samples——各种驱动程序示例
 +    * scripts——构建系统的一部分,用于构建模块的脚本,Linux 内核配置器 kconfig,以及其他各种脚本(例如 checkpatch.pl,用于检查补丁(patch)是否符合 Linux 内核的编码风格)
 +    * security——Linux 安全模块框架的位置,允许扩展默认(Unix)安全模型,以及多个此类扩展的实现,例如 SELinux、smack、apparmor 以及 tomoyo 等
 +    * sound——ALSA(Advanced Linux Sound System,高级 Linux 声音系统)的位置,以及旧的 Linux 音频框架(OSS)
 +    * tools——用于测试或与 Linux 内核子系统交互的各种用户空间工具
 +    * usr——支持在内核映像中嵌入 initrd 文件
 +    * virt——KVM(Kernel Virtual Machine,内核虚拟机)虚拟化管理程序(hypervisor)的位置
 +
 ===== Tips ===== ===== Tips =====
   * 编程执行命令:https://blog.csdn.net/lu_embedded/article/details/78669939   * 编程执行命令:https://blog.csdn.net/lu_embedded/article/details/78669939
-   * [[https://man7.org/linux/man-pages/man3/popen.3.html|popen]] +    * [[https://man7.org/linux/man-pages/man3/popen.3.html|popen]] 
 +  * USB黑名单:https://projectgus.com/2014/09/blacklisting-a-single-usb-device-from-linux/ 
 +    * 使用 ''man udev'' 来查看详细 
 +    * 例子:禁用U盘,在 ''/etc/udev/rules.d/'' 写入文件 ''99-deny_removable_storage.rules'':<file - 99-deny_removable_storage.rules> 
 +# disable USB storage 
 +SUBSYSTEM=="usb", DRIVERS=="usb-storage", ATTR{authorized}="0" 
 +</file>即可生效。 
 +    * 相关:https://www.kernel.org/doc/Documentation/usb/authorization.txt 
 +    * 直接禁用mod方式:https://ubuntuforums.org/showthread.php?t=166624
  • public/it/linux/linux-program.1612342389.txt.gz
  • 最后更改: 2021/02/03 16:53
  • oakfire