mirror of
				https://github.com/optim-enterprises-bv/secureblue.git
				synced 2025-10-31 02:17:45 +00:00 
			
		
		
		
	feat: improved installation mechanism (#564)
This commit is contained in:
		
							
								
								
									
										2
									
								
								.github/workflows/linkspector.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/linkspector.yml
									
									
									
									
										vendored
									
									
								
							| @@ -1,4 +1,4 @@ | ||||
| name: Linkspector | ||||
| name: linkspector-scan | ||||
| on:  | ||||
|   pull_request: | ||||
|     branches: | ||||
|   | ||||
							
								
								
									
										26
									
								
								.github/workflows/tests.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								.github/workflows/tests.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | ||||
| name: run-tests | ||||
| on: | ||||
|   pull_request: | ||||
|     branches: | ||||
|       - live | ||||
|     paths-ignore: | ||||
|       - "**.md" | ||||
|   workflow_dispatch: # allow manually triggering  | ||||
| jobs: | ||||
|   run_tests: | ||||
|     runs-on: ubuntu-latest | ||||
|     name: Install Bats and run tests | ||||
|     steps: | ||||
|       - name: Checkout repo | ||||
|         uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | ||||
|  | ||||
|       - name: Setup Bats and bats libs | ||||
|         id: setup-bats | ||||
|         uses: bats-core/bats-action@2104b40bb7b6c2d5110b23a26b0bf265ab8027db #v3.0.0 | ||||
|  | ||||
|       - name: Run tests | ||||
|         shell: bash | ||||
|         env: | ||||
|           INSTALL_SCRIPT: install/install_secureblue.sh | ||||
|         run: | | ||||
|           bats -p -t --verbose-run .github/workflows/tests | ||||
							
								
								
									
										107
									
								
								.github/workflows/tests/install_script_tests.bats
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										107
									
								
								.github/workflows/tests/install_script_tests.bats
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,107 @@ | ||||
| #!/usr/bin/env bats | ||||
|  | ||||
| @test "Script exits with error if rpm-ostree is not installed" { | ||||
|   sudo bash -c 'rm -f /usr/bin/rpm-ostree' | ||||
|   run bash "$INSTALL_SCRIPT" | ||||
|   [ "$status" -eq 1 ] | ||||
|   [[ "$output" == *"This script only runs on Fedora Atomic"* ]] | ||||
| } | ||||
|  | ||||
| @test "Script passes rpm-ostree check if it is installed" { | ||||
|   sudo bash -c 'echo "empty file" > /usr/bin/rpm-ostree' | ||||
|   run bash "$INSTALL_SCRIPT" | ||||
|   [ "$status" -eq 0 ] | ||||
|   [[ "$output" == *"Welcome to the secureblue interactive installer"* ]] | ||||
| } | ||||
|  | ||||
| @test "Test command for silverblue-main-userns-hardened" { | ||||
|   sudo bash -c 'echo "empty file" > /usr/bin/rpm-ostree' | ||||
|   run bash -c "echo -e 'no\n1\nno\nyes\nno' | bash '$INSTALL_SCRIPT'" | ||||
|   [ "$status" -eq 0 ] | ||||
|   [[ "$output" == *"silverblue-main-userns-hardened"* ]] | ||||
| } | ||||
|  | ||||
| @test "Test command for silverblue-nvidia-userns-hardened" { | ||||
|   sudo bash -c 'echo "empty file" > /usr/bin/rpm-ostree' | ||||
|   run bash -c "echo -e 'no\n1\nyes\nno\nyes\nno' | bash '$INSTALL_SCRIPT'" | ||||
|   [ "$status" -eq 0 ] | ||||
|   [[ "$output" == *"silverblue-nvidia-userns-hardened"* ]] | ||||
| } | ||||
|  | ||||
| @test "Test command for silverblue-nvidia-open-userns-hardened" { | ||||
|   sudo bash -c 'echo "empty file" > /usr/bin/rpm-ostree' | ||||
|   run bash -c "echo -e 'no\n1\nyes\nyes\nyes\nno' | bash '$INSTALL_SCRIPT'" | ||||
|   [ "$status" -eq 0 ] | ||||
|   [[ "$output" == *"silverblue-nvidia-open-userns-hardened"* ]] | ||||
| } | ||||
|  | ||||
| @test "Test command for silverblue-nvidia-open-hardened" { | ||||
|   sudo bash -c 'echo "empty file" > /usr/bin/rpm-ostree' | ||||
|   run bash -c "echo -e 'no\n1\nyes\nyes\no\nno' | bash '$INSTALL_SCRIPT'" | ||||
|   [ "$status" -eq 0 ] | ||||
|   [[ "$output" == *"silverblue-nvidia-open-hardened"* ]] | ||||
| } | ||||
|  | ||||
| @test "Test command for kinoite-main-userns-hardened" { | ||||
|   sudo bash -c 'echo "empty file" > /usr/bin/rpm-ostree' | ||||
|   run bash -c "echo -e 'no\n2\nno\nyes\nno' | bash '$INSTALL_SCRIPT'" | ||||
|   [ "$status" -eq 0 ] | ||||
|   [[ "$output" == *"kinoite-main-userns-hardened"* ]] | ||||
| } | ||||
|  | ||||
| @test "Test command for sericea-main-userns-hardened" { | ||||
|   sudo bash -c 'echo "empty file" > /usr/bin/rpm-ostree' | ||||
|   run bash -c "echo -e 'no\n3\nno\nyes\nno' | bash '$INSTALL_SCRIPT'" | ||||
|   [ "$status" -eq 0 ] | ||||
|   [[ "$output" == *"sericea-main-userns-hardened"* ]] | ||||
| } | ||||
|  | ||||
| @test "Test command for wayblue-wayfire-main-userns-hardened" { | ||||
|   sudo bash -c 'echo "empty file" > /usr/bin/rpm-ostree' | ||||
|   run bash -c "echo -e 'no\n4\nno\nyes\nno' | bash '$INSTALL_SCRIPT'" | ||||
|   [ "$status" -eq 0 ] | ||||
|   [[ "$output" == *"wayblue-wayfire-main-userns-hardened"* ]] | ||||
| } | ||||
|  | ||||
| @test "Test command for wayblue-sway-main-userns-hardened" { | ||||
|   sudo bash -c 'echo "empty file" > /usr/bin/rpm-ostree' | ||||
|   run bash -c "echo -e 'no\n5\nno\nyes\nno' | bash '$INSTALL_SCRIPT'" | ||||
|   [ "$status" -eq 0 ] | ||||
|   [[ "$output" == *"wayblue-sway-main-userns-hardened"* ]] | ||||
| } | ||||
|  | ||||
| @test "Test command for wayblue-river-main-userns-hardened" { | ||||
|   sudo bash -c 'echo "empty file" > /usr/bin/rpm-ostree' | ||||
|   run bash -c "echo -e 'no\n6\nno\nyes\nno' | bash '$INSTALL_SCRIPT'" | ||||
|   [ "$status" -eq 0 ] | ||||
|   [[ "$output" == *"wayblue-river-main-userns-hardened"* ]] | ||||
| } | ||||
|  | ||||
| @test "Test command for wayblue-hyprland-main-userns-hardened" { | ||||
|   sudo bash -c 'echo "empty file" > /usr/bin/rpm-ostree' | ||||
|   run bash -c "echo -e 'no\n7\nno\nyes\nno' | bash '$INSTALL_SCRIPT'" | ||||
|   [ "$status" -eq 0 ] | ||||
|   [[ "$output" == *"wayblue-hyprland-main-userns-hardened"* ]] | ||||
| } | ||||
|  | ||||
| @test "Test command for cosmic-main-userns-hardened" { | ||||
|   sudo bash -c 'echo "empty file" > /usr/bin/rpm-ostree' | ||||
|   run bash -c "echo -e 'no\n8\nno\nyes\nno' | bash '$INSTALL_SCRIPT'" | ||||
|   [ "$status" -eq 0 ] | ||||
|   [[ "$output" == *"cosmic-main-userns-hardened"* ]] | ||||
| } | ||||
|  | ||||
| @test "Test command for securecore-zfs-main-userns-hardened" { | ||||
|   sudo bash -c 'echo "empty file" > /usr/bin/rpm-ostree' | ||||
|   run bash -c "echo -e 'yes\nyes\nno\nyes\no' | bash '$INSTALL_SCRIPT'" | ||||
|   [ "$status" -eq 0 ] | ||||
|   [[ "$output" == *"securecore-zfs-main-userns-hardened"* ]] | ||||
| } | ||||
|  | ||||
| @test "Test command for securecore-main-userns-hardened" { | ||||
|   sudo bash -c 'echo "empty file" > /usr/bin/rpm-ostree' | ||||
|   run bash -c "echo -e 'yes\nno\nno\nyes\no' | bash '$INSTALL_SCRIPT'" | ||||
|   [ "$status" -eq 0 ] | ||||
|   [[ "$output" == *"securecore-main-userns-hardened"* ]] | ||||
| } | ||||
|  | ||||
							
								
								
									
										4
									
								
								.github/workflows/trivy.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/workflows/trivy.yml
									
									
									
									
										vendored
									
									
								
							| @@ -1,4 +1,4 @@ | ||||
| name: trivy | ||||
| name: trivy-scan | ||||
| on: | ||||
|   schedule: | ||||
|     - cron: "00 8 * * *" # build at 8:00 UTC every day  | ||||
| @@ -6,6 +6,8 @@ on: | ||||
|   push: | ||||
|     branches: | ||||
|       - live | ||||
|     paths-ignore: | ||||
|       - "**.md" | ||||
|  | ||||
|   workflow_dispatch: # allow manually triggering builds | ||||
| jobs: | ||||
|   | ||||
							
								
								
									
										119
									
								
								docs/IMAGES.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										119
									
								
								docs/IMAGES.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,119 @@ | ||||
| # Images | ||||
|  | ||||
| > [!NOTE] | ||||
| > Learn about unprivileged user namespaces [here](USERNS.md). | ||||
|  | ||||
| ## Desktop | ||||
|  | ||||
| *`nvidia-open` images are recommended for systems with Nvidia GPUs Turing or newer. These include the new [open kernel modules](https://github.com/NVIDIA/open-gpu-kernel-modules) from Nvidia, not Nouveau.* | ||||
|  | ||||
| *`nvidia` images are recommended for systems with Nvidia GPUs Pascal or older. These include the closed kernel modules from Nvidia.* | ||||
|  | ||||
| ### Recommended <sup>[why?](RECOMMENDED.md)</sup> | ||||
| #### Silverblue | ||||
| | Name                                      | Base      | Nvidia Support         | Unpriv. Userns | | ||||
| |-------------------------------------------|-----------|-------------------------|------------------------------| | ||||
| | `silverblue-main-hardened`               | Silverblue| No                      | No                           | | ||||
| | `silverblue-nvidia-hardened`             | Silverblue| Yes, closed drivers     | No                           | | ||||
| | `silverblue-nvidia-open-hardened`        | Silverblue| Yes, open drivers       | No                           | | ||||
| | `silverblue-main-userns-hardened`        | Silverblue| No                      | Yes                          | | ||||
| | `silverblue-nvidia-userns-hardened`      | Silverblue| Yes, closed drivers     | Yes                          | | ||||
| | `silverblue-nvidia-open-userns-hardened` | Silverblue| Yes, open drivers       | Yes                          | | ||||
|  | ||||
| ### Stable | ||||
| #### Kinoite | ||||
| | Name                                      | Base      | Nvidia Support         | Unpriv. Userns | | ||||
| |-------------------------------------------|-----------|-------------------------|------------------------------| | ||||
| | `kinoite-main-hardened`                  | Kinoite   | No                      | No                           | | ||||
| | `kinoite-nvidia-hardened`                | Kinoite   | Yes, closed drivers     | No                           | | ||||
| | `kinoite-nvidia-open-hardened`           | Kinoite   | Yes, open drivers       | No                           | | ||||
| | `kinoite-main-userns-hardened`           | Kinoite   | No                      | Yes                          | | ||||
| | `kinoite-nvidia-userns-hardened`         | Kinoite   | Yes, closed drivers     | Yes                          | | ||||
| | `kinoite-nvidia-open-userns-hardened`    | Kinoite   | Yes, open drivers       | Yes                          | | ||||
|  | ||||
| #### Sericea | ||||
| | Name                                      | Base      | Nvidia Support         | Unpriv. Userns | | ||||
| |-------------------------------------------|-----------|-------------------------|------------------------------| | ||||
| | `sericea-main-hardened`                  | Sericea   | No                      | No                           | | ||||
| | `sericea-nvidia-hardened`                | Sericea   | Yes, closed drivers     | No                           | | ||||
| | `sericea-nvidia-open-hardened`           | Sericea   | Yes, open drivers       | No                           | | ||||
| | `sericea-main-userns-hardened`           | Sericea   | No                      | Yes                          | | ||||
| | `sericea-nvidia-userns-hardened`         | Sericea   | Yes, closed drivers     | Yes                          | | ||||
| | `sericea-nvidia-open-userns-hardened`    | Sericea   | Yes, open drivers       | Yes                          | | ||||
|  | ||||
| ### Beta | ||||
| > [!NOTE] | ||||
| > Learn about wayblue [here](https://github.com/wayblueorg/wayblue). | ||||
|  | ||||
| #### Wayfire | ||||
| | Name                                      | Base                  | Nvidia Support         | Unpriv. Userns | | ||||
| |-------------------------------------------|-----------------------|-------------------------|------------------------------| | ||||
| | `wayblue-wayfire-main-hardened`          | Wayblue-Wayfire       | No                      | No                           | | ||||
| | `wayblue-wayfire-nvidia-hardened`        | Wayblue-Wayfire       | Yes, closed drivers     | No                           | | ||||
| | `wayblue-wayfire-nvidia-open-hardened`   | Wayblue-Wayfire       | Yes, open drivers       | No                           | | ||||
| | `wayblue-wayfire-main-userns-hardened`   | Wayblue-Wayfire       | No                      | Yes                          | | ||||
| | `wayblue-wayfire-nvidia-userns-hardened` | Wayblue-Wayfire       | Yes, closed drivers     | Yes                          | | ||||
| | `wayblue-wayfire-nvidia-open-userns-hardened` | Wayblue-Wayfire | Yes, open drivers       | Yes                          | | ||||
|  | ||||
| #### Hyprland | ||||
| | Name                                      | Base                  | Nvidia Support         | Unpriv. Userns | | ||||
| |-------------------------------------------|-----------------------|-------------------------|------------------------------| | ||||
| | `wayblue-hyprland-main-hardened`         | Wayblue-Hyprland      | No                      | No                           | | ||||
| | `wayblue-hyprland-nvidia-hardened`       | Wayblue-Hyprland      | Yes, closed drivers     | No                           | | ||||
| | `wayblue-hyprland-nvidia-open-hardened`  | Wayblue-Hyprland      | Yes, open drivers       | No                           | | ||||
| | `wayblue-hyprland-main-userns-hardened`  | Wayblue-Hyprland      | No                      | Yes                          | | ||||
| | `wayblue-hyprland-nvidia-userns-hardened`| Wayblue-Hyprland      | Yes, closed drivers     | Yes                          | | ||||
| | `wayblue-hyprland-nvidia-open-userns-hardened` | Wayblue-Hyprland | Yes, open drivers       | Yes                          | | ||||
|  | ||||
| #### River | ||||
| | Name                                      | Base                  | Nvidia Support         | Unpriv. Userns | | ||||
| |-------------------------------------------|-----------------------|-------------------------|------------------------------| | ||||
| | `wayblue-river-main-hardened`            | Wayblue-River         | No                      | No                           | | ||||
| | `wayblue-river-nvidia-hardened`          | Wayblue-River         | Yes, closed drivers     | No                           | | ||||
| | `wayblue-river-nvidia-open-hardened`     | Wayblue-River         | Yes, open drivers       | No                           | | ||||
| | `wayblue-river-main-userns-hardened`     | Wayblue-River         | No                      | Yes                          | | ||||
| | `wayblue-river-nvidia-userns-hardened`   | Wayblue-River         | Yes, closed drivers     | Yes                          | | ||||
| | `wayblue-river-nvidia-open-userns-hardened` | Wayblue-River     | Yes, open drivers       | Yes                          | | ||||
|  | ||||
|  | ||||
| #### Sway | ||||
| | Name                                      | Base                  | Nvidia Support         | Unpriv. Userns | | ||||
| |-------------------------------------------|-----------------------|-------------------------|------------------------------| | ||||
| | `wayblue-sway-main-hardened`             | Wayblue-Sway          | No                      | No                           | | ||||
| | `wayblue-sway-nvidia-hardened`           | Wayblue-Sway          | Yes, closed drivers     | No                           | | ||||
| | `wayblue-sway-nvidia-open-hardened`      | Wayblue-Sway          | Yes, open drivers       | No                           | | ||||
| | `wayblue-sway-main-userns-hardened`      | Wayblue-Sway          | No                      | Yes                          | | ||||
| | `wayblue-sway-nvidia-userns-hardened`    | Wayblue-Sway          | Yes, closed drivers     | Yes                          | | ||||
| | `wayblue-sway-nvidia-open-userns-hardened` | Wayblue-Sway       | Yes, open drivers       | Yes                          | | ||||
|  | ||||
| ## Server | ||||
| > [!NOTE] | ||||
| > After you finish setting up your [Fedora CoreOS](https://fedoraproject.org/coreos/) installation, you will need to disable `zincati.service` before rebasing to securecore. | ||||
|  | ||||
| | Name                                      | Base      | Nvidia Support         | ZFS Support | Unpriv. Userns | | ||||
| |-------------------------------------------|-----------|-------------------------|-------------|------------------------------| | ||||
| | `securecore-main-hardened`               | CoreOS    | No                      | No          | No                           | | ||||
| | `securecore-nvidia-hardened`             | CoreOS    | Yes, closed drivers     | No          | No                           | | ||||
| | `securecore-nvidia-open-hardened`        | CoreOS    | Yes, open drivers       | No          | No                           | | ||||
| | `securecore-main-userns-hardened`        | CoreOS    | No                      | No          | Yes                          | | ||||
| | `securecore-nvidia-userns-hardened`      | CoreOS    | Yes, closed drivers     | No          | Yes                          | | ||||
| | `securecore-nvidia-open-userns-hardened` | CoreOS    | Yes, open drivers       | No          | Yes                          | | ||||
| | `securecore-zfs-main-hardened`           | CoreOS    | No                      | Yes         | No                           | | ||||
| | `securecore-zfs-nvidia-hardened`         | CoreOS    | Yes, closed drivers     | Yes         | No                           | | ||||
| | `securecore-zfs-nvidia-open-hardened`    | CoreOS    | Yes, open drivers       | Yes         | No                           | | ||||
| | `securecore-zfs-main-userns-hardened`    | CoreOS    | No                      | Yes         | Yes                          | | ||||
| | `securecore-zfs-nvidia-userns-hardened`  | CoreOS    | Yes, closed drivers     | Yes         | Yes                          | | ||||
| | `securecore-zfs-nvidia-open-userns-hardened` | CoreOS  | Yes, open drivers       | Yes         | Yes                          | | ||||
|  | ||||
|  | ||||
| ### Experimental | ||||
|  | ||||
| #### Cosmic | ||||
| | Name                                      | Base                  | Nvidia Support         | Unpriv. Userns | | ||||
| |-------------------------------------------|-----------------------|-------------------------|------------------------------| | ||||
| | `cosmic-main-hardened`          | Cosmic       | No                      | No                           | | ||||
| | `cosmic-nvidia-hardened`        | Cosmic       | Yes, closed drivers     | No                           | | ||||
| | `cosmic-nvidia-open-hardened`   | Cosmic       | Yes, open drivers       | No                           | | ||||
| | `cosmic-main-userns-hardened`   | Cosmic       | No                      | Yes                          | | ||||
| | `cosmic-nvidia-userns-hardened` | Cosmic       | Yes, closed drivers     | Yes                          | | ||||
| | `cosmic-nvidia-open-userns-hardened` | Cosmic | Yes, open drivers       | Yes                          | | ||||
							
								
								
									
										152
									
								
								docs/README.md
									
									
									
									
									
								
							
							
						
						
									
										152
									
								
								docs/README.md
									
									
									
									
									
								
							| @@ -78,160 +78,22 @@ Sponsorship options are on the [Donate](DONATE.md) page. All donations are appre | ||||
|  | ||||
| Have a look at [PREINSTALL-README](PREINSTALL-README.md) before proceeding. | ||||
|  | ||||
| ## Rebasing (Recommended) | ||||
| ## Rebasing | ||||
| > [!NOTE] | ||||
| > If you don't already have a Fedora Atomic installation, use a Fedora Atomic ISO that matches your secureblue target image to install one. If you want to use a secureblue Silverblue image, start with the Fedora Silverblue ISO, Kinoite for Kinoite, Sericea (Sway Atomic) for Sericea and all the Wayblue images, and CoreOS for all the securecore images. | ||||
| >  | ||||
| > For more details on the available images, have a look at [IMAGES](IMAGES.md) before proceeding. | ||||
|  | ||||
| To rebase a [Fedora Atomic](https://fedoraproject.org/atomic-desktops/) or [Fedora CoreOS](https://fedoraproject.org/coreos/) installation, follow these steps<sup>‡</sup>: | ||||
| To rebase a [Fedora Atomic](https://fedoraproject.org/atomic-desktops/) or [Fedora CoreOS](https://fedoraproject.org/coreos/) installation, download the script below: | ||||
|  | ||||
| > [!IMPORTANT] | ||||
| > The **only** supported tag is `latest`. | ||||
| [](https://github.com/secureblue/secureblue/releases/latest/download/install_secureblue.sh) | ||||
|  | ||||
| - First rebase to the unsigned image, to get the proper signing keys and policies installed: | ||||
|   ``` | ||||
|   rpm-ostree rebase ostree-unverified-registry:ghcr.io/secureblue/IMAGE_NAME:latest | ||||
|   ``` | ||||
| - Reboot to complete the rebase: | ||||
|   ``` | ||||
|   systemctl reboot | ||||
|   ``` | ||||
| - Then rebase to the signed image, like so: | ||||
|   ``` | ||||
|   rpm-ostree rebase ostree-image-signed:docker://ghcr.io/secureblue/IMAGE_NAME:latest | ||||
|   ``` | ||||
| - Reboot again to complete the installation: | ||||
|   ``` | ||||
|   systemctl reboot | ||||
|   ``` | ||||
| <sup>‡</sup> Replace `IMAGE_NAME` with the *full name* of your preferred image from the [list below](README.md#images). | ||||
|  | ||||
| ## ISO | ||||
|  | ||||
| While it's recommended to use a Fedora Atomic ISO to install and then rebase that installation to secureblue, you can also generate an ISO and install that directly using [this script](generate_secureblue_iso.sh). Please note you should still follow the [post-install steps](README.md#post-install) when installing from a generated ISO: | ||||
| Then, run it from the directory you downloaded it to: | ||||
|  | ||||
| ``` | ||||
| ./generate_secureblue_iso.sh | ||||
| bash install_secureblue.sh | ||||
| ``` | ||||
|  | ||||
| # Images | ||||
|  | ||||
| > [!NOTE] | ||||
| > Learn about unprivileged user namespaces [here](USERNS.md). | ||||
|  | ||||
| ## Desktop | ||||
|  | ||||
| *`nvidia-open` images are recommended for systems with Nvidia GPUs Turing or newer. These include the new [open kernel modules](https://github.com/NVIDIA/open-gpu-kernel-modules) from Nvidia, not Nouveau.* | ||||
|  | ||||
| *`nvidia` images are recommended for systems with Nvidia GPUs Pascal or older. These include the closed kernel modules from Nvidia.* | ||||
|  | ||||
| ### Recommended <sup>[why?](RECOMMENDED.md)</sup> | ||||
| #### Silverblue | ||||
| | Name                                      | Base      | Nvidia Support         | Unpriv. Userns | | ||||
| |-------------------------------------------|-----------|-------------------------|------------------------------| | ||||
| | `silverblue-main-hardened`               | Silverblue| No                      | No                           | | ||||
| | `silverblue-nvidia-hardened`             | Silverblue| Yes, closed drivers     | No                           | | ||||
| | `silverblue-nvidia-open-hardened`        | Silverblue| Yes, open drivers       | No                           | | ||||
| | `silverblue-main-userns-hardened`        | Silverblue| No                      | Yes                          | | ||||
| | `silverblue-nvidia-userns-hardened`      | Silverblue| Yes, closed drivers     | Yes                          | | ||||
| | `silverblue-nvidia-open-userns-hardened` | Silverblue| Yes, open drivers       | Yes                          | | ||||
|  | ||||
| ### Stable | ||||
| #### Kinoite | ||||
| | Name                                      | Base      | Nvidia Support         | Unpriv. Userns | | ||||
| |-------------------------------------------|-----------|-------------------------|------------------------------| | ||||
| | `kinoite-main-hardened`                  | Kinoite   | No                      | No                           | | ||||
| | `kinoite-nvidia-hardened`                | Kinoite   | Yes, closed drivers     | No                           | | ||||
| | `kinoite-nvidia-open-hardened`           | Kinoite   | Yes, open drivers       | No                           | | ||||
| | `kinoite-main-userns-hardened`           | Kinoite   | No                      | Yes                          | | ||||
| | `kinoite-nvidia-userns-hardened`         | Kinoite   | Yes, closed drivers     | Yes                          | | ||||
| | `kinoite-nvidia-open-userns-hardened`    | Kinoite   | Yes, open drivers       | Yes                          | | ||||
|  | ||||
| #### Sericea | ||||
| | Name                                      | Base      | Nvidia Support         | Unpriv. Userns | | ||||
| |-------------------------------------------|-----------|-------------------------|------------------------------| | ||||
| | `sericea-main-hardened`                  | Sericea   | No                      | No                           | | ||||
| | `sericea-nvidia-hardened`                | Sericea   | Yes, closed drivers     | No                           | | ||||
| | `sericea-nvidia-open-hardened`           | Sericea   | Yes, open drivers       | No                           | | ||||
| | `sericea-main-userns-hardened`           | Sericea   | No                      | Yes                          | | ||||
| | `sericea-nvidia-userns-hardened`         | Sericea   | Yes, closed drivers     | Yes                          | | ||||
| | `sericea-nvidia-open-userns-hardened`    | Sericea   | Yes, open drivers       | Yes                          | | ||||
|  | ||||
| ### Beta | ||||
| > [!NOTE] | ||||
| > Learn about wayblue [here](https://github.com/wayblueorg/wayblue). | ||||
|  | ||||
| #### Wayfire | ||||
| | Name                                      | Base                  | Nvidia Support         | Unpriv. Userns | | ||||
| |-------------------------------------------|-----------------------|-------------------------|------------------------------| | ||||
| | `wayblue-wayfire-main-hardened`          | Wayblue-Wayfire       | No                      | No                           | | ||||
| | `wayblue-wayfire-nvidia-hardened`        | Wayblue-Wayfire       | Yes, closed drivers     | No                           | | ||||
| | `wayblue-wayfire-nvidia-open-hardened`   | Wayblue-Wayfire       | Yes, open drivers       | No                           | | ||||
| | `wayblue-wayfire-main-userns-hardened`   | Wayblue-Wayfire       | No                      | Yes                          | | ||||
| | `wayblue-wayfire-nvidia-userns-hardened` | Wayblue-Wayfire       | Yes, closed drivers     | Yes                          | | ||||
| | `wayblue-wayfire-nvidia-open-userns-hardened` | Wayblue-Wayfire | Yes, open drivers       | Yes                          | | ||||
|  | ||||
| #### Hyprland | ||||
| | Name                                      | Base                  | Nvidia Support         | Unpriv. Userns | | ||||
| |-------------------------------------------|-----------------------|-------------------------|------------------------------| | ||||
| | `wayblue-hyprland-main-hardened`         | Wayblue-Hyprland      | No                      | No                           | | ||||
| | `wayblue-hyprland-nvidia-hardened`       | Wayblue-Hyprland      | Yes, closed drivers     | No                           | | ||||
| | `wayblue-hyprland-nvidia-open-hardened`  | Wayblue-Hyprland      | Yes, open drivers       | No                           | | ||||
| | `wayblue-hyprland-main-userns-hardened`  | Wayblue-Hyprland      | No                      | Yes                          | | ||||
| | `wayblue-hyprland-nvidia-userns-hardened`| Wayblue-Hyprland      | Yes, closed drivers     | Yes                          | | ||||
| | `wayblue-hyprland-nvidia-open-userns-hardened` | Wayblue-Hyprland | Yes, open drivers       | Yes                          | | ||||
|  | ||||
| #### River | ||||
| | Name                                      | Base                  | Nvidia Support         | Unpriv. Userns | | ||||
| |-------------------------------------------|-----------------------|-------------------------|------------------------------| | ||||
| | `wayblue-river-main-hardened`            | Wayblue-River         | No                      | No                           | | ||||
| | `wayblue-river-nvidia-hardened`          | Wayblue-River         | Yes, closed drivers     | No                           | | ||||
| | `wayblue-river-nvidia-open-hardened`     | Wayblue-River         | Yes, open drivers       | No                           | | ||||
| | `wayblue-river-main-userns-hardened`     | Wayblue-River         | No                      | Yes                          | | ||||
| | `wayblue-river-nvidia-userns-hardened`   | Wayblue-River         | Yes, closed drivers     | Yes                          | | ||||
| | `wayblue-river-nvidia-open-userns-hardened` | Wayblue-River     | Yes, open drivers       | Yes                          | | ||||
|  | ||||
|  | ||||
| #### Sway | ||||
| | Name                                      | Base                  | Nvidia Support         | Unpriv. Userns | | ||||
| |-------------------------------------------|-----------------------|-------------------------|------------------------------| | ||||
| | `wayblue-sway-main-hardened`             | Wayblue-Sway          | No                      | No                           | | ||||
| | `wayblue-sway-nvidia-hardened`           | Wayblue-Sway          | Yes, closed drivers     | No                           | | ||||
| | `wayblue-sway-nvidia-open-hardened`      | Wayblue-Sway          | Yes, open drivers       | No                           | | ||||
| | `wayblue-sway-main-userns-hardened`      | Wayblue-Sway          | No                      | Yes                          | | ||||
| | `wayblue-sway-nvidia-userns-hardened`    | Wayblue-Sway          | Yes, closed drivers     | Yes                          | | ||||
| | `wayblue-sway-nvidia-open-userns-hardened` | Wayblue-Sway       | Yes, open drivers       | Yes                          | | ||||
|  | ||||
| ## Server | ||||
| > [!NOTE] | ||||
| > After you finish setting up your [Fedora CoreOS](https://fedoraproject.org/coreos/) installation, you will need to disable `zincati.service` before rebasing to securecore. | ||||
|  | ||||
| | Name                                      | Base      | Nvidia Support         | ZFS Support | Unpriv. Userns | | ||||
| |-------------------------------------------|-----------|-------------------------|-------------|------------------------------| | ||||
| | `securecore-main-hardened`               | CoreOS    | No                      | No          | No                           | | ||||
| | `securecore-nvidia-hardened`             | CoreOS    | Yes, closed drivers     | No          | No                           | | ||||
| | `securecore-nvidia-open-hardened`        | CoreOS    | Yes, open drivers       | No          | No                           | | ||||
| | `securecore-main-userns-hardened`        | CoreOS    | No                      | No          | Yes                          | | ||||
| | `securecore-nvidia-userns-hardened`      | CoreOS    | Yes, closed drivers     | No          | Yes                          | | ||||
| | `securecore-nvidia-open-userns-hardened` | CoreOS    | Yes, open drivers       | No          | Yes                          | | ||||
| | `securecore-zfs-main-hardened`           | CoreOS    | No                      | Yes         | No                           | | ||||
| | `securecore-zfs-nvidia-hardened`         | CoreOS    | Yes, closed drivers     | Yes         | No                           | | ||||
| | `securecore-zfs-nvidia-open-hardened`    | CoreOS    | Yes, open drivers       | Yes         | No                           | | ||||
| | `securecore-zfs-main-userns-hardened`    | CoreOS    | No                      | Yes         | Yes                          | | ||||
| | `securecore-zfs-nvidia-userns-hardened`  | CoreOS    | Yes, closed drivers     | Yes         | Yes                          | | ||||
| | `securecore-zfs-nvidia-open-userns-hardened` | CoreOS  | Yes, open drivers       | Yes         | Yes                          | | ||||
|  | ||||
|  | ||||
| ### Experimental | ||||
|  | ||||
| #### Cosmic | ||||
| | Name                                      | Base                  | Nvidia Support         | Unpriv. Userns | | ||||
| |-------------------------------------------|-----------------------|-------------------------|------------------------------| | ||||
| | `cosmic-main-hardened`          | Cosmic       | No                      | No                           | | ||||
| | `cosmic-nvidia-hardened`        | Cosmic       | Yes, closed drivers     | No                           | | ||||
| | `cosmic-nvidia-open-hardened`   | Cosmic       | Yes, open drivers       | No                           | | ||||
| | `cosmic-main-userns-hardened`   | Cosmic       | No                      | Yes                          | | ||||
| | `cosmic-nvidia-userns-hardened` | Cosmic       | Yes, closed drivers     | Yes                          | | ||||
| | `cosmic-nvidia-open-userns-hardened` | Cosmic | Yes, open drivers       | Yes                          | | ||||
|  | ||||
| # Post-install | ||||
|  | ||||
|   | ||||
| @@ -1,84 +0,0 @@ | ||||
| #!/usr/bin/env bash | ||||
|  | ||||
| if ! command -v podman &> /dev/null | ||||
| then | ||||
|     echo "Podman is not installed, install it to use this script." | ||||
|     exit 1 | ||||
| fi | ||||
|  | ||||
| function is_yes { | ||||
|     case $(echo "$1" | tr '[:upper:]' '[:lower:]') in | ||||
|         y|yes) return 0;; | ||||
|         *) return 1;; | ||||
|     esac | ||||
| } | ||||
|  | ||||
| # Define image configurations | ||||
| declare -A image_configs=( | ||||
|     ["securecore"]="Server" | ||||
|     ["securecore-zfs"]="Server" | ||||
|     ["silverblue"]="Silverblue:asus" | ||||
|     ["kinoite"]="Kinoite:asus" | ||||
|     ["sericea"]="Sericea" | ||||
|     ["wayblue-wayfire"]="Sericea" | ||||
|     ["wayblue-sway"]="Sericea" | ||||
|     ["wayblue-river"]="Sericea" | ||||
|     ["wayblue-hyprland"]="Sericea" | ||||
|     ["cinnamon"]="Silverblue" | ||||
|     ["cosmic"]="Kinoite" | ||||
| ) | ||||
|  | ||||
| image_name="" | ||||
| additional_params="" | ||||
| variant="" | ||||
|  | ||||
| # Determine if it's a server or desktop | ||||
| read -p "Is this for a server? (yes/No): " is_server | ||||
| if is_yes "$is_server"; then | ||||
|     read -p "Do you need ZFS support? (yes/No): " use_zfs | ||||
|     image_name=$(is_yes "$use_zfs" && echo "securecore-zfs" || echo "securecore") | ||||
|     variant=${image_configs[$image_name]} | ||||
| else | ||||
|     # For desktops, present all non-server options | ||||
|     desktop_options=($(for key in "${!image_configs[@]}"; do [[ $key != server* ]] && echo "$key"; done | sort)) | ||||
|      | ||||
|     echo "Select a desktop:" | ||||
|     select opt in "${desktop_options[@]}"; do | ||||
|         if [[ " ${desktop_options[@]} " =~ " ${opt} " ]]; then | ||||
|             image_name=$opt | ||||
|             IFS=':' read -r variant options <<< "${image_configs[$opt]}" | ||||
|             break | ||||
|         else | ||||
|             echo "Invalid option" | ||||
|         fi | ||||
|     done | ||||
|      | ||||
|     if [[ $options == *"asus"* ]]; then | ||||
|         read -p "Do you use an Asus laptop? (yes/No): " is_asus | ||||
|         is_yes "$is_asus" && additional_params+="-asus" | ||||
|     fi | ||||
| fi | ||||
|  | ||||
| # Ask about Nvidia for all options | ||||
| read -p "Do you use Nvidia? (yes/No): " use_nvidia | ||||
| is_yes "$use_nvidia" && additional_params+="-nvidia" || additional_params+="-main" | ||||
|  | ||||
| # Ask about user namespaces for all options | ||||
| read -p "Do you need user namespaces? (yes/No): " use_userns | ||||
| is_yes "$use_userns" && additional_params+="-userns" | ||||
|  | ||||
| image_name+="$additional_params-hardened" | ||||
|  | ||||
| command="sudo podman run --rm --privileged --volume .:/build-container-installer/build ghcr.io/jasonn3/build-container-installer:latest IMAGE_REPO=ghcr.io/secureblue IMAGE_NAME=$image_name VERSION=41 IMAGE_TAG=latest VARIANT=$variant" | ||||
|  | ||||
| echo "Command to execute:" | ||||
| echo "$command" | ||||
| echo "" | ||||
|  | ||||
| read -p "Generate this ISO? (yes/No): " generate_iso | ||||
| if is_yes "$generate_iso"; then | ||||
|     $command | ||||
|     mv deploy.iso $image_name.iso | ||||
|     mv deploy.iso-CHECKSUM $image_name.iso-CHECKSUM | ||||
|     sed -i "s/deploy.iso/$image_name.iso/" "$image_name.iso-CHECKSUM" | ||||
| fi | ||||
							
								
								
									
										86
									
								
								install/install_secureblue.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								install/install_secureblue.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,86 @@ | ||||
| #!/usr/bin/env bash | ||||
|  | ||||
| if ! command -v rpm-ostree &> /dev/null | ||||
| then | ||||
|     echo "This script only runs on Fedora Atomic" | ||||
|     exit 1 | ||||
| fi | ||||
|  | ||||
| function is_yes { | ||||
|     case $(echo "$1" | tr '[:upper:]' '[:lower:]') in | ||||
|         y|yes) return 0;; | ||||
|         *) return 1;; | ||||
|     esac | ||||
| } | ||||
|  | ||||
| # Define image configurations | ||||
| desktop_image_types=( | ||||
|     "silverblue" | ||||
|     "kinoite" | ||||
|     "sericea" | ||||
|     "wayblue-wayfire" | ||||
|     "wayblue-sway" | ||||
|     "wayblue-river" | ||||
|     "wayblue-hyprland" | ||||
|     "cosmic" | ||||
| ) | ||||
|  | ||||
| image_name="" | ||||
| additional_params="" | ||||
|  | ||||
| echo "Welcome to the secureblue interactive installer!"  | ||||
| echo "After answering the following questions, your system will be rebased to secureblue."  | ||||
| echo "-----------------------------------------------------------------------------------" | ||||
|  | ||||
| # Determine if it's a server or desktop | ||||
| read -p "Is this for a server? (yes/No): " is_server | ||||
| if is_yes "$is_server"; then | ||||
|     read -p "Do you need ZFS support? (yes/No): " use_zfs | ||||
|     image_name=$(is_yes "$use_zfs" && echo "securecore-zfs" || echo "securecore") | ||||
| else | ||||
|     echo "Select a desktop. Silverblue is recommended." | ||||
|     select image_name in "${desktop_image_types[@]}"; do | ||||
|         if [[ -n "$image_name" ]]; then         | ||||
|             echo "Selected desktop: $image_name" | ||||
|             if [[ "$image_name" == "cosmic" ]]; then | ||||
|                 echo "Warning: Cosmic images are experimental." | ||||
|             fi | ||||
|  | ||||
|             if [[ "$image_name" == *"wayblue"* ]]; then | ||||
|                 echo "Warning: Wayblue images are in beta." | ||||
|             fi | ||||
|  | ||||
|             break | ||||
|         else | ||||
|             echo "Invalid option, please select a valid number." | ||||
|         fi | ||||
|     done | ||||
|      | ||||
| fi | ||||
|  | ||||
| # Ask about Nvidia for all options | ||||
| read -p "Do you have Nvidia? (yes/No): " use_nvidia | ||||
| if is_yes "$use_nvidia"; then | ||||
|     additional_params+="-nvidia"  | ||||
|     read -p "Do you need Nvidia's open drivers? (yes/No): " use_open | ||||
|     is_yes "$use_open" && additional_params+="-open" | ||||
| else | ||||
|     additional_params+="-main" | ||||
| fi | ||||
|  | ||||
| # Ask about user namespaces for all options | ||||
| read -p "Do you need unprivileged user namespaces? (yes/No): " use_userns | ||||
| is_yes "$use_userns" && additional_params+="-userns" | ||||
|  | ||||
| image_name+="$additional_params-hardened" | ||||
|  | ||||
| rebase_command="rpm-ostree rebase ostree-unverified-registry:ghcr.io/secureblue/$image_name:latest" | ||||
|  | ||||
| echo "Commands to execute:" | ||||
| echo "$rebase_command" | ||||
| echo "" | ||||
|  | ||||
| read -p "Proceed? (yes/No): " rebase_proceed | ||||
| if is_yes "$rebase_proceed"; then | ||||
|     $rebase_command | ||||
| fi | ||||
		Reference in New Issue
	
	Block a user
	 RoyalOughtness
					RoyalOughtness