Commit Graph

28 Commits

Author SHA1 Message Date
Jonas 'Sortie' Termansen 9ec9ebcd44 Add sshd(8) support.
TODO: Pasting more than 1025 bytes into a Sortix ssh session disconnects it.
TODO: ssh to localhost from tty is corrupted
TODO: /etc/ssh*_config should be in /etc/default/
2022-02-08 18:48:35 +01:00
Jonas 'Sortie' Termansen 8d88bcdbf8 Add networking stack.
This commit is based on work by Meisaka Yukara <Meisaka.Yukara@gmail.com>
contributed as the commit bbf7f1e8a5238a2bd1fe8eb1d2cc5c9c2421e2c4. See the
individual file headers for which files contain remnants of this work.

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 echo of 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.
2022-02-08 18:48:34 +01:00
Jonas 'Sortie' Termansen 87db1f52a4 Add halt(8), poweroff(8), and reboot(8). 2022-02-08 18:48:34 +01:00
Jonas 'Sortie' Termansen d708a9d32b Add daemon support to init(8). 2022-02-08 18:48:34 +01:00
Jonas 'Sortie' Termansen ba8800df2c Improve error handling in upgrade.conf(5) parsing. 2021-01-19 00:04:59 +01:00
Jonas 'Sortie' Termansen 84b008e455 Clean up minor issues in sysinstall(8). 2021-01-19 00:04:59 +01:00
Jonas 'Sortie' Termansen cb590ff205 Fix system upgrade leaking files. 2021-01-19 00:04:56 +01:00
Jonas 'Sortie' Termansen 29598b4fde Fix /tix/manifest permissions in installations. 2021-01-17 23:14:54 +01:00
Jonas 'Sortie' Termansen 4a33c460f6 Fix accidental dead code after continue in sysinstall(8). 2018-08-06 23:59:35 +02:00
Juhani Krekelä 3261f766b6 Fix typo when sysinstall(8) says have to set up bootloading yourself. 2018-04-08 21:38:50 +02:00
Jonas 'Sortie' Termansen d7e5539c35 Fix sysinstall(8) typo when selecting root filesystem. 2018-03-30 23:42:37 +02:00
Jonas 'Sortie' Termansen e9d552867b Fix sysinstall(8) indention. 2017-12-04 23:56:47 +01:00
Jonas 'Sortie' Termansen e7c5d032d1 Refactor graphical resolution changes. 2016-11-27 11:18:48 +01:00
Jonas 'Sortie' Termansen 1990c899dd Fix not offering setting a resolution with one display. 2016-11-27 11:18:48 +01:00
Jonas 'Sortie' Termansen 6ef5a5cee3 Detect whether the terminal has a display and a keyboard layout.
A new ioctl TIOCGDISPLAYS allow detecting which displays the terminal
has associated. The ability to set a keyboard layout can be detected
with tcgetblob kblayout.

Improve the user-space multi-monitor support while here.

The kernel now sets TERM rather than init(8).

This is a compatible ABI change riding on the previous commit's bump.
2016-11-23 22:31:04 +01:00
Jonas 'Sortie' Termansen ac37d66a93 Add sysinstall(8) tip for selecting devices in disked(8). 2016-10-04 00:34:50 +02:00
Jonas 'Sortie' Termansen a90d4dbf23 Allow canceling sysinstall(8) and sysupgrade(8) gracefully. 2016-10-04 00:34:50 +02:00
Jonas 'Sortie' Termansen 252c78f010 Add partition support to sysupgrade(8). 2016-10-04 00:34:50 +02:00
Jonas 'Sortie' Termansen b70ffb70af Add /boot partition support to sysinstall(8). 2016-10-04 00:34:50 +02:00
Jonas 'Sortie' Termansen 3f86ec6544 Default to installing GRUB if an existing installation uses GRUB. 2016-10-04 00:34:50 +02:00
Jonas 'Sortie' Termansen 84c0844f56 Seed kernel entropy with randomness from the previous boot.
The bootloader will now load the /boot/random.seed file if it exists, in
which case the kernel will use it as the initial kernel entropy. The kernel
warns if no random seed was loaded, unless the --no-random-seed option was
given. This option is used for live environments that inherently have no
prior secret state. The kernel initializes its entropy pool from the random
seed as of the first things, so randomness is available very early on.

init(8) will emit a fresh /boot/random.seed file on boot to avoid the same
entropy being used twice. init(8) also writes out /boot/random.seed on
system shutdown where the system has the most entropy. init(8) will warn if
writing the file fails, except if /boot is a real-only filesystem, and
keeping such state is impossible. The system administrator is then
responsible for ensuring the bootloader somehow passes a fresh random seed
on the next boot.

/boot/random.seed must be owned by the root user and root group and must
have file permissions 600 to avoid unprivileged users can read it. The file
is passed to the kernel by the bootloader as a multiboot module with the
command line --random-seed.

If no random seed is loaded, the kernel attempts a poor quality fallback
where it seeds the kernel arc4random(3) continuously with the current time.
The timing variance may provide some effective entropy. There is no real
kernel entropy gathering yet. The read of the CMOS real time clock is moved
to an early point in the kernel boot, so the current time is available as
fallback entropy.

The kernel access of the random seed module is supposed to be infallible
and happens before the kernel log is set up, but there is not yet a failsafe
API for mapping single pages in the early kernel.

sysupgrade(8) creates /boot/random.seed if it's absent as a temporary
compatibility measure for people upgrading from the 1.0 release. The GRUB
port will need to be upgraded with support for /boot/random.seed in the
10_sortix script. Installation with manual bootloader configuration will
need to load the random seed with the --random-seed command line. With GRUB,
this can be done with: module /boot/random.seed --random-seed
2016-10-04 00:34:50 +02:00
Jonas 'Sortie' Termansen 967c5b57d5 Fix advice/advise typos. 2016-09-25 22:27:07 +02:00
Jonas 'Sortie' Termansen 09f43c80e9 Change /mnt to / in sysinstall to avoid user confusion. 2016-03-28 17:46:51 +02:00
Jonas 'Sortie' Termansen 1083e67d45 Fix sysinstall videomode creation. 2016-03-26 16:07:22 +01:00
Jonas 'Sortie' Termansen 9ec09476ba Fix handling of unmountable filesystems. 2016-03-26 16:07:22 +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 f29f8e7679 Fix -Wstrict-prototypes issues. 2016-02-29 01:02:36 +01:00
Jonas 'Sortie' Termansen f52fb3202c Add sysinstall(8), sysmerge(8), and sysupgrade(8). 2016-02-21 18:41:11 +01:00