mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-26 18:31:52 +00:00
* store, properties, manifest * interfaces * init and backups * fix init and backups * file models * more versions * dependencies * config except dynamic types * clean up config * remove disabled from non-dynamic vaues * actions * standardize example code block formats * wip: actions refactor Co-authored-by: Jade <Blu-J@users.noreply.github.com> * commit types * fix types * update types * update action request type * update apis * add description to actionrequest * clean up imports * revert package json * chore: Remove the recursive to the index * chore: Remove the other thing I was testing * flatten action requests * update container runtime with new config paradigm * new actions strategy * seems to be working * misc backend fixes * fix fe bugs * only show breakages if breakages * only show success modal if result * don't panic on failed removal * hide config from actions page * polyfill autoconfig * use metadata strategy for actions instead of prev * misc fixes * chore: split the sdk into 2 libs (#2736) * follow sideload progress (#2718) * follow sideload progress * small bugfix * shareReplay with no refcount false * don't wrap sideload progress in RPCResult * dont present toast --------- Co-authored-by: Aiden McClelland <me@drbonez.dev> * chore: Add the initial of the creation of the two sdk * chore: Add in the baseDist * chore: Add in the baseDist * chore: Get the web and the runtime-container running * chore: Remove the empty file * chore: Fix it so the container-runtime works --------- Co-authored-by: Matt Hill <MattDHill@users.noreply.github.com> Co-authored-by: Aiden McClelland <me@drbonez.dev> * misc fixes * update todos * minor clean up * fix link script * update node version in CI test * fix node version syntax in ci build * wip: fixing callbacks * fix sdk makefile dependencies * add support for const outside of main * update apis * don't panic! * Chore: Capture weird case on rpc, and log that * fix procedure id issue * pass input value for dep auto config * handle disabled and warning for actions * chore: Fix for link not having node_modules * sdk fixes * fix build * fix build * fix build --------- Co-authored-by: Matt Hill <mattnine@protonmail.com> Co-authored-by: Jade <Blu-J@users.noreply.github.com> Co-authored-by: J H <dragondef@gmail.com> Co-authored-by: Jade <2364004+Blu-J@users.noreply.github.com> Co-authored-by: Matt Hill <MattDHill@users.noreply.github.com>
135 lines
4.0 KiB
Markdown
135 lines
4.0 KiB
Markdown
# Setting up your development environment on Debian/Ubuntu
|
|
|
|
A step-by-step guide
|
|
|
|
> This is the only officially supported build environment.
|
|
> MacOS has limited build capabilities and Windows requires [WSL2](https://learn.microsoft.com/en-us/windows/wsl/install)
|
|
|
|
## Installing dependencies
|
|
|
|
Run the following commands one at a time
|
|
|
|
```sh
|
|
sudo apt update
|
|
sudo apt install -y ca-certificates curl gpg build-essential
|
|
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
|
|
echo "deb [arch=$(dpkg-architecture -q DEB_HOST_ARCH) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian bookworm stable" | sudo tee /etc/apt/sources.list.d/docker.list
|
|
sudo apt update
|
|
sudo apt install -y sed grep gawk jq gzip brotli containerd.io docker-ce docker-ce-cli docker-compose-plugin qemu-user-static binfmt-support squashfs-tools git debspawn rsync b3sum
|
|
sudo mkdir -p /etc/debspawn/
|
|
echo "AllowUnsafePermissions=true" | sudo tee /etc/debspawn/global.toml
|
|
sudo usermod -aG docker $USER
|
|
sudo su $USER
|
|
docker run --privileged --rm tonistiigi/binfmt --install all
|
|
docker buildx create --use
|
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # proceed with default installation
|
|
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash
|
|
source ~/.bashrc
|
|
nvm install 20
|
|
nvm use 20
|
|
nvm alias default 20 # this prevents your machine from reverting back to another version
|
|
```
|
|
|
|
## Cloning the repository
|
|
|
|
```sh
|
|
git clone --recursive https://github.com/Start9Labs/start-os.git --branch next/minor
|
|
cd start-os
|
|
```
|
|
|
|
## Building an ISO
|
|
|
|
```sh
|
|
PLATFORM=$(uname -m) ENVIRONMENT=dev make iso
|
|
```
|
|
|
|
This will build an ISO for your current architecture. If you are building to run on an architecture other than the one you are currently on, replace `$(uname -m)` with the correct platform for the device (one of `aarch64`, `aarch64-nonfree`, `x86_64`, `x86_64-nonfree`, `raspberrypi`)
|
|
|
|
## Creating a VM
|
|
|
|
### Install virt-manager
|
|
|
|
```sh
|
|
sudo apt update
|
|
sudo apt install -y virt-manager
|
|
sudo usermod -aG libvirt $USER
|
|
sudo su $USER
|
|
```
|
|
|
|
### Launch virt-manager
|
|
|
|
```sh
|
|
virt-manager
|
|
```
|
|
|
|
### Create new virtual machine
|
|
|
|

|
|

|
|

|
|

|
|
|
|
#### make sure to set "Target Path" to the path to your results directory in start-os
|
|
|
|

|
|

|
|

|
|

|
|

|
|

|
|

|
|

|
|
|
|
## Updating a VM
|
|
|
|
The fastest way to update a VM to your latest code depends on what you changed:
|
|
|
|
### UI or startd:
|
|
|
|
```sh
|
|
PLATFORM=$(uname -m) ENVIRONMENT=dev make update-startbox REMOTE=start9@<VM IP>
|
|
```
|
|
|
|
### Container runtime or debian dependencies:
|
|
|
|
```sh
|
|
PLATFORM=$(uname -m) ENVIRONMENT=dev make update-deb REMOTE=start9@<VM IP>
|
|
```
|
|
|
|
### Image recipe:
|
|
|
|
```sh
|
|
PLATFORM=$(uname -m) ENVIRONMENT=dev make update-squashfs REMOTE=start9@<VM IP>
|
|
```
|
|
|
|
---
|
|
|
|
If the device you are building for is not available via ssh, it is also possible to use `magic-wormhole` to send the relevant files.
|
|
|
|
### Prerequisites:
|
|
|
|
```sh
|
|
sudo apt update
|
|
sudo apt install -y magic-wormhole
|
|
```
|
|
|
|
As before, the fastest way to update a VM to your latest code depends on what you changed. Each of the following commands will return a command to paste into the shell of the device you would like to upgrade.
|
|
|
|
### UI or startd:
|
|
|
|
```sh
|
|
PLATFORM=$(uname -m) ENVIRONMENT=dev make wormhole
|
|
```
|
|
|
|
### Container runtime or debian dependencies:
|
|
|
|
```sh
|
|
PLATFORM=$(uname -m) ENVIRONMENT=dev make wormhole-deb
|
|
```
|
|
|
|
### Image recipe:
|
|
|
|
```sh
|
|
PLATFORM=$(uname -m) ENVIRONMENT=dev make wormhole-squashfs
|
|
```
|