Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
158 commits
Select commit Hold shift + click to select a range
8443a0b
更新字体
Ryan1202 Dec 3, 2024
4300c1d
重构部分驱动部分框架;实现了中断控制器、定时器和显示驱动接口
Ryan1202 Dec 7, 2024
0f9b5bc
update
Ryan1202 Dec 7, 2024
0b49800
[WIP]建立总线驱动框架;重写部分pci总线及控制器驱动;修改wait_queue;新增驱动依赖处理
Ryan1202 Dec 9, 2024
386ea8b
更新定时器频率比较方式;新增结束线程功能
Ryan1202 Dec 13, 2024
b8a4596
[WIP]更新PCI总线驱动
Ryan1202 Dec 13, 2024
8617a24
update
Ryan1202 Dec 13, 2024
2588342
[WIP]新增等待线程退出机制;改为等待驱动初始化完成后再继续执行;修复tab输出异常的bug
Ryan1202 Dec 13, 2024
6270206
[WIP]初步实现IDE驱动及存储设备管理器
Ryan1202 Jan 3, 2025
9118375
ide驱动新增DMA传输支持
Ryan1202 Jan 4, 2025
0dce10f
改进IDE中断处理
Ryan1202 Jan 5, 2025
2cc46a6
修改存储设备分类;新增存储设备请求自动合并功能;删除apic驱动旧代码
Ryan1202 Jan 11, 2025
37bb64f
update .gitignore
Ryan1202 Jan 11, 2025
31c74f2
新增合并存储设备读写请求功能
Ryan1202 Jan 12, 2025
dc1a773
优化IDE设备注册流程,新增从模板分配设备的功能
Ryan1202 Jan 13, 2025
6e0936e
新增对象系统;新增动态数组支持;修改内置设备驱动结构;新增生成带数字后缀字符串函数;新增向上取整到2的次幂函数
Ryan1202 Jan 26, 2025
1050283
新增符号链接功能
Ryan1202 Feb 10, 2025
d39b61d
新增 为dyn_array实现foreach;
Ryan1202 Feb 11, 2025
372d733
新增 统一的数据传输接口
Ryan1202 Feb 12, 2025
faa3b51
新增 Partition对象类型
Ryan1202 Feb 13, 2025
fb4ace8
新增 通过分区对象读写功能
Ryan1202 Feb 13, 2025
8077c83
简化wait_queue结构
Ryan1202 Feb 25, 2025
2a5db56
新增 互斥锁、读写锁、条件变量
Ryan1202 Feb 25, 2025
e03d8d1
新增 Object引用计数与object_close;
Ryan1202 Feb 28, 2025
fe5e303
修复 写入IDE时没有写入current_request的bug
Ryan1202 Mar 3, 2025
28cd056
新增 时间设备;
Ryan1202 Mar 3, 2025
1546a4e
[WIP]重构 FAT32驱动程序;
Ryan1202 Mar 6, 2025
7b562f4
新增 删除文件功能;
Ryan1202 Mar 7, 2025
08157ef
新增 对象系统统一的创建、删除文件(夹)接口;
Ryan1202 Mar 7, 2025
350c1d6
新增 支持读取和设置属性;
Ryan1202 Mar 8, 2025
fd272c3
新增 readdir功能;
Ryan1202 Mar 9, 2025
03fce7a
修复 为System线程分配新的页存储task_s防止栈溢出覆盖掉task_s的内容;
Ryan1202 Mar 10, 2025
54c8f05
修改 用专门的wait_queue_tag来代替general_tag加入wait_queue
Ryan1202 Mar 10, 2025
2ccf5af
新增 lookup接口;
Ryan1202 Mar 10, 2025
fdda1c7
update tool
Ryan1202 Mar 10, 2025
ae79adc
修改 目录结构;修复 已知bug;修改 storage_io合并请求逻辑;新增 isa总线驱动;新增 ISA DMA锁,获取计数功能
Ryan1202 Mar 19, 2025
351da7b
修复 mmap bug;新增 ObjectHandle;修改 fat_transfer逻辑,提高连续簇的获取效率
Ryan1202 Mar 19, 2025
173f89a
新增 ide驱动给current_request加上互斥锁
Ryan1202 Mar 19, 2025
d07b9fc
修复 IDE驱动DMA配置bug;修复 FAT驱动簇获取bug;新增 存储设备IO请求分割功能;修改 存储设备IO等待方式;修复 thre…
Ryan1202 Mar 22, 2025
ea1e0d7
重构 小内存分配机制;重构 部分线程管理;重构 子线程等待机制;新增 aligned_log2n
Ryan1202 Mar 23, 2025
90deee9
[WIP] 重构 声音驱动框架;
Ryan1202 Mar 23, 2025
9d31fef
修复 线程退出时没有将下一线程恢复RUNNING状态的bug;优化 线程结构相关锁的使用
Ryan1202 Mar 24, 2025
bd10bf7
修复 IDE驱动DMA读写未判断物理地址连续性的bug
Ryan1202 Mar 28, 2025
ed37bab
新增 获取计时器数值功能;修改 主线程初始化完成后直接退出,避免阻塞其他线程
Ryan1202 Mar 28, 2025
6bf383a
修复 内存管理块的标记错误
Ryan1202 Mar 29, 2025
dd08968
修复 storage_io块大小计算错误导致缓冲区被覆盖的bug
Ryan1202 Mar 29, 2025
e9ced0f
[WIP]新增 sb16录音支持;删除 部分TODO注释
Ryan1202 Mar 30, 2025
f2b9b83
删除 旧的sb16驱动
Ryan1202 Mar 30, 2025
651422a
删除 vfs.c
Ryan1202 Mar 30, 2025
f4ee10a
新增 16位实模式BIOS中断调用部分模拟
Ryan1202 Apr 18, 2025
8154949
bios_emu: 新增 MOVS,CMPS,LODS,STOS,SCAS指令支持
Ryan1202 Apr 20, 2025
955fbf9
bios_emu: 新增 LOOP,LOOPE,LOOPNE,INTO指令支持
Ryan1202 Apr 20, 2025
966d5fb
bios_emu: 新增INS,OUTS,HLT,XLAT指令支持
Ryan1202 Apr 20, 2025
24467d0
bios_emu: 新增 LSS,LFS,LGS指令支持
Ryan1202 Apr 20, 2025
a89defd
bios_emu: 新增 CMPXCHG,XADD,BSF,BSR指令支持
Ryan1202 Apr 20, 2025
b0c1489
bios_emu: 新增ENTER,LEAVE指令支持
Ryan1202 Apr 21, 2025
61719a6
bios_emu: 新增BOUND指令支持
Ryan1202 Apr 21, 2025
faef329
bios_emu: 重构 部分MOV,XCHG指令,LEA指令
Ryan1202 Apr 21, 2025
4b38b80
docs: Update README.md
Ryan1202 May 7, 2025
4e48935
调整arch/x86/drivers, driver/目录结构
Ryan1202 Apr 24, 2025
c51823c
timer: 新增 获取指定时间对应计数功能
Ryan1202 May 13, 2025
19f2afa
spinlock: 新增 通过DEBUG宏实现可选的支持保存对spinlock加锁的线程信息
Ryan1202 May 13, 2025
b1c234a
driver: 修复 bus_driver初始化完成未能更新状态的bug;优化 driver_dendency等待逻辑
Ryan1202 May 13, 2025
5028cbb
objects: 修复 TRANSFER_OUT_XXX宏定义指向in函数的bug
Ryan1202 May 23, 2025
6fd1784
thread: 新增 防抢占机制
Ryan1202 Aug 5, 2025
5d21993
driver: driver_dependency加入防抢占
Ryan1202 Aug 5, 2025
6f5b79a
interrupt: 新增 软中断机制
Ryan1202 Aug 5, 2025
a93d13c
objects: 加入fs_info非空检查
Ryan1202 Aug 5, 2025
1a2b453
lib: 重构 随机数功能
Ryan1202 Aug 5, 2025
f6237cf
x86: 新增 内存屏障支持
Ryan1202 Aug 5, 2025
c090c66
kernel: 新增 list_in_list()检测是否位于有效链表中
Ryan1202 Aug 9, 2025
d66044b
timer: 新增回调定时器
Ryan1202 Aug 18, 2025
30914d6
list: 修复 list_prev_owner 宏的拼写错误
Ryan1202 Aug 18, 2025
3d21f85
driver: 新增 print_warning宏;修改 print_error宏实现
Ryan1202 Aug 18, 2025
d7b41c4
objects: 新增TransferResult错误类型TRANSFER_ERROR_EXCEED_MAX_SIZE
Ryan1202 Aug 18, 2025
b32131a
driver&thread&wait_queue: 修改 可中断阻塞实现
Ryan1202 Aug 18, 2025
502d15d
rtl8139&network: 重构 RTL8139驱动程序;重构 网络设备驱动程序管理框架; 重构 ethernet, arp, ip…
Ryan1202 Aug 18, 2025
082da62
ipv4: 删除 保存ipv4头的代码
Ryan1202 Aug 19, 2025
798f3d4
dhcp: 修改 将绑定udp端口及设置回调函数的步骤移到dhcp_reset中完成
Ryan1202 Aug 19, 2025
6c7017c
script: 新增 在mac下编译的支持
Ryan1202 Aug 20, 2025
47a79a9
dhcp: 修复 续租的逻辑错误
Ryan1202 Aug 20, 2025
dce42ab
network&ehthernet: 新增 地址发现专用conn
Ryan1202 Aug 21, 2025
8a803d9
network&arp: 新增 邻居发现系统;
Ryan1202 Aug 21, 2025
cdd725e
[WIP]network&arp&dhcp: 新增地址冲突处理
Ryan1202 Aug 22, 2025
d30937e
dhcp&acd&arp: 新增 对地址冲突的处理
Ryan1202 Aug 23, 2025
b8da81e
lib: 新增md5,fnv1/fnv1a/fnv0哈希函数支持
Ryan1202 Aug 26, 2025
069238a
udp: 简化udp_recv的丢包部分代码
Ryan1202 Aug 27, 2025
fbe0095
memory: 新增分配连续页内存kernel_alloc_continuous_pages
Ryan1202 Aug 29, 2025
1135303
fix: rtl8139: 修复DMA环形缓冲区管理bug
Ryan1202 Aug 29, 2025
9ff9c9c
ethernet: 修复修改tail指针的bug
Ryan1202 Aug 29, 2025
df650a5
network: NetBuffer 新增 清除数据功能net_buffer_clean_data
Ryan1202 Aug 29, 2025
75dac87
[WIP]network&tcp: 新增tcp支持;
Ryan1202 Aug 29, 2025
61d3f5c
script: 新增 自动分析并添加需要的grub依赖
Ryan1202 Sep 5, 2025
7030658
script: 新增 install_grub.py对于交叉工具链的处理
Ryan1202 Sep 5, 2025
0ad3a86
doc: 新增 Grub安装说明及相关平台支持信息
Ryan1202 Sep 6, 2025
cd87b03
tcp: tcp_shutdown增加仅关闭读、关闭读写的处理
Ryan1202 Sep 11, 2025
8ce2e25
tcp: 新增rtt测量与rto计算
Ryan1202 Sep 11, 2025
14c77c5
tcp: 新增 MSS支持
Ryan1202 Sep 11, 2025
b4dc939
update .gitignore
Ryan1202 Sep 11, 2025
2098dd2
network&protocols: 调整network目录结构,将与ipv4相关协议移到ipv4/
Ryan1202 Sep 11, 2025
bc38eaf
network&neighbour: 新增 自动学习ip->mac关系
Ryan1202 Sep 13, 2025
426a6e1
dhcp&arp: 修复 在DHCP Requesting阶段不回复ARP的bug
Ryan1202 Sep 13, 2025
1237dc8
udp: 新增 对特殊目的地址的处理;
Ryan1202 Sep 14, 2025
a29a5dd
protocols&ipv4: 新增 icmp echo message回复支持
Ryan1202 Sep 14, 2025
573a683
udp: 简化并修复地址匹配逻辑;
Ryan1202 Sep 15, 2025
55dd7e0
ipv4: 修复 DF标志设置错误的bug;
Ryan1202 Sep 15, 2025
0315a9d
icmp: 新增 UNREACHABLE消息的支持
Ryan1202 Sep 15, 2025
83b7bf6
RTL8139: 增大默认缓冲区大小
Ryan1202 Sep 15, 2025
355f1fb
tcp: 修复 关闭连接过程中ack的处理错误;新增 tcp_recv_data
Ryan1202 Sep 15, 2025
e4f4e30
tcp: 新增 tcp_listen支持
Ryan1202 Sep 15, 2025
95c90c0
isa: 修复 命名错误;
Ryan1202 Sep 16, 2025
da1b470
usb&uhci: 重构 uhci驱动,适配新驱动框架;简化 control transcation实现
Ryan1202 Sep 17, 2025
a651b1c
usb: 修改 usb-core头文件路径
Ryan1202 Sep 17, 2025
7b60d89
font: 修复字体'\'的错误
Ryan1202 Sep 18, 2025
2984e43
types: 修复 VOLUME类型
Ryan1202 Sep 18, 2025
ff813e8
lib: 简化itoa实现
Ryan1202 Sep 18, 2025
cbe6903
device: 加入ops非空检查
Ryan1202 Sep 18, 2025
4b65ca1
page: 将第0页设为不可访问;修复一些涉及空指针的bug
Ryan1202 Sep 18, 2025
290c994
usb&uhci: 将usb设备注册到object tree中
Ryan1202 Sep 18, 2025
30f8803
uhci: 改用独立线程完成端口初始化和设备枚举操作
Ryan1202 Sep 18, 2025
3a8113c
kernel&driver: 将驱动框架代码移动到kernel/driver/下
Ryan1202 Sep 18, 2025
235d94d
driver: 简化DriverResult类型
Ryan1202 Sep 18, 2025
b3701ae
driver: 新增 dynamic_device_manager
Ryan1202 Sep 18, 2025
e70730c
lib: 新增aligned_down_log2n
Ryan1202 Sep 22, 2025
7801ac9
driver: 提前唤醒等待中的driver
Ryan1202 Sep 22, 2025
2c23f92
lib: 新增BIT_FFZ_L和BIT_FFZ_R
Ryan1202 Sep 22, 2025
3a05f97
hcd&uhci: 新增中断传输支持
Ryan1202 Sep 22, 2025
2264278
timer: 在delay_ms中保证中断开启
Ryan1202 Sep 22, 2025
48834aa
usb: 新增usb设备驱动支持;新增传输管理结构UsbRequestBlock
Ryan1202 Sep 22, 2025
a94cd15
[WIP]hid&keyboard&mouse: 新增 基础HID键鼠报告读取
Ryan1202 Sep 22, 2025
654df74
usb: 新增UsbHub描述结构;
Ryan1202 Sep 23, 2025
378b1e9
uhci&hid: 删去无用代码
Ryan1202 Sep 23, 2025
4768fc0
usb: 提高hub端口初始化效率
Ryan1202 Sep 23, 2025
03ac8f4
time: 修复重复分配TimeDeviceManager的bug
Ryan1202 Sep 23, 2025
19da658
driver: 新增InputManager
Ryan1202 Sep 23, 2025
afe1424
driver: 新增 串口驱动支持
Ryan1202 Sep 24, 2025
2a2b22d
driver: 修改VIDEO设备类型名为FRAMEBUFFER
Ryan1202 Sep 24, 2025
e76f62a
console: 重构console,支持FrameBuffer和Serial后端
Ryan1202 Sep 25, 2025
5ce66c0
fs&storage: 删除一些错误的头文件引用
Ryan1202 Sep 27, 2025
fe535db
kernel&driver: 删除旧的代码及对旧头文件的引用
Ryan1202 Sep 27, 2025
374c273
driver: 调整目录结构
Ryan1202 Sep 27, 2025
0b55f33
object: 新增delete_object
Ryan1202 Sep 29, 2025
fd69252
thread: 修复thread_unblock重复添加线程到thread_ready的bug
Ryan1202 Oct 1, 2025
d315aee
kernel&driver: 调整结构,简化驱动框架,减少模板代码
Ryan1202 Oct 5, 2025
0adcd07
driver: 删除dynamic_device_manager
Ryan1202 Oct 6, 2025
45da73a
driver: 重新梳理驱动相关结构之间的关系并简化代码
Ryan1202 Oct 6, 2025
4da525e
doc: 新增驱动框架的说明文档
Ryan1202 Oct 6, 2025
08954b3
thread: 修复thread_unblock错误修改正在运行的线程状态的bug
Ryan1202 Oct 7, 2025
dffe6de
sb16: 修复私有数据的内存分配
Ryan1202 Oct 7, 2025
d8e1193
driver: enable_device_irq和disable_device_irq加入检查
Ryan1202 Oct 9, 2025
837dab2
input: 基于USB HID Usage Table的定义key event的事件id
Ryan1202 Oct 9, 2025
78040b2
apic: 默认禁用apic timer,由于在虚拟机中频率过于不稳定
Ryan1202 Oct 9, 2025
6284323
driver&8042: 重构ps/2键鼠驱动;新增支持在禁用USB Legacy Support后再初始化PS/2设备
Ryan1202 Oct 9, 2025
428bfea
framebuffer: 去掉console_backend超出最大行数时解锁再加锁的步骤
Ryan1202 Oct 9, 2025
cd6dbe6
script: 重写编译系统
Ryan1202 Oct 12, 2025
dfdc1e7
script: configurator: 简化实现
Ryan1202 Oct 14, 2025
c5d9744
script: configurator: 新增 支持将rust程序作为静态库链接到内核;
Ryan1202 Oct 18, 2025
b86124d
update .gitignore
Ryan1202 Jan 13, 2026
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
  •  
  •  
  •  
