Skip to content

Releases: oc-ulos/ulos-2

ULOS2-beta.5

29 Jul 05:24
Compare
Choose a tag to compare

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 uptu. This release contains changes to file permission semantics that will break existing installations. Do not use older installer images.

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 gettys from main init 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 and login 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

20 Sep 01:39
Compare
Choose a tag to compare

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 pastebin run tkhgk4AJ beta.4 from OpenOS. If running an beta 2 or newer you can simply run uptu. Release beta.5 contains changes to file permission semantics that will break existing installations. Do not use older installer images.

Changelog:

  • misc: fixed release script not setting permissions correctly
  • misc: sudo and passwd are now properly setuid when packaged and should work on new installations
  • misc: split all repositories into dev and release 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 accepts address,partitionid e.g. 4b2cef,2
  • cynosure-2, liblua: added new error ENOTEMPTY
  • liblua: fixed posix.errno missing ENOSYS
  • 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 invoke uptl 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

01 Apr 01:09
Compare
Choose a tag to compare

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 pastebin run tkhgk4AJ beta.3 from OpenOS. If running release beta.2 you can simply run uptu. Release beta.5 contains changes to file permission semantics that will break existing installations. Do not use older installer images.

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 to string.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 up arg more-or-less correctly
  • coreutils: env now properly handles argument processing
  • coreutils: mkdir now properly ignores EEXIST
  • 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 now chowns created home directories
  • liblua: Implemented getopt.process
  • liblua: package.path now contains ./?.lua;./?/init.lua by default
  • liblua: Added an option exclude_numbers to getopt
  • liblua: Tweaked getopt's invalid short option error message to be slightly clearer
  • liblua: Fixed treeutil not recursively passing its foreach argument

ULOS2-beta.2

18 Dec 23:54
Compare
Choose a tag to compare

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 pastebin run tkhgk4AJ beta.2 from OpenOS. From this beta onward there is an upgrade path with the new uptu command. Release beta.5 contains changes to file permission semantics that will break existing installations. Do not use older installer images.

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 and io.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

25 Nov 00:16
Compare
Choose a tag to compare

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 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! Release beta.5 contains changes to file permission semantics that will break existing installations. Do not use older installer images.

Changelog:

  • cynosure-2: Networking (the request syscall) now uses standard protocol://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 to stat.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 at http://ulos.pickardayune.com/v2/core/.
  • vbls: Moved the executable to /bin/vbls.lua and added a sh 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

16 Sep 15:17
Compare
Choose a tag to compare
ULOS2-alpha.2 Pre-release
Pre-release

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 in components 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 and posix.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 and chown.
  • 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

14 Jun 23:55
Compare
Choose a tag to compare
ULOS 2.0.0-alpha1 Pre-release
Pre-release

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 and useradd
  • coreutils: pass --login to the login shell
  • coreutils: make login use setlogin
  • coreutils: remove included bin/sh in favor of VBLS
  • cynosure-2: Implement networking support for http, https, and tcp. This brings with it the request system call.
  • cynosure-2: chmod and chown 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 as ioctls 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 and ECHILD errnos.
  • liblua: checkArg must now be gotten using local checkArg = require("checkArg") or similar.
  • liblua: Implemented component using Cynosure 2's ioctls.
  • 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 ~, like sh
  • config: Add reboot alias for poweroff --reboot
  • config: Disable BIT32=y in the kernel config
  • misc: removed all use of bit32

ULOS 2.0.0-prealpha.2

03 May 23:10
Compare
Choose a tag to compare
ULOS 2.0.0-prealpha.2 Pre-release
Pre-release

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 that login 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

27 Apr 16:15
Compare
Choose a tag to compare
ULOS 2.0-prealpha-1 Pre-release
Pre-release

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 by liblua. A new and much improved shell called vbls 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 ioctls 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 the sha 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.