Giter VIP home page Giter VIP logo

rust_os's Introduction

"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 version 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)

rust_os's People

Contributors

ids1024 avatar kianmeng avatar thepowersgang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rust_os's Issues

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...

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

'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

UEFI Library

Can the uefi library be published as a separate crate?

Multiboot Flags don't affect structure output

Trying to get the multiboot structure doesn't yield any changes when changing the flags in start.S, I am compiling for amd64. I get the mboot_ptr by "externing" it in the main file. I use bindgen-cli to generate multiboot.rs with the flags --use-core --impl-debug. I then attempt to get the struct like this

unsafe {
        let struct1 = ((mboot_ptr as usize) + 0xFFFFFFFF80000000) as *mut multiboot_info;
        let struct2: &mut multiboot_info = struct1.as_mut().unwrap();
        log!("{:?}", struct2);
    }

I have let the assembly file unchanged from the clone and have also tried this from scratch with no success. Any attempts to fix this always prints out the same values

[kernel] multiboot_info { flags: 591, mem_lower: 639, mem_upper: 129920, boot_device: 2147549183, cmdline: 1101824, mods_count: 0, mods_addr: 1101824, u: multiboot_info__bindgen_ty_1 { union }, mmap_length: 168, mmap_addr: 36864, drives_length: 0, drives_addr: 0, config_table: 0, boot_loader_name: 1101846, apm_table: 0, vbe_control_info: 0, vbe_mode_info: 0, vbe_mode: 0, vbe_interface_seg: 0, vbe_interface_off: 0, vbe_interface_len: 0, framebuffer_addr: 0, framebuffer_pitch: 0, framebuffer_width: 0, framebuffer_height: 0, framebuffer_bpp: 0, framebuffer_type: 0, __bindgen_anon_1: multiboot_info__bindgen_ty_2 { union } }

I have also looked in to your rust-os but don't see how I could fix it, the only difference I see is that you use NASM.

Thanks for any help.

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

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.