This is a valid RSS feed.
This feed is valid, but interoperability with the widest range of feed readers could be improved by implementing the following recommendations.
line 449, column 57: (2 occurrences) [help]
<title>St&eacute;phane Graber: Announcing Incus 6.13</title>
^
line 1269, column 0: (12 occurrences) [help]
<p>See the <a data-id="2745" data-type="page" h ...
line 1269, column 0: (5 occurrences) [help]
<p>See the <a data-id="2745" data-type="page" h ...
line 1376, column 0: (18 occurrences) [help]
<div class="highlight"><pre tabindex="0">< ...
<description><div class="elementor elementor-2079" data-elemen ...
<description><div class="elementor elementor-2079" data-elemen ...
line 1531, column 0: (7 occurrences) [help]
<div class="elementor-element elementor-element-d7a6ffc e-flex e ...
line 1533, column 0: (6 occurrences) [help]
<div class="elementor-element elementor-element-389a8ca elemento ...
line 2084, column 0: (3 occurrences) [help]
<figure class="wp-block-image size-large"><a href="h ...
line 2084, column 0: (3 occurrences) [help]
<figure class="wp-block-image size-large"><a href="h ...
line 2084, column 0: (3 occurrences) [help]
<figure class="wp-block-image size-large"><a href="h ...
line 2084, column 0: (3 occurrences) [help]
<figure class="wp-block-image size-large"><a href="h ...
line 2084, column 0: (3 occurrences) [help]
<figure class="wp-block-image size-large"><a href="h ...
line 2084, column 0: (3 occurrences) [help]
<figure class="wp-block-image size-large"><a href="h ...
line 2084, column 0: (3 occurrences) [help]
<figure class="wp-block-image size-large"><a href="h ...
line 2084, column 0: (3 occurrences) [help]
<figure class="wp-block-image size-large"><a href="h ...
line 2084, column 0: (3 occurrences) [help]
<figure class="wp-block-image size-large"><a href="h ...
line 2084, column 0: (3 occurrences) [help]
<figure class="wp-block-image size-large"><a href="h ...
line 2084, column 0: (3 occurrences) [help]
<figure class="wp-block-image size-large"><a href="h ...
line 2084, column 0: (3 occurrences) [help]
<figure class="wp-block-image size-large"><a href="h ...
</channel>
<?xml version="1.0"?>
<rss version="2.0">
<channel>
<title>Planet Ubuntu</title>
<link>http://planet.ubuntu.com/</link>
<language>en</language>
<description>Planet Ubuntu - http://planet.ubuntu.com/</description>
<item>
<title>Colin Watson: Free software activity in May 2025</title>
<guid isPermaLink="false">tag:www.chiark.greenend.org.uk,2025-06-08:/~cjwatson/blog/activity-2025-05.html</guid>
<link>https://www.chiark.greenend.org.uk/~cjwatson/blog/activity-2025-05.html</link>
<description><p>My Debian contributions this month were all
<a href="https://www.freexian.com/about/debian-contributions/">sponsored</a> by
Freexian. Things were a bit quieter than usual, as for the most part I was
sticking to things that seemed urgent for the upcoming trixie release.</p>
<p>You can also support my work directly via
<a href="https://liberapay.com/cjwatson">Liberapay</a> or <a href="https://github.com/sponsors/cjwatson">GitHub
Sponsors</a>.</p>
<h2>OpenSSH</h2>
<p>After my appeal for help <a href="https://www.chiark.greenend.org.uk/~cjwatson/blog/activity-2025-04.html">last month</a> to
debug <a href="https://bugs.debian.org/1103418">intermittent <code>sshd</code> crashes</a>, Michel
Casabona helped me put together an environment where I could reproduce it,
which allowed me to track it down to a <a href="https://bugzilla.mindrot.org/show_bug.cgi?id=3822">root
cause</a> and fix it. (I
also found a <a href="https://bugzilla.mindrot.org/show_bug.cgi?id=3819">misuse of
<code>strlcpy</code></a> affecting at
least glibc-based systems in passing, though I think that was unrelated.)</p>
<p>I worked with Daniel Kahn Gillmor to fix a <a href="https://bugs.debian.org/1103522">regression in <code>ssh-agent</code> socket
handling</a>.</p>
<p>I fixed a <a href="https://bugs.debian.org/1104992">reproducibility bug depending on whether <code>passwd</code> is installed on
the build system</a>, which would have
affected security updates during the lifetime of trixie.</p>
<p>I <a href="https://bugs.debian.org/1105036">backported</a> openssh 1:10.0p1-5 to bookworm-backports.</p>
<p>I issued bookworm and
<a href="https://lists.debian.org/debian-lts-announce/2025/05/msg00008.html">bullseye</a>
updates for <a href="https://bugs.debian.org/1102603"><span class="caps">CVE</span>-2025-32728</a>.</p>
<h2>groff</h2>
<p>I backported a fix for <a href="https://bugs.debian.org/1104609">incorrect output when formatting multiple documents
as <span class="caps">PDF</span>/PostScript at once</a>.</p>
<h2>debmirror</h2>
<p>I added a <a href="https://salsa.debian.org/debian/debmirror/-/commit/c122f7ff32c4ae24a729a6ecf42d15c9ac05eb5c">simple
autopkgtest</a>.</p>
<h2>Python team</h2>
<p>I upgraded these packages to new upstream versions:</p>
<ul>
<li>automat</li>
<li>celery</li>
<li>flufl.i18n</li>
<li>flufl.lock</li>
<li>frozenlist</li>
<li>python-charset-normalizer</li>
<li>python-evalidate (including pointing out an <a href="https://github.com/yaroslaff/evalidate/issues/15">upstream release handling
issue</a>)</li>
<li>python-pythonjsonlogger</li>
<li>python-setproctitle</li>
<li>python-telethon</li>
<li>python-typing-inspection</li>
<li>python-webargs</li>
<li>pyzmq</li>
<li>trove-classifiers (including a <a href="https://github.com/pypa/trove-classifiers/pull/212">small upstream
cleanup</a>)</li>
<li>uncertainties</li>
<li>zope.testrunner</li>
</ul>
<p>In bookworm-backports, I updated these packages:</p>
<ul>
<li>python-django to 3:4.2.21-1 (issuing
<a href="https://backports.debian.org/news/BSA-124_Security_Update_for_python-django/"><span class="caps">BSA</span>-124</a>)</li>
<li>python-django-pgtrigger to 4.14.0-1</li>
</ul>
<p>I fixed problems building these packages reproducibly:</p>
<ul>
<li>celery (<a href="https://github.com/celery/celery/pull/9687">contributed
upstream</a>)</li>
<li>python-setproctitle</li>
<li>uncertainties (<a href="https://github.com/lmfit/uncertainties/pull/312">contributed
upstream</a>, after some discussion)</li>
</ul>
<p>I backported fixes for some security vulnerabilities to unstable (since
we’re in freeze now so it’s not always appropriate to upgrade to new
upstream versions):</p>
<ul>
<li>django-select2: <a href="https://bugs.debian.org/1106747"><span class="caps">CVE</span>-2025-48383</a></li>
<li>python-tornado: <a href="https://bugs.debian.org/1105886"><span class="caps">CVE</span>-2025-47287</a></li>
</ul>
<p>I fixed various other build/test failures:</p>
<ul>
<li><a href="https://salsa.debian.org/python-team/packages/fail2ban/-/merge_requests/17">fail2ban</a>
(also reviewing and merging <a href="https://salsa.debian.org/python-team/packages/fail2ban/-/merge_requests/15">fix sshd 10.0 log
identifier</a>
and <a href="https://salsa.debian.org/python-team/packages/fail2ban/-/merge_requests/16">remove runtime calls to
distutils</a>)</li>
<li><a href="https://bugs.debian.org/1103147">karabo-bridge</a> (<a href="https://github.com/European-XFEL/karabo-bridge-py/pull/71">contributed
upstream</a>)</li>
<li><a href="https://bugs.debian.org/1104837">kegtron-ble</a></li>
<li><a href="https://bugs.debian.org/1091947">python-click-option-group</a> (<span class="caps">NMU</span>)</li>
<li><a href="https://bugs.debian.org/1104508">python-holidays</a></li>
<li><a href="https://bugs.debian.org/1103591">python-mastodon</a></li>
<li><a href="https://bugs.debian.org/1106440">python-mechanize</a> (<a href="https://github.com/python-mechanize/mechanize/pull/102">contributed
upstream</a>)</li>
<li><a href="https://salsa.debian.org/python-team/packages/thermobeacon-ble/-/commit/c1bc246f0a04018483074cbdca1501088165dc07">thermobeacon-ble</a></li>
</ul>
<p>I added non-superficial autopkgtests to these packages:</p>
<ul>
<li><a href="https://bugs.debian.org/1035163">karabo-bridge</a></li>
<li><a href="https://salsa.debian.org/python-team/packages/python-lazy-model/-/compare/debian%2F0.3.0-1...debian%2F0.3.0-2?from_project_id=93488">python-lazy-model</a></li>
</ul>
<p>I packaged <a href="https://bugs.debian.org/1103977">python-django-hashids</a> and
<a href="https://bugs.debian.org/1103880">python-django-pgbulk</a>, needed for new
upstream versions of python-django-pgtrigger.</p>
<p>I
<a href="https://code.launchpad.net/~cjwatson/storm/py314-beta/+merge/485763">ported</a>
storm to Python 3.14.</p>
<h2>Science team</h2>
<p>I fixed a <a href="https://bugs.debian.org/1103232">build failure</a> in apertium-oci-fra.</p></description>
<pubDate>Sun, 08 Jun 2025 00:20:02 +0000</pubDate>
</item>
<item>
<title>Salih Emin: uCareSystem 25.05.06: Because Even Your WSL Deserves a Spa Day!</title>
<guid isPermaLink="false">https://utappia.org/?p=49897</guid>
<link>https://utappia.org/2025/06/06/ucaresystem-25-05-06-because-even-your-wsl-deserves-a-spa-day/</link>
<description><p>Hey everyone,</p>
<p>Get ready to dust off those virtual cobwebs and crack open a cold one (or a digital one, if you’re in a VM) because uCareSystem 25.05.06 has officially landed! And let me tell you, this release is so good, it’s practically a love letter to your Linux system – especially if that system happens to be chilling out in <strong>Windows Subsystem for Linux (WSL)</strong>.</p>
<span id="more-49897"></span>
<p>That’s right, folks, the big news is out: <strong>WSL support for uCareSystem has finally landed!</strong> We know you’ve been asking, we’ve heard your pleas, and we’ve stopped pretending we didn’t see you waving those “Free WSL” signs. </p>
<p>Now, your WSL instances can enjoy the same tender loving care that uCareSystem provides for your “bare metal” Ubuntu/Debian Linux setups. No more feeling left out, little WSLs! You can now join the cool kids at the digital spa.</p>
<p>Here is a video of it:</p>
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
</div></figure>
<p>But wait, there’s more! (Isn’t there always?) We didn’t just stop at making friends with Windows. We also tackled some pesky gremlins that have been lurking in the shadows:</p>
<ul class="wp-block-list">
<li><strong>Apt-key dependency? Gone!</strong> We told it to pack its bags and hit the road. Less dependency drama, more system harmony.</li>
<li>Remember that time your internet check was slower than a sloth on a caffeine crash? We squashed that <strong>“Bug latency curl in internet check phase”</strong> bug. Your internet checks will now be snappier than a startled squirrel.</li>
<li>We fixed that <strong>“Wrong kernel cleanup”</strong> issue. Your kernels are now safe from accidental digital haircuts.</li>
<li>And for those of you who hit snags with Snap in WSL, kernel cleanup (again, because we’re thorough!), and other bits, we’ve applied some much-needed digital duct tape and elbow grease to fix and more.</li>
<li>We even gave our code a good scrub, fixing those annoying <strong>shellcheck warnings</strong>. Because nobody likes a messy codebase, especially not us!</li>
<li>Oh, and the <code>-k</code> option? Yeah, that’s gone too. We decided it was useless so we had to retire it to a nice, quiet digital farm upstate.</li>
<li>Finally, for all you newcomers and memory-challenged veterans, we’ve added <strong>install and uninstall instructions to <a href="https://github.com/Utappia/uCareSystem/blob/master/README.md">the README</a></strong>. Because sometimes, even we forget how to put things together after we’ve taken them apart.</li>
</ul>
<p>So, what are you waiting for? Head over to <a href="https://utappia.org" rel="noreferrer noopener" target="_blank">utappia.org</a> (or wherever you get your uCareSystem goodness) and give your system the pampering it deserves with uCareSystem 25.05.06. Your WSL instance will thank you, probably with a digital high-five.</p>
<p>Download the latest release and give it a spin. As always, feedback is welcome.</p>
<h3 class="wp-block-heading">Acknowledgements</h3>
<p>Thanks to the following users for their support:</p>
<ul class="wp-block-list">
<li><strong>P. Loughman</strong> – Thanks for your continued support</li>
<li><strong>D. Emge</strong> – Thanks for your continued support</li>
<li><strong>W. Schreinemachers</strong> – Thanks for your continued support</li>
<li><strong>W. Schwartz</strong></li>
<li><strong>D. e Swarthout</strong></li>
<li><strong>D. Luchini</strong></li>
<li><strong>M. Stanley</strong></li>
<li><strong>N. Evangelista</strong></li>
</ul>
<p>Your involvement helps keep this project alive, evolving, and aligned with real-world needs. Thank you.</p>
<p>Happy maintaining!</p>
<h2 class="wp-block-heading">Where can I download uCareSystem ?</h2>
<p>As always, I want to express my gratitude for your support over the past 15 years. I have received countless messages from inside and outside Greece about how useful they found the application. I hope you find the new version useful as well.</p>
<p>If you’ve found uCareSystem to be valuable and it has saved you time, consider showing your appreciation with a donation. You can contribute via PayPal or Debit/Credit Card by clicking on the banner.</p>
<table>
<thead>
<tr>
<th>Pay what you want</th>
<th>Maybe next time</th>
</tr>
</thead>
<tbody>
<tr>
<td>Click the donate button and enter the amount you want to donate. Then you will be navigated to the page with the latest version to download the installer</td>
<td>If you don’t want to Donate this time, just click the download icon to be navigated to the page with the latest version to download the installer</td>
</tr>
<tr>
<td><a href="https://www.paypal.com/donate/?hosted_button_id=SATQ6Y9S3UCSG" rel="attachment wp-att-2601"><img alt="btn_donateCC_LG" class="wp-image-2601 size-full aligncenter" height="47" src="http://utappiablog.wordpress.com/wp-content/uploads/2016/03/btn_donatecc_lg1.gif" width="147" /></a></td>
<td><a href="https://github.com/Utappia/uCareSystem/releases/latest" rel="attachment wp-att-2593"><img alt="ucare-system-download" class="size-full wp-image-2593 aligncenter" height="151" src="http://utappiablog.wordpress.com/wp-content/uploads/2016/03/ucare-system-download.png" width="151" /></a></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
</tbody>
</table>
<p>Once installed, the updates for new versions will be installed along with your regular system updates.</p>
<p>The post <a href="https://utappia.org/2025/06/06/ucaresystem-25-05-06-because-even-your-wsl-deserves-a-spa-day/">uCareSystem 25.05.06: Because Even Your WSL Deserves a Spa Day!</a> appeared first on <a href="https://utappia.org">Utappia</a>.</p></description>
<pubDate>Fri, 06 Jun 2025 22:59:05 +0000</pubDate>
</item>
<item>
<title>Ubuntu Blog: What is CMMC compliance?</title>
<guid isPermaLink="true">https://ubuntu.com//blog/what-is-cmmc-compliance</guid>
<link>https://ubuntu.com//blog/what-is-cmmc-compliance</link>
<description><p>The Cybersecurity Maturity Model Certification, or CMMC for short, is a security framework for protecting Controlled Unclassified Information (CUI) in non-federal systems and organizations. The CMMC compliance requirements map to the set of controls laid out in the NIST SP 800-171 Rev 2 and NIST SP 800-172 families.</p>
<p>CMMC version 2.0 came into effect on December 26, 2023, and is designed to ensure adherence to rigorous cybersecurity policies and practices within the public sector and amongst wider industry partners.</p>
<p>Whilst many of the controls relate to how organizations conduct their IT operations, there are several specific technology requirements, and Ubuntu Pro includes features which meet these requirements head on.</p>
<figure class="wp-block-image size-full is-resized"><img alt="" height="627" src="https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_1200,h_627/https://ubuntu.com/wp-content/uploads/ffbe/Untitled-design-30.png" width="1200" /></figure>
<h2 class="wp-block-heading">What are the CMMC maturity levels?</h2>
<p>CMMC has 3 levels, designed to meet increasing levels of security scrutiny:</p>
<ol>
<li>Safeguarding Federal Contract Information (FCI), with an annual self-assessment.</li>
<li>Protection of Controlled Unclassified Information (CUI), with a triennial third-party assessment for critical national security information, and annual self-assessment for other cases.</li>
<li>Enhanced Protection of Controlled Unclassified Information, with triennial government-led assessments.</li>
</ol>
<p>Most independent contractors and industry partners will use level 2, and perform an annual self-assessment of their security posture against the program requirements.</p>
<h2 class="wp-block-heading">When will CMMC compliance become a hard requirement?</h2>
<p>While the 2.0 standard has been live since December 2023, CMMC will become a contractual requirement after 3 years, which falls in 2026. However, it takes time to work through the controls and achieve the security requirements, and organizations may take anywhere from months to years to gain this level of maturity, depending on their size and agility. Undoubtedly, the best course of action is to start planning now in order to remain eligible for contracts and to keep winning business.</p>
<h2 class="wp-block-heading">How does CMMC compare to NIST SP 800-171? </h2>
<p>CMMC is based on the NIST SP 800-171 security controls framework for handling Controlled Unclassified Information – similar to FedRAMP – and so anyone familiar with these publications will feel comfortable with the CMMC requirements. Whilst NIST SP 800-171 provides a wide range of security controls, the exact implementation can be left to the user’s discretion; CMMC gives exact requirements and provides a framework for self-assessment and auditing.</p>
<h2 class="wp-block-heading">5 steps to CMMC compliance</h2>
<p>In order to become CMMC compliant, you should be systematic in your approach. Here’s how to proceed:</p>
<ol>
<li>Determine your CMMC maturity level requirements: this depends on the type of information that you’ll be handling. Level 1 is just for federal contracts, whilst Level 2 – the most widely used level – is for CUI. Level 3 is for critical infrastructure.</li>
<li>Determine your scope and assets: – it’s very important to work out the boundary of the systems that will handle the sensitive data, and keep track of which IT assets are included in this.</li>
<li>Perform a gap analysis: go through the CMMC control framework and check which controls you currently meet, and which ones need attention; either for existing systems or for future designs.</li>
<li>Choose the right technology platforms: such as Ubuntu Pro, a subscription for open source security that patches critical vulnerabilities within 24 hours.</li>
<li>Complete a self-assessment.</li>
</ol>
<figure class="wp-block-image size-full is-resized"><a href="https://ubuntu.com/engage/achieve-cmmc-with-ubuntu"><img alt="" height="400" src="https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_1200,h_400/https://ubuntu.com/wp-content/uploads/1b93/cmmc-compliance.png" width="1200" /></a></figure>
<h2 class="wp-block-heading">How Canonical can support your journey towards CMMC</h2>
<p><strong>Patching security vulnerabilities</strong></p>
<p>Ubuntu Pro supports the CMMC requirement to remediate software vulnerabilities in a timely manner. Since starting out 20 years ago, Canonical has typically released patches for critical vulnerabilities within 24 hours. We provide 12 years of <a href="https://ubuntu.com/security/cves">security patching</a> for all the software applications and infrastructure components within the Ubuntu ecosystem. </p>
<p><strong>FIPS-certified crypto modules</strong></p>
<p>Ubuntu Pro provides FIPS 140-2 and <a href="https://ubuntu.com/blog/fips-140-3-for-ubuntu-22-04lts">FIPS 140-3</a> certified cryptographic modules that you can deploy with a single command. These certified modules replace the standard cryptographic libraries which ship with Ubuntu by default, making the system FIPS 140 compliant, and allowing existing applications to make use of FIPS-approved cryptographic algorithms and ciphers without further certification or modification.</p>
<p><strong>System hardening</strong></p>
<p><a href="https://ubuntu.com/security/disa-stig">DISA-STIG</a> is a system hardening guide that describes how to configure an Ubuntu system to be maximally secure, by locking it down and restricting unnecessary privileges. The STIG for Ubuntu lists several hundred individual configuration steps to turn a generic Ubuntu installation into a fully secure environment. System hardening is an important CMMC requirement. </p>
<p>You can simplify STIG hardening with the Ubuntu Security Guide (USG): the USG tool enables automated auditing and remediation of the individual configuration steps in order to comply with the STIG benchmark, and allows you to customize the hardening profile to meet individual deployment needs.</p>
<h2 class="wp-block-heading">Overview </h2>
<p>Canonical is a software distributor rather than a service provider, and as such we are not CMMC certified ourselves, but through Ubuntu Pro we provide the tools that enable our customers to meet these specific technology requirements within the baseline controls. </p>
<p>As such, Ubuntu Pro provides an easy pathway to CMMC compliance. It delivers CVE patching for Ubuntu OS and Applications covering 36,000 packages, along with automated, unattended, and restartless updates, and the best tools to secure and manage your Ubuntu infrastructure, developed by the publisher of Ubuntu. Learn more about Ubuntu Pro on our <a href="https://ubuntu.com/pro">explanatory web page.</a></p></description>
<pubDate>Fri, 06 Jun 2025 13:27:14 +0000</pubDate>
</item>
<item>
<title>Launchpad News: Phasing out Bazaar code hosting</title>
<guid isPermaLink="false">https://blog.launchpad.net/?p=4464</guid>
<link>https://blog.launchpad.net/general/phasing-out-bazaar-code-hosting</link>
<description><h2>What is Bazaar code hosting?</h2>
<p>Bazaar is a distributed revision control system, originally developed by Canonical. It provides similar functionality compared to the now dominant Git.</p>
<p>Bazaar code hosting is an offering from Launchpad to both provide a Bazaar backend for hosting code, but also a web frontend for browsing the code. The frontend is provided by the Loggerhead application on Launchpad.</p>
<h2><a href="https://discourse.ubuntu.com/t/phasing-out-bazaar-code-hosting/62189#p-160870-sunsetting-bazaar"></a>Sunsetting Bazaar</h2>
<p>Bazaar passed its peak a decade ago. <a href="https://launchpad.net/brz">Breezy</a> is a fork of Bazaar that has kept a form of Bazaar alive, but the last release of Bazaar was in 2016. Since then the impact has declined, and there are modern replacements like Git.</p>
<p>Just keeping Bazaar running requires a non-trivial amount of development, operations time, and infrastructure resources – all of which could be better used elsewhere.</p>
<p>Launchpad will now begin the process of discontinuing support for Bazaar.</p>
<h2><a href="https://discourse.ubuntu.com/t/phasing-out-bazaar-code-hosting/62189#p-160870-timelines"></a>Timelines</h2>
<p>We are aware that the migration of the repositories and updating workflows will take some time, that is why we planned sunsetting in two phases.</p>
<h3><a href="https://discourse.ubuntu.com/t/phasing-out-bazaar-code-hosting/62189#p-160870-phase-1"></a>Phase 1</h3>
<p>Loggerhead, the web frontend, which is used to browse the code in a web browser, will be shut down imminently. Analyzing access logs showed that there are hardly any more requests from legit users, but almost the entire traffic comes from scrapers and other abusers. Sunsetting Loggerhead will not affect the ability to pull, push and merge changes.</p>
<h3><a href="https://discourse.ubuntu.com/t/phasing-out-bazaar-code-hosting/62189#p-160870-phase-2"></a>Phase 2</h3>
<p>From September 1st, 2025, we do not intend to have Bazaar, the code hosting backend, any more. Users need to migrate all repositories from Bazaar to Git between now and this deadline.</p>
<h2><a href="https://discourse.ubuntu.com/t/phasing-out-bazaar-code-hosting/62189#p-160870-migration-paths"></a>Migration paths</h2>
<p>The following blog post describes all the necessary steps on how to convert a Bazaar repository hosted on Launchpad to Git.</p>
<h3><a href="https://jugmac00.github.io/blog/migrate-a-repository-from-bazaar-to-git/" rel="noreferrer noopener" target="_blank">Migrate a Repository From Bazaar to Git</a></h3>
<h2><a href="https://discourse.ubuntu.com/t/phasing-out-bazaar-code-hosting/62189#p-160870-call-for-action"></a>Call for action</h2>
<p>Our users are extremely important to us. Ubuntu, for instance, has a long history of Bazaar usage, and we will need to work with the Ubuntu Engineering team to find ways to move forward to remove the reliance on the integration with Bazaar for the development of Ubuntu. If you are also using Bazaar and you have a special use case, or you do not see a clear way forward, please reach out to us to discuss your use case and how we can help you.</p>
<p><strong>You can reach us in #launchpad:<a href="http://ubuntu.com/">ubuntu.com</a> on Matrix, or submit a <a href="https://answers.launchpad.net/launchpad">question</a> or send us an e-mail via <a href="mailto:feedback@launchpad.net">feedback@launchpad.net</a>.</strong></p>
<p>It is also recommended to join the ongoing discussion at <a href="https://discourse.ubuntu.com/t/phasing-out-bazaar-code-hosting/62189">https://discourse.ubuntu.com/t/phasing-out-bazaar-code-hosting/62189</a>.</p></description>
<pubDate>Fri, 06 Jun 2025 09:26:22 +0000</pubDate>
</item>
<item>
<title>Ubuntu Blog: What if your container images were security-maintained at the source?</title>
<guid isPermaLink="true">https://ubuntu.com//blog/what-if-your-container-images-were-security-maintained-at-the-source</guid>
<link>https://ubuntu.com//blog/what-if-your-container-images-were-security-maintained-at-the-source</link>
<description><p>Software supply chain security has become a top concern for developers, DevOps engineers, and IT leaders. High-profile breaches and dependency compromises have shown that open source components can introduce risk if not properly vetted and maintained. Although containerization has become commonplace in contemporary development and deployment, it can have drawbacks in terms of reproducibility and security. </p>
<p>There is a dire need for container builds that are not only simple to deploy, but also safe, repeatable, and maintained long-term against new threats – and that’s why Canonical is introducing the Container Build Service.</p>
<h2 class="wp-block-heading"><strong>The open source security challenge</strong></h2>
<p>The use of open source software (OSS) is becoming more and more prevalent in enterprise environments. With <a href="https://openssf.org/blog/2025/01/23/predictions-for-open-source-security-in-2025-ai-state-actors-and-supply-chains/">analyses</a> showing that it makes up around 70% of all software in use, OSS is no longer considered a supplementary element but rather the foundation of modern applications. What’s even more interesting is that<a href="https://openssf.org/blog/2025/01/23/predictions-for-open-source-security-in-2025-ai-state-actors-and-supply-chains/"> 97% of commercial codebases</a> are reported to have integrated some OSS components, highlighting how fundamental it has truly become. However, we’re also seeing that with this growing use of OSS, open source vulnerabilities are frequently discovered. <a href="https://www.csoonline.com/article/574607/at-least-one-open-source-vulnerability-found-in-84-of-code-bases-report.html">Research </a>indicates that 84% of codebases contain at least one known open source vulnerability, with almost half of those vulnerabilities being categorized as high-severity. <a href="https://www.blackduck.com/resources/analyst-reports/open-source-security-risk-analysis.html">Black Duck’s 2025 Open Source Security and Risk Analysis (OSSRA)</a> report showed that this risk has been increased due to by the sheer number of open source files used by applications -, which have tripled in just four years, this number has nearly tripled, from an average of 5,300 in 2020 to over 16,000 in 2024. This increased attack surface is directly correlated with this rise. </p>
<p>According to a <a href="https://ubuntu.com/engage/2025-state-of-software-supply-chain?utm_source=linkedin&amp;utm_medium=newsletter&amp;utm_campaign=701N100000UbRw2IAF">report from Canonical and IDC</a>, organizations are adopting OSS primarily to reduce costs (44%), accelerate development (36%), and increase reliability (31%). Despite nine out of ten organizations expressing a preference to source packages from trusted OS repositories like those in their OS, most still pull directly from upstream registries. This means that the responsibility for patching falls heavily on IT teams. The report found that seven in ten teams dedicate over six hours per week (almost a full working day) to sourcing and applying security updates., and tThe same proportion mandates that high and critical-severity vulnerabilities arebe patched within 24 hours, yet only 41% feel confident they can meet that SLA. What’s also interesting is that more than half of organizations do not automatically upgrade their in-production systems or applications to the newest versions, leaving them exposed to known vulnerabilities.</p>
<p>Supply chain attacks are also becoming more frequent. A study conducted by <a href="https://www.sonatype.com/state-of-the-software-supply-chain/2024/10-year-look#:~:text=Sadly%2C%20seven%20years%20later%2C%20in,defenseless%20against%20these%20growing%20risks">Sonatype </a>displayed how the number of software supply chain attacks doubled in 2024 alone, and according to a study done by <a href="https://blogs.blackberry.com/en/2024/06/supply-chain-cybersecurity-survey-research#:~:text=What%20is%20the%20state%20of,in%20securing%20software%20supply%20chains">Blackberry</a> over 75% of organizations experienced a supply chain-related attack in the previous year. The Sonatype study also highlighted how malicious packages became highly prevalent in the last 12 months, with more than 500,000 malicious packages being found in public repositories – a 156% increase from the previous year. This highlights how attackers target upstream open source in order to compromise downstream users. </p>
<p>In light of these trends, development teams are seeking ways to ensure the integrity of their container images. Practices like reproducible builds and signed images are gaining popularity as defenses against tampering, while minimal images promise fewer vulnerabilities. However, implementing these measures requires significant effort and expertise. This is where Canonical’s latest offering comes in.</p>
<h2 class="wp-block-heading"><strong>Canonical’s Container Build Service: reproducible, hardened and security-maintained images</strong></h2>
<p>Canonical has launched a new <a href="https://ubuntu.com/containers/container-build-service">Container Build Service</a> designed to meet the above challenges head-on. In essence, through this service, Canonical’s engineers will custom-build container images for any open source project or stack, with security and longevity as primary features. Whether it’s an open source application or a custom base image containing all the dependencies for your app, Canonical will containerize it according to your specifications and harden the image for production. The resulting container image is delivered in the Open Container Initiative (OCI) format and comes with up to 12 years of security maintenance.</p>
<h3 class="wp-block-heading">The entire container supported for up to 12 years</h3>
<p>Every package and library in the container – even those not originally in Ubuntu’s repositories – is covered under Canonical’s security maintenance commitment. We have a track record of patching critical vulnerabilities within an average of 24 hours on average, ensuring quick remediation of emerging threats. Unlike standard base images that cover only OS components, Canonical’s service will include all required upstream open source components in the container build. In other words, your entire open source dependency tree is kept safe – even if some parts of it were not packaged in Ubuntu before. This means teams can confidently use the latest frameworks, AI/ML libraries, or niche utilities, knowing Canonical will extend Ubuntu’s famous long-term support to those pieces as well.</p>
<p>Each container image build comes with a guaranteed security updates period of up to 12 years. This far outlasts the typical support window for community container images. It ensures that organizations in regulated or long-lived environments can run containers in production for a decade or more with ongoing patching. </p>
<h3 class="wp-block-heading">Truly portable</h3>
<p>The hardened images are designed to run on any popular Linux host or Kubernetes platform. Whether your infrastructure is Ubuntu, RHEL, VMware, or a public cloud Kubernetes service, Canonical will support these images on that platform. This broad compatibility means you don’t have to be running Ubuntu on the host to benefit: the container images are truly portable and backed by Canonical across environments.</p>
<h3 class="wp-block-heading">Long-term reproducibility and automation</h3>
<p>Canonical’s build pipeline emphasizes reproducibility and automation. Once your container image is designed and built, an automated pipeline takes over to continuously rebuild and update the image with the latest security patches. This ensures the image remains up to date over time without manual intervention, and it provides a reproducible build process (verifiable by Canonical) to guarantee that the image you run in production exactly matches the source and binaries that were vetted.</p>
<p>In short, the new Container Build Service delivers secure, reproducible, and highly dependable container images, tailor-made for your applications by the experts behind Ubuntu. It effectively offloads the heavy lifting of container security maintenance to Canonical, so your teams can focus on writing code and deploying features and not constantly chasing the next vulnerability in your container image.</p>
<h2 class="wp-block-heading"><strong>Minimal footprint, optimal performance</strong></h2>
<p>A standout aspect of Canonical’s approach is the use of <a href="https://ubuntu.com/containers/chiseled">chiseled Ubuntu container images</a>. Chiseled images are Canonical’s take on the “distroless” container concept – ultra-minimal images that include only the essential runtime components needed by your application and nothing more. By stripping away unnecessary packages, utilities, and metadata, chiseled images dramatically reduce image size and attack surface.</p>
<p>What exactly are chiseled images? They are built using an open source tool called Chisel which effectively sculpts down an application to its bare essentials. A chiseled Ubuntu container image still originates from the Ubuntu base you know, but with all surplus components carved away.</p>
<p>Chiseled images include only the files and libraries strictly required to run your application, excluding surplus distro metadata, shells, package managers, and other tools not needed in production. Because of this minimalist approach, chiseled images are significantly smaller than typical Ubuntu images. This not only means less storage and faster transfer, but also inherently fewer places for vulnerabilities to hide. In a <a href="https://azure.github.io/aca-dotnet-workshop/aca/12-optimize-containers/">.NET container optimization exercise done by the ACA team at Microsoft</a>, chiseling reduced the Backend API image size from 226 MB to 119 MB, a 56.6% reduction, and slashed CVEs from 25 to just 2 meaning a 92% decrease. Packages also dropped from 451 to 328, offering far fewer potential vulnerabilities to manage. </p>
<p>With less bloat, chiseled containers start up faster and use less memory. They have only the essentials, so pulling images and launching containers is quicker. For example, chiseling the .NET runtime images trimmed about 100 MB from the official image and produced a runtime base as small as 6 MB (compressed) for self-contained apps. Such a tiny footprint translates to faster network transfers and lower memory overhead at scale.</p>
<p>By using chiseled Ubuntu images in its container builds, Canonical ensures that each container is as small and locked down as possible, while still being based on the world’s most popular Linux distribution for developers. It’s a combination that delivers strong security out of the box. And because these images are built on Ubuntu, they inherit Ubuntu’s long-term support policies. Our container images align with Ubuntu LTS release cycles and receive the same five years of free security updates, extended to ten years with Ubuntu Pro, for the core components. In the new build service, that support can stretch to 12 years for enterprise customers, keeping even the minimal runtime components patched against CVEs over the long term.</p>
<h2 class="wp-block-heading"><strong>Built on Ubuntu Pro </strong></h2>
<p>Canonical coined the term “Long Term Support (LTS)” back in 2006 with Ubuntu 6.06 LTS, pioneering the idea of stable OS releases with 5 years of guaranteed updates. Since then, Ubuntu LTS has become a byword for reliability in enterprises. In 2019, Canonical introduced Ubuntu Pro, which expanded on this foundation by providing comprehensive security maintenance not just for Ubuntu’s core system, but for thousands of community (universe) packages as well, along with enterprise features like FIPS 140 certified cryptography. Today, Ubuntu Pro is a very comprehensive open source security offering, covering over 36,000 packages with 10-year maintenance. </p>
<p>This background matters because the new Container Build Service is essentially Ubuntu Pro for your container images. Canonical is extending its expertise in automated patching, vulnerability remediation, and long-term maintenance to the full stack inside your containers. By having Canonical design and maintain your container image, you’re effectively gaining a dedicated team to watch over your software supply chain. Every upstream project included in your container is continually monitored for security issues. If a new vulnerability emerges in any layer of your stack – whether it’s in the OS, a shared library, or an obscure Python package – Canonical will proactively apply the patch and issue an updated image through the automated pipeline. All of this happens largely behind the scenes, and you receive notifications or can track updates as needed for compliance. It’s a level of diligence that would be costly and difficult to replicate in-house.</p>
<p>Furthermore, Canonical’s involvement provides a chain of custody and trust that is hard to achieve with self-built images. The containers are built and signed by Canonical using the same infrastructure that builds official Ubuntu releases, ensuring integrity. Canonical and its partners have even established a zero-distance supply chain for critical assets – meaning there’s tight integration and verification from source code to the final container artefact. This approach greatly reduces the risk of tampering or hidden malware in the supply chain.</p>
<p>Because Ubuntu is so widely trusted, Canonical’s container images come pre-approved for use in highly regulated environments. Notably, hardened Ubuntu container images are already certified and available in the U.S. Department of Defense’s “Iron Bank” repository, which is a collection of hardened containers for government use. By leveraging Canonical’s service, organizations inherit this level of credibility and compliance. It’s easier to meet standards like FedRAMP, DISA-STIG, or the upcoming<a href="https://canonical.com/solutions/open-source-security/cyber-resilience-act"> EU Cyber Resilience Act</a> when your base images and components are backed by Ubuntu Pro’s security regime and provide auditable evidence of maintenance.</p>
<p>In summary, the Container Build Service stands on the shoulders of Ubuntu Pro and Canonical’s long experience in open source security. Your custom container isn’t just another bespoke image, it becomes an enterprise-grade artifact, with clear maintenance commitments and security SLAs that auditors and IT governance teams will appreciate.</p>
<p>Canonical’s container build service aims to have every layer of the container stack – from OS to app dependencies – maintained. With optimized chiseled sizes, a decade of updates, and Canonical’s support, these images are crafted for production. </p>
<p><a href="https://ubuntu.com/containers/container-build-service">Learn more about Canonical’s Container build Service &gt;</a></p>
<p><a href="https://ubuntu.com/containers#get-in-touch">Get in touch to discuss securing your container stack today &gt; </a></p></description>
<pubDate>Thu, 05 Jun 2025 13:00:00 +0000</pubDate>
</item>
<item>
<title>St&eacute;phane Graber: Announcing Incus 6.13</title>
<guid isPermaLink="false">https://stgraber.org/?p=1739</guid>
<link>https://stgraber.org/2025/06/05/announcing-incus-6-13/</link>
<description><p>The Incus team is pleased to announce the release of Incus 6.13!<br /><br />This is a VERY busy release with a lot of new features of all sizes<br />and for all kinds of different users, so there should be something for<br />everyone!</p>
<figure class="wp-block-image size-full"><a href="https://linuxcontainers.org/incus/try-it/"><img alt="" class="wp-image-1740" height="313" src="https://stgraber.org/wp-content/uploads/2025/06/image.png" width="874" /></a></figure>
<p>The highlights for this release are:</p>
<ul class="wp-block-list">
<li>Windows agent support</li>
<li>Improvements to incus-migrate</li>
<li>SFTP on custom volumes</li>
<li>Configurable instance external IP address on OVN networks</li>
<li>Ability to pin gateway MAC address on OVN networks</li>
<li>Clock handling in virtual machines</li>
<li>New get-client-certificate and get-client-token commands</li>
<li>DHCPv6 support for OCI</li>
<li>Network host tables configuration for routed NICs</li>
<li>Support for split image publishing</li>
<li>Preseed of certificates</li>
<li>Configuration of list format in the CLI</li>
<li>Add CLI aliases for create/add and delete/remove/rm</li>
<li>OS metrics are now included in Incus metrics when running on Incus OS</li>
<li>Converted more database logic to generated code</li>
<li>Converted more CLI list functions to using server side filtering</li>
<li>Converted more documentation to be generated from the code</li>
</ul>
<p>The full announcement and changelog can be <a href="https://discuss.linuxcontainers.org/t/incus-6-13-has-been-released/23899" rel="noreferrer noopener" target="_blank">found here</a>.<br />And for those who prefer videos, here’s the release overview video:</p>
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
</div></figure>
<p>You can take the latest release of Incus up for a spin through our online demo service at: <a href="https://linuxcontainers.org/incus/try-it/" rel="noreferrer noopener" target="_blank">https://linuxcontainers.org/incus/try-it/</a></p>
<p>And as always, my company is offering commercial support on Incus, ranging from by-the-hour support contracts to one-off services on things like initial migration from LXD, review of your deployment to squeeze the most out of Incus or even feature sponsorship. You’ll find all details of that here: <a href="https://zabbly.com/incus">https://zabbly.com/incus</a></p>
<p>Donations towards my work on this and other open source projects is also always appreciated, you can find me on <a href="https://github.com/sponsors/stgraber">Github Sponsors</a>, <a href="https://patreon.com/stgraber">Patreon</a> and <a href="https://ko-fi.com/stgraber">Ko-fi</a>.</p>
<p>Enjoy!</p>
<p></p></description>
<pubDate>Thu, 05 Jun 2025 05:07:55 +0000</pubDate>
</item>
<item>
<title>Podcast Ubuntu Portugal: E350 a Senhora Dos Anéis</title>
<guid isPermaLink="false">https://hub.podcastubuntuportugal.org/s/MYkEab99dWM6zpH/download/e350.mp3</guid>
<link>https://podcastubuntuportugal.org/e350/</link>
<description><p>De regresso triunfal do Oppidum Sena, onde apanharam uma onda de calor e uma barrigada de cabrito, queijo e vinho, os nossos heróis trazem novidades da Wikicon Portugal 2025 e contam-nos as suas aventuras tecnológicas, que incluem despir um Cervantes e apanhar felinos chamados Felicity em sítios estranhos da Internet. Para recebê-los esteve presente a Princesa Leia, a.k.a., Joana Simões, a.k.a. A Senhora dos Anéis, regressada de uma gloriosa missão em Tóquio e de partida para o México - a conversa fará tremer a terra debaixo dos vossos pés e os satélites acima das vossas cabeças!</p>
<p>Já sabem: oiçam, subscrevam e partilhem!</p>
<ul>
<li>BQ Cervantes Touch Light: <a href="https://youtu.be/OO33OnIZjmg">https://youtu.be/OO33OnIZjmg</a></li>
<li>Arqueologia BQ: <a href="https://web.archive.org/web/20130807115903/http://www.bqreaders.com/productos/cervantes-touch-light.html">https://web.archive.org/web/20130807115903/http://www.bqreaders.com/productos/cervantes-touch-light.html</a></li>
<li>Um Cervantes todo nu: <a href="https://youtu.be/TuR9sY94Nq8">https://youtu.be/TuR9sY94Nq8</a></li>
<li>Colmi R02 ring: <a href="https://www.colmi.info/products/colmi-r02-smart-ring">https://www.colmi.info/products/colmi-r02-smart-ring</a>
<ul>
<li><a href="https://github.com/doublebyte1/calmi/tree/master?tab=readme-ov-file">https://github.com/doublebyte1/calmi/tree/master?tab=readme-ov-file</a></li>
<li><a href="https://github.com/tahnok/colmi_r02_client">https://github.com/tahnok/colmi_r02_client</a></li>
</ul>
</li>
<li>PC Componentes / Felicity in the wild: <a href="https://youtu.be/psbRzO5Wb4U?t=580">https://youtu.be/psbRzO5Wb4U?t=580</a></li>
<li>Impulse Poetry Night, 4 Junho: <a href="https://noc.social/@doublebyte/114620767468634362">https://noc.social/@doublebyte/114620767468634362</a></li>
<li>FOSS4G Europe 2025: <a href="https://2025.europe.foss4g.org/">https://2025.europe.foss4g.org/</a></li>
<li>Tokyo Code Sprint: <a href="https://noc.social/@doublebyte/114559916913502591">https://noc.social/@doublebyte/114559916913502591</a></li>
<li>Jovem! Desenha uma mascote e ganha prémios! Inscreve-te! Participa! <a href="https://digitalfreedoms.org/en/sfd/blog/sfd-mascot-huion-challenge-2025">https://digitalfreedoms.org/en/sfd/blog/sfd-mascot-huion-challenge-2025</a></li>
<li>LCD Porto – Laboratório de Criação Digital: <a href="https://lcdporto.org">https://lcdporto.org</a></li>
<li>WikiCon Portugal 2025, Seia, 30/05-01/06: <a href="https://pt.wikimedia.org/wiki/WikiCon_Portugal_2025/Programa">https://pt.wikimedia.org/wiki/WikiCon_Portugal_2025/Programa</a></li>
<li>Ubucon Europe 2025, Málaga, 20-21 de Junho (Open South Code): <a href="https://discourse.ubuntu.com/t/ubucon-europe-opensouthcode-2025/57060">https://discourse.ubuntu.com/t/ubucon-europe-opensouthcode-2025/57060</a></li>
<li>Festa do Software Livre 2025, Porto, 3 a 5 de Outubro: <a href="https://festa2025.softwarelivre.eu/pt/">https://festa2025.softwarelivre.eu/pt/</a></li>
<li>Ubuntu Summit 2025, Londres, 23-24 de Outubro: <a href="https://ubuntu.com/blog/ubuntu-summit-25-10-is-coming-to-your-circle-of-friends-from-london">https://ubuntu.com/blog/ubuntu-summit-25-10-is-coming-to-your-circle-of-friends-from-london</a></li>
<li>LoCo PT: <a href="https://loco.ubuntu.com/teams/ubuntu-pt/">https://loco.ubuntu.com/teams/ubuntu-pt/</a></li>
<li>Mastodon: <a href="https://masto.pt/@pup">https://masto.pt/@pup</a></li>
<li>Youtube: <a href="https://youtube.com/PodcastUbuntuPortugal">https://youtube.com/PodcastUbuntuPortugal</a></li>
</ul>
<h3 id="atribuição-e-licenças">Atribuição e licenças</h3>
<p>Este episódio foi produzido por Diogo Constantino, Miguel e Tiago Carrondo e editado pelo <a href="https://senhorpodcast.pt/">Senhor Podcast</a>.
O website é produzido por Tiago Carrondo e o <a href="https://gitlab.com/podcastubuntuportugal/website">código aberto</a> está licenciado nos termos da <a href="https://gitlab.com/podcastubuntuportugal/website/main/LICENSE">Licença MIT</a>. (<a href="https://creativecommons.org/licenses/by/4.0/)">https://creativecommons.org/licenses/by/4.0/)</a>. A música do genérico é: “Won’t see it comin’ (Feat Aequality &amp; N’sorte d’autruche)”, por Alpha Hydrae e está licenciada nos termos da <a href="https://creativecommons.org/publicdomain/zero/1.0/">CC0 1.0 Universal License</a>.
Este episódio e a imagem utilizada estão licenciados nos termos da licença: <a href="https://creativecommons.org/licenses/by-nc-nd/4.0/">Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0)</a>, <a href="https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode">cujo texto integral pode ser lido aqui</a>. Estamos abertos a licenciar para permitir outros tipos de utilização, <a href="https://podcastubuntuportugal.org/contactos">contactem-nos</a> para validação e autorização.
A arte de episódio foi criada por encomenda pela Shizamura - artista, ilustradora e autora de BD. Podem ficar a conhecer melhor a <a href="https://ciberlandia.pt/@shizamura">Shizamura na Ciberlândia</a> e no <a href="https://sarilho.net/">seu sítio web</a>.</p></description>
<pubDate>Thu, 05 Jun 2025 00:00:00 +0000</pubDate>
<enclosure url="https://hub.podcastubuntuportugal.org/s/MYkEab99dWM6zpH/download/e350.mp3" length="30742777" type="audio/mpeg"/>
</item>
<item>
<title>Faizul "Piju" 9M2PJU: Building a Plex Media Server with Raspberry Pi</title>
<guid isPermaLink="false">https://hamradio.my/?p=7464</guid>
<link>https://hamradio.my/2025/06/building-a-plex-media-server-with-raspberry-pi/</link>
<description><p></p>
<p>If you’re looking for a low-power, always-on solution for streaming your personal media library, the <strong>Raspberry Pi</strong> makes a great Plex server. It’s compact, quiet, affordable, and perfect for handling basic media streaming—especially for home use.</p>
<p>In this post, I’ll guide you through setting up <strong>Plex Media Server</strong> on a <strong>Raspberry Pi</strong>, using Raspberry Pi OS (Lite or Full) or Debian-based distros like Ubuntu Server.</p>
<hr class="wp-block-separator has-alpha-channel-opacity" />
<h3 class="wp-block-heading" id="h-what-you-ll-need"><img alt="🧰" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f9f0.png" style="height: 1em;" /> What You’ll Need</h3>
<ul class="wp-block-list">
<li>Raspberry Pi 4 or 5 (at least 2GB RAM, 4GB+ recommended)</li>
<li>microSD card (32GB+), or SSD via USB 3.0</li>
<li>External storage for media (USB HDD/SSD or NAS)</li>
<li>Ethernet or Wi-Fi connection</li>
<li>Raspberry Pi OS (Lite or Desktop)</li>
<li>A Plex account (free is enough)</li>
</ul>
<hr class="wp-block-separator has-alpha-channel-opacity" />
<h3 class="wp-block-heading" id="h-step-1-prepare-the-raspberry-pi"><img alt="⚙" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/2699.png" style="height: 1em;" /> Step 1: Prepare the Raspberry Pi</h3>
<ol class="wp-block-list">
<li>Flash Raspberry Pi OS using <a href="https://www.raspberrypi.com/software/">Raspberry Pi Imager</a></li>
<li>Enable SSH and set hostname (optional)</li>
<li>Boot the Pi, log in, and update:</li>
</ol>
<pre class="wp-block-code"><code>sudo apt update &amp;&amp; sudo apt upgrade -y
</code></pre>
<hr class="wp-block-separator has-alpha-channel-opacity" />
<h3 class="wp-block-heading" id="h-step-2-install-plex-media-server"><img alt="📦" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f4e6.png" style="height: 1em;" /> Step 2: Install Plex Media Server</h3>
<p>Plex is available for ARM-based devices via their official repository.</p>
<ol class="wp-block-list">
<li>Add Plex repo and key:</li>
</ol>
<pre class="wp-block-code"><code>curl https://downloads.plex.tv/plex-keys/PlexSign.key | sudo apt-key add -
echo deb https://downloads.plex.tv/repo/deb public main | sudo tee /etc/apt/sources.list.d/plexmediaserver.list
sudo apt update
</code></pre>
<ol class="wp-block-list" start="2">
<li>Install Plex:</li>
</ol>
<pre class="wp-block-code"><code>sudo apt install plexmediaserver -y
</code></pre>
<hr class="wp-block-separator has-alpha-channel-opacity" />
<h3 class="wp-block-heading" id="h-step-3-enable-and-start-the-service"><img alt="🔁" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f501.png" style="height: 1em;" /> Step 3: Enable and Start the Service</h3>
<p>Enable Plex on boot and start the service:</p>
<pre class="wp-block-code"><code>sudo systemctl enable plexmediaserver
sudo systemctl start plexmediaserver
</code></pre>
<p>Make sure it’s running:</p>
<pre class="wp-block-code"><code>sudo systemctl status plexmediaserver
</code></pre>
<hr class="wp-block-separator has-alpha-channel-opacity" />
<h3 class="wp-block-heading" id="h-step-4-access-plex-web-interface"><img alt="🌐" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f310.png" style="height: 1em;" /> Step 4: Access Plex Web Interface</h3>
<p>Open your browser and go to:</p>
<pre class="wp-block-code"><code>http://&lt;your-pi-ip&gt;:32400/web
</code></pre>
<p>Log in with your Plex account and begin the setup wizard.</p>
<hr class="wp-block-separator has-alpha-channel-opacity" />
<h3 class="wp-block-heading" id="h-step-5-add-your-media-library"><img alt="📂" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f4c2.png" style="height: 1em;" /> Step 5: Add Your Media Library</h3>
<p>Plug in your external HDD or mount a network share, then:</p>
<pre class="wp-block-code"><code>sudo mkdir -p /mnt/media
sudo mount /dev/sda1 /mnt/media
</code></pre>
<p>Make sure Plex can access it:</p>
<pre class="wp-block-code"><code>sudo chown -R plex:plex /mnt/media
</code></pre>
<p>Add the media folder during the Plex setup under Library &gt; Add Library.</p>
<hr class="wp-block-separator has-alpha-channel-opacity" />
<h3 class="wp-block-heading" id="h-optional-tips"><img alt="💡" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f4a1.png" style="height: 1em;" /> Optional Tips</h3>
<ul class="wp-block-list">
<li><strong>Transcoding:</strong> The Pi can handle direct play (no transcoding) well, but struggles with transcoding large files. Use compatible formats like H.264 (MP4).</li>
<li><strong>USB Boot:</strong> For better performance, boot the Pi from an SSD instead of a microSD card.</li>
<li><strong>Power Supply:</strong> Use a proper 5V/3A PSU to avoid crashes under heavy disk load.</li>
<li><strong>Thermal:</strong> Add a heatsink or fan for the Pi if using Plex for long sessions.</li>
</ul>
<hr class="wp-block-separator has-alpha-channel-opacity" />
<h3 class="wp-block-heading" id="h-secure-your-server"><img alt="🔐" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f510.png" style="height: 1em;" /> Secure Your Server</h3>
<ul class="wp-block-list">
<li>Use your router to forward port <code>32400</code> only if you want remote access.</li>
<li>Set a strong Plex password.</li>
<li>Enable Tailscale or WireGuard for secure remote access without exposing ports.</li>
</ul>
<hr class="wp-block-separator has-alpha-channel-opacity" />
<h3 class="wp-block-heading" id="h-conclusion"><img alt="✅" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/2705.png" style="height: 1em;" /> Conclusion</h3>
<p>A Raspberry Pi might not replace a full-blown NAS or dedicated server, but for personal use or as a secondary Plex node, it’s surprisingly capable. With low energy usage and silent operation, it’s the perfect DIY home media solution.</p>
<p>If you’re running other services like Pi-hole or Home Assistant, the Pi can multitask well — just avoid overloading it with too much transcoding.</p>
<p></p>
<p>The post <a href="https://hamradio.my/2025/06/building-a-plex-media-server-with-raspberry-pi/">Building a Plex Media Server with Raspberry Pi</a> appeared first on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p></description>
<pubDate>Wed, 04 Jun 2025 21:30:17 +0000</pubDate>
</item>
<item>
<title>The Fridge: Ubuntu Weekly Newsletter Issue 894</title>
<guid isPermaLink="false">https://fridge.ubuntu.com/?p=10529</guid>
<link>https://fridge.ubuntu.com/2025/06/02/ubuntu-weekly-newsletter-issue-894/</link>
<description><figure class="wp-block-image"><img alt="" src="https://fridge.ubuntu.com/wp-content/uploads/2020/02/c9d7/header.png" /></figure>
<p>Welcome to the Ubuntu Weekly Newsletter, <strong>Issue 894 for the week of May 25 – 31, 2025</strong>. The full version of this issue is available <a href="https://discourse.ubuntu.com/t/ubuntu-weekly-newsletter-issue-894/61717">here</a>.</p>
<p>In this issue we cover:</p>
<ul><li>Extended Security Maintenance for Ubuntu 20.04 (Focal Fossa) began on May 29, 2025</li><li>Ubuntu Studio 22.04 LTS has reached End-Of-Life (EOL)</li><li>Bringing together 20 years of documentation</li><li>Ubuntu Stats</li><li>Hot in Support</li><li>LXD: Weekly news #396</li><li>Rocks Public Journal; 2025-05-30</li><li>Other Meeting Reports</li><li>Upcoming Meetings and Events</li><li>Successful Training Session by Ubuntu Nepal in Collaboration with GNOME Nepal</li><li>Web Frontend deployment with Ubuntu Workshop @ Pohang</li><li>LoCo Events</li><li>LXD 6.4 has been released</li><li>Dependency merging in APT 3.1.0ubuntu2</li><li>Supercharging Ubuntu Releases: Monthly Snapshots &amp; Automation</li><li>Ubuntu Summit 25.10 is coming to your circle of friends, from London</li><li>The 2025 Frankfurt Engineering Sprint: What did you miss?</li><li>Apport local information disclosure vulnerability fixes available</li><li>Other Community News</li><li>Ubuntu Cloud News</li><li>In the Blogosphere</li><li>Other Articles of Interest</li><li>Featured Audio and Video</li><li>Updates and Security for Ubuntu 20.04, 22.04, 24.04, 24.10, and 25.04</li><li>And much more!</li></ul>
<p><strong>The Ubuntu Weekly Newsletter is brought to you by:</strong></p>
<ul><li>Krytarik Raido</li><li>Bashing-om</li><li>Chris Guiver</li><li>Wild Man</li><li>Din Mušić – LXD</li><li>Cristovao Cordeiro (cjdc) – Rocks</li><li>And many others</li></ul>
<p>If you have a story idea for the Weekly Newsletter, join the <a href="https://lists.ubuntu.com/mailman/listinfo/Ubuntu-news-team">Ubuntu News Team mailing list</a> and submit it. Ideas can also be added to the <a href="https://discourse.ubuntu.com/t/ubuntu-weekly-newsletter-ideas/40053">wiki</a>!</p>
<div class="wp-block-image"><figure class="alignleft"><img alt="" src="https://fridge.ubuntu.com/wp-content/uploads/2015/05/ab28/CCL.png" /></figure></div>
<p><a href="https://fridge.ubuntu.com/2025/06/02/ubuntu-weekly-newsletter-issue-894/"></a>.</p></description>
<pubDate>Mon, 02 Jun 2025 22:07:22 +0000</pubDate>
</item>
<item>
<title>Simon Quigley: Willpower is a muscle</title>
<guid isPermaLink="false">https://medium.com/p/803530d6eb74</guid>
<link>https://medium.com/@tsimonq2/willpower-is-a-muscle-803530d6eb74?source=rss-abe8950a00ea------2</link>
<description><p>“The most frustrating thing in the world for me, is when normal people judge a man like myself on what it really takes to extract <em>greatness</em> from <em>nothing</em>. It takes <strong><em>every bit</em></strong> of who you are.”<br /> — David Goggins</p><p>Willpower is a muscle, just like lifting weights. Just like a muscle, in order to build it up, you must actively do things you <em>do </em><strong><em>not</em></strong> want to do.</p><p>If you’re an athlete, you already understand this to an extent. When you’re training to run a marathon, you’re not training your physical muscles, as much as you are training your mind to overcome that barrier. When you progressively run more distance, and perhaps some days take it a bit easy, that’s a muscle.</p><p>Still don’t believe me? Don’t worry, the neuroscience is still new. It’s entirely possible I’m wrong. :)</p><p>I’ll start by sharing the podcast which made me realize this is an actual muscle:</p><a href="https://medium.com/media/8ee564a66edae48d09412033fdadecf2/href">https://medium.com/media/8ee564a66edae48d09412033fdadecf2/href</a><p>I’d encourage you to take the time and watch that podcast in its entirety. It will answer any remaining questions you have about David Goggins.</p><p>In case Goggins is a bit too crude for you, I’ll share the following quote from Dr. Huberman in that exact episode:</p><p>“In <em>humans</em>, not some mouse, when people do something they <em>don’t want to do</em>, it’s not about adding more work. It’s about adding more work <em>that you don’t want to do</em>.”</p><p>He also introduces us to the Anterior Mid-Cingulate Cortex.</p><p>“But Simon, you don’t have a doctorate. How do you know about this?”<br />I just showed you. The video is linked above. :)</p><p>The Anterior Mid-Cingulate Cortex is the part of your brain dealing with willpower. We now know <a href="https://arxiv.org/abs/2503.04453">we can measure it</a>, how <a href="https://www.nature.com/articles/s41467-024-49600-7">it’s related to the pleasure center of the brain</a>, and even that <a href="https://www.nature.com/articles/s41598-025-97529-8">it’s related to neuroticism</a>. Decision-making skills? <a href="https://academic.oup.com/cercor/article/34/4/bhae135/7644533">Yep.</a></p><p>As you can probably see, the science on this is <em>incredibly</em> new. If you’re in a position to fund academic research, please, <strong>graciously</strong> go fund research on this part of the brain. I genuinely want to see if someone can give me an agreeable dissent.</p><p>In the meantime, I’ll lean on psychology here:</p><a href="https://medium.com/media/fcadeff588931b9ed5982bce2e058a3b/href">https://medium.com/media/fcadeff588931b9ed5982bce2e058a3b/href</a><p>I’m human, just like you. I can’t tell you to do things you don’t want to do. I’m also not right 100% of the time. In fact, if you’re okay reading the Bible, I’d recommend you read Matthew 18:3–5. It will explain a lot.</p><p>In short, your motivation and willpower has to come <em>from you</em>.<br />Not me, not Goggins, not Jocko, not Peterson. It has to come from within. I’m not talking spiritually here (again, does not replace the underlying spiritual motivators), but rather, <em>mentally.</em></p><p>I walked 15 miles last week.</p><p>Did I want to walk 15 miles? Nope. It hurt.<br />Did I do it anyway, because it was sunny outside and I’ve been sincerely focused on improving my habit structure? Yes.<br />Did I inspire tons of people to start walking in a healthy way, just by leading by example? Yes.</p><p>My advice to you all is, remember to take your day off. That doesn’t mean a lazy day:</p><a href="https://medium.com/media/e4eff5dc25bd5d9dfdb27acfd29b8be4/href">https://medium.com/media/e4eff5dc25bd5d9dfdb27acfd29b8be4/href</a><p>Meaning, be responsible. Just know your own limits. Know your own personal local minimums and maximums. Know your absolutes, too. Show love to others; don’t hit them with a hammer from my toolbox, please.</p><p>That’s all for now. Be well. This week doesn’t have a theme; now I can <em>finally</em> write about more of the technical topics! :D</p><p><a href="https://music.youtube.com/playlist?list=PLTFKpItPoJaz5zwtCiP8_YplfO-65oqbB"><em>New month, new mixtape, by the way.</em></a></p><img alt="" height="1" src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=803530d6eb74" width="1" /></description>
<pubDate>Mon, 02 Jun 2025 22:04:18 +0000</pubDate>
</item>
<item>
<title>Faizul "Piju" 9M2PJU: 0 A.D. on Linux: A Stunning, Free RTS Experience That Rivals the Best</title>
<guid isPermaLink="false">https://hamradio.my/?p=7744</guid>
<link>https://hamradio.my/2025/06/0-a-d-on-linux-a-stunning-free-rts-experience-that-rivals-the-best/</link>
<description><h1 class="wp-block-heading"></h1>
<p>If you’re a Linux user craving a real-time strategy (RTS) game with the polish of <em>Age of Empires</em> and the historical depth of a university textbook—yet entirely <em>free</em> and <em>open source</em>—then you need to try <strong>0 A.D.</strong>. This epic project by <strong>Wildfire Games</strong> is not just an open-source alternative to mainstream RTS games—it’s a serious contender in its own right, crafted with passion, precision, and community spirit.</p>
<h2 class="wp-block-heading"><img alt="🎮" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f3ae.png" style="height: 1em;" /> What is 0 A.D.?</h2>
<p><strong>0 A.D. (Zero Anno Domini)</strong> is a <strong>free</strong>, <strong>open-source</strong>, <strong>cross-platform RTS game</strong> that takes players deep into ancient history, allowing them to build and battle with civilizations from 500 B.C. to 500 A.D. The game is built using the custom <strong>Pyrogenesis</strong> engine, a modern 3D engine developed from scratch for this purpose, and available under the GPL license—yes, you can even tinker with the code yourself.</p>
<p>It’s not just a clone. 0 A.D. sets itself apart with:</p>
<ul class="wp-block-list">
<li><img alt="🛡" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f6e1.png" style="height: 1em;" /> <strong>Historically accurate civilizations</strong></li>
<li><img alt="🗺" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f5fa.png" style="height: 1em;" /> <strong>Dynamic and random map generation</strong></li>
<li><img alt="⚔" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/2694.png" style="height: 1em;" /> <strong>Tactical land and naval combat</strong></li>
<li><img alt="🏗" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f3d7.png" style="height: 1em;" /> <strong>City-building with tech progression</strong></li>
<li><img alt="🧠" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f9e0.png" style="height: 1em;" /> <strong>AI opponents and multiplayer support</strong></li>
<li><img alt="💬" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f4ac.png" style="height: 1em;" /> <strong>Modding tools and community-created content</strong></li>
</ul>
<h2 class="wp-block-heading"><img alt="🐧" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f427.png" style="height: 1em;" /> Why It’s Perfect for Linux Users</h2>
<p>Linux gamers often get the short end of the stick when it comes to big-name games—but 0 A.D. feels like it was made <em>for us</em>. Here’s why Linux users should care:</p>
<h3 class="wp-block-heading"><img alt="✔" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/2714.png" style="height: 1em;" /> Native Linux Support</h3>
<p>0 A.D. runs natively on <strong>Linux</strong> without the need for Wine, Proton, or compatibility layers. You can install it directly from your distro’s package manager or build it from source if you like full control.</p>
<p>For example:</p>
<pre class="wp-block-code"><code># On Debian/Ubuntu
sudo apt install 0ad
# On Arch Linux
sudo pacman -S 0ad
# On Fedora
sudo dnf install 0ad
</code></pre>
<p>No weird dependencies. No workarounds. Just pure, native performance.</p>
<h3 class="wp-block-heading"><img alt="🎨" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f3a8.png" style="height: 1em;" /> Vulkan Renderer and FSR Support</h3>
<p>With <strong>Alpha 27 “Agni”</strong>, 0 A.D. now supports <strong>Vulkan</strong>, giving Linux users much better graphics performance, lower CPU overhead, and compatibility with modern GPU features. Plus, it includes <strong>AMD FidelityFX Super Resolution (FSR)</strong>—which boosts frame rates and visual quality even on low-end hardware.</p>
<p>This makes 0 A.D. one of the few FOSS games optimized for modern Linux graphics stacks like <strong>Mesa</strong>, <strong>Wayland</strong>, and <strong>PipeWire</strong>.</p>
<h3 class="wp-block-heading"><img alt="🔄" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f504.png" style="height: 1em;" /> Rolling Updates and Dev Engagement</h3>
<p>The development team and community are highly active, with new features, bug fixes, and optimizations arriving steadily. You don’t need to wait years for meaningful updates—0 A.D. grows with each alpha release, and Linux users are treated as first-class citizens.</p>
<p>Want to contribute a patch or translate the UI into Malay? You can. Everything is transparent and accessible.</p>
<hr class="wp-block-separator has-alpha-channel-opacity" />
<h2 class="wp-block-heading"><img alt="🏛" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f3db.png" style="height: 1em;" /> What Makes the Gameplay So Good?</h2>
<p>Let’s dive deeper into why the gameplay itself shines.</p>
<h3 class="wp-block-heading"><img alt="🏗" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f3d7.png" style="height: 1em;" /> Realistic Economy and Base Building</h3>
<p>Unlike many fast-paced arcade RTS games, 0 A.D. rewards planning and resource management. You’ll manage four resources—<strong>food, wood, stone, and metal</strong>—to construct buildings, raise armies, and advance through <strong>phases</strong> that represent a civilization’s growth. Advancing from <strong>village phase to town phase to city phase</strong> unlocks more units and structures.</p>
<p>Each civilization has unique architectural styles, tech trees, and military units. For example:</p>
<ul class="wp-block-list">
<li><strong>Romans</strong> have disciplined legionaries and siege weapons.</li>
<li><strong>Persians</strong> boast fast cavalry and majestic palaces.</li>
<li><strong>Athenians</strong> excel in naval warfare.</li>
</ul>
<h3 class="wp-block-heading"><img alt="⚔" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/2694.png" style="height: 1em;" /> Intense Tactical Combat</h3>
<p>Units in 0 A.D. aren’t just damage sponges. There’s formation control, terrain advantage, flanking tactics, and unit counters. The AI behaves strategically, and in multiplayer, experienced players can pull off devastating maneuvers.</p>
<p>Naval combat has received significant improvements recently, with better ship handling and water pathfinding—something many commercial RTS games still struggle with.</p>
<h3 class="wp-block-heading"><img alt="🗺" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f5fa.png" style="height: 1em;" /> Endless Map Variety and Mod Support</h3>
<p>0 A.D. includes:</p>
<ul class="wp-block-list">
<li>Skirmish maps</li>
<li>Random maps (with different biomes and elevation)</li>
<li>Scenario maps (with scripted events)</li>
</ul>
<p>And thanks to the integrated <strong>mod downloader</strong>, you can browse, install, and play with community mods in just a few clicks. Want to add new units, tweak balance, or add fantasy elements? You can.</p>
<hr class="wp-block-separator has-alpha-channel-opacity" />
<h2 class="wp-block-heading"><img alt="🕹" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f579.png" style="height: 1em;" /> Multiplayer and Replays</h2>
<p>Play with friends over LAN, the Internet, or against the built-in AI. The game includes:</p>
<ul class="wp-block-list">
<li><img alt="🧭" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f9ed.png" style="height: 1em;" /> Multiplayer save and resume support</li>
<li><img alt="👁" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f441.png" style="height: 1em;" /> Observer tools (with flares, commands, and overlays)</li>
<li><img alt="⏪" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/23ea.png" style="height: 1em;" /> Replay functionality to study your tactics or cast tournaments</li>
</ul>
<p>There’s even an in-game lobby where players coordinate matches across all platforms.</p>
<hr class="wp-block-separator has-alpha-channel-opacity" />
<h2 class="wp-block-heading"><img alt="👥" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f465.png" style="height: 1em;" /> Community and Contribution</h2>
<p>The 0 A.D. project thrives because of its community:</p>
<ul class="wp-block-list">
<li>Developers contribute code via GitHub.</li>
<li>Artists create stunning 3D models and animations.</li>
<li>Historians help ensure cultural accuracy.</li>
<li>Translators localize the game into dozens of languages.</li>
<li>Players write guides, tutorials, and strategy posts.</li>
</ul>
<p>If you’re a Linux user and want to contribute to an ambitious FOSS project, this is the perfect gateway into game development, design, or open collaboration.</p>
<hr class="wp-block-separator has-alpha-channel-opacity" />
<h2 class="wp-block-heading"><img alt="🧑💻" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f9d1-200d-1f4bb.png" style="height: 1em;" /> How to Install on Linux</h2>
<p>Here’s a quick reference:</p>
<h3 class="wp-block-heading">Option 1: Package Manager (Recommended)</h3>
<ul class="wp-block-list">
<li><strong>Debian/Ubuntu</strong>: <code>sudo apt install 0ad</code></li>
<li><strong>Arch Linux</strong>: <code>sudo pacman -S 0ad</code></li>
<li><strong>Fedora</strong>: <code>sudo dnf install 0ad</code></li>
<li><strong>openSUSE</strong>: <code>sudo zypper install 0ad</code></li>
</ul>
<h3 class="wp-block-heading">Option 2: Compile from Source</h3>
<p>Follow the official instructions at <a href="https://trac.wildfiregames.com/wiki/BuildInstructions">https://trac.wildfiregames.com/wiki/BuildInstructions</a></p>
<hr class="wp-block-separator has-alpha-channel-opacity" />
<h2 class="wp-block-heading"><img alt="🎯" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f3af.png" style="height: 1em;" /> Final Thoughts</h2>
<p>0 A.D. is more than just a game—it’s a testament to what free and open-source software can achieve. For Linux gamers, it’s a rare gem: a game that respects your platform, performs well, and lets you own your experience entirely.</p>
<p>So whether you’re a seasoned general or a curious strategist, <strong>download 0 A.D. today and relive history—on your terms</strong>.</p>
<p><img alt="👉" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f449.png" style="height: 1em;" /> Visit <a href="https://play0ad.com/">https://play0ad.com</a> to download and start playing.</p>
<p>The post <a href="https://hamradio.my/2025/06/0-a-d-on-linux-a-stunning-free-rts-experience-that-rivals-the-best/">0 A.D. on Linux: A Stunning, Free RTS Experience That Rivals the Best</a> appeared first on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p></description>
<pubDate>Sun, 01 Jun 2025 16:14:40 +0000</pubDate>
</item>
<item>
<title>Simon Quigley: Trains and Cats: The Trolley Problem</title>
<guid isPermaLink="false">https://medium.com/p/102a4430023c</guid>
<link>https://medium.com/@tsimonq2/trains-and-cats-the-trolley-problem-102a4430023c?source=rss-abe8950a00ea------2</link>
<description><p>“Do not forget about the Trolley Problem,” a middle school teacher once told us. “You’ll look back on this moment and be glad you studied this specific dilemma early.”</p><p>In hindsight, <strong>she was right</strong>. In fact, I had no idea I would need to use that knowledge until I was <em>directly</em> in the middle of the situation.</p><p>Imagine this: you’re standing by a railroad track. There’s a lever in front of that railroad track, next to a button. The button sends an affirmative signal to a waiting train, so it can proceed. The lever allows the operators to switch between the primary track, and a secondary track, just in case.</p><p>Before pressing the button, standard operating procedure is to manually inspect the tracks, to ensure no debris exists. The operators even run a small cart through, to ensure the tracks themselves are not in bad shape.</p><p>All of the operators are out for the weekend. That’s okay, they just helped prepare the train for departure. They deserve the time off.</p><p>Except, someone bumped the big red button on the way out, without realizing it.</p><p>The train starts to build momentum. There’s no stopping it now. Everyone was so busy preparing the train, that checking the tracks to see if they were ready… not on their mind.</p><p>How could they forget? Well, the cart was out for repair. It passed the last three dozen times, why would it fail this time? Why would there suddenly be debris on the tracks?</p><p>Imagine you’re an engineer who just happened to walk by the button and lever. You see the train is starting to move. There’s debris even before the junction, and you can hear it. It’s loud.</p><p>But again, the operators are off-site. It’s not technically “your job” to even touch the lever. You’re just an engineer, you’re not an operator. Why would you flip that switch?</p><p>Well, because there’s a large rock straight ahead. If nobody flips the lever, it will hurdle right towards it and crash.</p><p>So, last second, you walk up to the lever, and flip it. That being said, in order to clear the last bit of debris off that secondary track to avoid the rock, you have to sacrifice your favorite wooden stick.</p><p>You spent decades whittling that stick until it was perfect. Except now, it’s the only thing you have to stop the train.</p><p>Would you sacrifice your favorite stick to save the train from the rock?</p><p>Let’s entertain both scenarios.</p><p>What if you just “let it be,” and pretended you didn’t see it? That would probably make some feel guilty, as if they were the person that pressed the button.</p><p>The other option would be to sacrifice your stick. It’s a material object, but you put years of effort into it. That would make you feel a different set of emotions.</p><p>That’s why the Trolley Problem is so difficult. You’re either sacrificing one person, or multiple. You have to choose one, you can’t choose both.</p><p>For the sake of argument, let’s say there’s a perfect 50% chance that you walk by the train. There are security cameras, but they can’t be viewed off-site due to a technical outage.</p><p>A few people in management heard the sound of the train from a great distance away, which made them nervous. They might be asking several questions, such as:<br /> * Is the train intact?<br /> * Which track did the train go down?<br /> * Was there actually any debris in the way?<br /> * Who caused the train to start moving prematurely?</p><p>It was an honest mistake, someone just pushed the button. All of these questions though, they almost remind me of a different dilemma of sorts:</p><a href="https://medium.com/media/4ec6b678f4c67437bd9f844bd50b9acb/href">https://medium.com/media/4ec6b678f4c67437bd9f844bd50b9acb/href</a><p>What would <em>you</em> do?</p><p><em>Talk to you all on Monday.</em></p><img alt="" height="1" src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=102a4430023c" width="1" /></description>
<pubDate>Sun, 01 Jun 2025 03:30:02 +0000</pubDate>
</item>
<item>
<title>The Fridge: Extended Security Maintenance for Ubuntu 20.04 (Focal) began on May 29, 2025</title>
<guid isPermaLink="false">https://fridge.ubuntu.com/?p=10520</guid>
<link>https://fridge.ubuntu.com/2025/05/30/extended-security-maintenance-for-ubuntu-20-04-focal-began-on-may-29-2025/</link>
<description><p>This is a follow-up to the Extended Support warning sent one month ago to confirm that as of May 29, 2025, Ubuntu 20.04 LTS standard support has ended. No more package updates are planned to be accepted to the primary archive of Ubuntu 20.04 LTS.</p>
<p>Remember that if you can’t upgrade to 22.04 LTS or later immediately, Canonical provides Extended Security Maintenance for Ubuntu 20.04 LTS to users with Ubuntu Pro. You can find more info about Ubuntu Pro here:</p>
<p style="margin-left: 15px;">
<a href="https://ubuntu.com/blog/ubuntu-20-04-lts-end-of-life-standard-support-is-coming-to-an-end-heres-how-to-prepare">https://ubuntu.com/blog/ubuntu-20-04-lts-end-of-life-standard-support-is-coming-to-an-end-heres-how-to-prepare</a><br />
<a href="https://ubuntu.com/esm">https://ubuntu.com/esm</a></p>
<p>The original Extended Support warning follows, with upgrade instructions:</p>
<p>Ubuntu released its 20.04 (Focal Fossa) release 5 years ago, on March 23, 2020. As with the earlier LTS releases, Ubuntu committed to ongoing security and critical fixes for a period of 5 years. The standard support period is now nearing its end and Ubuntu 20.04 LTS will transition to Extended Security Maintenance (ESM) on May 29, 2025.</p>
<p>Users are encouraged to evaluate and upgrade to our latest 24.04 LTS release via 22.04 LTS. The supported upgrade path from Ubuntu 20.04 LTS is via Ubuntu 22.04 LTS. Instructions and caveats for the upgrades may be found at:</p>
<p style="margin-left: 15px;">
<a href="https://help.ubuntu.com/community/JammyUpgrades">https://help.ubuntu.com/community/JammyUpgrades</a> for Ubuntu 22.04 LTS<br />
<a href="https://help.ubuntu.com/community/NobleUpgrades">https://help.ubuntu.com/community/NobleUpgrades</a> for Ubuntu 24.04 LTS</p>
<p>Ubuntu 22.04 LTS and 24.04 LTS continue to be actively supported with security updates and bug fixes. All announcements of official security updates for Ubuntu releases are sent to the ubuntu-security-announce mailing list, information about which may be found here:</p>
<p style="margin-left: 15px;">
<a href="https://lists.ubuntu.com/mailman/listinfo/ubuntu-security-announce">https://lists.ubuntu.com/mailman/listinfo/ubuntu-security-announce</a></p>
<p>Canonical provides Extended Security Maintenance for Ubuntu 20.04 LTS to customers through Ubuntu Pro. Further information can be found here:</p>
<p style="margin-left: 15px;">
<a href="https://ubuntu.com/blog/focal-fossa-end-of-standard-support">https://ubuntu.com/blog/focal-fossa-end-of-standard-support</a><br />
<a href="https://www.ubuntu.com/esm">https://www.ubuntu.com/esm</a></p>
<p>Since its launch in October 2004, Ubuntu has become one of the most highly regarded Linux distributions with millions of users in homes, schools, businesses and governments around the world. Ubuntu is Open Source software, costs nothing to download, and users are free to customize or alter their software in order to meet their needs.</p>
<p><em>Originally posted to the <a href="https://lists.ubuntu.com/archives/ubuntu-announce/2025-May/000312.html">ubuntu-announce mailing list</a> on Thu May 29 16:37:01 UTC 2025 by Ural Tunaboyu, on behalf of the Ubuntu Release Team.</em></p></description>
<pubDate>Fri, 30 May 2025 06:54:56 +0000</pubDate>
</item>
<item>
<title>Ubuntu Studio: Ubuntu Studio 22.04 LTS has reached End-Of-Life (EOL)</title>
<guid isPermaLink="false">https://ubuntustudio.org/?p=2999</guid>
<link>https://ubuntustudio.org/2025/05/ubuntu-studio-22-04-lts-has-reached-end-of-life-eol/</link>
<description><p><strong>Ubuntu Studio 22.04 LTS has reached the end of its three years of supported life</strong> provided by the Ubuntu Studio team. All users are urged to upgrade to 24.04 LTS at this time.</p>
<p>This means that the KDE Plasma, audio, video, graphics, photography, and publishing components of your system will no longer receive updates, plus <strong>we at Ubuntu Studio won’t support it after 29-May-2025,</strong> though your base packages from Ubuntu will continue to receive security updates from Ubuntu until 2027 since Ubuntu Desktop, Ubuntu Server, Ubuntu Cloud and Ubuntu Core continue to receive updates.</p>
<p>See the <a data-id="2745" data-type="page" href="https://ubuntustudio.org/ubuntu-studio-24-04-lts-release-notes/">Ubuntu Studio 24.04 LTS Release Notes</a> for upgrade instructions.</p>
<p>No single release of any operating system can be supported indefinitely, and Ubuntu Studio has no exception to this rule.</p>
<p>Long-Term Support releases are identified by an even numbered year-of-release and a month-of-release of April (04). Hence, the most recent Long-Term Support release is 24.04 (YY.MM = 2024.April), and the next Long-Term Support release will be 26.04 (2026.April). LTS releases for official Ubuntu flavors (not Desktop or Server which are supported for five years) are three years, meaning LTS users are expected to upgrade after every LTS release with a one-year buffer.</p></description>
<pubDate>Thu, 29 May 2025 16:50:01 +0000</pubDate>
</item>
<item>
<title>Podcast Ubuntu Portugal: E349 Choques Com Tinta</title>
<guid isPermaLink="false">https://hub.podcastubuntuportugal.org/s/HzDyna824fnMdWe/download/e349.mp3</guid>
<link>https://podcastubuntuportugal.org/e349/</link>
<description><p>O episódio de hoje fará correr muita tinta…electrónica. Como escapar aos monopólios de «e-readers» de marcas abelhudas? Podemos fazer um em casa com fita-cola, cartão, cuspo e Alpine Linux? Estas e outras questões mais profundas sobre um mundo que morre e outro que está em dores de parto colam-se a todas as outras coisas a acontecerem na agenda: Firefox 139, terminais retro engraçados, Teletexto num Terminal(!), Home Assistant Community Day, Wikicon Portugal, Ubucon Europe, Ubuntu Summit, Festa do Software Livre, ECTL Porto…é um nunca acabar. E decidimos fazer uma autópsia ao Pocket, mais uma vítima da Mozilla. Querem pacotes? Perguntem ao Dan!</p>
<p>Já sabem: oiçam, subscrevam e partilhem!</p>
<ul>
<li>Cool Retro Term: <a href="https://github.com/Swordfish90/cool-retro-term">https://github.com/Swordfish90/cool-retro-term</a></li>
<li>Navegador para terminal «Links»: <a href="http://links.twibright.com/user_en.html#ch-introduction_into_links_web_browser">http://links.twibright.com/user_en.html#ch-introduction_into_links_web_browser</a></li>
<li>Alpine Linux: <a href="https://www.alpinelinux.org/">https://www.alpinelinux.org/</a></li>
<li>Para onde foram os «e-readers» baratos? <a href="https://shkspr.mobi/blog/2025/05/whatever-happened-to-cheap-ereaders/">https://shkspr.mobi/blog/2025/05/whatever-happened-to-cheap-ereaders/</a></li>
<li>Tabela de privacidade de «e-readers» da EFF (2012): <a href="https://www.eff.org/pages/reader-privacy-chart-2012)">https://www.eff.org/pages/reader-privacy-chart-2012)</a>.</li>
<li>Um Leitor de Livros Electrónicos Faça-Você-Mesmo: <a href="https://hackaday.com/2019/10/31/building-an-open-hardware-ebook-reader/">https://hackaday.com/2019/10/31/building-an-open-hardware-ebook-reader/</a></li>
<li>Um casamento feliz entre um Raspberry Pi Zero e Tinta Electrónica: <a href="https://www.hackster.io/lukehaas/e-ink-display-for-daily-news-weather-and-more-3dd7b1">https://www.hackster.io/lukehaas/e-ink-display-for-daily-news-weather-and-more-3dd7b1</a></li>
<li>Como requisitar e-livros na Biblioled sem tralha da Adobe: <a href="https://ajuda.biblioled.gov.pt/pt/doc/ST2445/1/abrir-um-emprestimo-com-o-seu-pc">https://ajuda.biblioled.gov.pt/pt/doc/ST2445/1/abrir-um-emprestimo-com-o-seu-pc</a></li>
<li>Biblioled: <a href="https://www.biblioled.gov.pt/">https://www.biblioled.gov.pt/</a></li>
<li>Thorium Reader: <a href="https://thorium.edrlab.org/en/">https://thorium.edrlab.org/en/</a></li>
<li>KoReader: <a href="https://koreader.rocks/">https://koreader.rocks/</a></li>
<li>Calibre: <a href="https://calibre-ebook.com/">https://calibre-ebook.com/</a></li>
<li>Reflexões sobre um mundo novo que quer emergir e pulsões regressivas: <a href="https://ageoftransformation.org/the-us-is-collapsing-like-the-ussr-so-what-comes-next/">https://ageoftransformation.org/the-us-is-collapsing-like-the-ussr-so-what-comes-next/</a></li>
<li>Um Minitel num comboio?… <a href="https://corneill.es/@Ortie/114557692921180947">https://corneill.es/@Ortie/114557692921180947</a></li>
<li>Wallabag: <a href="https://wallabag.org/">https://wallabag.org/</a>
<ul>
<li><a href="https://github.com/wallabag/wallabag">https://github.com/wallabag/wallabag</a></li>
<li><a href="https://www.wallabag.it/en">https://www.wallabag.it/en</a></li>
</ul>
</li>
<li>Adeus, Pocket: <a href="https://support.mozilla.org/en-US/kb/future-of-pocket">https://support.mozilla.org/en-US/kb/future-of-pocket</a>
<ul>
<li><a href="https://www.phoronix.com/news/Mozilla-Pocket-Ending">https://www.phoronix.com/news/Mozilla-Pocket-Ending</a></li>
<li><a href="https://www.omgubuntu.co.uk/2025/05/mozilla-kills-pocket-so-it-can-focus-on-firefox">https://www.omgubuntu.co.uk/2025/05/mozilla-kills-pocket-so-it-can-focus-on-firefox</a></li>
</ul>
</li>
<li>Firefox 139: <a href="https://blog.mozilla.org/en/mozilla/building-whats-next/">https://blog.mozilla.org/en/mozilla/building-whats-next/</a></li>
<li>Jovem! Desenha uma mascote e ganha prémios! Inscreve-te! Participa! <a href="https://digitalfreedoms.org/en/sfd/blog/sfd-mascot-huion-challenge-2025">https://digitalfreedoms.org/en/sfd/blog/sfd-mascot-huion-challenge-2025</a></li>
<li>Teletexto num Terminal para Pessoas Saudosistas: <a href="https://github.com/marado/teletexto/blob/main/teletexto.sh">https://github.com/marado/teletexto/blob/main/teletexto.sh</a></li>
<li>Qual pacote? Pergunta ao Dan: <a href="https://snapcraft.io/askdan">https://snapcraft.io/askdan</a></li>
<li>LCD Porto – Laboratório de Criação Digital: <a href="https://lcdporto.org">https://lcdporto.org</a></li>
<li>ECTL Porto, 29 e 31 de Maio: <a href="https://ectl.pt/pt/schedule/2025/">https://ectl.pt/pt/schedule/2025/</a></li>
<li>WikiCon Portugal 2025, Seia, 30/05-01/06: <a href="https://pt.wikimedia.org/wiki/WikiCon_Portugal_2025/Programa">https://pt.wikimedia.org/wiki/WikiCon_Portugal_2025/Programa</a></li>
<li>Ubucon Europe 2025, Málaga, 20-21 de Junho (Open South Code): <a href="https://discourse.ubuntu.com/t/ubucon-europe-opensouthcode-2025/57060">https://discourse.ubuntu.com/t/ubucon-europe-opensouthcode-2025/57060</a></li>
<li>Festa do Software Livre 2025, Porto, 3 a 5 de Outubro: <a href="https://festa2025.softwarelivre.eu/pt/">https://festa2025.softwarelivre.eu/pt/</a></li>
<li>Ubuntu Summit 2025, Londres, 23-24 de Outubro: <a href="https://ubuntu.com/blog/ubuntu-summit-25-10-is-coming-to-your-circle-of-friends-from-london">https://ubuntu.com/blog/ubuntu-summit-25-10-is-coming-to-your-circle-of-friends-from-london</a></li>
<li>LoCo PT: <a href="https://loco.ubuntu.com/teams/ubuntu-pt/">https://loco.ubuntu.com/teams/ubuntu-pt/</a></li>
<li>Mastodon: <a href="https://masto.pt/@pup">https://masto.pt/@pup</a></li>
<li>Youtube: <a href="https://youtube.com/PodcastUbuntuPortugal">https://youtube.com/PodcastUbuntuPortugal</a></li>
</ul>
<h3 id="atribuição-e-licenças">Atribuição e licenças</h3>
<p>Este episódio foi produzido por Diogo Constantino, Miguel e Tiago Carrondo e editado pelo <a href="https://senhorpodcast.pt/">Senhor Podcast</a>.
O website é produzido por Tiago Carrondo e o <a href="https://gitlab.com/podcastubuntuportugal/website">código aberto</a> está licenciado nos termos da <a href="https://gitlab.com/podcastubuntuportugal/website/main/LICENSE">Licença MIT</a>. (<a href="https://creativecommons.org/licenses/by/4.0/)">https://creativecommons.org/licenses/by/4.0/)</a>. A música do genérico é: “Won’t see it comin’ (Feat Aequality &amp; N’sorte d’autruche)”, por Alpha Hydrae e está licenciada nos termos da <a href="https://creativecommons.org/publicdomain/zero/1.0/">CC0 1.0 Universal License</a>. Os efeitos sonoros deste episódio possuem as seguintes licenças: Helicóptero; TV2 loop.wav by Figowitz – <a href="https://freesound.org/s/69609/">https://freesound.org/s/69609/</a> – License: Attribution NonCommercial 4.0; Toque de telefone: 01592 dialing phone number.wav by Robinhood76 – <a href="https://freesound.org/s/94933/">https://freesound.org/s/94933/</a> – License: Attribution NonCommercial 4.0. A flauta mal tocada dos separadores é inteiramente culpa do Miguel e aquele efeito manhoso de um helicóptero Bell Huey UH-1 com rotor de duas pás também.
Este episódio e a imagem utilizada estão licenciados nos termos da licença: <a href="https://creativecommons.org/licenses/by-nc-nd/4.0/">Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0)</a>, <a href="https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode">cujo texto integral pode ser lido aqui</a>. Estamos abertos a licenciar para permitir outros tipos de utilização, <a href="https://podcastubuntuportugal.org/contactos">contactem-nos</a> para validação e autorização.
A arte de episódio foi criada por encomenda pela Shizamura - artista, ilustradora e autora de BD. Podem ficar a conhecer melhor a <a href="https://ciberlandia.pt/@shizamura">Shizamura na Ciberlândia</a> e no <a href="https://sarilho.net/">seu sítio web</a>.</p></description>
<pubDate>Thu, 29 May 2025 00:00:00 +0000</pubDate>
<enclosure url="https://hub.podcastubuntuportugal.org/s/HzDyna824fnMdWe/download/e349.mp3" length="32101563" type="audio/mpeg"/>
</item>
<item>
<title>Julian Andres Klode: A SomewhatMaxSAT Solver</title>
<guid isPermaLink="true">https://blog.jak-linux.org/2025/05/24/somewhatmax-sat-solver/</guid>
<link>https://blog.jak-linux.org/2025/05/24/somewhatmax-sat-solver/</link>
<description><p><strong>As you may recall</strong> from previous posts and elsewhere I have been busy writing a new solver for APT.
Today I want to share some of the latest changes in how to approach solving.</p>
<p>The idea for the solver was that manually installed packages are always protected from removals –
in terms of SAT solving, they are facts. Automatically installed packages become optional unit
clauses. Optional clauses are solved after manual ones, they don’t partake in normal unit propagation.</p>
<p>This worked fine, say you had</p>
<pre tabindex="0"><code>A # install request for A
B # manually installed, keep it
A depends on: conflicts-B | C
</code></pre><p>Installing <code>A</code> on a system with <code>B</code> installed installed <code>C</code>, as it was not allowed to
install the <code>conflicts-B</code> package since <code>B</code> is installed.</p>
<p><strong>However,</strong> I also introduced a mode to allow removing manually installed packages, and that’s
where it broke down, now instead of <code>B</code> being a fact, our clauses looked like:</p>
<pre tabindex="0"><code>A # install request for A
A depends on: conflicts-B | C
Optional: B # try to keep B installed
</code></pre><p>As a result, we installed <code>conflicts-B</code> and removed <code>B</code>; the steps the solver takes are:</p>
<ol>
<li><code>A</code> is a fact, mark it</li>
<li><code>A depends on: conflicts-B | C</code> is the strongest clause, try to install <code>conflicts-B</code></li>
<li>We unit propagate that <code>conflicts-B</code> conflicts with <code>B</code>, so we mark <code>not B</code></li>
<li><code>Optional: B</code> is reached, but not satisfiable, ignore it because it’s optional.</li>
</ol>
<p>This isn’t correct: Just because we allow removing manually installed packages doesn’t mean that we should remove manually installed packages if we don’t need to.</p>
<p><strong>Fixing</strong> this turns out to be surprisingly easy. In addition to adding our optional (soft) clauses, let’s first assume all of them!</p>
<p>But to explain how this works, we first need to explain some terminology:</p>
<ol>
<li>The solver operates on a stack of decisions</li>
<li>“enqueue” means a fact is being added at the current decision level, and enqueued for propagation</li>
<li>“assume” bumps the decision level, and then enqueues the assumed variable</li>
<li>“propagate” looks at all the facts and sees if any clause becomes unit, and then enqueues it</li>
<li>“unit” is when a clause has a single literal left to assign</li>
</ol>
<p>To illustrate this in pseudo Python code:</p>
<ol>
<li>
<p>We introduce all our facts, and if they conflict, we are unsat:</p>
<div class="highlight"><pre tabindex="0"><code class="language-python3" data-lang="python3"><span style="display: flex;"><span><span style="color: #66d9ef;">for</span> fact <span style="color: #f92672;">in</span> facts:
</span></span><span style="display: flex;"><span> enqueue(fact)
</span></span><span style="display: flex;"><span><span style="color: #66d9ef;">if</span> <span style="color: #f92672;">not</span> propagate():
</span></span><span style="display: flex;"><span> <span style="color: #66d9ef;">return</span> <span style="color: #66d9ef;">False</span>
</span></span></code></pre></div></li>
<li>
<p>For each optional literal, we register a soft clause and assume it. If the assumption fails,
we ignore it. If it succeeds, but propagation fails, we undo the assumption.</p>
<div class="highlight"><pre tabindex="0"><code class="language-python3" data-lang="python3"><span style="display: flex;"><span><span style="color: #66d9ef;">for</span> optionalLiteral <span style="color: #f92672;">in</span> optionalLiterals:
</span></span><span style="display: flex;"><span> registerClause(SoftClause([optionalLiteral]))
</span></span><span style="display: flex;"><span> <span style="color: #66d9ef;">if</span> assume(optionalLiteral) <span style="color: #f92672;">and</span> <span style="color: #f92672;">not</span> propagate():
</span></span><span style="display: flex;"><span> undo()
</span></span></code></pre></div></li>
<li>
<p>Finally we enter the main solver loop:</p>
<div class="highlight"><pre tabindex="0"><code class="language-python3" data-lang="python3"><span style="display: flex;"><span><span style="color: #66d9ef;">while</span> <span style="color: #66d9ef;">True</span>:
</span></span><span style="display: flex;"><span> <span style="color: #66d9ef;">if</span> <span style="color: #f92672;">not</span> propagate():
</span></span><span style="display: flex;"><span> <span style="color: #66d9ef;">if</span> <span style="color: #f92672;">not</span> backtrack():
</span></span><span style="display: flex;"><span> <span style="color: #66d9ef;">return</span> <span style="color: #66d9ef;">False</span>
</span></span><span style="display: flex;"><span> <span style="color: #66d9ef;">elif</span> <span style="color: #f92672;">&lt;</span>all clauses are satisfied<span style="color: #f92672;">&gt;</span>:
</span></span><span style="display: flex;"><span> <span style="color: #66d9ef;">return</span> <span style="color: #66d9ef;">True</span>
</span></span><span style="display: flex;"><span> <span style="color: #66d9ef;">elif</span> it <span style="color: #f92672;">:=</span> find(<span style="color: #e6db74;">"best unassigned literal satisfying a hard clause"</span>):
</span></span><span style="display: flex;"><span> assume(it)
</span></span><span style="display: flex;"><span> <span style="color: #66d9ef;">elif</span> it <span style="color: #f92672;">:=</span> find(<span style="color: #e6db74;">"best literal satisfying a soft clause"</span>):
</span></span><span style="display: flex;"><span> assume(it)
</span></span></code></pre></div></li>
</ol>
<p>The key point to note is that the main loop will undo the assumptions in order; so
if you assume <code>A,B,C</code> and <code>B</code> is not possible, we will have also undone <code>C</code>. But since
<code>C</code> is also enqueued as a soft clause, we will then later find it again:</p>
<ol>
<li>Assume <code>A</code>: <code>State=[Assume(A)]</code>, <code>Clauses=[SoftClause([A])]</code></li>
<li>Assume <code>B</code>: <code>State=[Assume(A),Assume(B)]</code>, <code>Clauses=[SoftClause([A]),SoftClause([B])]</code></li>
<li>Assume <code>C</code>: <code>State=[Assume(A),Assume(B),Assume(C)]</code>, <code>Clauses=[SoftClause([A]),SoftClause([B]),SoftClause([C])]</code></li>
<li>Solve finds a conflict, backtracks, and sets <code>not C</code>: <code>State=[Assume(A),Assume(B),not(C)]</code></li>
<li>Solve finds a conflict, backtracks, and sets <code>not B</code>: <code>State=[Assume(A),not(B)]</code> – C is no longer assumed either</li>
<li>Solve, assume <code>C</code> as it satisfies <code>SoftClause([C])</code> as next best literal: <code>State=[Assume(A),not(B),Assume(C)]</code></li>
<li>All clauses are satisfied, solution is <code>A</code>, <code>not B</code>, and <code>C</code>.</li>
</ol>
<p><strong>This is not (correct) MaxSAT</strong>, because we actually do not guarantee that we satisfy as many soft clauses as possible. Consider you have the following clauses:</p>
<pre><code>Optional: A
Optional: B
Optional: C
B Conflicts with A
C Conflicts with A
</code></pre>
<p>There are two possible results here:</p>
<ol>
<li><code>{A}</code> – If we assume <code>A</code> first, we are unable to satisfy <code>B</code> or <code>C</code>.</li>
<li><code>{B,C}</code> – If we assume either <code>B</code> or <code>C</code> first, <code>A</code> is unsat.</li>
</ol>
<p>The question to ponder though is whether we actually need a global maximum or whether a local maximum is satisfactory in practice for a dependency solver
If you look at it, a naive MaxSAT solver needs to run the SAT solver <code>2**n</code> times for <code>n</code> soft clauses, whereas our heuristic only needs <code>n</code> runs.</p>
<p>For dependency solving, it seems we do not seem have a strong need for a global maximum:
There are various other preferences between our literals, say priorities;
and empirically, from evaluating hundreds of regressions <em>without</em> the initial assumptions,
I can say that the assumptions do fix those cases and the result is correct.</p>
<p><strong>Further improvements</strong> exist, though, and we can look into them if they are needed, such as:</p>
<ul>
<li>
<p>Use a <em>better heuristic</em>:</p>
<p>If we assume 1 clause and solve, and we cause 2 or more clauses to become unsatisfiable,
then that clause is a local minimum and can be skipped.
This is a more common heuristical MaxSAT solver.
This gives us a <em>better</em> local maximum, but not a global one.</p>
<p>This is more or less what the <a href="https://labix.org/smart">Smart package manager</a> did,
except that in Smart, all packages were optional, and the entire solution was scored.
It calculated a basic solution without optimization and then toggled each variable and saw if the score improved.</p>
</li>
<li>
<p>Implement <em>an actual search for a global maximum</em>:</p>
<p>This involves reading the literature.
There are various versions of this, for example:</p>
<ol>
<li>
<p>Find unsatisfiable cores and use those to guide relaxation of clauses.</p>
</li>
<li>
<p>A bounds-based search, where we translate sum(satisifed clauses) &gt; k into SAT, and then search in one of the following ways:</p>
<ol>
<li>from 0 upward</li>
<li>from n downward</li>
<li>perform a binary search on [0, k] satisfied clauses.</li>
</ol>
<p><em>Actually</em> we do not even need to calculate sum constraints into CNF, because we can just add a specialized new type of constraint to our code.</p>
</li>
</ol>
</li>
</ul></description>
<pubDate>Sat, 24 May 2025 10:14:58 +0000</pubDate>
</item>
<item>
<title>Launchpad News: Sunsetting Launchpad’s mailing lists</title>
<guid isPermaLink="false">https://blog.launchpad.net/?p=4460</guid>
<link>https://blog.launchpad.net/general/sunsetting-launchpads-mailing-lists</link>
<description><h2>What are Launchpad’s mailing lists?</h2>
<p>Launchpad’s mailing lists are team-based mailing lists, which means that each team can have one of them. E-mails from Launchpad’s mailing lists contain `lists.launchpad.net ` in their address.</p>
<p>For more information on the topic please see <a href="https://help.launchpad.net/ListHelp">https://help.launchpad.net/ListHelp</a>.</p>
<h2>What are they not?</h2>
<p>Please note that both <a href="http://lists.canonical.com">lists.canonical.com</a> and <a href="http://lists.ubuntu.com">lists.ubuntu.com</a> are not managed by Launchpad, but by Canonical Information Systems.</p>
<h2>Timeline</h2>
<p>Launchpad will no longer offer mailing lists as of the end of October 2025, which aligns with the end of the 25.10 cycle.</p>
<h2>Migration paths</h2>
<p>Depending on your use case, there are different alternatives available.</p>
<p>For a couple of years now, discourse has become a viable alternative for most scenarios. Launchpad also offers the <a href="https://help.launchpad.net/Answers">Answers feature</a> for discussions. If it is not so much about communication, but more about receiving information, e.g. for updates on a bug report, you should be aware that you can also subscribe teams to bugs.</p>
<h2>Call for action</h2>
<p>We are aware that your use case may be very different from the above listed ones. If you are using Launchpad’s mailing lists today and you do not see a clear way forward, please reach out to us to discuss your use case and how we can help you.</p>
<p>Please contact us on Matrix (#launchpad:<a href="http://ubuntu.com">ubuntu.com</a>) or drop as a message via feedback@launchpad.net.</p>
<p>Please note that this is still work in progress, and we will provide more information over the upcoming weeks and months.</p></description>
<pubDate>Thu, 22 May 2025 17:42:38 +0000</pubDate>
</item>
<item>
<title>Scarlett Gately Moore: KDE Application Snaps 25.04.1 with Major Bug Fix!,Life ( Good news finally!)</title>
<guid isPermaLink="false">https://www.scarlettgatelymoore.dev/?p=2079</guid>
<link>https://www.scarlettgatelymoore.dev/kde-application-snaps-25-04-1-with-major-bug-fixlife-good-news-finally/</link>
<description><div class="elementor elementor-2079" data-elementor-id="2079" data-elementor-type="wp-post">
<div class="elementor-element elementor-element-d7a6ffc e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-parent" data-element_type="container" data-id="d7a6ffc">
<div class="e-con-inner">
<div class="elementor-element elementor-element-389a8ca elementor-widget elementor-widget-image" data-element_type="widget" data-id="389a8ca" data-widget_type="image.default">
<div class="elementor-widget-container">
<img alt="" class="attachment-large size-large wp-image-1816" height="600" src="https://www.scarlettgatelymoore.dev/wp-content/uploads/424px-Mascot_konqi-dev-kde.png" width="424" /> </div>
</div>
<div class="elementor-element elementor-element-27d9057 elementor-widget elementor-widget-heading" data-element_type="widget" data-id="27d9057" data-widget_type="heading.default">
<div class="elementor-widget-container">
<h2 class="elementor-heading-title elementor-size-default">Snaps!</h2> </div>
</div>
<div class="elementor-element elementor-element-2e9fb3f elementor-widget elementor-widget-text-editor" data-element_type="widget" data-id="2e9fb3f" data-widget_type="text-editor.default">
<div class="elementor-widget-container">
<p>I actually released last week <img alt="🙂" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f642.png" style="height: 1em;" /> I haven’t had time to blog, but today is my birthday and taking some time to myself!</p><p>This release came with a major bugfix. As it turns out our applications were very crashy on non-KDE platforms including Ubuntu proper. Unfortunately, for years, and I didn’t know. Developers were closing the bug reports as invalid because users couldn’t provide a stacktrace. I have now convinced most developers to assign snap bugs to the Snap platform so I at least get a chance to try and fix them. So with that said, if you tried our snaps in the past and gave up in frustration, please do try them again! I also spent some time cleaning up our snaps to only have current releases in the store, as rumor has it snapcrafters will be responsible for any security issues. With 200+ snaps I maintain, that is a lot of responsibility. We’ll see if I can pull it off.</p> </div>
</div>
<div class="elementor-element elementor-element-d42ab1c elementor-widget elementor-widget-heading" data-element_type="widget" data-id="d42ab1c" data-widget_type="heading.default">
<div class="elementor-widget-container">
<h2 class="elementor-heading-title elementor-size-default">Life!</h2> </div>
</div>
<div class="elementor-element elementor-element-c48fce7 elementor-widget elementor-widget-text-editor" data-element_type="widget" data-id="c48fce7" data-widget_type="text-editor.default">
<div class="elementor-widget-container">
<p>My last surgery was a success! I am finally healing and out of a sling for the first time in almost a year. I have also lined up a good amount of web work for next month and hopefully beyond. I have decided to drop the piece work for donations and will only accept per project proposals for open source work. I will continue to maintain KDE snaps for as long as time allows. A big thank you to everyone that has donated over the last year to fund my survival during this broken arm fiasco. I truly appreciate it!</p> </div>
</div>
<div class="elementor-element elementor-element-c0f7b20 elementor-widget elementor-widget-text-editor" data-element_type="widget" data-id="c0f7b20" data-widget_type="text-editor.default">
<div class="elementor-widget-container">
<p>With that said, if you want to drop me a donation for my work, birthday or well-being until I get paid for the aforementioned web work please do so here:</p><ul class="wp-block-list"><li><a href="https://gofund.me/561ae227" rel="noreferrer noopener" target="_blank">GoFundMe</a></li><li><a href="https://www.patreon.com/c/sgmoore" rel="noreferrer noopener" target="_blank">Patreon</a></li><li><a href="https://github.com/sponsors/ScarlettGatelyMoore?o=sd&amp;sc=t" rel="noreferrer noopener" target="_blank">Github</a></li><li><a href="https://donorbox.org/open-source-survival-fund" rel="noreferrer noopener" target="_blank">Donorbox</a></li></ul> </div>
</div>
</div>
</div>
</div></description>
<pubDate>Thu, 22 May 2025 12:49:25 +0000</pubDate>
</item>
<item>
<title>Kubuntu General News: Plasma 6.4 Beta1 available for testing</title>
<guid isPermaLink="false">https://kubuntu.org/?p=5329</guid>
<link>https://kubuntu.org/news/plasma-6-4-beta1-available-for-testing/</link>
<description><p id="block-d172a06c-2462-4906-86fc-3e208056ff7b"><br />Are you using Kubuntu 25.04 Plucky Puffin, our current stable release? Or are you already running our development builds of the upcoming 25.10 (Questing Quokka)?</p>
<p id="block-9c699339-e52d-4677-b409-c9b4fc924032">We currently have <a href="https://kde.org/announcements/plasma/6/6.3.90/">Plasma 6.3.90 (Plasma 6.4 Beta1)</a> available in our <a href="https://launchpad.net/~kubuntu-ppa/+archive/ubuntu/beta">Beta PPA</a> for Kubuntu 25.04 and for the <a href="http://cdimage.ubuntu.com/kubuntu/daily-live/current/">25.10 development series</a>.</p>
<p id="block-7b4e6602-72d0-43c0-b3f0-2d1b0eb96594">However this is a Beta release, and we should re-iterate the disclaimer:</p>
<p id="block-a55e81b0-9713-490a-8522-a3e883c91e9e"></p>
<p><strong>DISCLAIMER</strong>: This release contains untested and unstable software. It is highly recommended you <strong>do not use this version in a production environment</strong> and do not use it as your daily work environment. You risk crashes and loss of data.</p>
<p id="block-5d444010-ea6d-4273-9f29-15ec644b9564"></p>
<p id="block-d8658d77-9e53-4d05-90f1-a48116e660bc">6.4 Beta1 packages and required dependencies are available in our Beta PPA. The PPA should work whether you are currently using our backports PPA or not. If you are prepared to test via the PPA, then add the beta PPA and then upgrade:</p>
<pre class="wp-block-preformatted" id="block-cfba50ba-2e9d-4487-9d61-21bc3167f4ee">sudo add-apt-repository ppa:kubuntu-ppa/beta &amp;&amp; sudo apt full-upgrade -y</pre>
<p id="block-dc67bdb2-40cb-478f-8be2-048722434756">Then reboot.</p>
<p id="block-60926ba5-9c4a-414f-a41a-5ffdacd7745b"><em><strong>In case of issues, testers should be prepared to use ppa-purge to remove the PPA and revert/downgrade packages.</strong></em></p>
<p id="block-eb072a47-2abc-4f23-947a-04467dfbe81b">Kubuntu is part of the <a href="https://www.kde.org/community/whatiskde/">KDE community</a>, so this testing will benefit both Kubuntu as well as upstream KDE Plasma software, which is used by many other distributions too.</p>
<ul id="block-5dfd69bc-7925-48b9-956f-378d0207d24f"><li>If you believe you might have found a packaging bug, you can use <a href="https://launchpad.net/">launchpad.net</a> to post testing feedback to the Kubuntu team as a bug, or give feedback on Matrix [1], or mailing lists [2].</li><li>If you believe you have found a bug in the underlying software, then <a href="https://bugs.kde.org/">bugs.kde.org</a> is the best place to file your bug report.</li></ul>
<p id="block-1bd358e6-4a09-4d8b-a34d-90a1eaa241b4">Please review the <a href="https://community.kde.org/Plasma/Plasma_6#Plasma_6.4">planned feature list</a>, <a href="https://kde.org/announcements/plasma/5/5.24.90/"></a><a href="https://kde.org/announcements/plasma/6/6.3.90/">release announcement</a> and <a href="https://kde.org/announcements/changelogs/plasma/6/6.3.5-6.3.90/">changelog</a>.</p>
<p id="block-15544460-9659-44c0-9c72-d8b6198392bf">[Test Case]<br />* General tests:<br />– Does plasma desktop start as normal with no apparent regressions over 6.3?<br />– General workflow – testers should carry out their normal tasks, using the plasma features they normally do, and test common subsystems such as audio, settings changes, compositing, desktop affects, suspend etc.<br />* Specific tests:<br />– Identify items with front/user facing changes capable of specific testing.<br />– Test the ‘fixed’ functionality or ‘new’ feature.</p>
<p id="block-13f71df5-c42e-4782-b7e4-6613e3f0306e">Testing may involve some technical set up to do, so while you do not need to be a highly advanced K/Ubuntu user, some proficiently in apt-based package management is advisable.</p>
<p id="block-8200b920-6a21-490c-8562-64576f2386c5">Testing is very important to the quality of the software Ubuntu and Kubuntu developers package and release.</p>
<p id="block-cdc80c41-5654-4736-a57f-9738b9465e02">We need your help to get this important beta release in shape for Kubuntu and the KDE community as a whole.</p>
<p id="block-cefe282e-0ef3-4aa1-a996-278b35dc0587">Thanks!</p>
<p id="block-98c05cf6-5993-413e-b021-8c0bdbaffa4d">Please stop by the Kubuntu-devel Matrix channel on if you need clarification of any of the steps to follow.</p>
<p id="block-e997dfca-5ffb-4535-b33b-1842bcbcfcdc">[1] – <a href="https://matrix.to/#/#kubuntu-devel:ubuntu.com">https://matrix.to/#/#kubuntu-devel:ubuntu.com</a><br />[2] –<a href="https://lists.ubuntu.com/mailman/listinfo/kubuntu-devel"> https://lists.ubuntu.com/mailman/listinfo/kubuntu-devel</a><br /></p></description>
<pubDate>Sun, 18 May 2025 09:26:10 +0000</pubDate>
</item>
<item>
<title>Oliver Grawert: Rooming with Mark</title>
<guid isPermaLink="false">http://ograblog.wordpress.com/?p=389</guid>
<link>https://ograblog.wordpress.com/2025/05/16/rooming-with-mark/</link>
<description><p class="has-black-color has-text-color has-link-color wp-elements-6d4834a493ab5517648658b889ae02a2">Yesterday, exactly twenty years ago my mobile rang while I was walking the dog. <br /><br />I had just returned from Sydney about a week ago (still battling with the last remains of my Jet-lag (I had never left Europe before!)) where I had attended the UbuntuDownUnder summit and had a 30min interview on the last day (that was literally rather like having a coffee with friends after lunch) with Mark Shuttleworth and Matt Zimmerman (back then Canonicals CTO) on a nice hotel terrace directly under a tree with a colony of flying foxes sleeping above our heads.<br /><br />There was Jane Silber (CEO) on the phone, telling me: “I’m so happy to tell you you are hired! In your new role we want you to create an educational flavor of Ubuntu, there will be a debian-edu/skolelinux gathering in Bergen in Norway from the 10th to 12th of June, are you okay flying there with Mark?”<br /><br />I rushed back home and told my girlfriend: “I’m hired, and I’ll fly Canonical One on my first business trip next month!” (Canonical One was the name of Marks plane). I learned the next weeks that Canonical had indeed booked a generic scheduled flight for me and we’d only meet at the venue <img alt="🙂" class="wp-smiley" src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f642.png" style="height: 1em;" /><br /><br />The flight was a disaster, after we were boarding that small 20-seater 2 prop plane that was supposed to get us from Cologne to Amsterdam and the pilot started the engine my window all of a sudden was soaked in oil. We had to stay in the plane out on the filed while the mechanics were fixing the engine for like 2-3h so indeed I missed the connection in Amsterdam and had to stay for the night instead of arriving in Bergen the evening before the event started.<br /><br />When I arrived at the venue everyone was already busy hacking on stuff and I jumped right in alongside, finally meeting some users of LTSP (Linux Terminal Server Project) which I was upstream for at that time and working with them on the problems they faced in debian with it, tinkering with moodle as a teaching support system and looking at other edu software, meanwhile Mark was sitting on a bar-stool in a corner with his laptop hacking on launchpad code.<br /><br />When we went to our hotel in the evening it turned out they did not have our booking at all and were completely overbooked due to a jewelry exhibition they had in the house for that week. I talked like 15min to the lady behind the counter, showed her my booking confirmation PDF on the laptop, begged and flirted a lot and eventually she told us “We do have an exhibition room that we keep as spare, it only has one bed but you can have it and we will add a folding bed”. The room was actually a normal hotel room but completely set up with wallpaper tables all around the walls. <br /><br />Mark insisted to take the folding bed and I can tell you, he does not snore … (well, he didn’t back then)<br /><br />This was only the first of a plethora of adventures that followed in the upcoming 20 years, that phone call clearly changed my life and the company gave me the opportunity to work with the brightest, sharpest and most intelligent people on the planet in and outside of Canonical.<br /><br />It surely changed a lot over these years (when I started we were building the distro with 18 people in the distro team and did that for quite a few years before it actually got split into server, foundations, kernel and desktop teams) but it never lost its special spirit of having these exceptional people with such a high focus on bringing opensource to everyone and making it accessible to everyone. <br />Indeed, with growth comes the requirement to make more money to pay the people, the responsibility to give your employees a certain amount of security and persistence grows, but Canonical and especially Mark have always managed to keep the balance to not lose that focus and do the right thing in the end.<br /><br />Ten years ago I said “onward to the next ten!!”, I won’t really say “onward to the nest 20!” today, not because I ever plan to resign but simply because I doubt I still want to work full time when I’m 75 <img alt="😉" class="wp-smiley" src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f609.png" style="height: 1em;" /><br /><br />Thank you Mark for dragging me into this adventure and thank you for still having me! I still love the ride!!</p>
<p></p>
<p></p>
<p></p></description>
<pubDate>Fri, 16 May 2025 14:34:17 +0000</pubDate>
</item>
<item>
<title>Kubuntu General News: Plasma 6.3.5 update for Kubuntu 25.04 available via PPA</title>
<guid isPermaLink="false">https://kubuntu.org/?p=5326</guid>
<link>https://kubuntu.org/news/plasma-6-3-5-update-for-kubuntu-25-04-available-via-ppa/</link>
<description><p>We are pleased to announce that the <a href="https://kde.org/announcements/changelogs/plasma/6/6.3.4-6.3.5/">Plasma 6.3.5 bugfix update</a> is now available for Kubuntu 25.04 Plucky Puffin in our backports PPA.</p>
<p>As usual with our PPAs, there is the caveat that the PPA may receive additional updates and new releases of KDE Plasma, Gear (Apps), and Frameworks, plus other apps and required libraries. Users should always review proposed updates to decide whether they wish to receive them.</p>
<p id="block-41439926-19ff-4ba1-b2d8-e1510a46c91c"><strong>To upgrade:</strong></p>
<p id="block-064bf9c0-d3e6-4ba1-b03c-8e521932d684">Add the following repository to your software sources list:</p>
<p id="block-a7e92586-3a90-42d3-9399-13a4a1b851b3"><strong><em>ppa:kubuntu-ppa/backports</em></strong></p>
<p id="block-6c6e34fc-0229-434c-895b-f9d88c130046">or if it is already added, the updates should become available via your preferred update method.</p>
<p id="block-b4604309-93d2-417e-80a1-8cc452715567">The PPA can be added manually in the Konsole terminal with the command:</p>
<p id="block-d080f84a-57e9-4b78-8d77-d9a43b4d4431"><em><code>sudo add-apt-repository ppa:kubuntu-ppa/backports</code></em></p>
<p id="block-719edd42-50bc-4443-93e2-96b65761e8f8">and packages then updated with</p>
<p id="block-30a646d4-b528-46f4-8cd0-149b056c5689"><em>sudo apt full-upgrade</em></p>
<p>We hope you enjoy using Plasma 6.3.5!</p>
<p>Issues with Plasma itself can be reported on the KDE bugtracker [1]. In the case of packaging or other issues, please provide feedback on our mailing list [2], and/or file a bug against our PPA packages [3].</p>
<p><em><em>1. KDE bugtracker:</em>:https://bugs.kde.org</em><br /><em>2. Kubuntu-devel mailing list: https://lists.u<br />3. Kubuntu ppa bugs: https://bugs.launchpad.net/kubuntu-ppa</em></p></description>
<pubDate>Thu, 08 May 2025 18:28:15 +0000</pubDate>
</item>
<item>
<title>Colin Watson: Free software activity in April 2025</title>
<guid isPermaLink="false">tag:www.chiark.greenend.org.uk,2025-05-04:/~cjwatson/blog/activity-2025-04.html</guid>
<link>https://www.chiark.greenend.org.uk/~cjwatson/blog/activity-2025-04.html</link>
<description><p>About 90% of my Debian contributions this month were
<a href="https://www.freexian.com/about/debian-contributions/">sponsored</a> by Freexian.</p>
<p>You can also support my work directly via
<a href="https://liberapay.com/cjwatson">Liberapay</a>.</p>
<h2>Request for OpenSSH debugging help</h2>
<p>Following the OpenSSH work described below, I have an <a href="https://bugs.debian.org/1103418">open
report</a> about the <code>sshd</code> server sometimes
crashing when clients try to connect to it. I can’t reproduce this myself,
and arm’s-length debugging is very difficult, but three different users have
reported it. For the time being I can’t pass it upstream, as it’s entirely
possible it’s due to a Debian patch.</p>
<p>Is there anyone reading this who can reproduce this bug and is capable of
doing some independent debugging work, most likely involving bisecting
changes to OpenSSH? I’d suggest first seeing whether a build of the
unmodified upstream 10.0p2 release exhibits the same bug. If it does, then
bisect between 9.9p2 and 10.0p2; if not, then bisect the list of Debian
patches. This would be extremely helpful, since at the moment it’s a bit
like trying to look for a needle in a haystack from the next field over by
sending instructions to somebody with a magnifying glass.</p>
<h2>OpenSSH</h2>
<p>I upgraded the Debian packaging to <a href="https://www.openssh.com/releasenotes.html#10.0p2">OpenSSH
10.0p1</a> (now <a href="https://lists.mindrot.org/pipermail/openssh-unix-announce/2025-April/000163.html">designated
10.0p2</a>
by upstream due to a mistake in the release process, but they’re the same
thing), fixing <a href="https://bugs.debian.org/1102603"><span class="caps">CVE</span>-2025-32728</a>. This also
involved a <a href="https://bugs.debian.org/1102658">diffoscope bug report</a> due to
the version number change.</p>
<p>I enabled the new <code>--with-linux-memlock-onfault</code> configure option to protect
<code>sshd</code> against being swapped out, but this turned out to cause test failures
on riscv64, so I disabled it again there. Debugging this took some time
since I needed to do it under emulation, and in the process of setting up a
testbed I <a href="https://gitlab.com/larswirzenius/vmdb2/-/merge_requests/154">added riscv64 support to
vmdb2</a>.</p>
<p>In <a href="https://bugs.debian.org/1102643">coordination</a> with the wtmpdb
maintainer, I enabled the new Y2038-safe native wtmpdb support in OpenSSH,
so <code>wtmpdb last</code> now reports the correct tty.</p>
<p>I fixed a couple of packaging bugs:</p>
<ul>
<li><a href="https://bugs.debian.org/1072184">Please stop writing /var/log/btmp</a></li>
<li><a href="https://bugs.debian.org/1095686">Restore sshd_config(5) documentation about rdomain</a></li>
</ul>
<p>I reviewed and merged several packaging contributions from others:</p>
<ul>
<li><a href="https://bugs.debian.org/1103037">ssh-agent: Improve systemd user service socket
activation</a> (Daniel Kahn Gillmor)</li>
<li><a href="https://salsa.debian.org/ssh-team/openssh/-/merge_requests/30">Switch from adduser to
sysusers.d</a>
(Luca Boccassi)</li>
<li><a href="https://salsa.debian.org/ssh-team/openssh/-/merge_requests/31">Add sshd-keygen
service</a>
(Luca Boccassi)</li>
</ul>
<h2>dput-ng</h2>
<p>Since we <a href="https://salsa.debian.org/freexian-team/debusine/-/issues/713">added <code>dput-ng</code> integration to
Debusine</a>
recently, I wanted to make sure that it was in good condition in trixie, so
I fixed <a href="https://bugs.debian.org/1078613">dput-ng: will <span class="caps">FTBFS</span> during trixie support
period</a>. Previously a similar bug had been
fixed by just using different Ubuntu release names in tests; this time I
made the tests independent of the current supported release data returned by
<code>distro_info</code>, so this shouldn’t come up again.</p>
<p>We also ran into <a href="https://bugs.debian.org/983160">dput-ng: —override doesn’t override profile
parameters</a>, which needed somewhat more
extensive changes since it turned out that that option had never worked. I
fixed this after some discussion with Paul Tagliamonte to make sure I
understood the background properly.</p>
<h2>man-db</h2>
<p>I released <a href="https://gitlab.com/man-db/man-db/-/releases/2.13.1">man-db
2.13.1</a>. This just
included various small fixes and a number of translation updates, but I
wanted to get it into trixie in order to include a contribution to <a href="https://gitlab.com/man-db/man-db/-/issues/48">increase
the <code>MAX_NAME</code> constant</a>,
since that was now causing problems for some pathological cases of manual
pages in the wild that documented a very large number of terms.</p>
<h2>debmirror</h2>
<p>I fixed one security bug: <a href="https://bugs.debian.org/1104091">debmirror prints credentials with
—progress</a>.</p>
<h2>Python team</h2>
<p>I upgraded these packages to new upstream versions:</p>
<ul>
<li>celery</li>
<li>django-modeltranslation (maintained by Freexian)</li>
<li>django-phonenumber-field</li>
<li>djangorestframework</li>
<li>kombu</li>
<li>orderly-set</li>
<li>pox</li>
<li>pydantic-extra-types</li>
<li><a href="https://bugs.debian.org/1072833">python-cmarkgfm</a> (fixing
<a href="https://security-tracker.debian.org/tracker/CVE-2022-39209"><span class="caps">CVE</span>-2022-39209</a>,
<a href="https://security-tracker.debian.org/tracker/CVE-2023-22483"><span class="caps">CVE</span>-2023-22483</a>,
<a href="https://security-tracker.debian.org/tracker/CVE-2023-22484"><span class="caps">CVE</span>-2023-22484</a>,
<a href="https://security-tracker.debian.org/tracker/CVE-2023-22485"><span class="caps">CVE</span>-2023-22485</a>,
<a href="https://security-tracker.debian.org/tracker/CVE-2023-22486"><span class="caps">CVE</span>-2023-22486</a>,
<a href="https://security-tracker.debian.org/tracker/CVE-2023-24824"><span class="caps">CVE</span>-2023-24824</a>,
<a href="https://security-tracker.debian.org/tracker/CVE-2023-26485"><span class="caps">CVE</span>-2023-26485</a>,
and
<a href="https://security-tracker.debian.org/tracker/CVE-2023-37463"><span class="caps">CVE</span>-2023-37463</a>)</li>
<li>python-django-crispy-forms</li>
<li>python-django-extensions (fixing incompatibilities with Python 3.12:
<a href="https://bugs.debian.org/1040091">#1040091</a>,
<a href="https://bugs.debian.org/1040119">#1040119</a>)</li>
<li>python-django-pgtrigger</li>
<li>python-django-test-migrations</li>
<li>python-holidays</li>
<li>python-legacy-cgi</li>
<li>python-pydash</li>
<li>python-redis (4.3.4 to 5.2.1; needed some autopkgtest adjustments)</li>
<li>python-tblib</li>
<li>python-typing-extensions</li>
<li>trove-classifiers</li>
<li>xonsh</li>
</ul>
<p>In bookworm-backports, I updated these packages:</p>
<ul>
<li>python-django to 3:4.2.20-1 (issuing
<a href="https://backports.debian.org/news/BSA-123_Security_Update_for_python-django/"><span class="caps">BSA</span>-123</a>)</li>
<li>python-django-pgtrigger to 4.13.3</li>
</ul>
<p>I dropped a stale build-dependency from
<a href="https://bugs.debian.org/1102526">python-aiohttp-security</a> that kept it out
of testing (though unfortunately too late for the trixie freeze).</p>
<p>I fixed or helped to fix various other build/test failures:</p>
<ul>
<li><a href="https://bugs.debian.org/1101621">billiard</a> (<a href="https://github.com/celery/billiard/pull/423">contributed
upstream</a>)</li>
<li><a href="https://bugs.debian.org/1102380">bleak-retry-connector</a></li>
<li><a href="https://bugs.debian.org/1103184">cairosvg</a></li>
<li><a href="https://bugs.debian.org/1103066">errbot</a> (<a href="https://github.com/errbotio/errbot/pull/1724">contributed
upstream</a>)</li>
<li><a href="https://bugs.debian.org/1103116">haversine</a></li>
<li><a href="https://bugs.debian.org/1104240">json-tricks</a></li>
<li><a href="https://bugs.debian.org/1103146">jsonpickle</a> (<a href="https://github.com/jsonpickle/jsonpickle/pull/560">contributed
upstream</a>)</li>
<li><a href="https://salsa.debian.org/python-team/packages/lazygal/-/commit/ea71ae96f4a48dd390f0e2b514234ce864ba430f">lazygal</a></li>
<li><a href="https://bugs.debian.org/1101856">mypy</a></li>
<li><a href="https://bugs.debian.org/1102283">pydantic</a></li>
<li><a href="https://bugs.debian.org/1101417">pydantic-core</a></li>
<li><a href="https://bugs.debian.org/1101859">pydantic-settings</a></li>
<li><a href="https://bugs.debian.org/1103197">pympress</a> (<a href="https://github.com/Cimbali/pympress/pull/333">contributed
upstream</a>)</li>
<li><a href="https://bugs.debian.org/1101861">pysequoia</a></li>
<li><a href="https://bugs.debian.org/1103103">pysodium</a> (<a href="https://github.com/stef/pysodium/pull/117">contributed
upstream</a>)</li>
<li><a href="https://salsa.debian.org/python-team/packages/python-decorator/-/commit/e9d3b610e7cc7e3766ea0be2b21b3489dc11d9d9">python-decorator</a></li>
<li><a href="https://bugs.debian.org/1103593">python-djvulibre</a> (<a href="https://github.com/FriedrichFroebel/python-djvulibre/pull/25">contributed
upstream</a>)</li>
<li><a href="https://bugs.debian.org/1103140">python-momepy</a> (<a href="https://github.com/pysal/momepy/pull/698">contributed
upstream</a>)</li>
<li><a href="https://bugs.debian.org/1103362">python-msgspec</a></li>
<li><a href="https://bugs.debian.org/1103581">python-tz</a></li>
<li><a href="https://bugs.debian.org/1103501">storm</a></li>
<li><a href="https://bugs.debian.org/1103208">supysonic</a></li>
<li><a href="https://bugs.debian.org/1101258">uvloop</a> (<a href="https://github.com/MagicStack/uvloop/pull/662">contributed
upstream</a>)</li>
</ul>
<p>I packaged <a href="https://bugs.debian.org/1102391">python-typing-inspection</a>,
needed for a new upstream version of pydantic.</p>
<p>I
<a href="https://salsa.debian.org/python-team/tools/dh-python/-/merge_requests/57">documented</a>
the <code>architecture</code> field in <code>debian/tests/autopkgtest-pkg-pybuild.conf</code>
files.</p>
<p>I fixed other odds and ends of bugs:</p>
<ul>
<li><a href="https://bugs.debian.org/1087330">python-pydash: please make the build reproducible</a></li>
<li><a href="https://bugs.debian.org/1092859">thunarx-python: fails to allow plugins to
run</a> / <a href="https://bugs.debian.org/1103704">thunarx-python: fails to discover
<span class="caps">SONAME</span> of libpython, tries to load
/usr/lib/<span class="caps">MULTIARCH</span>/lib.so.1.0</a></li>
<li><a href="https://bugs.debian.org/1086561">ttconv: package installs superfluous files under /usr/lib/python3/dist-packages</a></li>
</ul>
<h2>Science team</h2>
<p>I fixed various build/test failures:</p>
<ul>
<li><a href="https://bugs.debian.org/1102477">python-vispy</a> (also fixing <a href="https://bugs.debian.org/1064607">unhandled
failures to build documentation can
occur</a> while I was there)</li>
<li><a href="https://bugs.debian.org/1103004">skimage</a></li>
</ul></description>
<pubDate>Sun, 04 May 2025 15:38:13 +0000</pubDate>
</item>
<item>
<title>Simos Xenitellis: How to run a Linux Desktop virtual machine on Incus</title>
<guid isPermaLink="false">https://blog.simos.info/?p=51377</guid>
<link>https://blog.simos.info/how-to-run-a-linux-desktop-virtual-machine-on-incus/</link>
<description><p><a href="https://linuxcontainers.org/incus/">Incus</a> is a manager for virtual machines and system containers.</p>
<p>A <strong>virtual machine</strong> (VM) is an instance of an operating system that runs on a computer, along with the main operating system. A virtual machine uses hardware virtualization features for the separation from the main operating system. With virtual machines, the full operating system boots up in them. While in most cases you would run Linux on a VM without a desktop environment, you can also run Linux with a desktop environment (like in VirtualBox and VMWare).</p>
<p>In <a href="https://blog.simos.info/how-to-run-a-windows-virtual-machine-on-incus-on-linux/">How to run a Windows virtual machine on Incus on Linux</a> we saw how to run a run a Windows VM on Incus. In this post we see how to run a Linux Desktop virtual machine on Incus. </p>
<h2 class="simpletoc-title">Table of Contents</h2>
<ul class="simpletoc-list">
<li><a href="https://blog.simos.info/category/planet-ubuntu/feed/?mrss=off#updates">Updates</a>
</li>
<li><a href="https://blog.simos.info/category/planet-ubuntu/feed/?mrss=off#prerequisites">Prerequisites</a>
</li>
<li><a href="https://blog.simos.info/category/planet-ubuntu/feed/?mrss=off#cheat-sheet">Cheat sheet</a>
</li>
<li><a href="https://blog.simos.info/category/planet-ubuntu/feed/?mrss=off#availability-of-images">Availability of images</a>
</li>
<li><a href="https://blog.simos.info/category/planet-ubuntu/feed/?mrss=off#booting-a-desktop-linux-vm-on-incus">Booting a desktop Linux VM on Incus</a>
<ul><li>
<a href="https://blog.simos.info/category/planet-ubuntu/feed/?mrss=off#booting-the-ubuntu-desktop-image-on-incus">Booting the Ubuntu desktop image on Incus</a>
</li>
<li><a href="https://blog.simos.info/category/planet-ubuntu/feed/?mrss=off#booting-the-archlinux-desktop-image-on-incus">Booting the ArchLinux desktop image on Incus</a>
</li>
<li><a href="https://blog.simos.info/category/planet-ubuntu/feed/?mrss=off#booting-the-opensuse-desktop-image-on-incus">Booting the OpenSUSE desktop image on Incus</a>
</li>
</ul>
</li><li><a href="https://blog.simos.info/category/planet-ubuntu/feed/?mrss=off#troubleshooting">Troubleshooting</a>
<ul><li>
<ul><li>
<a href="https://blog.simos.info/category/planet-ubuntu/feed/?mrss=off#i-closed-the-desktop-window-but-the-vm-is-running-how-do-i-get-it-back-up">I closed the desktop window but the VM is running. How do I get it back up?</a>
</li>
<li><a href="https://blog.simos.info/category/planet-ubuntu/feed/?mrss=off#error-this-console-is-already-connected-force-is-required-to-take-it-over">Error: This console is already connected. Force is required to take it over.</a>
</li>
<li><a href="https://blog.simos.info/category/planet-ubuntu/feed/?mrss=off#error-instance-is-not-running">Error: Instance is not running</a>
</li>
<li><a href="https://blog.simos.info/category/planet-ubuntu/feed/?mrss=off#i-get-no-audio-from-the-desktop-vm-how-do-i-get-sound-in-the-desktop-vm">I get no audio from the desktop VM! How do I get sound in the desktop VM?</a>
</li>
<li><a href="https://blog.simos.info/category/planet-ubuntu/feed/?mrss=off#how-do-i-shutdown-the-desktop-vm">How do I shutdown the desktop VM?</a>
</li>
<li><a href="https://blog.simos.info/category/planet-ubuntu/feed/?mrss=off#error-failed-instance-creation-the-image-used-by-this-instance-is-incompatible-with-secureboot-please-set-securitysecurebootfalse-on-the-instance">Error: Failed instance creation: The image used by this instance is incompatible with secureboot. Please set security.secureboot=false on the instance</a>
</li>
<li><a href="https://blog.simos.info/category/planet-ubuntu/feed/?mrss=off#error-failed-instance-creation-failed-creating-instance-record-add-instance-info-to-the-database-failed-to-create-instances-entry-unique-constraint-failed-instancesprojectid-instancesname">Error: Failed instance creation: Failed creating instance record: Add instance info to the database: Failed to create “instances” entry: UNIQUE constraint failed: instances.project_id, instances.name</a>
</li>
</ul>
</li>
</ul>
</li></ul>
<h2 class="wp-block-heading" id="updates">Updates</h2>
<p>No updates yet.</p>
<h2 class="wp-block-heading" id="prerequisites">Prerequisites</h2>
<ol class="wp-block-list">
<li>You should have <a href="https://linuxcontainers.org/incus/docs/main/tutorial/first_steps/">a system that runs Incus</a>. </li>
<li>A system with support for hardware virtualization so that it can run virtual machines.</li>
<li>A virtual machine image of your preferred Linux desktop distribution.</li>
</ol>
<h2 class="wp-block-heading" id="cheat-sheet">Cheat sheet</h2>
<p>You should specify how much RAM memory you are giving to the VM. The default is only 1GiB of RAM, which is not enough for desktop VMs. The <code>--console=vga</code> launches for you the Remote Viewer GUI application to allow you to use the desktop in a window.</p>
<pre class="wp-block-code"><code>$ incus image list images:desktop # List all available desktop images
$ incus launch --vm images:ubuntu/jammy/desktop mydesktop -c limits.memory=3GiB --console=vga
$ incus console mydesktop --type=vga # Reconnect to already running instance
$ incus start mydesktop --console=vga # Start an existing desktop VM</code></pre>
<h2 class="wp-block-heading" id="availability-of-images">Availability of images</h2>
<p>Currently, Incus provides you with the following VM images of Linux desktop distributions. The architecture is <code>x86_64</code>.</p>
<p>Run the following command to list all available Linux desktop images. <code>incus image</code> is the section of Incus that deals with the management of images. The <code>list</code> command lists the available images of a <em>remote</em>/repository, the default being <code>images:</code> (run <code>incus remote list</code> for the full list of <em>remotes</em>). After the colon (<code>:</code>), you type <em>filter</em> keywords, and in this case we typed <code>desktop</code> to show images that have the word <code>desktop</code> in them (to show only Desktop images). We are interested in a few columns only, therefore <code>-c ldt</code> only shows the columns for the <em>Alias</em>, the <em>Description</em> and the <em>Type</em>.</p>
<pre class="wp-block-code"><code>$ incus image list images:desktop -c ldt
+------------------------------------------+---------------------------+-----------------+
| ALIAS | DESCRIPTION | TYPE |
+------------------------------------------+---------------------------+-----------------+
| archlinux/desktop-gnome (3 more) | Archlinux current amd64 | VIRTUAL-MACHINE |
+------------------------------------------+---------------------------+-----------------+
| opensuse/15.5/desktop-kde (1 more) | Opensuse 15.5 amd64 | VIRTUAL-MACHINE |
+------------------------------------------+---------------------------+-----------------+
| opensuse/15.6/desktop-kde (1 more) | Opensuse 15.6 amd64 | VIRTUAL-MACHINE |
+------------------------------------------+---------------------------+-----------------+
| opensuse/tumbleweed/desktop-kde (1 more) | Opensuse tumbleweed amd64 | VIRTUAL-MACHINE |
+------------------------------------------+---------------------------+-----------------+
| ubuntu/24.10/desktop (3 more) | Ubuntu oracular amd64 | VIRTUAL-MACHINE |
+------------------------------------------+---------------------------+-----------------+
| ubuntu/focal/desktop (3 more) | Ubuntu focal amd64 | VIRTUAL-MACHINE |
+------------------------------------------+---------------------------+-----------------+
| ubuntu/jammy/desktop (3 more) | Ubuntu jammy amd64 | VIRTUAL-MACHINE |
+------------------------------------------+---------------------------+-----------------+
| ubuntu/noble/desktop (3 more) | Ubuntu noble amd64 | VIRTUAL-MACHINE |
+------------------------------------------+---------------------------+-----------------+
| ubuntu/plucky/desktop (1 more) | Ubuntu plucky amd64 | VIRTUAL-MACHINE |
+------------------------------------------+---------------------------+-----------------+
$ </code></pre>
<p>These images have been generated with the utility <code>distrobuilder</code>, <a href="https://github.com/lxc/distrobuilder">https://github.com/lxc/distrobuilder</a> The purpose of the utility is to prepare the images so that when we launch them, we get immediately the desktop environment and do not perform any manual configuration. The configuration files for distrobuilder to create these images can be found at <a href="https://github.com/lxc/lxc-ci/tree/main/images">https://github.com/lxc/lxc-ci/tree/main/images</a> For example, the <code>archlinux.yaml</code> configuration file has a section to create the desktop image, along with the container and other virtual machine images. </p>
<p>The full list of Incus images are also available on the Web, through the website <a href="https://images.linuxcontainers.org/">https://images.linuxcontainers.org/</a> It is possible to generate more such desktop images by following the steps of the existing configuration files. Perhaps a Kali Linux desktop image would be very useful. In the <a href="https://images.linuxcontainers.org/">https://images.linuxcontainers.org/</a> website you can also view the build logs that were generated while building the images, and figure out what parameters are needed for <code>distrobuilder</code> to build them (along with the actual configuration file). For example, here are the logs for the ArchLinux desktop image, <a href="https://images.linuxcontainers.org/images/archlinux/current/amd64/desktop-gnome/">https://images.linuxcontainers.org/images/archlinux/current/amd64/desktop-gnome/</a></p>
<p>Up to this point we got a list of the available virtual machine images that are provided by Incus. We are ready to boot them.</p>
<h2 class="wp-block-heading" id="booting-a-desktop-linux-vm-on-incus">Booting a desktop Linux VM on Incus</h2>
<p>When launching a VM, Incus provides by default 1GiB RAM and 10GiB of disk space. The disk space is generally OK, but the RAM is too little for a desktop image (it’s OK for non-desktop images). For example, for an Ubuntu desktop image, the instance requires about 1.2GB of memory to start up and obviously more to run other programs. Therefore, if we do not specify more RAM, then the VM would struggle to make do of the mere 1GiB of RAM.</p>
<h3 class="wp-block-heading" id="booting-the-ubuntu-desktop-image-on-incus">Booting the Ubuntu desktop image on Incus</h3>
<p>Here is the command to launch a desktop image. We use <code>incus launch</code> to launch the image. It’s a VM, hence <code>--vm</code>. We are using the image from the <code>images:</code> remote, the one called <code>ubuntu/plucky/desktop</code> (it’s the last from the list of the previous section). We configure a new limit for the memory usage, <code>-c limits.memory=3GiB</code>, so that the instance will be able to run successfully. Finally, the console is not textual but graphical. We specify that with <code>--console=vga</code> which means that Incus will launch the remote desktop utility for us. </p>
<pre class="wp-block-code"><code>$ incus launch --vm images:ubuntu/plucky/desktop mydesktop -c limits.memory=3GiB --console=vga
Launching mydesktop
</code></pre>
<p>Here is a screenshot of the new window with the running desktop virtual machine. </p>
<figure class="wp-block-image size-large"><a href="https://i0.wp.com/blog.simos.info/wp-content/uploads/2025/05/Screenshot-from-2025-05-01-23-03-37.png?ssl=1"><img alt="" class="wp-image-51379" data-attachment-id="51379" data-comments-opened="1" data-image-caption="" data-image-description="" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Screenshot from 2025-05-01 23-03-37" data-large-file="https://i0.wp.com/blog.simos.info/wp-content/uploads/2025/05/Screenshot-from-2025-05-01-23-03-37.png?fit=750%2C508&amp;ssl=1" data-medium-file="https://i0.wp.com/blog.simos.info/wp-content/uploads/2025/05/Screenshot-from-2025-05-01-23-03-37.png?fit=300%2C203&amp;ssl=1" data-orig-file="https://i0.wp.com/blog.simos.info/wp-content/uploads/2025/05/Screenshot-from-2025-05-01-23-03-37.png?fit=1300%2C880&amp;ssl=1" data-orig-size="1300,880" data-permalink="https://blog.simos.info/how-to-run-a-linux-desktop-virtual-machine-on-incus/screenshot-from-2025-05-01-23-03-37/" data-recalc-dims="1" height="508" src="https://i0.wp.com/blog.simos.info/wp-content/uploads/2025/05/Screenshot-from-2025-05-01-23-03-37.png?resize=750%2C508&amp;ssl=1" width="750" /></a>Screenshot of images:ubuntu/plucky/desktop</figure>
<p>Now we closed the wizard.</p>
<figure class="wp-block-image size-large"><a href="https://i0.wp.com/blog.simos.info/wp-content/uploads/2025/05/image.png?ssl=1"><img alt="" class="wp-image-51380" data-attachment-id="51380" data-comments-opened="1" data-image-caption="" data-image-description="" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image" data-large-file="https://i0.wp.com/blog.simos.info/wp-content/uploads/2025/05/image.png?fit=750%2C508&amp;ssl=1" data-medium-file="https://i0.wp.com/blog.simos.info/wp-content/uploads/2025/05/image.png?fit=300%2C203&amp;ssl=1" data-orig-file="https://i0.wp.com/blog.simos.info/wp-content/uploads/2025/05/image.png?fit=1300%2C880&amp;ssl=1" data-orig-size="1300,880" data-permalink="https://blog.simos.info/how-to-run-a-linux-desktop-virtual-machine-on-incus/image-13/" data-recalc-dims="1" height="508" src="https://i0.wp.com/blog.simos.info/wp-content/uploads/2025/05/image.png?resize=750%2C508&amp;ssl=1" width="750" /></a>Screenshot of images:ubuntu/plucky/desktop after we close the wizard.</figure>
<h3 class="wp-block-heading" id="booting-the-archlinux-desktop-image-on-incus">Booting the ArchLinux desktop image on Incus</h3>
<p>I cannot get this image to show the desktop. If someone can make this work, please post in a comment.</p>
<pre class="wp-block-code"><code>$ incus launch --vm images:archlinux/desktop-gnome mydesktop -c limits.memory=3GiB --console=vga -c security.secureboot=false
Launching mydesktop
</code></pre>
<h3 class="wp-block-heading" id="booting-the-opensuse-desktop-image-on-incus">Booting the OpenSUSE desktop image on Incus</h3>
<pre class="wp-block-code"><code>$ incus launch --vm images:opensuse/15.5/desktop-kde mydesktop -c limits.memory=3GiB --console=vga
Launching mydesktop
</code></pre>
<figure class="wp-block-image size-large"><a href="https://i0.wp.com/blog.simos.info/wp-content/uploads/2025/05/Screenshot-from-2025-05-02-01-41-39.png?ssl=1"><img alt="" class="wp-image-51382" data-attachment-id="51382" data-comments-opened="1" data-image-caption="" data-image-description="" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Screenshot from 2025-05-02 01-41-39" data-large-file="https://i0.wp.com/blog.simos.info/wp-content/uploads/2025/05/Screenshot-from-2025-05-02-01-41-39.png?fit=750%2C508&amp;ssl=1" data-medium-file="https://i0.wp.com/blog.simos.info/wp-content/uploads/2025/05/Screenshot-from-2025-05-02-01-41-39.png?fit=300%2C203&amp;ssl=1" data-orig-file="https://i0.wp.com/blog.simos.info/wp-content/uploads/2025/05/Screenshot-from-2025-05-02-01-41-39.png?fit=1300%2C880&amp;ssl=1" data-orig-size="1300,880" data-permalink="https://blog.simos.info/how-to-run-a-linux-desktop-virtual-machine-on-incus/screenshot-from-2025-05-02-01-41-39/" data-recalc-dims="1" height="508" src="https://i0.wp.com/blog.simos.info/wp-content/uploads/2025/05/Screenshot-from-2025-05-02-01-41-39.png?resize=750%2C508&amp;ssl=1" width="750" /></a></figure>
<h2 class="wp-block-heading" id="troubleshooting">Troubleshooting</h2>
<h4 class="wp-block-heading" id="i-closed-the-desktop-window-but-the-vm-is-running-how-do-i-get-it-back-up">I closed the desktop window but the VM is running. How do I get it back up?</h4>
<p>If you closed the Remote Viewer window, you can get Incus to start it again with the following command. By doing so, you are actually reconnecting back to the VM and continue working from where you left off.</p>
<p>We are using the <code>incus console</code> action to connect to the running <em>mydesktop</em> instance and request access through the Remote Viewer (rather than a text console).</p>
<pre class="wp-block-code"><code>$ incus console mydesktop --type=vga
</code></pre>
<h4 class="wp-block-heading" id="error-this-console-is-already-connected-force-is-required-to-take-it-over">Error: This console is already connected. Force is required to take it over.</h4>
<p>You are already connected to the desktop VM with the Remote Viewer and you are trying to connect again. Either go to the existing Remote Viewer window, or add the parameter <code>--force</code> to close the existing Remote Viewer window and open a new one. </p>
<h4 class="wp-block-heading" id="error-instance-is-not-running">Error: Instance is not running</h4>
<p>You are trying to connect to a desktop VM with the Remote Viewer but the instance (which already exists) is not running. Use the action <code>incus start</code> to start the virtual machine, along with the <code>--type=vga</code> parameter to get Incus to launch the Remote Viewer for you.</p>
<pre class="wp-block-code"><code>$ incus start mydesktop --console=vga</code></pre>
<h4 class="wp-block-heading" id="i-get-no-audio-from-the-desktop-vm-how-do-i-get-sound-in-the-desktop-vm">I get no audio from the desktop VM! How do I get sound in the desktop VM?</h4>
<p>This requires extra steps which I do not show yet. There are three options. The first is to use the QEMU device emulation to emulate a sound device in the VM. The second is to somehow push an audio device into the VM so that this audio device is used exclusively in the VM (have not tried this but I think it’s possible). The third and perhaps best option is to use network audio with PulseAudio/Pipewire. You enable network audio on your desktop and then configure the VM instance to connect to that network audio server. I have tried that and it worked well for me. The downside is that the Firefox snap package in the VM could not figure out that there is network audio there and I could not get audio in that application. </p>
<h4 class="wp-block-heading" id="how-do-i-shutdown-the-desktop-vm">How do I shutdown the desktop VM?</h4>
<p>Use the desktop UI to perform the shutdown. The VM will shut down cleanly.</p>
<h4 class="wp-block-heading" id="error-failed-instance-creation-the-image-used-by-this-instance-is-incompatible-with-secureboot-please-set-securitysecurebootfalse-on-the-instance">Error: Failed instance creation: The image used by this instance is incompatible with secureboot. Please set security.secureboot=false on the instance</h4>
<p>You tried to launch a virtual machine with SecureBoot enabled but the image does not support SecureBoot. You need to disable SecureBoot when you launch this image. The instance has been created but is unable to run unless you disable SecureBoot. You can either disable SecureBoot through an Incus configuration for this image, or just delete the instance, and try again with the parameter <code>-c security.secureboot=false</code>. </p>
<p>Here is how to disable SecureBoot, then try to <code>incus start</code> that instance. </p>
<pre class="wp-block-code"><code>$ incus config set mydesktop security.secureboot=true</code></pre>
<p>Here is how you would enable that flag when you launch such a VM.</p>
<pre class="wp-block-code"><code>incus launch --vm images:archlinux/desktop-gnome mydesktop -c limits.memory=3GiB --console=vga -c security.secureboot=false</code></pre>
<p>Note that official Ubuntu images can work with SecureBoot enabled, most others don’t. It has to do with the Linux kernel being digitally signed by some certification authority.</p>
<h4 class="wp-block-heading" id="error-failed-instance-creation-failed-creating-instance-record-add-instance-info-to-the-database-failed-to-create-instances-entry-unique-constraint-failed-instancesprojectid-instancesname">Error: Failed instance creation: Failed creating instance record: Add instance info to the database: Failed to create “instances” entry: UNIQUE constraint failed: instances.project_id, instances.name</h4>
<p>This error message is a bit cryptic. It just means that you are trying to create or launch an instance while the instance already exists. Read as <em><strong>Error: The instance name already exists</strong></em>.</p>
<p></p>
<div class="saboxplugin-wrap"><div class="saboxplugin-tab"><div class="saboxplugin-gravatar"><img alt="Simos Xenitellis" class="avatar avatar-100 photo" height="100" src="https://secure.gravatar.com/avatar/fadb0e15964fa5c57144f8b9bccf3985281d04e3817a69d0885c0b911d66c59d?s=100&amp;d=wavatar&amp;r=g" width="100" /></div><div class="saboxplugin-authorname"><a class="vcard author" href="https://blog.simos.info/author/simos/" rel="author"><span class="fn">Simos Xenitellis</span></a></div><div class="saboxplugin-desc"><div></div></div><div class="saboxplugin-web "><a href="https://blog.simos.info/" target="_self">blog.simos.info/</a></div><div class="clearfix"></div></div></div></description>
<pubDate>Thu, 01 May 2025 22:51:53 +0000</pubDate>
</item>
<item>
<title>Scarlett Gately Moore: KDE Snaps and life. Spirits are up, but I need a little help please</title>
<guid isPermaLink="false">https://www.scarlettgatelymoore.dev/?p=1891</guid>
<link>https://www.scarlettgatelymoore.dev/kde-snaps-and-life-spirits-are-up-but-i-need-a-little-help-please/</link>
<description><figure class="wp-block-image size-large"><img alt="" class="wp-image-1892" height="1024" src="https://www.scarlettgatelymoore.dev/wp-content/uploads/20250425_091105-768x1024.jpg" width="768" /></figure>
<p>I was just released from the hospital after a 3 day stay for my ( hopefully ) last surgery. There was concern with massive blood loss and low heart rate. I have stabilized and have come home. Unfortunately, they had to prescribe many medications this round and they are extremely expensive and used up all my funds. I need gas money to get to my post-op doctors appointments, and food would be cool. I would appreciate any help, even just a dollar!</p>
<ul class="wp-block-list">
<li><a href="https://gofund.me/561ae227" rel="noreferrer noopener" target="_blank">GoFundMe</a></li>
<li><a href="https://www.patreon.com/c/sgmoore" rel="noreferrer noopener" target="_blank">Patreon</a></li>
<li><a href="https://github.com/sponsors/ScarlettGatelyMoore?o=sd&amp;sc=t" rel="noreferrer noopener" target="_blank">Github</a></li>
<li><a href="https://donorbox.org/open-source-survival-fund" rel="noreferrer noopener" target="_blank">Donorbox</a></li>
</ul>
<p>I am already back to work, and continued work on the crashy KDE snaps in a non KDE env. ( Also affects anyone using kde-neon extensions such as FreeCAD) I hope to have a fix in the next day or so.</p>
<p>Fixed kate bug <a href="https://bugs.kde.org/show_bug.cgi?id=503285">https://bugs.kde.org/show_bug.cgi?id=503285</a></p>
<p>Thanks for stopping by.</p></description>
<pubDate>Mon, 28 Apr 2025 13:04:09 +0000</pubDate>
</item>
<item>
<title>St&eacute;phane Graber: Announcing Incus 6.12</title>
<guid isPermaLink="false">https://stgraber.org/?p=1733</guid>
<link>https://stgraber.org/2025/04/25/announcing-incus-6-12/</link>
<description><p>The Incus team is pleased to announce the release of Incus 6.12!</p>
<p>This release comes with some very long awaited improvements such as online growth of virtual machine memory, network address sets for easier network ACLs, revamped logging support and more!</p>
<p>On top of the new features, this release also features quite a few welcome performance improvements, especially for systems with a lot of snapshots and with extra performance enhancements for those using ZFS.</p>
<figure class="wp-block-image size-full"><a href="https://stgraber.org/wp-content/uploads/2025/04/image.png"><img alt="" class="wp-image-1734" height="330" src="https://stgraber.org/wp-content/uploads/2025/04/image.png" width="751" /></a></figure>
<p>The highlights for this release are:</p>
<ul class="wp-block-list">
<li>Network address sets</li>
<li>Memory hotplug support in VMs</li>
<li>Reworked logging handling &amp; remote syslog</li>
<li>SNAT support on complex network forwards</li>
<li>Authentication through access_token parameter</li>
<li>Improved server-side filtering in the CLI</li>
<li>More generated documentation</li>
</ul>
<p>The full announcement and changelog can be <a href="https://discuss.linuxcontainers.org/t/incus-6-12-has-been-released/23556" rel="noreferrer noopener" target="_blank">found here</a>.<br />And for those who prefer videos, here’s the release overview video:</p>
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
</div></figure>
<p>You can take the latest release of Incus up for a spin through our online demo service at: <a href="https://linuxcontainers.org/incus/try-it/" rel="noreferrer noopener" target="_blank">https://linuxcontainers.org/incus/try-it/</a></p>
<p>And as always, my company is offering commercial support on Incus, ranging from by-the-hour support contracts to one-off services on things like initial migration from LXD, review of your deployment to squeeze the most out of Incus or even feature sponsorship. You’ll find all details of that here: <a href="https://zabbly.com/incus">https://zabbly.com/incus</a></p>
<p>Donations towards my work on this and other open source projects is also always appreciated, you can find me on <a href="https://github.com/sponsors/stgraber">Github Sponsors</a>, <a href="https://patreon.com/stgraber">Patreon</a> and <a href="https://ko-fi.com/stgraber">Ko-fi</a>.</p>
<p>Enjoy!</p>
<p></p></description>
<pubDate>Fri, 25 Apr 2025 04:05:05 +0000</pubDate>
</item>
<item>
<title>Ubuntu MATE: Ubuntu MATE 25.04 Release Notes</title>
<guid isPermaLink="false">https://ubuntu-mate.org/blog/ubuntu-mate-plucky-puffin</guid>
<link>https://ubuntu-mate.org/blog/ubuntu-mate-plucky-puffin-release-notes/</link>
<description><p>Ubuntu MATE 25.04 is ready to soar! 🪽 Celebrating our 10th anniversary as an official Ubuntu flavour with the reliable MATE Desktop experience you love, built on the latest Ubuntu foundations. Read on to learn more 👓️</p>
<h2 id="a-decade-of-mate">A Decade of MATE</h2>
<p>This release marks the 10th anniversary of Ubuntu MATE becoming an official Ubuntu flavour. From our humble beginnings, we’ve developed a loyal following of users who value a traditional desktop experience with modern capabilities. Thanks to our amazing community, contributors, and users who have been with us throughout this journey. Here’s to many more years of Ubuntu MATE! 🥂</p>
<h2 id="what-changed-in-ubuntu-mate-2504">What changed in Ubuntu MATE 25.04?</h2>
<p>Here are the highlights of what’s new in the Plucky Puffin release:</p>
<ul>
<li>Celebrating 10 years as an official Ubuntu flavour! 🎂</li>
<li>Optional full disk encryption in the installer 🔐
<ul>
<li>Enhanced advanced partitioning options</li>
<li>Better interaction with existing BitLocker-enabled Windows installations</li>
<li>Improved experience when installing alongside other operating systems</li>
</ul>
</li>
</ul>
<h2 id="major-applications">Major Applications</h2>
<p>Accompanying <strong>MATE Desktop</strong> 🧉 and <strong>Linux 6.14</strong> 🐧 are <strong>Firefox 137</strong> 🔥🦊,
<strong>Evolution 3.56</strong> 📧, <strong>LibreOffice 25.2.2</strong> 📚</p>
<p>See the <a href="https://discourse.ubuntu.com/t/plucky-puffin-release-notes/48687">Ubuntu 25.04 Release Notes</a>
for details of all the changes and improvements that Ubuntu MATE benefits from.</p>
<div class="jumbotron">
<h2>Download Ubuntu MATE 25.04</h2>
<p>Available for 64-bit desktop computers!</p>
<a class="btn" href="https://ubuntu-mate.org/download/">Download</a>
</div>
<h2 id="upgrading-to-ubuntu-mate-2504">Upgrading to Ubuntu MATE 25.04</h2>
<p>The upgrade process to Ubuntu MATE 25.04 is the same as Ubuntu.</p>
<ul>
<li><a href="https://help.ubuntu.com/community/PluckyUpgrades">Ubuntu 25.04 Upgrade Process</a></li>
</ul>
<p>There are no offline upgrade options for Ubuntu MATE. Please ensure you have
network connectivity to one of the official mirrors or to a locally accessible
mirror and follow the instructions above.</p></description>
<pubDate>Sat, 19 Apr 2025 04:48:24 +0000</pubDate>
</item>
<item>
<title>Xubuntu: Xubuntu 25.04 released!</title>
<guid isPermaLink="false">https://xubuntu.org/?p=5647</guid>
<link>https://xubuntu.org/news/xubuntu-25-04-released/</link>
<description><p>The Xubuntu team is happy to announce the immediate release of Xubuntu 25.04.</p>
<p>Xubuntu 25.04, codenamed <strong>Plucky Puffin</strong>, is a regular release and will be supported for 9 months, until January 2026.</p>
<figure class="wp-block-image size-full"><img alt="" class="wp-image-5648" height="800" src="https://xubuntu.org/wp-content/uploads/2025/04/2e04/xubuntu-25.04.png" width="1280" />Xubuntu 25.04, featuring the latest updates from Xfce 4.20 and GNOME 48.</figure>
<p>Xubuntu 25.04 features the latest Xfce 4.20, GNOME 48, and MATE 1.26 updates. <strong>Xfce 4.20</strong> features many bug fixes and minor improvements, modernizing the Xubuntu desktop while maintaining a familiar look and feel. <strong>GNOME 48</strong> apps are tightly integrated and have full support for dark mode. Users of <strong>QEMU and KVM</strong> will be delighted to find new stability with the desktop session—the long-running <a href="https://bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/1861609">X server crash</a> has been resolved in Xubuntu 25.04 and backported to all supported Xubuntu releases.</p>
<p>The <strong>final release images</strong> for <strong>Xubuntu Desktop</strong> and <strong>Xubuntu Minimal</strong> are available as torrents and direct downloads from <a href="https://xubuntu.org/download/">xubuntu.org/download/</a>.</p>
<p>As the main server might be busy the first few days after the release, we recommend using the torrents if possible.</p>
<p>We want to thank everybody who contributed to this release of Xubuntu!</p>
<h2>Highlights and Known Issues</h2>
<h3>Highlights</h3>
<ul><li><strong>Xfce 4.20</strong>, released in December 2024, is included and contains many new features. Early Wayland support has been added, but is not available in Xubuntu.</li><li><strong>GNOME 48</strong> apps, including <em>Font Viewer</em> (gnome-font-viewer) and <em>Mines</em> (gnome-mines), include a refreshed appearance and usability improvements.</li></ul>
<h3>Known Issues</h3>
<ul><li>The shutdown prompt may not be displayed at the end of the installation. Instead, you might just see a Xubuntu logo, a black screen with an underscore in the upper left-hand corner, or a black screen. Press Enter, and the system will reboot into the installed environment. (LP: <a href="https://bugs.launchpad.net/ubuntu-release-notes/+bug/1944519">#1944519</a>)</li><li>You may experience choppy audio or poor system performance while playing audio, but only in some virtual machines (observed in VMware and VirtualBox).</li><li>OEM installation options are not currently supported or available.</li></ul>
<p>Please refer to the <a href="https://wiki.xubuntu.org/releases/25.04/release-notes">Xubuntu Release Notes</a> for more obscure known issues, information on affecting bugs, bug fixes, and a list of new package versions.</p>
<p>The main <a href="https://discourse.ubuntu.com/t/plucky-puffin-release-notes/48687">Ubuntu Release Notes</a> cover many other packages we carry and more generic issues.</p>
<h2>Support</h2>
<p><strong>For support</strong> with the release, navigate to <a href="https://xubuntu.org/help/">Help &amp; Support</a> for a complete list of methods to get help.</p></description>
<pubDate>Thu, 17 Apr 2025 20:59:18 +0000</pubDate>
</item>
<item>
<title>Lubuntu Blog: Lubuntu 25.04 (Plucky Puffin) Released!</title>
<guid isPermaLink="false">https://lubuntu.me/?p=4126</guid>
<link>https://lubuntu.me/plucky-released/</link>
<description>The Lubuntu Team is proud to announce Lubuntu 25.04, codenamed Plucky Puffin. Lubuntu 25.04 is the 28th release of Lubuntu, the 14th release of Lubuntu with LXQt as the default desktop environment. With 25.04 being an interim release, it will be supported until January of 2026. If you're a 24.10 user, please upgrade to 25.04 […]</description>
<pubDate>Thu, 17 Apr 2025 18:27:20 +0000</pubDate>
</item>
<item>
<title>Ubuntu Studio: Ubuntu Studio 25.04 Released</title>
<guid isPermaLink="false">https://ubuntustudio.org/?p=2980</guid>
<link>https://ubuntustudio.org/2025/04/ubuntu-studio-25-04-released/</link>
<description><div class="wp-block-image"><figure class="aligncenter size-full is-resized"><img alt="" class="wp-image-2981" height="223" src="https://ubuntustudio.org/wp-content/uploads/2025/04/6c42/finalbanner.png" width="600" /></figure></div>
<p id="block-08eb94aa-8521-4ed2-adb1-72f6f4094411">The Ubuntu Studio team is pleased to announce the release of Ubuntu Studio 25.04 code-named “Plucky Puffin”. This marks Ubuntu Studio’s 36th release. This release is a Regular release and as such, it is supported for 9 months, until January 2026.</p>
<p id="block-895e2f57-e719-450c-a4c8-9405017a7e75">Since it’s just out, you may experience some issues, so you might want to wait a bit before upgrading. Please see the <a href="https://discourse.ubuntu.com/t/ubuntu-studio-25-04-release-notes/53099">release notes</a> for a more complete list of changes and known issues. Listed here are some of the major highlights.</p>
<p><em>This release is dedicated to the memory of <a href="https://discourse.ubuntu.com/t/remembering-and-thanking-steve-langasek/52665">Steve Langasek</a>. Without Steve, Ubuntu Studio would not be where it is today. He provided invaluable guidance, insight, and instruction to our leader, Erich Eickmeyer, who not only learned how to package applications but learned how to do it properly. We owe him an eternal debt of gratitude.</em></p>
<div class="wp-block-image"><figure class="aligncenter size-full is-resized"><img alt="" class="wp-image-2990" height="405" src="https://ubuntustudio.org/wp-content/uploads/2025/04/f9e4/UbuntuStudio25.04small.png" width="720" /></figure></div>
<p id="block-aef9a406-e305-4f97-a130-f522c2f1ce7e">You can download Ubuntu Studio 25.04 from our <a href="https://ubuntustudio.org/download">download page</a>.</p>
<h2 id="block-6ca66e3a-8d42-42a8-a0cf-a8ed86e6025f">Special Notes</h2>
<p id="block-708043b1-523e-4fb9-92ca-720e3316371a">The Ubuntu Studio 25.04 disk image (ISO) exceeds 4 GB and cannot be downloaded to some file systems such as FAT32 and may not be readable when burned to a standard DVD. For this reason, we recommend downloading to a compatible file system. When creating a boot medium, we recommend <a href="https://ubuntu.com/tutorials/create-a-usb-stick-on-ubuntu#1-overview">creating a bootable USB stick</a> with the ISO image or burning to a Dual-Layer DVD.</p>
<p>Minimum installation media requirements: Dual-Layer DVD or 8GB USB drive.</p>
<p id="block-fa4be379-b904-4919-9502-c73469ca31ef">Images can be obtained from this link: <a href="https://cdimage.ubuntu.com/ubuntustudio/releases/25.04/release/" rel="noreferrer noopener" target="_blank">https://cdimage.ubuntu.com/ubuntustudio/releases/25.04/release/</a></p>
<p id="block-bf39c734-e080-4549-9621-044e9241d48c">Full updated information, including <strong>Upgrade Instructions,</strong> are available in the <strong><a href="https://discourse.ubuntu.com/t/ubuntu-studio-25-04-release-notes/53099">Release Notes</a></strong><a href="https://wiki.ubuntu.com/GroovyGorilla/Beta/UbuntuStudio">.</a></p>
<p>Upgrades from 24.10 should be enabled within a month after release, so we appreciate your patience. Upgrades from 25.04 LTS will be enabled after 24.10 reaches End-Of-Life in July 2025.</p>
<h2>New This Release</h2>
<div class="wp-block-image"><figure class="alignright is-resized"><img alt="GIMP 3.0: Wilber logo by Aryeom" height="100" src="https://www.gimp.org/images/frontpage/wilber-big.png" width="100" /></figure></div>
<h3>GIMP 3.0!</h3>
<p>The long-awaited GIMP 3.0 is included by default. GIMP is now capable of non-destructive editing with filters, better Photoshop PSD export, and so very much more! Check out the <a href="https://www.gimp.org/news/2025/03/16/gimp-3-0-released/">GIMP 3.0 release announcement</a> for more information.</p>
<div class="wp-block-image"><figure class="alignright is-resized"><img alt="Pencil2D Icon" height="128" src="https://www.pencil2d.org/images/pencil_icon.png" width="128" /></figure></div>
<h3>Pencil2D</h3>
<p>Ubuntu Studio now includes <strong><a data-id="pencil2d.org" data-type="URL" href="http://pencil2d.org">Pencil2D</a></strong>! This is a 2D animation and drawing application that is sure to be helpful to animators. You can use basic clipart to make animations!</p>
<p>The basic features of Pencil2D are:</p>
<ul><li>layers support (separated layer for bitmap, vector and soud part)</li><li>bitmap drawing</li><li>vector drawing</li><li>sound support</li></ul>
<h3>LibreOffice No Longer in Minimal Install</h3>
<p>The LibreOffice suite is now part of the full desktop install. This will save space for those wishing for a minimalistic setup for their needs.</p>
<h3>Invada Studio Plugins</h3>
<div class="wp-block-image"><figure class="alignright size-full"><img alt="" class="wp-image-2983" height="61" src="https://ubuntustudio.org/wp-content/uploads/2025/04/47bb/invada-logo1.png" width="183" /></figure></div>
<p>Beginning this release we are including the Invada Studio Plugins first created by Invada Records Australia. This includes distortion, delay, dynamics, filter, phaser, reverb, and utility audio plugins.</p>
<h3>PipeWire 1.2.7</h3>
<div class="wp-block-image"><figure class="alignright size-full is-resized"><img alt="" class="wp-image-2766" height="70" src="https://ubuntustudio.org/wp-content/uploads/2024/04/be34/Pipewire_logo.svg_.png" width="324" /></figure></div>
<p>This release contains <strong>PipeWire 1.2.7</strong>. One major feature this has over 1.2.4 is that <code>v4l2loopback</code> support is available via the <code>pipewire-v4l2</code> package which is not installed by default.</p>
<p>PipeWire’s JACK compatibility is configured to use out-of-the-box and is zero-latency internally. System latency is configurable via <a data-id="2797" data-type="page" href="https://ubuntustudio.org/audio-configuration/">Ubuntu Studio Audio Configuration</a>.</p>
<p>However, if you would rather use straight JACK 2 instead, that’s also possible. Ubuntu Studio Audio Configuration can disable and enable PipeWire’s JACK compatibility on-the-fly. From there, you can simply use JACK via QJackCtl.</p>
<h3>Ardour 8.12</h3>
<div class="wp-block-image"><figure class="alignright size-full is-resized"><img alt="" class="wp-image-1977" height="73" src="https://ubuntustudio.org/wp-content/uploads/2020/06/2a76/ardour.png" width="84" /></figure></div>
<p>This is, as of this writing, the latest release of Ardour, packed with the latest bugfixes.</p>
<p>To help support Ardour’s funding, you may obtain later versions directly from ardour.org. To do so, please <a data-id="https://ardour.org" data-type="URL" href="https://ardour.org">one-time purchase or subscribe to Ardour from their website.</a> If you wish to get later versions of Ardour from us, you will have to wait until the next regular release of Ubuntu Studio, due in October 2025.</p>
<h2>Deprecation of Mailing Lists</h2>
<p>Our mailing lists are getting inundated with spam and there is no proper way to fix the filtering. It uses an outdated version of MailMan, so this release announcement will be the last release announcement we send out via email. To get support, we encourage using <a data-id="https://discourse.ubuntu.com" data-type="URL" href="https://discourse.ubuntu.com">Ubuntu Discourse</a> for support, and for community clicking the notification bell in the <a href="https://discourse.ubuntu.com/c/flavors/ubuntustudio/188">Ubuntu Studio category</a> there.</p>
<h2 id="block-c7a21be7-9349-421e-a098-c0d2919f320a">Frequently Asked Questions</h2>
<p id="block-163f794a-f451-40b0-bbbd-6f26c6cbe8e8"><strong>Q:</strong> Does Ubuntu Studio contain snaps?<br /><strong>A:</strong> Yes. Mozilla’s distribution agreement with Canonical changed, and Ubuntu was forced to no longer distribute Firefox in a native .deb package. We have found that, after numerous improvements, Firefox now performs just as well as the native .deb package did.</p>
<p>Thunderbird also became a snap so that the maintainers can get security patches delivered faster.</p>
<p id="block-342134d3-a024-4b7b-b768-76c758b20acd">Additionally, Freeshow is an Electron-based application. Electron-based applications cannot be packaged in the Ubuntu repositories in that they cannot be packaged in a traditional Debian source package. While such apps do have a build system to create a .deb binary package, it circumvents the source package build system in Launchpad, which is required when packaging for Ubuntu. However, Electron apps also have a facility for creating snaps, which can be uploaded and included. Therefore, for Freeshow to be included in Ubuntu Studio, it had to be packaged as a snap.</p>
<p>We have additional snaps that are Ubuntu-specific, such as the Firmware Updater and the Security Center. Contrary to popular myth, Ubuntu does not have any plans to switch all packages to snaps, nor do we.</p>
<p id="block-2266cee7-0ea1-49cf-8340-594da42a09d7"><strong>Q</strong>: Will you make an ISO with {my favorite desktop environment}?<br /><strong>A:</strong> To do so would require creating an entirely new flavor of Ubuntu, which would require going through the Official Ubuntu Flavor application process. Since we’re completely volunteer-run, we don’t have the time or resources to do this. Instead, we recommend you download the <a href="https://ubuntu.com/download/flavours">official flavor for the desktop environment of your choice</a> and use <a href="https://ubuntustudio.org/ubuntu-studio-installer">Ubuntu Studio Installer</a> to get Ubuntu Studio – which does *not* convert that flavor to Ubuntu Studio but adds its benefits.</p>
<p id="block-48669a69-39bc-4971-b46b-c7da87133d24"><strong>Q: </strong>What if I don’t want all these packages installed on my machine?<br /><strong>A: </strong>Simply use the <strong>Ubuntu Studio Installer</strong> to remove the features of Ubuntu Studio you don’t want or need!</p>
<h2>Get Involved!</h2>
<p>A wonderful way to contribute is to get involved with the project directly! We’re always looking for new volunteers to help with packaging, documentation, tutorials, user support, and MORE! <a href="https://ubuntustudio.org/contribute/">Check out all the ways you can contribute!</a></p>
<p><strong>Our project leader, Erich Eickmeyer, is now working on Ubuntu Studio at least part-time, and is hoping that the users of Ubuntu Studio can give enough to generate a monthly part-time income. We’re not there, but if every Ubuntu Studio user donated monthly, we’d be there! Your donations are appreciated! If other distributions can do it, surely we can! See the sidebar for ways to give</strong>!</p>
<h2>Special Thanks</h2>
<p>Huge special thanks for this release go to:</p>
<ul><li><strong>Eylul Dogruel</strong>: Artwork, Graphics Design</li><li><strong>Ross Gammon</strong>: Upstream Debian Developer, Testing, Email Support</li><li><strong>Sebastien Ramacher</strong>:<strong> </strong>Upstream Debian Developer</li><li><strong>Dennis Braun</strong>: Upstream Debian Developer</li><li><strong>Rik Mills</strong>: Kubuntu Council Member, help with Plasma desktop</li><li><strong>Scarlett Moore: </strong>Kubuntu Project Lead, help with Plasma desktop</li><li><strong>Len Ovens:</strong> Testing, insight</li><li><strong>Mauro Gaspari</strong>: Tutorials, Promotion, and Documentation, Testing, keeping Erich sane</li><li><strong>Simon Quigley: </strong>Qt6 Megastuff</li><li><strong>Erich Eickmeyer</strong>: Project Leader, Packaging, Development, Direction, Treasurer</li><li><strong>Steve Langasek: </strong>You are missed.</li></ul></description>
<pubDate>Thu, 17 Apr 2025 17:08:25 +0000</pubDate>
</item>
<item>
<title>Stuart Langridge: Serving streaming video that adapts to bandwidth from your own website</title>
<guid isPermaLink="false">tag:www.kryogenix.org,2025-04-16:/days/2025/04/16/serving-streaming-video-that-adapts-to-bandwidth-from-your-own-website/</guid>
<link>https://www.kryogenix.org/days/2025/04/16/serving-streaming-video-that-adapts-to-bandwidth-from-your-own-website/</link>
<description><p>Recently, I was involved in an event where a video was shown, and the event was filmed. It would be nice to put the video of the event up somewhere so other people who weren't there could watch it. Obvious answer: upload it to YouTube. However, the video that was shown <em>at</em> the event is Copyrighted Media Content and therefore is disallowed by YouTube and the copyright holder; it's not demonetised (which wouldn't be a problem), it's flat-out blocked. So YouTube is out.</p>
<p>I'd like the video I'm posting to stick around for a long time; this is a sort of archival, reference thing where not many people will ever want to watch it but those that do might want to do so in ten years. So I'm loath to find some other random video hosting site, which will probably go bust, or pivot to selling online AI shoes or something. And the best way to ensure that something keeps going long-term is to put it on your own website, and use decent HTML, because that means that even in ten or twenty years it'll still work where the latest flavour-of-the-month thing will go the way of other old technologies and fade away and stop working over time. HTML won't do that.</p>
<p>But... it's an hour long and in full HD. 2.6GB of video. And one of the benefits of YouTube is that they'll make the video adaptive: it'll fit the screen, and the bandwidth, of whatever device someone's watching it on. If someone wants to look at this from their phone and its slightly-shaky two bars of 4G connection, they probably don't want to watch the loading spinner for an hour while it buffers a full HD video; they can ideally get a cut down, lower-quality but quicker to serve, version. But... how is this possible?</p>
<p>There are two aspects to doing this. One is that you serve up different <em>resolutions</em> of video, based on the viewer's screen size. This is exactly the same problem as is solved for images by the <code>&lt;picture&gt;</code> element to provide responsive images (where if you're on a 400px-wide screen you get a 400px version of the background image, not the 2000px full-res version), and indeed the magic words to search for here are <em>responsive video</em>. And the person you will find who is explaning all this is <a href="https://bsky.app/profile/scottjehl.com">Scott Jehl</a>, who has written <a href="https://scottjehl.com/posts/using-responsive-video/">a good description of how to do responsive video</a> which explains it all in detail. You make versions of the video at different resolutions, and serve whichever one best matches the screen you're on, just like responsive images. Nice work; just what the doctor ordered.</p>
<p>But there's also a second aspect to this: responsive video adapts to screen size, but it doesn't adapt to bandwidth. What we want, in addition to the responsive stuff, is that on poor connections the viewer gets a lower-bandwidth version as well as a lower-resolution version, and that the viewer's browser can dynamically switch from moment to moment between different versions of the video to match their current network speed. This task is the job of <a href="https://en.wikipedia.org/wiki/HTTP_Live_Streaming">HTTP Live Streaming</a>, or HLS. To do this, you essentially encode the video in a bunch of different qualities and screen sizes, so you've got a bunch of separate videos (which you've probably already done above for the responsive part) and then (and this is the key) you chop up each video into a load of small segments. That way, instead of the browser downloading the whole one hour of video at a particular resolution, it only downloads the next <em>segment</em> at its current choice of resolution, and then if you suddenly get more (or less) bandwidth, it can switch to getting segment 2 from a <em>different</em> version of the video which better matches where you currently are.</p>
<p>Doing this sounds hard. Fortunately, all hard things to do with video are handled by ffmpeg. There's a nice writeup by Mux on <a href="https://www.mux.com/articles/how-to-convert-mp4-to-hls-format-with-ffmpeg-a-step-by-step-guide">how to convert an mp4 video to HLS with ffmpeg</a>, and it works great. I put myself together a <a href="https://gist.github.com/stuartlangridge/c0ae266306604c7db23e9855eea83976">little Python script</a> to construct the ffmpeg command line to do it, but you can do it yourself; the script just does some of the boilerplate for you. Very useful.</p>
<p>So now I can serve up a video which adapts to the viewer's viewing conditions, and that's just what I wanted. I have to pay for the bandwidth now (which is the <em>other</em> benefit of having YouTube do it, and one I now don't get) but that's worth it for this, I think. Cheers to Scott and Mux for explaining all this stuff.</p></description>
<pubDate>Wed, 16 Apr 2025 08:26:00 +0000</pubDate>
</item>
<item>
<title>David Mohammed: Ubuntu Budgie 25.04 release notes</title>
<guid isPermaLink="false">https://ubuntubudgie.org/?p=3898</guid>
<link>https://ubuntubudgie.org/2025/04/ubuntu-budgie-25-04-release-notes/</link>
<description><p>Ubuntu Budgie 25.04 (Plucky Puffin) is a Standard Release with 9 months of support by your distro maintainers and Canonical, from April 2025 to Jan 2026. These release notes showcase the key takeaways for 24.10 upgraders to 25.04. Please note – there is no direct upgrade path from 24.04.2 to 25.04; you must uplift to 24.10 first or perform a fresh install. In these release notes the areas…</p>
<p><a href="https://ubuntubudgie.org/2025/04/ubuntu-budgie-25-04-release-notes/" rel="nofollow">Source</a></p></description>
<pubDate>Tue, 15 Apr 2025 17:31:49 +0000</pubDate>
</item>
<item>
<title>Salih Emin: Git turns 20! : A conversation with creator Linus Torvalds</title>
<guid isPermaLink="false">https://utappiablog.wordpress.com/?p=49839</guid>
<link>https://utappia.org/2025/04/11/git-turns-20-a-conversation-with-creator-linus-torvalds/</link>
<description><p>Watch a conversation reflecting on the 20th anniversary of Git, the version control system created by Linus Torvalds. He discusses his initial motivations for developing Git as a response to the limitations of existing systems like CVS and BitKeeper, and his desire to establish a better tool for the open-source community. </p>
<span id="more-49839"></span>
<p>Torvalds explains the processes involved in Git’s early development, including the challenges he faced and key decisions he made, like the choice to implement SHA-1 hashing for data integrity. He acknowledges the initial difficulty users experienced when transitioning from centralized systems to Git’s distributed model.</p>
<p> The discussion continues into the evolution and widespread adoption of Git, including its implications for software development, with Torvalds explaining that while he did not originally set out to revolutionize the industry, Git’s design principles ended up facilitating collaboration among developers of all experience levels. The conversation touches on Torvalds’ transition from maintainer to a more distant role, the continuing evolution of Git, and the challenges it might face moving forward. He concludes by reflecting on the rich legacy of Git and its impact on software engineering practices.</p>
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<div class="embed-youtube"></div>
</div></figure>
<h3 class="wp-block-heading">Highlights</h3>
<ul class="wp-block-list">
<li><img alt="🎉" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f389.png" style="height: 1em;" /> <strong>20-Year Milestone</strong>: Git celebrates two decades since its inception, highlighting its enduring relevance in software development.</li>
<li><img alt="🛠" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f6e0.png" style="height: 1em;" /> <strong>Open Source Roots</strong>: Torvalds created Git as an open-source alternative to proprietary systems like BitKeeper, aiming to empower developers.</li>
<li><img alt="🔑" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f511.png" style="height: 1em;" /> <strong>Key Design Choices</strong>: The use of SHA-1 hashing was pivotal for securing data integrity, a choice Torvalds admits had its complications but ultimately strengthened Git.</li>
<li><img alt="🧩" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f9e9.png" style="height: 1em;" /> <strong>User Experience Challenges</strong>: Initial users found Git “hard to use,” reflecting the difficulty of shifting from centralized to distributed version control paradigms.</li>
<li><img alt="🌍" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f30d.png" style="height: 1em;" /> <strong>Widespread Adoption</strong>: Git’s unique functionality has led to its dominance in the version control market, with significant impact on projects of all sizes.</li>
<li><img alt="⚙" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/2699.png" style="height: 1em;" /> <strong>Evolution and Maintenance</strong>: Torvalds transitioned out of the maintainer role but retains a vested interest in Git’s continuous improvement and community growth.</li>
<li><img alt="🔮" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f52e.png" style="height: 1em;" /> <strong>Future of Git</strong>: Although Git is highly effective, questions about how it will adapt to emerging workflows and challenges remain significant.</li>
</ul>
<h3 class="wp-block-heading">Key Insights</h3>
<ul class="wp-block-list">
<li><img alt="📉" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f4c9.png" style="height: 1em;" /> <strong>Market Impact</strong>: Git’s explosive growth indicates a network effect in software development; as more projects adopt Git, it becomes increasingly less practical for new developers to consider alternatives.
<ul class="wp-block-list">
<li>The substantial statistics surrounding Git’s use as “98% of the SCM space” illustrate its dominance and the challenges for other version control systems to compete.</li>
</ul>
</li>
<li><img alt="📦" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f4e6.png" style="height: 1em;" /> <strong>Distributed vs. Centralized</strong>: A fundamental shift in project management ethos has occurred because Git promotes a distributed model that allows local operations without constant connectivity.
<ul class="wp-block-list">
<li>This design alleviates the burdens traditionally associated with centralized systems, making Git particularly appealing to indie developers and small teams.</li>
</ul>
</li>
<li><img alt="💡" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f4a1.png" style="height: 1em;" /> <strong>Intuitive Simplicity</strong>: The development methodology used in Git, rooted in the principles of Unix, emphasizes simplicity at its core while managing sophisticated functionalities.
<ul class="wp-block-list">
<li>Torvalds attributes Git’s clarity of design to its foundation, suggesting that successful projects are often built on straightforward principles that can evolve over time.</li>
</ul>
</li>
<li><img alt="🔄" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f504.png" style="height: 1em;" /> <strong>Adaptation Design</strong>: The way Git supports adaptability through its inherent structure allows for various workflows, catering to everything from kernel development to simple student projects.
<ul class="wp-block-list">
<li>Torvalds highlights that the real value comes in making collaboration seamless, which can be attractive for newcomers to software development.</li>
</ul>
</li>
<li><img alt="🔍" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f50d.png" style="height: 1em;" /> <strong>Feature Appreciation</strong>: There is a contrast between the initial backlash against Git’s interface and the eventual recognition of its powerful capabilities.
<ul class="wp-block-list">
<li>As Git became entrenched within new development communities, user experience shifted from resentment to an appreciation of the tool’s potential.</li>
</ul>
</li>
<li><img alt="⏳" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/23f3.png" style="height: 1em;" /> <strong>Community and Maintenance</strong>: Torvalds handed over maintainership after a few months, preferring to let the active community shape Git’s evolution.
<ul class="wp-block-list">
<li>This decision reflects his pragmatic approach, allowing others who are passionate about Git’s future to take the reins, fostering broader community involvement.</li>
</ul>
</li>
<li><img alt="🚧" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f6a7.png" style="height: 1em;" /> <strong>Future Challenges</strong>: While Git is effective, its future may involve addressing issues raised by large-scale implementations or new methodologies that conflict with Git’s design philosophy.
<ul class="wp-block-list">
<li>As software practices evolve, Git’s maintainers will need to balance tradition with innovation. Managing user expectations and feature requests will be critical moving forward.</li>
</ul>
</li>
</ul>
<p>In conclusion, the discussions presents a rich narrative of Git’s journey from its inception to a critical component of modern software development, reflecting the thoughts and contributions of its creator while contemplating its future in a fast-evolving landscape.</p>
<p></p>
<p>The post <a href="https://utappia.org/2025/04/11/git-turns-20-a-conversation-with-creator-linus-torvalds/">Git turns 20! : A conversation with creator Linus Torvalds</a> appeared first on <a href="https://utappia.org">Utappia</a>.</p></description>
<pubDate>Fri, 11 Apr 2025 13:41:22 +0000</pubDate>
</item>
<item>
<title>Ubuntu MATE: Ubuntu MATE 24.10 Release Notes</title>
<guid isPermaLink="false">https://ubuntu-mate.org/blog/ubuntu-mate-oracular-oriole</guid>
<link>https://ubuntu-mate.org/blog/ubuntu-mate-oracular-oriole-release-notes/</link>
<description><p>Ubuntu MATE 24.10 is more of what you like, stable MATE Desktop on top of current Ubuntu. Read on to learn more 👓️</p>
<p class="center"><img alt="Ubuntu MATE 24.10" src="https://ubuntu-mate.org/images/blog/oracular/screenshot.png" />
<strong>Ubuntu MATE 24.10</strong></p>
<h2 id="thank-you-">Thank you! 🙇</h2>
<p><strong>My sincere thanks to everyone who has played an active role in improving Ubuntu MATE for this release 👏
I’d like to acknowledge the close collaboration with the Ubuntu Foundations team and the Ubuntu flavour teams, in particular <a href="https://launchpad.net/~eeickmeyer">Erich Eickmeyer</a> who pushed critical fixes while I was travelling.
Thank you!</strong> 💚</p>
<h2 id="what-changed-since-the-ubuntu-mate-2404-lts">What changed since the Ubuntu MATE 24.04 LTS?</h2>
<p>Here are the highlights of what’s changed since the <a href="https://ubuntu-mate.org/blog/ubuntu-mate-noble-numbat-release-notes/">release of Ubuntu MATE 24.04</a></p>
<ul>
<li>Ships stable <a href="https://mate-desktop.org">MATE Desktop</a> 1.26.2 with a handful of bug fixes 🐛</li>
<li>Switched back to Slick Greeter (replacing Arctica Greeter) due to race-condition in the boot process which results the display manager failing to initialise.
<ul>
<li>Returning to Slick Greeter reintroduces the ability to easily configure the login screen via a graphical application, something users have been requesting be re-instated 👍</li>
</ul>
</li>
<li>Ubuntu MATE 24.10 .iso 📀 is now 3.3GB 🤏 Down from 4.1GB in the 24.04 LTS release.
<ul>
<li>This is thanks to some fixes in the installer that no longer require as many packages in the live-seed.</li>
</ul>
</li>
</ul>
<p class="center"><img alt="Login Window Configuration" src="https://ubuntu-mate.org/images/blog/oracular/login-window.png" />
<strong>Login Window</strong></p>
<h2 id="what-didnt-change-since-the-ubuntu-mate-2404-lts">What didn’t change since the Ubuntu MATE 24.04 LTS?</h2>
<p>If you follow upstream MATE Desktop development, then you’ll have noticed that Ubuntu MATE 24.10 doesn’t ship with the recently released MATE Desktop 1.28 🧉</p>
<p>I have prepared packaging for MATE Desktop 1.28, along with the associated components but encountered some bugs and regressions 🐞 I wasn’t able to get things to a standard I’m happy to ship be default, so it is tried and true MATE 1.26.2 one last time 🪨</p>
<h2 id="major-applications">Major Applications</h2>
<p>Accompanying <strong>MATE Desktop 1.26.2</strong> 🧉 and <strong>Linux 6.11</strong> 🐧 are <strong>Firefox 131</strong> 🔥🦊,
<strong>Celluloid 0.27</strong> 🎥, <strong>Evolution 3.54</strong> 📧, <strong>LibreOffice 24.8.2</strong> 📚</p>
<p>See the <a href="https://discourse.ubuntu.com/t/oracular-oriole-release-notes/44878/1">Ubuntu 24.10 Release Notes</a>
for details of all the changes and improvements that Ubuntu MATE benefits from.</p>
<div class="jumbotron">
<h2>Download Ubuntu MATE 24.10</h2>
<p>Available for 64-bit desktop computers!</p>
<a class="btn" href="https://ubuntu-mate.org/download/">Download</a>
</div>
<h2 id="upgrading-to-ubuntu-mate-2410">Upgrading to Ubuntu MATE 24.10</h2>
<p>The upgrade process to Ubuntu MATE 24.10 is the same as Ubuntu.</p>
<ul>
<li><a href="https://help.ubuntu.com/community/OracularUpgrades">Ubuntu 24.10 Upgrade Process</a></li>
</ul>
<p>There are no offline upgrade options for Ubuntu MATE. Please ensure you have
network connectivity to one of the official mirrors or to a locally accessible
mirror and follow the instructions above.</p></description>
<pubDate>Sun, 06 Apr 2025 16:54:02 +0000</pubDate>
</item>
<item>
<title>Elizabeth K. Joseph: A VisionFive 2 and a Raspberry Pi 1 B</title>
<guid isPermaLink="false">https://princessleia.com/journal/?p=17828</guid>
<link>https://princessleia.com/journal/2025/04/a-visionfive-2-and-a-raspberry-pi-1-b/</link>
<description><p>A couple weeks ago I was playing around with a multiple architecture CI setup with another team, and that led me to pull out my StarFive VisionFive 2 SBC again to see where I could make it this time with an install.</p>
<p>I left off about a year ago when I succeeded in getting an older version of Debian on it, but attempts to get the tooling to install a more broadly supported version of U-Boot to the SPI flash were unsuccessful. Then I got pulled away to other things, effectively just bringing my VF2 around to events as a prop for my multiarch talks – which it did beautifully! I even had one conference attendee buy one to play with while sitting in the audience of my talk. Cool.</p>
<p>I was delighted to learn how much progress had been made since I last looked. Canonical has published more formalized documentation: <a href="https://canonical-ubuntu-boards.readthedocs-hosted.com/en/latest/how-to/starfive-visionfive-2/">Install Ubuntu on the StarFive VisionFive 2</a> in the place of what had been a rather cluttered wiki page. So I got all hooked up and began my latest attempt.</p>
<div align="center"><a href="https://princessleia.com/images/journalpics/032025/visionfive2_install_philly.jpg"><img src="https://princessleia.com/images/journalpics/032025/visionfive2_install_philly_sm.jpg" /></a></div>
<p>My first step was to grab the pre-installed server image. I got that installed, but struggled a little with persistence once I unplugged the USB UART adapter and rebooted. I then decided just to move forward with the <a href="https://canonical-ubuntu-boards.readthedocs-hosted.com/en/latest/how-to/starfive-visionfive-2/#install-u-boot-to-the-spi-flash">Install U-Boot to the SPI flash</a> instructions. I struggled a bit here for two reasons:</p>
<ol>
<li>The documentation today leads off with having you download the livecd, but you actually want the pre-installed server image to flash U-Boot, the livecd step doesn’t come until later. Admittedly, the instructions do <em>say</em> this, but I wasn’t reading carefully enough and was more focused on the steps.</li>
<li>I couldn’t get the 24.10 pre-installed image to work for flashing U-Boot, but once I went back to the 24.04 pre-installed image it worked.</li>
</ol>
<p>And then I had to fly across the country. We’re spending a couple weeks around spring break here at our vacation house in Philadelphia, but the good thing about SBCs is that they’re incredibly portable and I just tossed my gear into my backpack and brought it along.</p>
<p>Thanks to Emil Renner Berthing (esmil) on the <a href="https://discourse.ubuntu.com/t/getting-started-with-matrix/41000">Ubuntu Matrix server</a> for providing me with enough guidance to figure out where I had gone wrong above, and got me on my way just a few days after we arrived in Philly.</p>
<p>With the newer U-Boot installed, I was able to use the Ubuntu 24.04 livecd image on a micro SD Card to install Ubuntu 24.04 on an NVMe drive! That’s another new change since I last looked at installation, using my little NVMe drive as a target was a lot simpler than it would have been a year ago. In fact, it was rather anticlimactic, hah!</p>
<div align="center"><a href="https://princessleia.com/images/journalpics/032025/visionfive2_nvme.jpg"><img src="https://princessleia.com/images/journalpics/032025/visionfive2_nvme_sm.jpg" /></a></div>
<p>And with that, I was fully logged in to my new system.</p>
<p><code>elizabeth@r2kt:~$ cat /proc/cpuinfo<br />
processor : 0<br />
hart : 2<br />
isa : rv64imafdc_zicntr_zicsr_zifencei_zihpm_zba_zbb<br />
mmu : sv39<br />
uarch : sifive,u74-mc<br />
mvendorid : 0x489<br />
marchid : 0x8000000000000007<br />
mimpid : 0x4210427<br />
hart isa : rv64imafdc_zicntr_zicsr_zifencei_zihpm_zba_zbb</code></p>
<p>It has 4 cores, so here’s the full output: <a href="https://princessleia.com/txt/vf2-cpus.txt">vf2-cpus.txt</a></p>
<p>What will I do with this little single board computer? I don’t know yet. I joked with my husband that I’d “install Debian on it and forget about it like everything else” but I really would like to get past that. I have my little multiarch demo CI project in the wings, and I’ll probably loop it into that.</p>
<p>Since we were in Philly, I had a look over at my long-neglected Raspberry Pi 1B that I have here. When we first moved in, I used it as an ssh tunnel to get to this network from California. It was great for that! But now we have a more sophisticated network setup between the houses with a VLAN that connects them, so the ssh tunnel is unnecessary. In fact, my poor Raspberry Pi fell off the WiFi network when we switched to 802.1X just over a year ago and I never got around to getting it back on the network. I connected it to a keyboard and monitor and started some investigation. Honestly, I’m surprised the little guy was still running, but it’s doing fine!</p>
<p>And it had been chugging along running Rasbian based on Debian 9. Well, that’s worth an upgrade. But not just an upgrade, I didn’t want to stress the device and SD card, so I figured flashing it with the latest version of Raspberry Pi OS was the right way to go. It turns out, it’s been a long time since I’ve done a Raspberry Pi install.</p>
<p>I grabbed the <a href="https://www.raspberrypi.com/software/">Raspberry Pi Imager</a> and went on my way. It’s really nice. I went with the Raspberry Pi OS Lite install since it’s the RP1, I didn’t want a GUI. The imager asked the usual installation questions, loaded up my SSH key, and I was ready to load it up in my Pi.</p>
<div align="center"><a href="https://princessleia.com/images/journalpics/032025/raspberripi1b_imager_2025.png"><img src="https://princessleia.com/images/journalpics/032025/raspberripi1b_imager_2025_sm.png" /></a></div>
<p>The only thing I need to finish sorting out is networking. The old USB WiFi adapter I have it in doesn’t initialize until after it’s booted up, so wpa_supplicant on boot can’t negotiate with the access point. I’ll have to play around with it. And what will I use this for once I do, now that it’s not an SSH tunnel? I’m not sure yet.</p>
<div align="center"><a href="https://princessleia.com/images/journalpics/032025/raspberry_pi_1_dusty_case.jpg"><img src="https://princessleia.com/images/journalpics/032025/raspberry_pi_1_dusty_case_sm.jpg" /></a></div>
<p>I realize this blog post isn’t very deep or technical, but I guess that’s the point. We’ve come a long way in recent years in support for non-x86 architectures, so installation has gotten a lot easier across several of them. If you’re new to playing around with architectures, I’d say it’s a really good time to start. You can hit the ground running with some wins, and then play around as you go with various things you want to help get working. It’s a lot of fun, and the years I spent playing around with Debian on Sparc back in the day definitely laid the groundwork for the job I have at IBM working on mainframes. You never know where a bit of technical curiosity will get you.</p></description>
<pubDate>Thu, 03 Apr 2025 20:43:31 +0000</pubDate>
</item>
<item>
<title>Lubuntu Blog: Lubuntu Plucky Puffin Beta Released!</title>
<guid isPermaLink="false">https://lubuntu.me/?p=4122</guid>
<link>https://lubuntu.me/plucky-beta/</link>
<description>Thanks to the hard work of our contributors, we are happy to announce the release of Lubuntu's Plucky Beta, which will become Lubuntu 25.04. This is a snapshot of the daily images. Approximately two months ago, we posted an Alpha-level update. While some information is duplicated below, that contains an accurate, concise technical summary of […]</description>
<pubDate>Thu, 27 Mar 2025 21:02:47 +0000</pubDate>
</item>
<item>
<title>Luke Faraone: I'm running for the OSI board... maybe</title>
<guid isPermaLink="false">tag:blogger.com,1999:blog-1354659632607599854.post-8137871464316542520</guid>
<link>https://blog.luke.wf/2025/02/im-running-for-osi-board-maybe.html</link>
<description><p>The Open Source Initiative has two classes of board seats: Affiliate seats, and Individual Member seats. </p><p>In the upcoming election, each affiliate can nominate a candidate, and each affiliate can cast a vote for the Affiliate candidates, but there's only 1 Affiliate seat available. I initially expressed interest in being nominated as an Affiliate candidate via Debian. But since <a href="https://ebb.org/bkuhn/">Bradley Kuhn</a> is also running for an Affiliate seat with a similar platform to me, especially with regards to the OSAID, I decided to run as part of an aligned "ticket" as an Individual Member to avoid contention for the 1 Affiliate seat.</p><p>Bradley and I discussed running on a similar ticket around 8/9pm Pacific, and I submitted my candidacy around 9pm PT on 17 February. </p><p>I was dismayed when I received the following mail from <span style="white-space: normal;">Nick Vidal:</span></p><p></p><blockquote><span face="Arial, Helvetica, sans-serif" style="background-color: white; color: #222222; font-size: small;">Dear Luke,</span><br style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: small;" /><br style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: small;" /><span face="Arial, Helvetica, sans-serif" style="background-color: white; color: #222222; font-size: small;">Thank you for your interest in the OSI Board of Directors election. Unfortunately, we are unable to accept your application as it was submitted after the official deadline of Monday Feb 17 at 11:59 pm UTC. To ensure a fair process,<b> we must adhere to the deadline for all candidates.</b></span><br style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: small;" /><br style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: small;" /><span face="Arial, Helvetica, sans-serif" style="background-color: white; color: #222222; font-size: small;">We appreciate your enthusiasm and encourage you to stay engaged with OSI’s mission. We hope you’ll consider applying in the future or contributing in other meaningful ways.</span><br style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: small;" /><br style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: small;" /><span face="Arial, Helvetica, sans-serif" style="background-color: white; color: #222222; font-size: small;">Best regards,</span><br style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: small;" /><span face="Arial, Helvetica, sans-serif" style="background-color: white; color: #222222; font-size: small;">OSI Election Teams</span></blockquote><p>Nowhere on the <a href="https://opensource.org/blog/osis-board-of-directors-in-2025-details-about-the-elections">"OSI’s board of directors in 2025: details about the elections"</a> page do they list a timezone for closure of nominations; they simply list Monday 17 February. </p><p>The OSI's contact address is in California, so it seems arbitrary and capricious to retroactively define all of these processes as being governed by UTC.</p><p>I was not able to participate in the "potential board director" info sessions accordingly, but people who attended heard that the importance of accommodating differing TZ's was discussed during the info session, and that OSI representatives mentioned they try to accommodate TZ's of everyone. This seems in sharp contrast with the above policy. </p><p>I urge the OSI to reconsider this policy and allow me to stand for an Individual seat in the current cycle. </p><p><b>Upd</b>, N.B.: to people writing about this, I use they/them pronouns</p><p></p></description>
<pubDate>Sat, 22 Mar 2025 16:30:44 +0000</pubDate>
<author>noreply@blogger.com (Luke Faraone)</author>
</item>
<item>
<title>Sean Davis: Xubuntu Development Update February 2025</title>
<guid isPermaLink="false">https://seand.xyz/tag/xubuntu/rss/68338e7c38f598252d964017</guid>
<link>https://seand.xyz/blog/2025/02/22/xubuntu-development-update-february-2025/</link>
<description><img alt="Xubuntu Development Update February 2025" src="https://seand.xyz/content/images/2024/12/xubuntu-25-04-dev-featured.png" /><p>Better late than never, here&amp;aposs your Xubuntu February 2025 update! This month, Xubuntu 24.04.2 was released with a new Linux kernel and bug fixes in tow. 25.04 Feature Freeze is now in effect, with many package updates arriving just before the deadline. Xubuntu&amp;aposs first RISC-V package support has landed. And so much more!</p>
<h2 id="februaryschedule">February Schedule</h2>
<p>The <a href="https://discourse.ubuntu.com/t/plucky-puffin-release-schedule/36461?ref=seand.xyz">Plucky Puffin Release Schedule</a> for February includes <em>Feature Freeze</em> on the 20th and an optional testing week at the end of the month. It also features the next point release for Xubuntu 24.04 "Noble Numbat".</p>
<table>
<thead>
<tr>
<th>Date</th>
<th>Milestones</th>
</tr>
</thead>
<tbody>
<tr>
<td>February 06</td>
<td></td>
</tr>
<tr>
<td>February 13</td>
<td><a href="https://wiki.ubuntu.com/PointReleaseProcess?ref=seand.xyz">24.04.2 Point Release</a> <em>(delayed to 2/20)</em></td>
</tr>
<tr>
<td>February 20</td>
<td><a href="https://wiki.ubuntu.com/FeatureFreeze?ref=seand.xyz">Feature Freeze</a>, <a href="https://wiki.ubuntu.com/DebianImportFreeze?ref=seand.xyz">Debian Import Freeze</a></td>
</tr>
<tr>
<td>February 27</td>
<td>Ubuntu Testing Week (optional)</td>
</tr>
</tbody>
</table>
<h2 id="majorpackageupdatesinxubuntu24042">Major Package Updates in Xubuntu 24.04.2</h2>
<p>Xubuntu 24.04.2 was released on Thursday, February 20, 2025. It features a modest set of changes in addition to the 6.11 Linux kernel and updated graphics stack. <code>xfce4-panel</code> 4.18.4-1ubuntu0.1 features a fix for the crash-on-exit bug that plagued users with unexplainable error notifications (LP: <a href="https://launchpad.net/bugs/2064846?ref=seand.xyz">#2064846</a>).</p>
<p><a href="https://github.com/Xubuntu/xubuntu-manifest/compare/24.04.1...24.04.2?ref=seand.xyz">Changes from Xubuntu 24.04.1 to 24.04.2</a></p>
<table>
<thead>
<tr>
<th>Package</th>
<th>24.04.1</th>
<th>24.04.2</th>
</tr>
</thead>
<tbody>
<tr>
<td>firefox</td>
<td>134</td>
<td>135</td>
</tr>
<tr>
<td>libdrm</td>
<td>2.4.120</td>
<td>2.4.122</td>
</tr>
<tr>
<td>libreoffice</td>
<td>24.2.5</td>
<td>24.2.7</td>
</tr>
<tr>
<td>Linux kernel</td>
<td>6.8.0</td>
<td>6.11.0</td>
</tr>
<tr>
<td>Mesa</td>
<td>24.0.9</td>
<td>24.2.8</td>
</tr>
<tr>
<td>xfce4-panel</td>
<td>4.18.4-1build2</td>
<td>4.18.4-1ubuntu0.1</td>
</tr>
</tbody>
</table>
<h2 id="majorpackageupdatesinxubuntu2504">Major Package Updates in Xubuntu 25.04</h2>
<p>There was a flurry of upload activity in the lead up to the 25.04 Feature Freeze. GIMP 3.0.0 was bumped from RC2 to RC3. The Linux kernel was updated from 6.11.0 to 6.12.0. A handful of Xfce components also saw new releases to further stabilize Xubuntu&amp;aposs base. For more information on the progress of Xubuntu 25.04, check out the following links:</p>
<ul>
<li><a href="https://github.com/Xubuntu/xubuntu-manifest/compare/23d5548ebeede9ad7431f669b96635d9b828f55c...9b0d1f97c07f446002156435343ea3f2a8246639?ref=seand.xyz">Changes from January 1 to February 22</a></li>
<li><a href="https://seand.xyz/2024/12/07/xubuntu-development-update-december-2024/">December Update</a></li>
<li><a href="https://seand.xyz/2025/01/01/xubuntu-development-update-january-2025">January Update</a></li>
</ul>
<table>
<thead>
<tr>
<th>Package</th>
<th>January 1, 2025</th>
<th>February 22, 2025</th>
</tr>
</thead>
<tbody>
<tr>
<td>blueman</td>
<td>2.4.3</td>
<td>2.4.4</td>
</tr>
<tr>
<td>gigolo</td>
<td>0.5.3</td>
<td>0.5.4</td>
</tr>
<tr>
<td>gimp</td>
<td>3.0.0 RC2</td>
<td>3.0.0 RC3</td>
</tr>
<tr>
<td>gnome-mines</td>
<td>40.1</td>
<td>48 Alpha</td>
</tr>
<tr>
<td>libgtk-3</td>
<td>3.24.43</td>
<td>3.24.48</td>
</tr>
<tr>
<td>libgtk-4</td>
<td>4.17.1</td>
<td>4.17.4</td>
</tr>
<tr>
<td>libreoffice</td>
<td>24.8.4</td>
<td>25.2.1</td>
</tr>
<tr>
<td>libxfce4windowing</td>
<td>4.20.0</td>
<td>4.20.2</td>
</tr>
<tr>
<td>lightdm</td>
<td>1.30.0</td>
<td>1.32.0</td>
</tr>
<tr>
<td>Linux kernel</td>
<td>6.11.0</td>
<td>6.12.0</td>
</tr>
<tr>
<td>Mesa</td>
<td>24.2.8</td>
<td>24.3.4</td>
</tr>
<tr>
<td>parole</td>
<td>4.18.1</td>
<td>4.18.2</td>
</tr>
<tr>
<td>python</td>
<td>3.12.8</td>
<td>3.13.1</td>
</tr>
<tr>
<td>rhythmbox</td>
<td>3.4.7</td>
<td>3.4.8</td>
</tr>
<tr>
<td>snapd</td>
<td>2.66.1</td>
<td>2.67.1</td>
</tr>
<tr>
<td>synaptic</td>
<td>0.91.3</td>
<td>0.91.5</td>
</tr>
<tr>
<td>thunar</td>
<td>4.20.0</td>
<td>4.20.2</td>
</tr>
<tr>
<td>xfce4-notifyd</td>
<td>0.9.6</td>
<td>0.9.7</td>
</tr>
<tr>
<td>xfce4-panel</td>
<td>4.20.0</td>
<td>4.20.3</td>
</tr>
<tr>
<td>xfce4-panel-profiles</td>
<td>1.0.14</td>
<td>1.0.15</td>
</tr>
<tr>
<td>xfce4-screensaver</td>
<td>4.18.3</td>
<td>4.18.4</td>
</tr>
<tr>
<td>xfce4-taskmanager</td>
<td>1.5.7</td>
<td>1.5.8</td>
</tr>
<tr>
<td>xfce4-whiskermenu-plugin</td>
<td>2.8.3</td>
<td>2.9.1</td>
</tr>
<tr>
<td>xfce4-xkb-plugin</td>
<td>0.8.3</td>
<td>0.8.5</td>
</tr>
<tr>
<td>xfwm4</td>
<td>4.18.0</td>
<td>4.20.0</td>
</tr>
<tr>
<td>xubuntu-default-settings</td>
<td>25.04.0</td>
<td>25.04.1</td>
</tr>
<tr>
<td>xubuntu-meta</td>
<td>2.265</td>
<td>2.266</td>
</tr>
</tbody>
</table>
<p>In the interest of keeping this post short, I&amp;aposm only going to dive into Xubuntu&amp;aposs package updates...</p>
<h3 id="xubuntudefaultsettings25041">xubuntu-default-settings 25.04.1</h3>
<p><code>xubuntu-default-settings</code> 25.04.1 includes a minor improvement: The <code>gtk-print-preview-command</code> setting has been correctly associated with Atril (LP: <a href="https://launchpad.net/bugs/2025332?ref=seand.xyz">#2025332</a>). Will Thompson&amp;aposs <a href="https://blogs.gnome.org/wjjt/2022/05/30/evince-flatpak-and-gtk-print-previews/?ref=seand.xyz">Evince, Flatpak, and GTK print previews</a> provides more context on this feature:</p>
<blockquote>
<p>GTK provides API for applications to print documents. This presents the user with a print dialog, with many knobs to control how your document will be printed. That dialog has a Preview button; when you press it, the dialog vanishes and another one appears, showing a preview of your document. You can press Print on that dialog to print the document, or close it to cancel.</p>
</blockquote>
<h3 id="xubuntumeta2266">xubuntu-meta 2.266</h3>
<p><code>xubuntu-meta</code> 2.266 adds support for the <code>riscv64</code> architecture (LP: <a href="https://launchpad.net/bugs/2092942?ref=seand.xyz">#2092942</a>)! Similar to the arm achitectures, this isn&amp;apost supported by the Xubuntu team and you won&amp;apost find downloadable ISOs. Instead, this enables package builds so the <code>xubuntu-desktop</code> metapackage will be found on the riscv64 archives. If you put in the effort, you should now be able to get Xubuntu up and running on your riscv hardware. Let me know if you do!</p>
<h2 id="the2504todolist">The 25.04 To-Do List</h2>
<p>The Xubuntu 25.04 <a href="https://github.com/orgs/Xubuntu/projects/11?ref=seand.xyz">project board</a> lists many outstanding tasks that we&amp;aposd like to review this cycle. If you&amp;aposd like to contribute to Xubuntu, pick a task and get to work. :) There are many other ways to contribute to Xubuntu <a href="https://xubuntu.org/contribute/?ref=seand.xyz">listed on our website</a>.</p>
<p>Xubuntu development marches steadily onward!</p></description>
<pubDate>Sat, 22 Feb 2025 04:40:00 +0000</pubDate>
</item>
<item>
<title>Paul Tagliamonte: boot2kier</title>
<guid isPermaLink="true">https://notes.pault.ag/boot2kier/</guid>
<link>https://notes.pault.ag/boot2kier/</link>
<description><p>I can’t remember exactly the joke I was making at the time in my
<a href="https://zoo.dev">work’s</a> slack instance (I’m sure it wasn’t particularly
funny, though; and not even worth re-reading the thread to work out), but it
wound up with me writing a UEFI binary for the punchline. Not to spoil the
ending but it worked - no pesky kernel, no messing around with “userland”. I
guess the only part of this you really need to know for the setup here is that
it was a <a href="https://en.wikipedia.org/wiki/Severance_(TV_series)">Severance</a> joke,
which is some fantastic TV. If you haven’t seen it, this post will seem perhaps
weirder than it actually is. I promise I haven’t joined any new cults. For
those who have seen it, the payoff to my joke is that I wanted my machine to
boot directly to an image of
<a href="https://severance-tv.fandom.com/wiki/Kier_Eagan">Kier Eagan</a>.</p>
<p>As for how to do it – I figured I’d give the <a href="https://docs.rs/uefi/latest/uefi/">uefi
crate</a> a shot, and see how it is to use,
since this is a low stakes way of trying it out. In general, this isn’t the
sort of thing I’d usually post about – except this wound up being easier and
way cleaner than I thought it would be. That alone is worth sharing, in the
hopes someome comes across this in the future and feels like they, too, can
write something fun targeting the UEFI.</p>
<p>First thing’s first – gotta create a rust project (I’ll leave that part to you
depending on your life choices), and to add the <code>uefi</code> crate to your
<code>Cargo.toml</code>. You can either use <code>cargo add</code> or add a line like this by hand:</p>
<div class="highlight"><pre><code class="language-toml" data-lang="toml"><span style="color: #a6e22e;">uefi</span> = { <span style="color: #a6e22e;">version</span> = <span style="color: #e6db74;">"0.33"</span>, <span style="color: #a6e22e;">features</span> = [<span style="color: #e6db74;">"panic_handler"</span>, <span style="color: #e6db74;">"alloc"</span>, <span style="color: #e6db74;">"global_allocator"</span>] }
</code></pre></div><p>We also need to teach cargo about how to go about building for the UEFI target,
so we need to create a <code>rust-toolchain.toml</code> with one (or both) of the UEFI
targets we’re interested in:</p>
<aside class="left">
I think there's a UEFI for riscv64 too, but I haven't found notes about it
in Rust-land.
</aside>
<div class="highlight"><pre><code class="language-toml" data-lang="toml">[<span style="color: #a6e22e;">toolchain</span>]
<span style="color: #a6e22e;">targets</span> = [<span style="color: #e6db74;">"aarch64-unknown-uefi"</span>, <span style="color: #e6db74;">"x86_64-unknown-uefi"</span>]
</code></pre></div><p>Unfortunately, I wasn’t able to use the
<a href="https://docs.rs/image/latest/image/">image</a> crate,
since it won’t build against the <code>uefi</code> target. This looks like it’s
because rustc had no way to compile the required floating point operations
within the <code>image</code> crate without hardware floating point instructions
specifically. Rust tends to punt a lot of that to <code>libm</code> usually, so this isnt
entirely shocking given we’re <code>nostd</code> for a non-hardfloat target.</p>
<aside class="right">
I didn't file any bugs or even track them down between the image crate
and rustc, since I figured this isn't actionable for anyone involved aside
from "implement soft floats in the compiler to backfill this target".
</aside>
<p>So-called “softening” requires a software floating point implementation that
the compiler can use to “polyfill” (feels weird to use the term polyfill here,
but I guess it’s spiritually right?) the lack of hardware floating point
operations, which rust hasn’t implemented for this target yet. As a result, I
changed tactics, and figured I’d use <code>ImageMagick</code> to pre-compute the pixels
from a <code>jpg</code>, rather than doing it at runtime. A bit of a bummer, since I need
to do more out of band pre-processing and hardcoding, and updating the image
kinda sucks as a result – but it’s entirely manageable.</p>
<div class="highlight"><pre><code class="language-sh" data-lang="sh">$ convert -resize 1280x900 kier.jpg kier.full.jpg
$ convert -depth <span style="color: #ae81ff;">8</span> kier.full.jpg rgba:kier.bin
</code></pre></div><p>This will take our input file (<code>kier.jpg</code>), resize it to get as close to the
desired resolution as possible while maintaining aspect ration, then convert it
from a <code>jpg</code> to a flat array of 4 byte <code>RGBA</code> pixels. Critically, it’s also
important to remember that the size of the <code>kier.full.jpg</code> file may not actually
be the requested size – it will not change the aspect ratio, so be sure to
make a careful note of the resulting size of the <code>kier.full.jpg</code> file.</p>
<p>Last step with the image is to compile it into our Rust bianary, since we
don’t want to struggle with trying to read this off disk, which is thankfully
real easy to do.</p>
<div class="highlight"><pre><code class="language-rust" data-lang="rust"><span style="color: #66d9ef;">const</span> KIER: <span style="color: #66d9ef;">&amp;</span>[<span style="color: #66d9ef;">u8</span>] <span style="color: #f92672;">=</span> include_bytes<span style="color: #f92672;">!</span>(<span style="color: #e6db74;">"../kier.bin"</span>);
<span style="color: #66d9ef;">const</span> KIER_WIDTH: <span style="color: #66d9ef;">usize</span> <span style="color: #f92672;">=</span> <span style="color: #ae81ff;">1280</span>;
<span style="color: #66d9ef;">const</span> KIER_HEIGHT: <span style="color: #66d9ef;">usize</span> <span style="color: #f92672;">=</span> <span style="color: #ae81ff;">641</span>;
<span style="color: #66d9ef;">const</span> KIER_PIXEL_SIZE: <span style="color: #66d9ef;">usize</span> <span style="color: #f92672;">=</span> <span style="color: #ae81ff;">4</span>;
</code></pre></div><p>Remember to use the width and height from the final <code>kier.full.jpg</code> file as the
values for <code>KIER_WIDTH</code> and <code>KIER_HEIGHT</code>. <code>KIER_PIXEL_SIZE</code> is 4, since we
have 4 byte wide values for each pixel as a result of our conversion step into
RGBA. We’ll only use RGB, and if we ever drop the alpha channel, we can drop
that down to 3. I don’t entirely know why I kept alpha around, but I figured it
was fine. My <code>kier.full.jpg</code> image winds up shorter than the requested height
(which is also qemu’s default resolution for me) – which means we’ll get a
semi-annoying black band under the image when we go to run it – but it’ll
work.</p>
<p>Anyway, now that we have our image as bytes, we can get down to work, and
write the rest of the code to handle moving bytes around from in-memory
as a flat block if pixels, and request that they be displayed using the
<a href="https://wiki.osdev.org/GOP">UEFI GOP</a>. We’ll just need to hack up a container
for the image pixels and teach it how to blit to the display.</p>
<div class="highlight"><pre><code class="language-rust" data-lang="rust"><span style="color: #e6db74;">/// RGB Image to move around. This isn't the same as an
</span><span style="color: #e6db74;">/// `image::RgbImage`, but we can associate the size of
</span><span style="color: #e6db74;">/// the image along with the flat buffer of pixels.
</span><span style="color: #e6db74;"></span><span style="color: #66d9ef;">struct</span> <span style="color: #a6e22e;">RgbImage</span> {
<span style="color: #e6db74;">/// Size of the image as a tuple, as the
</span><span style="color: #e6db74;"></span> <span style="color: #e6db74;">/// (width, height)
</span><span style="color: #e6db74;"></span> size: (<span style="color: #66d9ef;">usize</span>, <span style="color: #66d9ef;">usize</span>),
<span style="color: #e6db74;">/// raw pixels we'll send to the display.
</span><span style="color: #e6db74;"></span> inner: Vec<span style="color: #f92672;">&lt;</span>BltPixel<span style="color: #f92672;">&gt;</span>,
}
<span style="color: #66d9ef;">impl</span> RgbImage {
<span style="color: #e6db74;">/// Create a new `RgbImage`.
</span><span style="color: #e6db74;"></span> <span style="color: #66d9ef;">fn</span> <span style="color: #a6e22e;">new</span>(width: <span style="color: #66d9ef;">usize</span>, height: <span style="color: #66d9ef;">usize</span>) -&gt; <span style="color: #a6e22e;">Self</span> {
RgbImage {
size: (width, height),
inner: <span style="color: #a6e22e;">vec</span><span style="color: #f92672;">!</span>[BltPixel::new(<span style="color: #ae81ff;">0</span>, <span style="color: #ae81ff;">0</span>, <span style="color: #ae81ff;">0</span>); width <span style="color: #f92672;">*</span> height],
}
}
<span style="color: #e6db74;">/// Take our pixels and request that the UEFI GOP
</span><span style="color: #e6db74;"></span> <span style="color: #e6db74;">/// display them for us.
</span><span style="color: #e6db74;"></span> <span style="color: #66d9ef;">fn</span> <span style="color: #a6e22e;">write</span>(<span style="color: #f92672;">&amp;</span>self, gop: <span style="color: #66d9ef;">&amp;</span><span style="color: #a6e22e;">mut</span> GraphicsOutput) -&gt; Result {
gop.blt(BltOp::BufferToVideo {
buffer: <span style="color: #66d9ef;">&amp;</span><span style="color: #a6e22e;">self</span>.inner,
src: <span style="color: #a6e22e;">BltRegion</span>::Full,
dest: (<span style="color: #ae81ff;">0</span>, <span style="color: #ae81ff;">0</span>),
dims: <span style="color: #a6e22e;">self</span>.size,
})
}
}
<span style="color: #66d9ef;">impl</span> Index<span style="color: #f92672;">&lt;</span>(<span style="color: #66d9ef;">usize</span>, <span style="color: #66d9ef;">usize</span>)<span style="color: #f92672;">&gt;</span> <span style="color: #66d9ef;">for</span> RgbImage {
<span style="color: #66d9ef;">type</span> <span style="color: #a6e22e;">Output</span> <span style="color: #f92672;">=</span> BltPixel;
<span style="color: #66d9ef;">fn</span> <span style="color: #a6e22e;">index</span>(<span style="color: #f92672;">&amp;</span>self, idx: (<span style="color: #66d9ef;">usize</span>, <span style="color: #66d9ef;">usize</span>)) -&gt; <span style="color: #66d9ef;">&amp;</span><span style="color: #a6e22e;">BltPixel</span> {
<span style="color: #66d9ef;">let</span> (x, y) <span style="color: #f92672;">=</span> idx;
<span style="color: #f92672;">&amp;</span>self.inner[y <span style="color: #f92672;">*</span> self.size.<span style="color: #ae81ff;">0</span> <span style="color: #f92672;">+</span> x]
}
}
<span style="color: #66d9ef;">impl</span> IndexMut<span style="color: #f92672;">&lt;</span>(<span style="color: #66d9ef;">usize</span>, <span style="color: #66d9ef;">usize</span>)<span style="color: #f92672;">&gt;</span> <span style="color: #66d9ef;">for</span> RgbImage {
<span style="color: #66d9ef;">fn</span> <span style="color: #a6e22e;">index_mut</span>(<span style="color: #f92672;">&amp;</span><span style="color: #66d9ef;">mut</span> self, idx: (<span style="color: #66d9ef;">usize</span>, <span style="color: #66d9ef;">usize</span>)) -&gt; <span style="color: #66d9ef;">&amp;</span><span style="color: #a6e22e;">mut</span> BltPixel {
<span style="color: #66d9ef;">let</span> (x, y) <span style="color: #f92672;">=</span> idx;
<span style="color: #f92672;">&amp;</span><span style="color: #66d9ef;">mut</span> self.inner[y <span style="color: #f92672;">*</span> self.size.<span style="color: #ae81ff;">0</span> <span style="color: #f92672;">+</span> x]
}
}
</code></pre></div><p>We also need to do some basic setup to get a handle to the UEFI
GOP via the UEFI crate (using
<a href="https://docs.rs/uefi/latest/uefi/boot/fn.get_handle_for_protocol.html">uefi::boot::get_handle_for_protocol</a>
and
<a href="https://docs.rs/uefi/latest/uefi/boot/fn.open_protocol_exclusive.html">uefi::boot::open_protocol_exclusive</a>
for the <a href="https://docs.rs/uefi/latest/uefi/proto/console/gop/struct.GraphicsOutput.html">GraphicsOutput</a>
protocol), so that we have the object we need to pass to <code>RgbImage</code> in order
for it to write the pixels to the display. The only trick here is that the
display on the booted system can really be any resolution – so we need to do
some capping to ensure that we don’t write more pixels than the display can
handle. Writing fewer than the display’s maximum seems fine, though.</p>
<div class="highlight"><pre><code class="language-rust" data-lang="rust"><span style="color: #66d9ef;">fn</span> <span style="color: #a6e22e;">praise</span>() -&gt; Result {
<span style="color: #66d9ef;">let</span> gop_handle <span style="color: #f92672;">=</span> boot::get_handle_for_protocol::<span style="color: #f92672;">&lt;</span>GraphicsOutput<span style="color: #f92672;">&gt;</span>()<span style="color: #f92672;">?</span>;
<span style="color: #66d9ef;">let</span> <span style="color: #66d9ef;">mut</span> gop <span style="color: #f92672;">=</span> boot::open_protocol_exclusive::<span style="color: #f92672;">&lt;</span>GraphicsOutput<span style="color: #f92672;">&gt;</span>(gop_handle)<span style="color: #f92672;">?</span>;
<span style="color: #75715e;">// Get the (width, height) that is the minimum of
</span><span style="color: #75715e;"></span> <span style="color: #75715e;">// our image and the display we're using.
</span><span style="color: #75715e;"></span> <span style="color: #66d9ef;">let</span> (width, height) <span style="color: #f92672;">=</span> gop.current_mode_info().resolution();
<span style="color: #66d9ef;">let</span> (width, height) <span style="color: #f92672;">=</span> (width.min(KIER_WIDTH), height.min(KIER_HEIGHT));
<span style="color: #66d9ef;">let</span> <span style="color: #66d9ef;">mut</span> buffer <span style="color: #f92672;">=</span> RgbImage::new(width, height);
<span style="color: #66d9ef;">for</span> y <span style="color: #66d9ef;">in</span> <span style="color: #ae81ff;">0</span>..height {
<span style="color: #66d9ef;">for</span> x <span style="color: #66d9ef;">in</span> <span style="color: #ae81ff;">0</span>..width {
<span style="color: #66d9ef;">let</span> idx_r <span style="color: #f92672;">=</span> ((y <span style="color: #f92672;">*</span> KIER_WIDTH) <span style="color: #f92672;">+</span> x) <span style="color: #f92672;">*</span> KIER_PIXEL_SIZE;
<span style="color: #66d9ef;">let</span> pixel <span style="color: #f92672;">=</span> <span style="color: #f92672;">&amp;</span><span style="color: #66d9ef;">mut</span> buffer[(x, y)];
pixel.red <span style="color: #f92672;">=</span> KIER[idx_r];
pixel.green <span style="color: #f92672;">=</span> KIER[idx_r <span style="color: #f92672;">+</span> <span style="color: #ae81ff;">1</span>];
pixel.blue <span style="color: #f92672;">=</span> KIER[idx_r <span style="color: #f92672;">+</span> <span style="color: #ae81ff;">2</span>];
}
}
buffer.write(<span style="color: #f92672;">&amp;</span><span style="color: #66d9ef;">mut</span> gop)<span style="color: #f92672;">?</span>;
Ok(())
}
</code></pre></div><p>Not so bad! A bit tedious – we could solve some of this by turning
<code>KIER</code> into an <code>RgbImage</code> at compile-time using some clever <code>Cow</code> and
<code>const</code> tricks and implement blitting a sub-image of the image – but this
will do for now. This is a joke, after all, let’s not go nuts. All that’s
left with our code is for us to write our <code>main</code> function and try and boot
the thing!</p>
<div class="highlight"><pre><code class="language-rust" data-lang="rust"><span style="color: #75715e;">#[entry]</span>
<span style="color: #66d9ef;">fn</span> <span style="color: #a6e22e;">main</span>() -&gt; <span style="color: #a6e22e;">Status</span> {
uefi::helpers::init().unwrap();
praise().unwrap();
boot::stall(<span style="color: #ae81ff;">100_000_000</span>);
Status::SUCCESS
}
</code></pre></div><p>If you’re following along at home and so interested, the final source is over at
<a href="https://gist.github.com/paultag/60334e9f6c06388cc4b1c2cf12d85085">gist.github.com</a>.
We can go ahead and build it using <code>cargo</code> (as is our tradition) by targeting
the UEFI platform.</p>
<div class="highlight"><pre><code class="language-sh" data-lang="sh">$ cargo build --release --target x86_64-unknown-uefi
</code></pre></div><h1 id="testing-the-uefi-blob">Testing the UEFI Blob</h1>
<p>While I can definitely get my machine to boot these blobs to test, I figured
I’d save myself some time by using QEMU to test without a full boot.
If you’ve not done this sort of thing before, we’ll need two packages,
<code>qemu</code> and <code>ovmf</code>. It’s a bit different than most invocations of qemu you
may see out there – so I figured it’d be worth writing this down, too.</p>
<aside class="left">
It's perhaps likely that you aren't using <code>doas</code> with Debian.
Replace <code>doas</code> with <code>sudo</code> if that's your thing.
</aside>
<div class="highlight"><pre><code class="language-sh" data-lang="sh">$ doas apt install qemu-system-x86 ovmf
</code></pre></div><p><code>qemu</code> has a nice feature where it’ll create us an EFI partition as a drive and
attach it to the VM off a local directory – so let’s construct an EFI
partition file structure, and drop our binary into the conventional location.
If you haven’t done this before, and are only interested in running this in a
VM, don’t worry too much about it, a lot of it is convention and this layout
should work for you.</p>
<div class="highlight"><pre><code class="language-sh" data-lang="sh">$ mkdir -p esp/efi/boot
$ cp target/x86_64-unknown-uefi/release/*.efi <span style="color: #ae81ff;">\
</span><span style="color: #ae81ff;"></span> esp/efi/boot/bootx64.efi
</code></pre></div><p>With all this in place, we can kick off <code>qemu</code>, booting it in UEFI mode using
the <code>ovmf</code> firmware, attaching our EFI partition directory as a drive to
our VM to boot off of.</p>
<div class="highlight"><pre><code class="language-sh" data-lang="sh">$ qemu-system-x86_64 <span style="color: #ae81ff;">\
</span><span style="color: #ae81ff;"></span> -enable-kvm <span style="color: #ae81ff;">\
</span><span style="color: #ae81ff;"></span> -m <span style="color: #ae81ff;">2048</span> <span style="color: #ae81ff;">\
</span><span style="color: #ae81ff;"></span> -smbios type<span style="color: #f92672;">=</span>0,uefi<span style="color: #f92672;">=</span>on <span style="color: #ae81ff;">\
</span><span style="color: #ae81ff;"></span> -bios /usr/share/ovmf/OVMF.fd <span style="color: #ae81ff;">\
</span><span style="color: #ae81ff;"></span> -drive format<span style="color: #f92672;">=</span>raw,file<span style="color: #f92672;">=</span>fat:rw:esp
</code></pre></div><p>If all goes well, soon you’ll be met with the all knowing gaze of
Chosen One, Kier Eagan. The thing that really impressed me about all
this is this program worked first try – it all went so boringly
normal. Truly, kudos to the <code>uefi</code> crate maintainers, it’s incredibly
well done.</p>
<div>
<img src="https://notes.pault.ag/boot2kier/boot2kier.png" />
</div>
<h1 id="booting-a-live-system">Booting a live system</h1>
<p>Sure, we <em>could</em> stop here, but anyone can open up an app window and see a
picture of Kier Eagan, so I knew I needed to finish the job and boot a real
machine up with this. In order to do that, we need to format a USB stick.
<strong>BE SURE /dev/sda IS CORRECT IF YOU’RE COPY AND PASTING</strong>. All my drives
are NVMe, so <strong>BE CAREFUL</strong> – if you use SATA, it may very well be your
hard drive! Please do not destroy your computer over this.</p>
<div class="highlight"><pre><code class="language-txt" data-lang="txt">$ doas fdisk /dev/sda
Welcome to fdisk (util-linux 2.40.4).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-4014079, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-4014079, default 4014079):
Created a new partition 1 of type 'Linux' and of size 1.9 GiB.
Command (m for help): t
Selected partition 1
Hex code or alias (type L to list all): ef
Changed type of partition 'Linux' to 'EFI (FAT-12/16/32)'.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
</code></pre></div><p>Once that looks good (depending on your flavor of <code>udev</code> you may or
may not need to unplug and replug your USB stick), we can go ahead
and format our new EFI partition (<strong>BE CAREFUL THAT /dev/sda IS YOUR
USB STICK</strong>) and write our EFI directory to it.</p>
<div class="highlight"><pre><code class="language-txt" data-lang="txt">$ doas mkfs.fat /dev/sda1
$ doas mount /dev/sda1 /mnt
$ cp -r esp/efi /mnt
$ find /mnt
/mnt
/mnt/efi
/mnt/efi/boot
/mnt/efi/boot/bootx64.efi
</code></pre></div><p>Of course, naturally, devotion to Kier shouldn’t mean backdooring your system.
Disabling Secure Boot runs counter to the Core Principals, such as Probity, and
not doing this would surely run counter to Verve, Wit and Vision. This bit does
require that you’ve taken the step to enroll a
<a href="https://wiki.debian.org/SecureBoot#MOK_-_Machine_Owner_Key">MOK</a> and know how
to use it, right about now is when we can use <code>sbsign</code> to sign our UEFI binary
we want to boot from to continue enforcing Secure Boot. The details for how
this command should be run specifically is likely something you’ll need to work
out depending on how you’ve decided to manage your MOK.</p>
<div class="highlight"><pre><code class="language-sh" data-lang="sh">$ doas sbsign <span style="color: #ae81ff;">\
</span><span style="color: #ae81ff;"></span> --cert /path/to/mok.crt <span style="color: #ae81ff;">\
</span><span style="color: #ae81ff;"></span> --key /path/to/mok.key <span style="color: #ae81ff;">\
</span><span style="color: #ae81ff;"></span> target/x86_64-unknown-uefi/release/*.efi <span style="color: #ae81ff;">\
</span><span style="color: #ae81ff;"></span> --output esp/efi/boot/bootx64.efi
</code></pre></div><p>I figured I’d leave a signed copy of <code>boot2kier</code> at
<code>/boot/efi/EFI/BOOT/KIER.efi</code> on my Dell XPS 13, with Secure Boot enabled
and enforcing, just took a matter of going into my BIOS to add the right
boot option, which was no sweat. I’m sure there is a way to do it using
<code>efibootmgr</code>, but I wasn’t smart enough to do that quickly. I let ‘er rip,
and it booted up and worked great!</p>
<p>It was a bit hard to get a video of my laptop, though – but lucky for me, I
have a Minisforum Z83-F sitting around (which, until a few weeks ago was running
the annual http server to control my <a href="https://k3xec.com/christmas/">christmas tree</a>
) – so I grabbed it out of the christmas bin, wired it up to a video capture
card I have sitting around, and figured I’d grab a video of me booting a
physical device off the boot2kier USB stick.</p>
<div>
<img class="note-pad" src="https://notes.pault.ag/boot2kier/z83-boot2kier.gif" />
</div>
<p>Attentive readers will notice the image of Kier is smaller then the qemu booted
system – which just means our real machine has a larger GOP display
resolution than qemu, which makes sense! We could write some fancy resize code
(sounds annoying), center the image (can’t be assed but should be the easy way
out here) or resize the original image (pretty hardware specific workaround).
Additionally, you can make out the image being written to the display before us
(the Minisforum logo) behind Kier, which is really cool stuff. If we were real
fancy we could write blank pixels to the display before blitting Kier, but,
again, I don’t think I care to do <em>that</em> much work.</p>
<h1 id="but-now-i-must-away">But now I must away</h1>
<p>If I wanted to keep this joke going, I’d likely try and find a copy of the
original
<a href="https://www.youtube.com/watch?v=U6EUG22elbs">video when Helly 100%s her file</a>
and boot into that – or maybe play a terrible midi PC speaker rendition of
<a href="https://www.youtube.com/watch?v=OsbxAsdR0QI">Kier, Chosen One, Kier</a> after
rendering the image. I, unfortunately, don’t have any friends involved with
production (yet?), so I reckon all that’s out for now. I’ll likely stop playing
with this – the joke was done and I’m only writing this post because of how
great everything was along the way.</p>
<p>All in all, this reminds me so much of building a homebrew kernel to boot a
system into – but like, <em>good</em>, though, and it’s a nice reminder of both how
fun this stuff can be, and how far we’ve come. UEFI protocols are light-years
better than how we did it in the dark ages, and the tooling for this is <em>SO</em>
much more mature. Booting a custom UEFI binary is <em>miles</em> ahead of trying to
boot your own kernel, and I can’t believe how good the <code>uefi</code> crate is
specifically.</p>
<p>Praise Kier! Kudos, to everyone involved in making this so delightful ❤️.</p></description>
<pubDate>Thu, 20 Feb 2025 14:40:00 +0000</pubDate>
</item>
<item>
<title>Balint Reczey: Wireshark on Ubuntu: Stay Ahead with the Latest Releases and Nightly Builds</title>
<guid isPermaLink="false">https://balintreczey.hu/blog/?p=1025</guid>
<link>https://balintreczey.hu/blog/wireshark-on-ubuntu-stay-ahead-with-the-latest-releases-and-nightly-builds/</link>
<description><div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img alt="" class="wp-image-1035 size-medium" height="300" src="https://balintreczey.hu/blog/wp-content/uploads/2025/02/Wireshark_icon_new-with-ubuntu-logo-300x300.png" width="300" /></figure><div class="wp-block-media-text__content">
<p>Wireshark is an essential tool for network analysis, and staying up to date with the latest releases ensures access to new features, security updates, and bug fixes. While Ubuntu’s official repositories provide stable versions, they are often not the most recent.</p>
</div></div>
<p>Wearing both WiresharkCore Developer and Debian/Ubuntu package maintainer hats, I’m happy to help the Wireshark team in providing updated packages for all supported Ubuntu versions through dedicated PPAs. This post outlines how you can install the latest stable and nightly Wireshark builds on Ubuntu.</p>
<h2 class="wp-block-heading"><strong>Latest Stable Releases</strong></h2>
<p>For users who want the most <strong>up-to-date stable</strong> Wireshark version, we maintain a PPA with backports of the latest releases:</p>
<p><img alt="🔗" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f517.png" style="height: 1em;" /> <strong>Stable Wireshark PPA:</strong><br /><img alt="👉" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f449.png" style="height: 1em;" /> <a href="https://launchpad.net/~wireshark-dev/+archive/ubuntu/stable">https://launchpad.net/~wireshark-dev/+archive/ubuntu/stable</a></p>
<h3 class="wp-block-heading"><strong>Installation Instructions</strong></h3>
<p>To install the latest stable Wireshark version, add the PPA and update your package list:</p>
<pre class="wp-block-preformatted">sudo add-apt-repository ppa:wireshark-dev/stable<br />sudo apt install wireshark</pre>
<h2 class="wp-block-heading"><strong>Nightly Builds (Development Versions)</strong></h2>
<p>For those who want to test new features before they are officially released, nightly builds are also available. These builds track the latest development code and you can watch them cooking on their <a href="https://code.launchpad.net/~wireshark-dev/+recipe/wireshark-daily-master">Launchpad recipe page</a>.</p>
<p><img alt="🔗" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f517.png" style="height: 1em;" /> <strong>Nightly PPA:</strong><br /><img alt="👉" class="wp-smiley" src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f449.png" style="height: 1em;" /> <a href="https://code.launchpad.net/~wireshark-dev/+archive/ubuntu/nightly">https://code.launchpad.net/~wireshark-dev/+archive/ubuntu/nightly</a></p>
<h3 class="wp-block-heading"><strong>Installation Instructions</strong></h3>
<p>To install the latest development version of Wireshark, use the following commands:</p>
<pre class="wp-block-preformatted">sudo add-apt-repository ppa:wireshark-dev/nightly<br />sudo apt install wireshark</pre>
<p><strong>Note:</strong> Nightly builds may contain experimental features and are not guaranteed to be as stable as the official releases. Also it targets only Ubuntu 24.04 and later including the current development release.</p>
<p>If you need to revert to the stable version later, remove the nightly PPA and reinstall Wireshark:</p>
<pre class="wp-block-preformatted">sudo add-apt-repository --remove ppa:wireshark-dev/nightly<br />sudo apt install wireshark</pre>
<p>Happy sniffing! 🙂</p>
<p></p></description>
<pubDate>Tue, 18 Feb 2025 09:57:30 +0000</pubDate>
</item>
<item>
<title>Alan Pope: Spotlighting Community Stories</title>
<guid isPermaLink="true">https://blog.popey.com/2025/02/spotlighting-community-stories/</guid>
<link>https://blog.popey.com/2025/02/spotlighting-community-stories/</link>
<description><p>tl;dr I’m hosting a <a href="https://anchore.zoom.us/j/84874186657">Community Spotlight Webinar</a> today at <a href="https://anchore.com/">Anchore</a> featuring <a href="https://www.linkedin.com/in/nicolas-vuillamy/">Nicolas Vuilamy</a> from the <a href="https://megalinter.io/latest/">MegaLinter</a> project. <a href="https://anchore.zoom.us/j/84874186657">Register here</a>.</p>
<hr />
<p>Throughout my career, I’ve had the privilege of working with organizations that create widely-used open source tools. The popularity of these tools is evident through their impressive download statistics, strong community presence, and engagement both online and at events.</p>
<p>During my time at <a href="https://canonical.com/">Canonical</a>, we saw the tremendous reach of <a href="https://ubuntu.com/">Ubuntu</a>, along with tools like <a href="https://canonical.com/lxd">LXD</a>, <a href="https://cloud-init.io/">cloud-init</a>, and yes, even <a href="https://snapcraft.io/">Snapcraft</a>.</p>
<p>At <a href="https://www.influxdata.com/">Influxdata</a>, I was part of the <a href="https://www.influxdata.com/time-series-platform/telegraf/">Telegraf</a> team, where we witnessed substantial adoption through downloads and active usage, reflected in our vibrant <a href="https://www.repotrends.com/influxdata/telegraf">bug tracker</a>.</p>
<p>Now at <a href="https://anchore.com/">Anchore</a>, we see widespread adoption of <a href="https://github.com/anchore/syft">Syft</a> for <a href="https://anchore.com/sbom">SBOM</a> generation and <a href="https://github.com/anchore/grype">Grype</a> for <a href="https://anchore.com/container-vulnerability-scanning/">vulnerability</a> scanning.</p>
<p>What makes Syft and Grype particularly exciting, beyond their permissive licensing, consistent release cycle, dedicated developer team, and <a href="https://en.wikipedia.org/wiki/List_of_computing_mascots#/media/File:Syft_mascot.svg">distinctive</a> <a href="https://en.wikipedia.org/wiki/List_of_computing_mascots#/media/File:Grype_mascot.svg">mascots</a>, is how they serve as building blocks for other tools and services.</p>
<p>Syft isn’t just a standalone SBOM generator - it’s a library that developers can integrate into their own tools. Some organizations even build their own SBOM generators and vulnerability tools directly from our open source foundation!</p>
<div class="highlight"><pre tabindex="0"><code class="language-bash" data-lang="bash"><span style="display: flex;"><span>$ docker-scout version
</span></span><span style="display: flex;"><span> ⢀⢀⢀ ⣀⣀⡤⣔⢖⣖⢽⢝
</span></span><span style="display: flex;"><span> ⡠⡢⡣⡣⡣⡣⡣⡣⡢⡀ ⢀⣠⢴⡲⣫⡺⣜⢞⢮⡳⡵⡹⡅
</span></span><span style="display: flex;"><span> ⡜⡜⡜⡜⡜⡜⠜⠈⠈ ⠁⠙⠮⣺⡪⡯⣺⡪⡯⣺
</span></span><span style="display: flex;"><span> ⢘⢜⢜⢜⢜⠜ ⠈⠪⡳⡵⣹⡪⠇
</span></span><span style="display: flex;"><span> ⠨⡪⡪⡪⠂ ⢀⡤⣖⢽⡹⣝⡝⣖⢤⡀ ⠘⢝⢮⡚ _____ _
</span></span><span style="display: flex;"><span> ⠱⡱⠁ ⡴⡫⣞⢮⡳⣝⢮⡺⣪⡳⣝⢦ ⠘⡵⠁ / ____| Docker | |
</span></span><span style="display: flex;"><span> ⠁ ⣸⢝⣕⢗⡵⣝⢮⡳⣝⢮⡺⣪⡳⣣ ⠁ | <span style="color: #f92672;">(</span>___ ___ ___ _ _| |_
</span></span><span style="display: flex;"><span> ⣗⣝⢮⡳⣝⢮⡳⣝⢮⡳⣝⢮⢮⡳ <span style="color: #ae81ff;">\_</span>__ <span style="color: #ae81ff;">\ </span>/ __/ _ <span style="color: #ae81ff;">\|</span> | | | __|
</span></span><span style="display: flex;"><span> ⢀ ⢱⡳⡵⣹⡪⡳⣝⢮⡳⣝⢮⡳⡣⡏ ⡀ ____<span style="color: #f92672;">)</span> | <span style="color: #f92672;">(</span>_| <span style="color: #f92672;">(</span>_<span style="color: #f92672;">)</span> | |_| | |_
</span></span><span style="display: flex;"><span> ⢀⢾⠄ ⠫⣞⢮⡺⣝⢮⡳⣝⢮⡳⣝⠝ ⢠⢣⢂ |_____/ <span style="color: #ae81ff;">\_</span>__<span style="color: #ae81ff;">\_</span>__/ <span style="color: #ae81ff;">\_</span>_,_|<span style="color: #ae81ff;">\_</span>_|
</span></span><span style="display: flex;"><span> ⡼⣕⢗⡄ ⠈⠓⠝⢮⡳⣝⠮⠳⠙ ⢠⢢⢣⢣
</span></span><span style="display: flex;"><span> ⢰⡫⡮⡳⣝⢦⡀ ⢀⢔⢕⢕⢕⢕⠅
</span></span><span style="display: flex;"><span> ⡯⣎⢯⡺⣪⡳⣝⢖⣄⣀ ⡀⡠⡢⡣⡣⡣⡣⡣⡃
</span></span><span style="display: flex;"><span>⢸⢝⢮⡳⣝⢮⡺⣪⡳⠕⠗⠉⠁ ⠘⠜⡜⡜⡜⡜⡜⡜⠜⠈
</span></span><span style="display: flex;"><span>⡯⡳⠳⠝⠊⠓⠉ ⠈⠈⠈⠈
</span></span><span style="display: flex;"><span>
</span></span><span style="display: flex;"><span>
</span></span><span style="display: flex;"><span>
</span></span><span style="display: flex;"><span>version: v1.13.0 <span style="color: #f92672;">(</span>go1.22.5 - darwin/arm64<span style="color: #f92672;">)</span>
</span></span><span style="display: flex;"><span>git commit: 7a85bab58d5c36a7ab08cd11ff574717f5de3ec2
</span></span><span style="display: flex;"><span>
</span></span><span style="display: flex;"><span>$ syft /usr/local/bin/docker-scout | grep syft
</span></span><span style="display: flex;"><span> ✔ Indexed file system /usr/local/bin/docker-scout
</span></span><span style="display: flex;"><span> ✔ Cataloged contents f247ef0423f53cbf5172c34d2b3ef23d84393bd1d8e05f0ac83ec7d864396c1b
</span></span><span style="display: flex;"><span> ├── ✔ Packages <span style="color: #f92672;">[</span><span style="color: #ae81ff;">274</span> packages<span style="color: #f92672;">]</span>
</span></span><span style="display: flex;"><span> ├── ✔ File digests <span style="color: #f92672;">[</span><span style="color: #ae81ff;">1</span> files<span style="color: #f92672;">]</span>
</span></span><span style="display: flex;"><span> ├── ✔ File metadata <span style="color: #f92672;">[</span><span style="color: #ae81ff;">1</span> locations<span style="color: #f92672;">]</span>
</span></span><span style="display: flex;"><span> └── ✔ Executables <span style="color: #f92672;">[</span><span style="color: #ae81ff;">1</span> executables<span style="color: #f92672;">]</span>
</span></span><span style="display: flex;"><span>github.com/anchore/syft v1.10.0 go-module
</span></span></code></pre></div><p><em>(I find it delightfully meta to discover syft inside other tools using syft itself)</em></p>
<center><a href="https://blog.popey.com/blog/images/2025-02-13/scooby-doo-meme.png"><img alt="A silly meme that isn't true at all :)" src="https://blog.popey.com/blog/images/2025-02-13/scooby-doo-meme.png" width="540" /></a></center>
<p>This collaborative building upon existing tools mirrors how <a href="https://linuxmint.com/">Linux</a> distributions often build upon other <a href="http://ubuntu.com/">Linux distributions</a>. Like Ubuntu and Telegraf, we see countless individuals and organizations creating innovative solutions that extend beyond the core capabilities of Syft and Grype. It’s the essence of open source - a multiplier effect that comes from creating accessible, powerful tools.</p>
<p>While we may not always know exactly how and where these tools are being used (and sometimes, rightfully so, it’s not our business), there are many cases where developers and companies want to share their innovative implementations.</p>
<p>I’m particularly interested in these stories because they deserve to be shared. I’ve been exploring public repositories like the GitHub network dependents for <a href="https://github.com/anchore/syft/network/dependents">syft</a>, <a href="https://github.com/anchore/grype/network/dependents">grype</a>, <a href="https://github.com/anchore/sbom-action/network/dependents">sbom-action</a>, and <a href="https://github.com/anchore/scan-action/network/dependents">scan-action</a> to discover where our tools are making an impact.</p>
<p>The adoption has been remarkable!</p>
<p>I reached out to several open source projects to learn about their implementations, and <a href="https://www.linkedin.com/in/nicolas-vuillamy/">Nicolas Vuilamy</a> from <a href="https://megalinter.io/latest/">MegaLinter</a> was the first to respond - which brings us full circle.</p>
<p>Today, I’m hosting our first <a href="https://anchore.zoom.us/j/84874186657">Community Spotlight Webinar</a> with Nicolas to share MegaLinter’s story. <a href="https://anchore.zoom.us/j/84874186657">Register here</a> to join us!</p>
<p>If you’re building something interesting with <a href="https://github.com/anchore">Anchore Open Source</a> and would like to share your story, please <a href="https://popey.me/">get in touch</a>. 🙏</p></description>
<pubDate>Thu, 13 Feb 2025 10:00:00 +0000</pubDate>
</item>
</channel>
</rss>
If you would like to create a banner that links to this page (i.e. this validation result), do the following:
Download the "valid RSS" banner.
Upload the image to your own server. (This step is important. Please do not link directly to the image on this server.)
Add this HTML to your page (change the image src
attribute if necessary):
If you would like to create a text link instead, here is the URL you can use:
http://www.feedvalidator.org/check.cgi?url=http%3A//planet.ubuntu.com/rss20.xml