# cunix
**Repository Path**: intirain/cunix
## Basic Information
- **Project Name**: cunix
- **Description**: cunix系统内核代码
- **Primary Language**: Unknown
- **License**: GPL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 0
- **Created**: 2021-03-27
- **Last Updated**: 2022-05-28
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
Cunix kernel
============
# Versions
`0.362s-boot`:
`Boot` read `loader` from `boot-device`, then it jumps to it.
Loader doesn't load anything, it just enable long-mode and paging.
Loader defines temporary page table at `0x70000` (0x0000:0x7000),
it uses `2MB` page to make 0-12 MB memory to `0x0000 - 0xc0000`.
`0.385s-boot`:
rebuild `boot` and `loader`.
`0.391s-boot`:
`loader` forgot open A20 line, so `0.385` and `0.362` just can
use 1MB memory like real-mode.
`0.432s-boot`:
make directory `include/`, and add segment.inc, but it doesn't work. :-)
`0.451s-boot`:
`boot` can load 8 sectors (4KB) of loader (not 1 sector).
`0.466s-boot`:
rebuild `boot`
`0.487s-boot`:
`loader` let FS can access 4GB memory in real-mode. because
`loader` loaded GDT and load a data-segment to fs, then disable
protect-mode.
`0.484s-boot`:
let `readdisk.inc` smaller, but we just can use CHS or LBA, not both.
`0.509s-kernel`:
load kernel to 0x8200-0x9200 for 4KB, kernel.asm display 'K' to screen.
`0.556s-int`:
init IDT at 0x0000-0x1000, and set all handler at `ignore_int`, but it do nothing.
`0.619s-boot`:
load 180KB of disk, not 4KB
`0.566s-kernel`:
write in C.
`0.790s-kernel`:
make some structs
`1.384s-hal`:
use text VGA mode, and make a file-operations of it.
`1.440s-lib`:
make some macros about assembly.
`1.562s-init`:
new head.s, re-init GDT and IDT.
`1.217s-init`:
nt for file-operations, and remove all modules.
`1.302s-module`:
there is a bug with loader: it cannot load kernel because 0 - 8 = -8 (not 0).
so we read it byte by byte. and we used assembly to wrote a tty driver. It just can putchar now.
`1.690s-module`:
new function printf, put format string on screen.
and, new panic.S to `kernel panic`.
`1.727s-module`:
add support '\n' for printf.
`1.760s-module`:
accept fault or interrupt in head.s
`1.879s-memory`:
init page table in head.S, it can map 0-64MB memory (32 pages).
`2.086s-module`:
support 'roll' screen, and create some functions (string.h).