Releases: nuta/kerla
v0.1.0
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
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
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)