From e232830c188bbb0af84f1c9ceb28b44b328c51ae Mon Sep 17 00:00:00 2001 From: LoGin Date: Fri, 15 Nov 2024 00:10:32 +0800 Subject: [PATCH 1/7] =?UTF-8?q?ci:=20=E6=8E=A8=E9=80=81=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E5=88=B0s3=E6=97=B6=EF=BC=8C=E4=B8=8D=E5=90=8C=E6=AD=A5`p/*`?= =?UTF-8?q?=E7=9B=AE=E5=BD=95=E4=B8=8B=E7=9A=84=E6=96=87=E4=BB=B6=20(#1050?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 这些文件夹被用于其他子项目的文档 --- .github/workflows/docs-multiversion.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs-multiversion.yml b/.github/workflows/docs-multiversion.yml index 05320ee7..70e9748a 100644 --- a/.github/workflows/docs-multiversion.yml +++ b/.github/workflows/docs-multiversion.yml @@ -44,4 +44,4 @@ jobs: AWS_SECRET_ACCESS_KEY: ${{ secrets.DOCS_DEPLOY_S3_SECRET_KEY }} run: | - aws s3 sync ./_build/html s3://dragonos-docs --delete + aws s3 sync ./_build/html s3://dragonos-docs --delete --exclude "p/*" From 750b3b5d91f1d52e6c20dd5d752a0af861ae4da1 Mon Sep 17 00:00:00 2001 From: linfeng Date: Sat, 16 Nov 2024 16:21:20 +0800 Subject: [PATCH 2/7] feat(debug)[WIP]: add static-keys support (#1025) * feat: add static-keys support --- kernel/Cargo.toml | 5 ++++- kernel/src/debug/jump_label.rs | 28 ++++++++++++++++++++++++++++ kernel/src/debug/mod.rs | 1 + kernel/src/init/init.rs | 2 ++ kernel/src/lib.rs | 1 + 5 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 kernel/src/debug/jump_label.rs diff --git a/kernel/Cargo.toml b/kernel/Cargo.toml index d18d22f0..46c6b889 100644 --- a/kernel/Cargo.toml +++ b/kernel/Cargo.toml @@ -15,7 +15,7 @@ members = [ ] [features] -default = ["backtrace", "kvm", "fatfs", "fatfs-secure"] +default = ["backtrace", "kvm", "fatfs", "fatfs-secure", "static_keys_test"] # 内核栈回溯 backtrace = [] # kvm @@ -27,6 +27,7 @@ driver_ps2_mouse = [] # kprobe kprobe_test = [] +static_keys_test = [] # 运行时依赖项 [dependencies] @@ -67,6 +68,8 @@ lru = "0.12.3" rbpf = { path = "crates/rbpf" } printf-compat = { version = "0.1.1", default-features = false } +static-keys = "=0.6.1" + # target为x86_64时,使用下面的依赖 [target.'cfg(target_arch = "x86_64")'.dependencies] mini-backtrace = { git = "https://git.mirrors.dragonos.org.cn/DragonOS-Community/mini-backtrace.git", rev = "e0b1d90940" } diff --git a/kernel/src/debug/jump_label.rs b/kernel/src/debug/jump_label.rs new file mode 100644 index 00000000..2298f6d1 --- /dev/null +++ b/kernel/src/debug/jump_label.rs @@ -0,0 +1,28 @@ +#[cfg(feature = "static_keys_test")] +mod tests { + use static_keys::{define_static_key_false, static_branch_unlikely}; + define_static_key_false!(MY_STATIC_KEY); + #[inline(always)] + fn foo() { + println!("Entering foo function"); + if static_branch_unlikely!(MY_STATIC_KEY) { + println!("A branch"); + } else { + println!("B branch"); + } + } + + pub(super) fn static_keys_test() { + foo(); + unsafe { + MY_STATIC_KEY.enable(); + } + foo(); + } +} + +pub fn static_keys_init() { + static_keys::global_init(); + #[cfg(feature = "static_keys_test")] + tests::static_keys_test(); +} diff --git a/kernel/src/debug/mod.rs b/kernel/src/debug/mod.rs index b24c48bc..085d7051 100644 --- a/kernel/src/debug/mod.rs +++ b/kernel/src/debug/mod.rs @@ -1,2 +1,3 @@ +pub mod jump_label; pub mod klog; pub mod kprobe; diff --git a/kernel/src/init/init.rs b/kernel/src/init/init.rs index 653e2f4d..fa77cba7 100644 --- a/kernel/src/init/init.rs +++ b/kernel/src/init/init.rs @@ -57,6 +57,7 @@ fn do_start_kernel() { unsafe { mm_init() }; + // crate::debug::jump_label::static_keys_init(); if scm_reinit().is_ok() { if let Err(e) = textui_init() { warn!("Failed to init textui: {:?}", e); @@ -90,6 +91,7 @@ fn do_start_kernel() { clocksource_boot_finish(); Futex::init(); crate::bpf::init_bpf_system(); + crate::debug::jump_label::static_keys_init(); #[cfg(all(target_arch = "x86_64", feature = "kvm"))] crate::virt::kvm::kvm_init(); } diff --git a/kernel/src/lib.rs b/kernel/src/lib.rs index c35cc12b..0c9ccbe4 100644 --- a/kernel/src/lib.rs +++ b/kernel/src/lib.rs @@ -17,6 +17,7 @@ #![feature(sync_unsafe_cell)] #![feature(vec_into_raw_parts)] #![feature(c_variadic)] +#![feature(asm_goto)] #![cfg_attr(target_os = "none", no_std)] #![allow(static_mut_refs, non_local_definitions, internal_features)] // clippy的配置 From 2cac148dc16a1317bcfb852a4f3f725be0776d37 Mon Sep 17 00:00:00 2001 From: LoGin Date: Mon, 18 Nov 2024 20:57:23 +0800 Subject: [PATCH 3/7] =?UTF-8?q?doc:=20=E6=B7=BB=E5=8A=A0dadk=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E7=9A=84=E9=93=BE=E6=8E=A5,=E5=B9=B6=E4=B8=94?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3namespace=E6=96=87=E6=A1=A3=E7=9A=84=E4=B8=80?= =?UTF-8?q?=E4=BA=9B=E9=97=AE=E9=A2=98=20(#1053)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: longjin --- docs/kernel/container/index.rst | 2 +- docs/kernel/container/namespaces/index.rst | 2 +- docs/kernel/container/namespaces/mnt_namespace.md | 6 +++--- docs/kernel/container/namespaces/pid_namespace.md | 8 +++++--- docs/userland/appdev/index.rst | 1 + 5 files changed, 11 insertions(+), 8 deletions(-) diff --git a/docs/kernel/container/index.rst b/docs/kernel/container/index.rst index 0a5709d3..852b33cb 100644 --- a/docs/kernel/container/index.rst +++ b/docs/kernel/container/index.rst @@ -10,4 +10,4 @@ :maxdepth: 2 namespaces/index - filesystem/unionfs/index + ../filesystem/unionfs/index diff --git a/docs/kernel/container/namespaces/index.rst b/docs/kernel/container/namespaces/index.rst index 2cfe0210..886f2841 100644 --- a/docs/kernel/container/namespaces/index.rst +++ b/docs/kernel/container/namespaces/index.rst @@ -1,5 +1,5 @@ ==================================== -名称空间 +命名空间 ==================================== DragonOS的namespaces目前支持pid_namespace和mnt_namespace 预计之后会继续完善 diff --git a/docs/kernel/container/namespaces/mnt_namespace.md b/docs/kernel/container/namespaces/mnt_namespace.md index dd828adf..2a8cacf7 100644 --- a/docs/kernel/container/namespaces/mnt_namespace.md +++ b/docs/kernel/container/namespaces/mnt_namespace.md @@ -1,10 +1,10 @@ -# 挂载名称空间 +# 挂载命名空间 ## 底层架构 pcb -> nsproxy -> mnt_namespace -每一个挂载文件系统都有自立独立的挂载点,表现在数据结构上是一个挂载的红黑树,每一个名称空间中挂载是独立的,所以文件系统的挂载和卸载不会影响别的 +每一个挂载文件系统都有自立独立的挂载点,表现在数据结构上是一个挂载的红黑树,每一个命名空间中挂载是独立的,所以文件系统的挂载和卸载不会影响别的 ## 系统调用接口 @@ -14,6 +14,6 @@ pcb -> nsproxy -> mnt_namespace - unshare - 使用 CLONE_NEWPID 标志调用 unshare() 后,后续创建的所有子进程都将在新的命名空间中运行。 - setns - - 将进程加入到指定的名称空间 + - 将进程加入到指定的命名空间 - chroot - 将当前进程的根目录更改为指定的路径,提供文件系统隔离。 \ No newline at end of file diff --git a/docs/kernel/container/namespaces/pid_namespace.md b/docs/kernel/container/namespaces/pid_namespace.md index 4e9210cc..eaa7a3fe 100644 --- a/docs/kernel/container/namespaces/pid_namespace.md +++ b/docs/kernel/container/namespaces/pid_namespace.md @@ -1,8 +1,10 @@ -# 进程名称空间 +# 进程命名空间 :::{note} 本文作者:操丰毅 1553389239@qq.com -2024年10月30日 ::: -pid_namespace 是内核中的一种名称空间,用于实现进程隔离,允许在不同的名称空间中运行的进程有独立的pid试图 +2024年10月30日 +::: + +pid_namespace 是内核中的一种命名空间,用于实现进程隔离,允许在不同的命名空间中运行的进程有独立的pid视图 ## 底层架构 diff --git a/docs/userland/appdev/index.rst b/docs/userland/appdev/index.rst index dea24d30..aa91bb0c 100644 --- a/docs/userland/appdev/index.rst +++ b/docs/userland/appdev/index.rst @@ -8,3 +8,4 @@ rust-quick-start c-cpp-quick-start + DADK文档 From 081428c0d832cde99834cf8f94a0f2a1f41c9704 Mon Sep 17 00:00:00 2001 From: linfeng Date: Tue, 19 Nov 2024 21:55:22 +0800 Subject: [PATCH 4/7] feat: update to new backtrace lib (#1049) * feat: update to new backtrace lib * feat: enable unwind for riscv64 --------- Co-authored-by: longjin --- kernel/Cargo.toml | 10 ++- kernel/Makefile | 6 +- kernel/src/Makefile | 28 +++++-- kernel/src/arch/riscv64/link.ld | 2 + .../riscv64/riscv64gc-unknown-none-elf.json | 28 +++++++ kernel/src/arch/riscv64/syscall/mod.rs | 3 +- kernel/src/arch/x86_64/link.lds | 2 + kernel/src/arch/x86_64/syscall/mod.rs | 4 +- .../src/arch/x86_64/x86_64-unknown-none.json | 2 +- kernel/src/lib.rs | 84 +++++++++++++++---- kernel/src/syscall/mod.rs | 15 ++++ 11 files changed, 151 insertions(+), 33 deletions(-) create mode 100644 kernel/src/arch/riscv64/riscv64gc-unknown-none-elf.json diff --git a/kernel/Cargo.toml b/kernel/Cargo.toml index 46c6b889..414df828 100644 --- a/kernel/Cargo.toml +++ b/kernel/Cargo.toml @@ -17,7 +17,7 @@ members = [ [features] default = ["backtrace", "kvm", "fatfs", "fatfs-secure", "static_keys_test"] # 内核栈回溯 -backtrace = [] +backtrace = ["dep:unwinding"] # kvm kvm = [] @@ -68,11 +68,17 @@ lru = "0.12.3" rbpf = { path = "crates/rbpf" } printf-compat = { version = "0.1.1", default-features = false } + static-keys = "=0.6.1" +unwinding = { git = "https://git.mirrors.dragonos.org.cn/DragonOS-Community/unwinding", rev = "4eb845da62", default-features = false, optional = true, features = [ + "unwinder", + "fde-gnu-eh-frame-hdr", + "panic", + "personality" +]} # target为x86_64时,使用下面的依赖 [target.'cfg(target_arch = "x86_64")'.dependencies] -mini-backtrace = { git = "https://git.mirrors.dragonos.org.cn/DragonOS-Community/mini-backtrace.git", rev = "e0b1d90940" } multiboot2 = { git = "https://git.mirrors.dragonos.org.cn/DragonOS-Community/multiboot2", rev = "05739aab40" } raw-cpuid = "11.0.1" x86 = "=0.52.0" diff --git a/kernel/Makefile b/kernel/Makefile index ac09fc83..4429fb1d 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -6,7 +6,7 @@ include ./env.mk ifeq ($(ARCH), x86_64) export TARGET_JSON=arch/x86_64/x86_64-unknown-none.json else ifeq ($(ARCH), riscv64) - export TARGET_JSON=riscv64gc-unknown-none-elf + export TARGET_JSON=arch/riscv64/riscv64gc-unknown-none-elf.json endif export CARGO_ZBUILD=-Z build-std=core,alloc,compiler_builtins -Z build-std-features=compiler-builtins-mem @@ -27,7 +27,7 @@ clean: fmt: RUSTFLAGS="$(RUSTFLAGS)" cargo fmt --all $(FMT_CHECK) ifeq ($(ARCH), x86_64) - RUSTFLAGS="$(RUSTFLAGS)" cargo clippy --all-features + RUSTFLAGS="$(RUSTFLAGS)" cargo +nightly-2024-11-05 clippy --all-features endif @@ -38,7 +38,7 @@ check: ECHO ifeq ($(ARCH), x86_64) RUSTFLAGS="$(RUSTFLAGS)" cargo +nightly-2024-11-05 check --workspace $(CARGO_ZBUILD) --message-format=json --target ./src/$(TARGET_JSON) else ifeq ($(ARCH), riscv64) - RUSTFLAGS="$(RUSTFLAGS)" cargo +nightly-2024-11-05 check --workspace $(CARGO_ZBUILD) --message-format=json --target $(TARGET_JSON) + RUSTFLAGS="$(RUSTFLAGS)" cargo +nightly-2024-11-05 check --workspace $(CARGO_ZBUILD) --message-format=json --target ./src/$(TARGET_JSON) endif test: diff --git a/kernel/src/Makefile b/kernel/src/Makefile index f78d7cfb..9028420c 100644 --- a/kernel/src/Makefile +++ b/kernel/src/Makefile @@ -14,11 +14,9 @@ CFLAGS_UNWIND = LDFLAGS_UNWIND = RUSTFLAGS_UNWIND = ifeq ($(UNWIND_ENABLE), yes) - CFLAGS_UNWIND = -funwind-tables -ifeq ($(ARCH), x86_64) - LDFLAGS_UNWIND = --eh-frame-hdr - RUSTFLAGS_UNWIND = -Cforce-unwind-tables -Clink-arg=-Wl,eh_frame.ld -endif + CFLAGS_UNWIND = -funwind-tables + LDFLAGS_UNWIND = --eh-frame-hdr + RUSTFLAGS_UNWIND = -Cforce-unwind-tables -Clink-arg=-Wl,eh_frame.ld endif RUSTFLAGS += $(RUSTFLAGS_UNWIND) @@ -58,7 +56,6 @@ ECHO: @echo "$@" $(kernel_subdirs): ECHO - $(MAKE) -C $@ all CFLAGS="$(CFLAGS)" ASFLAGS="$(ASFLAGS)" kernel_root_path="$(shell pwd)" kernel: $(kernel_subdirs) kernel_rust @@ -66,7 +63,26 @@ kernel: $(kernel_subdirs) kernel_rust __link_riscv64_kernel: @echo "Linking kernel..." $(LD) -b elf64-littleriscv -z muldefs $(LDFLAGS_UNWIND) -o kernel $(shell find . -name "*.o") ../target/riscv64gc-unknown-none-elf/release/libdragonos_kernel.a -T arch/riscv64/link.ld --no-relax + # 生成kallsyms + current_dir=$(pwd) + + @dbg='debug';for x in $$dbg; do \ + cd $$x;\ + $(MAKE) generate_kallsyms kernel_root_path="$(shell pwd)"||exit 1;\ + cd ..;\ + done + +# 重新链接 + @echo "Re-Linking kernel..." + @echo $(shell find . -name "*.o") + $(LD) -b elf64-littleriscv -z muldefs $(LDFLAGS_UNWIND) -o kernel $(shell find . -name "*.o") ../target/riscv64gc-unknown-none-elf/release/libdragonos_kernel.a ./debug/kallsyms.o -T arch/riscv64/link.ld --no-relax + @echo "Generating kernel ELF file..." + +ifeq ($(UNWIND_ENABLE), yes) + $(OBJCOPY) -I elf64-littleriscv -O elf64-littleriscv kernel ../../bin/kernel/kernel.elf +else $(OBJCOPY) -I elf64-littleriscv -O elf64-littleriscv -R ".eh_frame" kernel ../../bin/kernel/kernel.elf +endif @rm kernel $(MAKE) __dragon_stub PAYLOAD_ELF="$(shell pwd)/../../bin/kernel/kernel.elf" diff --git a/kernel/src/arch/riscv64/link.ld b/kernel/src/arch/riscv64/link.ld index 5d628f39..bcd47fdd 100644 --- a/kernel/src/arch/riscv64/link.ld +++ b/kernel/src/arch/riscv64/link.ld @@ -28,6 +28,7 @@ SECTIONS . = ALIGN(4096); text_start_pa = .; + __executable_start = .; .text (text_start_pa): AT(text_start_pa - KERNEL_VMA) { _text = .; @@ -39,6 +40,7 @@ SECTIONS *(.text.*) _etext = .; + __etext = .; } . = ALIGN(32768); data_start_pa = .; diff --git a/kernel/src/arch/riscv64/riscv64gc-unknown-none-elf.json b/kernel/src/arch/riscv64/riscv64gc-unknown-none-elf.json new file mode 100644 index 00000000..b474a6fb --- /dev/null +++ b/kernel/src/arch/riscv64/riscv64gc-unknown-none-elf.json @@ -0,0 +1,28 @@ +{ + "arch": "riscv64", + "code-model": "medium", + "cpu": "generic-rv64", + "crt-objects-fallback": "false", + "data-layout": "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128", + "eh-frame-header": false, + "emit-debug-gdb-scripts": false, + "features": "+m,+a,+f,+d,+c", + "linker": "rust-lld", + "linker-flavor": "gnu-lld", + "llvm-abiname": "lp64d", + "llvm-target": "riscv64", + "max-atomic-width": 64, + "metadata": { + "description": "Bare RISC-V (RV64IMAFDC ISA)", + "host_tools": false, + "std": false, + "tier": 2 + }, + "panic-strategy": "unwind", + "relocation-model": "static", + "supported-sanitizers": [ + "shadow-call-stack", + "kernel-address" + ], + "target-pointer-width": "64" +} diff --git a/kernel/src/arch/riscv64/syscall/mod.rs b/kernel/src/arch/riscv64/syscall/mod.rs index 5609084a..450c0e85 100644 --- a/kernel/src/arch/riscv64/syscall/mod.rs +++ b/kernel/src/arch/riscv64/syscall/mod.rs @@ -36,7 +36,8 @@ pub(super) fn syscall_handler(syscall_num: usize, frame: &mut TrapFrame) -> () { let args = [frame.a0, frame.a1, frame.a2, frame.a3, frame.a4, frame.a5]; syscall_return!( - Syscall::handle(syscall_num, &args, frame).unwrap_or_else(|e| e.to_posix_errno() as usize), + Syscall::catch_handle(syscall_num, &args, frame) + .unwrap_or_else(|e| e.to_posix_errno() as usize), frame, false ); diff --git a/kernel/src/arch/x86_64/link.lds b/kernel/src/arch/x86_64/link.lds index 9c729ed9..6371c095 100644 --- a/kernel/src/arch/x86_64/link.lds +++ b/kernel/src/arch/x86_64/link.lds @@ -26,6 +26,7 @@ SECTIONS . = ALIGN(32768); . += KERNEL_VMA; text_start_pa = .; + __executable_start = .; .text (text_start_pa): AT(text_start_pa - KERNEL_VMA) { _text = .; @@ -37,6 +38,7 @@ SECTIONS *(.text.*) _etext = .; + __etext = .; } . = ALIGN(32768); data_start_pa = .; diff --git a/kernel/src/arch/x86_64/syscall/mod.rs b/kernel/src/arch/x86_64/syscall/mod.rs index 4ed274c2..df656b3b 100644 --- a/kernel/src/arch/x86_64/syscall/mod.rs +++ b/kernel/src/arch/x86_64/syscall/mod.rs @@ -118,8 +118,8 @@ pub extern "sysv64" fn syscall_handler(frame: &mut TrapFrame) { _ => {} } syscall_return!( - Syscall::handle(syscall_num, &args, frame).unwrap_or_else(|e| e.to_posix_errno() as usize) - as u64, + Syscall::catch_handle(syscall_num, &args, frame) + .unwrap_or_else(|e| e.to_posix_errno() as usize) as u64, frame, show ); diff --git a/kernel/src/arch/x86_64/x86_64-unknown-none.json b/kernel/src/arch/x86_64/x86_64-unknown-none.json index fbc13a4a..c676f377 100644 --- a/kernel/src/arch/x86_64/x86_64-unknown-none.json +++ b/kernel/src/arch/x86_64/x86_64-unknown-none.json @@ -11,5 +11,5 @@ "executables": true, "features": "-mmx,-sse,+soft-float", "disable-redzone": true, - "panic-strategy": "abort" + "panic-strategy": "unwind" } diff --git a/kernel/src/lib.rs b/kernel/src/lib.rs index 0c9ccbe4..c650b9d5 100644 --- a/kernel/src/lib.rs +++ b/kernel/src/lib.rs @@ -94,8 +94,11 @@ extern crate wait_queue_macros; use crate::mm::allocator::kernel_allocator::KernelAllocator; -#[cfg(all(feature = "backtrace", target_arch = "x86_64"))] -extern crate mini_backtrace; +#[cfg(feature = "backtrace")] +use unwinding::{ + abi::{UnwindContext, UnwindReasonCode, _Unwind_GetIP}, + panic::UserUnwindTrace, +}; extern "C" { fn lookup_kallsyms(addr: u64, level: i32) -> i32; @@ -106,12 +109,37 @@ extern "C" { pub static KERNEL_ALLOCATOR: KernelAllocator = KernelAllocator; /// 全局的panic处理函数 +/// +/// How to use unwinding lib: +/// +/// ``` +/// pub fn test_unwind() { +/// struct UnwindTest; +/// impl Drop for UnwindTest { +/// fn drop(&mut self) { +/// println!("Drop UnwindTest"); +/// } +/// } +/// let res1 = unwinding::panic::catch_unwind(|| { +/// let _unwind_test = UnwindTest; +/// println!("Test panic..."); +/// panic!("Test panic"); +/// }); +/// assert_eq!(res1.is_err(), true); +/// let res2 = unwinding::panic::catch_unwind(|| { +/// let _unwind_test = UnwindTest; +/// println!("Test no panic..."); +/// 0 +/// }); +/// assert_eq!(res2.is_ok(), true); +/// } +/// ``` +/// #[cfg(target_os = "none")] #[panic_handler] #[no_mangle] pub fn panic(info: &PanicInfo) -> ! { use log::error; - use process::ProcessManager; error!("Kernel Panic Occurred."); @@ -129,21 +157,41 @@ pub fn panic(info: &PanicInfo) -> ! { } } println!("Message:\n\t{}", info.message()); - - #[cfg(all(feature = "backtrace", target_arch = "x86_64"))] + #[cfg(feature = "backtrace")] { - unsafe { - let bt = mini_backtrace::Backtrace::<16>::capture(); - println!("Rust Panic Backtrace:"); - let mut level = 0; - for frame in bt.frames { - lookup_kallsyms(frame as u64, level); - level += 1; - } - }; + let mut data = CallbackData { counter: 0 }; + println!("Rust Panic Backtrace:"); + let res = unwinding::panic::begin_panic_with_hook::( + alloc::boxed::Box::new(()), + &mut data, + ); + log::error!("panic unreachable: {:?}", res.0); + } + println!( + "Current PCB:\n\t{:?}", + process::ProcessManager::current_pcb() + ); + process::ProcessManager::exit(usize::MAX); + loop {} +} + +/// User hook for unwinding +/// +/// During stack backtrace, the user can print the function location of the current stack frame. +struct Tracer; +struct CallbackData { + counter: usize, +} +impl UserUnwindTrace for Tracer { + type Arg = CallbackData; + + fn trace(ctx: &UnwindContext<'_>, arg: *mut Self::Arg) -> UnwindReasonCode { + let data = unsafe { &mut *(arg) }; + data.counter += 1; + let pc = _Unwind_GetIP(ctx); + unsafe { + lookup_kallsyms(pc as u64, data.counter as i32); + } + UnwindReasonCode::NO_REASON } - - println!("Current PCB:\n\t{:?}", (ProcessManager::current_pcb())); - - ProcessManager::exit(usize::MAX); } diff --git a/kernel/src/syscall/mod.rs b/kernel/src/syscall/mod.rs index c83b6729..9157fcfe 100644 --- a/kernel/src/syscall/mod.rs +++ b/kernel/src/syscall/mod.rs @@ -1,5 +1,6 @@ use core::{ ffi::{c_int, c_void}, + hint::spin_loop, sync::atomic::{AtomicBool, Ordering}, }; @@ -10,6 +11,7 @@ use crate::{ libs::{futex::constant::FutexFlag, rand::GRandFlags}, mm::{page::PAGE_4K_SIZE, syscall::MremapFlags}, net::syscall::MsgHdr, + process, process::{ fork::KernelCloneArgs, resource::{RLimit64, RUsage}, @@ -74,6 +76,19 @@ impl Syscall { return r; } + /// 系统调用分发器,用于分发系统调用。 + /// + /// 与[handle]不同,这个函数会捕获系统调用处理函数的panic,返回错误码。 + pub fn catch_handle( + syscall_num: usize, + args: &[usize], + frame: &mut TrapFrame, + ) -> Result { + let res = unwinding::panic::catch_unwind(|| Self::handle(syscall_num, args, frame)); + res.unwrap_or_else(|_| loop { + spin_loop(); + }) + } /// @brief 系统调用分发器,用于分发系统调用。 /// /// 这个函数内,需要根据系统调用号,调用对应的系统调用处理函数。 From 23ccf763b6bdafe574f356df699ce748f916b338 Mon Sep 17 00:00:00 2001 From: yuyi2439 <68320855+yuyi2439@users.noreply.github.com> Date: Fri, 22 Nov 2024 22:49:10 +0800 Subject: [PATCH 5/7] =?UTF-8?q?fix(user):=20=E4=BF=AE=E5=A4=8Dclean=20./us?= =?UTF-8?q?er=E6=97=B6=E5=87=BA=E7=8E=B0=E5=8F=82=E6=95=B0=E8=BF=87?= =?UTF-8?q?=E9=95=BF=E7=9A=84=E9=97=AE=E9=A2=98=20(#1037)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- user/Makefile | 6 ---- user/port/README.md | 15 -------- user/port/binutils/2.38/.gitignore | 1 - user/port/binutils/2.38/Dockerfile | 41 ---------------------- user/port/binutils/2.38/README.md | 25 -------------- user/port/binutils/2.38/build.sh | 42 ----------------------- user/port/binutils/2.38/run.sh | 1 - user/port/build.sh | 17 ---------- user/port/flex/2.6.4/.gitignore | 1 - user/port/flex/2.6.4/build.sh | 37 -------------------- user/port/gcc/11.3.0/.gitignore | 1 - user/port/gcc/11.3.0/build-hosted.sh | 51 ---------------------------- user/port/gmp/6.2.1/build.sh | 28 --------------- user/port/mpc/1.2.1/build.sh | 35 ------------------- user/port/mpfr/4.1.1/build.sh | 37 -------------------- user/port/pkg-config.sh | 15 -------- 16 files changed, 353 deletions(-) delete mode 100644 user/port/README.md delete mode 100644 user/port/binutils/2.38/.gitignore delete mode 100644 user/port/binutils/2.38/Dockerfile delete mode 100644 user/port/binutils/2.38/README.md delete mode 100644 user/port/binutils/2.38/build.sh delete mode 100644 user/port/binutils/2.38/run.sh delete mode 100644 user/port/build.sh delete mode 100644 user/port/flex/2.6.4/.gitignore delete mode 100644 user/port/flex/2.6.4/build.sh delete mode 100644 user/port/gcc/11.3.0/.gitignore delete mode 100644 user/port/gcc/11.3.0/build-hosted.sh delete mode 100644 user/port/gmp/6.2.1/build.sh delete mode 100644 user/port/mpc/1.2.1/build.sh delete mode 100644 user/port/mpfr/4.1.1/build.sh delete mode 100644 user/port/pkg-config.sh diff --git a/user/Makefile b/user/Makefile index 4c4ed87d..3f09a325 100644 --- a/user/Makefile +++ b/user/Makefile @@ -1,10 +1,5 @@ user_sub_dirs = apps -SUBDIR_ROOTS := . -DIRS := . $(shell find $(SUBDIR_ROOTS) -type d) -GARBAGE_PATTERNS := *.o *.a -GARBAGE := $(foreach DIR,$(DIRS),$(addprefix $(DIR)/,$(GARBAGE_PATTERNS))) - DADK_VERSION=$(shell dadk -V | awk 'END {print $$2}') # 最小的DADK版本 MIN_DADK_VERSION = 0.1.11 @@ -65,7 +60,6 @@ copy_sysconfig: dadk_run .PHONY: clean clean: - rm -rf $(GARBAGE) $(MAKE) dadk_clean @list='$(user_sub_dirs)'; for subdir in $$list; do \ echo "Clean in dir: $$subdir";\ diff --git a/user/port/README.md b/user/port/README.md deleted file mode 100644 index 78a27d57..00000000 --- a/user/port/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# port目录 ---- - -本目录移植到DragonOS的应用程序。 - -可以包含以下类型的文件: - -- 移植的patch,以及编译脚本、编译用的Dockerfile等 -- 把子目录作为git仓库的submodule - -## 注意 - -编译好libc之后,要把sysroot/usr/lib的文件,复制到$HOME/opt/dragonos-host-userspace/x86_64-dragonos/lib. 因为ld会从这里面找链接的东西。 - -目前由于DragonOS的libc还不完善,所以尚未能使用用户态交叉编译器来编译flex。 \ No newline at end of file diff --git a/user/port/binutils/2.38/.gitignore b/user/port/binutils/2.38/.gitignore deleted file mode 100644 index c0ecc72f..00000000 --- a/user/port/binutils/2.38/.gitignore +++ /dev/null @@ -1 +0,0 @@ -build-binutils/ \ No newline at end of file diff --git a/user/port/binutils/2.38/Dockerfile b/user/port/binutils/2.38/Dockerfile deleted file mode 100644 index 23ab29ae..00000000 --- a/user/port/binutils/2.38/Dockerfile +++ /dev/null @@ -1,41 +0,0 @@ -# 本Dockerfile用于构建binutils 2.38的交叉编译环境 - -FROM ubuntu:jammy - -# Install dependencies -RUN apt-get update && apt-get install -y \ - autoconf2.69 \ - automake \ - bison \ - build-essential \ - flex \ - gawk \ - gettext \ - git \ - libgmp-dev \ - libmpc-dev \ - libmpfr-dev \ - libncurses5-dev \ - libtool \ - m4 \ - make \ - ninja-build \ - python3 \ - texinfo \ - wget \ - xz-utils \ - zlib1g-dev \ - wget \ - && rm /usr/bin/autoconf && ln -s /usr/bin/autoconf2.69 /usr/bin/autoconf - -WORKDIR /opt - -# download automake 1.15.1 -RUN wget http://mirrors.ustc.edu.cn/gnu/automake/automake-1.15.1.tar.xz && \ - tar -xvf automake-1.15.1.tar.xz && \ - cd automake-1.15.1 && \ - ./configure --prefix=/usr && \ - make && \ - make install && \ - cd .. && \ - rm -rf automake-1.15.1 automake-1.15.1.tar.xz diff --git a/user/port/binutils/2.38/README.md b/user/port/binutils/2.38/README.md deleted file mode 100644 index b16eb993..00000000 --- a/user/port/binutils/2.38/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# binutils-2.38 - -## 说明 - -这里是移植到用户态的binutils-2.38,用于DragonOS的用户态编译器。在编译这里之前,请先在项目根目录下运行`make -j $(nproc)`, 以确保编译binutils所依赖的依赖库已经编译好。 - -先修改build.sh中的路径,配置好需要的信息,再使用以下命令,即可开始编译: - -```bash -bash build.sh -``` - ---- - -请注意,如果您要修改binutils的代码,请先使用以下命令,构建编辑binutils代码配置的环境: - -```bash -docker build --no-cache -t dragonos-binutils-build . -``` - -然后再在binutils目录下执行以下命令,进入容器: - -```bash -docker run --rm -it -v $PWD:/workdir -w /workdir dragonos-binutils-build -``` diff --git a/user/port/binutils/2.38/build.sh b/user/port/binutils/2.38/build.sh deleted file mode 100644 index 0e3e5224..00000000 --- a/user/port/binutils/2.38/build.sh +++ /dev/null @@ -1,42 +0,0 @@ -# 编译前请先设置参数 -sys_root=$DRAGONOS_SYSROOT -binutils_path=请填写binutils的路径 - -# 要安装到的目录 -PREFIX=$HOME/opt/dragonos-host-userspace - - -if [ ! -d ${binutils_path} ]; then - echo "Error: ${binutils_path} not found" - exit 1 -fi - -if [ ! -d ${sys_root} ]; then - echo "Error: ${sys_root} not found" - exit 1 -fi - - -mkdir -p build-binutils || exit 1 -mkdir -p ${PREFIX} || exit 1 - -# 安装依赖 -# 注意texinfo和binutils的版本是否匹配 -# 注意gmp/mpc/mpfr和gcc/g++的版本是否匹配 -sudo apt-get install -y \ - g++ \ - gcc \ - make \ - texinfo \ - libgmp3-dev \ - libmpc-dev \ - libmpfr-dev \ - flex \ - wget - -cd build-binutils -${binutils_path}/configure --prefix=${PREFIX} --target=x86_64-dragonos --with-sysroot=${sys_root} --disable-werror || exit 1 -make -j $(nproc) || exit 1 -make install || exit 1 -make clean || exit 1 -rm -rf build-binutils \ No newline at end of file diff --git a/user/port/binutils/2.38/run.sh b/user/port/binutils/2.38/run.sh deleted file mode 100644 index b4d17313..00000000 --- a/user/port/binutils/2.38/run.sh +++ /dev/null @@ -1 +0,0 @@ -docker run --rm -it -v $PWD:/workdir -w /workdir binutils-2.38 \ No newline at end of file diff --git a/user/port/build.sh b/user/port/build.sh deleted file mode 100644 index 7f9c5f57..00000000 --- a/user/port/build.sh +++ /dev/null @@ -1,17 +0,0 @@ -source pkg-config.sh -path=( - gmp/6.2.1 - mpfr/4.1.1 - mpc/1.2.1 - flex/2.6.4 -) - -current_path=$(pwd) - -for i in ${path[@]}; do - echo "Building $i" - cd $i - ./build.sh || exit 1 - cd $current_path -done -cd $current_path \ No newline at end of file diff --git a/user/port/flex/2.6.4/.gitignore b/user/port/flex/2.6.4/.gitignore deleted file mode 100644 index d1638636..00000000 --- a/user/port/flex/2.6.4/.gitignore +++ /dev/null @@ -1 +0,0 @@ -build/ \ No newline at end of file diff --git a/user/port/flex/2.6.4/build.sh b/user/port/flex/2.6.4/build.sh deleted file mode 100644 index c23a4b51..00000000 --- a/user/port/flex/2.6.4/build.sh +++ /dev/null @@ -1,37 +0,0 @@ - -# 编译前请先设置参数 -sys_root=$DRAGONOS_SYSROOT -src_path=请填写flex的路径 - -current_path=$(pwd) -# 要安装到的目录 -PREFIX=/usr - - -if [ ! -d ${src_path} ]; then - echo "Error: ${src_path} not found" - exit 1 -fi - -if [ ! -d ${sysroot} ]; then - echo "Error: ${sysroot} not found" - exit 1 -fi - -cd ${src_path} -autoreconf --install -autoconf -sed -i 's/ios[*]/ios* | dragonos* /' build-aux/config.sub - -cd ${current_path} - -mkdir -p build || exit 1 -mkdir -p ${PREFIX} || exit 1 - -cd build -${src_path}/configure --prefix=${PREFIX} --host=x86_64-dragonos || exit 1 -make -j $(nproc) || exit 1 -make DESTDIR=${sys_root} install|| exit 1 -make clean -cd .. -rm -rf build \ No newline at end of file diff --git a/user/port/gcc/11.3.0/.gitignore b/user/port/gcc/11.3.0/.gitignore deleted file mode 100644 index 09cc7ef3..00000000 --- a/user/port/gcc/11.3.0/.gitignore +++ /dev/null @@ -1 +0,0 @@ -build-gcc/ \ No newline at end of file diff --git a/user/port/gcc/11.3.0/build-hosted.sh b/user/port/gcc/11.3.0/build-hosted.sh deleted file mode 100644 index bcb4ca91..00000000 --- a/user/port/gcc/11.3.0/build-hosted.sh +++ /dev/null @@ -1,51 +0,0 @@ -############################################## -# DragonOS hosted gcc build script -# -# This script is used to build userland gcc for DragonOS(Running on Linux) -############################################## - -# 编译前请先设置参数 -sys_root=$DRAGONOS_SYSROOT -gcc_path=请填写gcc的路径 - -# 要安装到的目录 -PREFIX=$HOME/opt/dragonos-host-userspace - - -if [ ! -d ${gcc_path} ]; then - echo "Error: ${gcc_path} not found" - exit 1 -fi - -if [ ! -d ${sys_root} ]; then - echo "Error: ${sys_root} not found" - exit 1 -fi - -# 安装依赖 -# 注意texinfo和binutils的版本是否匹配 -# 注意gmp/mpc/mpfr和gcc/g++的版本是否匹配 -sudo apt-get install -y \ - g++ \ - gcc \ - make \ - texinfo \ - libgmp3-dev \ - libmpc-dev \ - libmpfr-dev \ - flex \ - wget - -mkdir -p build-gcc || exit 1 -mkdir -p ${PREFIX} || exit 1 - -cd build-gcc -${gcc_path}/configure --prefix=${PREFIX} --target=x86_64-dragonos --with-sysroot=${sys_root} --disable-werror --disable-shared --disable-bootstrap --enable-languages=c,c++ || exit 1 -make all-gcc all-target-libgcc -j $(nproc) || exit 1 -make install-gcc install-target-libgcc -j $(nproc) || exit 1 -# 这里会报错,暂时不知道为什么 -# make all-target-libstdc++-v3 -j $(nproc) || exit 1 -# make install-target-libstdc++-v3 -j $(nproc) || exit 1 -make clean -cd .. -rm -rf build-gcc diff --git a/user/port/gmp/6.2.1/build.sh b/user/port/gmp/6.2.1/build.sh deleted file mode 100644 index 3dabc652..00000000 --- a/user/port/gmp/6.2.1/build.sh +++ /dev/null @@ -1,28 +0,0 @@ -# 编译前请先设置参数 -sys_root=$DRAGONOS_SYSROOT -gmp_path=请填写gmp的路径 - -# 要安装到的目录 -PREFIX=/usr - - -if [ ! -d ${gmp_path} ]; then - echo "Error: ${gmp_path} not found" - exit 1 -fi - -if [ ! -d ${sysroot} ]; then - echo "Error: ${sysroot} not found" - exit 1 -fi - -mkdir -p build-gmp || exit 1 -mkdir -p ${PREFIX} || exit 1 - -cd build-gmp -${gmp_path}/configure --prefix=${PREFIX} --host=x86_64-dragonos || exit 1 -make -j $(nproc) || exit 1 -make DESTDIR=${sys_root} install|| exit 1 -make clean -cd .. -rm -rf build-gmp \ No newline at end of file diff --git a/user/port/mpc/1.2.1/build.sh b/user/port/mpc/1.2.1/build.sh deleted file mode 100644 index 32c3abb8..00000000 --- a/user/port/mpc/1.2.1/build.sh +++ /dev/null @@ -1,35 +0,0 @@ -# 编译前请先设置参数 -sys_root=$DRAGONOS_SYSROOT -mpc_path=请填写mpc的路径 - -# 要安装到的目录 -PREFIX=/usr -current_path=$(pwd) - -if [ ! -d ${mpc_path} ]; then - echo "Error: ${mpc_path} not found" - exit 1 -fi - -if [ ! -d ${sysroot} ]; then - echo "Error: ${sysroot} not found" - exit 1 -fi - -cd ${mpc_path} -autoreconf --install || exit 1 -autoconf -sed -i 's/ios[*]/ios* | dragonos* /' build-aux/config.sub - -cd ${current_path} - -mkdir -p build || exit 1 -mkdir -p ${PREFIX} || exit 1 - -cd build -${mpc_path}/configure --prefix=${PREFIX} --host=x86_64-dragonos --target=x86_64-dragonos --with-mpfr=$sys_root/usr --with-gmp=$sys_root/usr || exit 1 -make -j $(nproc) || exit 1 -make DESTDIR=${sys_root} install || exit 1 -make clean -cd .. -rm -rf build \ No newline at end of file diff --git a/user/port/mpfr/4.1.1/build.sh b/user/port/mpfr/4.1.1/build.sh deleted file mode 100644 index 63341cef..00000000 --- a/user/port/mpfr/4.1.1/build.sh +++ /dev/null @@ -1,37 +0,0 @@ - -# 编译前请先设置参数 -sys_root=$DRAGONOS_SYSROOT -src_path=请填写mpfr的路径 - -current_path=$(pwd) -# 要安装到的目录 -PREFIX=/usr - - -if [ ! -d ${src_path} ]; then - echo "Error: ${src_path} not found" - exit 1 -fi - -if [ ! -d ${sysroot} ]; then - echo "Error: ${sysroot} not found" - exit 1 -fi - -cd ${src_path} -autoreconf --install -autoconf -sed -i 's/ios[*]/ios* | dragonos* /' config.sub - -cd ${current_path} - -mkdir -p build || exit 1 -mkdir -p ${PREFIX} || exit 1 - -cd build -${src_path}/configure --prefix=${PREFIX} --host=x86_64-dragonos || exit 1 -make -j $(nproc) || exit 1 -make DESTDIR=${sys_root} install|| exit 1 -make clean -cd .. -rm -rf build \ No newline at end of file diff --git a/user/port/pkg-config.sh b/user/port/pkg-config.sh deleted file mode 100644 index e5de30bd..00000000 --- a/user/port/pkg-config.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -# Fill these in appropriately: -ROOT_PATH=$(dirname $(dirname $(pwd))) -DRAGONOS_SYSROOT=$ROOT_PATH/bin/sysroot - - - -export PKG_CONFIG_SYSROOT_DIR=$DRAGONOS_SYSROOT -export PKG_CONFIG_LIBDIR=$DRAGONOS_SYSROOT/usr/lib/pkgconfig -# TODO: If it works this should probably just be set to the empty string. -# export PKG_CONFIG_PATH=$PKG_CONFIG_LIBDIR -# Use --static here if your OS only has static linking. -# TODO: Perhaps it's a bug in the libraries if their pkg-config files doesn't -# record that only static libraries were built. -# exec pkg-config --static "$@" \ No newline at end of file From 539ee3eaeb83834e020efbb7582ed5ce2e9646ce Mon Sep 17 00:00:00 2001 From: linfeng Date: Mon, 25 Nov 2024 16:28:05 +0800 Subject: [PATCH 6/7] fix(backtrace):Use more reasonable compile options (#1056) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(backtrace):Use more reasonable compile options * 调整代码,同时解决rust analyzer未能提示warning的问题 --------- Co-authored-by: longjin --- kernel/Makefile | 8 +- kernel/crates/unified-init/Cargo.toml | 2 +- kernel/crates/unified-init/src/main.rs | 6 ++ kernel/src/Makefile | 6 +- kernel/src/arch/riscv64/link.ld | 1 + .../riscv64/riscv64gc-unknown-none-elf.json | 2 +- kernel/src/arch/riscv64/syscall/mod.rs | 19 ++-- kernel/src/arch/x86_64/link.lds | 1 + kernel/src/arch/x86_64/syscall/mod.rs | 19 ++-- .../src/arch/x86_64/x86_64-unknown-none.json | 2 +- kernel/src/debug/mod.rs | 1 + kernel/src/debug/panic/hook.rs | 27 +++++ kernel/src/debug/panic/mod.rs | 46 ++++++++ kernel/src/lib.rs | 100 ------------------ kernel/src/syscall/mod.rs | 5 +- 15 files changed, 119 insertions(+), 126 deletions(-) create mode 100644 kernel/src/debug/panic/hook.rs create mode 100644 kernel/src/debug/panic/mod.rs diff --git a/kernel/Makefile b/kernel/Makefile index 4429fb1d..f61030b2 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -33,13 +33,7 @@ endif .PHONY: check check: ECHO -# @echo "Checking kernel... ARCH=$(ARCH)" -# @exit 1 -ifeq ($(ARCH), x86_64) - RUSTFLAGS="$(RUSTFLAGS)" cargo +nightly-2024-11-05 check --workspace $(CARGO_ZBUILD) --message-format=json --target ./src/$(TARGET_JSON) -else ifeq ($(ARCH), riscv64) - RUSTFLAGS="$(RUSTFLAGS)" cargo +nightly-2024-11-05 check --workspace $(CARGO_ZBUILD) --message-format=json --target ./src/$(TARGET_JSON) -endif + $(MAKE) -C src check ARCH=$(ARCH) test: # 测试内核库 diff --git a/kernel/crates/unified-init/Cargo.toml b/kernel/crates/unified-init/Cargo.toml index d52fce58..607896f7 100644 --- a/kernel/crates/unified-init/Cargo.toml +++ b/kernel/crates/unified-init/Cargo.toml @@ -11,4 +11,4 @@ path = "src/main.rs" [dependencies] unified-init-macros = { path = "macros" } linkme = "=0.3.27" -system_error = { path = "../system_error" } \ No newline at end of file +system_error = { path = "../system_error" } diff --git a/kernel/crates/unified-init/src/main.rs b/kernel/crates/unified-init/src/main.rs index a7a4e5db..d67e5fd4 100644 --- a/kernel/crates/unified-init/src/main.rs +++ b/kernel/crates/unified-init/src/main.rs @@ -2,6 +2,8 @@ //! 然后在当前目录执行 `cargo expand --bin unified-init-expand` //! 就可以看到把proc macro展开后的代码了 #![no_std] +#![allow(internal_features)] +#![feature(lang_items)] fn main() { todo!() @@ -14,6 +16,10 @@ pub fn panic(_info: &core::panic::PanicInfo) -> ! { loop {} } +#[cfg(target_os = "none")] +#[lang = "eh_personality"] +unsafe extern "C" fn eh_personality() {} + #[cfg(test)] mod tests { use system_error::SystemError; diff --git a/kernel/src/Makefile b/kernel/src/Makefile index 9028420c..4eb68211 100644 --- a/kernel/src/Makefile +++ b/kernel/src/Makefile @@ -16,7 +16,7 @@ RUSTFLAGS_UNWIND = ifeq ($(UNWIND_ENABLE), yes) CFLAGS_UNWIND = -funwind-tables LDFLAGS_UNWIND = --eh-frame-hdr - RUSTFLAGS_UNWIND = -Cforce-unwind-tables -Clink-arg=-Wl,eh_frame.ld + RUSTFLAGS_UNWIND = -Cforce-unwind-tables -Clink-arg=-Wl,eh_frame.ld -Cpanic=unwind endif RUSTFLAGS += $(RUSTFLAGS_UNWIND) @@ -127,3 +127,7 @@ clean: cd $$subdir && $(MAKE) clean;\ cd .. ;\ done + +.PHONY: check +check: + RUSTFLAGS="$(RUSTFLAGS)" cargo +nightly-2024-11-05 $(CARGO_ZBUILD) check --workspace --message-format=json --target $(TARGET_JSON) \ No newline at end of file diff --git a/kernel/src/arch/riscv64/link.ld b/kernel/src/arch/riscv64/link.ld index bcd47fdd..0f88eaef 100644 --- a/kernel/src/arch/riscv64/link.ld +++ b/kernel/src/arch/riscv64/link.ld @@ -62,6 +62,7 @@ SECTIONS _rodata = .; *(.rodata) *(.rodata.*) + *(.gcc_except_table .gcc_except_table.*) _erodata = .; } diff --git a/kernel/src/arch/riscv64/riscv64gc-unknown-none-elf.json b/kernel/src/arch/riscv64/riscv64gc-unknown-none-elf.json index b474a6fb..f8967529 100644 --- a/kernel/src/arch/riscv64/riscv64gc-unknown-none-elf.json +++ b/kernel/src/arch/riscv64/riscv64gc-unknown-none-elf.json @@ -18,7 +18,7 @@ "std": false, "tier": 2 }, - "panic-strategy": "unwind", + "panic-strategy": "abort", "relocation-model": "static", "supported-sanitizers": [ "shadow-call-stack", diff --git a/kernel/src/arch/riscv64/syscall/mod.rs b/kernel/src/arch/riscv64/syscall/mod.rs index 450c0e85..6f80d244 100644 --- a/kernel/src/arch/riscv64/syscall/mod.rs +++ b/kernel/src/arch/riscv64/syscall/mod.rs @@ -35,10 +35,17 @@ pub(super) fn syscall_handler(syscall_num: usize, frame: &mut TrapFrame) -> () { } let args = [frame.a0, frame.a1, frame.a2, frame.a3, frame.a4, frame.a5]; - syscall_return!( - Syscall::catch_handle(syscall_num, &args, frame) - .unwrap_or_else(|e| e.to_posix_errno() as usize), - frame, - false - ); + let mut syscall_handle = || -> usize { + #[cfg(feature = "backtrace")] + { + Syscall::catch_handle(syscall_num, &args, frame) + .unwrap_or_else(|e| e.to_posix_errno() as usize) + } + #[cfg(not(feature = "backtrace"))] + { + Syscall::handle(syscall_num, &args, frame) + .unwrap_or_else(|e| e.to_posix_errno() as usize) + } + }; + syscall_return!(syscall_handle(), frame, false); } diff --git a/kernel/src/arch/x86_64/link.lds b/kernel/src/arch/x86_64/link.lds index 6371c095..8c9ef16b 100644 --- a/kernel/src/arch/x86_64/link.lds +++ b/kernel/src/arch/x86_64/link.lds @@ -61,6 +61,7 @@ SECTIONS *(.rodata.*) *(.note.gnu.*) *(.fixup) + *(.gcc_except_table .gcc_except_table.*) _erodata = .; } diff --git a/kernel/src/arch/x86_64/syscall/mod.rs b/kernel/src/arch/x86_64/syscall/mod.rs index df656b3b..788517b0 100644 --- a/kernel/src/arch/x86_64/syscall/mod.rs +++ b/kernel/src/arch/x86_64/syscall/mod.rs @@ -117,12 +117,19 @@ pub extern "sysv64" fn syscall_handler(frame: &mut TrapFrame) { } _ => {} } - syscall_return!( - Syscall::catch_handle(syscall_num, &args, frame) - .unwrap_or_else(|e| e.to_posix_errno() as usize) as u64, - frame, - show - ); + let mut syscall_handle = || -> u64 { + #[cfg(feature = "backtrace")] + { + Syscall::catch_handle(syscall_num, &args, frame) + .unwrap_or_else(|e| e.to_posix_errno() as usize) as u64 + } + #[cfg(not(feature = "backtrace"))] + { + Syscall::handle(syscall_num, &args, frame) + .unwrap_or_else(|e| e.to_posix_errno() as usize) as u64 + } + }; + syscall_return!(syscall_handle(), frame, show); } /// 系统调用初始化 diff --git a/kernel/src/arch/x86_64/x86_64-unknown-none.json b/kernel/src/arch/x86_64/x86_64-unknown-none.json index c676f377..fbc13a4a 100644 --- a/kernel/src/arch/x86_64/x86_64-unknown-none.json +++ b/kernel/src/arch/x86_64/x86_64-unknown-none.json @@ -11,5 +11,5 @@ "executables": true, "features": "-mmx,-sse,+soft-float", "disable-redzone": true, - "panic-strategy": "unwind" + "panic-strategy": "abort" } diff --git a/kernel/src/debug/mod.rs b/kernel/src/debug/mod.rs index 085d7051..dcd4c86a 100644 --- a/kernel/src/debug/mod.rs +++ b/kernel/src/debug/mod.rs @@ -1,3 +1,4 @@ pub mod jump_label; pub mod klog; pub mod kprobe; +pub mod panic; diff --git a/kernel/src/debug/panic/hook.rs b/kernel/src/debug/panic/hook.rs new file mode 100644 index 00000000..c339a196 --- /dev/null +++ b/kernel/src/debug/panic/hook.rs @@ -0,0 +1,27 @@ +use unwinding::abi::{UnwindContext, UnwindReasonCode, _Unwind_GetIP}; +use unwinding::panic::UserUnwindTrace; + +extern "C" { + fn lookup_kallsyms(addr: u64, level: i32) -> i32; +} + +/// User hook for unwinding +/// +/// During stack backtrace, the user can print the function location of the current stack frame. +pub struct Tracer; +pub struct CallbackData { + pub counter: usize, +} +impl UserUnwindTrace for Tracer { + type Arg = CallbackData; + + fn trace(ctx: &UnwindContext<'_>, arg: *mut Self::Arg) -> UnwindReasonCode { + let data = unsafe { &mut *(arg) }; + data.counter += 1; + let pc = _Unwind_GetIP(ctx); + unsafe { + lookup_kallsyms(pc as u64, data.counter as i32); + } + UnwindReasonCode::NO_REASON + } +} diff --git a/kernel/src/debug/panic/mod.rs b/kernel/src/debug/panic/mod.rs new file mode 100644 index 00000000..245058fa --- /dev/null +++ b/kernel/src/debug/panic/mod.rs @@ -0,0 +1,46 @@ +#[cfg(feature = "backtrace")] +mod hook; +use core::panic::PanicInfo; + +/// 全局的panic处理函数 +/// +#[cfg(target_os = "none")] +#[panic_handler] +#[no_mangle] +pub fn panic(info: &PanicInfo) -> ! { + use log::error; + + use crate::process; + + error!("Kernel Panic Occurred."); + + match info.location() { + Some(loc) => { + println!( + "Location:\n\tFile: {}\n\tLine: {}, Column: {}", + loc.file(), + loc.line(), + loc.column() + ); + } + None => { + println!("No location info"); + } + } + println!("Message:\n\t{}", info.message()); + #[cfg(feature = "backtrace")] + { + let mut data = hook::CallbackData { counter: 0 }; + println!("Rust Panic Backtrace:"); + let _res = unwinding::panic::begin_panic_with_hook::( + alloc::boxed::Box::new(()), + &mut data, + ); + // log::error!("panic unreachable: {:?}", res.0); + } + println!( + "Current PCB:\n\t{:?}", + process::ProcessManager::current_pcb() + ); + process::ProcessManager::exit(usize::MAX); +} diff --git a/kernel/src/lib.rs b/kernel/src/lib.rs index c650b9d5..c6aa5b49 100644 --- a/kernel/src/lib.rs +++ b/kernel/src/lib.rs @@ -37,8 +37,6 @@ #[macro_use] extern crate std; -use core::panic::PanicInfo; - /// 导出x86_64架构相关的代码,命名为arch模块 #[macro_use] mod arch; @@ -94,104 +92,6 @@ extern crate wait_queue_macros; use crate::mm::allocator::kernel_allocator::KernelAllocator; -#[cfg(feature = "backtrace")] -use unwinding::{ - abi::{UnwindContext, UnwindReasonCode, _Unwind_GetIP}, - panic::UserUnwindTrace, -}; - -extern "C" { - fn lookup_kallsyms(addr: u64, level: i32) -> i32; -} - // 声明全局的分配器 #[cfg_attr(not(test), global_allocator)] pub static KERNEL_ALLOCATOR: KernelAllocator = KernelAllocator; - -/// 全局的panic处理函数 -/// -/// How to use unwinding lib: -/// -/// ``` -/// pub fn test_unwind() { -/// struct UnwindTest; -/// impl Drop for UnwindTest { -/// fn drop(&mut self) { -/// println!("Drop UnwindTest"); -/// } -/// } -/// let res1 = unwinding::panic::catch_unwind(|| { -/// let _unwind_test = UnwindTest; -/// println!("Test panic..."); -/// panic!("Test panic"); -/// }); -/// assert_eq!(res1.is_err(), true); -/// let res2 = unwinding::panic::catch_unwind(|| { -/// let _unwind_test = UnwindTest; -/// println!("Test no panic..."); -/// 0 -/// }); -/// assert_eq!(res2.is_ok(), true); -/// } -/// ``` -/// -#[cfg(target_os = "none")] -#[panic_handler] -#[no_mangle] -pub fn panic(info: &PanicInfo) -> ! { - use log::error; - - error!("Kernel Panic Occurred."); - - match info.location() { - Some(loc) => { - println!( - "Location:\n\tFile: {}\n\tLine: {}, Column: {}", - loc.file(), - loc.line(), - loc.column() - ); - } - None => { - println!("No location info"); - } - } - println!("Message:\n\t{}", info.message()); - #[cfg(feature = "backtrace")] - { - let mut data = CallbackData { counter: 0 }; - println!("Rust Panic Backtrace:"); - let res = unwinding::panic::begin_panic_with_hook::( - alloc::boxed::Box::new(()), - &mut data, - ); - log::error!("panic unreachable: {:?}", res.0); - } - println!( - "Current PCB:\n\t{:?}", - process::ProcessManager::current_pcb() - ); - process::ProcessManager::exit(usize::MAX); - loop {} -} - -/// User hook for unwinding -/// -/// During stack backtrace, the user can print the function location of the current stack frame. -struct Tracer; -struct CallbackData { - counter: usize, -} -impl UserUnwindTrace for Tracer { - type Arg = CallbackData; - - fn trace(ctx: &UnwindContext<'_>, arg: *mut Self::Arg) -> UnwindReasonCode { - let data = unsafe { &mut *(arg) }; - data.counter += 1; - let pc = _Unwind_GetIP(ctx); - unsafe { - lookup_kallsyms(pc as u64, data.counter as i32); - } - UnwindReasonCode::NO_REASON - } -} diff --git a/kernel/src/syscall/mod.rs b/kernel/src/syscall/mod.rs index 9157fcfe..45dd2efa 100644 --- a/kernel/src/syscall/mod.rs +++ b/kernel/src/syscall/mod.rs @@ -1,6 +1,5 @@ use core::{ ffi::{c_int, c_void}, - hint::spin_loop, sync::atomic::{AtomicBool, Ordering}, }; @@ -11,7 +10,6 @@ use crate::{ libs::{futex::constant::FutexFlag, rand::GRandFlags}, mm::{page::PAGE_4K_SIZE, syscall::MremapFlags}, net::syscall::MsgHdr, - process, process::{ fork::KernelCloneArgs, resource::{RLimit64, RUsage}, @@ -79,6 +77,7 @@ impl Syscall { /// 系统调用分发器,用于分发系统调用。 /// /// 与[handle]不同,这个函数会捕获系统调用处理函数的panic,返回错误码。 + #[cfg(feature = "backtrace")] pub fn catch_handle( syscall_num: usize, args: &[usize], @@ -86,7 +85,7 @@ impl Syscall { ) -> Result { let res = unwinding::panic::catch_unwind(|| Self::handle(syscall_num, args, frame)); res.unwrap_or_else(|_| loop { - spin_loop(); + core::hint::spin_loop(); }) } /// @brief 系统调用分发器,用于分发系统调用。 From e8b1db320d9014e92c1f5272c7a7e6dafac08b90 Mon Sep 17 00:00:00 2001 From: LoGin Date: Wed, 27 Nov 2024 01:30:31 +0800 Subject: [PATCH 7/7] chore: Bump dadk to 0.2.0 (#1058) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # 概述 把dadk版本升级到0.2.0 dadk 0.2.0能够提升编译速度,并且支持使用dadk对内核进行profiling。 新版dadk的文档: https://docs.dragonos.org.cn/p/dadk/ # 注意 这是一个breaking change,升级后,将无法使用dadk 0.2.0去编译旧的项目。如有需要,请手动降级到dadk 0.1.11: ```shell cargo install --git https://git.mirrors.dragonos.org.cn/DragonOS-Community/DADK --tag v0.1.11 ``` # 更改列表 * chore: 把管理用户程序编译的dadk配置文件改为新格式的 * feat: 使用新版dadk来创建\挂载\卸载磁盘镜像 * chore: bump dadk min version to 0.2.0 * chore: fix ci * chore: 更新github ci镜像到1.7 * doc: 添加文档 --------- Co-Authored-by: xuzihao Signed-off-by: longjin --- .github/workflows/makefile.yml | 89 ++++++++--------- Makefile | 46 +++++---- config/rootfs.toml | 14 +++ dadk-manifest.toml | 24 +++++ docs/kernel/debug/index.rst | 1 + .../debug/profiling-kernel-with-dadk.md | 95 +++++++++++++++++++ docs/userland/appdev/c-cpp-quick-start.md | 3 + docs/userland/appdev/index.rst | 3 +- docs/userland/appdev/rust-quick-start.md | 11 +-- env.mk | 3 + tools/BUILD_CONTAINER_VERSION | 2 +- tools/check_arch.sh | 40 ++++++++ tools/mount_virt_disk.sh | 27 ------ tools/run-qemu.sh | 2 +- tools/umount_virt_disk.sh | 19 ---- tools/write_disk_image.sh | 66 +++++-------- user/Makefile | 12 +-- user/dadk/config/about.dadk | 25 ----- user/dadk/config/about.toml | 36 +++++++ user/dadk/config/clear-0.1.0.dadk | 23 ----- user/dadk/config/clear-0.1.0.toml | 44 +++++++++ user/dadk/config/core_utils-9.4.0.dadk | 27 ------ user/dadk/config/core_utils-9.4.0.toml | 39 ++++++++ user/dadk/config/dmesg-0.1.0.dadk | 24 ----- user/dadk/config/dmesg-0.1.0.toml | 47 +++++++++ user/dadk/config/dog_0_1_0.dadk | 34 ------- user/dadk/config/dog_0_1_0.toml | 51 ++++++++++ user/dadk/config/dragon_reach-0.1.0.dadk | 24 ----- user/dadk/config/dragon_reach-0.1.0.toml | 49 ++++++++++ user/dadk/config/held-0.1.0.dadk | 24 ----- user/dadk/config/held-0.1.0.toml | 49 ++++++++++ user/dadk/config/http_server-0.1.0.dadk | 24 ----- user/dadk/config/http_server-0.1.0.toml | 40 ++++++++ user/dadk/config/musl_1_2_4.dadk | 28 ------ user/dadk/config/musl_1_2_4.toml | 40 ++++++++ user/dadk/config/nova_shell-0.1.0.dadk | 24 ----- user/dadk/config/nova_shell-0.1.0.toml | 44 +++++++++ user/dadk/config/riscv_init-0.1.0.dadk | 27 ------ user/dadk/config/riscv_init-0.1.0.toml | 40 ++++++++ user/dadk/config/tar_1_35.dadk | 25 ----- user/dadk/config/tar_1_35.toml | 39 ++++++++ user/dadk/config/test_alarm_0_1_0.dadk | 27 ------ user/dadk/config/test_alarm_0_1_0.toml | 41 ++++++++ user/dadk/config/test_backlog_0_1_0.dadk | 27 ------ user/dadk/config/test_backlog_0_1_0.toml | 40 ++++++++ user/dadk/config/test_bind-0.1.0.dadk | 24 ----- user/dadk/config/test_bind-0.1.0.toml | 40 ++++++++ user/dadk/config/test_blockcache_0_1_0.dadk | 25 ----- user/dadk/config/test_blockcache_0_1_0.toml | 42 ++++++++ user/dadk/config/test_chown_0_1_0.dadk | 29 ------ user/dadk/config/test_chown_0_1_0.toml | 46 +++++++++ user/dadk/config/test_cred-0.1.0.dadk | 23 ----- user/dadk/config/test_cred-0.1.0.toml | 51 ++++++++++ user/dadk/config/test_dup3_0_1_0.dadk | 23 ----- user/dadk/config/test_dup3_0_1_0.toml | 51 ++++++++++ user/dadk/config/test_ebpf_0_1_0.dadk | 23 ----- user/dadk/config/test_ebpf_0_1_0.toml | 37 ++++++++ user/dadk/config/test_eventfd_0_1_0.dadk | 23 ----- user/dadk/config/test_eventfd_0_1_0.toml | 32 +++++++ user/dadk/config/test_filemap-0.1.0.dadk | 23 ----- user/dadk/config/test_filemap-0.1.0.toml | 36 +++++++ .../config/test_for_robustfutex_0_1_0.dadk | 25 ----- .../config/test_for_robustfutex_0_1_0.toml | 36 +++++++ user/dadk/config/test_fstat-0.1.0.dadk | 23 ----- user/dadk/config/test_fstat-0.1.0.toml | 36 +++++++ user/dadk/config/test_fstatfs_0_1_0.dadk | 27 ------ user/dadk/config/test_fstatfs_0_1_0.toml | 41 ++++++++ user/dadk/config/test_gettimeofday-0.1.0.dadk | 24 ----- user/dadk/config/test_gettimeofday-0.1.0.toml | 37 ++++++++ user/dadk/config/test_kvm_0_1_0.dadk | 25 ----- user/dadk/config/test_kvm_0_1_0.toml | 46 +++++++++ user/dadk/config/test_lo_0_1_0.dadk | 27 ------ user/dadk/config/test_lo_0_1_0.toml | 36 +++++++ user/dadk/config/test_mkfifo-0.1.0.dadk | 23 ----- user/dadk/config/test_mkfifo-0.1.0.toml | 36 +++++++ user/dadk/config/test_mount_1_0_0.dadk | 23 ----- user/dadk/config/test_mount_1_0_0.toml | 51 ++++++++++ user/dadk/config/test_namespace.dadk | 25 ----- user/dadk/config/test_namespace.toml | 52 ++++++++++ user/dadk/config/test_overlayfs.dadk | 25 ----- user/dadk/config/test_overlayfs.toml | 46 +++++++++ user/dadk/config/test_pty-0.1.0.dadk | 24 ----- user/dadk/config/test_pty-0.1.0.toml | 46 +++++++++ user/dadk/config/test_ramfs-0.1.0.dadk | 24 ----- user/dadk/config/test_ramfs-0.1.0.toml | 36 +++++++ user/dadk/config/test_shm-0.1.0.dadk | 24 ----- user/dadk/config/test_shm-0.1.0.toml | 52 ++++++++++ user/dadk/config/test_sigint-0.1.0.dadk | 24 ----- user/dadk/config/test_sigint-0.1.0.toml | 36 +++++++ user/dadk/config/test_signal-0.1.0.dadk | 24 ----- user/dadk/config/test_signal-0.1.0.toml | 41 ++++++++ user/dadk/config/test_socket-0.1.0.dadk | 23 ----- user/dadk/config/test_socket-0.1.0.toml | 36 +++++++ user/dadk/config/test_sqlite3-3.42.0.dadk | 24 ----- user/dadk/config/test_sqlite3-3.42.0.toml | 52 ++++++++++ user/dadk/config/test_statfs_0_1_0.dadk | 27 ------ user/dadk/config/test_statfs_0_1_0.toml | 41 ++++++++ user/dadk/config/test_statx_0_1_0.dadk | 26 ----- user/dadk/config/test_statx_0_1_0.toml | 41 ++++++++ user/dadk/config/test_symlink_0_1_0.dadk | 29 ------ user/dadk/config/test_symlink_0_1_0.toml | 41 ++++++++ user/dadk/config/test_tokio-0.1.0.dadk | 23 ----- user/dadk/config/test_tokio-0.1.0.toml | 41 ++++++++ user/dadk/config/test_uart-0.1.0.dadk | 24 ----- user/dadk/config/test_uart-0.1.0.toml | 46 +++++++++ user/dadk/config/test_utimensat_0_1_0.dadk | 23 ----- user/dadk/config/test_utimensat_0_1_0.toml | 36 +++++++ user/dadk/config/user_manage-0.1.0.dadk | 24 ----- user/dadk/config/user_manage-0.1.0.toml | 36 +++++++ .../sysconfig/home/reach/system/shell.service | 8 -- 110 files changed, 2216 insertions(+), 1327 deletions(-) create mode 100644 config/rootfs.toml create mode 100644 dadk-manifest.toml create mode 100644 docs/kernel/debug/profiling-kernel-with-dadk.md create mode 100644 tools/check_arch.sh delete mode 100755 tools/mount_virt_disk.sh delete mode 100755 tools/umount_virt_disk.sh delete mode 100644 user/dadk/config/about.dadk create mode 100644 user/dadk/config/about.toml delete mode 100644 user/dadk/config/clear-0.1.0.dadk create mode 100644 user/dadk/config/clear-0.1.0.toml delete mode 100644 user/dadk/config/core_utils-9.4.0.dadk create mode 100644 user/dadk/config/core_utils-9.4.0.toml delete mode 100644 user/dadk/config/dmesg-0.1.0.dadk create mode 100644 user/dadk/config/dmesg-0.1.0.toml delete mode 100644 user/dadk/config/dog_0_1_0.dadk create mode 100644 user/dadk/config/dog_0_1_0.toml delete mode 100644 user/dadk/config/dragon_reach-0.1.0.dadk create mode 100644 user/dadk/config/dragon_reach-0.1.0.toml delete mode 100644 user/dadk/config/held-0.1.0.dadk create mode 100644 user/dadk/config/held-0.1.0.toml delete mode 100644 user/dadk/config/http_server-0.1.0.dadk create mode 100644 user/dadk/config/http_server-0.1.0.toml delete mode 100644 user/dadk/config/musl_1_2_4.dadk create mode 100644 user/dadk/config/musl_1_2_4.toml delete mode 100644 user/dadk/config/nova_shell-0.1.0.dadk create mode 100644 user/dadk/config/nova_shell-0.1.0.toml delete mode 100644 user/dadk/config/riscv_init-0.1.0.dadk create mode 100644 user/dadk/config/riscv_init-0.1.0.toml delete mode 100644 user/dadk/config/tar_1_35.dadk create mode 100644 user/dadk/config/tar_1_35.toml delete mode 100644 user/dadk/config/test_alarm_0_1_0.dadk create mode 100644 user/dadk/config/test_alarm_0_1_0.toml delete mode 100644 user/dadk/config/test_backlog_0_1_0.dadk create mode 100644 user/dadk/config/test_backlog_0_1_0.toml delete mode 100644 user/dadk/config/test_bind-0.1.0.dadk create mode 100644 user/dadk/config/test_bind-0.1.0.toml delete mode 100644 user/dadk/config/test_blockcache_0_1_0.dadk create mode 100644 user/dadk/config/test_blockcache_0_1_0.toml delete mode 100644 user/dadk/config/test_chown_0_1_0.dadk create mode 100644 user/dadk/config/test_chown_0_1_0.toml delete mode 100644 user/dadk/config/test_cred-0.1.0.dadk create mode 100644 user/dadk/config/test_cred-0.1.0.toml delete mode 100644 user/dadk/config/test_dup3_0_1_0.dadk create mode 100644 user/dadk/config/test_dup3_0_1_0.toml delete mode 100644 user/dadk/config/test_ebpf_0_1_0.dadk create mode 100644 user/dadk/config/test_ebpf_0_1_0.toml delete mode 100644 user/dadk/config/test_eventfd_0_1_0.dadk create mode 100644 user/dadk/config/test_eventfd_0_1_0.toml delete mode 100644 user/dadk/config/test_filemap-0.1.0.dadk create mode 100644 user/dadk/config/test_filemap-0.1.0.toml delete mode 100644 user/dadk/config/test_for_robustfutex_0_1_0.dadk create mode 100644 user/dadk/config/test_for_robustfutex_0_1_0.toml delete mode 100644 user/dadk/config/test_fstat-0.1.0.dadk create mode 100644 user/dadk/config/test_fstat-0.1.0.toml delete mode 100644 user/dadk/config/test_fstatfs_0_1_0.dadk create mode 100644 user/dadk/config/test_fstatfs_0_1_0.toml delete mode 100644 user/dadk/config/test_gettimeofday-0.1.0.dadk create mode 100644 user/dadk/config/test_gettimeofday-0.1.0.toml delete mode 100644 user/dadk/config/test_kvm_0_1_0.dadk create mode 100644 user/dadk/config/test_kvm_0_1_0.toml delete mode 100644 user/dadk/config/test_lo_0_1_0.dadk create mode 100644 user/dadk/config/test_lo_0_1_0.toml delete mode 100644 user/dadk/config/test_mkfifo-0.1.0.dadk create mode 100644 user/dadk/config/test_mkfifo-0.1.0.toml delete mode 100644 user/dadk/config/test_mount_1_0_0.dadk create mode 100644 user/dadk/config/test_mount_1_0_0.toml delete mode 100644 user/dadk/config/test_namespace.dadk create mode 100644 user/dadk/config/test_namespace.toml delete mode 100644 user/dadk/config/test_overlayfs.dadk create mode 100644 user/dadk/config/test_overlayfs.toml delete mode 100644 user/dadk/config/test_pty-0.1.0.dadk create mode 100644 user/dadk/config/test_pty-0.1.0.toml delete mode 100644 user/dadk/config/test_ramfs-0.1.0.dadk create mode 100644 user/dadk/config/test_ramfs-0.1.0.toml delete mode 100644 user/dadk/config/test_shm-0.1.0.dadk create mode 100644 user/dadk/config/test_shm-0.1.0.toml delete mode 100644 user/dadk/config/test_sigint-0.1.0.dadk create mode 100644 user/dadk/config/test_sigint-0.1.0.toml delete mode 100644 user/dadk/config/test_signal-0.1.0.dadk create mode 100644 user/dadk/config/test_signal-0.1.0.toml delete mode 100644 user/dadk/config/test_socket-0.1.0.dadk create mode 100644 user/dadk/config/test_socket-0.1.0.toml delete mode 100644 user/dadk/config/test_sqlite3-3.42.0.dadk create mode 100644 user/dadk/config/test_sqlite3-3.42.0.toml delete mode 100644 user/dadk/config/test_statfs_0_1_0.dadk create mode 100644 user/dadk/config/test_statfs_0_1_0.toml delete mode 100644 user/dadk/config/test_statx_0_1_0.dadk create mode 100644 user/dadk/config/test_statx_0_1_0.toml delete mode 100644 user/dadk/config/test_symlink_0_1_0.dadk create mode 100644 user/dadk/config/test_symlink_0_1_0.toml delete mode 100644 user/dadk/config/test_tokio-0.1.0.dadk create mode 100644 user/dadk/config/test_tokio-0.1.0.toml delete mode 100644 user/dadk/config/test_uart-0.1.0.dadk create mode 100644 user/dadk/config/test_uart-0.1.0.toml delete mode 100644 user/dadk/config/test_utimensat_0_1_0.dadk create mode 100644 user/dadk/config/test_utimensat_0_1_0.toml delete mode 100644 user/dadk/config/user_manage-0.1.0.dadk create mode 100644 user/dadk/config/user_manage-0.1.0.toml delete mode 100644 user/sysconfig/home/reach/system/shell.service diff --git a/.github/workflows/makefile.yml b/.github/workflows/makefile.yml index ecd368a9..f9113a12 100644 --- a/.github/workflows/makefile.yml +++ b/.github/workflows/makefile.yml @@ -2,96 +2,97 @@ name: Build Check on: push: - branches: [ "master", "feat-*", "fix-*"] + branches: ["master", "feat-*", "fix-*"] pull_request: - branches: [ "master", "feat-*", "fix-*"] + branches: ["master", "feat-*", "fix-*"] jobs: - format-check: name: Format check ${{ matrix.arch }} runs-on: ubuntu-latest continue-on-error: true - container: dragonos/dragonos-dev:v1.6 + container: dragonos/dragonos-dev:v1.7 strategy: matrix: arch: [x86_64, riscv64] steps: - - run: echo "Running in dragonos/dragonos-dev:v1.6" - - uses: actions/checkout@v3 + - run: echo "Running in dragonos/dragonos-dev:v1.7" + - uses: actions/checkout@v3 - - name: Format check - env: + - name: Format check + env: ARCH: ${{ matrix.arch }} HOME: /root - shell: bash -ileo pipefail {0} - run: | - printf "\n" >> kernel/src/include/bindings/bindings.rs - FMT_CHECK=1 make fmt - + shell: bash -ileo pipefail {0} + run: | + printf "\n" >> kernel/src/include/bindings/bindings.rs + sed -i 's/arch = ".*"/arch = "${{ matrix.arch }}"/' dadk-manifest.toml + FMT_CHECK=1 make fmt + kernel-static-test: name: Kernel static test ${{ matrix.arch }} runs-on: ubuntu-latest continue-on-error: true - container: dragonos/dragonos-dev:v1.6 + container: dragonos/dragonos-dev:v1.7 strategy: matrix: arch: [x86_64, riscv64] steps: - - run: echo "Running in dragonos/dragonos-dev:v1.6" + - run: echo "Running in dragonos/dragonos-dev:v1.7" - - uses: actions/checkout@v3 + - uses: actions/checkout@v3 - - name: Run kernel static test - shell: bash -ileo pipefail {0} - env: + - name: Run kernel static test + shell: bash -ileo pipefail {0} + env: ARCH: ${{ matrix.arch }} HOME: /root - run: bash -c "source /root/.cargo/env && cd kernel && make test && make test-rbpf" + 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.6 + container: dragonos/dragonos-dev:v1.7 steps: - - run: echo "Running in dragonos/dragonos-dev:v1.6" + - run: echo "Running in dragonos/dragonos-dev:v1.7" - - uses: actions/checkout@v3 - - name: build the DragonOS - env: + - uses: actions/checkout@v3 + - name: build the DragonOS + env: ARCH: x86_64 HOME: /root - shell: bash -ileo pipefail {0} + shell: bash -ileo pipefail {0} - run: | - source ~/.bashrc - source ~/.cargo/env - export DragonOS_GCC=$HOME/opt/dragonos-gcc/gcc-x86_64-unknown-none/bin - - make -j $(nproc) + run: | + source ~/.bashrc + source ~/.cargo/env + export DragonOS_GCC=$HOME/opt/dragonos-gcc/gcc-x86_64-unknown-none/bin + sed -i 's/arch = ".*"/arch = "${{ env.ARCH }}"/' dadk-manifest.toml + + make all -j $(nproc) build-riscv64: - runs-on: ubuntu-latest - container: dragonos/dragonos-dev:v1.6 + container: dragonos/dragonos-dev:v1.7 steps: - - run: echo "Running in dragonos/dragonos-dev:v1.6" + - run: echo "Running in dragonos/dragonos-dev:v1.7" - - uses: actions/checkout@v3 - with: - submodules: 'recursive' + - uses: actions/checkout@v3 + with: + submodules: "recursive" - - name: build the DragonOS - shell: bash -ileo pipefail {0} - env: + - name: build the DragonOS + shell: bash -ileo pipefail {0} + env: ARCH: riscv64 HOME: /root - run: source ~/.bashrc && source ~/.cargo/env && make kernel -j $(nproc) - + run: | + source ~/.bashrc && source ~/.cargo/env + sed -i 's/arch = ".*"/arch = "${{ env.ARCH }}"/' dadk-manifest.toml + make kernel -j $(nproc) diff --git a/Makefile b/Makefile index 74a5dc5a..fe38c3c5 100644 --- a/Makefile +++ b/Makefile @@ -34,19 +34,22 @@ else FMT_CHECK= endif +# Check if ARCH matches the arch field in dadk-manifest.toml +check_arch: + @bash tools/check_arch.sh .PHONY: all all: kernel user .PHONY: kernel -kernel: +kernel: check_arch mkdir -p bin/kernel/ $(MAKE) -C ./kernel all ARCH=$(ARCH) || (sh -c "echo 内核编译失败" && exit 1) .PHONY: user -user: +user: check_arch $(MAKE) -C ./user all ARCH=$(ARCH) || (sh -c "echo 用户程序编译失败" && exit 1) .PHONY: clean @@ -61,11 +64,6 @@ clean: ECHO: @echo "$@" -cppcheck-xml: - cppcheck kernel user --platform=unix64 --std=c11 -I user/libs/ -I=kernel/ --force -j $(NPROCS) --xml 2> cppcheck.xml - -cppcheck: - cppcheck kernel user --platform=unix64 --std=c11 -I user/libs/ -I=kernel/ --force -j $(NPROCS) docs: ECHO bash -c "cd docs && make html && cd .." @@ -81,74 +79,74 @@ else endif # 写入磁盘镜像 -write_diskimage: +write_diskimage: check_arch @echo "write_diskimage arch=$(ARCH)" - bash -c "export ARCH=$(ARCH); cd tools && bash grub_auto_install.sh && sudo ARCH=$(ARCH) bash $(ROOT_PATH)/tools/write_disk_image.sh --bios=legacy && cd .." + bash -c "export ARCH=$(ARCH); cd tools && bash grub_auto_install.sh && sudo DADK=$(DADK) ARCH=$(ARCH) bash $(ROOT_PATH)/tools/write_disk_image.sh --bios=legacy && cd .." # 写入磁盘镜像(uefi) -write_diskimage-uefi: - bash -c "export ARCH=$(ARCH); cd tools && bash grub_auto_install.sh && sudo ARCH=$(ARCH) bash $(ROOT_PATH)/tools/write_disk_image.sh --bios=uefi && cd .." +write_diskimage-uefi: check_arch + bash -c "export ARCH=$(ARCH); cd tools && bash grub_auto_install.sh && sudo DADK=$(DADK) ARCH=$(ARCH) bash $(ROOT_PATH)/tools/write_disk_image.sh --bios=uefi && cd .." # 不编译,直接启动QEMU -qemu: +qemu: check_arch sh -c "cd tools && bash run-qemu.sh --bios=legacy --display=window && cd .." # 不编译,直接启动QEMU,不显示图像 -qemu-nographic: +qemu-nographic: check_arch sh -c "cd tools && bash run-qemu.sh --bios=legacy --display=nographic && cd .." # 不编译,直接启动QEMU(UEFI) -qemu-uefi: +qemu-uefi: check_arch sh -c "cd tools && bash run-qemu.sh --bios=uefi --display=window && cd .." # 不编译,直接启动QEMU,使用VNC Display作为图像输出 -qemu-vnc: +qemu-vnc: check_arch sh -c "cd tools && bash run-qemu.sh --bios=legacy --display=vnc && cd .." # 不编译,直接启动QEMU(UEFI),使用VNC Display作为图像输出 -qemu-uefi-vnc: +qemu-uefi-vnc: check_arch sh -c "cd tools && bash run-qemu.sh --bios=uefi --display=vnc && cd .." # 编译并写入磁盘镜像 -build: +build: check_arch $(MAKE) all -j $(NPROCS) $(MAKE) write_diskimage || exit 1 # 在docker中编译,并写入磁盘镜像 -docker: +docker: check_arch @echo "使用docker构建" sudo bash tools/build_in_docker.sh || exit 1 $(MAKE) write_diskimage || exit 1 # uefi方式启动 -run-uefi: +run-uefi: check_arch $(MAKE) all -j $(NPROCS) $(MAKE) write_diskimage-uefi || exit 1 $(MAKE) qemu-uefi # 编译并启动QEMU -run: +run: check_arch $(MAKE) all -j $(NPROCS) $(MAKE) write_diskimage || exit 1 $(MAKE) qemu # uefi方式启动,使用VNC Display作为图像输出 -run-uefi-vnc: +run-uefi-vnc: check_arch $(MAKE) all -j $(NPROCS) $(MAKE) write_diskimage-uefi || exit 1 $(MAKE) qemu-uefi-vnc # 编译并启动QEMU,使用VNC Display作为图像输出 -run-vnc: +run-vnc: check_arch $(MAKE) all -j $(NPROCS) $(MAKE) write_diskimage || exit 1 $(MAKE) qemu-vnc # 在docker中编译,并启动QEMU -run-docker: +run-docker: check_arch @echo "使用docker构建并运行" sudo bash tools/build_in_docker.sh || exit 1 $(MAKE) write_diskimage || exit 1 $(MAKE) qemu -fmt: +fmt: check_arch @echo "格式化代码" FMT_CHECK=$(FMT_CHECK) $(MAKE) fmt -C kernel FMT_CHECK=$(FMT_CHECK) $(MAKE) fmt -C user diff --git a/config/rootfs.toml b/config/rootfs.toml new file mode 100644 index 00000000..03ff2c9f --- /dev/null +++ b/config/rootfs.toml @@ -0,0 +1,14 @@ +[metadata] +# Filesystem type (options: `fat32`) +fs_type = "fat32" +# Size of the rootfs disk image (eg, `1G`, `1024M`) +size = "1G" + +[partition] +# Partition type (options: "none", "mbr", "gpt") +# +# If "none" is specified, no partition table will be created, +# and the entire disk will be treated as a single partition. +# +# Note that the "none" option is incompatible with GRUB boot. +type = "mbr" diff --git a/dadk-manifest.toml b/dadk-manifest.toml new file mode 100644 index 00000000..bbb88120 --- /dev/null +++ b/dadk-manifest.toml @@ -0,0 +1,24 @@ +# DADK 总控文件 + +[metadata] +# Target architecture. Options: x86_64, riscv64 +arch = "x86_64" + +# Hypervisor config path +hypervisor-config = "config/hypervisor.toml" + +# RootFS config path +rootfs-config = "config/rootfs.toml" + +# Boot config path +boot-config = "config/boot.toml" + +# System root directory folder (DADK will copy the files in this directory to the root directory of the disk image) +sysroot-dir = "bin/sysroot" + +# DADK Root Cache directory path +cache-root-dir = "bin/dadk_cache" + +# User configuration directory path +# 这个字段只是临时用于兼容旧版本,v0.2版本重构完成后会删除 +user-config-dir = "user/dadk/config" diff --git a/docs/kernel/debug/index.rst b/docs/kernel/debug/index.rst index 042b9b18..3994ed04 100644 --- a/docs/kernel/debug/index.rst +++ b/docs/kernel/debug/index.rst @@ -9,3 +9,4 @@ traceback debug-kernel-with-gdb + profiling-kernel-with-dadk diff --git a/docs/kernel/debug/profiling-kernel-with-dadk.md b/docs/kernel/debug/profiling-kernel-with-dadk.md new file mode 100644 index 00000000..ba24b36f --- /dev/null +++ b/docs/kernel/debug/profiling-kernel-with-dadk.md @@ -0,0 +1,95 @@ +# 使用DADK对内核进行性能分析 + +## 1. 概述 + +本文将教你使用DADK,对DragonOS内核进行性能分析,以识别和解决潜在的性能瓶颈。 + +### 1.1 准备工作 + +::: {note} +在开始之前,请确保你已经安装了DADK,并且已经配置好了DragonOS内核的编译环境。 +::: + +### 1.2 什么是火焰图? + +如果你没有听说过火焰图,可以先阅读这篇文章:[《如何读懂火焰图?- 阮一峰》](https://www.ruanyifeng.com/blog/2017/09/flame-graph.html) + +简单的说,火焰图是基于性能采样结果产生的 SVG 图片,用来展示 CPU 的调用栈。 + +![](https://web-static2.dragonos.org.cn//longjin/flame2.svg?imageSlim) + +x 轴表示抽样数,如果一个函数在 x 轴占据的宽度越宽,就表示它被抽到的次数多,即执行的时间长。注意,x 轴不代表时间,而是所有的调用栈合并后,按字母顺序排列的。 + +火焰图就是看顶层的哪个函数占据的宽度最大。只要有"平顶"(plateaus),就表示该函数可能存在性能问题。 + +颜色没有特殊含义,因为火焰图表示的是 CPU 的繁忙程度,所以一般选择暖色调。 + +## 2. 配置DragonOS内核 + +由于性能分析需要详尽的符号表数据,因此我们需要在编译内核时,需要进行以下配置: + +在`kernel/Cargo.toml`中的`[profile.release]`部分,设置以下两项: + +```toml +[profile.release] +debug = true +opt-level = 1 +``` + +这样,编译出来的内核就会包含符号表数据,方便我们进行性能分析。 + +## 3. 使用DADK进行性能分析 + +### 3.1 启动内核 + +首先,我们需要启动DragonOS内核。 + +```shell +# 使用你喜欢的方式启动内核,例如: +make run +# 或者 +make build && make qemu-nographic +``` + +### 3.2 运行你的工作负载 + +在启动内核后,我们需要运行一些工作负载,以便进行性能分析。 + +这可以是一个应用程序,也可以是别的东西。甚至你可以什么都不运行,只是单纯看看DragonOS内核在空闲时的调用栈情况。 + +### 3.3 启动DADK进行性能分析 + +在DragonOS项目目录下,运行以下命令: + +```shell +dadk profile sample --format flamegraph --output flame.svg --interval 200ms --duration 20s --cpu-mask 0x1 +``` + +上面的命令,将会对DragonOS内核进行性能分析,并生成一个火焰图。 + +详细解释: + +- `--format flamegraph`:指定输出格式为火焰图。 +- `--output flame.svg`:指定输出文件名为`flame.svg`。 +- `--interval 200ms`:指定采样间隔为200ms。 +- `--duration 20s`:指定采样时间为20s。 +- `--cpu-mask 0x1`:指定采样的CPU为0号CPU。(这是个按位掩码,也就是说,如果要采样0和1号CPU,那么cpu-mask为0x3) + +*更多参数请参考`dadk profile sample --help`.* + +::: {note} +由于采样时会暂停vCPU,因此采样时间不宜过短,否则会影响系统的正常运行。 +::: + +经过一段时间的等待,你将会得到一个`flame.svg`文件。 + +### 3.4 分析火焰图 + +使用浏览器打开`flame.svg`文件,你将会看到一个火焰图。 + +你可以通过点击火焰图中的某个函数,来查看它的调用栈。 + +**你可以右键下面的图片,在新的标签页打开,体验交互效果。** + +![](https://web-static2.dragonos.org.cn//longjin/flame2.svg?imageSlim) + diff --git a/docs/userland/appdev/c-cpp-quick-start.md b/docs/userland/appdev/c-cpp-quick-start.md index 9dd40792..03eb68d5 100644 --- a/docs/userland/appdev/c-cpp-quick-start.md +++ b/docs/userland/appdev/c-cpp-quick-start.md @@ -13,3 +13,6 @@ musl-gcc -static -o hello hello.c 在移植现有程序时,可能需要配置`CFLAGS`和`LDFLAGS`,以及`CPPFLAGS`,以便正确地编译,具体请以实际为准。 +## 配置dadk + +请参考:[Quick Start | DADK](https://docs.dragonos.org.cn/p/dadk/user-manual/quickstart.html) \ No newline at end of file diff --git a/docs/userland/appdev/index.rst b/docs/userland/appdev/index.rst index aa91bb0c..dcda84ed 100644 --- a/docs/userland/appdev/index.rst +++ b/docs/userland/appdev/index.rst @@ -8,4 +8,5 @@ rust-quick-start c-cpp-quick-start - DADK文档 + 快速使用DADK打包一个应用到DragonOS + DADK完整文档 diff --git a/docs/userland/appdev/rust-quick-start.md b/docs/userland/appdev/rust-quick-start.md index 57839ff9..7bd15db8 100644 --- a/docs/userland/appdev/rust-quick-start.md +++ b/docs/userland/appdev/rust-quick-start.md @@ -2,19 +2,14 @@ ## 编译环境 -  DragonOS与Linux具有部分二进制兼容性,因此可以使用Linux的Rust编译器进行编译,但是需要进行一些配置: - -您可以参考DragonOS的`tools/bootstrap.sh`中,`initialize_userland_musl_toolchain()`函数的实现,进行配置。 -或者,只要运行一下bootstrap.sh就可以了。 - -主要是因为DragonOS还不支持动态链接,但是默认的工具链里面,包含了动态链接解释器相关的代码,因此像脚本内那样,进行替换就能运行。 +  DragonOS与Linux具有部分二进制兼容性,因此可以使用Linux的Rust编译器进行编译。 ## 配置项目 ### 从模板创建 :::{note} -该功能需要dadk 0.1.4及以上版本方能支持 +该功能需要dadk 0.2.0及以上版本方能支持。旧版的请参考历史版本的DragonOS文档。 ::: 1. 使用DragonOS的tools目录下的`bootstrap.sh`脚本初始化环境 @@ -30,7 +25,7 @@ cargo generate --git https://git.mirrors.dragonos.org/DragonOS-Community/Rust-Ap ``` 4. 使用`cargo run`来运行项目 -5. 在DragonOS的`user/dadk/config`目录下,使用`dadk new`命令,创建编译配置,安装到DragonOS的`/`目录下。 +5. 在DragonOS的`user/dadk/config`目录下,参考模版[userapp_config.toml](https://github.com/DragonOS-Community/DADK/blob/main/dadk-config/templates/config/userapp_config.toml),创建编译配置,安装到DragonOS的`/`目录下。 (在dadk的编译命令选项处,请使用Makefile里面的`make install`配置进行编译、安装) 6. 编译DragonOS即可安装 diff --git a/env.mk b/env.mk index 8ca75bc3..facd546e 100644 --- a/env.mk +++ b/env.mk @@ -8,3 +8,6 @@ endif ifeq ($(EMULATOR), ) export EMULATOR=__NO_EMULATION__ endif + + +export DADK?=$(shell which dadk) diff --git a/tools/BUILD_CONTAINER_VERSION b/tools/BUILD_CONTAINER_VERSION index 53638571..72970ee2 100644 --- a/tools/BUILD_CONTAINER_VERSION +++ b/tools/BUILD_CONTAINER_VERSION @@ -1 +1 @@ -v1.6 \ No newline at end of file +v1.7 \ No newline at end of file diff --git a/tools/check_arch.sh b/tools/check_arch.sh new file mode 100644 index 00000000..41545e7e --- /dev/null +++ b/tools/check_arch.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +BASE_PATH=$(pwd) +# 定义错误信息 +ARCH_MISMATCH_ERROR="Error: ARCH in env.mk does not match arch in dadk-manifest.toml" + +if [ -z "$ARCH" ]; then + echo "Error: ARCH environment variable is not set." >&2 + exit 1 +fi + + +# Check if ROOT_PATH is set +if [ -n "$ROOT_PATH" ]; then + CHECK_PATH="$ROOT_PATH" +else + # Check if the current directory name is "tools" + if [ "$(basename "$BASE_PATH")" = "tools" ]; then + # Try the parent directory's dadk-manifest + CHECK_PATH=$(dirname "$BASE_PATH")/ + else + # Otherwise, check the current directory + CHECK_PATH="$BASE_PATH" + fi +fi + +echo "Checking $CHECK_PATH" + + +# 读取dadk-manifest.toml文件中的arch字段 +DADK_ARCH=$(grep -oP '(?<=arch = ")[^"]+' $CHECK_PATH/dadk-manifest.toml) + +# 检查arch字段是否为x86_64 +if [ "$ARCH" != $DADK_ARCH ]; then + echo "$ARCH_MISMATCH_ERROR" >&2 + exit 1 +else + echo "Arch check passed." + exit 0 +fi diff --git a/tools/mount_virt_disk.sh b/tools/mount_virt_disk.sh deleted file mode 100755 index 3e8377bd..00000000 --- a/tools/mount_virt_disk.sh +++ /dev/null @@ -1,27 +0,0 @@ -# ======检查是否以sudo运行================= -uid=`id -u` -if [ ! $uid == "0" ];then - echo "请以sudo权限运行" - exit -fi - -# 检查是否设置ARCH环境变量 - -if [ ! ${ARCH} ];then - echo "请设置ARCH环境变量" - exit -fi - - -DISK_NAME=disk-${ARCH}.img - -echo "Mounting virtual disk image '${DISK_NAME}'..." - -LOOP_DEVICE=$(losetup -f --show -P ../bin/${DISK_NAME}) \ - || exit 1 - -echo ${LOOP_DEVICE}p1 - -mkdir -p ../bin/disk_mount/ -mount ${LOOP_DEVICE}p1 ../bin/disk_mount/ -lsblk \ No newline at end of file diff --git a/tools/run-qemu.sh b/tools/run-qemu.sh index ba2d3ce1..e470d518 100644 --- a/tools/run-qemu.sh +++ b/tools/run-qemu.sh @@ -65,7 +65,7 @@ UBOOT_VERSION="v2023.10" RISCV64_UBOOT_PATH="arch/riscv64/u-boot-${UBOOT_VERSION}-riscv64" -DISK_NAME="disk-${ARCH}.img" +DISK_NAME="disk-image-${ARCH}.img" QEMU=qemu-system-${ARCH} QEMU_DISK_IMAGE="../bin/${DISK_NAME}" diff --git a/tools/umount_virt_disk.sh b/tools/umount_virt_disk.sh deleted file mode 100755 index 061a6634..00000000 --- a/tools/umount_virt_disk.sh +++ /dev/null @@ -1,19 +0,0 @@ -# ======检查是否以sudo运行================= -uid=`id -u` -if [ ! $uid == "0" ];then - echo "请以sudo权限运行" - exit -fi - -if [ ! ${ARCH} ];then - echo "请设置ARCH环境变量" - exit -fi - -DISK_NAME=disk-${ARCH}.img - -LOOP_DEVICE=$(lsblk | grep disk_mount|sed 's/.*\(loop[0-9]*\)p1.*/\1/1g'|awk 'END{print $0}') - -umount -f ../bin/disk_mount/ -losetup -d /dev/$LOOP_DEVICE -echo $LOOP_DEVICE \ No newline at end of file diff --git a/tools/write_disk_image.sh b/tools/write_disk_image.sh index 27b43110..24017c9a 100644 --- a/tools/write_disk_image.sh +++ b/tools/write_disk_image.sh @@ -1,5 +1,5 @@ ############################################### -# 该脚本用于将disk_mount目录下的文件写入到disk-${ARCH}.img的第一个分区中, +# 该脚本用于将文件拷贝到磁盘镜像中, # 并在磁盘镜像中安装grub引导程序 # # 用法:bash write_disk_image.sh --bios legacy/uefi @@ -11,15 +11,16 @@ echo "ARCH=${ARCH}" # 给ARCH变量赋默认值 export ARCH=${ARCH:=x86_64} +export DADK=${DADK:=dadk} -DISK_NAME=disk-${ARCH}.img # 内核映像 root_folder=$(dirname $(pwd)) kernel="${root_folder}/bin/kernel/kernel.elf" -boot_folder="${root_folder}/bin/disk_mount/boot" +mount_folder=$($DADK -w $root_folder rootfs show-mountpoint || exit 1) +boot_folder="${mount_folder}/boot" GRUB_INSTALL_PATH="${boot_folder}/grub" -mount_folder="${root_folder}/bin/disk_mount" + ARGS=`getopt -o p -l bios: -- "$@"` eval set -- "${ARGS}" #echo formatted parameters=[$@] @@ -67,34 +68,17 @@ if [ ${ARCH} == "i386" ] || [ ${ARCH} == "x86_64" ]; then fi fi -# 判断是否存在硬盘镜像文件,如果不存在,就创建一个(docker模式下,由于镜像中缺少qemu-img不会创建) -if [ ! -f "${root_folder}/bin/${DISK_NAME}" ]; then - echo "创建硬盘镜像文件..." - case "$1" in - --bios) - case "$2" in - uefi) - sudo ARCH=${ARCH} bash ./create_hdd_image.sh -P MBR #GPT分区 用GPT分区uefi启动不了 内核没有针对gpt分区表来做处理 - ;; - legacy) - sudo ARCH=${ARCH} bash ./create_hdd_image.sh -P MBR #MBR分区 - ;; - esac - ;; - *) - # 默认创建MBR分区 - sudo ARCH=${ARCH} bash ./create_hdd_image.sh -P MBR #MBR分区 - ;; - esac -fi +# 判断是否存在硬盘镜像文件,如果不存在,就创建一个 +echo "创建硬盘镜像文件..." +$DADK -w $root_folder rootfs create --skip-if-exists || exit 1 -# 拷贝程序到硬盘 -mkdir -p ${root_folder}/bin/disk_mount -bash mount_virt_disk.sh || exit 1 +$DADK -w $root_folder rootfs mount || exit 1 -LOOP_DEVICE=$(lsblk | grep disk_mount|sed 's/.*\(loop[0-9]*\)p1.*/\1/1g'|awk 'END{print $0}') + + +LOOP_DEVICE=$($DADK -w $root_folder rootfs show-loop-device || exit 1) echo $LOOP_DEVICE - +echo ${mount_folder} # mkdir -p ${GRUB_INSTALL_PATH} # 检测grub文件夹是否存在 @@ -107,21 +91,20 @@ fi if [ ${ARCH} == "i386" ] || [ ${ARCH} == "x86_64" ]; then - cp ${kernel} ${root_folder}/bin/disk_mount/boot/ + cp ${kernel} ${mount_folder}/boot/ fi # 拷贝用户程序到磁盘镜像 -mkdir -p ${root_folder}/bin/disk_mount/bin -mkdir -p ${root_folder}/bin/disk_mount/dev -mkdir -p ${root_folder}/bin/disk_mount/proc -mkdir -p ${root_folder}/bin/disk_mount/usr -touch ${root_folder}/bin/disk_mount/dev/keyboard.dev -cp -r ${root_folder}/bin/sysroot/* ${root_folder}/bin/disk_mount/ +mkdir -p ${mount_folder}/bin +mkdir -p ${mount_folder}/dev +mkdir -p ${mount_folder}/proc +mkdir -p ${mount_folder}/usr +cp -r ${root_folder}/bin/sysroot/* ${mount_folder}/ # 设置 grub 相关数据 if [ ${ARCH} == "i386" ] || [ ${ARCH} == "x86_64" ]; then - touch ${root_folder}/bin/disk_mount/boot/grub/grub.cfg + touch ${mount_folder}/boot/grub/grub.cfg cfg_content='set timeout=15 set default=0 insmod efi_gop @@ -154,7 +137,7 @@ if [ "${INSTALL_GRUB_TO_IMAGE}" = "1" ];then ;; legacy) #传统bios if [ ${ARCH} == "x86_64" ];then - ${GRUB_PATH_I386_LEGACY_INSTALL} --target=i386-pc --boot-directory=${boot_folder} /dev/$LOOP_DEVICE + ${GRUB_PATH_I386_LEGACY_INSTALL} --target=i386-pc --boot-directory=${boot_folder} $LOOP_DEVICE elif [ ${ARCH} == "riscv64" ];then install_riscv64_efi else @@ -165,11 +148,12 @@ if [ "${INSTALL_GRUB_TO_IMAGE}" = "1" ];then ;; *) #传统bios - ${GRUB_PATH_I386_LEGACY_INSTALL} --target=i386-pc --boot-directory=${boot_folder} /dev/$LOOP_DEVICE + ${GRUB_PATH_I386_LEGACY_INSTALL} --target=i386-pc --boot-directory=${boot_folder} $LOOP_DEVICE ;; - + esac fi sync -bash umount_virt_disk.sh + +$DADK -w $root_folder rootfs umount || exit 1 diff --git a/user/Makefile b/user/Makefile index 3f09a325..c21d6179 100644 --- a/user/Makefile +++ b/user/Makefile @@ -2,7 +2,7 @@ user_sub_dirs = apps DADK_VERSION=$(shell dadk -V | awk 'END {print $$2}') # 最小的DADK版本 -MIN_DADK_VERSION = 0.1.11 +MIN_DADK_VERSION = 0.2.0 DADK_CACHE_DIR = $(ROOT_PATH)/bin/dadk_cache ECHO: @@ -36,15 +36,12 @@ endif .PHONY: dadk_run dadk_run: install_dadk mkdir -p $(DADK_CACHE_DIR) - dadk --config-dir dadk/config --cache-dir $(DADK_CACHE_DIR) --dragonos-dir $(ROOT_PATH)/bin/sysroot build - dadk --config-dir dadk/config --cache-dir $(DADK_CACHE_DIR) --dragonos-dir $(ROOT_PATH)/bin/sysroot install + $(DADK) user build -w $(ROOT_PATH) + $(DADK) user install -w $(ROOT_PATH) .PHONY: dadk_clean dadk_clean: install_dadk @echo dadk_clean -# 不运行dadk clean的原因是,把clean的工作交给应用程序自己去做,这样可以节省编译时间 -#dadk --config-dir dadk/config --cache-dir $(DADK_CACHE_DIR) --dragonos-dir $(ROOT_PATH)/bin/sysroot clean src -#dadk --config-dir dadk/config --cache-dir $(DADK_CACHE_DIR) --dragonos-dir $(ROOT_PATH)/bin/sysroot clean target all: mkdir -p $(ROOT_PATH)/bin/sysroot @@ -54,7 +51,8 @@ all: @echo 用户态程序编译完成 -copy_sysconfig: dadk_run +.PHONY: copy_sysconfig +copy_sysconfig: cp -r sysconfig/* $(ROOT_PATH)/bin/sysroot/ diff --git a/user/dadk/config/about.dadk b/user/dadk/config/about.dadk deleted file mode 100644 index 18fd05ef..00000000 --- a/user/dadk/config/about.dadk +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "about", - "version": "0.1.0", - "description": "", - "rust_target": null, - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/about" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "install": { - "in_dragonos_path": "/bin" - }, - "clean": { - "clean_command": "make clean" - }, - "envs": [], - "target_arch": ["x86_64"] - } \ No newline at end of file diff --git a/user/dadk/config/about.toml b/user/dadk/config/about.toml new file mode 100644 index 00000000..1aab691b --- /dev/null +++ b/user/dadk/config/about.toml @@ -0,0 +1,36 @@ +# 用户程序名称 +name = "about" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "" +# (可选)是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from_source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/about" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/bin" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" diff --git a/user/dadk/config/clear-0.1.0.dadk b/user/dadk/config/clear-0.1.0.dadk deleted file mode 100644 index 690b00bf..00000000 --- a/user/dadk/config/clear-0.1.0.dadk +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "clear", - "version": "0.1.0", - "description": "清屏", - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/clear" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "clean": { - "clean_command": "make clean" - }, - "install": { - "in_dragonos_path": "/" - }, - "target_arch": ["x86_64"] -} diff --git a/user/dadk/config/clear-0.1.0.toml b/user/dadk/config/clear-0.1.0.toml new file mode 100644 index 00000000..8b6a7bf6 --- /dev/null +++ b/user/dadk/config/clear-0.1.0.toml @@ -0,0 +1,44 @@ +# 用户程序名称 +name = "clear" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "清屏" +# (可选)是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] + +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from-source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/clear" + +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/" + +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" +# (可选)依赖项 +# 注意:如果没有依赖项,忽略此项,不允许只留一个[[depends]] +# 由于原配置中没有依赖项,这里忽略[[depends]]部分 +# (可选)环境变量 +# 由于原配置中没有环境变量,这里忽略[[envs]]部分 diff --git a/user/dadk/config/core_utils-9.4.0.dadk b/user/dadk/config/core_utils-9.4.0.dadk deleted file mode 100644 index 61c01449..00000000 --- a/user/dadk/config/core_utils-9.4.0.dadk +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "Core utils", - "version": "9.4.0", - "description": "GNU Core utils", - "task_type": { - "BuildFromSource": { - "Archive": { - "url": "https://mirrors.dragonos.org.cn/pub/third_party/gnu/coreutils/coreutils-9.4.tar.xz" - } - } - }, - "depends": [], - "build": { - "build_command": "./configure CC=x86_64-linux-musl-gcc CFLAGS=-static && make -j $(nproc) && DESTDIR=$DADK_CURRENT_BUILD_DIR make install" - }, - "clean": { - "clean_command": "make clean" - }, - "install": { - "in_dragonos_path": "/" - }, - - "build_once": true, - - "install_once": true, - "target_arch": ["x86_64"] -} diff --git a/user/dadk/config/core_utils-9.4.0.toml b/user/dadk/config/core_utils-9.4.0.toml new file mode 100644 index 00000000..eaf93230 --- /dev/null +++ b/user/dadk/config/core_utils-9.4.0.toml @@ -0,0 +1,39 @@ +# 用户程序名称 +name = "core utils" +# 版本号 +version = "9.4.0" +# 用户程序描述信息 +description = "GNU Core utils" +# (可选)是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = true +# (可选) 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = true +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from-source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "archive" +# 路径或URL +source-path = "https://mirrors.dragonos.org.cn/pub/third_party/gnu/coreutils/coreutils-9.4.tar.xz" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "./configure CC=x86_64-linux-musl-gcc CFLAGS=-static && make -j $(nproc) && DESTDIR=$DADK_CURRENT_BUILD_DIR make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" +# (可选)依赖项 +# 注意:如果没有依赖项,忽略此项,不允许只留一个[[depends]] +# 此处无依赖项,故忽略 diff --git a/user/dadk/config/dmesg-0.1.0.dadk b/user/dadk/config/dmesg-0.1.0.dadk deleted file mode 100644 index f1832699..00000000 --- a/user/dadk/config/dmesg-0.1.0.dadk +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "dmesg", - "version": "0.1.0", - "description": "查看日志", - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/dmesg" - } - } - }, - "depends": [], - "build": { - "build_command": "make install -j $(nproc)" - }, - "install": { - "in_dragonos_path": "/bin" - }, - "clean": { - "clean_command": "make clean" - }, - "envs": [], - "target_arch": ["x86_64"] -} \ No newline at end of file diff --git a/user/dadk/config/dmesg-0.1.0.toml b/user/dadk/config/dmesg-0.1.0.toml new file mode 100644 index 00000000..82d66073 --- /dev/null +++ b/user/dadk/config/dmesg-0.1.0.toml @@ -0,0 +1,47 @@ +# 用户程序名称 +name = "dmesg" + +# 版本号 +version = "0.1.0" + +# 用户程序描述信息 +description = "查看内核日志" + +# 是否只构建一次 +build-once = false + +# 是否只安装一次 +install-once = false + +# 目标架构 +target-arch = ["x86_64"] + +# 任务源 +[task-source] +# 构建类型 +type = "build-from-source" +# 构建来源 +source = "local" +# 路径或URL +source-path = "user/apps/dmesg" + +# 构建相关信息 +[build] +# 构建命令 +build-command = "make install -j $(nproc)" + +# 安装相关信息 +[install] +# 安装到DragonOS的路径 +in-dragonos-path = "/bin" + +# 清除相关信息 +[clean] +# 清除命令 +clean-command = "make clean" + +# 依赖项 +# 注意:因为没有依赖项,所以这里不包含[[depends]]部分 + +# 环境变量 +# 注意:因为没有环境变量,所以这里不包含[[envs]]部分 diff --git a/user/dadk/config/dog_0_1_0.dadk b/user/dadk/config/dog_0_1_0.dadk deleted file mode 100644 index 157f085c..00000000 --- a/user/dadk/config/dog_0_1_0.dadk +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "dog", - "version": "0.1.0", - "description": "dns client", - "rust_target": null, - "task_type": { - "BuildFromSource": { - "Git": { - "url": "https://git.mirrors.dragonos.org.cn/DragonOS-Community/dog.git", - "branch": null, - "revision": "6f2c0c8f12" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "install": { - "in_dragonos_path": "/" - }, - "clean": { - "clean_command": "make clean" - }, - "envs": [ - { - "key": "CC", - "value": "x86_64-linux-musl-gcc" - } - ], - "build_once": false, - "install_once": false, - "target_arch": ["x86_64"] -} \ No newline at end of file diff --git a/user/dadk/config/dog_0_1_0.toml b/user/dadk/config/dog_0_1_0.toml new file mode 100644 index 00000000..1df4d5ac --- /dev/null +++ b/user/dadk/config/dog_0_1_0.toml @@ -0,0 +1,51 @@ +# 用户程序名称 +name = "dog" + +# 版本号 +version = "0.1.0" + +# 用户程序描述信息 +description = "dns client" + +# 目标架构 +target-arch = ["x86_64"] + +# 是否只构建一次 +build-once = false + +# 是否只安装一次 +install-once = false + +# 任务源 +[task-source] +# 构建类型 +type = "build-from-source" +# 构建来源 +source = "git" +# 路径或URL +source-path = "https://git.mirrors.dragonos.org.cn/DragonOS-Community/dog.git" +# git标签或分支 +revision = "6f2c0c8f12" + +# 构建相关信息 +[build] +# 构建命令 +build-command = "make install" + +# 安装相关信息 +[install] +# 安装到DragonOS的路径 +in-dragonos-path = "/" + +# 清除相关信息 +[clean] +# 清除命令 +clean-command = "make clean" + +# 依赖项 +# 注意:因为没有依赖项,所以这里不包含[[depends]]部分 + +# 环境变量 +[[envs]] +key = "CC" +value = "x86_64-linux-musl-gcc" diff --git a/user/dadk/config/dragon_reach-0.1.0.dadk b/user/dadk/config/dragon_reach-0.1.0.dadk deleted file mode 100644 index 73dac2ac..00000000 --- a/user/dadk/config/dragon_reach-0.1.0.dadk +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "DragonReach", - "version": "0.1.0", - "description": "init程序", - "task_type": { - "BuildFromSource": { - "Git": { - "url" : "https://git.mirrors.dragonos.org.cn/DragonOS-Community/DragonReach.git", - "revision": "e945c217b3" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "clean": { - "clean_command": "make clean" - }, - "install": { - "in_dragonos_path": "/" - }, - "target_arch": ["x86_64"] -} diff --git a/user/dadk/config/dragon_reach-0.1.0.toml b/user/dadk/config/dragon_reach-0.1.0.toml new file mode 100644 index 00000000..fcefd08e --- /dev/null +++ b/user/dadk/config/dragon_reach-0.1.0.toml @@ -0,0 +1,49 @@ +# 用户程序名称 +name = "DragonReach" + +# 版本号 +version = "0.1.0" + +# 用户程序描述信息 +description = "init程序" + +# 目标架构 +target-arch = ["x86_64"] + +# 是否只构建一次 +build-once = false + +# 是否只安装一次 +install-once = false + +# 任务源 +[task-source] +# 构建类型 +type = "build-from-source" +# 构建来源 +source = "git" +# 路径或URL +source-path = "https://git.mirrors.dragonos.org.cn/DragonOS-Community/DragonReach.git" +# git标签或分支 +revision = "e945c217b3" + +# 构建相关信息 +[build] +# 构建命令 +build-command = "make install" + +# 安装相关信息 +[install] +# 安装到DragonOS的路径 +in-dragonos-path = "/" + +# 清除相关信息 +[clean] +# 清除命令 +clean-command = "make clean" + +# 依赖项 +# 注意:因为没有依赖项,所以这里不包含[[depends]]部分 + +# 环境变量 +# 注意:因为没有环境变量,所以这里不包含[[envs]]部分 diff --git a/user/dadk/config/held-0.1.0.dadk b/user/dadk/config/held-0.1.0.dadk deleted file mode 100644 index 60bb0401..00000000 --- a/user/dadk/config/held-0.1.0.dadk +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "Held", - "version": "0.1.0", - "description": "中断文本编辑器", - "task_type": { - "BuildFromSource": { - "Git": { - "url" : "https://git.mirrors.dragonos.org.cn/DragonOS-Community/Held.git", - "revision": "f192df4" - } - } - }, - "depends": [], - "build": { - "build_command": "make install-dragonos" - }, - "clean": { - "clean_command": "make clean" - }, - "install": { - "in_dragonos_path": "/" - }, - "target_arch": ["x86_64"] -} diff --git a/user/dadk/config/held-0.1.0.toml b/user/dadk/config/held-0.1.0.toml new file mode 100644 index 00000000..abcb97c0 --- /dev/null +++ b/user/dadk/config/held-0.1.0.toml @@ -0,0 +1,49 @@ +# 用户程序名称 +name = "Held" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "终端文本编辑器" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] + +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from-source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "git" +# 路径或URL +source-path = "https://git.mirrors.dragonos.org.cn/DragonOS-Community/Held.git" +# git标签或分支 +# 注意: branch和revision只能二选一,且source要设置为"git" +revision = "f192df4" + +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install-dragonos" +# 安装相关信息 + +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/" + +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" + +# (可选)依赖项 +# 注意:如果没有依赖项,忽略此项,不允许只留一个[[depends]] +# 此处没有依赖项,因此省略[[depends]]部分 +# (可选)环境变量 +# 此处没有环境变量,因此省略[[envs]]部分 diff --git a/user/dadk/config/http_server-0.1.0.dadk b/user/dadk/config/http_server-0.1.0.dadk deleted file mode 100644 index e06b5d45..00000000 --- a/user/dadk/config/http_server-0.1.0.dadk +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "Http_Server", - "version": "0.1.0", - "description": "一个简单的http server", - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/http_server" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "install": { - "in_dragonos_path": "/bin" - }, - "clean": { - "clean_command": "make clean" - }, - "envs": [], - "target_arch": ["x86_64"] -} \ No newline at end of file diff --git a/user/dadk/config/http_server-0.1.0.toml b/user/dadk/config/http_server-0.1.0.toml new file mode 100644 index 00000000..bc7475f3 --- /dev/null +++ b/user/dadk/config/http_server-0.1.0.toml @@ -0,0 +1,40 @@ +# 用户程序名称 +name = "Http_Server" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "一个简单的http server" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from-source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/http_server" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/bin" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" +# (可选)依赖项 +# 注意:如果没有依赖项,忽略此项,不允许只留一个[[depends]] +# 环境变量 +# 注意:如果没有环境变量,忽略此项,不允许只留一个[[envs]] diff --git a/user/dadk/config/musl_1_2_4.dadk b/user/dadk/config/musl_1_2_4.dadk deleted file mode 100644 index 6f9ee8a0..00000000 --- a/user/dadk/config/musl_1_2_4.dadk +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "musl", - "version": "1.2.4", - "description": "musl libc", - "rust_target": null, - "task_type": { - "BuildFromSource": { - "Archive": { - "url": "https://mirrors.dragonos.org.cn/pub/third_party/musl/musl-1.2.4.tar.gz" - } - } - }, - "depends": [], - "build": { - "build_command": "touch config.mak && DESTDIR=$DADK_CURRENT_BUILD_DIR make install -j $(nproc)" - }, - "install": { - "in_dragonos_path": "/" - }, - "clean": { - "clean_command": "make clean" - }, - "envs": [], - "build_once": true, - - "install_once": true, - "target_arch": ["x86_64"] -} \ No newline at end of file diff --git a/user/dadk/config/musl_1_2_4.toml b/user/dadk/config/musl_1_2_4.toml new file mode 100644 index 00000000..bad7c371 --- /dev/null +++ b/user/dadk/config/musl_1_2_4.toml @@ -0,0 +1,40 @@ +# 用户程序名称 +name = "musl" +# 版本号 +version = "1.2.4" +# 用户程序描述信息 +description = "musl libc" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = true +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = true +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from-source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "archive" +# 路径或URL +source-path = "https://mirrors.dragonos.org.cn/pub/third_party/musl/musl-1.2.4.tar.gz" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "touch config.mak && DESTDIR=$DADK_CURRENT_BUILD_DIR make install -j $(nproc)" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" +# (可选)依赖项 +# 注意:如果没有依赖项,忽略此项,不允许只留一个[[depends]] +# (可选)环境变量 +# 注意:如果没有环境变量,忽略此项,不允许只留一个[[envs]] diff --git a/user/dadk/config/nova_shell-0.1.0.dadk b/user/dadk/config/nova_shell-0.1.0.dadk deleted file mode 100644 index 490a1250..00000000 --- a/user/dadk/config/nova_shell-0.1.0.dadk +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "NovaShell", - "version": "0.1.0", - "description": "NovaShell程序", - "task_type": { - "BuildFromSource": { - "Git": { - "url": "https://git.mirrors.dragonos.org.cn/DragonOS-Community/NovaShell.git", - "revision": "cb835e03e4" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "clean": { - "clean_command": "make clean" - }, - "install": { - "in_dragonos_path": "/" - }, - "target_arch": ["x86_64"] -} diff --git a/user/dadk/config/nova_shell-0.1.0.toml b/user/dadk/config/nova_shell-0.1.0.toml new file mode 100644 index 00000000..190de5fd --- /dev/null +++ b/user/dadk/config/nova_shell-0.1.0.toml @@ -0,0 +1,44 @@ +# 用户程序名称 +name = "NovaShell" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "NovaShell程序" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from-source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "git" +# 路径或URL +source-path = "https://git.mirrors.dragonos.org.cn/DragonOS-Community/NovaShell.git" +# git标签或分支 +# 注意: branch和revision只能二选一,且source要设置为"git" +revision = "cb835e03e4" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" +# (可选)依赖项 +# 注意:如果没有依赖项,忽略此项,不允许只留一个[[depends]] +# 由于原配置中没有依赖项,此处省略[[depends]]部分 +# (可选)环境变量 +# 由于原配置中没有环境变量,此处省略[[envs]]部分 diff --git a/user/dadk/config/riscv_init-0.1.0.dadk b/user/dadk/config/riscv_init-0.1.0.dadk deleted file mode 100644 index 65fb566f..00000000 --- a/user/dadk/config/riscv_init-0.1.0.dadk +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "riscv_init", - "version": "0.1.0", - "description": "临时的riscv下的初始化程序", - "rust_target": null, - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/riscv_init" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "install": { - "in_dragonos_path": "/bin" - }, - "clean": { - "clean_command": "make clean" - }, - "envs": [], - "build_once": false, - "install_once": false, - "target_arch": ["riscv64"] -} \ No newline at end of file diff --git a/user/dadk/config/riscv_init-0.1.0.toml b/user/dadk/config/riscv_init-0.1.0.toml new file mode 100644 index 00000000..385c655a --- /dev/null +++ b/user/dadk/config/riscv_init-0.1.0.toml @@ -0,0 +1,40 @@ +# 用户程序名称 +name = "riscv_init" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "临时的riscv下的初始化程序" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["riscv64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from-source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/riscv_init" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/bin" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" +# (可选)依赖项 +# 注意:如果没有依赖项,忽略此项,不允许只留一个[[depends]] +# (可选)环境变量 +# 注意:如果没有环境变量,忽略此项,不允许只留一个[[envs]] diff --git a/user/dadk/config/tar_1_35.dadk b/user/dadk/config/tar_1_35.dadk deleted file mode 100644 index e6f99916..00000000 --- a/user/dadk/config/tar_1_35.dadk +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "tar", - "version": "1.35", - "description": "gnu tar", - "rust_target": null, - "task_type": { - "InstallFromPrebuilt": { - "Archive": { - "url": "https://mirrors.dragonos.org.cn/pub/third_party/gnu/tar/tar-1.35-x86_64-linux-gnu.tar.xz" - } - } - }, - "depends": [], - "build": { - - }, - "install": { - "in_dragonos_path": "/usr" - }, - "clean": { - "clean_command": null - }, - "envs": [], - "target_arch": ["x86_64"] -} diff --git a/user/dadk/config/tar_1_35.toml b/user/dadk/config/tar_1_35.toml new file mode 100644 index 00000000..99793efd --- /dev/null +++ b/user/dadk/config/tar_1_35.toml @@ -0,0 +1,39 @@ +# 用户程序名称 +name = "tar" +# 版本号 +version = "1.35" +# 用户程序描述信息 +description = "gnu tar" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from-source", "install-from-prebuilt" +type = "install-from-prebuilt" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "archive" +# 路径或URL +source-path = "https://mirrors.dragonos.org.cn/pub/third_party/gnu/tar/tar-1.35-x86_64-linux-gnu.tar.xz" + +[build] + +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/usr" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "" +# (可选)依赖项 +# 注意:如果没有依赖项,忽略此项,不允许只留一个[[depends]] +# (可选)环境变量 +# 注意:如果没有环境变量,忽略此项,不允许只留一个[[envs]] diff --git a/user/dadk/config/test_alarm_0_1_0.dadk b/user/dadk/config/test_alarm_0_1_0.dadk deleted file mode 100644 index 4693cce0..00000000 --- a/user/dadk/config/test_alarm_0_1_0.dadk +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "test_alarm", - "version": "0.1.0", - "description": "test for alarm", - "rust_target": null, - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/test_alarm" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "install": { - "in_dragonos_path": "/" - }, - "clean": { - "clean_command": "make clean" - }, - "envs": [], - "build_once": false, - "install_once": false, - "target_arch": ["x86_64"] -} \ No newline at end of file diff --git a/user/dadk/config/test_alarm_0_1_0.toml b/user/dadk/config/test_alarm_0_1_0.toml new file mode 100644 index 00000000..66496a3f --- /dev/null +++ b/user/dadk/config/test_alarm_0_1_0.toml @@ -0,0 +1,41 @@ +# 用户程序名称 +name = "test_alarm" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "test for alarm" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from-source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/test_alarm" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" +# (可选)依赖项 +# 注意:如果没有依赖项,忽略此项,不允许只留一个[[depends]] +# 由于原配置中没有依赖项,这里忽略[[depends]] +# (可选)环境变量 +# 由于原配置中没有环境变量,这里忽略[[envs]] diff --git a/user/dadk/config/test_backlog_0_1_0.dadk b/user/dadk/config/test_backlog_0_1_0.dadk deleted file mode 100644 index faaa6635..00000000 --- a/user/dadk/config/test_backlog_0_1_0.dadk +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "test-backlog", - "version": "0.1.0", - "description": "test the tcp backlog", - "rust_target": null, - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/test-backlog" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "install": { - "in_dragonos_path": "/" - }, - "clean": { - "clean_command": "make clean" - }, - "envs": [], - "build_once": false, - "install_once": false, - "target_arch": ["x86_64"] -} \ No newline at end of file diff --git a/user/dadk/config/test_backlog_0_1_0.toml b/user/dadk/config/test_backlog_0_1_0.toml new file mode 100644 index 00000000..23508041 --- /dev/null +++ b/user/dadk/config/test_backlog_0_1_0.toml @@ -0,0 +1,40 @@ +# 用户程序名称 +name = "test-backlog" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "test the tcp backlog" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from-source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/test-backlog" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" +# (可选)依赖项 +# 注意:如果没有依赖项,忽略此项,不允许只留一个[[depends]] +# (可选)环境变量 +# 注意:如果没有环境变量,忽略此项,不允许只留一个[[envs]] diff --git a/user/dadk/config/test_bind-0.1.0.dadk b/user/dadk/config/test_bind-0.1.0.dadk deleted file mode 100644 index 1f480c42..00000000 --- a/user/dadk/config/test_bind-0.1.0.dadk +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "test_bind", - "version": "0.1.0", - "description": "一个简单的test bind", - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/test_bind" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "install": { - "in_dragonos_path": "/bin" - }, - "clean": { - "clean_command": "make clean" - }, - "envs": [], - "target_arch": ["x86_64"] -} \ No newline at end of file diff --git a/user/dadk/config/test_bind-0.1.0.toml b/user/dadk/config/test_bind-0.1.0.toml new file mode 100644 index 00000000..b5f2407c --- /dev/null +++ b/user/dadk/config/test_bind-0.1.0.toml @@ -0,0 +1,40 @@ +# 用户程序名称 +name = "test_bind" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "一个简单的test bind" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from-source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/test_bind" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/bin" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" +# (可选)依赖项 +# 注意:如果没有依赖项,忽略此项,不允许只留一个[[depends]] +# (可选)环境变量 +# 注意:如果没有环境变量,忽略此项,不允许只留一个[[envs]] diff --git a/user/dadk/config/test_blockcache_0_1_0.dadk b/user/dadk/config/test_blockcache_0_1_0.dadk deleted file mode 100644 index 0bd1e517..00000000 --- a/user/dadk/config/test_blockcache_0_1_0.dadk +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "test-blockcache", - "version": "0.1.0", - "description": "用于测试blockcach小程序", - "rust_target": "x86_64-unknown-dragonos", - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/test-blockcache" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "install": { - "in_dragonos_path": "/" - }, - "clean": { - "clean_command": "make clean" - }, - "envs": [], - "target_arch": ["x86_64"] -} \ No newline at end of file diff --git a/user/dadk/config/test_blockcache_0_1_0.toml b/user/dadk/config/test_blockcache_0_1_0.toml new file mode 100644 index 00000000..c8ac1159 --- /dev/null +++ b/user/dadk/config/test_blockcache_0_1_0.toml @@ -0,0 +1,42 @@ +# 用户程序名称 +name = "test-blockcache" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "用于测试blockcach小程序" +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from_source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/test-blockcache" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" +# (可选)依赖项 +# 注意:如果没有依赖项,忽略此项,不允许只留一个[[depends]] +# [[depends]] +# name = "depend1" +# version = "0.1.1" +# (可选)环境变量 +# 注意:如果没有环境变量,忽略此项,不允许只留一个[[envs]] +# [[envs]] +# key = "PATH" +# value = "/usr/bin" diff --git a/user/dadk/config/test_chown_0_1_0.dadk b/user/dadk/config/test_chown_0_1_0.dadk deleted file mode 100644 index 5da86f07..00000000 --- a/user/dadk/config/test_chown_0_1_0.dadk +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "test-chown", - "version": "0.1.0", - "description": "chown系列系统调用", - "rust_target": "x86_64-unknown-dragonos", - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/test-chown" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "install": { - "in_dragonos_path": "/" - }, - "clean": { - "clean_command": "make clean" - }, - "envs": [], - "build_once": false, - "install_once": false, - "target_arch": [ - "x86_64" - ] -} \ No newline at end of file diff --git a/user/dadk/config/test_chown_0_1_0.toml b/user/dadk/config/test_chown_0_1_0.toml new file mode 100644 index 00000000..d25a2e4c --- /dev/null +++ b/user/dadk/config/test_chown_0_1_0.toml @@ -0,0 +1,46 @@ +# 用户程序名称 +name = "test-chown" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "chown系列系统调用" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from-source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/test-chown" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" +# (可选)依赖项 +# 注意:如果没有依赖项,忽略此项,不允许只留一个[[depends]] +# [[depends]] +# name = "depend1" +# version = "0.1.1" +# (可选)环境变量 +# 注意:如果没有环境变量,忽略此项,不允许只留一个[[envs]] +# [[envs]] +# key = "PATH" +# value = "/usr/bin" diff --git a/user/dadk/config/test_cred-0.1.0.dadk b/user/dadk/config/test_cred-0.1.0.dadk deleted file mode 100644 index 8efce9aa..00000000 --- a/user/dadk/config/test_cred-0.1.0.dadk +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "test_cred", - "version": "0.1.0", - "description": "测试cred", - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/test_cred" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "clean": { - "clean_command": "make clean" - }, - "install": { - "in_dragonos_path": "/bin" - }, - "target_arch": ["x86_64"] -} diff --git a/user/dadk/config/test_cred-0.1.0.toml b/user/dadk/config/test_cred-0.1.0.toml new file mode 100644 index 00000000..6b17d3c9 --- /dev/null +++ b/user/dadk/config/test_cred-0.1.0.toml @@ -0,0 +1,51 @@ +# 用户程序名称 +name = "test_cred" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "测试cred" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from_source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/test_cred" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/bin" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" +# (可选)依赖项 +# 注意:如果没有依赖项,忽略此项,不允许只留一个[[depends]] +# [[depends]] +# name = "depend1" +# version = "0.1.1" +# [[depends]] +# name = "depend2" +# version = "0.1.2" +# (可选)环境变量 +# [[envs]] +# key = "PATH" +# value = "/usr/bin" +# [[envs]] +# key = "LD_LIBRARY_PATH" +# value = "/usr/lib" diff --git a/user/dadk/config/test_dup3_0_1_0.dadk b/user/dadk/config/test_dup3_0_1_0.dadk deleted file mode 100644 index 70c03609..00000000 --- a/user/dadk/config/test_dup3_0_1_0.dadk +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "test_dup3", - "version": "0.1.0", - "description": "测试dup3", - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/test_dup3" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "install": { - "in_dragonos_path": "/bin" - }, - "clean": { - "clean_command": "make clean" - }, - "target_arch": ["x86_64"] -} diff --git a/user/dadk/config/test_dup3_0_1_0.toml b/user/dadk/config/test_dup3_0_1_0.toml new file mode 100644 index 00000000..1d860ab3 --- /dev/null +++ b/user/dadk/config/test_dup3_0_1_0.toml @@ -0,0 +1,51 @@ +# 用户程序名称 +name = "test_dup3" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "测试dup3" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from_source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/test_dup3" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/bin" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" +# (可选)依赖项 +# 注意:如果没有依赖项,忽略此项,不允许只留一个[[depends]] +# [[depends]] +# name = "depend1" +# version = "0.1.1" +# [[depends]] +# name = "depend2" +# version = "0.1.2" +# (可选)环境变量 +# [[envs]] +# key = "PATH" +# value = "/usr/bin" +# [[envs]] +# key = "LD_LIBRARY_PATH" +# value = "/usr/lib" diff --git a/user/dadk/config/test_ebpf_0_1_0.dadk b/user/dadk/config/test_ebpf_0_1_0.dadk deleted file mode 100644 index 250952d3..00000000 --- a/user/dadk/config/test_ebpf_0_1_0.dadk +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "test_ebpf", - "version": "0.1.0", - "description": "to test eBPF", - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/test_ebpf" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "install": { - "in_dragonos_path": "/" - }, - "clean": { - "clean_command": "make clean" - }, - "target_arch": ["x86_64"] -} diff --git a/user/dadk/config/test_ebpf_0_1_0.toml b/user/dadk/config/test_ebpf_0_1_0.toml new file mode 100644 index 00000000..6937a23e --- /dev/null +++ b/user/dadk/config/test_ebpf_0_1_0.toml @@ -0,0 +1,37 @@ +# 用户程序名称 +name = "test_ebpf" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "to test eBPF" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from_source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/test_ebpf" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" + diff --git a/user/dadk/config/test_eventfd_0_1_0.dadk b/user/dadk/config/test_eventfd_0_1_0.dadk deleted file mode 100644 index ddd8f1f5..00000000 --- a/user/dadk/config/test_eventfd_0_1_0.dadk +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "test_eventfd", - "version": "0.1.0", - "description": "test_eventfd", - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/test_eventfd" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "install": { - "in_dragonos_path": "/bin" - }, - "clean": { - "clean_command": "make clean" - }, - "target_arch": ["x86_64"] -} \ No newline at end of file diff --git a/user/dadk/config/test_eventfd_0_1_0.toml b/user/dadk/config/test_eventfd_0_1_0.toml new file mode 100644 index 00000000..337daf9f --- /dev/null +++ b/user/dadk/config/test_eventfd_0_1_0.toml @@ -0,0 +1,32 @@ +# 用户程序名称 +name = "test_eventfd" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "test_eventfd" +# 目标架构 +target-arch = ["x86_64"] + +# 任务源 +[task-source] +# 构建类型 +type = "build-from-source" +# 构建来源 +source = "local" +# 路径或URL +source-path = "user/apps/test_eventfd" + +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" + +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/bin" + +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" \ No newline at end of file diff --git a/user/dadk/config/test_filemap-0.1.0.dadk b/user/dadk/config/test_filemap-0.1.0.dadk deleted file mode 100644 index 2a7becb6..00000000 --- a/user/dadk/config/test_filemap-0.1.0.dadk +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "test_filemap", - "version": "0.1.0", - "description": "测试filemap", - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/test_filemap" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "clean": { - "clean_command": "make clean" - }, - "install": { - "in_dragonos_path": "/bin" - }, - "target_arch": ["x86_64"] -} diff --git a/user/dadk/config/test_filemap-0.1.0.toml b/user/dadk/config/test_filemap-0.1.0.toml new file mode 100644 index 00000000..53e98dbc --- /dev/null +++ b/user/dadk/config/test_filemap-0.1.0.toml @@ -0,0 +1,36 @@ +# 用户程序名称 +name = "test_filemap" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "测试filemap" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from_source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/test_filemap" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/bin" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" diff --git a/user/dadk/config/test_for_robustfutex_0_1_0.dadk b/user/dadk/config/test_for_robustfutex_0_1_0.dadk deleted file mode 100644 index f73f507a..00000000 --- a/user/dadk/config/test_for_robustfutex_0_1_0.dadk +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "test-for-robustfutex", - "version": "0.1.0", - "description": "some tests for robust futex", - "rust_target": null, - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/test-for-robustfutex" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "install": { - "in_dragonos_path": "/" - }, - "clean": { - "clean_command": "make clean" - }, - "envs": [], - "target_arch": ["x86_64"] -} \ No newline at end of file diff --git a/user/dadk/config/test_for_robustfutex_0_1_0.toml b/user/dadk/config/test_for_robustfutex_0_1_0.toml new file mode 100644 index 00000000..7efbea1d --- /dev/null +++ b/user/dadk/config/test_for_robustfutex_0_1_0.toml @@ -0,0 +1,36 @@ +# 用户程序名称 +name = "test-for-robustfutex" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "some tests for robust futex" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from_source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/test-for-robustfutex" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" diff --git a/user/dadk/config/test_fstat-0.1.0.dadk b/user/dadk/config/test_fstat-0.1.0.dadk deleted file mode 100644 index 46f63898..00000000 --- a/user/dadk/config/test_fstat-0.1.0.dadk +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "test_fstat", - "version": "0.1.0", - "description": "一个用来测试fstat能够正常运行的app", - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/test_fstat" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "install": { - "in_dragonos_path": "/bin" - }, - "clean": { - "clean_command": "make clean" - }, - "target_arch": ["x86_64"] -} diff --git a/user/dadk/config/test_fstat-0.1.0.toml b/user/dadk/config/test_fstat-0.1.0.toml new file mode 100644 index 00000000..4caf0fc7 --- /dev/null +++ b/user/dadk/config/test_fstat-0.1.0.toml @@ -0,0 +1,36 @@ +# 用户程序名称 +name = "test_fstat" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "一个用来测试fstat能够正常运行的app" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from_source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/test_fstat" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/bin" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" diff --git a/user/dadk/config/test_fstatfs_0_1_0.dadk b/user/dadk/config/test_fstatfs_0_1_0.dadk deleted file mode 100644 index 24d3074e..00000000 --- a/user/dadk/config/test_fstatfs_0_1_0.dadk +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "test_fstatfs", - "version": "0.1.0", - "description": "测试fstatfs", - "rust_target": null, - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/test_fstatfs" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "install": { - "in_dragonos_path": "/bin" - }, - "clean": { - "clean_command": "make clean" - }, - "envs": [], - "build_once": false, - "install_once": false, - "target_arch": ["x86_64"] -} \ No newline at end of file diff --git a/user/dadk/config/test_fstatfs_0_1_0.toml b/user/dadk/config/test_fstatfs_0_1_0.toml new file mode 100644 index 00000000..6d317a39 --- /dev/null +++ b/user/dadk/config/test_fstatfs_0_1_0.toml @@ -0,0 +1,41 @@ +# 用户程序名称 +name = "test_fstatfs" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "测试fstatfs" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from_source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/test_fstatfs" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/bin" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" +# (可选)依赖项 +# 注意:如果没有依赖项,忽略此项,不允许只留一个[[depends]] +# 由于原文件中依赖项为空,此处省略[[depends]]部分 +# (可选)环境变量 +# 由于原文件中环境变量为空,此处省略[[envs]]部分 diff --git a/user/dadk/config/test_gettimeofday-0.1.0.dadk b/user/dadk/config/test_gettimeofday-0.1.0.dadk deleted file mode 100644 index aaa2f615..00000000 --- a/user/dadk/config/test_gettimeofday-0.1.0.dadk +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "test_gettimeofday", - "version": "0.1.0", - "description": "一个用来测试gettimeofday能够正常运行的app", - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/test_gettimeofday" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "install": { - "in_dragonos_path": "/bin" - }, - "clean": { - "clean_command": "make clean" - }, - "envs": [], - "target_arch": ["x86_64"] -} diff --git a/user/dadk/config/test_gettimeofday-0.1.0.toml b/user/dadk/config/test_gettimeofday-0.1.0.toml new file mode 100644 index 00000000..07f9726e --- /dev/null +++ b/user/dadk/config/test_gettimeofday-0.1.0.toml @@ -0,0 +1,37 @@ +# 用户程序名称 +name = "test_gettimeofday" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "一个用来测试gettimeofday能够正常运行的app" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from_source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/test_gettimeofday" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/bin" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" + diff --git a/user/dadk/config/test_kvm_0_1_0.dadk b/user/dadk/config/test_kvm_0_1_0.dadk deleted file mode 100644 index b9918b6a..00000000 --- a/user/dadk/config/test_kvm_0_1_0.dadk +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "test_kvm", - "version": "0.1.0", - "description": "测试kvm的程序", - "rust_target": null, - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/test_kvm" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "install": { - "in_dragonos_path": "/bin" - }, - "clean": { - "clean_command": "make clean" - }, - "envs": [], - "target_arch": ["x86_64"] -} \ No newline at end of file diff --git a/user/dadk/config/test_kvm_0_1_0.toml b/user/dadk/config/test_kvm_0_1_0.toml new file mode 100644 index 00000000..05b98fde --- /dev/null +++ b/user/dadk/config/test_kvm_0_1_0.toml @@ -0,0 +1,46 @@ +# 用户程序名称 +name = "test_kvm" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "测试kvm的程序" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from_source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/test_kvm" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/bin" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" +# (可选)依赖项 +# 注意:如果没有依赖项,忽略此项,不允许只留一个[[depends]] +# [[depends]] +# name = "depend1" +# version = "0.1.1" +# (可选)环境变量 +# 注意:如果没有环境变量,忽略此项,不允许只留一个[[envs]] +# [[envs]] +# key = "PATH" +# value = "/usr/bin" diff --git a/user/dadk/config/test_lo_0_1_0.dadk b/user/dadk/config/test_lo_0_1_0.dadk deleted file mode 100644 index 2eed4571..00000000 --- a/user/dadk/config/test_lo_0_1_0.dadk +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "test_lo", - "version": "0.1.0", - "description": "test for lo interface", - "rust_target": null, - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/test_lo" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "install": { - "in_dragonos_path": "/" - }, - "clean": { - "clean_command": "make clean" - }, - "envs": [], - "build_once": false, - "install_once": false, - "target_arch": ["x86_64"] -} \ No newline at end of file diff --git a/user/dadk/config/test_lo_0_1_0.toml b/user/dadk/config/test_lo_0_1_0.toml new file mode 100644 index 00000000..927eef96 --- /dev/null +++ b/user/dadk/config/test_lo_0_1_0.toml @@ -0,0 +1,36 @@ +# 用户程序名称 +name = "test_lo" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "test for lo interface" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from_source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/test_lo" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" diff --git a/user/dadk/config/test_mkfifo-0.1.0.dadk b/user/dadk/config/test_mkfifo-0.1.0.dadk deleted file mode 100644 index 1d9dc135..00000000 --- a/user/dadk/config/test_mkfifo-0.1.0.dadk +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "test_mkfifo", - "version": "0.1.0", - "description": "一个用来测试mkfifo能够正常运行的app", - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/test_mkfifo" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "install": { - "in_dragonos_path": "/bin" - }, - "clean": { - "clean_command": "make clean" - }, - "target_arch": ["x86_64"] -} diff --git a/user/dadk/config/test_mkfifo-0.1.0.toml b/user/dadk/config/test_mkfifo-0.1.0.toml new file mode 100644 index 00000000..01677285 --- /dev/null +++ b/user/dadk/config/test_mkfifo-0.1.0.toml @@ -0,0 +1,36 @@ +# 用户程序名称 +name = "test_mkfifo" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "一个用来测试mkfifo能够正常运行的app" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from_source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/test_mkfifo" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/bin" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" diff --git a/user/dadk/config/test_mount_1_0_0.dadk b/user/dadk/config/test_mount_1_0_0.dadk deleted file mode 100644 index 2d475089..00000000 --- a/user/dadk/config/test_mount_1_0_0.dadk +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "test_mount", - "version": "1.0.0", - "description": "to test user mode mount", - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/test-mount" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "install": { - "in_dragonos_path": "/" - }, - "clean": { - "clean_command": "make clean" - }, - "target_arch": ["x86_64"] -} diff --git a/user/dadk/config/test_mount_1_0_0.toml b/user/dadk/config/test_mount_1_0_0.toml new file mode 100644 index 00000000..2724feb2 --- /dev/null +++ b/user/dadk/config/test_mount_1_0_0.toml @@ -0,0 +1,51 @@ +# 用户程序名称 +name = "test_mount" +# 版本号 +version = "1.0.0" +# 用户程序描述信息 +description = "to test user mode mount" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from_source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/test-mount" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" +# (可选)依赖项 +# 注意:如果没有依赖项,忽略此项,不允许只留一个[[depends]] +# [[depends]] +# name = "depend1" +# version = "0.1.1" +# [[depends]] +# name = "depend2" +# version = "0.1.2" +# (可选)环境变量 +# [[envs]] +# key = "PATH" +# value = "/usr/bin" +# [[envs]] +# key = "LD_LIBRARY_PATH" +# value = "/usr/lib" diff --git a/user/dadk/config/test_namespace.dadk b/user/dadk/config/test_namespace.dadk deleted file mode 100644 index 29f1afc6..00000000 --- a/user/dadk/config/test_namespace.dadk +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "test_namespace", - "version": "0.1.0", - "description": "test namespace", - "rust_target": null, - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/test_namespace" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "install": { - "in_dragonos_path": "/bin" - }, - "clean": { - "clean_command": "make clean" - }, - "envs": [], - "target_arch": ["x86_64"] -} \ No newline at end of file diff --git a/user/dadk/config/test_namespace.toml b/user/dadk/config/test_namespace.toml new file mode 100644 index 00000000..5147a837 --- /dev/null +++ b/user/dadk/config/test_namespace.toml @@ -0,0 +1,52 @@ +# 用户程序名称 +name = "test_namespace" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "test namespace" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from_source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/test_namespace" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/bin" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" +# (可选)依赖项 +# 注意:如果没有依赖项,忽略此项,不允许只留一个[[depends]] +# [[depends]] +# name = "depend1" +# version = "0.1.1" +# [[depends]] +# name = "depend2" +# version = "0.1.2" +# (可选)环境变量 +# 注意:如果没有环境变量,忽略此项,不允许只留一个[[envs]] +# [[envs]] +# key = "PATH" +# value = "/usr/bin" +# [[envs]] +# key = "LD_LIBRARY_PATH" +# value = "/usr/lib" diff --git a/user/dadk/config/test_overlayfs.dadk b/user/dadk/config/test_overlayfs.dadk deleted file mode 100644 index 03592a6c..00000000 --- a/user/dadk/config/test_overlayfs.dadk +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "test_overlayfs", - "version": "0.1.0", - "description": "test overlayfs", - "rust_target": null, - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/test_overlayfs" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "install": { - "in_dragonos_path": "/bin" - }, - "clean": { - "clean_command": "make clean" - }, - "envs": [], - "target_arch": ["x86_64"] -} \ No newline at end of file diff --git a/user/dadk/config/test_overlayfs.toml b/user/dadk/config/test_overlayfs.toml new file mode 100644 index 00000000..001b7c0d --- /dev/null +++ b/user/dadk/config/test_overlayfs.toml @@ -0,0 +1,46 @@ +# 用户程序名称 +name = "test_overlayfs" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "test overlayfs" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from_source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/test_overlayfs" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/bin" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" +# (可选)依赖项 +# 注意:如果没有依赖项,忽略此项,不允许只留一个[[depends]] +# [[depends]] +# name = "depend1" +# version = "0.1.1" +# (可选)环境变量 +# 注意:如果没有环境变量,忽略此项,不允许只留一个[[envs]] +# [[envs]] +# key = "PATH" +# value = "/usr/bin" diff --git a/user/dadk/config/test_pty-0.1.0.dadk b/user/dadk/config/test_pty-0.1.0.dadk deleted file mode 100644 index 90dfccf5..00000000 --- a/user/dadk/config/test_pty-0.1.0.dadk +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "test_pty", - "version": "0.1.0", - "description": "简单的pty测试程序", - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/test_pty" - } - } - }, - "depends": [], - "build": { - "build_command": "make install -j $(nproc)" - }, - "install": { - "in_dragonos_path": "/bin" - }, - "clean": { - "clean_command": "make clean" - }, - "envs": [], - "target_arch": ["x86_64"] -} \ No newline at end of file diff --git a/user/dadk/config/test_pty-0.1.0.toml b/user/dadk/config/test_pty-0.1.0.toml new file mode 100644 index 00000000..620344c9 --- /dev/null +++ b/user/dadk/config/test_pty-0.1.0.toml @@ -0,0 +1,46 @@ +# 用户程序名称 +name = "test_pty" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "简单的pty测试程序" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from_source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/test_pty" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install -j $(nproc)" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/bin" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" +# (可选)依赖项 +# 注意:如果没有依赖项,忽略此项,不允许只留一个[[depends]] +# [[depends]] +# name = "depend1" +# version = "0.1.1" +# (可选)环境变量 +# 注意:如果没有环境变量,忽略此项,不允许只留一个[[envs]] +# [[envs]] +# key = "PATH" +# value = "/usr/bin" diff --git a/user/dadk/config/test_ramfs-0.1.0.dadk b/user/dadk/config/test_ramfs-0.1.0.dadk deleted file mode 100644 index 07817f37..00000000 --- a/user/dadk/config/test_ramfs-0.1.0.dadk +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "test_ramfs", - "version": "0.1.0", - "description": "ramfs test bench", - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/test_ramfs" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "install": { - "in_dragonos_path": "/bin" - }, - "clean": { - "clean_command": "make clean" - }, - "envs": [], - "target_arch": ["x86_64"] -} diff --git a/user/dadk/config/test_ramfs-0.1.0.toml b/user/dadk/config/test_ramfs-0.1.0.toml new file mode 100644 index 00000000..79e97972 --- /dev/null +++ b/user/dadk/config/test_ramfs-0.1.0.toml @@ -0,0 +1,36 @@ +# 用户程序名称 +name = "test_ramfs" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "ramfs test bench" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from_source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/test_ramfs" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/bin" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" diff --git a/user/dadk/config/test_shm-0.1.0.dadk b/user/dadk/config/test_shm-0.1.0.dadk deleted file mode 100644 index 515bddee..00000000 --- a/user/dadk/config/test_shm-0.1.0.dadk +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "test_shm", - "version": "0.1.0", - "description": "测试共享内存", - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/test_shm" - } - } - }, - "depends": [ ], - "build": { - "build_command": "make install -j $(nproc)" - }, - "install": { - "in_dragonos_path": "/bin" - }, - "clean": { - "clean_command": "make clean" - }, - "envs": [], - "target_arch": ["x86_64"] -} \ No newline at end of file diff --git a/user/dadk/config/test_shm-0.1.0.toml b/user/dadk/config/test_shm-0.1.0.toml new file mode 100644 index 00000000..10cb27bd --- /dev/null +++ b/user/dadk/config/test_shm-0.1.0.toml @@ -0,0 +1,52 @@ +# 用户程序名称 +name = "test_shm" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "测试共享内存" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from_source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/test_shm" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install -j $(nproc)" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/bin" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" +# (可选)依赖项 +# 注意:如果没有依赖项,忽略此项,不允许只留一个[[depends]] +# [[depends]] +# name = "depend1" +# version = "0.1.1" +# [[depends]] +# name = "depend2" +# version = "0.1.2" +# (可选)环境变量 +# 注意:如果没有环境变量,忽略此项,不允许只留一个[[envs]] +# [[envs]] +# key = "PATH" +# value = "/usr/bin" +# [[envs]] +# key = "LD_LIBRARY_PATH" +# value = "/usr/lib" diff --git a/user/dadk/config/test_sigint-0.1.0.dadk b/user/dadk/config/test_sigint-0.1.0.dadk deleted file mode 100644 index 59b63f84..00000000 --- a/user/dadk/config/test_sigint-0.1.0.dadk +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "test_sigint", - "version": "0.1.0", - "description": "一个用来测试sigint信号传递的app", - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/test_sigint" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "install": { - "in_dragonos_path": "/bin" - }, - "clean": { - "clean_command": "make clean" - }, - "envs": [], - "target_arch": ["x86_64"] -} diff --git a/user/dadk/config/test_sigint-0.1.0.toml b/user/dadk/config/test_sigint-0.1.0.toml new file mode 100644 index 00000000..27868914 --- /dev/null +++ b/user/dadk/config/test_sigint-0.1.0.toml @@ -0,0 +1,36 @@ +# 用户程序名称 +name = "test_sigint" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "一个用来测试sigint信号传递的app" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from_source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/test_sigint" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/bin" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" diff --git a/user/dadk/config/test_signal-0.1.0.dadk b/user/dadk/config/test_signal-0.1.0.dadk deleted file mode 100644 index ea4660d6..00000000 --- a/user/dadk/config/test_signal-0.1.0.dadk +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "test_signal", - "version": "0.1.0", - "description": "一个用来测试signal能够正常运行的app", - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/test_signal" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "install": { - "in_dragonos_path": "/bin" - }, - "clean": { - "clean_command": "make clean" - }, - "envs": [], - "target_arch": ["x86_64"] -} diff --git a/user/dadk/config/test_signal-0.1.0.toml b/user/dadk/config/test_signal-0.1.0.toml new file mode 100644 index 00000000..59445842 --- /dev/null +++ b/user/dadk/config/test_signal-0.1.0.toml @@ -0,0 +1,41 @@ +# 用户程序名称 +name = "test_signal" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "一个用来测试signal能够正常运行的app" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from_source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/test_signal" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/bin" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" +# (可选)依赖项 +# 注意:如果没有依赖项,忽略此项,不允许只留一个[[depends]] +# 由于原文件中依赖项为空,此处省略[[depends]]部分 +# (可选)环境变量 +# 由于原文件中环境变量为空,此处省略[[envs]]部分 diff --git a/user/dadk/config/test_socket-0.1.0.dadk b/user/dadk/config/test_socket-0.1.0.dadk deleted file mode 100644 index 315813dc..00000000 --- a/user/dadk/config/test_socket-0.1.0.dadk +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "test_socket", - "version": "0.1.0", - "description": "测试socket", - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/test_socket" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "clean": { - "clean_command": "make clean" - }, - "install": { - "in_dragonos_path": "/" - }, - "target_arch": ["x86_64"] -} diff --git a/user/dadk/config/test_socket-0.1.0.toml b/user/dadk/config/test_socket-0.1.0.toml new file mode 100644 index 00000000..82998d14 --- /dev/null +++ b/user/dadk/config/test_socket-0.1.0.toml @@ -0,0 +1,36 @@ +# 用户程序名称 +name = "test_socket" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "测试socket" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from_source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/test_socket" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" diff --git a/user/dadk/config/test_sqlite3-3.42.0.dadk b/user/dadk/config/test_sqlite3-3.42.0.dadk deleted file mode 100644 index 8bdf7359..00000000 --- a/user/dadk/config/test_sqlite3-3.42.0.dadk +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "test_sqlite3", - "version": "3.42.0", - "description": "测试sqlite3", - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/test_sqlite3" - } - } - }, - "depends": [], - "build": { - "build_command": "make download_sqlite3 && make install" - }, - "install": { - "in_dragonos_path": "/bin" - }, - "clean": { - "clean_command": "make clean" - }, - "envs": [], - "target_arch": ["x86_64"] -} diff --git a/user/dadk/config/test_sqlite3-3.42.0.toml b/user/dadk/config/test_sqlite3-3.42.0.toml new file mode 100644 index 00000000..a9d56ae0 --- /dev/null +++ b/user/dadk/config/test_sqlite3-3.42.0.toml @@ -0,0 +1,52 @@ +# 用户程序名称 +name = "test_sqlite3" +# 版本号 +version = "3.42.0" +# 用户程序描述信息 +description = "测试sqlite3" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from_source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/test_sqlite3" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make download_sqlite3 && make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/bin" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" +# (可选)依赖项 +# 注意:如果没有依赖项,忽略此项,不允许只留一个[[depends]] +# [[depends]] +# name = "depend1" +# version = "0.1.1" +# [[depends]] +# name = "depend2" +# version = "0.1.2" +# (可选)环境变量 +# 注意:如果没有环境变量,忽略此项,不允许只留一个[[envs]] +# [[envs]] +# key = "PATH" +# value = "/usr/bin" +# [[envs]] +# key = "LD_LIBRARY_PATH" +# value = "/usr/lib" diff --git a/user/dadk/config/test_statfs_0_1_0.dadk b/user/dadk/config/test_statfs_0_1_0.dadk deleted file mode 100644 index 2ea5ff06..00000000 --- a/user/dadk/config/test_statfs_0_1_0.dadk +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "test_statfs", - "version": "0.1.0", - "description": "测试statfs", - "rust_target": null, - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/test_statfs" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "install": { - "in_dragonos_path": "/bin" - }, - "clean": { - "clean_command": "make clean" - }, - "envs": [], - "build_once": false, - "install_once": false, - "target_arch": ["x86_64"] -} \ No newline at end of file diff --git a/user/dadk/config/test_statfs_0_1_0.toml b/user/dadk/config/test_statfs_0_1_0.toml new file mode 100644 index 00000000..689b8a0e --- /dev/null +++ b/user/dadk/config/test_statfs_0_1_0.toml @@ -0,0 +1,41 @@ +# 用户程序名称 +name = "test_statfs" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "测试statfs" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from_source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/test_statfs" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/bin" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" +# (可选)依赖项 +# 注意:如果没有依赖项,忽略此项,不允许只留一个[[depends]] +# 由于原JSON中依赖项为空,此处省略[[depends]]部分 +# (可选)环境变量 +# 由于原JSON中环境变量为空,此处省略[[envs]]部分 diff --git a/user/dadk/config/test_statx_0_1_0.dadk b/user/dadk/config/test_statx_0_1_0.dadk deleted file mode 100644 index 07ff640a..00000000 --- a/user/dadk/config/test_statx_0_1_0.dadk +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "test_statx", - "version": "0.1.0", - "description": "statx测试", - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/test_statx" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "install": { - "in_dragonos_path": "/" - }, - "clean": { - "clean_command": "make clean" - }, - "envs": [], - "build_once": false, - "install_once": false, - "target_arch": ["x86_64"] -} \ No newline at end of file diff --git a/user/dadk/config/test_statx_0_1_0.toml b/user/dadk/config/test_statx_0_1_0.toml new file mode 100644 index 00000000..6ff06949 --- /dev/null +++ b/user/dadk/config/test_statx_0_1_0.toml @@ -0,0 +1,41 @@ +# 用户程序名称 +name = "test_statx" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "statx测试" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from_source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/test_statx" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" +# (可选)依赖项 +# 注意:如果没有依赖项,忽略此项,不允许只留一个[[depends]] +# 由于依赖项为空,此处忽略 +# (可选)环境变量 +# 由于环境变量为空,此处忽略 diff --git a/user/dadk/config/test_symlink_0_1_0.dadk b/user/dadk/config/test_symlink_0_1_0.dadk deleted file mode 100644 index ea5b0dff..00000000 --- a/user/dadk/config/test_symlink_0_1_0.dadk +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "test-symlink", - "version": "0.1.0", - "description": "测试symlink系统调用", - "rust_target": "x86_64-unknown-dragonos", - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/test-symlink" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "install": { - "in_dragonos_path": "/" - }, - "clean": { - "clean_command": "make clean" - }, - "envs": [], - "build_once": false, - "install_once": false, - "target_arch": [ - "x86_64" - ] -} \ No newline at end of file diff --git a/user/dadk/config/test_symlink_0_1_0.toml b/user/dadk/config/test_symlink_0_1_0.toml new file mode 100644 index 00000000..f173d24f --- /dev/null +++ b/user/dadk/config/test_symlink_0_1_0.toml @@ -0,0 +1,41 @@ +# 用户程序名称 +name = "test-symlink" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "测试symlink系统调用" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from_source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/test-symlink" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" +# (可选)依赖项 +# 注意:如果没有依赖项,忽略此项,不允许只留一个[[depends]] +# 由于依赖项为空,这里不添加[[depends]]部分 +# (可选)环境变量 +# 由于环境变量为空,这里不添加[[envs]]部分 diff --git a/user/dadk/config/test_tokio-0.1.0.dadk b/user/dadk/config/test_tokio-0.1.0.dadk deleted file mode 100644 index ea7c2e44..00000000 --- a/user/dadk/config/test_tokio-0.1.0.dadk +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "test_tokio", - "version": "0.1.0", - "description": "测试tokio", - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/test_tokio" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "clean": { - "clean_command": "make clean" - }, - "install": { - "in_dragonos_path": "/" - }, - "target_arch": ["x86_64"] -} diff --git a/user/dadk/config/test_tokio-0.1.0.toml b/user/dadk/config/test_tokio-0.1.0.toml new file mode 100644 index 00000000..9479103f --- /dev/null +++ b/user/dadk/config/test_tokio-0.1.0.toml @@ -0,0 +1,41 @@ +# 用户程序名称 +name = "test_tokio" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "测试tokio" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from_source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/test_tokio" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" +# (可选)依赖项 +# 注意:如果没有依赖项,忽略此项,不允许只留一个[[depends]] +# 由于原文件中依赖项为空,此处省略[[depends]]部分 +# (可选)环境变量 +# 由于原文件中没有环境变量,此处省略[[envs]]部分 diff --git a/user/dadk/config/test_uart-0.1.0.dadk b/user/dadk/config/test_uart-0.1.0.dadk deleted file mode 100644 index b30cc293..00000000 --- a/user/dadk/config/test_uart-0.1.0.dadk +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "test_uart", - "version": "0.1.0", - "description": "一个用来测试串口设备能够正常运行的app", - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/test_uart" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "install": { - "in_dragonos_path": "/bin" - }, - "clean": { - "clean_command": "make clean" - }, - "envs": [], - "target_arch": ["x86_64"] -} diff --git a/user/dadk/config/test_uart-0.1.0.toml b/user/dadk/config/test_uart-0.1.0.toml new file mode 100644 index 00000000..dc4dd3fc --- /dev/null +++ b/user/dadk/config/test_uart-0.1.0.toml @@ -0,0 +1,46 @@ +# 用户程序名称 +name = "test_uart" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "一个用来测试串口设备能够正常运行的app" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from_source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/test_uart" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/bin" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" +# (可选)依赖项 +# 注意:如果没有依赖项,忽略此项,不允许只留一个[[depends]] +# [[depends]] +# name = "depend1" +# version = "0.1.1" +# (可选)环境变量 +# 注意:如果没有环境变量,忽略此项,不允许只留一个[[envs]] +# [[envs]] +# key = "PATH" +# value = "/usr/bin" diff --git a/user/dadk/config/test_utimensat_0_1_0.dadk b/user/dadk/config/test_utimensat_0_1_0.dadk deleted file mode 100644 index 098a3670..00000000 --- a/user/dadk/config/test_utimensat_0_1_0.dadk +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "test_utimensat", - "version": "0.1.0", - "description": "test_utimensat", - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/test_utimensat" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "install": { - "in_dragonos_path": "/bin" - }, - "clean": { - "clean_command": "make clean" - }, - "target_arch": ["x86_64"] -} \ No newline at end of file diff --git a/user/dadk/config/test_utimensat_0_1_0.toml b/user/dadk/config/test_utimensat_0_1_0.toml new file mode 100644 index 00000000..d27cd585 --- /dev/null +++ b/user/dadk/config/test_utimensat_0_1_0.toml @@ -0,0 +1,36 @@ +# 用户程序名称 +name = "test_utimensat" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "test_utimensat" +# 目标架构 +target-arch = ["x86_64"] + +# 任务源 +[task-source] +# 构建类型 +type = "build-from-source" +# 构建来源 +source = "local" +# 路径或URL +source-path = "user/apps/test_utimensat" + +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" + +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/bin" + +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" + +# (可选)依赖项 +# 注意:如果没有依赖项,忽略此项,不允许只留一个[[depends]] +# 由于原文件中"depends"为空数组,此处不包含任何依赖项 diff --git a/user/dadk/config/user_manage-0.1.0.dadk b/user/dadk/config/user_manage-0.1.0.dadk deleted file mode 100644 index 03892a48..00000000 --- a/user/dadk/config/user_manage-0.1.0.dadk +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "user_manage_tool", - "version": "0.1.0", - "description": "用户管理工具", - "task_type": { - "BuildFromSource": { - "Local": { - "path": "apps/user-manage" - } - } - }, - "depends": [], - "build": { - "build_command": "make install" - }, - "install": { - "in_dragonos_path": "/" - }, - "clean": { - "clean_command": "make clean" - }, - "envs": [], - "target_arch": ["x86_64"] -} \ No newline at end of file diff --git a/user/dadk/config/user_manage-0.1.0.toml b/user/dadk/config/user_manage-0.1.0.toml new file mode 100644 index 00000000..00462438 --- /dev/null +++ b/user/dadk/config/user_manage-0.1.0.toml @@ -0,0 +1,36 @@ +# 用户程序名称 +name = "user_manage_tool" +# 版本号 +version = "0.1.0" +# 用户程序描述信息 +description = "用户管理工具" +# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果 +build-once = false +# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装 +install-once = false +# 目标架构 +# 可选值:"x86_64", "aarch64", "riscv64" +target-arch = ["x86_64"] +# 任务源 +[task-source] +# 构建类型 +# 可选值:"build-from_source", "install-from-prebuilt" +type = "build-from-source" +# 构建来源 +# "build_from_source" 可选值:"git", "local", "archive" +# "install_from_prebuilt" 可选值:"local", "archive" +source = "local" +# 路径或URL +source-path = "user/apps/user-manage" +# 构建相关信息 +[build] +# (可选)构建命令 +build-command = "make install" +# 安装相关信息 +[install] +# (可选)安装到DragonOS的路径 +in-dragonos-path = "/" +# 清除相关信息 +[clean] +# (可选)清除命令 +clean-command = "make clean" diff --git a/user/sysconfig/home/reach/system/shell.service b/user/sysconfig/home/reach/system/shell.service deleted file mode 100644 index 75bd9a40..00000000 --- a/user/sysconfig/home/reach/system/shell.service +++ /dev/null @@ -1,8 +0,0 @@ -[Unit] -Description=Shell - -[Service] -Type=simple -ExecStart=/bin/NovaShell -Restart=always -ExecStartPre=-/bin/about.elf