Commit Graph

54 Commits

Author SHA1 Message Date
d6b9667740 Build everything with cargo 2019-09-20 18:15:10 -04:00
3b168d5db5 move ph-init to separate crate 2019-09-20 17:57:35 -04:00
e69cb5ba1a new and improved kernel build 2019-09-20 17:55:12 -04:00
0f50387d1e change source layout 2019-09-20 17:29:55 -04:00
5a1c62d473 extensive changes to how VMs are configured and launched 2019-09-20 16:26:28 -04:00
2568a30440 libcitadel is now a dependency 2019-09-20 16:25:47 -04:00
4fc4c05155 ph-init mostly rewritten
Is more complex now and reads various kernel command line options to
configure behavior.

  * optionally set up tmpfs overlay over read-only rootfs
  * find and mount rootfs
  * mount /proc /sys /tmp /dev
  * mount 9p home directory
  * launch shell as root or as user
2019-09-20 16:10:30 -04:00
f71e3adb79 When printing warnings, label the warnings as coming from virtio_wl 2019-09-20 16:04:35 -04:00
626b6583db Update bytes written when manually incrementing offset of virtio chain 2019-09-20 16:03:36 -04:00
98a1e9361e Rewrite of 9p filesystem
Old version barely worked, but the new version works very well.

Supports two backend types. Exporting a tree from the host filesystem
is supported of course, and this is one backend. The second backend
is a synthetic filesystem on which directories can be created and then
files can be added to the directories. The files added to the filesystem
are either backed by a file on the host filesystem or a buffer of bytes
in memory.
2019-09-20 16:01:15 -04:00
1a587bb6cc refactor configure and launch of VM to be much simpler and nicer 2019-09-12 16:31:38 -04:00
c8153e4f51 mount 9p home directory if it exists. optionally launch systemd 2019-09-12 16:26:35 -04:00
a32324381f refactor to nicer api 2019-09-12 16:25:05 -04:00
9cc84e6116 oop, remove old code 2019-09-11 17:23:30 -04:00
7365bc5d38 update crates and add lazy_static for logging class 2019-09-11 16:32:21 -04:00
03c4d6aeac export all the new classes 2019-09-11 16:31:48 -04:00
f397c7e2cb Added error for disk image open failure 2019-09-11 16:30:47 -04:00
81df280b12 remove unused 2019-09-11 16:30:13 -04:00
1f7aadff12 Use MemoryManager rather than GuestRam 2019-09-11 16:29:26 -04:00
9bf3f84fae virtio-wayland 2019-09-11 16:20:16 -04:00
023571e88d virtio-blk device 2019-09-11 16:02:36 -04:00
e79502c271 A module for accessing disk image files (with virtio-blk) 2019-09-11 15:58:04 -04:00
9cca10a2c0 allow more flexible access to virtqueue chain 2019-09-11 15:55:38 -04:00
f893d5a316 allow direct access to ioevent and next chain of virtqueue 2019-09-11 15:54:32 -04:00
07d1c765d4 allow configuring size of virtio queues 2019-09-11 15:53:02 -04:00
90e1b26a11 Added a class which owns GuestRam and manages runtime memory allocations 2019-09-11 15:49:53 -04:00
ffefbd9283 added remove_memory_region() as complement of add_memory_region() 2019-09-11 15:32:54 -04:00
784544ae2b derive some traits to be able to compare addresses 2019-09-11 15:28:37 -04:00
9b2e7b8837 Wrap create_memfd() system call and manage memfd file descriptors 2019-09-11 11:36:07 -04:00
f47eff5ef8 A wrapper for raw file descriptors 2019-09-11 11:31:17 -04:00
7dd2fed779 implement AsRawFd for EventFd and IoEventFd 2019-09-11 11:30:44 -04:00
1d7857199d Wraps epoll system calls 2019-09-11 11:29:47 -04:00
26a34c3eae A class which manages virtio device config area 2019-09-11 11:29:24 -04:00
b39bb0e937 If PG and LME are set, then LMA must also be set 2019-09-11 11:28:32 -04:00
3679bfd03a bit vector implementation 2019-09-11 11:23:54 -04:00
245b48cf1e Support ancillary data such as SCM_RIGHTS for unix domain sockets.
Needed to allow transfer of file descriptors across sockets.
2019-09-11 11:16:41 -04:00
5d19d1e2f3 Tracks allocations of ranges of memory. 2019-09-11 11:12:16 -04:00
d3e2076ea5 An error class which wraps errno results 2019-09-11 11:10:27 -04:00
1cef90bfff A simple logger 2019-09-11 11:09:54 -04:00
74317be64b Update to modern Rust syntax 2019-08-29 19:43:26 -04:00
7fa1bdadb9 Can't forget this... 2017-10-18 21:23:29 +00:00
02a17b5d5e Removed unused import 2017-10-18 21:23:17 +00:00
adb43bf2ae Master makefile builds everything 2017-10-18 21:09:06 +00:00
5a3bf75c36 Updated to search for kernel and init in the right place(s) 2017-10-18 21:08:33 +00:00
235627da93 not needed anymore 2017-10-18 21:08:01 +00:00
17be46827d git ignore files 2017-10-18 21:07:21 +00:00
7a87547cc8 Fixed several broken things in makefile 2017-10-18 21:06:38 +00:00
eb6a99eb90 A better layout with both binaries in a single crate 2017-10-18 20:32:04 +00:00
0713cbce69 No longer needed 2017-10-18 19:14:05 +00:00
42070f7532 An init daemon written in rust to replace kernel/init/init.c 2017-10-18 19:09:14 +00:00