Commit Graph

141 Commits

Author SHA1 Message Date
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
Jonas 'Sortie' Termansen 2b72262b4f Relicense Sortix to the ISC license.
I hereby relicense all my work on Sortix under the ISC license as below.

All Sortix contributions by other people are already under this license,
are not substantial enough to be copyrightable, or have been removed.

All imported code from other projects is compatible with this license.

All GPL licensed code from other projects had previously been removed.

Copyright 2011-2016 Jonas 'Sortie' Termansen and contributors.

Permission to use, copy, modify, and distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
2016-03-05 22:21:50 +01:00
Jonas 'Sortie' Termansen 8e988c1bf1 Convert libpthread to C and merge into libc. 2016-03-03 23:02:23 +01:00
Jonas 'Sortie' Termansen f52fb3202c Add sysinstall(8), sysmerge(8), and sysupgrade(8). 2016-02-21 18:41:11 +01:00
Jonas 'Sortie' Termansen 8af81a1864 Add disked(8). 2016-02-20 13:28:40 +01:00
Jonas 'Sortie' Termansen b15d30ea0c Fix Makefile build breakage. 2016-02-07 23:59:26 +01:00
Jonas 'Sortie' Termansen 170ccfcc89 Load ports in their own initrds. 2016-02-07 22:46:23 +01:00
Jonas 'Sortie' Termansen c10628a2e2 Remove root makefile kernel targets. 2016-02-07 22:46:23 +01:00
Jonas 'Sortie' Termansen 3648fce015 Add git repository to /src if applicable. 2016-02-07 22:46:23 +01:00
Jonas 'Sortie' Termansen d85a0b70cc Add /etc/machine. 2016-02-07 22:46:22 +01:00
Jonas 'Sortie' Termansen bdd9e2851b Add /etc/sortix-release. 2016-02-07 22:46:22 +01:00
Jonas 'Sortie' Termansen 5ee7ff4e67 Add iso compression support. 2016-02-07 22:46:22 +01:00
Jonas 'Sortie' Termansen e9e033212a Generate lists of system files. 2016-02-07 22:46:22 +01:00
Jonas 'Sortie' Termansen 391680a468 Add update-initrd(8). 2016-02-07 00:51:16 +01:00
Jonas 'Sortie' Termansen caf632ccdd Remove mbrfs. 2016-02-06 17:51:29 +01:00