7 changes: 4 additions & 3 deletions .clang-format
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ Language: Cpp
# BasedOnStyle: LLVM
AlignAfterOpenBracket: AlwaysBreak
AlignArrayOfStructures: Right
AlignConsecutiveAssignments: true
AlignConsecutiveAssignments: AcrossComments
AlignConsecutiveBitFields: true
AlignConsecutiveDeclarations: true
AlignConsecutiveDeclarations: AcrossComments
AlignConsecutiveMacros: true
AlignEscapedNewlines: Left
AlignOperands: AlignAfterOperator
Expand Down Expand Up @@ -92,11 +92,12 @@ PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyBreakTemplateDeclaration: 10
PenaltyExcessCharacter: 1000000
PenaltyExcessCharacter: 1000
PenaltyReturnTypeOnItsOwnLine: 1000
PenaltyIndentedWhitespace: 0
PointerAlignment: Right
PPIndentWidth: -1
QualifierAlignment: Left
ReferenceAlignment: Pointer
ReflowComments: true
SortIncludes: true
Expand Down
15 changes: 13 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -52,14 +52,25 @@ Module.symvers
Mkfile.old
dkms.conf
compile_commands.json
build/

# Cache
__pycache__/
*.pyc
.cache/

# Rubbish
.DS_Store

