patches and low-level development discussion
 help / color / mirror / code / Atom feed
blob 22c1fe310b56adecaac5ed7e87decbfd56881919 3333 bytes (raw)
name: Documentation/installation/getting-spectrum.adoc 	 # note: path name is non-authoritative(*)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
 
= Getting Spectrum
:page-parent: Build and Run
:page-nav_order: 2

// SPDX-FileCopyrightText: 2022-2024 Alyssa Ross <hi@alyssa.is>
// SPDX-License-Identifier: GFDL-1.3-no-invariants-or-later OR CC-BY-SA-4.0

To get Spectrum, you need to build it from source.  As long as you're
running Linuxfootnote:[Building from other operating systems might
work, but hasn't been tested.  Patches are welcome to support building
from other operating systems, as long as they're not too invasive.]
and have https://nixos.org/download.html[Nix] and https://git-scm.com/[git]
installed, it's very easy to do.

TIP: Before you start, consider setting up the
xref:binary-cache.adoc[Spectrum binary cache], which will save you a
lot of time waiting for builds.

TIP: If you encounter build failures, especially timeouts or
out-of-memory (OOM) kills, Nix might be configured to run too many
builds at once, with too many cores per build.  See Nix's
documentation for
https://nix.dev/manual/nix/2.24/advanced-topics/cores-vs-jobs.html[tuning
cores and jobs].

To get Spectrum, run

[source,shell]
----
git clone https://spectrum-os.org/git/spectrum
----

Then follow one of the instructions below.  If you haven't set up the
xref:binary-cache.adoc[binary cache], all of the following Nix commands
will take a very long time.

== Trying Spectrum

If you want to try Spectrum out to get a feel for it, without
installing it, you can run it in a development VM with some example
applications.

[source,shell]
----
cd spectrum/host/rootfs
nix-shell --run 'make run'
----

This builds just enough of Spectrum to try it out in a VM.

== Installing Spectrum

To install Spectrum on a computer, you can use a USB drive as a
bootable Spectrum installer device.  You will need to choose whether to
try out Spectrum without installing it on your system (as a live image),
or to install it to your computer's internal storage.

To build a live image, run:

[source,shell]
----
nix-build spectrum/release/live
----

To build an installer, run:

[source,shell]
----
nix-build spectrum/release/combined
----

If you haven't set up the xref:binary-cache.adoc[binary cache], this
will take a very long time.  When it's done, a symbolic link named
"result" will appear in the current directory, pointing to the
installer image.  Write that image to a USB drive, for example using
`dd` (command line) or
https://gitlab.com/bztsrc/usbimager[`usbimager`] (graphical, available
in Nixpkgs).  Then boot your system from the USB drive

If you built a live image, Spectrum should be ready for you to use.
If you built an installer, you should see a menu allowing you to
"Install Spectrum".

NOTE: While it's possible to install Spectrum to your internal
storage, at this point in Spectrum's development there is not much
reason to, as OS updates are not yet implemented, and persistent
storage is not yet exposed to VMs.  Using a live image to boot
Spectrum will let you try out everything in Spectrum, without
having to go through the additional step of reinstalling Spectrum
every time you want to use a newer version.

CAUTION: Do not use Spectrum for anything important or sensitive as it is not
yet suitable for real-world use.  Many important security properties are
currently missing, and there is no procedure for updating to
new versions—you have to reinstall the OS.

debug log:

solving 22c1fe310b56adecaac5ed7e87decbfd56881919 ...
found 22c1fe310b56adecaac5ed7e87decbfd56881919 in https://spectrum-os.org/git/spectrum

(*) Git path names are given by the tree(s) the blob belongs to.
    Blobs themselves have no identifier aside from the hash of its contents.^

Code repositories for project(s) associated with this public inbox

	https://spectrum-os.org/git/doc
	https://spectrum-os.org/git/mktuntap
	https://spectrum-os.org/git/spectrum
	https://spectrum-os.org/git/ucspi-vsock

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).