Commit Graph

155 Commits

Author SHA1 Message Date
Jonas 'Sortie' Termansen 4204813d9b Add cdrom mounting live environment. 2023-03-21 23:59:17 +01:00
Jonas 'Sortie' Termansen 5464b9a895 Add iso9660 filesystem implementation. 2023-03-21 23:59:17 +01:00
Jonas 'Sortie' Termansen 9a3e5ee33a Add tix-upgrade(8). 2023-03-21 23:59:16 +01:00
Jonas 'Sortie' Termansen b98d0d1f18 Add display server. 2023-03-21 23:59:16 +01:00
Jonas 'Sortie' Termansen b008298b0a Add irc(1).
Co-authored-by: Juhani Krekelä <juhani@krekelä.fi>
2023-03-21 23:59:16 +01:00
Jonas 'Sortie' Termansen e3e5458861 Add host(1). 2023-03-21 23:59:15 +01:00
Jonas 'Sortie' Termansen c57ff050e9 Add include and comment support to passwd(5) and group(5). 2023-03-19 21:53:21 +01:00
Jonas 'Sortie' Termansen 8a4548db7d Add memory statistics to struct psctl_stat.
This is an incompatible ABI change.
2023-03-09 20:27:18 +01:00
Jonas 'Sortie' Termansen 2cd7361294 Add memusage(2).
Switch xz to memusage(2) and fix native self-cross issue.

This is a compatible ABI change.
2023-03-09 20:27:17 +01:00
Jonas 'Sortie' Termansen bfc852be08 Fix src containing single branch fetchspec. 2023-02-25 13:09:40 +01:00
Jonas 'Sortie' Termansen f884034e21 Add ping(8). 2023-02-23 00:43:11 +01:00
Jonas 'Sortie' Termansen 4379ca962a Add dhclient(8).
Co-authored-by: Juhani Krekelä <juhani@krekelä.fi>
2023-02-21 23:24:06 +01:00
Jonas 'Sortie' Termansen 2edaf130fa Add ifconfig(8).
Co-authored-by: Juhani Krekelä <juhani@krekelä.fi>
2023-01-11 00:42:20 +01:00
Jonas 'Sortie' Termansen 2ef6804ead Add networking stack.
This change adds all the kernel parts of a network stack. The network stack
is partial but implements many of the important parts.

Add if(4) network interface abstraction. Network interfaces are registered
in a global list that can be iterated and each assigned an unique integer
identifier.

Add reference counted packets with a cache that recycles recent packets.

Add support for lo(4) loopback and ether(4) ethernet network interfaces.
The /dev/lo0 loopback device is created automatically on boot.

Add arp(4) address resolution protocol driver for translation of inet(4)
network layer addresses into ether(4) link layer addresses. arp(4) entries
are cached and evicted from the cache when needed or when the entry has not
been used for a while. The cache is limited to 256 entries for now.

Add ip(4) internet protocol version 4 support. IP fragmentation and options
are not implemented yet.

Add tcp(4) transmission control protocol sockets for a reliable transport
layer protocol that provides a reliable byte stream connection between two
hosts. The implementation is incomplete and does not yet implement out of
band data, options, and high performance extensions.

Add udp(4) user datagram protocol sockets for a connectionless transport
layer that provides best-effort delivery of datagrams.

Add ping(4) sockets for a best-effort delivery of echo datagrams.

Change type of sa_family_t from unsigned short to uint16_t.

Add --disable-network-drivers to the kernel(7) options and expose it with a
bootloader menu. tix-iso-bootconfig can set this option by default.

Import CRC32 code from libz for the Ethernet checksum.

This is a compatible ABI change that adds features to socket(2) (AF_INET,
IPPROTO_TCP, IPPROTO_UDP, IPPROTO_PING), the ioctls for if(4), socket
options, and the lo0 loopback interface.

This commit is based on work by Meisaka Yukara contributed as the commit
bbf7f1e8a5238a2bd1fe8eb1d2cc5c9c2421e2c4. Almost no lines of this work
remains in this final commit as it has been rewritten or refactored away
over the years, see the individual file headers for which files contain
remnants of this work.

