Posted on Leave a comment

Getting started with Fedora CoreOS

This has been called the age of DevOps, and operating systems seem to be getting a little bit less attention than tools are. However, this doesn’t mean that there has been no innovation in operating systems. [Edit: The diversity of offerings from the plethora of distributions based on the Linux kernel is a fine example of this.] Fedora CoreOS has a specific philosophy of what an operating system should be in this age of DevOps.

Fedora CoreOS’ philosophy

Fedora CoreOS (FCOS) came from the merging of CoreOS Container Linux and Fedora Atomic Host. It is a minimal and monolithic OS focused on running containerized applications. Security being a first class citizen, FCOS provides automatic updates and comes with SELinux hardening.

For automatic updates to work well they need to be very robust. The goal being that servers running FCOS won’t break after an update. This is achieved by using different release streams (stable, testing and next). Each stream is released every 2 weeks and content is promoted from one stream to the other (next -> testing -> stable). That way updates landing in the stable stream have had the opportunity to be tested over a long period of time.

Getting Started

For this example let’s use the stable stream and a QEMU base image that we can run as a virtual machine. You can use coreos-installer to download that image.

From your (Workstation) terminal, run the following commands after updating the link to the image. [Edit: On Silverblue the container based coreos tools are the simplest method to try. Instructions can be found at https://docs.fedoraproject.org/en-US/fedora-coreos/tutorial-setup/ , in particular “Setup with Podman or Docker”.]

$ sudo dnf install coreos-installer
$ coreos-installer download --image-url https://builds.coreos.fedoraproject.org/prod/streams/stable/builds/32.20200907.3.0/x86_64/fedora-coreos-32.20200907.3.0-qemu.x86_64.qcow2.xz
$ xz -d fedora-coreos-32.20200907.3.0-qemu.x86_64.qcow2.xz
$ ls
fedora-coreos-32.20200907.3.0-qemu.x86_64.qcow2

Create a configuration

To customize a FCOS system, you need to provide a configuration file that will be used by Ignition to provision the system. You may use this file to configure things like creating a user, adding a trusted SSH key, enabling systemd services, and more.

The following configuration creates a ‘core’ user and adds an SSH key to the authorized_keys file. It is also creating a systemd service that uses podman to run a simple hello world container.

version: "1.0.0"
variant: fcos
passwd: users: - name: core ssh_authorized_keys: - ssh-ed25519 my_public_ssh_key_hash fcos_key
systemd: units: - contents: | [Unit] Description=Run a hello world web service After=network-online.target Wants=network-online.target [Service] ExecStart=/bin/podman run --pull=always --name=hello --net=host -p 8080:8080 quay.io/cverna/hello ExecStop=/bin/podman rm -f hello [Install] WantedBy=multi-user.target enabled: true name: hello.service

After adding your SSH key in the configuration save it as config.yaml. Next use the Fedora CoreOS Config Transpiler (fcct) tool to convert this YAML configuration into a valid Ignition configuration (JSON format).

Install fcct directly from Fedora’s repositories or get the binary from GitHub.

$ sudo dnf install fcct
$ fcct -output config.ign config.yaml

Install and run Fedora CoreOS

To run the image, you can use the libvirt stack. To install it on a Fedora system using the dnf package manager

$ sudo dnf install @virtualization

Now let’s create and run a Fedora CoreOS virtual machine

$ chcon --verbose unconfined_u:object_r:svirt_home_t:s0 config.ign
$ virt-install --name=fcos \
--vcpus=2 \
--ram=2048 \
--import \
--network=bridge=virbr0 \
--graphics=none \
--qemu-commandline="-fw_cfg name=opt/com.coreos/config,file=${PWD}/config.ign" \
--disk=size=20,backing_store=${PWD}/fedora-coreos-32.20200907.3.0-qemu.x86_64.qcow2

Once the installation is successful, some information is displayed and a login prompt is provided.

Fedora CoreOS 32.20200907.3.0
Kernel 5.8.10-200.fc32.x86_64 on an x86_64 (ttyS0)
SSH host key: SHA256:BJYN7AQZrwKZ7ZF8fWSI9YRhI++KMyeJeDVOE6rQ27U (ED25519)
SSH host key: SHA256:W3wfZp7EGkLuM3z4cy1ZJSMFLntYyW1kqAqKkxyuZrE (ECDSA)
SSH host key: SHA256:gb7/4Qo5aYhEjgoDZbrm8t1D0msgGYsQ0xhW5BAuZz0 (RSA)
ens2: 192.168.122.237 fe80::5054:ff:fef7:1a73
Ignition: user provided config was applied
Ignition: wrote ssh authorized keys file for user: core

The Ignition configuration file did not provide any password for the core user, therefore it is not possible to login directly via the console. (Though, it is possible to configure a password for users via Ignition configuration.)

Use Ctrl + ] key combination to exit the virtual machine’s console. Then check if the hello.service is running.

