编译 Linux 4.15.11 内核并增加系统调用

编译 Linux 4.15.11 内核并增加系统调用

实验日期;2018 年 3 月 21 日 - 2018 年 3 月 22 日
实验环境:
  主机:
    操作系统:Microsoft Windows 10.0.16299 Build 16299
    处理器:Intel Core i5-7300HQ CPU @ 4x 2.50GHz
    物理内存:8.00 GB
    虚拟机软件:Oracle VM VirtualBox 5.2.6 r120293
  虚拟机:
    操作系统:openSUSE 20180319
    处理器:Intel Core i5-7300HQ CPU @ 4x 2.50GHz
    物理内存:4.00 GB
    桌面环境:LXQt 0.12.0
    编辑器:GNU Emacs 25.3.1

目录

  • 实验目的
  • 实验设计
    • 实验环境设计
    • 实验方法设计
  • 实验过程
    • 下载内核源码
    • 安装 Linux 操作系统
    • 在内核源码中增加系统调用
      • 解压内核源码
      • 增加系统调用号
      • 声明系统调用函数
      • 实现系统调用函数
      • 修改系统版本
      • 配置内核
    • 编译内核并安装
  • 实验总结
  • TODO
  • 参考资料

实验目的

通过编译最新版 Linux 内核源码并增加系统调用,熟悉 Linux 命令和编辑器的使用,并加深对 Linux 内核的理解。

实验设计

实验环境设计

编译 Linux 内核首先需要 Linux 环境。Linux 环境可以直接安装到硬盘上,或选择通过虚拟机的方式安装到虚拟磁盘上。本实验采用虚拟机的方法,原因有三:①由于计算机中原有 Windows 操作系统,如果安装双系统,需要解决启动引导问题,而我目前尚无能力解决 UEFI 同时引导 Windows 与 Linux 操作系统的问题;如果删除 Windows 系统,则某些只能运行在 Windows 上的应用程序将无法使用,引起不便;②使用虚拟机将操作系统与物理设备隔离,可以避免操作失误造成的不可逆损失;③虚拟机可以截取开机时的画面,留下实验过程的珍贵资料。

Linux 有众多发行版,本实验采用 openSUSE Tumbleweed 作为实验使用的发行版,原因有三:①我曾经重装过三十余次 openSUSE Tumbleweed 系统,对该系统的安装与使用更为熟悉;②Tumbleweed 版本是滚动更新版本,每天都会提供最新的软件包更新,而本实验需要编译安装最新版 Linux 内核,如果发行版提供的软件包太旧,可能引发与内核的兼容性问题;③openSUSE 有强大的系统管理工具 YaST,便于加深初学者对 Linux 系统的整体理解。

Linux 的操作环境有命令行界面与图形界面之分,本实验采用 LXQt 桌面环境,其原因是:首先,即使使用图形界面,编译 Linux 内核过程中的重要步骤仍然在终端中进行,因此与命令行界面一样,可以达到熟悉 Linux 命令的目的。其次,在图形界面下,可以对 Linux 源码文件夹的内容有直观的印象,例如文件夹名称、文件夹中的文件数量等信息,这是命令行界面无法替代的。之所以使用 LXQt 桌面环境,是考虑到本实验仅需要编译内核源码,因此选择了较为轻量级的桌面环境。另外我也使用 Qt 进行开发,使用 LXQt 作为桌面环境,可以对 LXQt 项目有更深的了解,进而从该项目中获取 Qt 方面的知识。

Linux 下的编辑器有 Vim 与 Emacs 两个,使用任意一种均可。本实验使用 Emacs 作为编辑器。

实验方法设计

为了明显地确认增加的系统调用是否生效,本实验的系统调用使用 printk() 函数向内核缓冲区输出文字,这样可以使用 dmesg 命令查看系统调用的执行情况。

本实验增加一个系统调用 ake,ake(あけ,朱・緋)来源于日语,由词语明ける(あける)逆构词(back formation)而来,意为红色。若调用该系统调用时,会根据一个 int 类型参数的值,使用 printk() 函数向内核缓冲区输出不同的文字

你可能感兴趣的:(编译 Linux 4.15.11 内核并增加系统调用)