During boot MOROS will display its version followed by the memory layout, memory size, processor, devices, network cards, disks, and the real time clock.
[0.250962] MOROS v0.9.0 [0.250962] MEM [0x00000000000000-0x00000000000FFF] FrameZero [0.250962] MEM [0x00000000001000-0x00000000004FFF] PageTable [0.250962] MEM [0x00000000005000-0x00000000015FFF] Bootloader [0.250962] MEM [0x00000000016000-0x00000000016FFF] BootInfo [0.250962] MEM [0x00000000017000-0x0000000002DFFF] Kernel [0.250962] MEM [0x0000000002E000-0x0000000009EFFF] KernelStack [0.250962] MEM [0x0000000009F000-0x0000000009FFFF] Reserved [0.250962] MEM [0x000000000F0000-0x000000000FFFFF] Reserved [0.250962] MEM [0x00000000100000-0x0000000028EFFF] KernelStack [0.250962] MEM [0x0000000028F000-0x000000003FFFFF] Usable [0.250962] MEM [0x00000000400000-0x000000005E1FFF] Kernel [0.250962] MEM [0x000000005E2000-0x000000005EFFFF] PageTable [0.250962] MEM [0x000000005F0000-0x00000001FDFFFF] Usable [0.250962] MEM [0x00000001FE0000-0x00000001FFFFFF] Reserved [0.250962] MEM [0x000000FEFFC000-0x000000FEFFFFFF] Reserved [0.250962] MEM [0x000000FFFC0000-0x000000FFFFFFFF] Reserved [0.250962] MEM 32720 KB [0.251962] CPU GenuineIntel [0.254961] CPU Intel(R) Core(TM) i5-4300M CPU @ 2.60GHz [0.284957] PCI 0000:00:00 [8086:1237] [0.312952] PCI 0000:01:00 [8086:7000] [0.321951] PCI 0000:01:01 [8086:7010] [0.321951] PCI 0000:01:03 [8086:7113] [0.322951] PCI 0000:02:00 [1234:1111] [0.323951] PCI 0000:03:00 [10EC:8139] [0.377942] NET RTL8139 MAC 52-54-00-12-34-56 [0.382942] ATA 0:0 QEMU HARDDISK QM00001 (32 MB) [0.384941] MFS Superblock found in ATA 0:0 [0.386941] RTC 2023-04-17 20:00:28 +0000
The first time MOROS will boot in diskless mode where you can use the builtin
commands to test the system or
install to setup the
filesystem on a disk:
MFS is not mounted to '/' Running console in diskless mode / > install Welcome to MOROS v0.9.0 installation program! Proceed? [y/N] y Listing disks ... Path Name (Size) /dev/ata/0/0 QEMU HARDDISK QM00001 (32 MB) Formatting disk ... Enter path of disk to format: /dev/ata/0/0 Disk successfully formatted MFS is now mounted to '/' Populating filesystem... Created '/bin' Created '/dev' Created '/ini' Created '/lib' Created '/net' Created '/src' Created '/tmp' Created '/usr' Created '/var' Copied '/bin/clear' Copied '/bin/halt' Copied '/bin/hello' Copied '/bin/print' Copied '/bin/reboot' Copied '/bin/sleep' Created '/dev/clk' Created '/dev/clk/uptime' Created '/dev/clk/realtime' Created '/dev/rtc' Created '/dev/null' Created '/dev/random' Created '/dev/console' Copied '/ini/banner.txt' Copied '/ini/boot.sh' Copied '/ini/shell.sh' Copied '/ini/version.txt' Created '/ini/palettes' Copied '/ini/palettes/gruvbox-dark.csv' Copied '/ini/palettes/gruvbox-light.csv' Created '/ini/fonts' Copied '/ini/fonts/zap-light-8x16.psf' Copied '/ini/fonts/zap-vga-8x16.psf' Created '/lib/lisp' Copied '/lib/lisp/core.lsp' Copied '/lib/lisp/alias.lsp' Copied '/tmp/alice.txt' Copied '/tmp/machines.txt' Created '/tmp/lisp' Copied '/tmp/lisp/colors.lsp' Copied '/tmp/lisp/factorial.lsp' Copied '/tmp/lisp/fibonacci.lsp' Copied '/tmp/lisp/geotime.lsp' Copied '/tmp/lisp/pi.lsp' Copied '/tmp/lisp/sum.lsp' Created '/tmp/life' Copied '/tmp/life/centinal.cells' Copied '/tmp/life/flower-of-eden.cells' Copied '/tmp/life/garden-of-eden.cells' Copied '/tmp/life/glider-gun.cells' Copied '/tmp/life/pentadecathlon.cells' Copied '/tmp/life/queen-bee-shuttle.cells' Copied '/tmp/life/ship-in-a-bottle.cells' Copied '/tmp/life/thunderbird.cells' Copied '/tmp/life/wing.cells' Created '/tmp/beep' Copied '/tmp/beep/tetris.sh' Copied '/tmp/beep/starwars.sh' Copied '/tmp/beep/mario.sh' Created '/var/www' Copied '/var/www/index.html' Copied '/var/www/moros.png' Creating user... Username: vinc Password: Confirm: Installation successful! Quit the console or reboot to apply changes
You can then use
^D (a key combination of
D) to quit the
diskless mode and let MOROS run the bootscript
/ini/boot.sh to login and use
If no disks were detected or if you prefer not to use them you can mount the
system in memory to use a virtual disk with
memory format before
The shell is the primary command line interface to use MOROS. This is were you can type a command and its arguments to tell the system what to do:
~ > print "Hello, World!" Hello, World!
The system has a
help command to help you remember the basic commands.
Most commands also have a special
--help argument to show all their options.
The line above the command prompt tells you where you are in the disk. The
~ means that you are in your home directory:
~ > print $DIR /usr/vinc
You can change directory by typing it as if it was a command:
~ > /tmp /tmp > print $DIR /tmp
From now on we'll omit the directory line in most examples.
You can list the content of a directory with
> list /tmp 5090 2023-04-17 06:25:54 alice.txt 82 2023-04-17 06:25:55 beep 324 2023-04-17 06:25:55 life 168 2023-04-17 06:25:55 lisp 649 2023-04-17 06:25:54 machines.txt
The command has some options to sort the results:
> list --help Usage: list <options> [<dir>] Options: -a, --all Show dot files -n, --name Sort by name -s, --size Sort by size -t, --time Sort by time
You can write a directory in the disk with
> write test/ > list 5090 2023-04-17 06:25:54 alice.txt 82 2023-04-17 06:25:55 beep 324 2023-04-17 06:25:55 life 168 2023-04-17 06:25:55 lisp 649 2023-04-17 06:25:54 machines.txt 0 2023-04-17 07:06:18 test
/ at the end of
test/ is there to tell the
write command to
create a directory instead of a file.
You can create a file by redirecting the output of a command with an arrow
to the file:
> print "Hello, World!" => hello.txt
read will read the content of the file:
> read hello.txt Hello, World!
You can edit a file with the
edit command that will run the text editor.
^W (a key combination of
W) inside the editor to write the
content to the file and
^Q to quit the editor and go back to the shell.
The help command has a subcommand
help edit to list the editor commands:
> help edit MOROS text editor is a very simple editor inspired by Pico, Nano, and Micro. Commands: ^Q Quit editor ^W Write to file ^X Write to file and quit ^T Go to top of file ^B Go to bottom of file ^A Go to beginning of line ^E Go to end of line ^D Cut line ^Y Copy line ^P Paste line
You can print the date with
> date 2001-01-01 00:00:00 +0000
You can update the real time clock by writing the correct time to its device file:
> print "2023-03-21 10:00:00" => /dev/rtc > date 2023-03-21 10:00:00 +0000
You can also set the
TZ environment variable to use your preferred timezone:
> calc "2 * 60 * 60" 7200 > env TZ 7200 > date 2023-03-21 12:00:00 +0200
env TZ 7200 to
shell to save the timezone:
> read /ini/boot.sh vga set palette /ini/palettes/gruvbox-dark.csv vga set font /ini/fonts/zap-light-8x16.psf read /ini/banner.txt user login env TZ 7200 shell
There's a device file to get the number of seconds elapsed since Unix Epoch:
> read /dev/clk/realtime 1682105344.624905
And another one since boot:
> read /dev/clk/uptime 1169.384929
You can add custom commands to the shell with the
For example you can define an
uptime command that will read the device file
> alias uptime "read /dev/clk/uptime" > uptime 1406.304852
You can add that command to
/ini/shell.sh to save it.
Some shortcuts have been defined in that file for the most frequent commands,
for example you can use
e instead of
edit to edit a file.
> read /ini/shell.sh # Command shortcuts alias c copy alias d delete alias e edit alias f find alias h help alias l list alias m move alias p print alias q quit alias r read alias w write alias sh shell alias dsk disk alias mem memory alias kbd keyboard
You can setup the network manually with
net or automatically
> dhcp ip: 10.0.2.15/24 gw: 10.0.2.2 dns: 10.0.2.3
A few tools are available like the
> http moros.cc /test.html <!doctype html> <html> <head> <meta charset="utf-8"> <title>MOROS</title> <link rel="stylesheet" type="text/css" href="/moros.css"> </head> <body> <h1>MOROS</h1> </body> </html>