Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(net): merge master and make fmt #1048

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
dcd345f
feat: 添加SYS_MKDIRAT系统调用 (#986)
fslongjin Oct 17, 2024
cae6182
fix: 临时修复线程退出时处理tty前台进程组产生panic的bug (#985)
fslongjin Oct 18, 2024
01c18c6
feat:添加symlink系统调用 (#984)
sparkzky Oct 20, 2024
abc421a
修正开发者参与指南的链接 (#1002)
fslongjin Oct 20, 2024
6171c42
update rintotek message (#1003)
Samuka007 Oct 20, 2024
b9966ad
update novashell to 7bb802ad1e (#1006)
MemoryShore Oct 22, 2024
80c9e8f
fix(tools):支持在无kvm支持下运行DragonOS (#1010)
1037827920 Oct 25, 2024
fae6e9a
feat(ebpf):[WIP] add eBPF support (#948)
Godones Oct 25, 2024
37c2359
ci: 删除PR #948 代入的cache-toolchain.toml (#1012)
fslongjin Oct 25, 2024
dc60d68
fix: tty刷新线程初始化之前,键盘产生数据导致崩溃的问题 (#1013)
fslongjin Oct 26, 2024
a9e28e9
fix: 临时修复键盘驱动与鼠标驱动冲突导致键盘无响应 (#1014)
fslongjin Oct 26, 2024
4dd4856
fix(tty): 修复tty对tab进行处理时产生数组越界panic的问题 (#1015)
fslongjin Oct 26, 2024
7f46e98
chore: 修改traigebot配置(关于sig-obs & Test) (#1016)
fslongjin Oct 26, 2024
55e6f0b
feat:添加chown系统调用 (#962)
sparkzky Oct 26, 2024
84c528f
fix(driver/virtio): 修改pci transport中断初始化的位置 (#1018)
1037827920 Oct 28, 2024
f5b2038
ospp project (feature) add namespace overlayfs cgroup (#949)
codeironman Oct 30, 2024
7b0ef10
ci: change rust src to crates-io-index while using GitHub workflow (#…
fslongjin Oct 30, 2024
2e7e4ce
Update NovaShell to cb835e03e4 (#1022)
MemoryShore Oct 31, 2024
c7ad61d
fix: 删除在 #949 中意外添加的旧版ida (#1027)
fslongjin Oct 31, 2024
01b8a76
修复阻塞阅读eventfd时无法被中断的bug (#1030)
sparkzky Nov 5, 2024
2b180c4
debug and add socket option level print
Samuka007 Nov 8, 2024
5d54e74
fix: add gitignore to test_namespace (#1038)
fslongjin Nov 10, 2024
f5c732d
fix(video): 增加了对frame buffer操作的安全检查 (#1034)
ZZJJWarth Nov 10, 2024
20c5810
fix: do_signal函数在处理SIG_KILL时,有一处pcb强引用未归零的问题 (#1039)
fslongjin Nov 11, 2024
6971543
feat(pci): 解决了pci总线子系统中pci结构一致性问题,增加了pci设备的可读属性 (#1009)
ZZJJWarth Nov 11, 2024
7c28051
chore: update toolchain version to 2024-11-05 (#1031)
Godones Nov 11, 2024
0f094e5
fix: 修复了do execve 加载程序失败时,没能正确返回错误码给用户态的问题 (#1042)
fslongjin Nov 12, 2024
ff76b0f
修复tty处理信号时错误地将前台进程组置空的问题 & clone时未拷贝父进程tty的问题 (#1043)
MemoryShore Nov 12, 2024
d675513
Merge branch 'DragonOS-Community:feat-network-rebuild' into feat-netw…
Samuka007 Nov 13, 2024
aaf9a5f
turn off syscall printing, remove unused imports and make fmt
Samuka007 Nov 13, 2024
e4115c9
turn off syscall printings
Samuka007 Nov 13, 2024
1a04676
merge main
Samuka007 Nov 13, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
18 changes: 9 additions & 9 deletions .github/workflows/makefile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,14 @@ jobs:
name: Format check ${{ matrix.arch }}
runs-on: ubuntu-latest
continue-on-error: true
container: dragonos/dragonos-dev:v1.4
container: dragonos/dragonos-dev:v1.6

strategy:
matrix:
arch: [x86_64, riscv64]

steps:
- run: echo "Running in dragonos/dragonos-dev:v1.4"
- run: echo "Running in dragonos/dragonos-dev:v1.6"
- uses: actions/checkout@v3

- name: Format check
Expand All @@ -35,14 +35,14 @@ jobs:
name: Kernel static test ${{ matrix.arch }}
runs-on: ubuntu-latest
continue-on-error: true
container: dragonos/dragonos-dev:v1.4
container: dragonos/dragonos-dev:v1.6

strategy:
matrix:
arch: [x86_64, riscv64]

steps:
- run: echo "Running in dragonos/dragonos-dev:v1.4"
- run: echo "Running in dragonos/dragonos-dev:v1.6"

- uses: actions/checkout@v3

Expand All @@ -51,15 +51,15 @@ jobs:
env:
ARCH: ${{ matrix.arch }}
HOME: /root
run: bash -c "source /root/.cargo/env && cd kernel && make test"
run: bash -c "source /root/.cargo/env && cd kernel && make test && make test-rbpf"

build-x86_64:

runs-on: ubuntu-latest
container: dragonos/dragonos-dev:v1.4
container: dragonos/dragonos-dev:v1.6

steps:
- run: echo "Running in dragonos/dragonos-dev:v1.4"
- run: echo "Running in dragonos/dragonos-dev:v1.6"

- uses: actions/checkout@v3
- name: build the DragonOS
Expand All @@ -78,10 +78,10 @@ jobs:
build-riscv64:

runs-on: ubuntu-latest
container: dragonos/dragonos-dev:v1.4
container: dragonos/dragonos-dev:v1.6

steps:
- run: echo "Running in dragonos/dragonos-dev:v1.4"
- run: echo "Running in dragonos/dragonos-dev:v1.6"

- uses: actions/checkout@v3
with:
Expand Down
2 changes: 1 addition & 1 deletion build-scripts/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ fmt:
clean:
@cargo clean
check:
@cargo +nightly-2024-07-23 check --workspace $(CARGO_ZBUILD) --message-format=json
@cargo +nightly-2024-11-05 check --workspace $(CARGO_ZBUILD) --message-format=json
3 changes: 3 additions & 0 deletions docs/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,6 @@ help:
.PHONY:
html-multiversion:
rm -rf ./$(BUILDDIR) && CURRENT_GIT_COMMIT_DIRTY=0 sphinx-multiversion $(SPHINXOPTS) "$(SOURCEDIR)" ./$(BUILDDIR)/html && cp -rf ./$(BUILDDIR)/html/master/* ./$(BUILDDIR)/html/

http_server:
python3 -m http.server --directory $(BUILDDIR)/html
3 changes: 2 additions & 1 deletion docs/community/code_contribution/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
.. toctree::
:maxdepth: 1

the-development-process
how-to-contribute <https://community.dragonos.org/contributors/>

c-coding-style
rust-coding-style
conventional-commit
155 changes: 0 additions & 155 deletions docs/community/code_contribution/the-development-process.md

This file was deleted.

17 changes: 2 additions & 15 deletions docs/community/contact/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,7 @@

社区公共邮箱:[email protected]

DragonOS社区负责人: 龙进

工作邮箱: [email protected]
社区管理人员信息:https://community.dragonos.org/governance/staff-info.html

开发交流QQ群: 115763565

Expand All @@ -37,16 +35,5 @@ DragonOS社区的捐赠信息将按年进行公开。赞助商、赞助者信息
社区管理、财务及法务主体
-------------------------

DragonOS社区的管理、财务及法务主体为:灵高计算机系统(广州)有限公司。

我们是一家开源公司,我们坚信,开源能为我国将来的IT,打下更好的基础。我们也通过其他业务创收,投入到DragonOS的研发之中。

公司负责DragonOS社区的运营、财务、法务事项处理工作。

地址:广东省广州市番禺区小谷围街广州大学城华南理工大学大学城校区

邮件:[email protected]

官网:https://ringotek.com.cn

灵高是DragonOS社区为满足相关监管合规要求,成立的 **非营利性质** 的单位。详情请见:https://ringotek.com.cn

3 changes: 3 additions & 0 deletions docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,11 @@
kernel/debug/index
kernel/ktest/index
kernel/cpu_arch/index
kernel/container/index
kernel/libs/index
kernel/net/index
kernel/trace/index



.. toctree::
Expand Down
13 changes: 13 additions & 0 deletions docs/kernel/container/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
====================================
容器化
====================================

这里是DragonOS中,与容器化相关的说明文档。

主要包括namespace,overlayfs和cgroup

.. toctree::
:maxdepth: 2

namespaces/index
filesystem/unionfs/index
14 changes: 14 additions & 0 deletions docs/kernel/container/namespaces/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
====================================
名称空间
====================================

DragonOS的namespaces目前支持pid_namespace和mnt_namespace 预计之后会继续完善
namespace是容器化实现过程中的重要组成部分

由于目前os是单用户,user_namespace为全局静态

.. toctree::
:maxdepth: 1

pid_namespace
mnt_namespace
19 changes: 19 additions & 0 deletions docs/kernel/container/namespaces/mnt_namespace.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# 挂载名称空间

## 底层架构

pcb -> nsproxy -> mnt_namespace

每一个挂载文件系统都有自立独立的挂载点,表现在数据结构上是一个挂载的红黑树,每一个名称空间中挂载是独立的,所以文件系统的挂载和卸载不会影响别的

## 系统调用接口


- clone
- CLONE_NEWNS用于创建一个新的 MNT 命名空间。提供独立的文件系统挂载点
- unshare
- 使用 CLONE_NEWPID 标志调用 unshare() 后,后续创建的所有子进程都将在新的命名空间中运行。
- setns
- 将进程加入到指定的名称空间
- chroot
- 将当前进程的根目录更改为指定的路径,提供文件系统隔离。
21 changes: 21 additions & 0 deletions docs/kernel/container/namespaces/pid_namespace.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# 进程名称空间
:::{note} 本文作者:操丰毅 [email protected]

2024年10月30日 :::
pid_namespace 是内核中的一种名称空间,用于实现进程隔离,允许在不同的名称空间中运行的进程有独立的pid试图

## 底层架构

pcb -> nsproxy -> pid_namespace
- pid_namespace 内有独立的一套进程分配器,以及孤儿进程回收器,独立管理内部的pid
- 不同进程的详细信息都存放在proc文件系统中,里面的找到对应的pid号里面的信息都在pid中,记录的是pid_namespace中的信息
- pid_namespace等限制由ucount来控制管理

## 系统调用接口

- clone
- CLONE_NEWPID用于创建一个新的 PID 命名空间。使用这个标志时,子进程将在新的 PID 命名空间内运行,进程 ID 从 1 开始。
- unshare
- 使用 CLONE_NEWPID 标志调用 unshare() 后,后续创建的所有子进程都将在新的命名空间中运行。
- getpid
- 在命名空间中调用 getpid() 会返回进程在当前 PID 命名空间中的进程 ID
1 change: 1 addition & 0 deletions docs/kernel/filesystem/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,5 @@ todo: 由于文件系统模块重构,文档暂时不可用,预计在2023年4
vfs/index
sysfs
kernfs
unionfs/index

10 changes: 10 additions & 0 deletions docs/kernel/filesystem/unionfs/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
====================================
联合文件系统
====================================
Union Filesystem:
OverlayFS 将多个文件系统(称为“层”)合并为一个逻辑文件系统,使用户看到一个统一的目录结构。

.. toctree::
:maxdepth: 1

overlayfs
26 changes: 26 additions & 0 deletions docs/kernel/filesystem/unionfs/overlayfs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# overlayfs

OverlayFs是目前使用最多的联合文件系统,原理简单方便使用,主要用于容器中
在 Docker 中,OverlayFS 是默认的存储驱动之一。Docker 为每个容器创建一个独立的上层目录,而所有容器共享同一个下层镜像文件。这样的设计使得容器之间的资源共享更加高效,同时减少了存储需求。
## 架构设计
overlayfs主要有两个层,以及一个虚拟的合并层
- Lower Layer(下层):通常是 只读 文件系统。可以包含多层。
- Upper Layer(上层):为 可写层,所有的写操作都会在这一层上进行。
- Merged Layer(合并层):上层和下层的逻辑视图合并后,向用户呈现的最终文件系统。


## 工作原理
- 读取操作:
- OverlayFS 会优先从 Upper Layer 读取文件。如果文件不存在于上层,则读取 Lower Layer 中的内容。
- 写入操作:
- 如果一个文件位于 Lower Layer 中,并尝试写入该文件,系统会将其 copy-up 到 Upper Layer 并在上层写入。如果文件已经存在于 Upper Layer,则直接在该层写入。
- 删除操作:
- 当删除文件时,OverlayFS 会在上层创建一个标记为 whiteout 的条目,这会隐藏下层的文件。

## Copy-up
- 写时拷贝
当一个文件从 下层 被修改时,它会被复制到 上层(称为 copy-up)。之后的所有修改都会发生在上层的文件副本上。


## 实现逻辑
通过构建ovlInode来实现indexnode这个trait来代表上层或者下层的inode,具体的有关文件文件夹的操作都在
Loading
Loading