# Others
disk/
/disk/
tools/bin/
tools/imagetool/target/
core
fixdep
*.img
*.log
*.dat
*.idx
dump.pcap
target/
.stfolder/
2 changes: 1 addition & 1 deletion .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"type": "cppdbg",
"request": "launch",
"miDebuggerServerAddress": "127.0.0.1:1234",
"program": "${workspaceFolder}/src/kernel.elf",
"program": "${workspaceFolder}/src/build/kernel.elf",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
Expand Down
21 changes: 0 additions & 21 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -44,27 +44,6 @@
"utility": "c",
"cstdlib": "c"
},
"C_Cpp.codeAnalysis.clangTidy.checks.disabled": [
"clang-diagnostic-int-to-void-pointer-cast",
"clang-diagnostic-int-to-pointer-cast",
"clang-diagnostic-void-pointer-to-int-cast",
"clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling",
"clang-diagnostic-pointer-to-int-cast",
"clang-diagnostic-visibility",
"clang-analyzer-security.insecureAPI.strcpy",
"clang-diagnostic-incompatible-library-redeclaration",
"clang-diagnostic-implicit-function-declaration",
"clang-analyzer-deadcode.DeadStores",
"clang-diagnostic-error"
],
"C_Cpp.errorSquiggles": "Disabled",
"makefile.launchConfigurations": [
{
"cwd": "/home/ryan/Desktop/horizon/src",
"binaryPath": "/home/ryan/Desktop/horizon/src/kernel.elf",
"binaryArgs": []
}
],
"C_Cpp.clang_format_style": "file",
"C_Cpp.clang_format_fallbackStyle": "LLVM",
"clangd.fallbackFlags": [
Expand Down
45 changes: 33 additions & 12 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
UNAME_S := $(shell uname -s)

DD = dd
CP = cp
GRUB_MKIMG = grub-mkimage
Expand All @@ -13,6 +15,14 @@ ifeq ($(ARCH), x86)
TARGET_PLATFORM = i386-pc
endif

ifeq ($(UNAME_S),Linux)
QEMU_CFG = qemu-linux.cfg
else ifeq ($(UNAME_S),Darwin)
QEMU_CFG = qemu-macos.cfg
else ifeq ($(OS),Windows_NT)
QEMU_CFG = qemu-windows.cfg
endif

FD_IMG = ./horizon.img
HD_IMG = ./hd0.img
HD_SIZE = 64M
Expand All @@ -30,6 +40,8 @@ FS_DIR = $(KERNEL_DIR)/fs
LIB_DIR = $(KERNEL_SRC)/lib
DISK_DIR = disk

KERNEL_OUTPUT_DIR = $(KERNEL_SRC)/build

LOADER_OFF = 2
LOADER_CNTS = 8

Expand All @@ -38,9 +50,12 @@ KERNEL_CNTS = 600

BOOT_BIN = $(BOOT_DIR)/boot.bin
LOADER_BIN = $(BOOT_DIR)/loader.bin
KERNEL_ELF = $(KERNEL_SRC)/kernel.elf
KERNEL_ELF = $(KERNEL_OUTPUT_DIR)/kernel.elf

IMAGETOOL = $(TOOL_SRC)/bin/imagetool
CONFIGURATOR = $(TOOL_SRC)/bin/configurator

INSTALL_GRUB_SCRIPT = $(TOOL_SRC)/grub/install_grub.py

.PHONY: cld

Expand All @@ -51,17 +66,18 @@ run: kernel libs qemu
run_dbg: kernel libs qemu_dbg

hd: tool
$(PYTHON) ./install_grub.py \
$(PYTHON) $(INSTALL_GRUB_SCRIPT) \
--image $(HD_IMG) \
--fs fat32 \
--platform $(TARGET_PLATFORM)

app:
$(MAKE) -s -C $(APP_SRC)

kernel:
kernel: tool
$(MAKE) -s -C $(BOOT_DIR)
$(MAKE) -s -C $(KERNEL_SRC)
$(CONFIGURATOR) --work-dir . --out-dir $(KERNEL_OUTPUT_DIR)
$(MAKE) -s -C $(KERNEL_OUTPUT_DIR)
$(IMAGETOOL) $(HD_IMG) copy $(KERNEL_ELF) /p0/kernel.elf

tool:
Expand Down Expand Up @@ -89,28 +105,33 @@ writehd: $(HD_IMG)
# qemu 7.1后取消了-soundhw,改用-audio
qemu_dbg:
$(QEMU) \
-no-reboot \
-s -S \
-monitor stdio \
-serial stdio \
-m 1024 \
-hda $(HD_IMG) \
-drive file=$(HD_IMG),if=ide,format=raw \
-usb \
-device piix3-usb-uhci \
-device usb-kbd \
-device usb-mouse \
-audio pa,model=sb16 \
-device rtl8139,netdev=nc1 \
-netdev user,id=nc1,hostfwd=tcp::5555-:80 \
-object filter-dump,id=f1,netdev=nc1,file=dump.dat \
-object filter-dump,id=f1,netdev=nc1,file=dump.pcap \
-readconfig $(QEMU_CFG) \
-boot c

qemu:
$(QEMU) \
-monitor stdio \
-no-reboot \
-serial stdio \
-m 1024 \
-hda $(HD_IMG) \
-drive file=$(HD_IMG),if=ide,format=raw \
-usb \
-device piix3-usb-uhci \
-device usb-kbd \
-device usb-mouse \
-audio pa,model=sb16 \
-device rtl8139,netdev=nc1 \
-netdev user,id=nc1,hostfwd=tcp::5555-:80 \
-object filter-dump,id=f1,netdev=nc1,file=dump.dat \
-object filter-dump,id=f1,netdev=nc1,file=dump.pcap \
-readconfig $(QEMU_CFG) \
-boot c
26 changes: 25 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
是个半成品。。。
</p>

真正的主分支:[master](https://github.com/Ryan1202/Horizon-Operating-System/tree/master)

## 环境

建议使用```VSCode```开发
Expand All @@ -29,6 +31,28 @@
- python(3.12.3)
- rust:[Install Rust - Rust Programming Language(rust-lang.org)](https://www.rust-lang.org/tools/install)

### Grub

在虚拟机中运行使用grub引导,所以需要先安装grub

#### Windows

使用Windows需要先下载 [Grub for Windows (2.12)](https://ftp.gnu.org/gnu/grub/grub-2.12-for-windows.zip) 并解压,在执行安装脚本时会提示输入grub路径

#### macOS

使用macOS需要使用homebrew安装i686-elf-grub

```
brew install i686-elf-grub
```

#### Linux

大多数Linux发行版默认使用grub引导,`install_grub.py`脚本可以自动从`/usr/lib/grub`找到模块目录

如果不是或者使用的并非x86 pc,需要自行安装grub

### VSCode

需要安装的插件:
Expand All @@ -42,7 +66,7 @@
>
> qemu 7.1开始不再支持-soundhw,</font>
>
> qemu 7.1之前的版本要把Makefile中的
> qemu 7.1之前的版本要把
> ```
> -audio pa,model=sb16
> ```
Expand Down
31 changes: 31 additions & 0 deletions config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
arch = "x86"

[tools]
cc = "x86_64-elf-gcc"
as = "nasm"
ld = "x86_64-elf-ld"
cflags = [
"-march=i486",
"-std=gnu11",
"-nostdinc",
"-nostdlib",
"-O0",
"-m32",
"-g",
"-ffreestanding",
"-fno-pie",
"-fno-stack-protector",
"-fno-strict-aliasing",
"-fno-builtin",
"-Wall",
"-Wunused",
]
asflags = ["-g", "-f", "elf32"]
ldflags = ["-m", "elf_i386", "-nostdlib"]
rust_target = "src/arch/x86/i686-none.json"
rustflags = ["-C", "relocation-model=static", "--emit", "obj"]

[debug]
level = "all"
cflags = ["-O0", "-g"]
asflags = ["-g"]
Loading
Loading