Skip to content

Commit

Permalink
Merge pull request #207 from hust-open-atom-club/pr_adding_os_new_os_…
Browse files Browse the repository at this point in the history
…support

proofread adding_new_os_support.md
  • Loading branch information
mudongliang authored Aug 31, 2024
2 parents fd11570 + 05ba31f commit 6544702
Showing 1 changed file with 10 additions and 9 deletions.
19 changes: 10 additions & 9 deletions sources/syzkaller/adding_new_os_support.md
Original file line number Diff line number Diff line change
@@ -1,36 +1,37 @@
---
status: translated
status: proofread
title: "Adding new OS support"
author: Syzkaller Community
collector: jxlpzqc
collected_date: 20240314
translator: ElizaXiao
translated_date: 20240828
proofreader: mudongliang
proofread_date: 20240831
link: https://github.com/google/syzkaller/blob/master/docs/adding_new_os_support.md
---

# 添加新的操作系统支持

为了让 syzkaller 支持一个新的操作系统内核,以下是需要编辑的 syzkaller 的共同部分。然而,对于特定的内核,可能还需要一些特定的更改(例如,从给定的内核收集覆盖率信息,或者一些可能弹出并给出调整提示的错误信息)。
为了让 syzkaller 支持一个新的操作系统内核,以下是需要编辑的 syzkaller 的共同部分。然而,特定内核可能还需要一些特定的更改(例如,从给定内核收集代码覆盖率,或者一些可能弹出并给出调整提示的错误信息)。

## syz-executor

对于每个操作系统,都有一个操作系统名为 GOOS 的文件 `executor/executor_GOOS.h`这个文件包含两个重要函数
每个操作系统都有一个 `executor/executor_GOOS.h` 文件,其中 GOOS 为操作系统名字,例如 `executor/executor_linux.h`该文件包含两个重要函数

- `os_init` 负责为调用进程映射虚拟地址空间,
- `execute_syscall` 负责为特定操作系统内核执行系统调用。

这两个函数在 `executor_GOOS.h` 中被调用,它主要负责执行系统调用程序,并管理程序运行的线程。
这两个函数在 `executor/executor.cc` 中被调用,主要负责执行系统调用程序,并管理程序运行的线程。

`executor_GOOS.h` 还包含与该操作系统相关的函数,例如允许它收集覆盖率信息、检测位宽等的函数(例如:[executor_linux.h](/executor/executor_linux.h))。
`executor_GOOS.h` 还包含与该操作系统相关的函数,例如允许它收集覆盖率信息、检测位宽等的函数(例如:[executor_linux.h](https://github.com/google/syzkaller/blob/master/executor/executor_linux.h))。

目标内核将根据 `executor/executor.cc` 文件中定义的宏调用预期的函数。

## 构建文件 `pkg/`

-`pkg/build/build.go` 中添加操作系统名称及其支持的架构
-`pkg/build/` 下创建一个构建目标内核镜像的文件。这个文件包含配置可启动镜像构建的函数、构建它以及生成 SSH 密钥的函数,这些密钥将由 Syzkaller 用于访问虚拟机。每个由 Syzkaller 支持的操作系统都有一个名为 `GOOS.go` 的文件。

-`pkg/build/` 下创建一个构建目标内核镜像的文件。这个文件包含配置和构建可启动镜像构建的函数以及生成 SSH 密钥的函数,这些密钥将由 Syzkaller 用于访问虚拟机。每个由 Syzkaller 支持的操作系统都有一个名为 `GOOS.go` 的文件。
- 将给定目标添加到 `s/makefile/Makefile/`

## 报告文件 `pkg/report/`
Expand All @@ -39,7 +40,7 @@ link: https://github.com/google/syzkaller/blob/master/docs/adding_new_os_support

## 编辑 `pkg/host/`

- 实现 `isSupported` 函数,该函数对于支持的系统调用返回 true,它位于 `pkg/host/GOOS` 目录下。
- 实现 `isSupported` 函数,该函数对于支持的系统调用返回 true,同时它位于 `pkg/host/GOOS` 目录中。

## `sys/GOOS/` 下创建文件

Expand All @@ -59,4 +60,4 @@ link: https://github.com/google/syzkaller/blob/master/docs/adding_new_os_support

## Syzkaller 描述与伪系统调用

查看 [描述](/docs/syscall_descriptions.md)[伪系统调用](/docs/pseudo_syscalls.md).
查看 [描述](syscall_descriptions.md)[伪系统调用](pseudo_syscalls.md).

0 comments on commit 6544702

Please sign in to comment.