Co-authored-by: Meisaka Yukara <Meisaka.Yukara@gmail.com>
2022-12-11 13:40:34 +01:00
Jonas 'Sortie' Termansen f2d50bbf9c Add daemon support to init(8).
This change implements a dependency tracking daemon(7) system in init with
overridable init(5) configuration, parallel startup, readiness signaling,
rotating logs, reliable stopping, and handling of leaked processes.

The /etc/init/target file is replaced by the new /etc/init/default per the
new init(5) format. The old configuration is migrated upon upgrade using an
upgrade hook.

extfs(8) now signals readiness using READYFD for fast mounting.

Filesystems that fail to be repaired are now mounted read-only.

The mounting and filesystem checking code is synchronized with sysinstall.

The duplicated array_add utility function now protects against overflows.

tix-iso-bootconfig(8) gains the --init-target option.

tix-iso-liveconfig(8) gains the --daemons option.
2022-10-20 23:26:03 +02:00
Jonas 'Sortie' Termansen 55df3bbd7b Add default git origin remote. 2022-09-10 20:55:37 +02:00
Jonas 'Sortie' Termansen 23b3271fca Release HTML manual pages.
Add python3 to the basic set of ports in order to build releases.
2022-07-10 23:10:14 +02:00
Jonas 'Sortie' Termansen 3ae81f08b3 Add install-cross-toolchain Makefile target. 2022-07-09 20:51:13 +02:00
Jonas 'Sortie' Termansen 802b0ef1d1 Add verify-ports presubmit. 2022-07-09 20:51:13 +02:00
Jonas 'Sortie' Termansen 9588b0d3db Add ports to the Sortix repository.
This change imports the ports collection from the former porttix and srctix
repositories and converts them to port(5) files with metadata pointing to
the upstream release tarballs with patches checked into this repository.
Ports are now developed and versioned along with the operating system and
are automatically built per the PACKAGES environment variable. The patches
are licensed under the same license as the relevant ports.

Tix has gained support for the new port(5) format. tix-port(8) is the new
high level ports build even point that handles downloading pstream releases
into the new mirror cache directory, applying the patches, building the port
with the lower-level tix-build(8), and finally installing the binary
package. The new tix-vars(8) program parses port(5) files and the new
tix-rmdiff(8) program produces input for tix-rmpatch(8).

The old doc/ directory is discontinued in favor of manual pages documenting
the new ports system.

The obsolete porttix-create(8) and srctix-create(8) programs are removed.
2022-06-13 22:29:53 +02:00
Jonas 'Sortie' Termansen 3c43f71084 Implement file descriptor passing.
This change refactors the Unix socket / pipe backend to have a ring buffer
containing segments, where each segment has an optional leading ancillary
buffer containing control messages followed by a normal data buffer.

The SCM_RIGHTS control message has been implemented which transfers file
descriptors to the receiving process. File descriptors are reference counted
and cycles are prevented using the following restrictions:

1) Unix sockets cannot be sent on themselves (on either end).
2) Unix sockets themselves being sent cannot be sent on.
3) Unix sockets cannot send a Unix socket being sent on.

This is a compatible ABI change.
2021-12-31 22:24:11 +01:00
Jonas 'Sortie' Termansen 3048fdf7a1 Add presubmit. 2021-10-10 00:07:06 +02:00
Juhani Krekelä d4528e9401 Add dnsconfig(8). 2021-10-09 21:11:56 +03:00
Jonas 'Sortie' Termansen 9a20f8cc37 Publish releases by the release name. 2021-07-20 22:11:27 +02:00
Jonas 'Sortie' Termansen 20df95f1ec Add /tix/tixinfo to the system manifest. 2021-07-20 22:08:11 +02:00
Jonas 'Sortie' Termansen bce37028f5 Store binary package repository in the release directory. 2021-06-24 22:35:39 +02:00
Jonas 'Sortie' Termansen fa5f1b826e Add sha256sum to release directory. 2021-06-24 22:35:39 +02:00
Jonas 'Sortie' Termansen cffa7fa7b7 Add manual pages to the release. 2021-06-24 22:35:39 +02:00
Jonas 'Sortie' Termansen aeb7e0ccfc Store kernel and initrds in the release directory. 2021-06-24 22:35:39 +02:00
Jonas 'Sortie' Termansen 5e7605fad2 Implement threading primitives that truly sleep.
The idle thread is now actually run when the system is idle because it
truly goes idle. The idle thread is made power efficient by using the hlt
instruction rather than a busy loop.