$ curl http://192.168.122.237:8080
Hello from Fedora CoreOS!

Using the preconfigured SSH key, you can also access the VM and inspect the services running on it.

$ ssh core@192.168.122.237
$ systemctl status hello
● hello.service - Run a hello world web service
Loaded: loaded (/etc/systemd/system/hello.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-10-28 10:10:26 UTC; 42s ago

zincati, rpm-ostree and automatic updates

The zincati service drives rpm-ostreed with automatic updates.
Check which version of Fedora CoreOS is currently running on the VM, and check if Zincati has found an update.

$ ssh core@192.168.122.237
$ rpm-ostree status
State: idle
Deployments:
● ostree://fedora:fedora/x86_64/coreos/stable
Version: 32.20200907.3.0 (2020-09-23T08:16:31Z)
Commit: b53de8b03134c5e6b683b5ea471888e9e1b193781794f01b9ed5865b57f35d57
GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0
$ systemctl status zincati
● zincati.service - Zincati Update Agent
Loaded: loaded (/usr/lib/systemd/system/zincati.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-10-28 13:36:23 UTC; 7s ago
…
Oct 28 13:36:24 cosa-devsh zincati[1013]: [INFO ] initialization complete, auto-updates logic enabled
Oct 28 13:36:25 cosa-devsh zincati[1013]: [INFO ] target release '32.20201004.3.0' selected, proceeding to stage it ... zincati reboot ...

After the restart, let’s remote login once more to check the new version of Fedora CoreOS.

$ ssh core@192.168.122.237
$ rpm-ostree status
State: idle
Deployments:
● ostree://fedora:fedora/x86_64/coreos/stable
Version: 32.20201004.3.0 (2020-10-19T17:12:33Z)
Commit: 64bb377ae7e6949c26cfe819f3f0bd517596d461e437f2f6e9f1f3c24376fd30
GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0
ostree://fedora:fedora/x86_64/coreos/stable
Version: 32.20200907.3.0 (2020-09-23T08:16:31Z)
Commit: b53de8b03134c5e6b683b5ea471888e9e1b193781794f01b9ed5865b57f35d57
GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0

rpm-ostree status now shows 2 versions of Fedora CoreOS, the one that came in the QEMU image, and the latest one received from the update. By having these 2 versions available, it is possible to rollback to the previous version using the rpm-ostree rollback command.

Finally, you can make sure that the hello service is still running and serving content.

$ curl http://192.168.122.237:8080
Hello from Fedora CoreOS!

More information: Fedora CoreOS updates

Deleting the Virtual Machine

To clean up afterwards, the following commands will delete the VM and associated storage.

$ virsh destroy fcos
$ virsh undefine --remove-all-storage fcos

Conclusion

Fedora CoreOS provides a solid and secure operating system tailored to run applications in containers. It excels in a DevOps environment which encourages the hosts to be provisioned using declarative configuration files. Automatic updates and the ability to rollback to a previous version of the OS, bring a peace of mind during the operation of a service.

Learn more about Fedora CoreOS by following the tutorials available in the project’s documentation.

Posted on Leave a comment

Godot On Steam Using GodotSteam

If you are creating a commercial PC game using Godot there is a good chance you are going to want to publish on Steam. If that is a case if your game requires any network services such as achievements, a leaderboard or DLC you are probably tempted to use Steam’s own Steamworks suite of APIs. In that case you most likely want to know about GodotSteam an open source implementation of the SteamWorks API for Godot 2/3, providing convenient GDScript interfaces for the vast majority of the Steamworks features.

GodotSteam is an open source project hosted on GitHub that is implemented using the Godot module system. The source code is under the flexible and permissive MIT license. There is a GDNative branch available although sadly it appears to have been abandoned. Being a module means you will have to download and build your own version of Godot, a process I describe in this video. If the world of Godot, modules and GDNative are all new to you, don’t worry, we have an overview available here.

If you want to get started with GodotSteam there are excellent tutorials and comprehensive documentation available here. You can learn more about Godot, Steamworks and GodotSteam in the video below.

Posted on Leave a comment

Quixel Mixer 2020.1.6 Released

Hot on the heels of the Quixel Bridge release, today Quixel released version 2020.1.6 of Quixel Mixer. Quixel Mixer is a texture generation tool that is completely free for everybody and includes MegaScans integration for Unreal Engine users. The 2020.1.6 release adds the ability to export masks, as well as 65 new free smart materials.

Details of the release from the Quixel blog:

Following the support of 3D Texturing and Smart Materials, this Quixel Mixer 2020.1.6 adds 65 new scan-based Smart Materials along with a powerful new feature: advanced mask export. This highly requested feature enables you to combine, channel pack and export advanced masks, leveraging Mixer’s versatile mask stack and material blending engine.

The ability to utilize these masks in other applications allows you to easily create high-quality variations of your materials directly inside the app of your choice.

Mixer is available for everyone, for free, forever, including its enormous base library of hundreds of free scans and Smart Materials. What’s more — Unreal Engine users have access to the entire Megascans library for free, right within Mixer. 

Quixel is available for download here for Windows and Mac OS. You can learn more about the 2020.1.6 release in the video below.

[youtube https://www.youtube.com/watch?v=KtRcoxqOfaM?feature=oembed&w=1500&h=844]
Posted on Leave a comment

Blender 2.91 Released

Blender 2.91 was released today another step forward in the rapidly improving open source 3D application. As with other recent releases this one includes several sculpting improvements, especially on the cloth brushes including the ability to collide with other objects in your scene. Other sculpting improvements include several new gesture tools, support for sculpting on the base mesh of a multi-res mesh and the addition of boundary brushes to control the edges of sculpted meshes.

Sculpting Cloth In Blender
Blender 2.91 Cloth Sculpting

Another major feature includes improved Boolean support including a new exact solver as well as the ability to perform boolean operations on collections of objects. The new exact solver is much more accurate but at the cost of running slower. This improvement is a welcome one, as the boolean functionality in Blender 2.8x was one of the few areas where it was worse than the previous releases.

In addition to the improving volumetric support in the form of openVDB support, Blender 2.91 also has the ability to generate volumes from meshes, as well as apply displacements to those volumes. There are a number of other improvements in Blender 2.91 from EEVEE to Grease Pencil. Learn more about the release in the release notes.

You can learn more about the Blender release, including several new features demonstrated in the video below. The 2.91 splash screen is the work of Robin Tran, a concept artist at UbiSoft Massive, you can see more shots here. Blender is available on all major platforms as a free download here, assuming of course their servers are currently on fire due to demand! If you are interested at looking even further into the future of Blender, Blender 2.92 is currently available here in alpha( soon to be beta) form.

[youtube https://www.youtube.com/watch?v=1bs5ujDz_9M?feature=oembed&w=1500&h=844]
Posted on Leave a comment

Quixel Release Quixel Bridge 2020.4

Quixel have just released Quixel Bridge 2020.4 with a heavy focus on making the tool easier to use. Quixel Bridge is a cross platform (Linux, Windows and Mac), free tool for organizing your textures, as well as acting as a communication tool between your data and your game engine or DCC tool of choice. Quixel Bridge also acts as a handy interface to Megascans massive texture and 3D object library, a library that is completely free for Unreal Engine users!

Highlights of the 2020.4 release from the Quixel blog:

At the beginning of this year, we overhauled the Bridge browsing experience to help you discover new, relevant content faster than ever before. As part of this ongoing effort to simplify the creative experience for artists, this latest update comes packed with enhancements to the Asset Preview Panel, the download and export settings, and other improvements that make Bridge even easier to use.

Key new features include:

  • Redesigned Asset Preview Panel
  • Simplified download and export settings
  • Managing Plugins made easier
  • Simpler initial set up
  • Deeper categorization

Quixel Bridge is available as a free download here and you can learn more about the 2020.4 release in the video below.

[youtube https://www.youtube.com/watch?v=O5-tqhkIZU8?feature=oembed&w=1500&h=844]
Posted on Leave a comment

Beepbox Easy Online Music Sketching Application

Beepbox is a free online tool for quickly generating music via sketching. It’s written in a combination of JavaScript and TypeScript with the source code available on GitHub under the very permissive MIT license. Getting started with Beepbox is as simple as going to the website and starting to lay down some notes. There are a variety of instruments available and you can layer multiple tracks of sounds to easily create music.

Perhaps coolest of all, as you create your song, the song’s data is encoded into the URL. You can simply share your songs URL and others can either open it in the player or they can open it in the editor and make changes. You can also download your song in .mid or .json formats for later updating, or you can export out into WAV format for use in your game engine of choice. In addition to BeepBox is there a modified more complex version called ModBox you can check out here. It is forked from the same source code but offers additional tools and levels of control at the cost of complexity.

You can learn more about BeepBox and see it in action in the video below.

[youtube https://www.youtube.com/watch?v=7hxb53xL35s?feature=oembed&w=1500&h=844]
Posted on Leave a comment

City Generator Hands-On

City Generator is a free and open-source procedural generation tool for creating American-style grid based cities. The source code is available on GitHub under the GPL 3 license, composed almost entirely of TypeScript code.

Features of City Generator include:

  • .png download
  • .png heightmap download
  • .svg download
  • .stl download
  • Several colour themes including Google Maps, Apple Maps, and hand-drawn styles
  • Pseudo-3D buildings
  • Open source

City Generator can export STL files that can then be imported into a 3D tool of choice for creating 3D levels. We should this process in Blender as well as the process of generating a city in City Generator in the video below.

[youtube https://www.youtube.com/watch?v=ligKs9aXKsA?feature=oembed&w=1500&h=844]
Posted on Leave a comment

Unity Closing Unity Connect

Unity Connect was first launched back in 2016 as a sort of social hub for Unity developers. Due to declining interest Unity have announced Unity connect will be closing by February 4th, 2021. Users were sent the following email announcing the closure:

Hi User,

Today we’re announcing that on February 4, 2021, Unity Connect, our dedicated talent and sharing marketplace, will shut down. We’re proud of the community that rallied around Connect and we are inspired by the great sharing and discovery that came from it.

We want to make this transition as smooth as possible for everyone who uses Connect. If you are an active user on the platform, click here to learn more about the alternatives that will be provided for some Connect features. If you would like to download any part of your profile, please feel free to do so before we delete your information on February 4, 2021.

If you head on over to the Unity Connect website you will see a notice of the upcoming closure with the following details:

We launched Unity Connect almost four years ago in an effort to provide a free community tool for all users, of all experience levels, to connect with each other. While the product has a loyal following, over the years usage has declined. So, on February 4, 2021, we will retire Unity Connect. Some features, e.g. posting new content, creating job posts, will be locked prior to this date.

We understand that these changes might cause inconvenience, therefore, we have made sure to provide alternatives for some of the most popular Connect features, please read on to learn more.

You can learn more about the Unity Connect closure and the alternative services available for Unity Connect users in the video below.

[youtube https://www.youtube.com/watch?v=4gXx4_7IKEQ?feature=oembed&w=1500&h=844]
Posted on Leave a comment

Facebook Joins Blender as Corporate Sponsor

Today Blender announced that Facebook would be joining the Blender Development Fund as a Corporate Sponsor. A corporate sponsor is the highest tier of sponsorship and means at least 120K euro per year in financial support, which generally gets translated as two full time developers on the project. Facebook will be joining the likes of Unity, Epic Games, AMD and NVIDIA in the corporate supporter tier.

Details from the Blender announcement:

To support these artists and the countless other animators, researchers, engineers, designers and content creators who depend on open source tools, Facebook wishes to contribute to the development of Blender. Which is why we’re proud to announce that Facebook will join the Blender Foundation’s Development Fund as a Corporate Patron as of Q4, 2020.  

We at Blender see this as another important signal of the industry’s willingness to migrate to open source, and contribute to open source’s continual improvement.

Ton Roosendaal,
Chairman Blender Foundation

Facebook currently use Blender in their AR product Spark AR Studio in addition to their ownership of Oculus. If you are worried about the corporate influence on Blender, don’t worry about it, for reasons described in this video. If you want to learn more about Facebooks support for Blender be sure to check out the video below.

[youtube https://www.youtube.com/watch?v=4aNzkxQs-K4?feature=oembed&w=1500&h=844]
Posted on Leave a comment

The BIG Royalty Free Music Bundle

Humble are running another bundle of interest to game developers, this one is the BIG Royalty-Free Music Bundle, a collection of “albums” containing game ready music in WAV and MP3 formats. The music is licensed in a way that enables you to distribute the music in your games, commercially or otherwise. As with all Humbles, this one is organized into tiers:

1$

  • Dark skies and other disasters
  • Haunted
  • The vanishing of Elisabeth Rose
  • Chronicles of the illusion world
  • Archives vol 1: the dark side

15$

  • Chuck kick ass
  • Shadows guild
  • The monster that lies within
  • Cult
  • Mindhunter
  • Forever and a day
  • Imagine
  • Archives vol 2: the love

25$

  • Chaos logic chaos the butterfly effect
  • The 29th planet
  • Black sails
  • Darkventures
  • Jotun
  • Pandemonium
  • Once upon a nightmare
  • Witchcraft
  • Slasher
  • The Lab
  • Dreamagination
  • Pixel: faster stronger harder
  • Superheroes

As with all Humble Bundles, you decide how the money is allocated, between Humble, Charity, the publisher and if you so choose (and thanks if you do!) to support GFS by purchasing with this link. You can learn more about the bundle in the video below.

[youtube https://www.youtube.com/watch?v=OrN3zg8rQyA?feature=oembed&w=1500&h=844]