Skip to content

Commit

Permalink
update meta infos (#77)
Browse files Browse the repository at this point in the history
  • Loading branch information
hanyujie2002 authored May 30, 2024
1 parent 22e7e06 commit aa875d5
Show file tree
Hide file tree
Showing 38 changed files with 132 additions and 16 deletions.
4 changes: 4 additions & 0 deletions index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
Linux 内核教学
=============

.. meta::
:description: 本 Linux 内核教学文档介绍了一系列与 Linux 内核相关的课程和实验。课程侧重于理论和内核探索,实验则着重于设备驱动程序的主题。本文档内容基于布加勒斯特理工大学的“操作系统 2”课程。文档可以通过 Docker 容器或直接在主机上构建。该文档包含入门介绍、系统调用、进程管理、中断机制、SMP、地址空间、内存管理、文件系统、调试、网络、体系结构、虚拟化等 Linux 内核相关的多个专题。
:keywords: Linux, 内核, 内核编程, 操作系统, 设备驱动程序, 文件系统, 进程管理, 虚拟化

本文档包含一系列 Linux 内核主题的课程和实验。课程侧重于理论和 Linux 内核探索。

实验侧重于设备驱动程序主题,文档风格类似“howto”。每个主题分两部分:
Expand Down
4 changes: 4 additions & 0 deletions info/chinese-localization-info.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
中文翻译介绍
=================

.. meta::
:description: 介绍中文版 Linux Kernel Labs 课程文档的背景、目的和特点
:keywords: Linux, 内核, 课程, 中文翻译, 实验环境, 反馈建议

本教程译自 Linux kernel Labs 课程,原英文课程网址是 https://linux-kernel-labs.github.io/refs/heads/master,Github 仓库位于 https://github.com/linux-kernel-labs/ 。

我对其课程内容进行了简体中文翻译,一方面帮助了别人,另一方面自己也学习了一遍 Linux 内核底层。英文原版仓库是把文档和实验环境代码放在同一个仓库里,我为了方便文档编辑,将其抽离到了 `docs-linux-kernel-labs-zh-cn 仓库 <https://github.com/linux-kernel-labs-zh/docs-linux-kernel-labs-zh-cn>`__ 里。
Expand Down
4 changes: 4 additions & 0 deletions info/contributing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
向 Linux 内核实验项目做贡献
===========================

.. meta::
:description: 介绍如何为 Linux 内核实验项目做出贡献的指南,包括如何 fork 仓库、创建拉取请求以及修改拉取请求等步骤
:keywords: Linux, 内核, 实验, 贡献, fork, pull request, GitHub

``Linux 内核实验`` 是一个开放的平台。你可以通过对文档、练习或基础设施的贡献来帮助它变得更好。无论是对错别字的修正还是在文档中添加新的部分,所有的贡献我们都欢迎。

所有需要进行贡献的信息都可以在 `Linux 内核实验 Linux 仓库 <https://github.com/linux-kernel-labs/linux>`_ 中找到。如果要改变任何东西,你需要从你自己的 fork 创建一个拉取请求(``Pull Request``,``PR``)到这个仓库。PR 将由团队成员进行审核,并在解决任何可能的问题后合并。
Expand Down
6 changes: 6 additions & 0 deletions info/extra-vm.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@
自定义虚拟机配置
===============

.. meta::
:description: 介绍如何在 QEMU 虚拟机上自定义虚拟机配置,包括使用 SSH 连接、连接调试器到内核、重建内核镜像、以及使用 Docker 容器运行实验环境。
:keywords: Yocto, QEMU, 虚拟机, SSH, 调试器, 内核, Docker

这个元信息描述了文件的主要内容,包括如何在 QEMU 虚拟机上自定义 Yocto 虚拟机配置,如何使用 SSH 连接、连接调试器到内核、重建内核镜像、以及如何使用 Docker 容器运行实验环境。关键词涵盖了这些主要的主题。

通过 SSH 连接到虚拟机
--------------------
QEMU 虚拟机的默认 Yocto 镜像(core-image-minimal-qemu)仅提供了运行内核和内核模块所需要的最小功能。要使用额外的功能,例如 SSH 连接,需要一个更完整的镜像,例如 core-image-sato-dev-qemu。
Expand Down
4 changes: 4 additions & 0 deletions info/vm.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@
推荐配置
=====================

.. meta::
:description: 介绍在基于 QEMU 虚拟机上运行 Linux 内核的操作步骤和要求。包括虚拟机所需软件包、启动虚拟机以及连接到虚拟机的具体方法。
:keywords: Linux, QEMU, 虚拟机, 内核编程, 操作系统实验

要搭建一个功能齐全的环境,最简单的方式是遵循 `这个仓库 <https://github.com/linux-kernel-labs-zh/so2-labs>`__ 中列出的步骤。

=========
Expand Down
3 changes: 2 additions & 1 deletion labs/arm_kernel_development.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ ARM 内核开发
=========================

.. meta::
:description: 初步了解片上系统(SoC);熟悉使用 ARM 作为支持架构的嵌入式世界;理解什么是板级支持包(BSP);使用 i.MX6UL 平台作为示例,编译和引导 ARM 内核;熟悉使用设备树进行硬件描述
:description: 本文介绍了 ARM 架构的片上系统(SoC)以及 ARM 内核开发的基础知识。包括使用 i.MX6UL 平台作为示例,编译和引导 ARM 内核的操作步骤,同时也介绍了板级支持软件包(BSP)和交叉编译器的概念。
:keywords: ARM, 内核开发, SoC, i.MX6UL, Linux 内核, 编译, 交叉编译, BSP

实验目标
==============
Expand Down
3 changes: 2 additions & 1 deletion labs/block_device_drivers.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
====================

.. meta::
:description: 了解 Linux 中 I/O 子系统的行为,在块设备的结构和函数上进行实际操作,通过解决练习,掌握块设备的 API 使用基础技能
:description: 介绍 Linux 内核中块设备驱动程序的基本概念和编程接口
:keywords: Linux, 内核, 块设备, 驱动程序, 注册, 磁盘, gendisk, alloc_disk, add_disk, del_gendisk

实验目标
==============
Expand Down
4 changes: 2 additions & 2 deletions labs/deferred_work.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
=============

.. meta::
:description: 理解延迟工作(即在稍后时间执行的代码),实现使用延迟工作的常见任务,理解延迟工作的同步特性
:keywords: softirq, tasklet, struct tasklet_struct, 下半部处理程序, jiffies, HZ, timer, struct timer_list, spin_lock_bh, spin_unlock_bh, workqueue, struct work_struct, 内核线程, events/x
:description: 介绍了 Linux 内核中的延迟工作机制,包括软中断(softirq)、任务(tasklet)、定时器(timer)和工作队列等。它解释了这些机制的目的、特性和用法,为读者提供了对内核延迟工作的全面理解。
:keywords: Linux 内核, 内核编程, softirq, tasklet, timer, workqueue, 延迟工作

实验目标
==============
Expand Down
4 changes: 2 additions & 2 deletions labs/device_drivers.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
========================

.. meta::
:description: 理解字符设备驱动程序背后的概念,理解可以在字符设备上执行的各种操作,使用等待队列进行工作
:keywords: 内核, 内核编程, Linux, cscope, LXR, gdb, addr2line, dump_stack
:description: 介绍了字符设备驱动程序的概念和实现,包括设备文件、设备驱动程序的分类、主次设备号、以及实现字符设备驱动程序所需的重要数据结构。
:keywords: 字符设备, 设备驱动程序, 主设备号, 次设备号, cdev, file_operations

实验目标
=====================
Expand Down
4 changes: 4 additions & 0 deletions labs/device_model.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
Linux 设备模型
==================

.. meta::
:description: 介绍 Linux 设备模型的概念和相关机制,包括即插即用、sysfs 虚拟文件系统等
:keywords: Linux, 设备模型, 即插即用, sysfs, 设备, 总线, 驱动程序

概述
========

Expand Down
3 changes: 2 additions & 1 deletion labs/filesystems_part1.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
============================

.. meta::
:description: 了解 Linux 中虚拟文件系统(VFS)的知识,理解有关“inode”、“dentry”、“文件”、“超级块”和数据块的概念,理解在 VFS 内挂载文件系统的过程了解各种文件系统类型,并理解具有物理支持(在磁盘上)和没有物理支持的文件系统之间的区别
:description: 介绍 Linux 虚拟文件系统(VFS)的基本概念,包括文件系统模型、挂载过程、常见的文件系统类型以及有关注册和注销文件系统的内容。
:keywords: Linux, 虚拟文件系统, VFS, inode, dentry, 超级块, 文件系统, 挂载

实验目标
==============
Expand Down
3 changes: 2 additions & 1 deletion labs/filesystems_part2.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
============================

.. meta::
:description: 提高对 inode、file 和 dentry 的了解,了解如何在 VFS(虚拟文件系统)中添加对常规文件和目录的支持,了解文件系统的内部实现
:description: 介绍文件系统驱动程序的实现细节,包括 inode、file 和 dentry 数据结构,以及如何在 VFS 中添加对常规文件和目录的支持,并介绍文件系统的内部实现。
:keywords: 文件系统, inode, dentry, VFS, 文件系统实现

实验目标
==============
Expand Down
4 changes: 2 additions & 2 deletions labs/interrupts.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ I/O 访问和中断
==========================

.. meta::
:description: 与外围设备进行通信,实现中断处理程序,将中断与进程上下文同步
:keywords: IRQ, I/O 端口, I/O 地址, 基地址, UART, request_region, release_region, inb, outb
:description: 介绍 Linux 内核中 I/O 访问和中断机制的基本概念和相关 API 的使用
:keywords: Linux 内核, 中断, I/O 端口, 设备驱动, request_region, release_region, inb, outb

实验目标
==============
Expand Down
3 changes: 2 additions & 1 deletion labs/kernel_api.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
========

.. meta::
:description: 熟悉基本的 Linux 内核 API,描述内存分配机制,描述锁定(locking)机制
:description: 介绍 Linux 内核 API 的基本概念和函数,包括内存访问、执行上下文、锁定机制等内容。
:keywords: Linux, 内核, API, 内存分配, 锁定, 可抢占性, 内核编程

实验目标
========
Expand Down
3 changes: 2 additions & 1 deletion labs/kernel_modules.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
========

.. meta::
:description: 创建简单的模块,描述内核模块编译的过程,展示如何在内核中使用模块,简单的内核调试方法
:description: 这个文档介绍了 Linux 内核模块的基本概念、编译和使用方法。包括创建简单内核模块、内核模块编译过程、如何在内核中使用模块以及一些简单的内核调试方法。
:keywords: 内核, 内核模块, 内核编程, Linux, 编译, Makefile, Kbuild

实验目标
========
Expand Down
3 changes: 2 additions & 1 deletion labs/kernel_profiling.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
================

.. meta::
:description: 熟悉 Linux 内核分析的基础知识,理解基本的分析工具,学习分析方法和良好实践
:description: 介绍 Linux 内核分析的基础知识、常用分析工具以及分析方法和良好实践
:keywords: 内核分析, Linux, perf, ps, htop, lsof, 内核调试

实验目标
==============
Expand Down
4 changes: 2 additions & 2 deletions labs/memory_mapping.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
==============

.. meta::
:description: 理解地址空间映射机制,了解与内存管理相关的重要结构
:keywords: mmap, struct page, struct vm_area_struct, struct vm_struct, remap_pfn_range, SetPageReserved, ClearPageReserved
:description: 介绍 Linux 内核中内存映射机制的基本概念和相关数据结构
:keywords: 内核编程, Linux, 内存管理, 地址空间, mmap, page, vm_area_struct, remap_pfn_range

实验目标
==============
Expand Down
3 changes: 2 additions & 1 deletion labs/networking.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
============================

.. meta::
:description: 理解 Linux 内核网络架构,掌握使用数据包(packet)过滤器或防火墙进行 IP 数据包管理,熟悉在 Linux 内核级别使用套接字的方法
:description: 介绍 Linux 内核网络子系统的架构和编程,包括网络编程在用户空间和内核空间的实现,以及网络数据包的处理机制
:keywords: Linux, 内核, 网络编程, 套接字, TCP/IP, 数据包, sk_buff, socket

实验目标
==============
Expand Down
4 changes: 4 additions & 0 deletions lectures/address-space.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
地址空间
=================

.. meta::
:description: 介绍了 x86 架构下的内存管理单元(MMU)的工作机制,包括分段和分页,以及在 Linux 操作系统中是如何使用分段机制的。
:keywords: 地址空间, MMU, 分段, 分页, 选择器, 段描述符, Linux, 线程本地存储

`查看幻灯片 <address-space-slides.html>`_

.. slideconf::
Expand Down
4 changes: 4 additions & 0 deletions lectures/arch.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
体系结构层
==================

.. meta::
:description: 这篇文档介绍了 Linux 内核的体系结构层,包括内核的引导过程、内存管理、MMU 管理、线程管理、时间管理、中断和异常管理、系统调用以及平台驱动程序等内容。
:keywords: Linux 内核, 体系结构, 引导, 内存管理, MMU, 线程管理, 时间管理, 中断, 异常, 系统调用, 平台驱动程序

`查看幻灯片 <arch-slides.html>`_

.. slideconf::
Expand Down
4 changes: 4 additions & 0 deletions lectures/debugging.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
调试
=========

.. meta::
:description: 介绍了 Linux 内核的调试方法,包括解码 oops 和 panic 错误信息、列表调试、内存调试、锁调试以及性能分析等内容,为内核开发人员提供了实用的调试技巧。
:keywords: Linux 内核, 调试, oops, panic, 内存调试, 锁调试, 性能分析

`查看幻灯片 <debugging-slides.html>`_

.. slideconf::
Expand Down
4 changes: 4 additions & 0 deletions lectures/fs.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
文件系统管理
=====================

.. meta::
:description: 介绍了文件系统的基本概念和管理,包括文件系统的抽象、操作以及 Linux 中的虚拟文件系统(VFS)。
:keywords: 文件系统, 超级块, 索引节点, 目录项, VFS, Linux 内核

`查看幻灯片 <fs-slides.html>`_

.. slideconf::
Expand Down
4 changes: 4 additions & 0 deletions lectures/interrupts.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
中断
=========

.. meta::
:description: 介绍 x86 架构中的中断和异常机制,包括同步中断(异常)和异步中断,可屏蔽中断和不可屏蔽中断,以及可编程中断控制器(PIC)的工作原理。
:keywords: 中断, 异常, PIC, 可屏蔽中断, 不可屏蔽中断, x86 架构

`查看幻灯片 <interrupts-slides.html>`_

.. slideconf::
Expand Down
4 changes: 4 additions & 0 deletions lectures/intro.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
介绍
============

.. meta::
:description: 这个文档介绍了操作系统基础知识,包括操作系统的基本概念、架构以及内核设计模式等。
:keywords: 操作系统, 内核, 用户模式, 内核模式, 单体内核, 微内核

`查看幻灯片 <intro-slides.html>`_

.. slideconf::
Expand Down
4 changes: 4 additions & 0 deletions lectures/memory-management.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
内存管理
=================

.. meta::
:description: 介绍了 Linux 内核中的物理内存管理、虚拟内存管理、页面分配、伙伴算法、SLAB 分配器等内容。
:keywords: Linux 内核, 内存管理, 物理内存, 虚拟内存, 页面分配, 伙伴算法, SLAB 分配器

`查看幻灯片 <memory-management-slides.html>`_

.. slideconf::
Expand Down
6 changes: 6 additions & 0 deletions lectures/networking.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@
网络管理
==================

.. meta::
:description: 本文介绍了网络管理的相关概念和实现,包括套接字实现、路由实现、网络设备接口以及硬件和软件加速技术等内容。
:keywords: 网络管理, 套接字实现, 路由实现, 网络设备接口, 硬件和软件加速

这个元信息描述了这个文档的内容和关键词,希望对您有帮助。如果还有其他需要补充的地方,请告诉我。

`查看幻灯片 <networking-slides.html>`_

.. slideconf::
Expand Down
4 changes: 4 additions & 0 deletions lectures/processes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
进程
====

.. meta::
:description: 介绍操作系统中进程和线程的概念,包括进程资源、进程控制块 task_struct,以及如何使用调试器检查进程信息
:keywords: 进程, 线程, 调试, task_struct, /proc, pahole, gdb, lx-ps

`查看幻灯片 <processes-slides.html>`_

.. slideconf::
Expand Down
4 changes: 4 additions & 0 deletions lectures/smp.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
对称多处理
==========================

.. meta::
:description: 介绍了对称多处理(SMP)在 Linux 内核中的相关概念和同步机制,包括内核并发源、原子操作、自旋锁、缓存抖动、进程和中断上下文同步、互斥锁、内存排序和 RCU 等内容。
:keywords: Linux内核, 对称多处理, 同步, 原子操作, 自旋锁, 互斥锁, 内存排序, RCU

`查看幻灯片 <smp-slides.html>`_

.. slideconf::
Expand Down
4 changes: 4 additions & 0 deletions lectures/syscalls.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
系统调用
=======

.. meta::
:description: 介绍了 Linux 系统调用的实现机制,包括系统调用的基本概念、系统调用在内核中的处理流程,以及使用虚拟机和 gdb 工具对系统调用进行调试和分析。
:keywords: Linux, 系统调用, 内核, 中断, 用户空间, 内核空间, gdb

`查看幻灯片 <syscalls-slides.html>`_

.. slideconf::
Expand Down
4 changes: 4 additions & 0 deletions lectures/virt.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
虚拟化
==============

.. meta::
:description: 介绍了虚拟化的基本概念,包括模拟(emulation)、经典虚拟化、软件虚拟化、MMU 虚拟化、影子页表、延迟影子同步、I/O 仿真、部分虚拟化以及 Intel VT-x 等内容,给出了相关的原理和实现细节。这对于理解操作系统中虚拟化技术的基础知识很有帮助。
:keywords: 虚拟化, 模拟, 经典虚拟化, 软件虚拟化, MMU 虚拟化, 影子页表, 延迟影子同步, I/O 仿真, 部分虚拟化, Intel VT-x

`查看幻灯片 <virt-slides.html>`_

.. slideconf::
Expand Down
4 changes: 4 additions & 0 deletions so2/assign-collaboration.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
合作
=============

.. meta::
:description: 提供了一个团队合作的指南,帮助学生完成操作系统 2 的编程任务。它涵盖了使用版本控制系统、编写提交消息、拆分任务、代码审查等方方面面。
:keywords: 合作, 版本控制, 提交消息, 任务拆分, 代码审查

在开源世界中,合作是至关重要的,我们鼓励你选择一个团队合作伙伴来共同完成选定的任务。

以下是一个简单的指南,帮助你入门:
Expand Down
4 changes: 4 additions & 0 deletions so2/assign0-kernel-api.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
作业 0——内核 API
=========================

.. meta::
:description: 介绍了课程作业 0,要求学生实现一个内核模块来操作内核链表 API。文档包括作业目标、实现要求、测试和提交说明、以及一些编程资源和技巧。
:keywords: 内核模块, 内核 API, 链表, procfs, 静态分析

- 截止日期: :command:`周一,2024 年 3 月 25 日,23:59`

作业目标
Expand Down
4 changes: 4 additions & 0 deletions so2/assign1-kprobe-based-tracer.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
作业 1——基于 Kprobe 的跟踪器
==================================

.. meta::
:description: 介绍操作系统 2 课程的第一个实验任务,内容包括用 kprobe 机制实现一个内核层面的监视器, 监控内核常见的函数调用情况。
:keywords: 内核编程, Linux, kprobe, kretprobe, 进程监控, 内存监控, 锁监控, procfs

- 截止日期: :command:`周一,2024 年 4 月 8 日,23:59`

作业目标
Expand Down
4 changes: 4 additions & 0 deletions so2/assign2-driver-uart.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
作业 2——驱动 UART
==========================

.. meta::
:description: 介绍操作系统 2 课程中的作业 2——驱动 UART 的目标和要求,包括实现细节、测试等内容。
:keywords: 操作系统, 内核编程, Linux, UART 驱动, 内核模块, 设备驱动程序

- 截止日期: :command:`2023 年 4 月 30 日,23:00`
- 此作业为个人完成

Expand Down
4 changes: 4 additions & 0 deletions so2/assign3-software-raid.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
作业 3——软件 RAID
===========================

.. meta::
:description: 本文介绍了一个软件 RAID 实现的编程作业,包括作业要求、实现细节和测试说明。它旨在帮助学生深入了解 I/O 子系统、使用 bio 结构、处理块/磁盘设备等相关技能。
:keywords: 软件 RAID, 内核编程, Linux, bio, 块设备, CRC, 错误恢复

- 截止日期: :command:`周一,2023 年 5 月 15 日,23:00`
- 本作业可以由团队(最多 2 人)完成。只需由其中一人提交作业,并在 README 文件中列出学生的姓名。

Expand Down
4 changes: 4 additions & 0 deletions so2/assign4-transport-protocol.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
作业 4——SO2 传输协议
=====================================

.. meta::
:description: 这个实验文档介绍了操作系统 2 课程中的第 4 个实验任务,内容包括 I/O 访问和中断机制
:keywords: SO2, 操作系统 2, I/O, 中断, Linux 内核

- 截止日期: :command:`星期一,2023 年 5 月 29 日,23:00`
- 这个作业可以由团队完成(最多 2 人)。只需其中一人提交作业,学生姓名应列在 README 文件中。

Expand Down
Loading

0 comments on commit aa875d5

Please sign in to comment.