115 Commits

Author SHA1 Message Date
40d9375b6b
ready for merge in master (#964)
uevent should be format

Enum of smoltcp socket should be optimized.

need to add interface for routing subsys

actix is still not abled to run.

clean some casual added code to other places
2024-10-10 17:53:39 +08:00
LoGin
79eda4bcf9
ci: fix docker run failed (#961)
Signed-off-by: longjin <longjin@DragonOS.org>
2024-10-10 03:06:48 +08:00
LoGin
056c4aad81
ci: auto build docker images (#960) 2024-10-10 01:31:59 +08:00
LoGin
415e46ea47
build: Remove DragonOS_GCC And make CI use docker image (#954)
* build: 不再需要x86_64-elf-gcc的支持
* ci: 添加ci用的docker镜像
* 切换workflow到构建用的容器上

---------

Signed-off-by: longjin <longjin@DragonOS.org>
2024-10-10 00:59:50 +08:00
LoGin
59a6bcf6ae
feat: Add HVM boot support for x86_64 (#953)
Signed-off-by: longjin <longjin@DragonOS.org>
2024-10-09 21:36:18 +08:00
MemoryShore
40d05bcc99
修复vnc启动失败的问题 (#951) 2024-10-01 19:44:17 +08:00
LoGin
d031d46fd9
feat: 添加serial console,支持non-graphic启动 (#947)
Signed-off-by: longjin <longjin@dragonos.org>
2024-10-01 11:35:48 +08:00
曾俊
886ce28516
fix(virtio):修复了特定virtio设备环境下中断号重复错误,以及开机内核panic的bug (#881) 2024-09-06 19:56:49 +08:00
Jomo
3c0a1c8fa2
默认nightly-2024-07-23 & config改为config.toml (#872) 2024-07-27 01:33:38 +08:00
LoGin
816ee5ae54
refactor: 删除过时的va-pa转换函数,改为统一使用MMArch (#862) 2024-07-26 00:27:35 +08:00
LoGin
bd70d2d1f4
chore: 将工具链更新到2024-07-23 (#864)
* chore: 将工具链更新到2024-07-23
2024-07-25 00:55:02 +08:00
LoGin
79ad6e5ba4
fix: build-scripts和tools目录下的make check指定工具链版本 (#861) 2024-07-22 23:00:37 +08:00
donjuanplatinum
6cf1947dcf
chore(tools): add the gentoo grub_auto_install support (#827) 2024-05-23 02:15:44 +08:00
donjuanplatinum
f79998f626
增加rust sparse稀疏索引选项 (#826) 2024-05-18 00:22:38 +08:00
donjuanplatinum
1df85daf8f
添加支持gentoo系统的一键安装脚本 (#809) 2024-05-12 22:58:59 +08:00
LoGin
731bc2b32d
feat(virtio): riscv: 添加virtio-blk driver,并在riscv下能够正确挂载FAT32 (#761) 2024-04-23 17:19:54 +08:00
LoGin
e32effb150
feat(driver): 把virtio添加到sysfs (#752) 2024-04-22 15:11:47 +08:00
Chiichen
4b0170bd6b
chore(tools): add bootstrap support for Centos/RHEL8/fedora (#713)
Co-authored-by: kejianchi <kejianchi@tencent.com>
2024-04-10 18:58:54 +08:00
栗子
4f8f484930
修复Archlinux下的bootstrap脚本问题, (#552)
* 修复Archlinux下的bootstrap脚本问题,

由于archlinux 的 texinfo版本太新导致的gcc docs构建失败
使用 MAKEINFO=true 的make环境变量跳过gcc docs构建,绕过问题


---------

Co-authored-by: longjin <longjin@dragonos.org>
2024-03-09 21:20:12 +08:00
裕依
bc6f0a967c
移除relibc和old libc以及旧的shell (#529)
移除relibc和old libc以及旧的shell
2024-03-04 14:20:01 +08:00
栗子
d2b28acb4d
tools/bootstrap.sh: fix archlinux and zsh issue (#535)
1. archlinux上没有libssl-dev包,相对应的包名是openssl
2. zsh用户使用bootstrap.sh 会因为 source ~/.zshrc
   导致bash执行很多zsh built-in 指令出现非常多错误
3. mkdir命令加-p选项避免对象目录存在时(反复执行脚本)报错
4. 修复简单错误(typo gcc 为 binutils)
5. 修复bootstrap.sh等脚本无法在非tools/目录执行的错误
2024-02-25 19:57:30 +08:00
LoGin
ca318c376b
update dragonreach to 3d99c3a9d9 (#519) 2024-02-17 01:51:10 +08:00
裕依2439
4ad52e57e6
添加socketpair (#505)
* 添加对socketpair系统调用的处理

---------

Co-authored-by: LoGin <longjin@DragonOS.org>
2024-02-07 18:06:15 +08:00
LoGin
9284987850
riscv: 完成UEFI初始化,能正确设置memblock的信息 (#501)
* riscv: 完成UEFI初始化,能正确设置memblock的信息

* sbi增加reset功能

* 把虚拟CPU修改为sifive-u54,使qemu能更正确地模拟硬件行为

* 修复内存页面映射未设置“DIRTY”、”ACCESSED“、”GLOBAL“位,导致真机page fault的问题
2024-01-26 18:08:39 +08:00
Jomo
8d72b68da9
实现内核日志系统 (#489)
* 实现写日志和读取日志,并且能够在用户态下执行dmesg命令查看日志

* 通过klogctl实现dmesg

* 改用ConstGenericRingBuffer作内核缓冲区

* 更改缓冲区容量

* 将能够输出到控制台的日志级别改为日志级别枚举类,使用SpinLock控制KMSG,使用枚举类定义SYSLOG_ACTION,将do_syslog系统调用接口放在syscall.rs

* fix warning

* 完善do_syslog注释

* 将KMSG接入kinfo、kdebug等

* fix warning

* 修复显示的秒数不正确,·以及无法通过CI的问题
2024-01-24 16:13:15 +08:00
裕依2439
d46c6d2794
修复tty的buf满时始终阻塞的问题 (#493)
* 修复tty的buf满时始终阻塞的问题
2024-01-23 23:36:52 +08:00
LoGin
7a29d4fcbc
riscv64: 映射uefi systemtable,并完善了riscv64页表填写的部分内容 (#498)
* 从fdt的chosen段获取几个需要的字段

* merge patch-early-ioremap

* feature: 增加early io remap的fixmap功能

允许在内存管理初始化之前,使用fixmap功能,映射一些物理内存,并记录.

* riscv64: 映射uefi systemtable,并完善了riscv64页表填写的部分内容

* 更新仓库网址
2024-01-21 15:38:12 +08:00
LoGin
dcf232f378
当找不到内核日志缓冲区的时候,重试 (#491) 2024-01-14 17:00:42 +08:00
LoGin
e3eb08d4d7
fix: 修复安装musl-gcc的脚本没能正确设置x86_64下的环境变量的问题 (#482) 2023-12-30 16:23:26 +08:00
LoGin
81294aa2e6
fix: 修正bootstrap脚本安装docker后会使得当前终端进入root的问题 (#481) 2023-12-27 20:32:25 +08:00
LoGin
f110d330d5
修复bootstrap在安装riscv gcc依赖时出现冲突的问题 (#476) 2023-12-25 21:54:00 +08:00
LoGin
cf44232423
修复x86下第二次编译的时候内核没有拷贝到磁盘的问题 (#467) 2023-12-13 14:44:57 +08:00
LoGin
1a72a751b1
在riscv输出hello world (#466)
增加了以下内容:
- SBI驱动
- 把内核的rust工具链升级到2023-08-15版本
- 输出riscv的helloworld
- 设置内核是PIC的
2023-12-07 02:13:22 +08:00
LoGin
01090de77e
使用DragonStub引导riscv下的DragonOS内核 (#460) 2023-12-03 14:40:13 +08:00
LoGin
4fda81ce81
使得DragonOS kernel 能为riscv64编译通过(尚未能启动) (#457)
* 使得DragonOS kernel 能为riscv64编译通过(尚未能启动)

* 修正了系统调用号声明不正确的问题,同时添加了编译配置文档
2023-11-25 12:07:39 +08:00
LoGin
c89d0c1237
修复bootstrap的一系列脚本忘了source最新的shell rc的问题 (#453) 2023-11-21 20:24:43 +08:00
LoGin
c75089286e
调整脚本,使得能够创建riscv的磁盘镜像,并引导进入riscv下的grub (#450)
* 安装musl toolchain以及riscv相关的工具链

* 调整脚本,使得能够创建riscv的磁盘镜像,并引导进入riscv下的grub

```shell
export ARCH=riscv64
make write_diskimage
make qemu
```

即可在serial_opt.txt看到进入grub的提示信息
2023-11-21 13:42:18 +08:00
LoGin
48a3baa9b1
安装musl toolchain以及riscv相关的工具链 (#449) 2023-11-21 13:42:06 +08:00
LoGin
99dbf38d2e
bugfix: 当物理机具有多个memory area的时候,无法正确使用这些区域的问题.以及在内核代码处出现内存空洞而导致无法正常运行的问题. (#448)
* bugfix: 当物理机具有多个memory area的时候,无法正确使用这些区域的问题.以及在内核代码处出现内存空洞而导致无法正常运行的问题.

解决方案:
1. 分区域把空闲页添加到buddy
2. 将内核链接到16M的位置,以避免uefi带来的内存空洞.

这个值是因为我看到linux的救援内核也是在16M的地址,因此猜测厂商不会使用这块内存.
尽管uefi规范讲的是固件可以采用任何地址,内核需要使用内核重定位技术去避免遇到内存空洞,但我没有这么做.
2023-11-19 11:42:53 +08:00
LoGin
edaf015400
默认安装gnu tar到dragonos的/usr/bin目录下 (#442) 2023-11-15 17:17:56 +08:00
LoGin
393f691574
增加gettid以及线程组group leader相关的逻辑 (#430)
* 增加gettid以及线程组group leader相关的逻辑
2023-11-09 16:48:45 +08:00
LoGin
5eaf536d5b
添加初始化DragonOS的Rust-Musl工具链的脚本. (#426) 2023-11-08 19:41:08 +08:00
LoGin
7b32f5080f
增加内存分配日志监视器 (#424)
* 完成内存日志监视,并输出日志到文件
* 修复进程退出后,procfs查看进程status文件会崩溃的问题
* 修复signal唤醒进程的判断条件问题
2023-11-07 21:39:27 +08:00
LoGin
70a4e5550a
使用rust重写了apic的驱动 (#425)
* 使用rust重写了apic的驱动。

* 修正signal和调度器的部分加锁逻辑,增加回退策略。

* 把pcb的flags字段替换为无锁的

* 使用cargo管理apic的编译

* 删除makefile中指定PIC的变量

---------

Co-authored-by: Gou Ngai <ymd7823@outlook.com>
Co-authored-by: 櫻井桃華 <89176634+TihayaKousaka@users.noreply.github.com>
2023-11-07 20:32:06 +08:00
GnoCiYeH
1603395155
支持syscall快速系统调用指令 (#417)
* 支持syscall快速系统调用指令

---------

Co-authored-by: LoGin <longjin@DragonOS.org>
2023-11-04 21:39:44 +08:00
GnoCiYeH
2f6f547ae0
Patch fix sched (#419)
1.解决waitqueue sleep的时候,由于preempt count不为0,导致sched失败,从而导致该waitqueue下一次wakeup时,会把pcb多次加入调度队列的bug
2.修复socket inode 的read和write方法里面没有使用no_preempt的问题
3. 修复cpu0的内核栈由于脏数据导致new_idle的时候set pcb报错的问题

---------

Co-authored-by: longjin <longjin@DragonOS.org>
2023-11-04 21:35:25 +08:00
LoGin
8058ccb307
修复bootstrap.sh未能自动更换gcc镜像源, 未能自动安装docker的问题 (#418) 2023-11-03 21:01:09 +08:00
LoGin
d470019b1e
patch add mini backtrace (#416)
* support rust panic backtrace

mini-backtrace has llvm's unwind cpp source to support backtrace/unwind.
as unwind/backtrace needs dynamically allocates memory, mini-backtrace
uses stack memory to capture fixed number of backtrace to avoid heap
allocation.
as unwind library needed, it needs to turn on eh_frame_hdr

* 修改忘了生成kernel.elf的问题

* 设置backtrace是默认的feature

---------

Co-authored-by: Yao Zhao <dragonlinux@gmail.com>
2023-11-01 22:12:19 +08:00
Wu Mianzhi
77799ccaac
完成e1000e驱动 (#393)
* 测试RESET

* 测试RESET

* 基于轮询的实现

* 规范化部分unsafe的使用

* 完成中断处理函数,同时去除了不必要的内存拷贝行为,准备编写napi机制

* 实现现有协议栈下的部分napi机制;修复了内存泄漏的问题;添加了一部分代码注释

* 去除部分无用代码

* 去除一些无用代码

* 适配新的驱动模型

* 完成msi中断测试

* 去除一些无用代码

* 格式化代码

* 增加了一些注释,提高代码可读性

* 去除无关文件

* 优化了读取mac地址的方式,提高可读性
2023-10-30 00:08:52 +08:00
Xiaoye Zheng
40314b30ab
DragonOS虚拟化 (#389)
* try some ioctl flow & kvm device

* add sys ioctl

* 删掉一些debug信息

* 修改run-qemu.sh脚本,在QEMU中enable vmx

* 修改cr0,cr4,msr寄存器enable VMX operations

* enable vmx operation

* allocate memory for vmcs with bug

* allocate memory for vmcs

* cpu virt-50%

* single vcpu virt

* add vmcs fields

* CPU virt overall flow with bug

* run vmlaunch success

* run CPU virt with bug

* 成功运行non-root模式的guest

* 成功运行vmexit,进入vmx_return函数

* 成功运行vmlaunch, vmexit, vmresume

* vmexit handler with bug

* 完成vmexit cpuid handler

* fix vmresume guest状态恢复的bug

* 增加vm ioctl

* refactor kvm 50%

* refactor kvm 80%

* FIXME: kvm vmlaunch failed

* vmlaunch success

* FIXME: output error

* update guest_rsp

* cpu virt refactor

* add mmu related struct

* add usermemory region workflow

* add mem-virt workflow

* add mem-virt

* refactor code

* add vcpu ioctl set_regs

* rename hypervisor to vm & solve some deadlock bugs

* workout mem pipeline

* fix vmcs control setting bugs

* refactor segment regs initialization

* resovle conficts

* resovle conficts

* format code
2023-10-24 14:31:56 +08:00