Releases: oc-ulos/ulos-2
ULOS2-beta.5
Because file access times weren't long enough already.
To install this release, run pastebin run tkhgk4AJ beta.5
from OpenOS. If running beta 2 or newer you can simply run This release contains changes to file permission semantics that will break existing installations. Do not use older installer images.uptu
.
Changelog:
- general: fixed off-by-one errors in the unmanaged partition table implementations.
- cynosure-2: overhauled (rewrote) the TTY implementation. This should not change much from the user side, but includes a number of small tweaks to be more compliant with
console_codes(5)
. - cynosure-2: fixed a tiny logic error in the scheduler causing processes to be constantly resumed sometimes. This may improve power usage.
- cynosure-2: gpu-screen pairing for TTY assignment is now deterministic
- cynosure-2: new system call
symlink()
and accompanying symbolic link support - cynosure-2: TTY devices now start at
tty1
- cynosure-2: reworked path resolution code to be more like
path_resolution(7)
for full permissions checks of the whole file path. - reknit: decoupled
getty
s from maininit
process - reknit: added accompanying
telinit
utility - reknit: fixed
telinit
processing code being broken - reknit: rewrote a chunk of Reknit to be much closer to SysV behavior
- liblua: tweaked
termio
slightly to work with the new TTY implementation - liblua: added error code translations for Brazilian Portuguese
- coreutils: added a basic
time
command - coreutils: separated
getty
andlogin
programs - coreutils: changed default permissions for intermediate directories created by
mkdir -p
, to function with the new path resolution - installer: clear EEPROM data after installation
- installer: do not fully erase unmanaged drives when installing to them
- upt: (kind of) detect existing configuration files, and do not overwrite them
- upt: reduced logger verbosity during package installation
- misc: rewrote the default
/etc/inittab
to work with new Reknit - misc: rewrote
mtarldr
to avoid deeply nested tables - misc: installer image now autologins as
root
- misc: the installer will no longer autostart, instead the image contains brief instructions on how to begin the process
ULOS2-beta.4
Nearly seven months after the last beta, this release brings support for unmanaged filesystems (currently just SimpleFS) and partitioning (OSDI, MTPT) along with a plethora of other, smaller, tweaks and changes.
To install this release, run Release beta.5 contains changes to file permission semantics that will break existing installations. Do not use older installer images.pastebin run tkhgk4AJ beta.4
from OpenOS. If running an beta 2 or newer you can simply run uptu
.
Changelog:
- misc: fixed release script not setting permissions correctly
- misc:
sudo
andpasswd
are now properlysetuid
when packaged and should work on new installations - misc: split all repositories into
dev
andrelease
branches. - cldr: added support for selecting which filesystem to load boot configuration from
- cldr: added support for loading from unmanaged drives
- cldr: added SimpleFS support
- cldr: added support for disk partitions
- cldr: added support for OSDI partitioning
- cynosure-2: fixed several bugs with the untested
hdX
block device code - cynosure-2: fixed file descriptor flush propagation causing ttys to not flush when instructed
- cynosure-2: added SimpleFS driver (!)
- cynosure-2: added
sync()
system call - cynosure-2: added generic partition table support using new devfs handlers
- cynosure-2: added support for MTPT and OSDI partition table formats
- cynosure-2: flush all buffers before shutdown
- cynosure-2: added
SYSTEM
loglevel used only for poweroff/reboot messages - cynosure-2: file permissions are now set on creation according to the process's umask at the filesystem level rather than the kernel calling
chmod
- cynosure-2: devfs devices now have a
type
field - cynosure-2: added device handler support to the devfs
- cynosure-2: added
reregister
ioctl to re-run device handlers, useful if e.g. a partition table changes - cynosure-2:
mount()
syscall now accepts e.g.hda2
in addition to/dev/hda2
- cynosure-2:
close()
now returns whether the file descriptor truly closed - cynosure-2: devfs devices now have a defined
type
field - cynosure-2:
rootfs
kernel arg now acceptsaddress,partitionid
e.g.4b2cef,2
- cynosure-2, liblua: added new error
ENOTEMPTY
- liblua: fixed
posix.errno
missingENOSYS
- liblua:
file:close()
now only marks files as closed if they're actually closed. not doing this was causing weird issues. - coreutils: fixed
ls
missing colors for unknown file types - coreutils: fixed
chmod
not matching its mode argument correctly - coreutils: added
mkfs.sfs
utility - coreutils: added
mkpart
utility - coreutils: added
diskinfo
utility - coreutils:
wc
can now read from standard input - coreutils: added
dd
utility (not like gnu dd) - coreutils: tweaked
ls
's output formatting slightly - coreutils: fixed some errant behavior in
cp
- coreutils: marked a few files executable that were not previously
- upt: post-install scripts are now properly included in packages when building
- upt: package downloads now verify size
- upt: fixed package size counting
- upt: package size is now stored only in
packages.upl
, and not in packages'/meta
file - upt:
upti
now accepts-l
to invokeuptl
before attempting installation - upt:
upt.meta.split()
can now return data as key-value pairs rather than an array of values - vbls: added
umask
builtin - vbls: fixed a small tokenizer issue causing
/etc/profile
to be processed incorrectly - installer: added support for installing to block devices, currently only as simplefs
- installer: now installs Prism BIOS when installing to block devices
- installer: remove broken tmpfs checks
- installer: entering
0
as a filesystem selection will exit the installer - installer: now clears eeprom data after installing
- installer: now prompts the user to press Enter before quitting (most of the time)
ULOS2-beta.3
Focusing on compatibility, bug fixes, and fleshing out coreutils. This release was supposed to have grep
but I accidentally deleted it, so you get sudo
instead.
To install this release, run Release beta.5 contains changes to file permission semantics that will break existing installations. Do not use older installer images.pastebin run tkhgk4AJ beta.3
from OpenOS. If running release beta.2
you can simply run uptu
.
Changelog:
- cynosure-2: Fixed a very subtle bug with the preemption layer where calling code after loading other code would make the sysyield function disappear
- cynosure-2: Sysyield functions now
pcall
yields, to avoid crashes when e.g. yielding from a function given tostring.gsub
- cynosure-2: Added a
tty.tab_width
command line argument - cynosure-2: Added a
max_proc_time
command line argument - cynosure-2: The setuid and setgid file mode bits no longer set the real uid or gid
- coreutils: Implemented
free
- coreutils: Implemented
df
- coreutils: Implemented
du
- coreutils: Implemented
sudo
- coreutils:
lua
now sets uparg
more-or-less correctly - coreutils:
env
now properly handles argument processing - coreutils:
mkdir
now properly ignoresEEXIST
- coreutils:
chmod
now accepts[ugoa][+-=][rwx]
modes - coreutils:
login
now only allows itself to be run by root - coreutils:
ls
now displays filenames correctly when given options while listing multiple files (e.g.ls -l a/b a/c
), and does not show these filenames when-l
is given - coreutils:
chown
no longer chokes on directories - coreutils:
useradd
nowchown
s created home directories - liblua: Implemented
getopt.process
- liblua:
package.path
now contains./?.lua;./?/init.lua
by default - liblua: Added an option
exclude_numbers
togetopt
- liblua: Tweaked
getopt
's invalid short option error message to be slightly clearer - liblua: Fixed
treeutil
not recursively passing itsforeach
argument
ULOS2-beta.2
This is the second beta release of ULOS 2. It's a fairly small release consisting mostly of bug fixes. Future betas will focus more heavily on userspace improvements - primarily more coreutils - as well as possibly, finally, an unmanaged filesystem driver of some kind. The bugs fixed in this release mostly relate to file descriptor leaks.
To install this release, run Release beta.5 contains changes to file permission semantics that will break existing installations. Do not use older installer images.pastebin run tkhgk4AJ beta.2
from OpenOS. From this beta onward there is an upgrade path with the new uptu
command.
Changelog:
- cynosure-2: Fixed a TTY driver oversight resulting in incorrect wrapping at widths other than 80 characters.
- coreutils: Fixed an oversight in
cp
that could potentially cause file descriptor leaks in case of error. - liblua: Fixed
component.proxy
andio.lines
resulting in file descriptor leaks. This has made the installer actually work. Ooops. - upt: Odd errors in certain database operations should now leak no file descriptors.
- upt: Added
uptu
for simpler system upgrades. - upt: Implemented the
upt
wrapper around all of UPT's subcommands.
For those of you wondering, file descriptor leaks are important because OpenComputers limits the number of open files you can have, and if a program runs long enough to hit those limits then problems occur (e.g. the installer did that, which is why it didn't really work in the last release).
ULOS2-beta.1
After nearly a year of work, and 7 months after the first pre-alpha, ULOS 2's first beta release is finally available. The changelog for this release is fairly small, but it brings with it the first usable version of the ULOS Packaging Tool and an initial installation process.
That's right, UPT is finally available! Package repositories are up and the installer uses them.
If all goes well with this release, a release candidate (or another beta) should follow shortly.
Run Release beta.5 contains changes to file permission semantics that will break existing installations. Do not use older installer images.pastebin run tkhgk4AJ beta.1
from OpenOS to kickstart the installation process. Said process should be much more streamlined, and less manual, than it was for ULOS 1.x. Please report any and all issues!
Changelog:
- cynosure-2: Networking (the
request
syscall) now uses standardprotocol://path
URLs rather than bang paths. - cynosure-2: Made the kernel network error handling slightly more robust
- cynosure-2: Error line numbers should now no longer be off-by-one due to the preemption layer.
- cynosure-2: Fixed another very subtle bug with line wrapping.
- cynosure-2: Added
mtarfs
support - liblua:
treeutil
: Ignore.
and..
directory entries - liblua:
treeutil
: Fixed an erroneous call tostat.S_ISDIR
resulting in directories being improperly handled. - liblua: Implemented
os.remove
. - liblua: Implemented a stub for
posix.utime
. - upt: Implemented UPT! The
core
package repository is up athttp://ulos.pickardayune.com/v2/core/
. - vbls: Moved the executable to
/bin/vbls.lua
and added ash
stub. - misc: Documentation is now available at https://ulos2.ocaweso.me rather than the previous GitHub Pages URL.
- misc: ULOS 2 will now be released as a standalone, bootable MTAR file, similar to ULOS 1.x.
- all: All executable files (i.e. files in
/bin
) have been made executable, for packaging reasons
ULOS2-alpha.2
This is the second alpha release of ULOS 2. It's been three months since the last alpha, and a lot has changed! This release brings with it many very important bug fixes and a huge host of new features - but no UPT yet.
Changelog:
- cynosure-2: Implemented yield bubbling - no matter how many levels deep a coroutine stack goes, it will always yield back to the scheduler when a forced yield takes place.
- cynosure-2: Fix errors when calling
get[ug]id()
-family system calls from kernel space. - cynosure-2: Implemented the
chroot()
system call. - cynosure-2: Added
/proc/mounts
. - cynosure-2: Fixed automatic TTY creation. Multi-terminal setups should function correctly now.
- cynosure-2: Implemented the
klogctl()
system call. - cynosure-2: Fixed several features related to TTY signals. Keyboard shortcuts e.g.
^C
should now work properly. - cynosure-2: Fixed several issues related to sessions and process groups. Basic job control should now function.
- cynosure-2: Error messages should now have almost-correct line numbers.
- cynosure-2: Implemented block device support.
- cynosure-2: Fixed a slow but very noticeable memory leak.
- reknit: Start
/bin/login.lua
automatically on all present TTYs. - liblua: Implemented
io.lines()
(whoops). - liblua:
component.list()
now also returns the device path as a third value. This is used incomponents
when the-d
option is given. - liblua: Added
getopt.build()
for even simpler argument parsing. - liblua: Implemented
posix.syslog
(mostly). - liblua: Implemented
posix.signal
. - liblua: Implemented
posix.glob
. - liblua: Fleshed out
posix.sys.wait
. - liblua: Added a simple default completion function to
readline
. - liblua: Fixed
posix.libgen.dirname
returning incorrect results sometimes. - liblua: New library:
serialization
. - liblua: New library:
treeutil
. - liblua: Fixed
posix.grp.update_group
not properly adding groups. - liblua: Implemented
posix.sys.stat.chmod
andposix.sys.stat.umask
- coreutils: Added the
components
command. - coreutils:
mount
will now read/proc/mounts
when run with no arguments. - coreutils: Made
ls
's output a little more consistent. - coreutils: Made
useradd
's defaults a little smarter. - coreutils: Implemented
chmod
andchown
. - vbls: Fixed
\h
appearing as the system name (e.g.Linux
,Cynosure
) rather than the hostname (nodename). - vbls: Implemented very simple "job control" -
^C
should terminate programs but not the shell. - vbls: Implemented glob expansion using
posix.glob
. - misc: New errno,
ENOTBLK
. - misc: Networking support is now enabled in the default kernel configuration.
- misc: Removed
lgin
from/etc/inittab
.
ULOS 2.0.0-alpha1
This is the first alpha release of ULOS 2. It features a number of quality-of-life improvements and new features along with many bug fixes. Expect a package manager and even more utilities in the following releases.
Changelog:
- There is now LDoc documentation for all libraries and system calls available at https://oc-ulos.github.io/ulos-2.
- coreutils: Implemented
ps
. - coreutils:
ls
's tabulation has been improved to be on par with ULOS 1. - coreutils:
edit
now prompts for confirmation when you try to exit without saving a file. - coreutils: Implemented
wc
. - coreutils: The Lua prompt now properly names standard input.
- coreutils: implement
passwd
anduseradd
- coreutils: pass
--login
to the login shell - coreutils: make
login
usesetlogin
- coreutils: remove included
bin/sh
in favor of VBLS - cynosure-2: Implement networking support for
http
,https
, andtcp
. This brings with it therequest
system call. - cynosure-2:
chmod
andchown
are now exposed as system calls. - cynosure-2: Orphaned processes are now reparented to init (PID 1).
- cynosure-2: Calling
flush
on buffered file streams now properly passes through to sub-streams. This means that e.g.io.stdout:flush()
will now work properly. - cynosure-2: Fixed
/proc/PID/cmdline/N
being unreadable. - cynosure-2: Most
component
API methods are now available asioctl
s on the files under/dev/components
. - cynosure-2: Fixed owner/other file permissions checks being switched (!!!).
- cynosure-2: Added the
waitany
system call to wait for any child process. - reknit: Update to work with new kernel behavior and API.
- liblua: Added
ENOPROTOOPT
andECHILD
errnos. - liblua:
checkArg
must now be gotten usinglocal checkArg = require("checkArg")
or similar. - liblua: Implemented
component
using Cynosure 2'sioctl
s. - liblua: Implemented
os.execute
. - liblua: Extension:
posix.unistd.getlogin
- vbls: Changed the
unexpected token
error message slightly. - vbls: Add command alias support
- vbls: If the current working directory is within the user's home directory, replace the home directory portion with a
~
, likesh
- config: Add
reboot
alias forpoweroff --reboot
- config: Disable
BIT32=y
in the kernel config - misc: removed all use of
bit32
ULOS 2.0.0-prealpha.2
This is the second pre-alpha release of ULOS 2. Expect bugs and quirks, particularly in vbls
. Please report them!
The biggest change is the addition of a new shell, vbls
, which supports such things as scripting (!!!) and most basic Bash syntax. Strings are quoted in the same manner as Plan 9's rc
, and $(command)
substitutions do not work in them. vbls
will automatically save command history to the user's home directory on exit. Best of all, it works on anything implementing the required APIs!
Other notable changes:
- Lua 5.2 support has been dropped. The Cynosure Loader will try to automatically configure the system to use Lua 5.3.
- Memory usage has been slimmed down to where the system boots on 448KB.
edit
does not load. - The
sha256
library has been replaced with a much smaller one, which has the convenient side effect thatlogin
now launches almost instantly. - Several miscellaneous bugs and behavioral issues with the LuaPosix implementation have been fixed.
If you haven't already, join Ocawesome101's Projects for sneak peeks and progress updates.
ULOS 2.0-prealpha-1
This is a pre-alpha release of ULOS 2. It is intended to demonstrate some basic features of the system and allow people to test for bugs in the kernel or in libraries. Requires Lua 5.3 and at least 512KB of RAM to boot (may work on 448KB, no guarantees).
Extract the attached cpio
file to the root of an OpenComputers disk drive using a utility like uncpio
.
The default credentials for this release are root
and root
.
Some things to note about this release:
- The shell included with the
coreutils
package is very basic. It was written before the introduction of most (all?) of the libraries provided byliblua
. A new and much improved shell calledvbls
will be available at or before before the full release. - There is no package manager.
u2pm
will be implemented once Cynosure 2 has direct networking support. - Direct component access should be avoided whenever possible - favor using VT100 and the various provided system calls. If component access is necessary, use
ioctl
s on the various files under/dev/components
. - Reknit, the current default init system, is very simplistic. A more featureful alternative will be available in the future.
- Avoid using system calls directly, and favor using the provided LuaPosix bits instead. As of this release about 30% of the LuaPosix APIs are implemented - this should cover the common ones.
- Yes,
login
taking a second or so to display a prompt is normal. It is a side effect of the pre-emption method Cynosure uses causing thesha
library to take a relatively long time to load.
Please report bugs to this repository, and drop into Ocawesome101's Projects for any questions you may have.