Update Sculpt documentation for version 20.02
This commit is contained in:
parent
ab5770c492
commit
44e4d1bd6c
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
|
|
||||||
=============================
|
=============================
|
||||||
Sculpt Operating System 19.07
|
Sculpt Operating System 20.02
|
||||||
=============================
|
=============================
|
||||||
|
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ Your feedback is appreciated!
|
||||||
[https://www.genode-labs.com]
|
[https://www.genode-labs.com]
|
||||||
|
|
||||||
A printable PDF version of this document is available at
|
A printable PDF version of this document is available at
|
||||||
[https://genode.org/documentation/sculpt-19-07.pdf].
|
[https://genode.org/documentation/sculpt-20-02.pdf].
|
||||||
|
|
||||||
|
|
||||||
Hardware requirements and preparations
|
Hardware requirements and preparations
|
||||||
|
@ -111,33 +111,45 @@ Getting a first impression
|
||||||
Sculpt is best explored by first booting the prebuilt disk image downloadable
|
Sculpt is best explored by first booting the prebuilt disk image downloadable
|
||||||
from [https://genode.org/download/sculpt].
|
from [https://genode.org/download/sculpt].
|
||||||
Right after system boot, Sculpt's system-management user interface
|
Right after system boot, Sculpt's system-management user interface
|
||||||
("Leitzentrale") appears. The menu on the left provides convenient access to
|
("Leitzentrale") appears.
|
||||||
the connected storage devices and the network configuration. The center
|
The panel at the top of the screen contains two centered tabs for switching
|
||||||
displays a live graph (runtime view) of components running and their
|
between the "Components" view and a "Files" view.
|
||||||
relationships. On the right side, diagnostic messages are presented. Consider
|
The components view displays a live graph of the software components and their
|
||||||
the following steps as a warm-up with Sculpt OS.
|
relationships. It also provides convenient access to the connected storage
|
||||||
|
devices. The "Log" button at the right side of the panel reveals diagnostic
|
||||||
|
messages, the "Network" button allows you to configure network connectivity,
|
||||||
|
and the "Settings" button on the left gives access to a few user-interface
|
||||||
|
tweaks.
|
||||||
|
|
||||||
|
[image sculpt_20.02_panel 60%]
|
||||||
|
|
||||||
|
Consider the following steps as a warm-up with Sculpt OS.
|
||||||
|
|
||||||
Select the in-memory file system as *default storage location* by clicking
|
Select the in-memory file system as *default storage location* by clicking
|
||||||
on the "ram" item of the "Storage" dialog and pressing the "Use" button.
|
on the "ram fs" component in the graph and pressing the "Use" button.
|
||||||
This way, software will be installed solely into memory without accessing any
|
This way, software will be installed solely into memory without accessing any
|
||||||
real storage device.
|
real storage device.
|
||||||
|
|
||||||
|
[image sculpt_20.02_use_ram_fs 40%]
|
||||||
|
|
||||||
Enable *networking* in the "Network" dialog by selecting the "Wired" or
|
Enable *networking* in the "Network" dialog by selecting the "Wired" or
|
||||||
"Wifi" option. In the latter case, select an access point and enter the
|
"Wifi" option. In the latter case, select an access point and enter the
|
||||||
corresponding passphrase (if needed). A successful network connection is
|
corresponding passphrase (if needed). A successful network connection is
|
||||||
indicated by the IP address displayed at the bottom of the network dialog.
|
indicated by the IP address displayed at the bottom of the network dialog.
|
||||||
|
|
||||||
|
[image sculpt_20.02_network 40%]
|
||||||
|
|
||||||
With a storage location selected and established network connectivity, it is
|
With a storage location selected and established network connectivity, it is
|
||||||
time to *install and start* additional components by clicking on the '+'
|
time to *install and start* additional components by clicking on the '+'
|
||||||
button of the runtime view. Select "Depot ..." from the menu.
|
button of the components view. Select "Depot ..." from the menu.
|
||||||
|
|
||||||
[image sculpt_ce_menu 40%]
|
[image sculpt_20.02_menu 40%]
|
||||||
|
|
||||||
The depot contains software packages, which can be obtained by different
|
The depot contains software packages, which can be obtained by different
|
||||||
independent software providers. The selection of software providers is
|
independent software providers. The selection of software providers is
|
||||||
completely up to the user and can be defined in the "Selection ..." sub menu.
|
completely up to the user and can be defined in the "Selection ..." sub menu.
|
||||||
|
|
||||||
[image sculpt_ce_select 40%]
|
[image sculpt_20.02_select 40%]
|
||||||
|
|
||||||
Select "genodelabs" to download the directory of software officially
|
Select "genodelabs" to download the directory of software officially
|
||||||
provided by Genode Labs. Note that the other options are not necessarily
|
provided by Genode Labs. Note that the other options are not necessarily
|
||||||
|
@ -153,7 +165,7 @@ structured menus. As a starter, let's add a desktop background.
|
||||||
In the "GUI ..." sub menu, a click on the first item named "sticks blue
|
In the "GUI ..." sub menu, a click on the first item named "sticks blue
|
||||||
backdrop" reveals the option to install the package.
|
backdrop" reveals the option to install the package.
|
||||||
|
|
||||||
[image sculpt_ce_install_backdrop 40%]
|
[image sculpt_20.02_install_backdrop 40%]
|
||||||
|
|
||||||
A click on the "Install" button triggers the download of the package and its
|
A click on the "Install" button triggers the download of the package and its
|
||||||
dependencies. Once the download is complete, the menu presents a configuration
|
dependencies. Once the download is complete, the menu presents a configuration
|
||||||
|
@ -161,27 +173,28 @@ dialog that allows you to define the interplay of the new component with the
|
||||||
system. In this particular case, you have to decide for a GUI service to be
|
system. In this particular case, you have to decide for a GUI service to be
|
||||||
used by the backdrop.
|
used by the backdrop.
|
||||||
|
|
||||||
[image sculpt_ce_backdrop_routes 40%]
|
[image sculpt_20.02_backdrop_routes 40%]
|
||||||
|
|
||||||
The first option "system GUI server" would grant direct access to the system's
|
The first option "system GUI server" would grant direct access to the system's
|
||||||
low-level GUI server, which is normally not used by applications but by
|
low-level GUI server, which is normally not used by applications but by
|
||||||
higher-level GUI servers like a window manager. The second option would
|
higher-level GUI servers like a window manager. The second option would give
|
||||||
|
the component the privilege to act as a lock screen. The third option would
|
||||||
connect the component to the special "desktop background" GUI session, which
|
connect the component to the special "desktop background" GUI session, which
|
||||||
appears as a layer behind all other applications. The third option "keyboard
|
appears as a layer behind all other applications. The fourth option "keyboard
|
||||||
focus" is preserved for a single component that controls the keyboard focus.
|
focus" is preserved for a single component that controls the keyboard focus.
|
||||||
In our case, "desktop background" is the correct choice. Once the
|
In our case, "desktop background" is the correct choice.
|
||||||
configuration is complete, a new button for adding the component to the system
|
Once the configuration is complete, a new button for adding the component to
|
||||||
appears.
|
the system appears.
|
||||||
|
|
||||||
[image sculpt_ce_add_backdrop 40%]
|
[image sculpt_20.02_add_backdrop 40%]
|
||||||
|
|
||||||
After pressing the button, you should notice a slight visual change. *Press*
|
After pressing the button, you should notice a slight visual change. *Press*
|
||||||
*F12* to toggle between the Leitzentrale and the desktop. Now, the backdrop
|
*F12* to toggle between the Leitzentrale and the desktop. Now, the backdrop
|
||||||
should become visible in full glory. In the runtime graph, the new component
|
should become visible in full glory. In the component graph, the new component
|
||||||
appears connected to the "GUI". A click on the component reveals further
|
appears connected to the "GUI". A click on the component reveals further
|
||||||
information along with the option to remove it from the system.
|
information along with the option to remove it from the system.
|
||||||
|
|
||||||
[image sculpt_ce_backdrop_selected 40%]
|
[image sculpt_20.02_backdrop_selected 40%]
|
||||||
|
|
||||||
As a next step, let us add a window system. In the '+' menu, you can find
|
As a next step, let us add a window system. In the '+' menu, you can find
|
||||||
a readily packaged window system at _genodelabs_ -> _GUI_ -> _themed wm_.
|
a readily packaged window system at _genodelabs_ -> _GUI_ -> _themed wm_.
|
||||||
|
@ -199,7 +212,7 @@ window manager the right to change the content of the global clipboard.
|
||||||
Vice versa, by assigning _ROM (clipboard)_, we permit the window manager
|
Vice versa, by assigning _ROM (clipboard)_, we permit the window manager
|
||||||
to obtain clipboard content.
|
to obtain clipboard content.
|
||||||
|
|
||||||
After adding the component, the "themed wm" will appear in the runtime view.
|
After adding the component, the "themed wm" will appear in the components view.
|
||||||
To give the window system a quick try, add the small demo you can find at
|
To give the window system a quick try, add the small demo you can find at
|
||||||
_genodelabs_ -> _Demos_ -> _nano3d_ and assign its _GUI_ to our "themed wm".
|
_genodelabs_ -> _Demos_ -> _nano3d_ and assign its _GUI_ to our "themed wm".
|
||||||
|
|
||||||
|
@ -256,7 +269,7 @@ in a window.
|
||||||
|
|
||||||
[image sculpt_ce_noux 60%]
|
[image sculpt_ce_noux 60%]
|
||||||
|
|
||||||
When selecting the "noux-system" component in the runtime view, the
|
When selecting the "noux-system" component in the graph, the
|
||||||
relationship to the other components of the system is presented. This provides
|
relationship to the other components of the system is presented. This provides
|
||||||
a convenient way to reveal the _trusted computing base_ of the selected
|
a convenient way to reveal the _trusted computing base_ of the selected
|
||||||
component. For example, since there is no connection from _noux-system_ to the
|
component. For example, since there is no connection from _noux-system_ to the
|
||||||
|
@ -264,7 +277,7 @@ _nic_router_ we know that this component is isolated from the network. The
|
||||||
network-related components are outside the trusted computing base of the
|
network-related components are outside the trusted computing base of the
|
||||||
noux instance.
|
noux instance.
|
||||||
|
|
||||||
[image sculpt_ce_noux_selected 50%]
|
[image sculpt_20.02_noux_selected 50%]
|
||||||
|
|
||||||
|
|
||||||
Further exploration
|
Further exploration
|
||||||
|
@ -428,17 +441,22 @@ occur in memory only, you are not at risk of permanently bricking your machine.
|
||||||
The Leitzentrale can be toggled at any time by pressing F12 and will be enabled
|
The Leitzentrale can be toggled at any time by pressing F12 and will be enabled
|
||||||
right after boot. It presents itself with a minimalistic GUI for accessing
|
right after boot. It presents itself with a minimalistic GUI for accessing
|
||||||
the storage devices attached to your machine and for configuring your network
|
the storage devices attached to your machine and for configuring your network
|
||||||
connectivity. Most importantly, however, it allows the user to spawn an
|
connectivity. Most importantly, however, it allows the user to access the
|
||||||
interactive shell for manual _config_ and _report_ file systems access. To
|
_config_ and _report_ file systems. Both file systems are readily accessible
|
||||||
spawn this command-line interface, click on the "ram" item from the menu and
|
under the "Files" tab of the panel. The file browser allows you to traverse
|
||||||
select "Inspect". While inspecting file systems, the inspect window replaces
|
directory hierarchies, inspect individual files, and edit files.
|
||||||
the runtime view.
|
Alternatively to the "Files" tab, Sculpt 20.02 features a command-line
|
||||||
|
interface. To spawn this command-line interface, click on the "ram fs"
|
||||||
|
component in the graph and select "Inspect". In the panel, a third tab named
|
||||||
|
"Inspect" appears, which hosts the command-line interface.
|
||||||
|
|
||||||
The inspect window hosts a small Unix-like runtime called noux as user
|
[image sculpt_20.02_inspect_tab 60%]
|
||||||
|
|
||||||
|
The inspect tab hosts a small Unix-like runtime called noux as user
|
||||||
interface. Don't let the presence of a Unix shell mislead you.
|
interface. Don't let the presence of a Unix shell mislead you.
|
||||||
Sculpt is not a Unix system. It merely uses Unix subsystems in the form of
|
Sculpt is not a Unix system. It merely uses Unix subsystems in the form of
|
||||||
noux instances as convenient tools for managing and editing files.
|
noux instances as convenient tools for managing and editing files.
|
||||||
Within the inspect window, you can interact with both the report and
|
Within the inspect tab, you can interact with both the report and
|
||||||
config file systems using familiar commands such as the bash shell, a
|
config file systems using familiar commands such as the bash shell, a
|
||||||
subset of coreutils, and Vim.
|
subset of coreutils, and Vim.
|
||||||
|
|
||||||
|
@ -454,17 +472,43 @@ Tweaking and inspecting the system
|
||||||
==================================
|
==================================
|
||||||
|
|
||||||
The Leitzentrale subsystem empowers you to interactively inspect and tweak
|
The Leitzentrale subsystem empowers you to interactively inspect and tweak
|
||||||
the running system using a command-line interface and the Vim text editor.
|
the running system either by using the file browser hosted in the "Files"
|
||||||
|
tab or by using the command-line interface and the Vim text editor provided by
|
||||||
|
the "Inspect" tab.
|
||||||
|
|
||||||
|
|
||||||
Vim skills recommended
|
Interactive file browser
|
||||||
----------------------
|
------------------------
|
||||||
|
|
||||||
Sculpt leverages (a subset of) GNU coreutils, bash, and Vim as the user
|
The "Files" tab of the panel switches the main screen area to a simple file
|
||||||
interface for sculpting the system. If you are not yet familiar with using
|
browser that lists all file systems available, in particular the _config_
|
||||||
Vim, you may take Sculpt as a welcome chance to get your toes wet. To
|
and _report_ file systems. By toggling one of the file-system buttons, the
|
||||||
enjoy the experience, you should be comfortable with the following
|
respective directory hierarchy can be browsed. When hovering a file, an "Edit"
|
||||||
operations:
|
or "View" button appears, which can be used to open the file in a text area
|
||||||
|
that appears on the right side of the file browser. The editor supports the
|
||||||
|
usual notepad-like motions, operations, and shortcuts (control-c for copy,
|
||||||
|
control-v for paste, control-s for save).
|
||||||
|
|
||||||
|
[image sculpt_20.02_files_tab 80%]
|
||||||
|
|
||||||
|
_Note that the file browser as the most recent addition to Sculpt does not_
|
||||||
|
_yet support file operations like the copying, renaming, or removal of_
|
||||||
|
_files. Also the editing of files with long lines or the browsing of_
|
||||||
|
_directories with many entries is not appropriately covered yet. As a_
|
||||||
|
_fallback when encountering these limitations, the current version of Sculpt_
|
||||||
|
_still features the Unix-based inspect tab, which can be activated by_
|
||||||
|
_toggling the "Inspect" button inside the USB or storage nodes of the_
|
||||||
|
_component graph._
|
||||||
|
|
||||||
|
|
||||||
|
Vim skills recommended for using the inspect tab
|
||||||
|
------------------------------------------------
|
||||||
|
|
||||||
|
With the "Inspect" button toggled for at least one file system, the inspect
|
||||||
|
tab leverages (a subset of) GNU coreutils, bash, and Vim as the user interface
|
||||||
|
for sculpting the system. If you are not yet familiar with using Vim, you may
|
||||||
|
take Sculpt as a welcome chance to get your toes wet. To enjoy the experience,
|
||||||
|
you should be comfortable with the following operations:
|
||||||
|
|
||||||
* Opening and navigating within a text file (moving the cursor,
|
* Opening and navigating within a text file (moving the cursor,
|
||||||
using '/' to search),
|
using '/' to search),
|
||||||
|
@ -536,7 +580,7 @@ Exploring the drivers and Leitzentrale subsystems
|
||||||
-------------------------------------------------
|
-------------------------------------------------
|
||||||
|
|
||||||
You can review the construction plan of the drivers subsystem by opening the
|
You can review the construction plan of the drivers subsystem by opening the
|
||||||
file _/config/drivers_ in Vim. In particular, it is interesting to
|
file _drivers_ at the config file system. In particular, it is interesting to
|
||||||
follow the '<route>' rules to see how the various components are connected.
|
follow the '<route>' rules to see how the various components are connected.
|
||||||
But there is more. The configuration is live. It enables you to reconfigure
|
But there is more. The configuration is live. It enables you to reconfigure
|
||||||
individual components on-the-fly. For example, search for the '<start>' node
|
individual components on-the-fly. For example, search for the '<start>' node
|
||||||
|
@ -558,7 +602,7 @@ _The component-specific configuration options are documented in the README_
|
||||||
_files accompanying the respective components in the source tree._
|
_files accompanying the respective components in the source tree._
|
||||||
|
|
||||||
Analogously to the drivers subsystem, you can find the construction plan
|
Analogously to the drivers subsystem, you can find the construction plan
|
||||||
for the Leitzentrale subsystem at _/config/leitzentrale_. Try out
|
for the Leitzentrale subsystem at the file _leitzentrale_. Try out
|
||||||
the following tweaks:
|
the following tweaks:
|
||||||
|
|
||||||
* Change the transparency of the Leitzentrale by modifying the 'alpha'
|
* Change the transparency of the Leitzentrale by modifying the 'alpha'
|
||||||
|
@ -568,7 +612,7 @@ the following tweaks:
|
||||||
to "18".
|
to "18".
|
||||||
|
|
||||||
You may also enjoy tinkering with the configuration of the Nitpicker GUI
|
You may also enjoy tinkering with the configuration of the Nitpicker GUI
|
||||||
server, which is located at _/config/nitpicker_. For example, you
|
server, which is located at the file _nitpicker_. For example, you
|
||||||
may change the background color or the labeling color of the "default"
|
may change the background color or the labeling color of the "default"
|
||||||
domain.
|
domain.
|
||||||
|
|
||||||
|
@ -580,7 +624,7 @@ Whenever adding a new component via the '+' menu, one has to define how to
|
||||||
connect the component with the rest of the system. It is important to know
|
connect the component with the rest of the system. It is important to know
|
||||||
what the presented options mean to take educated decisions.
|
what the presented options mean to take educated decisions.
|
||||||
|
|
||||||
[image sculpt_ce_noux_routing 40%]
|
[image sculpt_20.02_noux_routing 40%]
|
||||||
|
|
||||||
Each choice represents a connection to a system resource of a particular type.
|
Each choice represents a connection to a system resource of a particular type.
|
||||||
Initially, the presented options are resources that are built-in into Sculpt's
|
Initially, the presented options are resources that are built-in into Sculpt's
|
||||||
|
@ -592,6 +636,8 @@ as options.
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
GUI | 'Nitpicker' | keyboard focus
|
GUI | 'Nitpicker' | keyboard focus
|
||||||
|
----------------------------------------------------------------------------
|
||||||
|
| | desktop lock screen
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
| | desktop background
|
| | desktop background
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
|
@ -618,6 +664,8 @@ as options.
|
||||||
File system | 'File_system' | writeable system configuration
|
File system | 'File_system' | writeable system configuration
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
| | read-only system reports
|
| | read-only system reports
|
||||||
|
----------------------------------------------------------------------------
|
||||||
|
| | used file system
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
Real-time clock | 'Rtc' | system clock
|
Real-time clock | 'Rtc' | system clock
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
|
@ -686,6 +734,14 @@ The base system provides three different GUI options.
|
||||||
in principle, another component like _noux-system_ can be connected
|
in principle, another component like _noux-system_ can be connected
|
||||||
to it and thereby becomes able to receive keyboard input.
|
to it and thereby becomes able to receive keyboard input.
|
||||||
|
|
||||||
|
:desktop lock screen: assigns the component the role of a lock screen. Once
|
||||||
|
the component is present at the GUI, it seizes the keyboard focus and is
|
||||||
|
able to cover the entire screen.
|
||||||
|
|
||||||
|
_Note that - with the current version of Sculpt - global keys as defined in_
|
||||||
|
_the nitpicker configuration are not affected by the lock screen, i.e.,_
|
||||||
|
_as is the case with the screen key assigned to the window manager._
|
||||||
|
|
||||||
:desktop background: allows a component to present its graphical output
|
:desktop background: allows a component to present its graphical output
|
||||||
in a dedicated layer behind all other applications. The desktop background
|
in a dedicated layer behind all other applications. The desktop background
|
||||||
cannot receive keyboard focus. But it can respond to pointer events
|
cannot receive keyboard focus. But it can respond to pointer events
|
||||||
|
@ -801,6 +857,13 @@ storage, additional file-system services can be started as regular components
|
||||||
within the runtime subsystem. Those components, in turn, need to be connected to
|
within the runtime subsystem. Those components, in turn, need to be connected to
|
||||||
the corresponding block devices.
|
the corresponding block devices.
|
||||||
|
|
||||||
|
:used file system: is the file system selected for the use of Sculpt.
|
||||||
|
In principle, the specific file system such as "usb-1-10.3.fs" can be
|
||||||
|
selected directly. But when moving configurations from one device to
|
||||||
|
another, the generic "used file system" option avoids tying the component to
|
||||||
|
a particular physical file-system name. The resulting configuration works
|
||||||
|
regardless of where it is deployed.
|
||||||
|
|
||||||
|
|
||||||
Block device
|
Block device
|
||||||
~~~~~~~~~~~~
|
~~~~~~~~~~~~
|
||||||
|
@ -852,7 +915,6 @@ as described in Section
|
||||||
[Updating the USB boot device from within VirtualBox].
|
[Updating the USB boot device from within VirtualBox].
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Real-time clock
|
Real-time clock
|
||||||
~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
@ -866,7 +928,7 @@ The region-map service of the base system gives components a flexible way to
|
||||||
manage their virtual address spaces manually. This mechanism is used by a few
|
manage their virtual address spaces manually. This mechanism is used by a few
|
||||||
advanced components only, most specifically virtual machine monitors. Access
|
advanced components only, most specifically virtual machine monitors. Access
|
||||||
to the region-map service is not security critical. But as it is rarely
|
to the region-map service is not security critical. But as it is rarely
|
||||||
needed, it is not granted be default to limit the potential (attack) surface
|
needed, it is not granted by default to limit the potential (attack) surface
|
||||||
of the base system as far as possible by default.
|
of the base system as far as possible by default.
|
||||||
|
|
||||||
|
|
||||||
|
@ -919,7 +981,7 @@ Terminal, audio input, and audio output
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Terminal services allow for the input and output of streams of text. Examples
|
Terminal services allow for the input and output of streams of text. Examples
|
||||||
are a graphical terminal, or an UART driver. The base system has no built-in
|
are a graphical terminal, or a UART driver. The base system has no built-in
|
||||||
terminal service.
|
terminal service.
|
||||||
|
|
||||||
As the names suggest, audio input and output enable components to record
|
As the names suggest, audio input and output enable components to record
|
||||||
|
@ -935,20 +997,21 @@ Runtime management
|
||||||
|
|
||||||
In contrast to the drivers subsystem and the Leitzentrale, which have a
|
In contrast to the drivers subsystem and the Leitzentrale, which have a
|
||||||
predefined purpose, the runtime subsystem is shaped by the user. The
|
predefined purpose, the runtime subsystem is shaped by the user. The
|
||||||
components present in the runtime subsystem are displayed by the runtime view.
|
components present in the runtime subsystem are displayed by the components view.
|
||||||
Some of them are managed by the Leitzentrale. For example, while inspecting a
|
Some of them are managed by the Leitzentrale. For example, while inspecting a
|
||||||
file system, the corresponding "inspect", "inspect_terminal", and
|
file system, the corresponding "inspect", "inspect_terminal", and
|
||||||
"inspect_noux" components appear automatically. Other components correspond to
|
"inspect_noux" components appear automatically. Other components correspond to
|
||||||
subsystems deployed from installed packages, in particular the ones created
|
subsystems deployed from installed packages, in particular the ones created
|
||||||
via the runtime view's "+" menu.
|
via the "+" menu.
|
||||||
|
|
||||||
The current configuration of the runtime subsystem is available at
|
The current configuration of the runtime subsystem is available at the
|
||||||
_/config/managed/runtime_. It is not recommended to modify this file manually.
|
_config_ file system at _managed/runtime_. It is not recommended to modify
|
||||||
However, in some situations, it is useful to take manual control over
|
this file manually. However, in some situations, it is useful to take manual
|
||||||
the runtime configuration. This is possible by copying the file to
|
control over the runtime configuration. This is possible by copying the file
|
||||||
_config/runtime_. Note that this will inhibit the management functionality
|
to the root of the config file system.
|
||||||
of the Leitzentrale. You can yield back the control to the Leitzentrale by
|
Note that this will inhibit the management functionality of the Leitzentrale.
|
||||||
removing the _/config/runtime_ file.
|
You can yield back the control to the Leitzentrale by removing the _runtime_
|
||||||
|
file from the root of the config file system.
|
||||||
|
|
||||||
As a prerequisite for deploying user-selected components, a default storage
|
As a prerequisite for deploying user-selected components, a default storage
|
||||||
location must be defined by selecting the "Use" button of a file system
|
location must be defined by selecting the "Use" button of a file system
|
||||||
|
@ -971,22 +1034,22 @@ can be installed and run. The most convenient way is the interactive use of
|
||||||
the '+' menu to browse the catalogues of packages provided by software
|
the '+' menu to browse the catalogues of packages provided by software
|
||||||
providers and to configure new component instances.
|
providers and to configure new component instances.
|
||||||
|
|
||||||
Additionally, the deployment can be controlled
|
Additionally, the deployment can be controlled by the _deploy_ file of the
|
||||||
by the _/config/deploy_ file and the so-called launchers located at
|
_config_ file system and the so-called launchers located at the _launcher/_
|
||||||
_/config/launcher/_.
|
sub directory.
|
||||||
The _deploy_ file contains a '<start>' node for each running component.
|
The _deploy_ file contains a '<start>' node for each running component.
|
||||||
Such a <start> node specifies the package, the assigned resources,
|
Such a <start> node specifies the package, the assigned resources,
|
||||||
and the rules of how the component is connected with other components.
|
and the rules of how the component is connected with other components.
|
||||||
|
|
||||||
Alternatively, a <start> node may refer to a launcher that encapsulates
|
Alternatively, a <start> node may refer to a launcher that encapsulates
|
||||||
this policy as a separate file at _/config/launcher/_.
|
this policy as a separate file at the _launcher/_ directory.
|
||||||
By default, the launcher corresponds to the 'name' attribute of the start node.
|
By default, the launcher corresponds to the 'name' attribute of the start node.
|
||||||
It is possible to explicitly refer to a differently named launcher by
|
It is possible to explicitly refer to a differently named launcher by
|
||||||
specifying a 'launcher' attribute. This way, one launcher can be instantiated
|
specifying a 'launcher' attribute. This way, one launcher can be instantiated
|
||||||
multiple times.
|
multiple times.
|
||||||
The files at _/config/launcher/_ are monitored by Sculpt and therefore can be
|
The files within the _launcher/_ directory are monitored by Sculpt and
|
||||||
edited on the fly. This is especially useful for editing '<config>' nodes
|
therefore can be edited on the fly. This is especially useful for editing
|
||||||
of already running components.
|
'<config>' nodes of already running components.
|
||||||
A '<config>' node within a launcher - when present - overrides the one
|
A '<config>' node within a launcher - when present - overrides the one
|
||||||
provided by the package. In turn, a '<config>' node within a node of the
|
provided by the package. In turn, a '<config>' node within a node of the
|
||||||
deploy config overrides any other '<config>' node. Both the launcher and a
|
deploy config overrides any other '<config>' node. Both the launcher and a
|
||||||
|
@ -995,7 +1058,7 @@ deploy config overrides any other '<config>' node. Both the launcher and a
|
||||||
way, the routing of a launcher can be parameterized at the deploy
|
way, the routing of a launcher can be parameterized at the deploy
|
||||||
configuration.
|
configuration.
|
||||||
|
|
||||||
Each time the _/config/deploy_ file or a launcher file is written, the change
|
Each time the _deploy_ file or a launcher file is written, the change
|
||||||
takes immediate effect. In particular, the Sculpt manager will automatically
|
takes immediate effect. In particular, the Sculpt manager will automatically
|
||||||
kick off the download of the referenced packages and its dependencies and
|
kick off the download of the referenced packages and its dependencies and
|
||||||
thereby populates the depot. Once the download has completed, the packages are
|
thereby populates the depot. Once the download has completed, the packages are
|
||||||
|
@ -1005,11 +1068,11 @@ started.
|
||||||
Interplay of the deploy configuration and interactive changes
|
Interplay of the deploy configuration and interactive changes
|
||||||
-------------------------------------------------------------
|
-------------------------------------------------------------
|
||||||
|
|
||||||
The content of _/config/deploy_ is taken as the starting point for the
|
The content of the _deploy_ file is taken as the starting point for the
|
||||||
interactive use via the '+' menu. All interactive changes to the deployment
|
interactive use via the '+' menu. All interactive changes to the deployment
|
||||||
are reflected in the _/config/managed/deploy_ file.
|
are reflected in the _managed/deploy_ file.
|
||||||
Note that any modification of _/config/deploy_ resets _/config/managed/deploy_
|
Note that any modification of _deploy_ resets _managed/deploy_ to the state
|
||||||
to the state defined in _/config/deploy_.
|
defined in the _deploy_ file.
|
||||||
|
|
||||||
Launchers appear at the top level of the '+' menu. So they are a convenient
|
Launchers appear at the top level of the '+' menu. So they are a convenient
|
||||||
mechanism to quickly add often-used components with specific policies to the
|
mechanism to quickly add often-used components with specific policies to the
|
||||||
|
@ -1022,9 +1085,10 @@ Storage device access and preparation
|
||||||
Whereas the RAM file system is practical for quick tests, it goes without
|
Whereas the RAM file system is practical for quick tests, it goes without
|
||||||
saying that we want to persistently store data, programs, and configuration
|
saying that we want to persistently store data, programs, and configuration
|
||||||
information on a storage device. Sculpt supports SATA disks, NVMe devices,
|
information on a storage device. Sculpt supports SATA disks, NVMe devices,
|
||||||
and USB-storage devices. The storage dialog lists all devices detected by
|
and USB-storage devices. The storage and USB nodes of the components view list
|
||||||
the drivers subsystem. A click on a device reveals possible operations or -
|
all devices detected by the drivers subsystem. A click on a device reveals
|
||||||
if a partition table is present - more details about the device structure.
|
possible operations or - if a partition table is present - more details about
|
||||||
|
the device structure.
|
||||||
|
|
||||||
Depending on the operation selected by the user, the Sculpt manager will
|
Depending on the operation selected by the user, the Sculpt manager will
|
||||||
automatically spawn helper components in the runtime to perform the selected
|
automatically spawn helper components in the runtime to perform the selected
|
||||||
|
@ -1045,8 +1109,8 @@ This clears the way for sculpting a custom live system stored entirely on
|
||||||
the USB stick.
|
the USB stick.
|
||||||
|
|
||||||
All file systems supported by Sculpt present an "Inspect" button. By toggling
|
All file systems supported by Sculpt present an "Inspect" button. By toggling
|
||||||
this button, the selected file system becomes accessible in the inspect
|
this button, the selected file system becomes accessible in the "Inspect"
|
||||||
window. Note that more than one file system can be inspected at a time.
|
tab. Note that more than one file system can be inspected at a time.
|
||||||
Each file system will appear as a directory at the root of the inspect
|
Each file system will appear as a directory at the root of the inspect
|
||||||
directory tree, named after the corresponding device and partition number.
|
directory tree, named after the corresponding device and partition number.
|
||||||
This way, the inspect window becomes a convenient tool for copying files
|
This way, the inspect window becomes a convenient tool for copying files
|
||||||
|
@ -1058,7 +1122,7 @@ and directories to block-device accesses.
|
||||||
Making customizations permanent
|
Making customizations permanent
|
||||||
===============================
|
===============================
|
||||||
|
|
||||||
It is possible to make any customization of the config file system
|
It is possible to make any customization of the _config_ file system
|
||||||
permanent by copying the modified files to a directory named
|
permanent by copying the modified files to a directory named
|
||||||
_config/<VERSION>_ on a persistent file system where _<VERSION>_ corresponds
|
_config/<VERSION>_ on a persistent file system where _<VERSION>_ corresponds
|
||||||
to the Sculpt version number as found in the _/VERSION_ file.
|
to the Sculpt version number as found in the _/VERSION_ file.
|
||||||
|
@ -1110,12 +1174,12 @@ files.
|
||||||
The Sculpt manager interacts with the rest of the system solely by
|
The Sculpt manager interacts with the rest of the system solely by
|
||||||
monitoring reports aggregated in the report file system, and writing
|
monitoring reports aggregated in the report file system, and writing
|
||||||
configuration files into the config file system. All files generated
|
configuration files into the config file system. All files generated
|
||||||
by the Sculpt manager are located at _/config/managed/_. By manually creating a
|
by the Sculpt manager are located at the _managed/_ sub directory of the
|
||||||
same-named file at _/config/_, one can supply a custom managed configuration
|
config file system. By manually creating a same-named file at the root of the
|
||||||
to the Sculpt manager. A useful practice is taking a snapshot of the
|
config file system, one can supply a custom managed configuration to the
|
||||||
generated configuration as a starting point for the custom version. For
|
Sculpt manager. A useful practice is taking a snapshot of the generated
|
||||||
example, by copying the NIC router configuration while it is connected to
|
configuration as a starting point for the custom version. For example, by
|
||||||
a network:
|
copying the NIC router configuration while it is connected to a network:
|
||||||
|
|
||||||
! cp /config/managed/nic_router /config
|
! cp /config/managed/nic_router /config
|
||||||
|
|
||||||
|
@ -1147,7 +1211,7 @@ Building the boot image
|
||||||
=======================
|
=======================
|
||||||
|
|
||||||
The following steps assume that you have the Genode tool chain installed on a
|
The following steps assume that you have the Genode tool chain installed on a
|
||||||
GNU/Linux system. For reference, Ubuntu 16.04 is known to work well. If you
|
GNU/Linux system. For reference, Ubuntu 18.04 is known to work well. If you
|
||||||
don't know your way around Genode's source tree yet, please consider the
|
don't know your way around Genode's source tree yet, please consider the
|
||||||
"Getting started" section of the Genode Foundations book that is available as
|
"Getting started" section of the Genode Foundations book that is available as
|
||||||
a free download at [https://genode.org].
|
a free download at [https://genode.org].
|
||||||
|
@ -1156,18 +1220,18 @@ a free download at [https://genode.org].
|
||||||
|
|
||||||
! git clone https://github.com/genodelabs/genode.git
|
! git clone https://github.com/genodelabs/genode.git
|
||||||
! cd genode
|
! cd genode
|
||||||
! git checkout -b sculpt-19.07 sculpt-19.07
|
! git checkout -b sculpt-20.02 sculpt-20.02
|
||||||
|
|
||||||
# Download the support for the NOVA microkernel
|
# Download the support for the NOVA microkernel
|
||||||
|
|
||||||
! ./tool/depot/download genodelabs/bin/x86_64/base-nova/2019-07-08
|
! ./tool/depot/download genodelabs/bin/x86_64/base-nova/2020-02-27
|
||||||
|
|
||||||
The content is downloaded to the _public/_ directory and extracted to
|
The content is downloaded to the _public/_ directory and extracted to
|
||||||
the _depot/_ directory.
|
the _depot/_ directory.
|
||||||
|
|
||||||
# Download all ingredients for the Sculpt boot image
|
# Download all ingredients for the Sculpt boot image
|
||||||
|
|
||||||
! ./tool/depot/download genodelabs/pkg/x86_64/sculpt/2019-07-08
|
! ./tool/depot/download genodelabs/pkg/x86_64/sculpt/2020-03-09
|
||||||
|
|
||||||
# Create a build directory
|
# Create a build directory
|
||||||
|
|
||||||
|
@ -1181,6 +1245,10 @@ a free download at [https://genode.org].
|
||||||
'image/iso'. This way, the build process will produce a valid disk image
|
'image/iso'. This way, the build process will produce a valid disk image
|
||||||
with a GPT partition table instead of a legacy ISO image.
|
with a GPT partition table instead of a legacy ISO image.
|
||||||
|
|
||||||
|
# Prepare GRUB 2, which is needed for booting from the disk image
|
||||||
|
|
||||||
|
! ./tool/ports/prepare_port grub2
|
||||||
|
|
||||||
# Create the Sculpt boot image (defined by the run script at
|
# Create the Sculpt boot image (defined by the run script at
|
||||||
_repos/gems/run/sculpt.run_)
|
_repos/gems/run/sculpt.run_)
|
||||||
|
|
||||||
|
@ -1211,7 +1279,7 @@ be prepared. The following command prepares all of them at once:
|
||||||
! dde_rump drm e2fsprogs expat freetype gnupg \
|
! dde_rump drm e2fsprogs expat freetype gnupg \
|
||||||
! jitterentropy jpeg libarchive libc libgcrypt \
|
! jitterentropy jpeg libarchive libc libgcrypt \
|
||||||
! libiconv libpng libssh mesa ncurses nova openssl \
|
! libiconv libpng libssh mesa ncurses nova openssl \
|
||||||
! pcre qemu-usb qoost qt5 stb stdcxx \
|
! qemu-usb qoost qt5 stb stdcxx \
|
||||||
! ttf-bitstream-vera vim virtualbox5 x86emu xz \
|
! ttf-bitstream-vera vim virtualbox5 x86emu xz \
|
||||||
! zlib
|
! zlib
|
||||||
|
|
||||||
|
@ -1413,6 +1481,18 @@ Applications
|
||||||
_(used for hosting virtual machines)_
|
_(used for hosting virtual machines)_
|
||||||
|
|
||||||
|
|
||||||
|
Libraries used for the graphical user interface
|
||||||
|
-----------------------------------------------
|
||||||
|
|
||||||
|
:libpng:
|
||||||
|
[http://www.libpng.org/pub/png/libpng.html]
|
||||||
|
_(used for decoding PNG images)_
|
||||||
|
|
||||||
|
:stb:
|
||||||
|
[https://github.com/nothings/stb]
|
||||||
|
_(used for rasterizing TrueType fonts)_
|
||||||
|
|
||||||
|
|
||||||
Crucial tools used during development
|
Crucial tools used during development
|
||||||
-------------------------------------
|
-------------------------------------
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user