Commit Graph

52 Commits

Author SHA1 Message Date
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
Jonas 'Sortie' Termansen 9ec09476ba Fix handling of unmountable filesystems. 2016-03-26 16:07:22 +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 c5948fdd28 Fix executable manual pages. 2016-02-29 01:37:30 +01:00
Jonas 'Sortie' Termansen f29f8e7679 Fix -Wstrict-prototypes issues. 2016-02-29 01:02:36 +01:00