An OS kernel written in rust. Non POSIX

Overview

"Tifflin" Experimental Kernel (and eventually Operating System)

This is an experiment in writing an OS Kernel in rust (http://rust-lang.org).

Mostly the architecture is being designed as I go along, but it will be written to be architecture independent (the current verison is x86_64/amd64).

Design Features

  • Runtime module initialisation with dependencies
  • Clear user-kernel separation of duties
  • Userland owns the ELF loader, kernel uses a custom format for init.
  • Object-based syscall API
  • Kernel-provided window manager (yes, I know old windows did this)

Progress

  • Filesystems
  • ISO9660
  • FAT12/16/32
  • Storage
  • (P)ATA
  • SATA (AHCI)
  • ATAPI CDROM
  • VirtIO Block
  • Input
  • PS2 Keyboard/Mouse
  • Graphics
  • Multiboot only
  • GUI Apps
  • Login (Credentials are root/password)
  • "GUI Shell" (with background!)
  • Text Terminal app (with basic set of commands)
  • Filesystem viewer
  • Architectures
  • amd64 (aka x86_64) - Boots to limit of implementation
  • armv7 - Loads userland then crashes

Build Dependencies

  • nasm
  • GNU Binutils (cross-compiled)
  • GCC (for ACPICA)
  • pxelinux
  • libguestfs-tools (for creating disk images)
Comments
  • Building

    Building

    This seems like a neat project. Though, the README does seem to lack build instructions. Building an OS is generally not simple, and I'm having some trouble doing so.

    I ran ARCH=amd64 ./BuildCrossCompiler. It failed to compile on my (Arch Linux) system, annoyingly. But I was able to fix that by bumping the binutils and gcc versions in that script to the versions Arch currently uses.

    It seemed I also needed to manually set PATH to include the built toolchain.

    Then make UPDATE, and make. Which works.

    But now, make run fails:

    ../../Usermode/.output/amd64/bin: No such file or directory
    
    opened by ids1024 7
  • I can't build the kernel in ubuntu 14.04.3 x86_64

    I can't build the kernel in ubuntu 14.04.3 x86_64

    I build the kernel but not success.

    OS: ubuntu 14.04.3
    ARCH: x86_64

    prepare:

        $sudo apt-get install nasm
        $sudo apt-get install imagemagick
        $cd ~
        $mkdir build
        $cd build
        $mkdir build-tools  kernel  tools
        $export PRJROOT=~/build/
        $export TARGET=x86_64-none-elf
        $export PREFIX=$PRJROOT/tools
        $export TARGET_PREFIX=$PREFIX/$TARGET
        $export PATH=$PREFIX/bin:$PATH
    

    build cross packages:

    1. binutils-2.25.1
        $cd $PRJROOT/build-tools
        $mkdir build-binutils
        $cd build-binutils
        $../binutils-2.25.1/configure  --target=$TARGET --prefix=$PREFIX
        $make 
        $make install
    
    1. gcc-4.8.4
        $cd $PRJROOT/build-tools
        $mkdir build-gcc
        $cd build-gcc
        $../gcc-4.8.4/configure --target=$TARGET --prefix=$PREFIX --disable-libssp  --enable-languages=c --disable-threads --disable-shared --disable-libquadmath
        $make
        $make install
    

    build rust_os:

       $cd ~/rust_os
       $make UPDATE
       $make
    

    build log:

    >>> all: libcore source
    make[1]: `../libcore/lib.rs' is up to date.
    >>> all: Usermode
    [AS] .objs/amd64/loader/start.ao
    [RUSTC] .objs/amd64/libcore.rlib
    [RUSTC] .objs/amd64/libstd_io.rlib
    [RUSTC] .objs/amd64/libsyscalls.rlib
    libsyscalls/../../syscalls.inc.rs:104:19: 104:70 warning: constant item is never used: `GUI_WIN_SETCLIENTREGION`, #[warn(dead_code)] on by default
    libsyscalls/../../syscalls.inc.rs:104       $( $( $(#[$a])* pub const $n: u16 = self::calls::$cname::$n as u16; )* )*
                                                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    libsyscalls/../../syscalls.inc.rs:109:1: 189:2 note: in this expansion of def_classes! (defined in libsyscalls/../../syscalls.inc.rs)
    libsyscalls/vfs.rs:22:10: 22:11 warning: unused variable: `v`, #[warn(unused_variables)] on by default
    libsyscalls/vfs.rs:22   fn from(v: Error) -> ::std_io::Error {
                                    ^
    [RUSTC] .objs/amd64/libmacros.rlib
    [RUSTC] .objs/amd64/libstd_sync.rlib
    [RUSTC] .objs/amd64/liballoc.rlib
    liballoc/grc.rs:215:13: 215:23 warning: unnecessary parentheses around `for` head expression, #[warn(unused_parens)] on by default
    liballoc/grc.rs:215             for i in (0 .. len) {
                                             ^~~~~~~~~~
    [RUSTC rust-src] .objs/amd64/librustc_unicode.rlib
    [RUSTC rust-src] .objs/amd64/libcollections.rlib
    [RUSTC] .objs/amd64/libstd_rt.rlib
    [RUSTC] .objs/amd64/libloader.rlib
    [RUSTC] .objs/amd64/libstd.rlib
    [RUSTC] .objs/amd64/libbyteorder.rlib
    libbyteorder/src/lib.rs:94:12: 94:25 warning: unnecessary parentheses around `for` head expression, #[warn(unused_parens)] on by default
    libbyteorder/src/lib.rs:94      for i in (0 .. nbytes) {
                                             ^~~~~~~~~~~~~
    libbyteorder/src/lib.rs:129:12: 129:25 warning: unnecessary parentheses around `for` head expression, #[warn(unused_parens)] on by default
    libbyteorder/src/lib.rs:129         for i in (0 .. nbytes) {
                                                 ^~~~~~~~~~~~~
    [RUSTC crates.io] .objs/amd64/libcmdline_words_parser.rlib
    ../externals/crates.io/cmdline_words_parser/src/lib.rs:6:30: 6:44 warning: unused or unknown feature, #[warn(unused_features)] on by default
    ../externals/crates.io/cmdline_words_parser/src/lib.rs:6 #![cfg_attr(nightly, feature(core_slice_ext))]
                                                                                          ^~~~~~~~~~~~~~
    [RUSTC] .objs/amd64/loader/src/main.o
    [LD] .output/amd64/bin/loader
    [AS] .objs/amd64/rustrt0.o
    [CC] .output/amd64/libs/libloader_dyn.so
    [RUSTC] .objs/amd64/libtifflin_process.rlib
    [RUSTC] .objs/amd64/init
    [RUSTC] .objs/amd64/libasync.rlib
    [RUSTC] .objs/amd64/libwtk.rlib
    libwtk/surface.rs:239:14: 239:23 warning: unnecessary parentheses around `for` head expression, #[warn(unused_parens)] on by default
    libwtk/surface.rs:239       for row in (0 .. 16)
                                           ^~~~~~~~~
    libwtk/surface.rs:244:15: 244:28 warning: unnecessary parentheses around `for` head expression, #[warn(unused_parens)] on by default
    libwtk/surface.rs:244           for col in (0usize .. 8)
                                               ^~~~~~~~~~~~~
    libwtk/geom.rs:25:1: 25:22 warning: struct is never used: `Unit`, #[warn(dead_code)] on by default
    libwtk/geom.rs:25 pub struct Unit(u32);
                      ^~~~~~~~~~~~~~~~~~~~~
    libwtk/geom.rs:26:1: 26:20 warning: struct is never used: `Mm`, #[warn(dead_code)] on by default
    libwtk/geom.rs:26 pub struct Mm(u32);
                      ^~~~~~~~~~~~~~~~~~~
    libwtk/layout.rs:147:25: 147:30 warning: variant is never used: `Bevel`, #[warn(dead_code)] on by default
    libwtk/layout.rs:147 enum FrameType { Raise, Bevel }
                                                 ^~~~~
    libwtk/static_layout.rs:6:18: 6:26 warning: variant is never used: `Vertical`, #[warn(dead_code)] on by default
    libwtk/static_layout.rs:6 enum Direction { Vertical, Horizontal }
                                               ^~~~~~~~
    libwtk/static_layout.rs:6:28: 6:38 warning: variant is never used: `Horizontal`, #[warn(dead_code)] on by default
    libwtk/static_layout.rs:6 enum Direction { Vertical, Horizontal }
                                                         ^~~~~~~~~~
    libwtk/static_layout.rs:19:1: 22:2 warning: struct is never used: `BoxEle`, #[warn(dead_code)] on by default
    libwtk/static_layout.rs:19 pub struct BoxEle<E: Element> {
    libwtk/static_layout.rs:20  size: Option<Size>,
    libwtk/static_layout.rs:21  ele: E,
    libwtk/static_layout.rs:22 }
    libwtk/static_layout.rs:25:2: 30:3 warning: method is never used: `fixed`, #[warn(dead_code)] on by default
    libwtk/static_layout.rs:25  pub fn fixed(ele: E, size: u32) -> BoxEle<E> {
    libwtk/static_layout.rs:26      BoxEle {
    libwtk/static_layout.rs:27          size: Some(Size(size)),
    libwtk/static_layout.rs:28          ele: ele,
    libwtk/static_layout.rs:29      }
    libwtk/static_layout.rs:30  }
    libwtk/static_layout.rs:31:2: 36:3 warning: method is never used: `expand`, #[warn(dead_code)] on by default
    libwtk/static_layout.rs:31  pub fn expand(ele: E) -> BoxEle<E> {
    libwtk/static_layout.rs:32      BoxEle {
    libwtk/static_layout.rs:33          size: None,
    libwtk/static_layout.rs:34          ele: ele,
    libwtk/static_layout.rs:35      }
    libwtk/static_layout.rs:36  }
    libwtk/static_layout.rs:42:2: 44:3 warning: method is never used: `new`, #[warn(dead_code)] on by default
    libwtk/static_layout.rs:42  fn new(dir: Direction, eles: S) -> Box<S> {
    libwtk/static_layout.rs:43      Box { direction: dir, sizes: Default::default(), elements: eles }
    libwtk/static_layout.rs:44  }
    libwtk/static_layout.rs:46:2: 48:3 warning: method is never used: `new_vert`, #[warn(dead_code)] on by default
    libwtk/static_layout.rs:46  pub fn new_vert(eles: S) -> Box<S> {
    libwtk/static_layout.rs:47      Box::new(Direction::Vertical, eles)
    libwtk/static_layout.rs:48  }
    libwtk/static_layout.rs:50:2: 52:3 warning: method is never used: `new_horiz`, #[warn(dead_code)] on by default
    libwtk/static_layout.rs:50  pub fn new_horiz(eles: S) -> Box<S> {
    libwtk/static_layout.rs:51      Box::new(Direction::Horizontal, eles)
    libwtk/static_layout.rs:52  }
    [RUSTC] .objs/amd64/login
    [RUSTC] .objs/amd64/simple_console
    simple_console/src/terminal_surface.rs:61:13: 61:33 warning: unnecessary parentheses around `for` head expression, #[warn(unused_parens)] on by default
    simple_console/src/terminal_surface.rs:61           for i in (px_pos .. pen_cell) {
                                                                 ^~~~~~~~~~~~~~~~~~~~
    simple_console/src/terminal_surface.rs:143:14: 143:23 warning: unnecessary parentheses around `for` head expression, #[warn(unused_parens)] on by default
    simple_console/src/terminal_surface.rs:143      for row in (0 .. 16)
                                                               ^~~~~~~~~
    simple_console/src/terminal_surface.rs:149:15: 149:28 warning: unnecessary parentheses around `for` head expression, #[warn(unused_parens)] on by default
    simple_console/src/terminal_surface.rs:149          for col in (0usize .. 8)
                                                                   ^~~~~~~~~~~~~
    simple_console/src/terminal_surface.rs:9:35: 9:38 warning: unused import, #[warn(unused_imports)] on by default
    simple_console/src/terminal_surface.rs:9 use syscalls::gui::{Window, Dims, Pos, Rect, Colour};
                                                                               ^~~
    simple_console/src/terminal_surface.rs:70:2: 85:3 warning: method is never used: `shift_line_right`, #[warn(dead_code)] on by default
    simple_console/src/terminal_surface.rs:70   pub fn shift_line_right(&mut self, pos: usize) {
    simple_console/src/terminal_surface.rs:71       let cw = C_CELL_DIMS.w as usize;
    simple_console/src/terminal_surface.rs:72       let px_pos = pos * cw;
    simple_console/src/terminal_surface.rs:73       let pen_cell = self.pos.d.w as usize - cw;
    simple_console/src/terminal_surface.rs:74       let fc = self.fill_colour;
    simple_console/src/terminal_surface.rs:75       for l in self.row_scanlines() {
                                              ...
    simple_console/src/terminal.rs:56:2: 58:3 warning: method is never used: `shift_line_right`, #[warn(dead_code)] on by default
    simple_console/src/terminal.rs:56   pub fn shift_line_right(&mut self) {
    simple_console/src/terminal.rs:57       self.surf.shift_line_right(self.cur_col);
    simple_console/src/terminal.rs:58   }
    >>> all: Kernel
    [LD] -o bin/kernel-amd64.bin
    x86_64-none-elf-ld: cannot open map file .obj/amd64/map.txt: No such file or directory
    make[1]: *** [bin/kernel-amd64.bin] Error 1
    make: *** [all] Error 2
    
    opened by Fishman2009 5
  • build clean checkout error in ubuntu 14.04.3 x86_64

    build clean checkout error in ubuntu 14.04.3 x86_64

    Prepare

    $cat /etc/lsb-release
    DISTRIB_ID=Ubuntu
    DISTRIB_RELEASE=14.04
    DISTRIB_CODENAME=trusty
    DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS"
    $uname -a
    Linux ubuntu 3.16.0-45-generic #60~14.04.1-Ubuntu SMP Fri Jul 24 21:16:23 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
    
    $sudo apt-fast install nasm imagemagick
    
    $make --version
    GNU Make 3.81
    ## Setup enviroment
    $export PRJROOT=$HOME/build
    $export TARGET=x86_64-none-elf
    $export PREFIX=$PRJROOT/tools
    $export TARGET_PREFIX=$PREFIX/$TARGET
    $export PATH=$PREFIX/bin:$PATH
    $cd $PRJROOT
    $mkdir -p build-tools kernel tools
    

    Build binutils

    $cd $PRJROOT/build-tools
    $mkdir -p $PRJROOT/build-binutils/
    $wget http://ftp.gnu.org/gnu/binutils/binutils-2.25.1.tar.gz
    $tar xzvf binutils-2.25.1.tar.gz
    $cd build-binutils/
    $../binutils-2.25.1/configure  --target=$TARGET --prefix=$PREFIX
    $make && make install
    

    Build Gcc

    $cd $PRJROOT/build-tools
    $mkdir -p $PRJROOT/build-gcc/
    $wget http://ftp.gnu.org/gnu/gcc/gcc-5.2.0/gcc-5.2.0.tar.gz
    $tar xzvf gcc-5.2.0.tar.gz
    $cd build-gcc/
    $sudo apt-get install libgmp-dev libmpfr-dev libmpc-dev 
    $../gcc-5.2.0/configure --target=$TARGET --prefix=$PREFIX --enable-languages=c --disable-threads --disable-shared --disable-libssp --disable-libquadmath
    $make && make install
    

    Build Rust_OS

    $cd ~
    $git clone https://github.com/thepowersgang/rust_os.git
    $cd rust_os
    $make UPDATE
    $make
    

    $ make
    >>> all: libcore source
    tar -xmf ../rustc-nightly-src.tar.gz -C ../ rustc-nightly/src/libcore --transform 's~^rustc-nightly/src/~~'
    cd .. && patch -p0 < libcore_nofp.patch
    patching file libcore/clone.rs
    patching file libcore/default.rs
    patching file libcore/fmt/mod.rs
    Hunk #4 succeeded at 1440 (offset 31 lines).
    Hunk #5 succeeded at 1465 (offset 31 lines).
    Hunk #6 succeeded at 1519 (offset 31 lines).
    patching file libcore/intrinsics.rs
    patching file libcore/lib.rs
    patching file libcore/num/flt2dec/decoder.rs
    patching file libcore/num/mod.rs
    Hunk #1 succeeded at 20 with fuzz 1 (offset 1 line).
    Hunk #2 succeeded at 46 (offset 1 line).
    Hunk #3 succeeded at 103 (offset 1 line).
    Hunk #4 succeeded at 1270 (offset 1 line).
    Hunk #5 succeeded at 1475 with fuzz 2 (offset 2 lines).
    patching file libcore/ops.rs
    >>> all: Graphics
    make[1]: 正在进入目录 `/home/fishman/rust_os/Graphics'
    mkdir -p .output/shared/
    convert open-iconic_moon-2x.png -depth 8 -channel A -separate gray:.tmp.power.r8
    /bin/echo -ne "\x7FR8M\x10\x00\x10\x00" | cat - .tmp.power.r8 > .output/shared/power.r8
    mkdir -p .output/shared/
    convert open-iconic_cog-2x.png -depth 8 -channel A -separate gray:.tmp.options.r8
    /bin/echo -ne "\x7FR8M\x10\x00\x10\x00" | cat - .tmp.options.r8 > .output/shared/options.r8
    mkdir -p .output/shared/
    convert rustacean-orig.png -depth 8 rgb:.tmp.background.r24
    /bin/echo -ne "\x7FR24\xb0\x04\x20\x03" | cat - .tmp.background.r24 > .output/shared/background.r24
    make[1]:正在离开目录 `/home/fishman/rust_os/Graphics'
    >>> all: Usermode
    [AS] .objs/amd64/loader/start.ao
    tar -C .. -xmf ../rustc-nightly-src.tar.gz --wildcards 'rustc-nightly/src/lib*' rustc-nightly/src/driver rustc-nightly/src/rt --transform 's~^rustc-nightly/src/~rustc_src/~'
    [RUSTC] .objs/amd64/libcore.rlib
    [RUSTC] .objs/amd64/libsyscalls.rlib
    libsyscalls/../../syscalls.inc.rs:104:19: 104:70 warning: $<2>$<2>constant item is never used: `GUI_WIN_SETCLIENTREGION`, #[warn(dead_code)] on by default$<2>
    libsyscalls/../../syscalls.inc.rs:104           $( $( $(#[$a])* pub const $n: u16 = self::calls::$cname::$n as u16; )* )*
                                                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~$<2>
    libsyscalls/../../syscalls.inc.rs:109:1: 195:2 note: $<2>$<2>in this expansion of def_classes! (defined in libsyscalls/../../syscalls.inc.rs)$<2>
    [RUSTC] .objs/amd64/libmacros.rlib
    [RUSTC] .objs/amd64/libstd_sync.rlib
    [RUSTC] .objs/amd64/liballoc.rlib
    liballoc/grc.rs:215:13: 215:23 warning: $<2>$<2>unnecessary parentheses around `for` head expression, #[warn(unused_parens)] on by default$<2>
    liballoc/grc.rs:215                     for i in (0 .. len) {
                                                     ^~~~~~~~~~$<2>
    tar -C .. -xmf ../rustc-nightly-src.tar.gz --wildcards 'rustc-nightly/src/lib*' rustc-nightly/src/driver rustc-nightly/src/rt --transform 's~^rustc-nightly/src/~rustc_src/~'
    tar -C .. -xmf ../rustc-nightly-src.tar.gz --wildcards 'rustc-nightly/src/lib*' rustc-nightly/src/driver rustc-nightly/src/rt --transform 's~^rustc-nightly/src/~rustc_src/~'
    [RUSTC rust-src] .objs/amd64/librustc_unicode.rlib
    [RUSTC rust-src] .objs/amd64/libcollections.rlib
    [RUSTC] .objs/amd64/libstd_rt.rlib
    [RUSTC] .objs/amd64/libloader.rlib
    [RUSTC] .objs/amd64/libstd_io.rlib
    libstd_io/lib.rs:31:2: 31:13 warning: $<2>$<2>variant is never used: `Interrupted`, #[warn(dead_code)] on by default$<2>
    libstd_io/lib.rs:31     Interrupted,
                            ^~~~~~~~~~~$<2>
    [RUSTC] .objs/amd64/libstd.rlib
    [RUSTC] .objs/amd64/libbyteorder.rlib
    libbyteorder/src/lib.rs:94:12: 94:25 warning: $<2>$<2>unnecessary parentheses around `for` head expression, #[warn(unused_parens)] on by default$<2>
    libbyteorder/src/lib.rs:94              for i in (0 .. nbytes) {
                                                     ^~~~~~~~~~~~~$<2>
    libbyteorder/src/lib.rs:129:12: 129:25 warning: $<2>$<2>unnecessary parentheses around `for` head expression, #[warn(unused_parens)] on by default$<2>
    libbyteorder/src/lib.rs:129             for i in (0 .. nbytes) {
                                                     ^~~~~~~~~~~~~$<2>
    test -e ../externals/crates.io/cmdline_words_parser/src/lib.rs || git clone `cat ../externals/crates.io/cmdline_words_parser.repo` ../externals/crates.io/cmdline_words_parser && (cd ../externals/crates.io/cmdline_words_parser && git pull)
    正克隆到 '../externals/crates.io/cmdline_words_parser'...
    remote: Counting objects: 48, done.
    remote: Total 48 (delta 0), reused 0 (delta 0), pack-reused 48
    Unpacking objects: 100% (48/48), done.
    检查连接... 完成。
    Already up-to-date.
    [RUSTC crates.io] .objs/amd64/libcmdline_words_parser.rlib
    ../externals/crates.io/cmdline_words_parser/src/lib.rs:6:30: 6:44 warning: $<2>$<2>unused or unknown feature, #[warn(unused_features)] on by default$<2>
    ../externals/crates.io/cmdline_words_parser/src/lib.rs:6 #![cfg_attr(nightly, feature(core_slice_ext))]
                                                                                          ^~~~~~~~~~~~~~$<2>
    [RUSTC] .objs/amd64/loader/src/main.o
    [LD] .output/amd64/bin/loader
    [AS] .objs/amd64/rustrt0.o
    [CC] .output/amd64/libs/libloader_dyn.so
    [RUSTC] .objs/amd64/libtifflin_process.rlib
    [RUSTC] .objs/amd64/init
    [RUSTC] .objs/amd64/libasync.rlib
    [RUSTC] .objs/amd64/libwtk.rlib
    libwtk/surface.rs:266:14: 266:23 warning: $<2>$<2>unnecessary parentheses around `for` head expression, #[warn(unused_parens)] on by default$<2>
    libwtk/surface.rs:266           for row in (0 .. 16)
                                               ^~~~~~~~~$<2>
    libwtk/surface.rs:271:15: 271:28 warning: $<2>$<2>unnecessary parentheses around `for` head expression, #[warn(unused_parens)] on by default$<2>
    libwtk/surface.rs:271                   for col in (0usize .. 8)
                                                       ^~~~~~~~~~~~~$<2>
    libwtk/geom.rs:33:1: 33:22 warning: $<2>$<2>struct is never used: `Unit`, #[warn(dead_code)] on by default$<2>
    libwtk/geom.rs:33 pub struct Unit(u32);
                      ^~~~~~~~~~~~~~~~~~~~~$<2>
    libwtk/geom.rs:34:1: 34:20 warning: $<2>$<2>struct is never used: `Mm`, #[warn(dead_code)] on by default$<2>
    libwtk/geom.rs:34 pub struct Mm(u32);
                      ^~~~~~~~~~~~~~~~~~~$<2>
    libwtk/text.rs:9:2: 9:16 warning: $<2>$<2>struct field is never used: `colour`, #[warn(dead_code)] on by default$<2>
    libwtk/text.rs:9        colour: Colour,
                            ^~~~~~~~~~~~~~$<2>
    libwtk/text.rs:30:27: 30:28 warning: $<2>$<2>unused variable: `x`, #[warn(unused_variables)] on by default$<2>
    libwtk/text.rs:30       fn element_at_pos(&self, x: u32, y: u32) -> (&::Element,(u32,u32)) {
                                                     ^$<2>
    libwtk/text.rs:30:35: 30:36 warning: $<2>$<2>unused variable: `y`, #[warn(unused_variables)] on by default$<2>
    libwtk/text.rs:30       fn element_at_pos(&self, x: u32, y: u32) -> (&::Element,(u32,u32)) {
                                                             ^$<2>
    [RUSTC] .objs/amd64/login
    [RUSTC] .objs/amd64/simple_console
    simple_console/src/terminal_surface.rs:61:13: 61:33 warning: $<2>$<2>unnecessary parentheses around `for` head expression, #[warn(unused_parens)] on by default$<2>
    simple_console/src/terminal_surface.rs:61                       for i in (px_pos .. pen_cell) {
                                                                             ^~~~~~~~~~~~~~~~~~~~$<2>
    simple_console/src/terminal_surface.rs:143:14: 143:23 warning: $<2>$<2>unnecessary parentheses around `for` head expression, #[warn(unused_parens)] on by default$<2>
    simple_console/src/terminal_surface.rs:143              for row in (0 .. 16)
                                                                       ^~~~~~~~~$<2>
    simple_console/src/terminal_surface.rs:149:15: 149:28 warning: $<2>$<2>unnecessary parentheses around `for` head expression, #[warn(unused_parens)] on by default$<2>
    simple_console/src/terminal_surface.rs:149                      for col in (0usize .. 8)
                                                                               ^~~~~~~~~~~~~$<2>
    simple_console/src/terminal_surface.rs:9:35: 9:38 warning: $<2>$<2>unused import, #[warn(unused_imports)] on by default$<2>
    simple_console/src/terminal_surface.rs:9 use syscalls::gui::{Window, Dims, Pos, Rect, Colour};
                                                                               ^~~$<2>
    simple_console/src/terminal_surface.rs:70:2: 85:3 warning: $<2>$<2>method is never used: `shift_line_right`, #[warn(dead_code)] on by default$<2>
    simple_console/src/terminal_surface.rs:70       pub fn shift_line_right(&mut self, pos: usize) {
    simple_console/src/terminal_surface.rs:71               let cw = C_CELL_DIMS.w as usize;
    simple_console/src/terminal_surface.rs:72               let px_pos = pos * cw;
    simple_console/src/terminal_surface.rs:73               let pen_cell = self.pos.d.w as usize - cw;
    simple_console/src/terminal_surface.rs:74               let fc = self.fill_colour;
    simple_console/src/terminal_surface.rs:75               for l in self.row_scanlines() {
                                              ...
    simple_console/src/terminal.rs:56:2: 58:3 warning: $<2>$<2>method is never used: `shift_line_right`, #[warn(dead_code)] on by default$<2>
    simple_console/src/terminal.rs:56       pub fn shift_line_right(&mut self) {
    simple_console/src/terminal.rs:57               self.surf.shift_line_right(self.cur_col);
    simple_console/src/terminal.rs:58       }
    [RUSTC] .objs/amd64/shell
    >>> all: Kernel
    [LD] -o bin/kernel-amd64.bin
    x86_64-none-elf-ld: cannot open map file .obj/amd64/map.txt: 没有那个文件或目录
    make[1]: *** [bin/kernel-amd64.bin] 错误 1
    make: *** [all] 错误 2
    
    opened by Fishman2009 2
  • Is there a floppy image build of RustOS? (to test it inside the coreboot/SeaBIOS)

    Is there a floppy image build of RustOS? (to test it inside the coreboot/SeaBIOS)

    Dear @thepowersgang , your previous creation AcessOS had a live floppy. Please tell, is there a floppy image build of RustOS, and - if not - is it theoretically possible? Open source coreboot/SeaBIOS supports booting the virtual floppy images stored inside its' ROM, and because this coreboot is much smaller than crappy proprietary UEFI (instead of 4MB takes less than 1MB of my coreboot-supported laptop's BIOS chip) now I have a lot of space which could be used to store interesting OS such as your Acess or Rust ! But only the floppy media formats are supported there, although luckily not just 1.44MB but also 2.88MB...

    opened by informer2016 1
  • 'make run' is ok, but report a error:

    'make run' is ok, but report a error: "Unable to open initial userland loader '/system/Tifflin/bin/loader'"

    good job! I build successfully from clean checkout, and run it! but maybe has error!

    "Unable to open initial userland loader '/system/Tifflin/bin/loader'"

    I installed some package before run 'make run' !

    $apt-get install pxe-kexec  mtools
    
    $make run
    ···
    >>> all: libcore source
    Makefile:36: start.ao syscalls.o virtio.o storage_ata.o input_ps2.o fs_fat.o fs_iso9660.o libkernel.rlib libcore.rlib  gui.o stack_dst.o      storage_scsi.o   gui.o   utf16.o blockcache.o    
    make[1]: `../libcore/lib.rs' is up to date.
    >>> all: Graphics
    make[1]: Entering directory `/home/fishman/rust_os/Graphics'
    make[1]: Nothing to be done for `all'.
    make[1]: Leaving directory `/home/fishman/rust_os/Graphics'
    >>> all: Usermode
    make[1]: Nothing to be done for `all'.
    >>> all: Kernel
    Makefile:36: start.ao syscalls.o virtio.o storage_ata.o input_ps2.o fs_fat.o fs_iso9660.o libkernel.rlib libcore.rlib  gui.o stack_dst.o      storage_scsi.o   gui.o   utf16.o blockcache.o    
    make -C Kernel/rundir run
    make[1]: Entering directory `/home/fishman/rust_os/Kernel/rundir'
    ./RunQemuPXE ../bin/kernel-amd64.bin.elf32 "SYSROOT=Tifflin SYSDISK=ATA-0p0" "-s -no-reboot -nographic -d int,guest_errors -D qemu_int_log.txt -net nic -drive if=ide,index=0,file=DiskImages/amd64/hda.img,format=raw" | tee QemuLog.txt
    OK43e6H
         0n 0[kernel] - Tifflin Kernel v0.1 build ubuntu:1 starting
         0n 0[kernel] - > Git state : ada76408078a5291fc3fc1429b6e08ef4220bc8e, Built with rustc 1.5.0-nightly (6cdf31b12 2015-10-15)
         0d 0[kernel::arch::imp::boot] - loader_ptr = 0xffffffff80002134
         0n 0[kernel::arch::imp::boot] - Loading multiboot from loader 'PXELINUX 4.05 20140113 ' (flags = 0xe65)
         0t 0[kernel::arch::imp::boot] - L327: MultibootInfo::_vidmode: info = VbeModeInfo { attributes: 187, window_attrs: [7, 0], granuality: 16, window_size: 64, window_segments: [40960, 0], win_pos_fcn_fptr: [19334, 49152], pitch: 2560, x_res: 1280, y_res: 1024, char_w: 8, char_h: 16, n_planes: 1, bpp: 16, n_banks: 1, memory_model: 6, bank_size: 0, n_pages: 1, _resvd: 1, red_mask: 5, red_position: 11, green_mask: 6, green_position: 5, blue_mask: 5, blue_position: 0, rsv_mask: 0, rsv_position: 0, directcolor_attributes: 0, physbase: 4227858432, offscreen_ptr: 0, offscreen_size_kb: 0, lfb_pitch: 2560, image_count_banked: 0, image_count_lfb: 0 }
         0d 0[kernel::arch::imp::boot] - Symbols ELF - num=11, size=40, addr=0x219000, shndx=8
         0t 0[kernel::memory::virt] - L277: 0x219000+1pg is 0xffffffff80219000
         0t 0[kernel::arch::imp::boot] - L263: shent = ShEnt { sh_name: 0, sh_type: 0, sh_flags: 0, sh_addr: 0, sh_offset: 0, sh_size: 0, sh_link: 0, sh_info: 0, sh_addralign: 0, sh_entsize: 0 }
         0t 0[kernel::arch::imp::boot] - L263: shent = ShEnt { sh_name: 27, sh_type: 1, sh_flags: 2, sh_addr: 1048864, sh_offset: 288, sh_size: 2656, sh_link: 0, sh_info: 0, sh_addralign: 1, sh_entsize: 0 }
         0t 0[kernel::arch::imp::boot] - L263: shent = ShEnt { sh_name: 33, sh_type: 1, sh_flags: 6, sh_addr: 2148536320, sh_offset: 4096, sh_size: 792327, sh_link: 0, sh_info: 0, sh_addralign: 16, sh_entsize: 0 }
         0t 0[kernel::arch::imp::boot] - L263: shent = ShEnt { sh_name: 39, sh_type: 1, sh_flags: 2, sh_addr: 2149330944, sh_offset: 798720, sh_size: 242544, sh_link: 0, sh_info: 0, sh_addralign: 32, sh_entsize: 0 }
         0t 0[kernel::arch::imp::boot] - L263: shent = ShEnt { sh_name: 47, sh_type: 1, sh_flags: 3, sh_addr: 2149576704, sh_offset: 1044480, sh_size: 97776, sh_link: 0, sh_info: 0, sh_addralign: 32, sh_entsize: 0 }
         0t 0[kernel::arch::imp::boot] - L263: shent = ShEnt { sh_name: 53, sh_type: 1, sh_flags: 3, sh_addr: 2149674480, sh_offset: 1142256, sh_size: 40, sh_link: 0, sh_info: 0, sh_addralign: 8, sh_entsize: 0 }
         0t 0[kernel::arch::imp::boot] - L263: shent = ShEnt { sh_name: 68, sh_type: 8, sh_flags: 3, sh_addr: 2149674528, sh_offset: 1142296, sh_size: 8296, sh_link: 0, sh_info: 0, sh_addralign: 32, sh_entsize: 0 }
         0t 0[kernel::arch::imp::boot] - L263: shent = ShEnt { sh_name: 73, sh_type: 1, sh_flags: 48, sh_addr: 2199992, sh_offset: 1142296, sh_size: 17, sh_link: 0, sh_info: 0, sh_addralign: 1, sh_entsize: 1 }
         0t 0[kernel::arch::imp::boot] - L263: shent = ShEnt { sh_name: 17, sh_type: 3, sh_flags: 0, sh_addr: 2200009, sh_offset: 1142313, sh_size: 82, sh_link: 0, sh_info: 0, sh_addralign: 1, sh_entsize: 0 }
         0t 0[kernel::arch::imp::boot] - L263: shent = ShEnt { sh_name: 1, sh_type: 2, sh_flags: 0, sh_addr: 2200092, sh_offset: 1142396, sh_size: 107808, sh_link: 10, sh_info: 5243, sh_addralign: 4, sh_entsize: 16 }
         0t 0[kernel::memory::virt] - L277: 0x21921c+27pg is 0xffffffff80219000
         0t 0[kernel::memory::virt] - L277: 0x23373c+46pg is 0xffffffff80233000
         0d 0[kernel::arch::imp::boot] - info = {..., .lomem=625, .himem=129124 }
         0d 0[kernel::memory::memorymap] - set_range(base=0x100000, size=0x209000, state=Used, domain=0)
         0d 0[kernel::memory::memorymap] - 1: (0x100000+0x209000): slot=0x100000+0x7e19000 Free Domain 0
         0d 0[kernel::memory::memorymap] - set_range(base=0x2058, size=0x36, state=Used, domain=0)
         0d 0[kernel::memory::memorymap] - 0: (0x2000+0x1000): slot=0x1000+0x9b400 Free Domain 0
         0d 0[kernel::memory::memorymap] - 1: (0x2000+0x1000): slot=0x2000+0x9a400 Free Domain 0
         0d 0[kernel::memory::memorymap] - set_range(base=0x21921c, size=0x1a520, state=Used, domain=0)
         0d 0[kernel::memory::memorymap] - 3: (0x219000+0x1b000): slot=0x100000+0x209000 Used Domain 0
         0d 0[kernel::memory::memorymap] - set_range(base=0x23373c, size=0x2ccf2, state=Used, domain=0)
         0d 0[kernel::memory::memorymap] - 3: (0x233000+0x2e000): slot=0x100000+0x209000 Used Domain 0
         0l 0[kernel::memory::phys] - Memory Map:
         0l 0[kernel::memory::phys] - #0 : 0x1000+0x1000 Used Domain 0
         0l 0[kernel::memory::phys] - #1 : 0x2000+0x1000 Used Domain 0
         0l 0[kernel::memory::phys] - #2 : 0x3000+0x99400 Free Domain 0
         0l 0[kernel::memory::phys] - #3 : 0x100000+0x209000 Used Domain 0
         0l 0[kernel::memory::phys] - #4 : 0x309000+0x7c10000 Free Domain 0
         0t 0[kernel::arch::imp::threads] - L72: State::new(AddressSpace(AddressSpace(0x1ff000)))
         0d 0[kernel::threads::thread] - Creating thread 0xffff800000000180(0 ThreadZero)
         0d 0[kernel::arch::imp::threads] - init_tid0_state - cr3 = 0x1ff000
         0l 0[kernel] - Command line = 'kernel-amd64.bin.elf32 SYSROOT=Tifflin SYSDISK=ATA-0p0'
         0w 0[kernel::config] - Unknown option 'kernel-amd64.bin.elf32
         0d 0[kernel] - Video mode : 1280x1024 @ 0xfc000000
         0t 0[kernel::arch::imp::threads] - L72: State::new(AddressSpace(AddressSpace(0x1ff000)))
         0d 0[kernel::threads::thread] - Creating thread 0xffff8000000002e0(1 IRQ Worker)
         0t 0[kernel::arch::imp::threads] - L129: prep_tls(0xffffa00000018000,0xffffa00000011000,0xffff8000000002e0)
         0d 0[kernel::threads] - Yielding CPU to 0xffff8000000002e0(1 IRQ Worker)
         0t 0[kernel::arch::imp::threads] - L210: Switching to RSP=0xffffa00000017f88,CR3=0x1ff000,TLS=0xffffa00000017fd0
         0d 1[kernel::threads] - Task switch to 0xffff800000000180(0 ThreadZero)
         0t 1[kernel::arch::imp::threads] - L210: Switching to RSP=0xffffa0000000fbc8,CR3=0x1ff000,TLS=0xffffa0000000ffd0
         0d 0[kernel::modules] - baseptr=0xffffffff801fdf30, size=0x440, count=17
         0d 0[kernel::modules] - s_modules=0xffffffff801fdf30+0x11
         0d 0[kernel::modules] - mod = 0xffffffff801fdf30 0xffffffff801ccbab 'VirtIO'
         0d 0[kernel::modules] - mod = 0xffffffff801fdf70 0xffffffff801cd758 'ATA'
         0d 0[kernel::modules] - mod = 0xffffffff801fdfb0 0xffffffff801cf4b8 'PS2'
         0d 0[kernel::modules] - mod = 0xffffffff801fdff0 0xffffffff801d0bb0 'FS_FAT'
         0d 0[kernel::modules] - mod = 0xffffffff801fe030 0xffffffff801d1f88 'FS_ISO9660'
         0d 0[kernel::modules] - mod = 0xffffffff801fe070 0xffffffff801d8490 'Video'
         0d 0[kernel::modules] - mod = 0xffffffff801fe0b0 0xffffffff801d9108 'Storage'
         0d 0[kernel::modules] - mod = 0xffffffff801fe0f0 0xffffffff801d99a0 'DeviceManager'
         0d 0[kernel::modules] - mod = 0xffffffff801fe130 0xffffffff801d9e48 'VFS'
         0d 0[kernel::modules] - mod = 0xffffffff801fe170 0xffffffff801db789 'PCI'
         0d 0[kernel::modules] - mod = 0xffffffff801fe1b0 0xffffffff801dc040 'MapperMBR'
         0d 0[kernel::modules] - mod = 0xffffffff801fe1f0 0xffffffff801d99c0 'arch'
         0d 0[kernel::modules] - mod = 0xffffffff801fe230 0xffffffff801de560 'TSS'
         0d 0[kernel::modules] - mod = 0xffffffff801fe270 0xffffffff801dc3e8 'APIC'
         0d 0[kernel::modules] - mod = 0xffffffff801fe2b0 0xffffffff801dc3ec 'HPET'
         0d 0[kernel::modules] - mod = 0xffffffff801fe2f0 0xffffffff801de580 'ACPI'
         0d 0[kernel::modules] - mod = 0xffffffff801fe330 0xffffffff801e24d8 'GUI'
         0d 0[kernel::modules] - #16: GUI Deps
         0d 0[kernel::modules] - #5: Video Deps
         0d 0[kernel::modules] - #5: Video Init
         0n 0[kernel::metadevs::video] - Using boot video mode VideoMode { 1280x1024 R5G6B5 2560b @ 0xfc000000 }
         0t 0[kernel::memory::virt] - L429: map_hw: Dynamic allocation 0xfc000000 => 0xffffb00000000000
         0d 0[kernel::modules] - #16: GUI Init
         0t 0[kernel::arch::imp::threads] - L72: State::new(AddressSpace(AddressSpace(0x1ff000)))
         0d 0[kernel::threads::thread] - Creating thread 0xffff800000000800(2 GUI Compositor)
         0t 0[kernel::arch::imp::threads] - L129: prep_tls(0xffffa00000020000,0xffffa00000019000,0xffff800000000800)
         0d 0[kernel::threads] - Yielding CPU to 0xffff800000000800(2 GUI Compositor)
         0t 0[kernel::arch::imp::threads] - L210: Switching to RSP=0xffffa0000001ff88,CR3=0x1ff000,TLS=0xffffa0000001ffd0
         0d 2[gui::windows] - GUI Render Thread started
         0t 2[kernel::threads::wait_queue] - L32: WaitQueue::wait(...)
         0d 2[kernel::threads] - Task switch to 0xffff800000000180(0 ThreadZero)
         0t 2[kernel::arch::imp::threads] - L210: Switching to RSP=0xffffa0000000f0e8,CR3=0x1ff000,TLS=0xffffa0000000ffd0
         0t 0[gui::windows::winbuf] - L56: WinBuf::resize(1280x1024) px_count = 1310720
         0t 0[gui::windows::winbuf] - L56: WinBuf::resize(128x128) px_count = 16384
         0t 0[gui::windows::window] - L213: Window::blit_rect((0,0 + 128x128), data=16384px)
         0t 0[kernel::threads::wait_queue] - L76: WaitQueue::wake_one()
         0d 0[kernel::modules] - #0: VirtIO Deps
         0d 0[kernel::modules] - #7: DeviceManager Deps
         0d 0[kernel::modules] - #11: arch Deps
         0d 0[kernel::modules] - #13: APIC Deps
         0d 0[kernel::modules] - #15: ACPI Deps
         0d 0[kernel::modules] - #15: ACPI Init
         0t 0[kernel::arch::imp::acpi::internal] - L33: AcpiInitializeSubsystem
         0t 0[kernel::arch::imp::acpi::internal] - L35: AcpiInitializeTables
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L59: AcpiOsMapMemory(0x40e, 2)
         0t 0[kernel::memory::virt] - L395: map_hw: Fixed allocation 0x0 => 0xffffffff80000000
         0t 0[kernel::memory::virt] - L250: unmap(*0xffffffff80000000 1) - Fixed alloc
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L59: AcpiOsMapMemory(0x9fc00, 1024)
         0t 0[kernel::memory::virt] - L395: map_hw: Fixed allocation 0x9f000 => 0xffffffff8009f000
         0t 0[kernel::memory::virt] - L250: unmap(*0xffffffff8009f000 1) - Fixed alloc
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L59: AcpiOsMapMemory(0xe0000, 131072)
         0t 0[kernel::memory::virt] - L395: map_hw: Fixed allocation 0xe0000 => 0xffffffff800e0000
         0t 0[kernel::memory::virt] - L250: unmap(*0xffffffff800e0000 32) - Fixed alloc
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L59: AcpiOsMapMemory(0xf09e0, 36)
         0t 0[kernel::memory::virt] - L395: map_hw: Fixed allocation 0xf0000 => 0xffffffff800f0000
         0d 0[kernel::arch::imp::acpi::internal::shim_out] - ACPI: RSDP 0x0F09E0 14 (v0 BOCHS )
         0t 0[kernel::memory::virt] - L250: unmap(*0xffffffff800f0000 1) - Fixed alloc
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L59: AcpiOsMapMemory(0x7fffbc1, 36)
         0t 0[kernel::memory::virt] - L429: map_hw: Dynamic allocation 0x7fff000 => 0xffffb00000280000
         0d 0[kernel::arch::imp::acpi::internal::shim_out] - ACPI: RSDT 0x07FFFBC1 34 (v1 BOCHS  BXPCRSDT 1 BXPC 1)
         0t 0[kernel::memory::virt] - L254: unmap(*0xffffb00000280000 1) - Dynamic alloc
         0l 0[kernel::memory::phys] - Calling deref_frame on non-RAM 0x7fff000
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L59: AcpiOsMapMemory(0x7fffbc1, 52)
         0t 0[kernel::memory::virt] - L429: map_hw: Dynamic allocation 0x7fff000 => 0xffffb00000280000
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L59: AcpiOsMapMemory(0x7fff1c0, 36)
         0t 0[kernel::memory::virt] - L429: map_hw: Dynamic allocation 0x7fff000 => 0xffffb00000281000
         0t 0[kernel::memory::virt] - L254: unmap(*0xffffb00000281000 1) - Dynamic alloc
         0l 0[kernel::memory::phys] - Calling deref_frame on non-RAM 0x7fff000
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L59: AcpiOsMapMemory(0x7fff1c0, 116)
         0t 0[kernel::memory::virt] - L429: map_hw: Dynamic allocation 0x7fff000 => 0xffffb00000281000
         0d 0[kernel::arch::imp::acpi::internal::shim_out] - ACPI: FACP 0x07FFF1C0 74 (v1 BOCHS  BXPCFACP 1 BXPC 1)
         0t 0[kernel::memory::virt] - L254: unmap(*0xffffb00000281000 1) - Dynamic alloc
         0l 0[kernel::memory::phys] - Calling deref_frame on non-RAM 0x7fff000
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L59: AcpiOsMapMemory(0x7fff1c0, 116)
         0t 0[kernel::memory::virt] - L429: map_hw: Dynamic allocation 0x7fff000 => 0xffffb00000281000
         0t 0[kernel::memory::virt] - L254: unmap(*0xffffb00000281000 1) - Dynamic alloc
         0l 0[kernel::memory::phys] - Calling deref_frame on non-RAM 0x7fff000
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L59: AcpiOsMapMemory(0x7ffe040, 36)
         0t 0[kernel::memory::virt] - L429: map_hw: Dynamic allocation 0x7ffe000 => 0xffffb00000281000
         0t 0[kernel::memory::virt] - L254: unmap(*0xffffb00000281000 1) - Dynamic alloc
         0l 0[kernel::memory::phys] - Calling deref_frame on non-RAM 0x7ffe000
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L59: AcpiOsMapMemory(0x7ffe040, 4480)
         0t 0[kernel::memory::virt] - L429: map_hw: Dynamic allocation 0x7ffe000 => 0xffffb00000281000
         0d 0[kernel::arch::imp::acpi::internal::shim_out] - ACPI: DSDT 0x07FFE040 1180 (v1 BOCHS  BXPCDSDT 1 BXPC 1)
         0t 0[kernel::memory::virt] - L254: unmap(*0xffffb00000281000 2) - Dynamic alloc
         0l 0[kernel::memory::phys] - Calling deref_frame on non-RAM 0x7ffe000
         0l 0[kernel::memory::phys] - Calling deref_frame on non-RAM 0x7fff000
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L59: AcpiOsMapMemory(0x7ffe000, 36)
         0t 0[kernel::memory::virt] - L429: map_hw: Dynamic allocation 0x7ffe000 => 0xffffb00000281000
         0t 0[kernel::memory::virt] - L254: unmap(*0xffffb00000281000 1) - Dynamic alloc
         0l 0[kernel::memory::phys] - Calling deref_frame on non-RAM 0x7ffe000
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L59: AcpiOsMapMemory(0x7ffe000, 64)
         0t 0[kernel::memory::virt] - L429: map_hw: Dynamic allocation 0x7ffe000 => 0xffffb00000281000
         0d 0[kernel::arch::imp::acpi::internal::shim_out] - ACPI: FACS 0x07FFE000 40
         0t 0[kernel::memory::virt] - L254: unmap(*0xffffb00000281000 1) - Dynamic alloc
         0l 0[kernel::memory::phys] - Calling deref_frame on non-RAM 0x7ffe000
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L59: AcpiOsMapMemory(0x7fff234, 36)
         0t 0[kernel::memory::virt] - L429: map_hw: Dynamic allocation 0x7fff000 => 0xffffb00000281000
         0t 0[kernel::memory::virt] - L254: unmap(*0xffffb00000281000 1) - Dynamic alloc
         0l 0[kernel::memory::phys] - Calling deref_frame on non-RAM 0x7fff000
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L59: AcpiOsMapMemory(0x7fff234, 2269)
         0t 0[kernel::memory::virt] - L429: map_hw: Dynamic allocation 0x7fff000 => 0xffffb00000281000
         0d 0[kernel::arch::imp::acpi::internal::shim_out] - ACPI: SSDT 0x07FFF234 8DD (v1 BOCHS  BXPCSSDT 1 BXPC 1)
         0t 0[kernel::memory::virt] - L254: unmap(*0xffffb00000281000 1) - Dynamic alloc
         0l 0[kernel::memory::phys] - Calling deref_frame on non-RAM 0x7fff000
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L59: AcpiOsMapMemory(0x7fffb11, 36)
         0t 0[kernel::memory::virt] - L429: map_hw: Dynamic allocation 0x7fff000 => 0xffffb00000281000
         0t 0[kernel::memory::virt] - L254: unmap(*0xffffb00000281000 1) - Dynamic alloc
         0l 0[kernel::memory::phys] - Calling deref_frame on non-RAM 0x7fff000
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L59: AcpiOsMapMemory(0x7fffb11, 120)
         0t 0[kernel::memory::virt] - L429: map_hw: Dynamic allocation 0x7fff000 => 0xffffb00000281000
         0d 0[kernel::arch::imp::acpi::internal::shim_out] - ACPI: APIC 0x07FFFB11 78 (v1 BOCHS  BXPCAPIC 1 BXPC 1)
         0t 0[kernel::memory::virt] - L254: unmap(*0xffffb00000281000 1) - Dynamic alloc
         0l 0[kernel::memory::phys] - Calling deref_frame on non-RAM 0x7fff000
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L59: AcpiOsMapMemory(0x7fffb89, 36)
         0t 0[kernel::memory::virt] - L429: map_hw: Dynamic allocation 0x7fff000 => 0xffffb00000281000
         0t 0[kernel::memory::virt] - L254: unmap(*0xffffb00000281000 1) - Dynamic alloc
         0l 0[kernel::memory::phys] - Calling deref_frame on non-RAM 0x7fff000
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L59: AcpiOsMapMemory(0x7fffb89, 56)
         0t 0[kernel::memory::virt] - L429: map_hw: Dynamic allocation 0x7fff000 => 0xffffb00000281000
         0d 0[kernel::arch::imp::acpi::internal::shim_out] - ACPI: HPET 0x07FFFB89 38 (v1 BOCHS  BXPCHPET 1 BXPC 1)
         0t 0[kernel::memory::virt] - L254: unmap(*0xffffb00000281000 1) - Dynamic alloc
         0l 0[kernel::memory::phys] - Calling deref_frame on non-RAM 0x7fff000
         0t 0[kernel::memory::virt] - L254: unmap(*0xffffb00000280000 1) - Dynamic alloc
         0l 0[kernel::memory::phys] - Calling deref_frame on non-RAM 0x7fff000
         0t 0[kernel::arch::imp::acpi::internal] - L37: AcpiLoadTables
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L59: AcpiOsMapMemory(0x7ffe040, 4480)
         0t 0[kernel::memory::virt] - L429: map_hw: Dynamic allocation 0x7ffe000 => 0xffffb00000280000
         0d 0[kernel::arch::imp::acpi::internal::shim_out] - Table [DSDT] (id 1) - 144 Objects with 18 Devices, 8 Regions, 52 Methods (6/46/5 Serial/Non/Cvt)
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L59: AcpiOsMapMemory(0x7fff234, 2269)
         0t 0[kernel::memory::virt] - L429: map_hw: Dynamic allocation 0x7fff000 => 0xffffb00000282000
         0d 0[kernel::arch::imp::acpi::internal::shim_out] - Table [SSDT] (id 2) - 155 Objects with 32 Devices, 1 Regions, 42 Methods (0/42/0 Serial/Non/Cvt)
         0d 0[kernel::arch::imp::acpi::internal::shim_out] - ACPI: All ACPI Tables successfully acquired
         0t 0[kernel::arch::imp::acpi::internal] - L39: AcpiEnableSubsystem
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L291: AcpiOsReadPort(0xb004, Width=16) = 0x0
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L291: AcpiOsReadPort(0xb004, Width=16) = 0x0
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L298: AcpiOsWritePort(0xb2, Value=0xf1, Width=8)
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L291: AcpiOsReadPort(0xb004, Width=16) = 0x1
         0d 0[kernel::arch::imp::acpi::internal::shim_out] - evxfevnt-109 Enableevxfevnt: Transition to ACPI mode successful
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L59: AcpiOsMapMemory(0x7ffe000, 64)
         0t 0[kernel::memory::virt] - L429: map_hw: Dynamic allocation 0x7ffe000 => 0xffffb00000283000
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L291: AcpiOsReadPort(0xb002, Width=16) = 0x0
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L298: AcpiOsWritePort(0xb002, Value=0x0, Width=16)
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L291: AcpiOsReadPort(0xb002, Width=16) = 0x0
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L298: AcpiOsWritePort(0xb002, Value=0x0, Width=16)
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L291: AcpiOsReadPort(0xb002, Width=16) = 0x0
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L298: AcpiOsWritePort(0xb002, Value=0x0, Width=16)
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L291: AcpiOsReadPort(0xb002, Width=16) = 0x0
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L298: AcpiOsWritePort(0xb002, Value=0x0, Width=16)
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L291: AcpiOsReadPort(0xb002, Width=16) = 0x0
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L298: AcpiOsWritePort(0xb002, Value=0x0, Width=16)
         0d 0[kernel::arch::imp::acpi::internal::shim_out] - Initializing General Purpose Events (GPEs):
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L298: AcpiOsWritePort(0xafe2, Value=0x0, Width=8)
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L298: AcpiOsWritePort(0xafe0, Value=0xff, Width=8)
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L298: AcpiOsWritePort(0xafe3, Value=0x0, Width=8)
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L298: AcpiOsWritePort(0xafe1, Value=0xff, Width=8)
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L291: AcpiOsReadPort(0xafe2, Width=8) = 0x0
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L298: AcpiOsWritePort(0xafe2, Value=0x0, Width=8)
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L291: AcpiOsReadPort(0xafe2, Width=8) = 0x0
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L298: AcpiOsWritePort(0xafe2, Value=0x0, Width=8)
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L291: AcpiOsReadPort(0xafe2, Width=8) = 0x0
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L298: AcpiOsWritePort(0xafe2, Value=0x0, Width=8)
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L291: AcpiOsReadPort(0xafe2, Width=8) = 0x0
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L298: AcpiOsWritePort(0xafe2, Value=0x0, Width=8)
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L291: AcpiOsReadPort(0xafe2, Width=8) = 0x0
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L298: AcpiOsWritePort(0xafe2, Value=0x0, Width=8)
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L291: AcpiOsReadPort(0xafe2, Width=8) = 0x0
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L298: AcpiOsWritePort(0xafe2, Value=0x0, Width=8)
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L291: AcpiOsReadPort(0xafe2, Width=8) = 0x0
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L298: AcpiOsWritePort(0xafe2, Value=0x0, Width=8)
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L291: AcpiOsReadPort(0xafe2, Width=8) = 0x0
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L298: AcpiOsWritePort(0xafe2, Value=0x0, Width=8)
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L291: AcpiOsReadPort(0xafe3, Width=8) = 0x0
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L298: AcpiOsWritePort(0xafe3, Value=0x0, Width=8)
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L291: AcpiOsReadPort(0xafe3, Width=8) = 0x0
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L298: AcpiOsWritePort(0xafe3, Value=0x0, Width=8)
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L291: AcpiOsReadPort(0xafe3, Width=8) = 0x0
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L298: AcpiOsWritePort(0xafe3, Value=0x0, Width=8)
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L291: AcpiOsReadPort(0xafe3, Width=8) = 0x0
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L298: AcpiOsWritePort(0xafe3, Value=0x0, Width=8)
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L291: AcpiOsReadPort(0xafe3, Width=8) = 0x0
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L298: AcpiOsWritePort(0xafe3, Value=0x0, Width=8)
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L291: AcpiOsReadPort(0xafe3, Width=8) = 0x0
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L298: AcpiOsWritePort(0xafe3, Value=0x0, Width=8)
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L291: AcpiOsReadPort(0xafe3, Width=8) = 0x0
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L298: AcpiOsWritePort(0xafe3, Value=0x0, Width=8)
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L291: AcpiOsReadPort(0xafe3, Width=8) = 0x0
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L298: AcpiOsWritePort(0xafe3, Value=0x0, Width=8)
         0d 0[kernel::arch::imp::acpi::internal::shim_out] -     Initialized GPE 0 to F [_GPE] 2 regs on interrupt 0x9 (SCI)
         0w 0[kernel::arch::imp::acpi::internal::shim_out] - TODO: AcpiOsInstallInterruptHandler(InterruptLevel=9, Handler=0xffffffff80107c20, Context=0xffff800000801ac0
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L291: AcpiOsReadPort(0xb002, Width=16) = 0x0
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L298: AcpiOsWritePort(0xb002, Value=0x20, Width=16)
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L291: AcpiOsReadPort(0xb002, Width=16) = 0x20
         0d 0[kernel::modules] - #13: APIC Init
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L59: AcpiOsMapMemory(0x7fffb11, 120)
         0t 0[kernel::memory::virt] - L429: map_hw: Dynamic allocation 0x7fff000 => 0xffffb00000284000
         0d 0[kernel::arch::imp::acpi::internal] - AcpiGetTable: out_ptr = 0xffffb00000284b11
         0d 0[kernel::logging] - AcpiGetTable Dump 0xffffb00000284b11+36
         0d 0[kernel::logging] - AcpiGetTable 0xffffb00000284b11: 41 50 49 43 78 00 00 00  01 ed 42 4f 43 48 53 20 |APICx.....BOCHS |
         0d 0[kernel::logging] - AcpiGetTable 0xffffb00000284b21: 42 58 50 43 41 50 49 43  01 00 00 00 42 58 50 43 |BXPCAPIC....BXPC|
         0d 0[kernel::logging] - AcpiGetTable 0xffffb00000284b31: 01 00 00 00                                      |....            |
         0n 0[kernel::arch::imp::acpi] - SDT size mismatch 120 != sizeof(arch::imp::acpi::SDT<arch::imp::hw::apic::init::ACPI_MADT>) 44
         0d 0[kernel::arch::imp::hw::apic::init] - MADT = {
         0d 0[kernel::arch::imp::hw::apic::init] -   local_controller_addr: 0xfee00000
         0d 0[kernel::arch::imp::hw::apic::init] -   flags: 0x1
         0d 0[kernel::arch::imp::hw::apic::init] - }
         0d 0[kernel::arch::imp::hw::apic::init] - @0: DevLAPIC({Proc:0,APIC:0,Flags:0x1})
         0d 0[kernel::arch::imp::hw::apic::init] - @1: DevIOAPIC({ID:0,Addr:0xfec00000,BaseIRQ:0})
         0d 0[kernel::arch::imp::hw::apic::init] - @2: DevIntSrcOvr(MADT_IntSrcOvr { bus: 0, source: 0, gsi: 2, flags: 0 })
         0d 0[kernel::arch::imp::hw::apic::init] - @3: DevIntSrcOvr(MADT_IntSrcOvr { bus: 0, source: 5, gsi: 5, flags: 13 })
         0d 0[kernel::arch::imp::hw::apic::init] - @4: DevIntSrcOvr(MADT_IntSrcOvr { bus: 0, source: 9, gsi: 9, flags: 13 })
         0d 0[kernel::arch::imp::hw::apic::init] - @5: DevIntSrcOvr(MADT_IntSrcOvr { bus: 0, source: 10, gsi: 10, flags: 13 })
         0d 0[kernel::arch::imp::hw::apic::init] - @6: DevIntSrcOvr(MADT_IntSrcOvr { bus: 0, source: 11, gsi: 11, flags: 13 })
         0d 0[kernel::arch::imp::hw::apic::init] - @7: DevLAPICNMI(MADT_LAPICNMI { processor: 255, flags: 0, lint_num: 1 })
         0n 0[kernel::arch::imp::hw::apic] - Legacy PIC present, disabling
         0t 0[kernel::memory::virt] - L429: map_hw: Dynamic allocation 0xfec00000 => 0xffffb00000285000
         0d 0[kernel::arch::imp::hw::apic::raw] - 170011 17 17
         0d 0[kernel::arch::imp::hw::apic::raw] - regs=[0x0,0x170011,0x0]
         0d 0[kernel::arch::imp::hw::apic::raw] - IOAPIC: { 0xfec00000 - 0 + 24 }
         0t 0[kernel::memory::virt] - L429: map_hw: Dynamic allocation 0xfee00000 => 0xffffb00000286000
         0d 0[kernel::arch::imp::hw::apic::raw] - LAPIC { IDReg=0, Ver=50011, SIR=0x1ff }
         0t 0[kernel::arch::imp::interrupts] - L62: bind_isr(isr=126,callback=0xffffffff801a4860,info=0xffffffff80216af8,idx=0)
         0t 0[kernel::arch::imp::interrupts] - L69: &h = 0xffffffff80218188
         0d 0[kernel::arch::imp::hw::apic::raw] - oldaddr = 0xfee00900
         0d 0[kernel::arch::imp::hw::apic::raw] - IRR[0..8] = [0x0, 0x0, 0x0, 0x0,  0x0, 0x0, 0x0, 0x0]
         0d 0[kernel::modules] - #14: HPET Deps
         0d 0[kernel::modules] - #14: HPET Init
         0t 0[kernel::arch::imp::hw::hpet] - L55: init()
         0t 0[kernel::arch::imp::acpi::internal::shim_out] - L59: AcpiOsMapMemory(0x7fffb89, 56)
         0t 0[kernel::memory::virt] - L429: map_hw: Dynamic allocation 0x7fff000 => 0xffffb00000287000
         0d 0[kernel::arch::imp::acpi::internal] - AcpiGetTable: out_ptr = 0xffffb00000287b89
         0d 0[kernel::logging] - AcpiGetTable Dump 0xffffb00000287b89+36
         0d 0[kernel::logging] - AcpiGetTable 0xffffb00000287b89: 48 50 45 54 38 00 00 00  01 03 42 4f 43 48 53 20 |HPET8.....BOCHS |
         0d 0[kernel::logging] - AcpiGetTable 0xffffb00000287b99: 42 58 50 43 48 50 45 54  01 00 00 00 42 58 50 43 |BXPCHPET....BXPC|
         0d 0[kernel::logging] - AcpiGetTable 0xffffb00000287ba9: 01 00 00 00                                      |....            |
         0t 0[kernel::memory::virt] - L429: map_hw: Dynamic allocation 0xfed00000 => 0xffffb00000288000
         0t 0[kernel::arch::imp::interrupts] - L90: bind_free_isr(callback=0xffffffff801a77d0,info=0xffffffff80216b30,idx=2)
         0t 0[kernel::arch::imp::interrupts] - L97: - Using ISR 32
         0t 0[kernel::arch::imp::hw::apic::raw] - L270: set_irq(idx=2,vector=32,apic=0,mode=EdgeHi)
         0d 0[kernel::arch::imp::hw::apic::raw] - Info = 0x10000
         1d 0[kernel::arch::imp::hw::apic::raw] - Disable 0: Info = 0x10000
         1d 0[kernel::modules] - #11: arch Init
         1d 0[kernel::modules] - #7: DeviceManager Init
         1d 0[kernel::modules] - #6: Storage Deps
         2d 0[kernel::modules] - #6: Storage Init
         2d 0[kernel::modules] - #0: VirtIO Init
         2d 0[kernel::device_manager] - Registering driver virtio-fdt-mmio
         2d 0[kernel::modules] - #1: ATA Deps
         2d 0[kernel::modules] - #1: ATA Init
         2d 0[kernel::device_manager] - Registering driver ata-legacy
         2d 0[kernel::device_manager] - Registering driver ata-native
         2d 0[kernel::modules] - #2: PS2 Deps
         2d 0[kernel::modules] - #2: PS2 Init
         3t 0[kernel::arch::imp::acpi::internal::shim_out] - L59: AcpiOsMapMemory(0x7fff1c0, 116)
         3t 0[kernel::memory::virt] - L429: map_hw: Dynamic allocation 0x7fff000 => 0xffffb00000289000
         3d 0[kernel::arch::imp::acpi::internal] - AcpiGetTable: out_ptr = 0xffffb000002891c0
         4d 0[kernel::logging] - AcpiGetTable Dump 0xffffb000002891c0+36
         4d 0[kernel::logging] - AcpiGetTable 0xffffb000002891c0: 46 41 43 50 74 00 00 00  01 c9 42 4f 43 48 53 20 |FACPt.....BOCHS |
         4d 0[kernel::logging] - AcpiGetTable 0xffffb000002891d0: 42 58 50 43 46 41 43 50  01 00 00 00 42 58 50 43 |BXPCFACP....BXPC|
         4d 0[kernel::logging] - AcpiGetTable 0xffffb000002891e0: 01 00 00 00                                      |....            |
         4t 0[input_ps2::i8042] - L36: FADT revision 1, assuming 8042 present
         5d 0[input_ps2::i8042] - can_have_second_port=true, has_second_port=true, port1_works=true, port2_works=true
         5d 0[input_ps2::i8042] - Controller config = 0b00110011
         5d 0[input_ps2::i8042] - Enabling port 1
         5t 0[kernel::arch::imp::interrupts] - L90: bind_free_isr(callback=0xffffffff801a77d0,info=0xffff800000832e80,idx=1)
         6t 0[kernel::arch::imp::interrupts] - L97: - Using ISR 33
         6t 0[kernel::arch::imp::hw::apic::raw] - L270: set_irq(idx=1,vector=33,apic=0,mode=EdgeHi)
         6d 0[kernel::arch::imp::hw::apic::raw] - Info = 0x10000
         6d 0[kernel::arch::imp::hw::apic::raw] - Disable 0: Info = 0x10000
         6d 0[input_ps2::i8042] - Enabling port 2
         7t 0[kernel::arch::imp::interrupts] - L90: bind_free_isr(callback=0xffffffff801a77d0,info=0xffff800000833020,idx=12)
         7t 0[kernel::arch::imp::interrupts] - L97: - Using ISR 34
         7t 0[kernel::arch::imp::hw::apic::raw] - L270: set_irq(idx=12,vector=34,apic=0,mode=EdgeHi)
         7d 0[kernel::arch::imp::hw::apic::raw] - Info = 0x10000
         7d 0[kernel::arch::imp::hw::apic::raw] - Disable 0: Info = 0x10000
         7d 0[kernel::modules] - #3: FS_FAT Deps
         7d 0[kernel::modules] - #8: VFS Deps
         8d 0[kernel::modules] - #8: VFS Init
        10t 0[kernel::vfs::handle] - L85: Any::open(Path(b"/"))
        10t 0[kernel::vfs::node] - CacheHandle::from_path(Path(b"/"))
        10t 0[kernel::vfs::mount] - L143: Handle::for_path(Path(b"/"))
        10t 0[kernel::vfs::path] - L74: Path::starts_with(self=Path(b"/"), other=Path(b"/"))
        11t 0[kernel::vfs::path] - L83: tail=Path(b"/") :: comp=b"", t=Path(b"")
        11t 0[kernel::vfs::path] - L85: ocomp=b"", comp=b""
        11d 0[kernel::vfs::mount] - Return 0'PathBuf(b"/")', tail=Path(b"")
        11t 0[kernel::vfs::ramfs] - L87: RamFS::get_node_by_inode(0)
        12d 0[kernel::vfs::node] - - tail=Path(b"")
        12d 0[kernel::vfs::node] - return CacheHandle { 0:0x0 0xffff800000833580 }
        14t 0[kernel::vfs::ramfs] - L87: RamFS::get_node_by_inode(1)
        14t 0[kernel::vfs::ramfs] - L87: RamFS::get_node_by_inode(2)
        15t 0[kernel::arch::imp::hw::apic::raw] - L200: LAPIC Timer
        15t 0[kernel::vfs::ramfs] - L87: RamFS::get_node_by_inode(3)
        15d 0[kernel::modules] - #3: FS_FAT Init
        15d 0[kernel::modules] - #4: FS_ISO9660 Deps
        15d 0[kernel::modules] - #4: FS_ISO9660 Init
        15d 0[kernel::modules] - #9: PCI Deps
        15d 0[kernel::modules] - #9: PCI Init
        16d 0[kernel::device_manager] - Registering driver bus-pci
        16t 0[kernel::hw::bus_pci] - L179: PCI scan_bus(0)
        16d 0[kernel::hw::bus_pci] - 0x00 Ven:8086 Dev:1237 Class 06000002
        16d 0[kernel::hw::bus_pci] - 0x08 Ven:8086 Dev:7000 Class 06010000
        17d 0[kernel::hw::bus_pci] - 0x09 Ven:8086 Dev:7010 Class 01018000
        17d 0[kernel::hw::bus_pci] - 0x0b Ven:8086 Dev:7113 Class 06800003
        17d 0[kernel::hw::bus_pci] - 0x10 Ven:1013 Dev:00b8 Class 03000000
        17d 0[kernel::hw::bus_pci] - 0x18 Ven:8086 Dev:100e Class 02000003
        17d 0[kernel::device_manager] - Finding driver for pci:0
        18d 0[kernel::device_manager] - Finding driver for pci:8
        18d 0[kernel::device_manager] - Finding driver for pci:9
        19d 0[kernel::hw::bus_pci] - one_value = 0xfff1, size=0x10, value=0xc041
        20d 0[storage_ata] - ControllerRoot::new( 0x1f0, 0x3f6, 14,  0x170, 0x376, 15,  IO(0xc040+0x10)
        21t 0[kernel::memory::virt] - L429: map_hw: Dynamic allocation 0xabe000 => 0xffffb0000028a000
        21t 0[kernel::arch::imp::interrupts] - L90: bind_free_isr(callback=0xffffffff801a77d0,info=0xffff800000834440,idx=14)
        21t 0[kernel::arch::imp::interrupts] - L97: - Using ISR 35
        21t 0[kernel::arch::imp::hw::apic::raw] - L270: set_irq(idx=14,vector=35,apic=0,mode=EdgeHi)
        22d 0[kernel::arch::imp::hw::apic::raw] - Info = 0x10000
        22d 0[kernel::arch::imp::hw::apic::raw] - Disable 0: Info = 0x10000
        22t 0[kernel::memory::virt] - L429: map_hw: Dynamic allocation 0xabf000 => 0xffffb0000028b000
        23t 0[kernel::arch::imp::interrupts] - L90: bind_free_isr(callback=0xffffffff801a77d0,info=0xffff8000008345e0,idx=15)
        23t 0[kernel::arch::imp::interrupts] - L97: - Using ISR 36
        23t 0[kernel::arch::imp::hw::apic::raw] - L270: set_irq(idx=15,vector=36,apic=0,mode=EdgeHi)
        23d 0[kernel::arch::imp::hw::apic::raw] - Info = 0x10000
        23d 0[kernel::arch::imp::hw::apic::raw] - Disable 0: Info = 0x10000
        25l 0[storage_ata] - ATA0: Hard Disk, 100352 sectors, 49MiB
        26l 0[kernel::metadevs::storage] - Logical Volume: ATA-0w 49MiB
        26l 0[storage_ata] - ATA2: ATAPI
        26d 0[kernel::memory::helpers::dma_buffer] - phys = 0x2142d0, source_slice=0xffffa0000000f2d0
        28d 0[kernel::threads] - Task switch to 0xffff800000000800(2 GUI Compositor)
        28t 0[kernel::arch::imp::threads] - L210: Switching to RSP=0xffffa0000001fc28,CR3=0x1ff000,TLS=0xffffa0000001ffd0
        28d 2[gui::windows] - render_thread: Rendering WG 0 'Kernel'
        28t 2[gui::windows] - L181: WindowGroup::redraw: render_order=[(0, [(0,0 + 1152x128), (0,128 + 1280x896)]), (1, [(0,0 + 128x128)])]
        29t 2[gui::windows] - L196: WindowGroup::redraw: 0 'Kernel Log' dirty=[(0,0 + 1280x1024)], vis=[(0,0 + 1152x128), (0,128 + 1280x896)]
        29t 2[gui::windows::winbuf] - L109: WinBuf::blit(winpos=(0,0),rgn=(0,0 + 1152x128))
       104t 2[gui::windows::winbuf] - L109: WinBuf::blit(winpos=(0,0),rgn=(0,128 + 1280x896))
       627t 2[gui::windows] - L196: WindowGroup::redraw: 1 'Logo' dirty=[(0,0 + 128x128)], vis=[(0,0 + 128x128)]
       627t 2[gui::windows::winbuf] - L109: WinBuf::blit(winpos=(1152,0),rgn=(0,0 + 128x128))
       698d 2[gui::windows] - render_thread: Rendering WG 0 'Kernel'
       698t 2[gui::windows] - L181: WindowGroup::redraw: render_order=[(0, [(0,0 + 1152x128), (0,128 + 1280x896)]), (1, [(0,0 + 128x128)])]
       699t 2[kernel::threads::wait_queue] - L32: WaitQueue::wait(...)
       699d 2[kernel::threads] - Task switch to 0xffff8000000002e0(1 IRQ Worker)
       699t 2[kernel::arch::imp::threads] - L210: Switching to RSP=0xffffa00000017d68,CR3=0x1ff000,TLS=0xffffa00000017fd0
       699t 1[input_ps2::i8042] - L86: PS2 RX pri 0xfa
       700t 1[input_ps2::i8042] - L86: PS2 RX pri 0xaa
       700d 1[input_ps2] - Byte 0xaa caused State transition None to Enumerating(DSAck)
       700t 1[input_ps2::i8042] - L65: PS2 TX pri 0xf5
       700t 1[input_ps2::i8042] - L86: PS2 RX pri 0xfa
       701d 1[input_ps2] - Byte 0xfa caused State transition Enumerating(DSAck) to Enumerating(IdentAck)
       701t 1[input_ps2::i8042] - L65: PS2 TX pri 0xf2
       701t 1[input_ps2::i8042] - L86: PS2 RX pri 0xfa
       701d 1[input_ps2] - Byte 0xfa caused State transition Enumerating(IdentAck) to Enumerating(IdentB1)
       701t 1[input_ps2::i8042] - L86: PS2 RX pri 0xab
       701d 1[input_ps2] - Byte 0xab caused State transition Enumerating(IdentB1) to Enumerating(IdentB2(171))
       702t 1[input_ps2::i8042] - L86: PS2 RX pri 0x83
       702d 1[input_ps2] - Byte 0x83 caused State transition Enumerating(IdentB2(171)) to Keyboard(Dev { ty: MF2, state: Init(ReqScancodeSetAck), guidev: Instance(1) })
       702t 1[input_ps2::i8042] - L65: PS2 TX pri 0xf0
       702t 1[input_ps2::i8042] - L86: PS2 RX pri 0xfa
       702t 1[input_ps2::i8042] - L65: PS2 TX pri 0x0
       702t 1[input_ps2::i8042] - L86: PS2 RX pri 0x2
       703t 1[input_ps2::i8042] - L86: PS2 RX sec 0xfa
       703t 1[input_ps2::i8042] - L86: PS2 RX sec 0xaa
       703d 1[input_ps2] - Byte 0xaa caused State transition None to Enumerating(DSAck)
       703t 1[input_ps2::i8042] - L65: PS2 TX sec 0xf5
       703t 1[input_ps2::i8042] - L86: PS2 RX sec 0x0
       703t 1[input_ps2::i8042] - L86: PS2 RX sec 0xfa
       703d 1[input_ps2] - Byte 0xfa caused State transition Enumerating(DSAck) to Enumerating(IdentAck)
       703t 1[input_ps2::i8042] - L65: PS2 TX sec 0xf2
       703t 1[input_ps2::i8042] - L86: PS2 RX sec 0xfa
       703d 1[input_ps2] - Byte 0xfa caused State transition Enumerating(IdentAck) to Enumerating(IdentB1)
       704t 1[input_ps2::i8042] - L86: PS2 RX sec 0x0
       704d 1[input_ps2] - Byte 0x0 caused State transition Enumerating(IdentB1) to Mouse(Dev { ty: Std, state: Idle, guidev: Instance(1), btns: 0 })
       704d 1[kernel::threads] - Task switch to 0xffff800000000180(0 ThreadZero)
       704t 1[kernel::arch::imp::threads] - L210: Switching to RSP=0xffffa0000000de68,CR3=0x1ff000,TLS=0xffffa0000000ffd0
       705d 0[storage_scsi] - Type: 0x5
       705d 0[kernel::memory::helpers::dma_buffer] - phys = 0x213c40, source_slice=0xffffa0000000ec40
       706d 0[storage_scsi] - No medium
       706d 0[storage_scsi] - SCSI Volume CdDvd size=None
       706l 0[storage_ata] - ATA1: No disk
       707l 0[storage_ata] - ATA3: No disk
       707d 0[kernel::device_manager] - Finding driver for pci:b
       707d 0[kernel::device_manager] - Finding driver for pci:10
       707d 0[kernel::device_manager] - Finding driver for pci:18
       707d 0[kernel::modules] - #10: MapperMBR Deps
       707d 0[kernel::modules] - #10: MapperMBR Init
       708d 0[kernel::hw::mapper_mbr] - PV 'ATA-0' boot sig 55 aa
       709d 0[kernel::metadevs::storage] - Removing 1 LVs
       710d 0[kernel::hw::mapper_mbr] - Entry { bootable: false, system_id: 131, lba_start: 2048, lba_count: 65536 }
       711l 0[kernel::metadevs::storage] - Logical Volume: ATA-0p0 32MiB
       711d 0[kernel::hw::mapper_mbr] - Entry { bootable: false, system_id: 7, lba_start: 67584, lba_count: 32768 }
       711l 0[kernel::metadevs::storage] - Logical Volume: ATA-0p1 16MiB
       711d 0[kernel::modules] - #12: TSS Deps
       711d 0[kernel::modules] - #12: TSS Init
       711d 0[kernel::threads] - Task switch to 0xffff8000000002e0(1 IRQ Worker)
       711t 0[kernel::arch::imp::threads] - L210: Switching to RSP=0xffffa00000017d68,CR3=0x1ff000,TLS=0xffffa00000017fd0
       712d 1[kernel::threads] - Task switch to 0xffff800000000180(0 ThreadZero)
       712t 1[kernel::arch::imp::threads] - L210: Switching to RSP=0xffffa0000000fc78,CR3=0x1ff000,TLS=0xffffa0000000ffd0
       715d 0[kernel] - sysroot = "Tifflin"
       715t 0[kernel::vfs::handle] - L85: Any::open(Path(b"/"))
       716t 0[kernel::vfs::node] - CacheHandle::from_path(Path(b"/"))
       716t 0[kernel::vfs::mount] - L143: Handle::for_path(Path(b"/"))
       716t 0[kernel::vfs::path] - L74: Path::starts_with(self=Path(b"/"), other=Path(b"/system"))
       716t 0[kernel::vfs::path] - L83: tail=Path(b"/") :: comp=b"", t=Path(b"")
       716t 0[kernel::vfs::path] - L85: ocomp=b"", comp=b""
       716t 0[kernel::vfs::path] - L74: Path::starts_with(self=Path(b"/"), other=Path(b"/"))
       716t 0[kernel::vfs::path] - L83: tail=Path(b"/") :: comp=b"", t=Path(b"")
       716t 0[kernel::vfs::path] - L85: ocomp=b"", comp=b""
       717d 0[kernel::vfs::mount] - Return 0'PathBuf(b"/")', tail=Path(b"")
       717d 0[kernel::vfs::node] - - tail=Path(b"")
       717d 0[kernel::vfs::node] - return CacheHandle { 0:0x0 0xffff800000833580 }
       717t 0[kernel::vfs::ramfs] - L87: RamFS::get_node_by_inode(4)
       717l 0[kernel] - Loading userland '/system/Tifflin/bin/loader' args '/system/Tifflin/bin/init'
       717t 0[kernel::vfs::node] - CacheHandle::from_path(Path(b"/system/Tifflin/bin/loader"))
       718t 0[kernel::vfs::mount] - L143: Handle::for_path(Path(b"/system/Tifflin/bin/loader"))
       718t 0[kernel::vfs::path] - L74: Path::starts_with(self=Path(b"/system/Tifflin/bin/loader"), other=Path(b"/system"))
       718t 0[kernel::vfs::path] - L83: tail=Path(b"/system/Tifflin/bin/loader") :: comp=b"", t=Path(b"system/Tifflin/bin/loader")
       718t 0[kernel::vfs::path] - L85: ocomp=b"", comp=b""
       718t 0[kernel::vfs::path] - L83: tail=Path(b"system/Tifflin/bin/loader") :: comp=b"system", t=Path(b"Tifflin/bin/loader")
       718t 0[kernel::vfs::path] - L85: ocomp=b"system", comp=b"system"
       718t 0[kernel::vfs::path] - L83: tail=Path(b"Tifflin/bin/loader") :: comp=b"Tifflin", t=Path(b"bin/loader")
       718d 0[kernel::vfs::mount] - Return 1'PathBuf(b"/system")', tail=Path(b"Tifflin/bin/loader")
       719d 0[kernel::vfs::node] - - tail=Path(b"Tifflin/bin/loader")
       719d 0[kernel::vfs::node] - - seg=b"Tifflin" : DIR
       719t 0[blockcache] - L71: Miss: 16711680
       720d 0[fs_fat::dir] - lookup(): ent = End
       720e 0[kernel] - Unable to open initial userland loader '/system/Tifflin/bin/loader': NotFound
       720i 0[kernel] - Entering idle
       721t 0[kernel] - L164: TID0 napping
       721d 0[kernel::threads] - Task switch to 0xffff8000000002e0(1 IRQ Worker)
       721t 0[kernel::arch::imp::threads] - L210: Switching to RSP=0xffffa00000017d68,CR3=0x1ff000,TLS=0xffffa00000017fd0
       721d 1[kernel::threads] - Task switch to 0xffff800000000180(0 ThreadZero)
       721t 1[kernel::arch::imp::threads] - L210: Switching to RSP=0xffffa0000000fc78,CR3=0x1ff000,TLS=0xffffa0000000ffd0
       721t 0[kernel] - L164: TID0 napping
       721d 0[kernel::threads] - Task switch to self, idle
       721t 0[kernel::arch::imp::threads] - L210: Switching to RSP=0xffffa0000000fc78,CR3=0x1ff000,TLS=0xffffa0000000ffd0
    
    opened by Fishman2009 1
  • RunQemuPXE: always copy ldlinux.c32 and libcom32.c32

    RunQemuPXE: always copy ldlinux.c32 and libcom32.c32

    Presumably both sides of this if condition should be copying the same files.

    For Arch Linux, I also changed PXELINUX_DIR=/usr/lib/syslinux/ to PXELINUX_DIR=/usr/lib/syslinux/bios/.

    Hopefully there's some more portable solution here, but I don't know what...

    opened by ids1024 0
Owner
John Hodge (Mutabah)
John Hodge (Mutabah)
A tiny 32 bit kernel written in Rust

rustboot A tiny 32 bit kernel written in Rust. I was inspired to download Rust and try to do this after seeing zero.rs - a stub that lets Rust program

Charlie Somerville 1.5k Dec 30, 2022
Experimental kernel for embedded devices written in Rust

bkernel is an experimental kernel for embedded devices written in Rust. I'm mostly trying out Rust now to see how it applies to kernel development. Pr

Alexey Shmalko 84 Dec 13, 2022
A new operating system kernel with Linux binary compatibility written in Rust.

Kerla Kerla is a monolithic operating system kernel from scratch in Rust which aims to be compatible with the Linux ABI, that is, runs Linux binaries

Seiya Nuta 3.1k Jan 1, 2023
Minimal x86_64 OS kernel written in Rust

rkernel A minimal x86_64 Rust OS kernel. Multiboot2 VGA driver PIC PIT PS/2 Keyboard driver PS/2 Mouse driver TSC RTC Allocator ATA PIO (In progress..

Divy Srivastava 36 Apr 26, 2022
🍒 Small, simple, and fast kernel written in Rust. 🌸

?? Small, simple, and fast kernel written in Rust. ??

Cherry Developers 5 May 20, 2022
Linux kernel modules written in Rust

Linux kernel modules written in Rust A collection of in-progress experimental Linux kernel modules written for the Rust for Linux project To run the o

Milan 10 Nov 13, 2022
Rux - An x86_64 toy operating system kernel written in Rust

Rux - An x86_64 toy operating system kernel written in Rust. Rux is a port of the Hux kernel, my x86 32-bit single-CPU toy kernel written in C, following the OSTEP book structure and terminology.

Guanzhou Jose Hu 6 Feb 26, 2022
An super minimal kernel written in rust

Grisha This project depends on this blog serie Philipp Oppermann's blog Required Knowlege I don't know what you really need to know to learn efficient

Ismail Ait Bella 3 Feb 3, 2022
Linux ABI-compatible kernel written in Rust

Linux ABI-compatible kernel written in Rust ??️ Screenshot (v0.1.0-alpha.1) ?? Build dependencies To compile GalaxyOS kernel and create basic OS ISO i

Krzysztof Stefańczyk 3 Dec 5, 2022
Open Source Rust kernel; Runs WASM and WASI as lightweight containers.

?? etheryal Kernel etheryal kernel is an Open Source capability-based Kernel written in the Rust programming language. The kernel allows implementing

null 32 Dec 4, 2022
Basic Rust kernel using Limine

Rust Limine Barebones This is a small kernel that boots using Limine. Build First of all, download Rust ! (I guess you already did it if you are here

Quentincestino 16 Dec 23, 2022
Examples on how to write Windows kernel drivers in Rust

windows-kernel-rs Note: this is still work in progress! This is a Windows kernel framework in Rust that consists of windows-kernel-sys, a crate that p

S.J.R. van Schaik 77 Dec 28, 2022
An x86-64 kernel with ~100% Rust (originally) in a week

litchi-rs An x86-64 kernel with ~100% Rust (originally) in a week. The continuation of Litchi. Try it Make sure the Rust toolchains and qemu-system-x8

Bugen Zhao 38 Oct 11, 2022
Kernel density estimation in Rust.

kernel-density-estimation Kernel density estimation in Rust. Kernel density estimation (KDE) is a non-parametric method to estimate the probability de

Seaton Ullberg 16 Jan 16, 2023
A KISS Rust crate to parse Windows kernel crash-dumps created by Windows & its debugger.

kdmp-parser A KISS Rust crate to parse Windows kernel crash-dumps created by Windows & its debugger. This is a cross-platform crate that parses Window

Axel Souchet 30 Jul 11, 2024
💻 An x86_64 kernel in the works

BruhOS a basic x86_64 kernel in the works. cool stuff written in rust boots with any stivale2-compliant bootloader framebuffer bitmap font renderer pm

Safin Singh 9 Jun 8, 2021
The official kernel for Popcorn OS, and operating system designed for handheld devices.

About Popkern is the kernel for Popcorn OS, an operating system designed for handheld devices. As such, the kernel is (to be) optimised at all levels

Team Scena 3 Sep 19, 2021
The kernel for LibertyOS.

This is the official repository of the LibertyOS kernel. LibertyOS is an operating system, built with Rust, that is open-source, free-to-use, and open to new contributors.

null 229 Dec 5, 2022
A custom kernel for educational reasons

A custom kernel for educational reasons

TornaxO7 16 Dec 25, 2022