1
1

海洋os镜像仓库,备份用。

akucxy 9fb6ab324b Merge branch 'task-async' of akucxy/oceanic into master 1 gadu atpakaļ
.cargo 9bba436b06 Adapt to new rust versions 2 gadi atpakaļ
h2o 89caac0f5a Adjust process & thread exit & kill behavior 1 gadu atpakaļ
scripts 2acd752740 Add local FS 1 gadu atpakaļ
src 89caac0f5a Adjust process & thread exit & kill behavior 1 gadu atpakaļ
xtask 681f856b30 Replace builder with macro for RPC protocols 1 gadu atpakaļ
.gdbinit 5c5a5e0f14 Relocate some symbols 2 gadi atpakaļ
.gitignore a0fd92920c Get Modes 3 gadi atpakaļ
Cargo.toml c0683ff46a Rename libr to h2o_std 1 gadu atpakaļ
LICENSE-APACHE c113d6332a Add explicit licenses 2 gadi atpakaļ
LICENSE-MIT c113d6332a Add explicit licenses 2 gadi atpakaļ
README.md 7bebb63940 Add crt stuff (unfinished) 2 gadi atpakaļ
README.zh-cn.md 7bebb63940 Add crt stuff (unfinished) 2 gadi atpakaļ
rust-toolchain.toml 70e68053b9 Update README.md 2 gadi atpakaļ
rustfmt.toml 541ad7e4c0 Update license: MIT or Ap 2.0 2 gadi atpakaļ

README.md

Oceanic: A PC desktop OS

996.icu

中文说明

WARNING: The project is still at the very early stage, and user programs are unavailable in the OS. Any potential risk of running the software either in virtual machines or bare metals should be taken into account by the user.

Currently, the project only supports x86_64 architecture, and it will probably support aarch64 in the future.

Source tree

  • debug - contains the decompiled assembly files, debug symbols, object file informations. and the serial log files of the virtual machines.
  • h2o - contains the source code for the kernel.
  • scripts - contains the scripts required for building the project.
  • src - contains the source code of libraries and executables for the entire project.
  • target - contains the binaries and virtual disk files.
  • xtask - contains the builder for the project.

Build and debug from source

Linux

  1. Download rust and other dependencies (Ubuntu for example):

    # Select the nightly channel for rust
    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
    bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)"
    sudo apt install build-essential qemu-system-x86
    
  2. Add the following target:

    rustup target add nightly-x86_64-unknown-linux-gnu
    
  3. Change to the project's root directory and run the following command:

    cargo xtask dist img
    
  4. To run the OS with qemu, run the following command:

    sh scripts/run.sh qemu N # N for the number of CPUs
    

    and check debug/qemu.log file, you should see the output of the OS.

  5. To debug with qemu, run the following command:

    sh scripts/run.sh qdbg N # Same as above
    

    and open a new terminal:

    # cd to the working directory
    gdb debug/FOO.sym
    # FOO for the binary you want to debug;
    # you may check it in the directory first.
    
    # In the gdb:
    target remote :1234
    

then you can set breakpoints (KERNEL.sym for example):

   b kmain
   c
  1. If you want to run the OS with other VM softwares, check the run.sh first, and manually create VM configuration files as you wish. Don't forget to add the virtual disk and the serial log or no output will be present!

Contributions

If you want to make contributions, be sure to contact me first.