There are various different ways to contribute to winesapOS:
- Open up new GitHub issues for feature requests or bugs to be addressed.
- Help create documentation, create new features, or fix bugs.
-
Extra attention and help is needed on these issues.
-
For code contributions, first copy of the pre-commit script to ensure the code passes these tests:
$ cp git/hooks/pre-commit .git/hooks/pre-commit
-
This guide focuses on the technical architecture and workflows for winesapOS development.
Performance Image
Partition | Label | File System | Size | Description |
---|---|---|---|---|
1 | None | None | 2 MiB | BIOS boot backwards compatibility. |
2 | wos-drive | exFAT | 16 GiB | Cross-platform flash drive storage. |
3 | WOS-EFI | FAT32 | 500 MiB | UEFI boot firmware. |
4 | winesapos-boot | ext4 | 1 GiB | GRUB boot loader and Linux kernel. |
5 | winesapos-root | Btrfs | 100% | The root and home file systems. |
Secure Image
Partition | Label | File System | Size | Description |
---|---|---|---|---|
1 | None | None | 2 MiB | BIOS boot backwards compatibility. |
2 | wos-drive | exFAT | 16 GiB | Cross-platform flash drive storage. |
3 | WOS-EFI | FAT32 | 500 MiB | UEFI boot firmware. |
4 | winesapos-boot | ext4 | 1 GiB | GRUB boot loader and Linux kernel. |
5 | winesapos-luks | LUKS | 100% | The encrypted root and home file systems. |
/dev/mapper/cryptroot | winesapos-root | Btrfs | 100% | The root and home file systems. |
Minimal Image
Partition | Label | File System | Size | Description |
---|---|---|---|---|
1 | None | None | 2 MiB | BIOS boot backwards compatibility. |
2 | WOS-EFI | FAT32 | 500 MiB | UEFI boot firmware. |
3 | winesapos-boot | ext4 | 1 GiB | GRUB boot loader and Linux kernel. |
4 | winesapos-root | Btrfs | 100% | The root and home file systems. |
These drivers are provided for better compatibility with the lastest Macs with Intel processors:
- linux-t2 = Contains patches for the T2 chip, trackpad, keyboard, storage, and audio support.
- apple-bcm-firmware = Firmware files for the Wi-Fi on T2 Macs.
- apple-t2-audio-config = Configuration files for the speakers, microphone, and 3.5mm headphone jack to work correctly.
- touchbard = A service to manage the Touch Bar.
These are a list of custom files and script that we install as part of winesapOS:
/etc/NetworkManager/conf.d/wifi_backend.conf
= Configures NetworkManger to use the IWD backend.- Source:
scripts/winesapos-install.sh
- Source:
- `/etc/modules-load.d/winesapos-mac.conf = Enable the T2 driver (apple-bce).
- Source:
scripts/winesapos-install.sh
- Source:
/etc/modprobe.d/framework-als-deactivate.conf
= If a Framework laptop is detected, the ambient light sensor is disabled to fix input from special keys on the keyboard.- Source:
scripts/winesapos-setup.sh
- Source:
/etc/modprobe.d/winesapos-amd.conf
= Enable the AMDGPU driver for older graphics cards and apply various driver workarounds for known issues.- Source:
scripts/winesapos-install.sh
- Source:
/etc/modprobe.d/winesapos-mac.conf
= Enable the Touch Bar driver (apple-touchbar) and disable the Ethernet over USB drivers which T2 Macs do not support.- Source:
scripts/winesapos-install.sh
- Source:
scripts/winesapos-setup.sh
- Source:
/etc/snapper/configs/{root,home}
= The Snapper configuration for Btrfs backups.- Source:
files/etc-snapper-configs-root
- Source:
/etc/sysctl.d/00-winesapos.conf
= Configures a lower swappiness level and increases the open files limit.- Source:
scripts/winesapos-install.sh
- Source:
/etc/systemd/system.conf.d/20-file-limits.conf
= Configure a higher open files limit.- Source:
scripts/winesapos-install.sh
- Source:
/etc/systemd/system/snapper-cleanup-hourly.timer
= A systemd timer for cleaning up Snapper snapshots every hour.- Source:
scripts/winesapos-install.sh
- Source:
/etc/systemd/user/winesapos-mute.service
= A user (not system) service for muting all audio. This is required for some newer Macs that have in-development hardware drivers that are extremely loud by default.- Source:
files/winesapos-mute.service
- Source:
/usr/local/bin/winesapos-mute.sh
= The script for the winesapos-mute.service.- Source:
scripts/winesapos-mute.sh
- Source:
/etc/systemd/system/pacman-mirrors.service
= On Manjaro builds, this provides a service to find and configure the fastest mirrors for Pacman. This is not needed on Arch Linux builds as it has a Reflector service that comes with a service file.- Source:
files/pacman-mirrors.service
- Source:
/etc/systemd/system/winesapos-resize-root-file-system.service
= A service that runs a script to resize the root file system upon first boot.- Source:
winesapos-resize-root-file-system.service
- Source:
/etc/winesapos/graphics
= The graphics type that was selected during the setup process: amd, intel, nvidia-new, nvidia-old, virtualbox, or vmware.- Source:
scripts/winesapos-setup.sh
- Source:
/etc/winesapos/IMAGE_TYPE
= The image type that was set during the build process.- Source:
scripts/winesapos-install.sh
- Source:
/etc/winesapos/VERSION
= The version of winesapOS that is installed.- Source:
VERSION
- Source:
/home/winesap/.winesapos/winesapos-setup.desktop
= A desktop shortcut for the winesapOS First-Time Setup wizard.- Source:
files/winesapos-setup.desktop
- Source:
/home/winesap/.winesapos/winesapos-upgrade.desktop
= A desktop shortcut for the winesapOS Upgrade wizard.- Source:
files/winesapos-upgrade.desktop
- Source:
/usr/local/bin/winesapos-resize-root-file-system.sh
= The script used for the winesapos-resize-root-file-system.service.- Source:
scripts/winesapos-resize-root-file-system.sh
- Source:
/home/winesap/.winesapos/winesapos-setup.sh
= The script used for the winesapOS First-Time Setup wizard.- Source:
scripts/winesapos-setup.sh
- Source:
/home/winesap/.winesapos/winesapos_logo_icon.png
= The winesapOS logo as a 96x96 icon for the winesapOS First-Time Setup and winesapOS Upgrade desktop shortcuts.- Source:
files/winesapos_logo_icon.png
- Source:
/home/winesap/.winesapos/winesapos-upgrade-remote-stable.sh
= The script used for the winesapOS Upgrade wizard. It pulls the latest upgrade script from the "stable" branch of winesapOS.- Source:
scripts/winesapos-upgrade-remote-stable.sh
- Source:
Use a container build for:
- Automated development builds. Run a single command to build a new winesapOS image.
- CI/CD builds. Quickly test and publish new changes.
Use a virtual machine build for:
- GPU passthrough. Applications and games that require GPU acceleration can be thoroughly tested.
- Desktop testing. Reboot directly into a virtual machine to see and manually test new changes that require user interaction.
- Release builds. This properly sets the UEFI boot name in the release image which is not possible within a container.
Depending on which Arch Linux distribution you want to build, download the related installer. Both Arch Linux and Manjaro provide ISOs for a live CD environment.
A virtual machine is used to build winesapOS in a safe and isolated manner. The disks on the hypervisor will not be touched. It is assumed that QEMU/KVM will be used although other hypervisors can be used.
Requirements:
- UEFI boot
- 2 vCPUs
- 12 GB RAM
- Storage
- Performance or secure image = 25 GiB storage (to fit on a 32 GB flash drive)
- Minimal image = 7 GiB storage (to fit on an 8 GB flash drive)
-
Create the virtual storage device.
-
Performance or secure image:
sudo qemu-img create -f raw -o size=25G /var/lib/libvirt/images/winesapos.img
-
Minimal image:
sudo qemu-img create -f raw -o size=7G /var/lib/libvirt/images/winesapos.img
-
-
Create the virtual machine to use for installing winesapOS.
-
Arch Linux and Manjaro use an installer ISO image.
sudo virt-install --name winesapos --boot loader=/usr/share/edk2-ovmf/x64/OVMF_CODE.fd,loader.readonly=yes,loader.secure='no',loader.type=pflash --vcpus 2 --memory 12288 --disk path=/var/lib/libvirt/images/winesapos.img,bus=virtio,cache=none --cdrom=/var/lib/libvirt/images/<INSTALLER_ISO>
-
Arch Linux and Manjaro:
- Virtual Machine Manager (virt-manager)
- File
- New Virtual Machine
- Local install media (ISO image or CDROM)
- Forward
- Choose ISO or CDROM install media: <INSTALLER_ISO>
- Forward
- Memory: 12288
- CPUs: 2
- Forward
- Enable storage for this virtual machine: yes
- Create a disk image for the virtual machine:
- Performance or secure image = 25.0 GiB
- Minimal image = 7.0 GiB
- Forward
- Name: winesapOS
- Customize configuration before install: yes
- Finish
- Overview
- Firmware: UEFI x86_64: /usr/share/edk2-ovmf/x64/OVMF_CODE.fd
- Apply
- Begin Installation
GNOME Boxes can be installed on any Linux distribution using Flatpak: flatpak install org.gnome.Boxes
.
-
+
-
Download and operating system
-
(Select the three dots to show all available operating systems)
-
(Search for and select "Arch Linux x86_64 (Live)")
-
Review and Create
-
Memory: 12.0 GiB
-
Storage limit:
- Performance or secure image = 25.0 GiB
- Minimal image = 7.0 GiB
-
Enable EFI: Yes
-
-
Create
The created QCOW2 image will be stored as a file here: ~/.var/app/org.gnome.Boxes/data/gnome-boxes/images/archlinux
. The downloaded ISO is stored as a file here: ~/Downloads/archlinux-x86_64.iso
.
For specialized builds, use environment variables to modify the installation settings.
$ export <KEY>=<VALUE>
Key | Values | Performance Value (Default) | Secure Value | Minimal Value | Description |
---|---|---|---|---|---|
WINESAPOS_DEBUG_INSTALL | true or false | true | true | true | Use set -x for debug shell logging during the installation. |
WINESAPOS_DEBUG_TESTS | true or false | false | false | false | Use set -x for debug shell logging during the tests. |
WINESAPOS_ENABLE_TESTING_REPO | true or false | false | false | false | Use the [winesapos-testing] repository instead of the stable [winesapos] repository during the installation. |
WINESAPOS_BUILD_IN_VM_ONLY | true or false | true | true | true | If the build should fail and exit if it is not in a virtual machine. Set to false for a bare-metal installation. |
WINESAPOS_CREATE_DEVICE | true or false | false | false | false | If the build should create and use an image file instead of using an existing block device. |
WINESAPOS_CREATE_DEVICE_SIZE | integer for GiB | (None) | (None) | (None) | Manually override the default values for the device size (7 GiB with no portable storage and 25 GiB with). |
WINESAPOS_DEVICE | vda | vda | vda | If WINESAPOS_CREATE=false, then use the existing /dev/${WINESAPOS_DEVICE} block device to install winesapOS onto. |
|
WINESAPOS_ENABLE_PORTABLE_STORAGE | true | true | false | If the 16 GiB exFAT flash drive storage should be enabled. | |
WINESAPOS_BUILD_CHROOT_ONLY | false | false | false | If partitioning and GRUB should be skipped for a chroot installation. | |
WINESAPOS_INSTALL_DIR | /winesapos | /winesapos | /winesapos | The chroot directory where winesapOS will be installed into. | |
WINESAPOS_DISTRO | arch or manjaro | arch | arch | arch | The Linux distribution to install with. |
WINESAPOS_HTTP_PROXY | (None) | (None) | (None) | ||
WINESAPOS_HTTP_PROXY_CA | (None) | (None) | (None) | ||
WINESAPOS_DE | cinnamon, gnome, or plasma | plasma | plasma | plasma | The desktop environment to install. |
WINESAPOS_USER_NAME | winesap | winesap | winesap | The name of the user to create. | |
WINESAPOS_ENCRYPT | true or false | false | true | false | If the root partition should be encrypted with LUKS. |
WINESAPOS_ENCRYPT_PASSWORD | password | password | password | The default password for the encrypted root partition. | |
WINESAPOS_LOCALE | en_US.UTF-8 UTF-8 |
en_US.UTF-8 UTF-8 |
en_US.UTF-8 UTF-8 |
The locale to use for /etc/locale.gen . |
|
WINESAPOS_APPARMOR | true or false | false | true | false | If Apparmor should be installed and enabled. |
WINESAPOS_PASSWD_EXPIRE | true or false | false | true | false | If the root and winesap user passwords will be forced to be changed after first login. |
WINESAPOS_SUDO_NO_PASSWORD | true or false | true | false | true | If the user can run sudo without entering a password. |
WINESAPOS_FIREWALL | true or false | false | true | false | If a firewall (firewalld ) will be installed. |
WINESAPOS_CPU_MITIGATIONS | true or false | false | true | false | If processor mitigations should be enabled in the Linux kernel. |
WINESAPOS_DISABLE_KERNEL_UPDATES | true or false | false | false | false | If the Linux kernels should be excluded from being upgraded by Pacman. |
WINESAPOS_DISABLE_KWALLET | true or false | true | false | true | If Kwallet should be enabled for securing various passwords. |
WINESAPOS_ENABLE_KLIPPER | true or false | true | false | true | If Klipper should be disabled (as much as it can be) for storing copied text. |
WINESAPOS_INSTALL_GAMING_TOOLS | true or false | true | true | false | Install all gaming tools and launchers. |
WINESAPOS_INSTALL_PRODUCTIVITY_TOOLS | true or false | true | true | false | Install all productivity tools. |
WINESAPOS_AUTO_LOGIN | true or false | true | false | true | Set the default user to login automatically without a password. |
WINESAPOS_IMAGE_TYPE | minimal, performance, or secure | performance | secure | minimal | The image type to set in the file /etc/winesapos/IMAGE_TYPE . |
WINESAPOS_CUSTOM_SCRIPT | (None) | (None) | (None) | A custom script to run before the installation does a cleanup. | |
WINESAPOS_GITHUB_ACTIONS_TESTS | true or false | false | false | false | Used to control if certain tests with known issues should run in GitHub Actions (true) or not (false). |
Once the virtual machine is running, a distribution of Arch Linux for winesapOS can be installed. An automated script is provided to fully install the operating system. This script will only work in a virtual machine. Clone the entire project repository. This will provide additional files and scripts that will be copied into the virtual machine image.
Arch Linux requires installing the required git
dependency.
$ sudo pacman -S -y
$ sudo pacman -S git
Clone the GitHub repository:
$ git clone https://github.com/lukeshortcloud/winesapos.git
$ cd winesapos/scripts/
Before running the installation script, optionally set environment variables to configure the build. Use sudo -E
to load the environment variables.
-
Performance-focused image build:
-
Arch Linux (default):
# export WINESAPOS_DISTRO=arch # bash ./winesapos-install.sh
-
Manjaro:
$ export WINESAPOS_DISTRO=manjaro $ sudo -E bash ./winesapos-install.sh
-
-
Security-focused image build requires first sourcing the environment variables:
-
Arch Linux:
# export WINESAPOS_DISTRO=arch # . ./env/winesapos-env-secure.sh # bash ./winesapos-install.sh
-
Manjaro:
$ export WINESAPOS_DISTRO=manjaro $ . ./env/winesapos-env-secure.sh $ sudo -E bash ./winesapos-install.sh
-
-
Minimal storage-focused image build requires first sourcing the environment variables:
-
Arch Linux:
# export WINESAPOS_DISTRO=arch # . ./env/winesapos-env-minimal.sh # bash ./winesapos-install.sh
-
Manjaro:
$ export WINESAPOS_DISTRO=manjaro $ . ./env/winesapos-env-minimal.sh $ sudo -E bash ./winesapos-install.sh
-
When complete, run the automated tests and then shutdown the virtual machine (do NOT restart). The image can then be cleaned up and used for manual testing on an external storage device.
The .github/workflows/main.yml
GitHub Actions workflow has the steps needed to automatically build an image using a container. These can be run manually:
$ sudo docker pull archlinux:latest
$ sudo docker build --pull --no-cache -t winesapos-img-builder build/.
$ sudo docker run --rm -v $(pwd):/workdir -v /dev:/dev --privileged=true winesapos-img-builder:latest /bin/bash -x /workdir/scripts/winesapos-build.sh
The resulting image will be built and available here: scripts/winesapos.img
.
These are all of the scenarioes that need to be tested and working before a release.
OS | Performance | Secure | Plasma | Cinnamon | GNOME |
---|---|---|---|---|---|
Arch Linux | x | x | x | x | x |
Manjaro | x | x | x | x | x |
Run the tests to ensure that everything was setup correctly. These are automatically ran and logged as part of the install script. The tests must be run with Bash.
$ sudo bash ./winesapos-tests.sh
On the hypervisor, clean up the virtual machine image. This will ensure that the image will generated unique values for additional security and stability. The customize
operation is disabled because the operation will set a new machine-id which is not what we want. Our image already has a blank /etc/machine-id
file which will be automatically re-generated on first boot.
$ sudo virt-sysprep --operations defaults,-customize -a /var/lib/libvirt/images/winesapos.img
Optionally flash the image onto an external storage device for testing hardware. Otherwise, run manual tests using a virtual machine.
$ sudo dd if=/var/lib/libvirt/images/winesapos.img of=/dev/<DEVICE>
Manual tests:
- Accept every first-time setup option to install and configure the system.
- Open and use every program on the desktop.
- Package Managers
- Discover
- Install a Pacman package:
apache
- Install a Flatpak package:
org.gnome.BreakTimer
- Install a Pacman package:
- bauh
- Install a Pacman package:
nginx
- Install a Flatpak package:
org.gabmus.gfeeds
- Install an AUR package:
cmatrix-git
- Install a Snap package:
lxd
- Install a Pacman package:
- AppImagePool
- Install an AppImage:
GitNote
- Install an AppImage:
- Discover
By default, the winesapOS upgrade script will update all upgrade files and exit if there are changes detected. For testing on a branch that is not stable
(such as test
), set an environment variable to skip updating upgrade files as these are pulled from the stable
branch.
export WINESAPOS_UPGRADE_FILES=false
export WINESAPOS_UPGRADE_TESTING_REPO=true
export WINESAPOS_UPGRADE_VERSION_CHECK=false
curl https://raw.githubusercontent.com/LukeShortCloud/winesapOS/test/scripts/winesapos-upgrade.sh | sudo -E bash
For new contributors:
- Fork the
main
branch of the LukeShortCloud/winesapOS git repository. - All shell scripts are written in Bash.
- Check for syntax errors by using the command
bash -n ${SCRIPT_FILE}
.
- Check for syntax errors by using the command
If adding a new application to winesapOS, these are all of the places it needs to be updated:
README.md
needs to mention that application under the "Usability" or "Gaming support" sections under the "Features" header.CHANGELOG.md
needs to mention that the application has has beenAdd
ed,Change
d, orRemove
d.src/winesapos-install.sh
- The installer copies shortcut files for GUI applications to the desktop.
src/winesapos-tests.sh
needs updated tests to at least check for the existence of the package and desktop shortcut (if applicable).
winesapOS ships two Linux kernels:
- Linux T2 = The latest stable Linux kernel with additional patches to support Intel Macs with the Apple T2 Security Chip.
- Linux LTS = The latest upstream Linux LTS kernel.
- A new version of this kernel is released every year around December.
- For Arch Linux builds,
linux-lts
is already used. For Manjaro builds, thelinux<MAJOR_VERSION><MINOR_VERSION>
package needs to be updated. - The Mac drivers need to build cleanly against this kernel.
- For Arch Linux builds,
- A new version of this kernel is released every year around December.
A container and script are provided to pre-build important AUR packages for winesapOS.
cd scripts/repo/
sudo docker build --pull --no-cache --tag ekultails/winesapos-build-repo:latest .
mkdir /tmp/winesapos-build-repo
chmod 777 /tmp/winesapos-build-repo
sudo docker run --name winesapos-build-repo --rm --volume /tmp/winesapos-build-repo:/output ekultails/winesapos-build-repo:latest &> /tmp/winesapos-build-repo_$(date --iso-8601=seconds).log
Check to see what packages succeeded or failed to be built:
grep -P "PASSED|FAILED" /tmp/winesapos-build-repo_*.log
Those packages are then hosted on a Kubernetes cluster with the following requirements:
Apply all of the Kubernetes manifests to create NGINX containers on the Kubernetes cluster.
kubectl apply -f scripts/repo/k8s/
For copying new packages over, temporarily set deployment.spec.template.spec.containers.volumeMounts[0].readOnly
to false
.
kubectl --namespace winesapos-repo edit deployment deploy-winesapos-repo
Then copy the new files into one of the containers. A single persistent volume claim is shared among all of the containers.
kubectl --namespace winesapos-repo cp <PACKAGE_FILE> deploy-winesapos-repo-<UUID>:/usr/share/nginx/html/
For specialized repository builds, use environment variables to determine what packages will be built.
sudo docker run --name winesapos-build-repo --rm --env WINESAPOS_REPO_BUILD_TESTING=true --env WINESAPOS_REPO_BUILD_LINUX_GIT=true --env WINESAPOS_REPO_BUILD_MESA_GIT=true --volume /tmp/winesapos-build-repo:/output ekultails/winesapos-build-repo:latest &> /tmp/winesapos-build-repo_$(date --iso-8601=seconds).log
Key | Values | Default | Description |
---|---|---|---|
WINESAPOS_REPO_BUILD_TESTING | true or false | false | Name the Pacman repository database as "winesapos-testing" instead of "winesapos". |
WINESAPOS_REPO_BUILD_LINUX_GIT | true or false | false | Build linux-git . |
WINESAPOS_REPO_BUILD_MESA_GIT | true or false | false | Build mesa-git and lib32-mesa-git . |
As of winesapOS 3.4.0, all packages and the metadata database are signed using a GPG key.
- Sign all of the packages:
for pkg in $(ls -1); do gpg --detach-sign --no-armor ${pkg}; done
- Update and sign the database:
repo-add --verify --sign winesapos.db.tar.gz ./*.pkg.tar.zst
winesapOS supports running custom scripts before the installation finishes.
Specify the script to run before running winesapos-install.sh
:
$ export WINESAPOS_CUSTOM_SCRIPT=/path/to/script.sh
Hints for writinng a custom script:
- Source the
scripts/env/winesapos-env-defaults.sh
environment variables to load useful functions. - Use one of the provided functions to install an application:
${CMD_FLATPAK_INSTALL[*]}
${CMD_PACMAN_INSTALL[*]}
${CMD_YAY_INSTALL[*]}
- Use
${WINESAPOS_INSTALL_DIR}
to reference the chroot directory used as part of the installation.
On the server that hosts the winesapOS repository, run these commands to automatically backup all of the files to the Wayback Machine (Internet Archive):
$ export WINESAPOS_VERSION=3.3.0
$ cd /data/winesapos-repo/repo/winesapos-${WINESAPOS_VERSION}
$ curl -v https://web.archive.org/save/https://winesapos.lukeshort.cloud/repo/${WINESAPOS_VERSION}
$ find . -exec curl -v https://web.archive.org/save/https://winesapos.lukeshort.cloud/repo/${WINESAPOS_VERSION}/{} \;
It is also possible for a community member to do a backup by downloading the a mirror of the repository to their computer first:
$ wget -m https://winesapos.lukeshort.cloud/repo/
$ cd winesapos.lukeshort.cloud
$ find . -name "*.html" -exec curl -v "https://web.archive.org/save/https://{}" ';'
These are tasks the need to happen before publishing a stable release.
-
Rebuild all AUR packages.
- First publish them to the
[winesapos-testing]
repository and test them via a new build. - For the stable build and release, move these packages to the
[winesapos]
repository.
- First publish them to the
-
Update the versions for these programs by changing these variables:
- scripts/winesapos-install.sh
ETCHER_VER
YAY_VER
- scripts/winesapos-setup.sh
PROTON_GE_VERSION
- scripts/winesapos-upgrade.sh
ETCHER_VER
- scripts/repo/winesapos-build-repo.sh
YAY_VER
- scripts/winesapos-install.sh
-
Delete old git branches:
git branch -D <BRANCH> git push --delete origin <BRANCH>
-
Test upgrades from every old stable version to the new stable version.
-
Add upgrade notes to the
UPGRADES.md
file. -
For a new release, update the
VERSION
file in the git repository with the new version before building an image. -
Before building an alpha of beta build, enable the
[winesapos-testing]
repository withexport WINESAPOS_ENABLE_TESTING_REPO=true
. -
After a build, make sure that no tests failed by checking the exit/return code of the installation script. That number will be automatically printed to the screen and it is the number of failed tests.
-
On the hypervisor, stop the virtual machine and then sanitize the image.
$ sudo virt-sysprep --operations defaults,-customize -a /var/lib/libvirt/images/winesapos.img
-
Create a release by using the universal
zip
compression utility. Do this for the build of the "performance" (default), "secure", and "minimal" images.$ cd /var/lib/libvirt/images/ $ sudo mv winesapos.img winesapos-<VERSION>-[performance|secure|minimal].img $ sudo zip winesapos-<VERSION>-[performance|secure|minimal].img.zip winesapos-<VERSION>-[performance|secure|minimal].img $ ls -1 | grep winesapos winesapos-<VERSION>-[performance|secure|minimal].img winesapos-<VERSION>-[performance|secure|minimal].img.zip
-
Create SHA512 checkums separately for the "performance", "secure", and "minimal" images and their related archive files. Users can then use those files to check for corruption or tampering.
$ sha512sum winesapos-<VERSION>-[performance|secure|minimal]* > winesapos-<VERSION>-[performance|secure|minimal].sha512sum.txt $ sha512sum --check winesapos-<VERSION>-[performance|secure|minimal].sha512sum.txt
-
Take a screenshot of the desktop for the secure image. It has all of the applications that the performance has in addition to the "Firewall" GUI provided by firewalld.
- Set the desktop resolution to 1280x768.
- Use Squoosh to compress the image.
- Upload the image to a GitHub issue.
- Update the hyperlink used in the README.md file.
-
Create a git tag and push it.
$ git tag X.Y.Z $ git push origin X.Y.Z
-
Sync the stable branch with the latest tag. This is required for the upgrade script. Old versions of winesapOS will pull the latest upgrade script from the stable branch.
$ git checkout stable $ git rebase X.Y.Z $ git push origin stable
-
Upload the images to be hosted at
https://winesapos.lukeshort.cloud/repo/iso/winesapos-${WINESAPOS_VERSION}/
and also on the Internet Archive.$ cd /usr/local/bin/ $ sudo url -LOs https://archive.org/download/ia-pex/ia $ sudo chmod +x /usr/local/bin/ia $ ia configure $ export WINESAPOS_VERSION=3.3.0 $ export WINESAPOS_VERSION_NO_PERIODS=330 $ cd /data/winesapos-repo/repo/iso/winesapos-${WINESAPOS_VERSION}/ $ ia upload winesapos-${WINESAPOS_VERSION_NO_PERIODS} winesapos-${WINESAPOS_VERSION}-minimal.img.zip winesapos-${WINESAPOS_VERSION}-minimal.sha512sum.txt winesapos-${WINESAPOS_VERSION}-performance.img.zip winesapos-${WINESAPOS_VERSION}-performance.sha512sum.txt winesapos-${WINESAPOS_VERSION}-secure.img.zip winesapos-${WINESAPOS_VERSION}-secure.sha512sum.txt --metadata="mediatype:data" --metadata="title:winesapOS ${WINESAPOS_VERSION}" --metadata="creator:Luke Short" --metadata="summary:https://github.com/LukeShortCloud/winesapOS/releases/tag/${WINESAPOS_VERSION}"