The new futex(2) system call is used to implement fast user-space mutexes,
condition variables, and semaphores. The same backend and design is used as
kutexes for truly sleeping kernel mutexes and condition variables.

The new exit_thread(2) flag EXIT_THREAD_FUTEX_WAKE wakes a futex.

Sleeping on clocks in the kernel now uses timers for true sleep.

The interrupt worker thread now truly sleeps when idle.

Kernel threads are now named.

This is a compatible ABI change.
2021-06-23 22:10:47 +02:00
Jonas 'Sortie' Termansen 27f81b09a6 Add /var/cache, /var/log, and /var/run. 2021-05-30 23:50:42 +02:00
Jonas 'Sortie' Termansen cb590ff205 Fix system upgrade leaking files. 2021-01-19 00:04:56 +01:00
Jonas 'Sortie' Termansen 37b1bf5e75 Fix /tmp permissions in the live environment. 2021-01-17 23:05:16 +01:00
Jonas 'Sortie' Termansen 4c089a01d6 Fix sysroot-source git clone not escaping the current directory. 2021-01-02 17:54:38 +01:00
Jonas 'Sortie' Termansen 3a874e7f40 Fix /var/empty permissions. 2021-01-02 17:54:38 +01:00
Jonas 'Sortie' Termansen 6f7162a0b1 Add checksum(1). 2020-09-27 22:15:20 +02:00
Jonas 'Sortie' Termansen 397bac9862 Add support for modifying release iso images. 2018-03-31 00:55:33 +02:00
Jonas 'Sortie' Termansen d1c3433353 Add rw(1). 2018-03-31 00:55:33 +02:00
Jonas 'Sortie' Termansen eca6246684 Use portable sort in linecount target. 2017-12-04 23:56:47 +01:00
Jonas 'Sortie' Termansen dbf4bcd6cf Add hostname(1). 2017-03-19 17:33:47 +01:00
Jonas 'Sortie' Termansen 970bf0c5e3 Major bump Sortix ABI following incompatible socket(2) change.
Commit "Add socket(2)" 4b2cf28bbf forgot to
major bump the ABI after removing /dev/net and adding a new system call.
2017-02-18 16:05:55 +01:00
Jonas 'Sortie' Termansen 987cd88472 Use git ls-files in linecount target. 2017-02-05 22:21:22 +01:00
Jonas 'Sortie' Termansen db7182ddc3 Add support for sessions.
This change refactors the process group implementation and adds support
for sessions. The setsid(2) and getsid(2) system calls were added.

psctl(2) now has PSCTL_TTYNAME, which lets you get the name of a process's
terminal, and ps(1) now uses it.

The initial terminal is now called /dev/tty1.

/dev/tty is now a factory for the current terminal.

A global lock now protects the process hierarchy which makes it safe to
access other processes. This refactor removes potential vulnerabilities
and increases system robustness.

A number of terminal ioctls have been added.

This is a compatible ABI change.
2016-11-23 22:30:47 +01:00
Jonas 'Sortie' Termansen d720f16537 Add ONLCR and OCRNL.
This is a compatible ABI change.
2016-11-05 23:38:40 +01:00
Jonas 'Sortie' Termansen 4d40dd35dd Run the existing sysmerge(8) in the make sysmerge targets.
The ABI may have changed and the current system might not be able to run the
new program.
2016-10-04 00:34:49 +02:00
Jonas 'Sortie' Termansen e69565fd15 Remove compatibility with Sortix 0.9. 2016-05-15 01:31:48 +02:00
Jonas 'Sortie' Termansen d166e58dc8 Remove repository from release directory. 2016-03-26 23:50:50 +01:00
Jonas 'Sortie' Termansen 34b5f061f9 Fix linecount target not working. 2016-03-26 16:07:22 +01:00
Jonas 'Sortie' Termansen 15ef078e9f Fix live environment tix collection platform. 2016-03-07 17:46:14 +01:00
Jonas 'Sortie' Termansen cadef6fedb Rename i486-sortix platform to i686-sortix. 2016-03-06 18:59:10 +01:00