Commit Graph

57 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 31e3a20bca Fix wrong minor ABI version in sysmerge(8) ABI transition notice. 2022-01-12 21:19:53 +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 69513b4396 Add grub-install boot device detection to sysmerge(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 5f84c38bc8 Fix sysinstall hook markers not being installed and prefix logic.
Document the compatibility hooks behavior while here.
2021-01-17 23:14:52 +01:00
Jonas 'Sortie' Termansen ad8e17a968 Fix sysupgrade(8) buffer overflowing on more than 16 installations. 2021-01-17 23:05:15 +01:00
Jonas 'Sortie' Termansen 516c15d69e Fix sysupgrade(8) cancelation of pending sysmerge(8) upgrades. 2021-01-17 23:03:07 +01:00
Jonas 'Sortie' Termansen 4de24d1f96 Fix sysmerge(8) -c short option not working. 2021-01-02 17:54:37 +01:00
Jonas 'Sortie' Termansen 918160450f Use /share/sysinstall/hooks to keep of whether hooks have run. 2018-08-15 22:51:22 +02:00
Jonas 'Sortie' Termansen 4a33c460f6 Fix accidental dead code after continue in sysinstall(8). 2018-08-06 23:59:35 +02:00
Jonas 'Sortie' Termansen 29555d72bb Fix <fcntl.h> including <sys/stat.h> namespace pollution.
POSIX allows <fcntl.h> to include <sys/stat.h>, but doesn't require it.
There's little reason to do that, since they are separate headers, and
<fcntl.h> just needs the mode_t constants. Fix the code accidentally
relying on <fcntl.h> including <sys/stat.h>. The mode_t constants are now
provided in their own kernel header <sortix/mode.h>.

Additionally fix <sys/stat.h> pulling in all of <sys/types.h>, which is not
allowed by POSIX, which only requires a few types to be declared. Fix the
code accidentally relying on <sys/stat.h> including <sys/types.h>.

Finally fix <dirent.h> pulling in <stdint.h> through <sortix/dirent.h>.

The <sortix/__/dt.h> and <sortix/__/stat.h> headers are no longer required
and their contents have been merged into <sortix/__/dirent.h>.
2018-08-06 23:59:34 +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 f864c59d0d Mix in fresh randomness when writing out /boot/random.seed.
When entropy gathering is implemented, in the case of the installer and
upgrader, the system probably won't have any entropy when it begins. By the
time the system is installed, there will probably be a bit of entropy from
the user using the system and general system usage, so mix in some of that.
In the case of init, after an installed system has run for a while, a lot of
entropy will have gotten collected, but init will have its arc4random seeded
with initial boot entry, so mix in some fresh entropy, so the random seed
written on shutdown remains as entropic as possible.
2017-09-06 23:41:05 +02:00
Jonas 'Sortie' Termansen 4c2ef980b1 Refactor sysmerge(8) and sysupgrade(8) ABI and version comparisons. 2017-09-06 23:41:05 +02:00
Jonas 'Sortie' Termansen 3d356af8d2 Highlight installer, upgrader and disked interactive prompts. 2017-08-26 16:43:54 +02:00
Jonas 'Sortie' Termansen 723f8e964c Fix date format in manual pages. 2017-07-02 22:07:39 +02:00
Nicholas De Nova ce6ea7f553 Check architecture compatibility during sysmerge(8)/sysupgrade(8). 2017-04-12 14:05:03 -05:00
Nicholas De Nova d217621649 Correct manpage spacing per roff(7) convention.
roff(7) dictates that "Each sentence should terminate at the end of an
input line." Instead of doing this, Sortix manpages (incorrectly) used
double-spaces to separate sentences.

Additionally, fix a few small typos.
2017-02-16 14:42:28 -06: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 1de75a6135 Fix sysinstall(8) and sysupgrade(8) requiring tcgetwincurpos. 2016-11-19 16:48:54 +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 4ab5765a95 Refactor sysmerge(8) and sysupgrade(8) compatibility hooks. 2016-10-04 00:34:50 +02:00
Jonas 'Sortie' Termansen 1791a19539 Refactor init(8) chain-merge target and add merge target.
The chain-merge target now invokes the /sysmerge init(8) with the merge
target, which now mounts the mountpoints. This change allows having a /boot
partition for the purpose of sysupgrade(8).
2016-10-04 00:34:49 +02:00
Jonas 'Sortie' Termansen c01fcd36c3 Fix double fsck in sysupgrade(8). 2016-09-25 22:28:17 +02:00
Jonas 'Sortie' Termansen 3831d99149 Fix sysupgrade(8) copyright. 2016-09-25 22:28:17 +02:00
Jonas 'Sortie' Termansen 967c5b57d5 Fix advice/advise typos. 2016-09-25 22:27:07 +02:00
Jonas 'Sortie' Termansen c195784736 Fix sysmerge(8) out of bounds accesses and error messages. 2016-08-23 00:30:41 +02:00
Jonas 'Sortie' Termansen 46fbe3ec0d Fix non-relative path in sysupgrade(8). 2016-08-21 00:04:27 +02:00
Jonas 'Sortie' Termansen 47b53f1aab Fix missing word in sysupgrade(8) error message. 2016-08-21 00:04:26 +02:00
Jonas 'Sortie' Termansen 2141c95621 Fix sysupgrade(8) downgrade detection. 2016-07-29 15:20:05 +02:00
Jonas 'Sortie' Termansen 63146072a4 Fix getline(3) and getdelim(3) usage. 2016-05-15 19:32:04 +02:00
Jonas 'Sortie' Termansen a80bc5d011 Fix sysmerge(8) and sysupgrade(8) /etc/sortix-release error handling. 2016-05-15 01:31:48 +02:00
Jonas 'Sortie' Termansen e69565fd15 Remove compatibility with Sortix 0.9. 2016-05-15 01:31:48 +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