Skip to content

Releases: nuta/kerla

v0.1.0

24 Dec 06:55
Compare
Choose a tag to compare

Run the following command to try Kerla on QEMU:

qemu-system-x86_64 -m 512 -cpu Icelake-Server -serial mon:stdio \
    -netdev user,id=net0                                        \
    -device virtio-net,netdev=net0,disable-legacy=on            \
    -kernel kerla.x64.elf

Notable Changes

  • The first cloud support for DigitalOcean: for example, my website is now powered by Kerla on DigitalOcean!
  • boot2dump support: if an ext4 disk is attached over virtio-blk, kernel panic log will automatically saved into /kerla.dump.

All Changes

Baye Dieng (2):

  • Remove redundant files already defined in virtio crate (#84)
  • Make driver trait available globally for other drivers and typo fix (#89)

Seiya Nuta (42):

  • Isolate arch-specific and memory allocators into a separate library (kerla_runtime) (#77)
  • Use Rust 2021 edition (#78)
  • Turn device drivers into libraries (#80)
  • build: Use Docker image cross compiling for M1 Mac (#81)
  • Update author fields
  • Implement deferred job (#82)
  • Add some README.md
  • Rename initramfs to testing (#83)
  • Release IRQ_HANDLERS' lock before running deferred jobs (#85)
  • Generate the kernel extensions loader (#86)
  • Implement log filtering (#92)
  • build: Add $(QEMU_ARGS) option (#93)
  • Support the secondary serial port for kernel messages (#94)
  • x64: Make SyscallFrame compatible with Linux's struct pt_regs (#95)
  • Remove kexts_loader (#97)
  • initramfs: Implement file size (#122)
  • Implement shutdown(2) (#118)
  • Implement exit_group(2) syscall (#119)
  • Re-disable interrupts after handling an interrupt (#124)
  • Kill a process immediately if its parent ignores SIGCHLD (#121)
  • Make network parameters and allowed PCI devices configurable via cmdline (#123)
  • Support freeing pages (#120)
  • Use yapf for formatting python scripts (#125)
  • Implement /proc/metrics (#126)
  • Add rust-toolchain.toml (#129)
  • build: Allow specifying extra kernel parameters through $(CMDLINE) (#127)
  • downcast: Take a reference instead of the ownership (#130)
  • virtio: Fix a bug in used descriptors GC (#131)
  • net: Fix a memory leak (#132)
  • virtio: Support legacy virtio devices (#133)
  • /proc/metrics: Expose the monotonic clock (#134)
  • x64: Fill an XSAVE area with zeroes (#136)
  • net: Fix for dhcp=off (#135)
  • x64: Dump some important registers on an unsupported exception (#138)
  • allocator: Fill allocated pages with zeroes by default (#137)
  • Support saving kernel crash logs using boot2dump (#139)
  • x64: Fix memory leaks in a process internal buffers (#140)
  • Add docs
  • Fix some docs
  • Allow specifying multiple interrupt handlers for the same IRQ number (#143)
  • testing: Refactor Dockerfile (#128)
  • Add tools/create-release.py

Serhiy Barhamon (4):

  • Panic on irq_handler overwrite (#53)
  • Single thread gettid syscall implementation (#75)
  • rt_sigprocmask syscall implementation (#112)
  • #112 followup (bugfix and fix build) (#114)

dependabot[bot] (1):

  • build(deps): bump memoffset from 0.6.4 to 0.6.5 (#113)

Release v0.0.4

08 Nov 15:11
Compare
Choose a tag to compare

Run the following command to try Kerla on QEMU:

qemu-system-x86_64 -m 512 -cpu Icelake-Server -serial mon:stdio \
    -device isa-debug-exit,iobase=0x501,iosize=2                \
    -netdev user,id=net0                                        \
    -device virtio-net,netdev=net0,disable-legacy=on            \
    -cdrom kerla.iso

Seiya Nuta (3):
Fix a syntax error in .github/workflows/release.yml
ci: Fix the release workflow
v0.0.4

v0.0.3

08 Nov 15:05
Compare
Choose a tag to compare

Andrés Correa Casablanca (1):
docs: mark few syscalls as implemented (#14)

Dasein (1):
Compromise license patch 1 (#13)

Michał Fita (3):
[ISSUE-29] IRQ handlers with no conditional branching (#37)
[ISSUE-42] Reduce indirection of parent field in Process (#43)
[#41] process: Implementation of getppid syscall (#46)

Proloy Mishra (1):
remove unnecesary loop in lang_items.rs (#32)

Seiya Nuta (85):
Fix a broken link
virtio: Fix an out-of-bounds error
virtio_net: Warn an invalid receive buffer
uname: Update the version field
initramfs/busybox: Update the build config
vscode: Update the program filename
boot_kernel: Print "Booting Kerla..."
net: Ignore DHCP errors in the release build
README: Add a screenshot and a CI status badge
ring_buffer: make RingBuffer::new() const
ring_buffer: Fix a bug occurred when trying to push an empty slice
Implement syslog(2)
panic: Update PANICKED before calling a print macro
x64: Print '(empty)' if the cmdline is empty
rt_sigaction: Support SIG_DFL
Update screenshot.png
Implement readlink(2)
mm: Specify the order of buddy_system_allocator::LockedHeap
Run Busybox shell on startup by default
Update HACKING.md
version 0.0.2
Move docs into Documentation
Update a link in README
Update README
Address compiler warnings
Add PR Guidelines
Update PR guidelines
README: Add the Discord badge
Fix compiler warnings. NFC
busybox: Enable some features in shell
Introduce integration tests
Include process's argv in a system call trace message
ci: Try fixing integration tests
ci: Fix the workflow definition
ci: Fix the workflow definition again
ci: Try fixing integration tests
ci: Run sudo apt-get update before installing packages
ci: Try fixing integration tests
x64: Exit QEMU if $SEMIHOSTING_HALT_ON_PANIC is set
x64: Disable auto \r printing in the serial port output
ci: Exit QEMU on panic (or all tests are done)
ci: Remove redundant newline characters from the GitHub's console
Fix compiler warnings
ci: Fix the multiline string indentation in ci.yml
ci: Run unit tests
README: Replace kerla-demo.seiya.me with demo.kerla.dev
FIx compiler warnings on #[cfg(test)]
Replace the initramfs build system with a single Dockerfile
Implement reboot(2)
syscall: Print argv0 instead of cmndline in a trace messsage
Fix a compile error
ci: Power off once integration tests are done
initramfs: Add /usr/bin and /usr/sbin
Embed a backtrace into Error in debug build
Add a workaround for Docker's /etc/resolv.conf overriding
process: Fine-grained locking (closes #49)
process: Make all Process fields private. NFC
Replace current_process_arc() with current_process(). NFC
Address clippy warnings. NFC
Add a debug assertion to ensure dead locks won't occur in the page fault handler
Clean up "use" declarations. NFC
Move utils to libs/kerla_utils. NFC
Add make docs and make docsw command
result: Fix a compile error in release build
ci: Don't tolerate compiler warnings
README: Update a link
ci: Install clippy
Fix a clippy warning. NFCI
ci: Run clippy after building
docs: Add architecture.md
Add Code of Conduct (#38)
Close opened files on exit (#55)
process: Cleanup fields in Process (#56)
Implement fmt::Debug for inode objects (#57)
Fix opened file locking (#58)
spinlock: Improve the debug message on a dead lock (#59)
ci: Run tests in the debug build (#60)
Refactor context switching. NFCI (#61)
Call arch::print_str() directly on double panic (#64)
backtrace: Don't access unmapped addresses (#68)
Implement VGA console (#65)
Implement boot time profiling (#67)
ci: Automate releases (#66)
Remove changelog.md
v0.0.3

Sergey Shepelev (1):
typo (#4)

Serhiy Barhamon (3):
ISSUE-29: Switch IRQ handler's map from BTreeMap to array (#35)
panic if handler for specific IRQ is already attached (#36)
move net::process_packets() call from interrupt::handle_irq to handle (#47)

Shlomi Fish (1):
Correct some broken grammar in README.md. (#18)

VocalFan (1):
Dependency updates! (#11)

Yoke (1):
ISSUE-25:Add chmod implememt (#30)

dependabot[bot] (1):
build(deps): bump arrayvec from 0.7.1 to 0.7.2 (#31)