mirror of
				https://github.com/optim-enterprises-bv/secureblue.git
				synced 2025-10-31 18:37:47 +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:  | on:  | ||||||
|   pull_request: |   pull_request: | ||||||
|     branches: |     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: | on: | ||||||
|   schedule: |   schedule: | ||||||
|     - cron: "00 8 * * *" # build at 8:00 UTC every day  |     - cron: "00 8 * * *" # build at 8:00 UTC every day  | ||||||
| @@ -6,6 +6,8 @@ on: | |||||||
|   push: |   push: | ||||||
|     branches: |     branches: | ||||||
|       - live |       - live | ||||||
|  |     paths-ignore: | ||||||
|  |       - "**.md" | ||||||
|  |  | ||||||
|   workflow_dispatch: # allow manually triggering builds |   workflow_dispatch: # allow manually triggering builds | ||||||
| jobs: | 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. | Have a look at [PREINSTALL-README](PREINSTALL-README.md) before proceeding. | ||||||
|  |  | ||||||
| ## Rebasing (Recommended) | ## Rebasing | ||||||
| > [!NOTE] | > [!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. | > 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] | [](https://github.com/secureblue/secureblue/releases/latest/download/install_secureblue.sh) | ||||||
| > The **only** supported tag is `latest`. |  | ||||||
|  |  | ||||||
| - First rebase to the unsigned image, to get the proper signing keys and policies installed: | Then, run it from the directory you downloaded it to: | ||||||
|   ``` |  | ||||||
|   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: |  | ||||||
|  |  | ||||||
| ``` | ``` | ||||||
| ./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 | # 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