Congratulations!

[Valid RSS] This is a valid RSS feed.

Recommendations

This feed is valid, but interoperability with the widest range of feed readers could be improved by implementing the following recommendations.

Source: http://planet.ubuntu.com/rss20.xml

  1. <?xml version="1.0"?>
  2. <rss version="2.0">
  3.  
  4. <channel>
  5. <title>Planet Ubuntu</title>
  6. <link>http://planet.ubuntu.com/</link>
  7. <language>en</language>
  8. <description>Planet Ubuntu - http://planet.ubuntu.com/</description>
  9.  
  10. <item>
  11. <title>Ubuntu Blog: Migrating from CentOS to Ubuntu: a guide for system administrators and DevOps</title>
  12. <guid isPermaLink="true">https://ubuntu.com//blog/migrating-from-centos-to-ubuntu-guide</guid>
  13. <link>https://ubuntu.com//blog/migrating-from-centos-to-ubuntu-guide</link>
  14. <description>&lt;figure class=&quot;wp-block-image size-full&quot;&gt;
  15. &lt;div class=&quot;lazyload&quot; data-noscript=&quot;&quot;&gt;
  16. &amp;lt;noscript&amp;gt;
  17. &amp;lt;img alt=&quot;&quot; height=&quot;427&quot; src=&quot;https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_640,h_427/https://ubuntu.com/wp-content/uploads/0c69/sonja-langford-eIkbSc3SDtI-unsplash-1.jpg&quot; width=&quot;640&quot; /&amp;gt;
  18. &amp;lt;/noscript&amp;gt;
  19. &lt;/div&gt;
  20. &lt;em&gt;Photo by Sonja Langford, &lt;a href=&quot;https://unsplash.com/photos/round-timex-analog-clock-at-233-eIkbSc3SDtI&quot;&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/figure&gt;
  21. &lt;p&gt;CentOS 7 is on track to reach its end-of-life (EoL) on June 30, 2024. Post this date, the CentOS Project will cease to provide updates or support, including vital security patches. Moving away from the RHEL-based ecosystem might appear daunting, but if you’re considering Ubuntu the switch can be both straightforward and economically viable.&lt;/p&gt;
  22. &lt;p&gt;&lt;a href=&quot;https://pentera.io/&quot;&gt;Pentera&lt;/a&gt;, a frontrunner in automated security validation, provides a compelling case study to the ease of this transition. They detail how their container-based setup was migrated to Ubuntu with minimal adjustments, leading to enhanced security measures. The move was also positively received by their clients, who appreciated Ubuntu’s reliable history of issuing Long Term Support releases every two years for the past two decades, complemented by extensive community support.&lt;/p&gt;
  23. &lt;p&gt;Nitzan Dana, the DevOps Lead at Pentera, noted: “In spite of Ubuntu and CentOS being based on different distribution families, vast sections of our deployment scripts ran smoothly on Ubuntu without requiring any modifications”.&lt;/p&gt;
  24. &lt;p&gt;For a deeper dive into Pentera’s migration journey and insights on planning your own switch to Ubuntu, you can explore &lt;a href=&quot;https://ubuntu.com/engage/pentera-centos-migration-to-ubuntu&quot;&gt;the full case study&lt;/a&gt; or read on for further migration considerations.&lt;/p&gt;
  25. &lt;h2 class=&quot;wp-block-heading&quot;&gt;Delivering certainty in a shifting ecosystem&lt;/h2&gt;
  26. &lt;p&gt;The shift of CentOS from a free rebuild closely aligned with Red Hat Enterprise Linux (RHEL) to an upstream project previewing future RHEL updates led to the emergence of competitors such as Rocky Linux and AlmaLinux. These distributions aimed to fill the gap left by CentOS 7, positioning themselves as its natural successors.&lt;/p&gt;
  27. &lt;p&gt;However, Red Hat’s &lt;a href=&quot;https://www.redhat.com/en/blog/furthering-evolution-centos-stream&quot;&gt;decision&lt;/a&gt; to make CentOS Stream the exclusive public repository for RHEL-related source code and limiting direct source code access to its customers has complicated the ability of these new distributions to maintain exact compatibility with RHEL. &lt;/p&gt;
  28. &lt;p&gt;Canonical, as the publisher of Ubuntu, offers the same version of the operating system to both home and commercial users without distinction between paid or free versions. As an open source project, Ubuntu’s source code is readily accessible for anyone to view at any time for any purpose.&lt;/p&gt;
  29. &lt;p&gt;Ubuntu has adhered to its &lt;a href=&quot;https://ubuntu.com/about/release-cycle&quot;&gt;stable release cycle&lt;/a&gt; model for two decades, introducing interim updates every six months as a lead-up to the next Long Term Support (LTS) version, which is released every two years in April. &lt;a href=&quot;https://ubuntu.com/blog/canonical-releases-ubuntu-24-04-noble-numbat&quot;&gt;Ubuntu 24.04 LTS&lt;/a&gt; marks the tenth in this series.&lt;/p&gt;
  30. &lt;p&gt;Each LTS release of Ubuntu is supported with five years of maintenance and security updates at no cost to all users. For those seeking expanded coverage, &lt;a href=&quot;https://ubuntu.com/pro&quot;&gt;Ubuntu Pro&lt;/a&gt; offers a subscription service that includes additional security updates for the broader Ubuntu Universe repository, encompassing various tools, applications, and libraries. This coverage can be extended to &lt;a href=&quot;https://canonical.com/blog/canonical-expands-long-term-support-to-12-years-starting-with-ubuntu-14-04-lts&quot;&gt;12 years&lt;/a&gt;.&lt;/p&gt;
  31. &lt;p&gt;Of course, every environment is different so careful consideration is key when deciding to migrate.  &lt;/p&gt;
  32. &lt;h2 class=&quot;wp-block-heading&quot;&gt;Engineering considerations&lt;/h2&gt;
  33. &lt;p&gt;When moving between a RHEL-based distribution and Ubuntu, it’s essential to consider the release cadence and licensing model, package management, service configuration, security postures and other system-level differences. Public clouds add another layer of complexity, with integrations, tooling, and cloud-specific features playing a critical role in the migration process.&lt;/p&gt;
  34. &lt;p&gt;A full exploration of the technical nuances between the two distributions can be found in our recent &lt;a href=&quot;https://ubuntu.com/engage/migrating-from-rhel-centos-to-ubuntu-public-cloud&quot;&gt;strategy guide for administrators&lt;/a&gt;.&lt;/p&gt;
  35. &lt;p&gt;For most organisations, the migration follows a structured approach encompassing several key stages:&lt;/p&gt;
  36. &lt;ol&gt;
  37. &lt;li&gt;&lt;strong&gt;Inventory and assessment&lt;/strong&gt;: Documenting existing services, applications, and packages, along with their dependencies and configurations, to understand the scope of the migration.&lt;/li&gt;
  38. &lt;li&gt;&lt;strong&gt;Selection of Ubuntu version&lt;/strong&gt;: Deciding on the appropriate Ubuntu version, often balancing the need for up-to-date packages with the stability and extended support offered by LTS releases.&lt;/li&gt;
  39. &lt;li&gt;&lt;strong&gt;Backup and data migration&lt;/strong&gt;: Ensuring all critical data and configurations are backed up and ready for migration, minimising the risk of data loss.&lt;/li&gt;
  40. &lt;li&gt;&lt;strong&gt;Software availability&lt;/strong&gt;: Conducting an audit of software availability to find Ubuntu equivalents for existing RHEL packages, and identifying alternatives or solutions for software not directly available.&lt;/li&gt;
  41. &lt;li&gt;&lt;strong&gt;Configuration file transition&lt;/strong&gt;: Adapting system and service configuration files to Ubuntu’s structure and conventions, which may involve changes to file paths and syntax.&lt;/li&gt;
  42. &lt;li&gt;&lt;strong&gt;Integration with cloud services&lt;/strong&gt;: Confirming that all cloud-related integrations, agents, and SDKs are compatible with Ubuntu, leveraging optimised cloud images where available.&lt;/li&gt;
  43. &lt;li&gt;&lt;strong&gt;Testing&lt;/strong&gt;: Rigorously testing the new environment to ensure all applications and services function correctly, ideally in a staging environment that mirrors production.&lt;/li&gt;
  44. &lt;li&gt;&lt;strong&gt;Documentation and training&lt;/strong&gt;: Updating internal documentation and providing training to ensure that operational teams are prepared for the new environment.&lt;/li&gt;
  45. &lt;li&gt;&lt;strong&gt;Monitoring and optimisation&lt;/strong&gt;: Continuously monitoring the new setup to identify and implement further optimizations and adjustments as needed.&lt;/li&gt;
  46. &lt;/ol&gt;
  47. &lt;p&gt;Each of these steps is designed to mitigate risks and ensure a smooth transition to Ubuntu, leveraging its robust community support and comprehensive documentation to address challenges as they arise.&lt;/p&gt;
  48. &lt;h2 class=&quot;wp-block-heading&quot;&gt;Support considerations&lt;/h2&gt;
  49. &lt;p&gt;In addition to the wealth of community resources available when it comes to administering an Ubuntu estate, you can also rely on Canonical’s support teams as part of an Ubuntu Pro subscription. &lt;/p&gt;
  50. &lt;p&gt;Ubuntu Pro is designed to extend the standard security and maintenance updates provided with Ubuntu’s Long Term Support (LTS) releases, covering not just the main repository but also the universe repository, which includes thousands of additional open-source tools and applications. This extended coverage is crucial for enterprises that rely on a wide range of open source software for their operations.&lt;/p&gt;
  51. &lt;p&gt;Ubuntu Pro also includes features designed to ensure security and compliance throughout your estate with minimal downtime. This includes live kernel patching, which allows for critical kernel updates to be applied without rebooting the system, as well as fleet-wide administration with Landscape. CIS and FIPS 140-2 certified components are also available for organisations that need to meet strict regulatory requirements and security standards.&lt;/p&gt;
  52. &lt;p&gt;Ubuntu Pro uses a simple, per-node pricing model with the option for additional weekday or 24/7 phone and ticket support. This transparency translates to cost savings for organisations – &lt;a href=&quot;https://ubuntu.com/blog/making-a-move-how-migrating-to-ubuntu-saved-a-life-insurance-company-60-in-costs&quot;&gt;one life insurance company&lt;/a&gt; was able to realise a cost benefit of over 60% as a result of their migration.&lt;/p&gt;
  53. &lt;h2 class=&quot;wp-block-heading&quot;&gt;All the resources you need to make the switch&lt;/h2&gt;
  54. &lt;p&gt;If you’re planning on making the move to Ubuntu, whether migrating existing workloads on a public or private cloud, or if you plan to leverage it as the foundational OS for your next company initiative, &lt;a href=&quot;https://ubuntu.com/server/contact-us?product=server-overview&quot;&gt;get in touch&lt;/a&gt;. &lt;/p&gt;
  55. &lt;p&gt;Don’t forget to check out our full &lt;a href=&quot;https://ubuntu.com/engage/migrating-from-rhel-centos-to-ubuntu-public-cloud&quot;&gt;migration guide&lt;/a&gt; for a deeper dive into the technical differences between Ubuntu and RHEL-based distributions.&lt;/p&gt;
  56. &lt;p&gt;See what our users and customers are saying in the latest case studies from &lt;a href=&quot;https://ubuntu.com/engage/pentera-centos-migration-to-ubuntu&quot;&gt;Pentera&lt;/a&gt;, &lt;a href=&quot;https://ubuntu.com/blog/making-a-move-how-migrating-to-ubuntu-saved-a-life-insurance-company-60-in-costs&quot;&gt;Tech Mahindra&lt;/a&gt; and &lt;a href=&quot;https://ubuntu.com/engage/new-mexico-state-university-physical-science-laboratory-drives-agile-and-compliant-federal-research-with-ubuntu&quot;&gt;New Mexico State University&lt;/a&gt;.&lt;/p&gt;</description>
  57. <pubDate>Fri, 17 May 2024 10:52:50 +0000</pubDate>
  58. </item>
  59. <item>
  60. <title>Faizul &quot;Piju&quot; 9M2PJU: Exploring the Adoption of Ubuntu in the Industrial Sector: A Comprehensive Analysis</title>
  61. <guid isPermaLink="false">https://hamradio.my/?p=2834</guid>
  62. <link>https://hamradio.my/exploring-the-adoption-of-ubuntu-in-the-industrial-sector-a-comprehensive-analysis/</link>
  63. <description>&lt;h2 class=&quot;wp-block-heading&quot;&gt;&lt;/h2&gt;
  64.  
  65.  
  66.  
  67. &lt;p&gt;In the rapidly evolving landscape of industrial operations, the adoption of technology plays a pivotal role in driving efficiency, productivity, and innovation. As industrial organizations seek to modernize their infrastructure, Ubuntu Linux emerges as a promising contender for powering the next generation of industrial systems and processes. In this comprehensive analysis, we delve deep into the potential of adopting Ubuntu in the industrial sector, exploring its promises, reliability, challenges, and the path forward for integration.&lt;/p&gt;
  68.  
  69.  
  70.  
  71. &lt;h3 class=&quot;wp-block-heading&quot;&gt;Ubuntu’s Promise in the Industrial Sector&lt;/h3&gt;
  72.  
  73.  
  74.  
  75. &lt;p&gt;Ubuntu, a leading Linux distribution renowned for its stability, security, and versatility, holds several promises for the industrial sector:&lt;/p&gt;
  76.  
  77.  
  78.  
  79. &lt;ol&gt;
  80. &lt;li&gt;&lt;strong&gt;Cost-Efficiency:&lt;/strong&gt; Ubuntu’s open-source nature offers industrial organizations a cost-effective alternative to proprietary operating systems, enabling them to allocate resources more efficiently and invest in other strategic initiatives.&lt;/li&gt;
  81.  
  82.  
  83.  
  84. &lt;li&gt;&lt;strong&gt;Flexibility and Customization:&lt;/strong&gt; With its modular architecture and extensive ecosystem of software and tools, Ubuntu provides industrial organizations with the flexibility to tailor solutions to their specific requirements, integrate seamlessly with existing infrastructure, and adapt to evolving needs.&lt;/li&gt;
  85.  
  86.  
  87.  
  88. &lt;li&gt;&lt;strong&gt;Security and Reliability:&lt;/strong&gt; Ubuntu’s robust security features, regular updates, and long-term support (LTS) releases instill confidence in industrial environments where data integrity, uptime, and system reliability are paramount, helping organizations mitigate security risks and ensure uninterrupted operations.&lt;/li&gt;
  89.  
  90.  
  91.  
  92. &lt;li&gt;&lt;strong&gt;Compatibility with Industry Standards:&lt;/strong&gt; Ubuntu’s support for industry protocols, standards, and interfaces ensures interoperability and compliance with regulatory requirements, facilitating smooth integration with industrial systems and processes.&lt;/li&gt;
  93. &lt;/ol&gt;
  94.  
  95.  
  96.  
  97. &lt;h3 class=&quot;wp-block-heading&quot;&gt;Adopting Ubuntu in the Industrial Sector: Strategies and Considerations&lt;/h3&gt;
  98.  
  99.  
  100.  
  101. &lt;p&gt;As industrial organizations consider adopting Ubuntu, several strategies and considerations can guide their journey:&lt;/p&gt;
  102.  
  103.  
  104.  
  105. &lt;ol&gt;
  106. &lt;li&gt;&lt;strong&gt;Pilot Projects and Proof of Concepts:&lt;/strong&gt; Initiating pilot projects and proof of concepts allows industrial organizations to evaluate Ubuntu’s suitability for specific use cases, validate its performance, and demonstrate tangible benefits to stakeholders before full-scale deployment.&lt;/li&gt;
  107.  
  108.  
  109.  
  110. &lt;li&gt;&lt;strong&gt;Collaboration with Technology Partners:&lt;/strong&gt; Collaborating with technology providers, integrators, and open-source communities with expertise in Ubuntu can streamline the adoption process, mitigate implementation challenges, and leverage best practices and resources for successful integration.&lt;/li&gt;
  111.  
  112.  
  113.  
  114. &lt;li&gt;&lt;strong&gt;Training and Upskilling:&lt;/strong&gt; Investing in training and upskilling programs for personnel enables industrial organizations to build internal expertise, familiarize themselves with Ubuntu’s ecosystem and tools, and empower employees to effectively deploy, manage, and optimize Ubuntu-based solutions.&lt;/li&gt;
  115.  
  116.  
  117.  
  118. &lt;li&gt;&lt;strong&gt;Customization and Integration:&lt;/strong&gt; Tailoring Ubuntu-based solutions to meet the unique requirements and workflows of industrial operations enhances usability, efficiency, and user acceptance, driving adoption and maximizing the value derived from Ubuntu’s capabilities.&lt;/li&gt;
  119. &lt;/ol&gt;
  120.  
  121.  
  122.  
  123. &lt;h3 class=&quot;wp-block-heading&quot;&gt;Challenges and Considerations&lt;/h3&gt;
  124.  
  125.  
  126.  
  127. &lt;p&gt;While Ubuntu offers numerous promises and benefits for the industrial sector, several challenges and considerations must be addressed:&lt;/p&gt;
  128.  
  129.  
  130.  
  131. &lt;ol&gt;
  132. &lt;li&gt;&lt;strong&gt;Legacy Systems and Vendor Lock-In:&lt;/strong&gt; Industrial environments often have legacy systems and dependencies on proprietary software, posing challenges for migration, integration, and compatibility with Ubuntu.&lt;/li&gt;
  133.  
  134.  
  135.  
  136. &lt;li&gt;&lt;strong&gt;Hardware Compatibility:&lt;/strong&gt; Ensuring compatibility with industrial hardware, devices, and peripherals, such as Programmable Logic Controllers (PLCs), sensors, and actuators, is essential for seamless operation and interoperability with Ubuntu-based systems.&lt;/li&gt;
  137.  
  138.  
  139.  
  140. &lt;li&gt;&lt;strong&gt;Regulatory Compliance:&lt;/strong&gt; Adhering to industry regulations, standards, and certifications, such as ISO 9001, ISA-95, and IEC 62443, requires careful validation, documentation, and compliance when adopting Ubuntu, ensuring the integrity, reliability, and safety of industrial systems and processes.&lt;/li&gt;
  141.  
  142.  
  143.  
  144. &lt;li&gt;&lt;strong&gt;Support and Maintenance:&lt;/strong&gt; Industrial organizations must evaluate the availability of support and maintenance services for Ubuntu-based systems, including access to security updates, patches, and technical assistance, to mitigate risks, address issues promptly, and maintain optimal performance and uptime.&lt;/li&gt;
  145. &lt;/ol&gt;
  146.  
  147.  
  148.  
  149. &lt;h3 class=&quot;wp-block-heading&quot;&gt;Ubuntu’s Broken Promises?&lt;/h3&gt;
  150.  
  151.  
  152.  
  153. &lt;p&gt;While Ubuntu holds great promise for the industrial sector, there are potential pitfalls and challenges that industrial organizations must be aware of:&lt;/p&gt;
  154.  
  155.  
  156.  
  157. &lt;ol&gt;
  158. &lt;li&gt;&lt;strong&gt;Complexity of Integration:&lt;/strong&gt; Integrating Ubuntu into existing industrial environments may be complex and time-consuming, particularly in environments with legacy systems, proprietary protocols, and heterogeneous infrastructure, requiring thorough planning, testing, and coordination among stakeholders.&lt;/li&gt;
  159.  
  160.  
  161.  
  162. &lt;li&gt;&lt;strong&gt;Lack of Industry-Specific Solutions:&lt;/strong&gt; The availability of industry-specific solutions, applications, and drivers tailored for Ubuntu in the industrial sector may be limited compared to proprietary alternatives, necessitating custom development, adaptation, or interoperability solutions to address specific requirements and use cases effectively.&lt;/li&gt;
  163.  
  164.  
  165.  
  166. &lt;li&gt;&lt;strong&gt;Risk of Disruption:&lt;/strong&gt; Any disruption or downtime resulting from the adoption of Ubuntu in industrial operations can have significant consequences, including production delays, financial losses, and reputational damage, underscoring the importance of risk management, contingency planning, and phased deployment strategies to minimize impact and ensure business continuity.&lt;/li&gt;
  167. &lt;/ol&gt;
  168.  
  169.  
  170.  
  171. &lt;h3 class=&quot;wp-block-heading&quot;&gt;The Industrial Outlook: Embracing Innovation with Ubuntu&lt;/h3&gt;
  172.  
  173.  
  174.  
  175. &lt;p&gt;As the industrial sector embraces digitalization, automation, and connectivity, Ubuntu emerges as a promising catalyst for driving innovation, efficiency, and competitiveness. By leveraging Ubuntu’s promises, addressing challenges, and adopting best practices, industrial organizations can unlock new opportunities, optimize operations, and unlock value across the entire industrial value chain.&lt;/p&gt;
  176.  
  177.  
  178.  
  179. &lt;p&gt;While Ubuntu may not be a panacea for all industrial challenges, its versatility, reliability, and open-source ethos position it as a strategic enabler for industrial transformation and growth. With careful planning, collaboration, and investment, industrial organizations can harness the full potential of Ubuntu to navigate the complexities of the digital age and thrive in an increasingly interconnected and dynamic industrial landscape.&lt;/p&gt;
  180. &lt;p&gt;The post &lt;a href=&quot;https://hamradio.my/exploring-the-adoption-of-ubuntu-in-the-industrial-sector-a-comprehensive-analysis/&quot;&gt;Exploring the Adoption of Ubuntu in the Industrial Sector: A Comprehensive Analysis&lt;/a&gt; appeared first on &lt;a href=&quot;https://hamradio.my&quot;&gt;9M2PJU - Malaysian Ham Radio Operator&lt;/a&gt; by &lt;a href=&quot;https://hamradio.my/author/9m2pju/&quot;&gt;9M2PJU&lt;/a&gt;.&lt;/p&gt;</description>
  181. <pubDate>Thu, 16 May 2024 18:23:48 +0000</pubDate>
  182. </item>
  183. <item>
  184. <title>Faizul &quot;Piju&quot; 9M2PJU: A Comprehensive Guide to Setting Up an Email Server with Custom Domain on Ubuntu</title>
  185. <guid isPermaLink="false">https://hamradio.my/?p=2831</guid>
  186. <link>https://hamradio.my/a-comprehensive-guide-to-setting-up-an-email-server-with-custom-domain-on-ubuntu/</link>
  187. <description>&lt;h1 class=&quot;wp-block-heading&quot;&gt;&lt;/h1&gt;
  188.  
  189.  
  190.  
  191. &lt;p&gt;In today’s interconnected world, having control over your email communications is essential for privacy, security, and branding purposes. Setting up your own email server with a custom domain on Ubuntu provides you with full control over your email infrastructure and enhances your professional image. In this comprehensive guide, we’ll walk you through the process of setting up an email server on Ubuntu, complete with a custom domain name.&lt;/p&gt;
  192.  
  193.  
  194.  
  195. &lt;h2 class=&quot;wp-block-heading&quot;&gt;Prerequisites&lt;/h2&gt;
  196.  
  197.  
  198.  
  199. &lt;p&gt;Before we dive into the setup process, make sure you have the following prerequisites:&lt;/p&gt;
  200.  
  201.  
  202.  
  203. &lt;ol&gt;
  204. &lt;li&gt;&lt;strong&gt;Ubuntu Server:&lt;/strong&gt; Install Ubuntu Server on a dedicated machine or a virtual private server (VPS).&lt;/li&gt;
  205.  
  206.  
  207.  
  208. &lt;li&gt;&lt;strong&gt;Static IP Address:&lt;/strong&gt; Obtain a static IP address from your Internet Service Provider (ISP) to ensure reliable email delivery.&lt;/li&gt;
  209.  
  210.  
  211.  
  212. &lt;li&gt;&lt;strong&gt;Domain Name:&lt;/strong&gt; Register a domain name for your email server, such as yourdomain.com, through a domain registrar like Namecheap or GoDaddy.&lt;/li&gt;
  213. &lt;/ol&gt;
  214.  
  215.  
  216.  
  217. &lt;h2 class=&quot;wp-block-heading&quot;&gt;Step 1: Install Required Software&lt;/h2&gt;
  218.  
  219.  
  220.  
  221. &lt;p&gt;Begin by installing the necessary software packages on your Ubuntu server:&lt;/p&gt;
  222.  
  223.  
  224.  
  225. &lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;sudo apt update
  226. sudo apt install postfix dovecot postfixadmin roundcube&lt;/code&gt;&lt;/pre&gt;
  227.  
  228.  
  229.  
  230. &lt;ul&gt;
  231. &lt;li&gt;&lt;strong&gt;Postfix:&lt;/strong&gt; A popular Mail Transfer Agent (MTA) used for sending and receiving emails.&lt;/li&gt;
  232.  
  233.  
  234.  
  235. &lt;li&gt;&lt;strong&gt;Dovecot:&lt;/strong&gt; An IMAP and POP3 server for handling incoming email retrieval.&lt;/li&gt;
  236.  
  237.  
  238.  
  239. &lt;li&gt;&lt;strong&gt;PostfixAdmin:&lt;/strong&gt; A web-based interface for managing mailboxes and domains.&lt;/li&gt;
  240.  
  241.  
  242.  
  243. &lt;li&gt;&lt;strong&gt;Roundcube:&lt;/strong&gt; A webmail client for accessing email via a web browser.&lt;/li&gt;
  244. &lt;/ul&gt;
  245.  
  246.  
  247.  
  248. &lt;h2 class=&quot;wp-block-heading&quot;&gt;Step 2: Configure Postfix&lt;/h2&gt;
  249.  
  250.  
  251.  
  252. &lt;p&gt;During the installation process, you’ll be prompted to configure Postfix. Select “Internet Site” and enter your domain name when prompted.&lt;/p&gt;
  253.  
  254.  
  255.  
  256. &lt;p&gt;Next, edit the main Postfix configuration file:&lt;/p&gt;
  257.  
  258.  
  259.  
  260. &lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;sudo nano /etc/postfix/main.cf&lt;/code&gt;&lt;/pre&gt;
  261.  
  262.  
  263.  
  264. &lt;p&gt;Update the following parameters:&lt;/p&gt;
  265.  
  266.  
  267.  
  268. &lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;myhostname = mail.yourdomain.com
  269. mydomain = yourdomain.com
  270. myorigin = $mydomain
  271. inet_interfaces = all
  272. inet_protocols = all&lt;/code&gt;&lt;/pre&gt;
  273.  
  274.  
  275.  
  276. &lt;p&gt;Restart Postfix to apply the changes:&lt;/p&gt;
  277.  
  278.  
  279.  
  280. &lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;sudo systemctl restart postfix&lt;/code&gt;&lt;/pre&gt;
  281.  
  282.  
  283.  
  284. &lt;h2 class=&quot;wp-block-heading&quot;&gt;Step 3: Configure Dovecot&lt;/h2&gt;
  285.  
  286.  
  287.  
  288. &lt;p&gt;Edit the Dovecot configuration file:&lt;/p&gt;
  289.  
  290.  
  291.  
  292. &lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;sudo nano /etc/dovecot/dovecot.conf&lt;/code&gt;&lt;/pre&gt;
  293.  
  294.  
  295.  
  296. &lt;p&gt;Make sure the following lines are uncommented or added:&lt;/p&gt;
  297.  
  298.  
  299.  
  300. &lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;protocols = imap pop3
  301. listen = *&lt;/code&gt;&lt;/pre&gt;
  302.  
  303.  
  304.  
  305. &lt;p&gt;Restart Dovecot:&lt;/p&gt;
  306.  
  307.  
  308.  
  309. &lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;sudo systemctl restart dovecot&lt;/code&gt;&lt;/pre&gt;
  310.  
  311.  
  312.  
  313. &lt;h2 class=&quot;wp-block-heading&quot;&gt;Step 4: Configure MySQL Database for PostfixAdmin&lt;/h2&gt;
  314.  
  315.  
  316.  
  317. &lt;p&gt;Create a MySQL database and user for PostfixAdmin:&lt;/p&gt;
  318.  
  319.  
  320.  
  321. &lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;sudo mysql&lt;/code&gt;&lt;/pre&gt;
  322.  
  323.  
  324.  
  325. &lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;CREATE DATABASE postfixadmin;
  326. GRANT ALL PRIVILEGES ON postfixadmin.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'your_password';
  327. FLUSH PRIVILEGES;
  328. EXIT;&lt;/code&gt;&lt;/pre&gt;
  329.  
  330.  
  331.  
  332. &lt;p&gt;Import the initial database schema:&lt;/p&gt;
  333.  
  334.  
  335.  
  336. &lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;sudo mysql -u postfixadmin -p postfixadmin &amp;lt; /usr/share/postfixadmin/create_tables.mysql&lt;/code&gt;&lt;/pre&gt;
  337.  
  338.  
  339.  
  340. &lt;h2 class=&quot;wp-block-heading&quot;&gt;Step 5: Configure PostfixAdmin&lt;/h2&gt;
  341.  
  342.  
  343.  
  344. &lt;p&gt;Edit the PostfixAdmin configuration file:&lt;/p&gt;
  345.  
  346.  
  347.  
  348. &lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;sudo nano /etc/postfixadmin/config.local.php&lt;/code&gt;&lt;/pre&gt;
  349.  
  350.  
  351.  
  352. &lt;p&gt;Update the database settings:&lt;/p&gt;
  353.  
  354.  
  355.  
  356. &lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;$CONF['configured'] = true;
  357. $CONF['database_type'] = 'mysqli';
  358. $CONF['database_host'] = 'localhost';
  359. $CONF['database_user'] = 'postfixadmin';
  360. $CONF['database_password'] = 'your_password';
  361. $CONF['database_name'] = 'postfixadmin';&lt;/code&gt;&lt;/pre&gt;
  362.  
  363.  
  364.  
  365. &lt;p&gt;Restart Apache to apply the changes:&lt;/p&gt;
  366.  
  367.  
  368.  
  369. &lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;sudo systemctl restart apache2&lt;/code&gt;&lt;/pre&gt;
  370.  
  371.  
  372.  
  373. &lt;h2 class=&quot;wp-block-heading&quot;&gt;Step 6: Set Up Virtual Domains and Mailboxes&lt;/h2&gt;
  374.  
  375.  
  376.  
  377. &lt;p&gt;Access PostfixAdmin in your web browser by navigating to http://your_server_ip/postfixadmin. Log in using the default username (postfixadmin) and the password you specified earlier.&lt;/p&gt;
  378.  
  379.  
  380.  
  381. &lt;ul&gt;
  382. &lt;li&gt;Create virtual domains and mailboxes using the PostfixAdmin web interface.&lt;/li&gt;
  383. &lt;/ul&gt;
  384.  
  385.  
  386.  
  387. &lt;h2 class=&quot;wp-block-heading&quot;&gt;Step 7: Configure Roundcube Webmail&lt;/h2&gt;
  388.  
  389.  
  390.  
  391. &lt;p&gt;Edit the Roundcube configuration file:&lt;/p&gt;
  392.  
  393.  
  394.  
  395. &lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;sudo nano /etc/roundcube/config.inc.php&lt;/code&gt;&lt;/pre&gt;
  396.  
  397.  
  398.  
  399. &lt;p&gt;Update the following parameters:&lt;/p&gt;
  400.  
  401.  
  402.  
  403. &lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;$config['default_host'] = 'ssl://mail.yourdomain.com';
  404. $config['default_port'] = 993;
  405. $config['smtp_server'] = 'tls://mail.yourdomain.com';
  406. $config['smtp_port'] = 587;
  407. $config['smtp_user'] = '%u';
  408. $config['smtp_pass'] = '%p';&lt;/code&gt;&lt;/pre&gt;
  409.  
  410.  
  411.  
  412. &lt;p&gt;Restart Apache to apply the changes:&lt;/p&gt;
  413.  
  414.  
  415.  
  416. &lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;sudo systemctl restart apache2&lt;/code&gt;&lt;/pre&gt;
  417.  
  418.  
  419.  
  420. &lt;h2 class=&quot;wp-block-heading&quot;&gt;Step 8: Configure DNS Records&lt;/h2&gt;
  421.  
  422.  
  423.  
  424. &lt;p&gt;Create the following DNS records for your domain:&lt;/p&gt;
  425.  
  426.  
  427.  
  428. &lt;ul&gt;
  429. &lt;li&gt;&lt;strong&gt;MX Record:&lt;/strong&gt; Point to your server’s static IP address.&lt;/li&gt;
  430.  
  431.  
  432.  
  433. &lt;li&gt;&lt;strong&gt;A Record:&lt;/strong&gt; Point mail.yourdomain.com to your server’s static IP address.&lt;/li&gt;
  434.  
  435.  
  436.  
  437. &lt;li&gt;&lt;strong&gt;TXT Record:&lt;/strong&gt; Add SPF and DKIM records for email authentication.&lt;/li&gt;
  438. &lt;/ul&gt;
  439.  
  440.  
  441.  
  442. &lt;h2 class=&quot;wp-block-heading&quot;&gt;Step 9: Test Email Delivery&lt;/h2&gt;
  443.  
  444.  
  445.  
  446. &lt;p&gt;Send a test email to verify that your email server is set up correctly.&lt;/p&gt;
  447.  
  448.  
  449.  
  450. &lt;p&gt;Congratulations! You’ve successfully set up your own email server with a custom domain on Ubuntu. Now you can enjoy full control over your email communications and ensure privacy and security for yourself and your users. Happy emailing!&lt;/p&gt;
  451. &lt;p&gt;The post &lt;a href=&quot;https://hamradio.my/a-comprehensive-guide-to-setting-up-an-email-server-with-custom-domain-on-ubuntu/&quot;&gt;A Comprehensive Guide to Setting Up an Email Server with Custom Domain on Ubuntu&lt;/a&gt; appeared first on &lt;a href=&quot;https://hamradio.my&quot;&gt;9M2PJU - Malaysian Ham Radio Operator&lt;/a&gt; by &lt;a href=&quot;https://hamradio.my/author/9m2pju/&quot;&gt;9M2PJU&lt;/a&gt;.&lt;/p&gt;</description>
  452. <pubDate>Thu, 16 May 2024 18:11:58 +0000</pubDate>
  453. </item>
  454. <item>
  455. <title>Podcast Ubuntu Portugal: E299 Budo Dos Dados Abertos, Com Frederico Muñoz</title>
  456. <guid isPermaLink="false">https://media.blubrry.com/ubuntupt/archive.org/download/pup-e299/e299.mp3</guid>
  457. <link>https://podcastubuntuportugal.org/e299/</link>
  458. <description>&lt;p&gt;Esta semana fomos conhecer um utilizador de Gnu/Linux de nível ancião-guru, que construiu a sua carreira graças ao Software Livre. Além de ser um CNCF Ambassador, cria Software Livre interessante no seu tempo livre - cujo exemplo mais conhecido é um sistema de análise do posicionamento relativo dos partidos, nas votações da Assembleia da República.&lt;/p&gt;
  459. &lt;p&gt;Já sabem: oiçam, subscrevam e partilhem!&lt;/p&gt;
  460. &lt;ul&gt;
  461. &lt;li&gt;
  462. &lt;p&gt;Mastodon: @fsm@mastodon.sdf.org&lt;/p&gt;
  463. &lt;/li&gt;
  464. &lt;li&gt;
  465. &lt;p&gt;GitHub: &lt;a href=&quot;https://github.com/fsmunoz&quot;&gt;https://github.com/fsmunoz&lt;/a&gt;&lt;/p&gt;
  466. &lt;/li&gt;
  467. &lt;li&gt;
  468. &lt;p&gt;Twitter: @fredericomunoz&lt;/p&gt;
  469. &lt;/li&gt;
  470. &lt;li&gt;
  471. &lt;p&gt;LinkedIn: &lt;a href=&quot;https://www.linkedin.com/in/fsmunoz/&quot;&gt;https://www.linkedin.com/in/fsmunoz/&lt;/a&gt;&lt;/p&gt;
  472. &lt;/li&gt;
  473. &lt;li&gt;
  474. &lt;p&gt;WWW: &lt;a href=&quot;https://interlaye.red/&quot;&gt;https://interlaye.red/&lt;/a&gt;&lt;/p&gt;
  475. &lt;/li&gt;
  476. &lt;li&gt;
  477. &lt;p&gt;IRC: fsmunoz @ libera.chat #emacs&lt;/p&gt;
  478. &lt;/li&gt;
  479. &lt;li&gt;
  480. &lt;p&gt;Análise da atividade parlamentar: &lt;a href=&quot;https://pt.hemicycle.party/&quot;&gt;https://pt.hemicycle.party/&lt;/a&gt;&lt;/p&gt;
  481. &lt;/li&gt;
  482. &lt;li&gt;
  483. &lt;p&gt;Martial Arts Lineage Tree: &lt;a href=&quot;https://budotree.judoc.org/tree.html&quot;&gt;https://budotree.judoc.org/tree.html&lt;/a&gt;&lt;/p&gt;
  484. &lt;/li&gt;
  485. &lt;li&gt;
  486. &lt;p&gt;&lt;a href=&quot;https://loco.ubuntu.com/teams/ubuntu-pt/&quot;&gt;https://loco.ubuntu.com/teams/ubuntu-pt/&lt;/a&gt;&lt;/p&gt;
  487. &lt;/li&gt;
  488. &lt;li&gt;
  489. &lt;p&gt;&lt;a href=&quot;https://shop.nitrokey.com/shop?aff_ref=3&quot;&gt;https://shop.nitrokey.com/shop?aff_ref=3&lt;/a&gt;&lt;/p&gt;
  490. &lt;/li&gt;
  491. &lt;li&gt;
  492. &lt;p&gt;&lt;a href=&quot;https://masto.pt/@pup&quot;&gt;https://masto.pt/@pup&lt;/a&gt;&lt;/p&gt;
  493. &lt;/li&gt;
  494. &lt;li&gt;
  495. &lt;p&gt;&lt;a href=&quot;https://youtube.com/PodcastUbuntuPortugal&quot;&gt;https://youtube.com/PodcastUbuntuPortugal&lt;/a&gt;&lt;/p&gt;
  496. &lt;/li&gt;
  497. &lt;/ul&gt;
  498. &lt;h3 id=&quot;apoios&quot;&gt;Apoios&lt;/h3&gt;
  499. &lt;p&gt;Podem apoiar o podcast usando os links de afiliados do Humble Bundle, porque ao usarem esses links para fazer uma compra, uma parte do valor que pagam reverte a favor do Podcast Ubuntu Portugal.
  500. E podem obter tudo isso com 15 dólares ou diferentes partes dependendo de pagarem 1, ou 8.
  501. Achamos que isto vale bem mais do que 15 dólares, pelo que se puderem paguem mais um pouco mais visto que têm a opção de pagar o quanto quiserem.
  502. Se estiverem interessados em outros bundles não listados nas notas usem o link &lt;a href=&quot;https://www.humblebundle.com/?partner=PUP&quot;&gt;https://www.humblebundle.com/?partner=PUP&lt;/a&gt; e vão estar também a apoiar-nos.&lt;/p&gt;
  503. &lt;h3 id=&quot;atribuição-e-licenças&quot;&gt;Atribuição e licenças&lt;/h3&gt;
  504. &lt;p&gt;Este episódio foi produzido por Diogo Constantino, Miguel e Tiago Carrondo e editado pelo &lt;a href=&quot;https://senhorpodcast.pt/&quot;&gt;Senhor Podcast&lt;/a&gt;.
  505. O website é produzido por Tiago Carrondo e o &lt;a href=&quot;https://gitlab.com/podcastubuntuportugal/website&quot;&gt;código aberto&lt;/a&gt; está licenciado nos termos da &lt;a href=&quot;https://gitlab.com/podcastubuntuportugal/website/main/LICENSE&quot;&gt;Licença MIT&lt;/a&gt;.
  506. A música do genérico é: “Won’t see it comin’ (Feat Aequality &amp;amp; N’sorte d’autruche)”, por Alpha Hydrae e está licenciada nos termos da &lt;a href=&quot;https://creativecommons.org/publicdomain/zero/1.0/&quot;&gt;CC0 1.0 Universal License&lt;/a&gt;.
  507. Este episódio e a imagem utilizada estão licenciados nos termos da licença: &lt;a href=&quot;https://creativecommons.org/licenses/by-nc-nd/4.0/&quot;&gt;Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0)&lt;/a&gt;, &lt;a href=&quot;https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode&quot;&gt;cujo texto integral pode ser lido aqui&lt;/a&gt;. Estamos abertos a licenciar para permitir outros tipos de utilização, &lt;a href=&quot;https://podcastubuntuportugal.org/contactos&quot;&gt;contactem-nos&lt;/a&gt; para validação e autorização.&lt;/p&gt;</description>
  508. <pubDate>Thu, 16 May 2024 00:00:00 +0000</pubDate>
  509.        <enclosure url="https://media.blubrry.com/ubuntupt/archive.org/download/pup-e299/e299.mp3" length="32789105" type="audio/mpeg"/>
  510. </item>
  511. <item>
  512. <title>Ubuntu Blog: Canonical at Dell Technologies World 2024</title>
  513. <guid isPermaLink="true">https://ubuntu.com//blog/canonical-at-dell-technologies-world-2024</guid>
  514. <link>https://ubuntu.com//blog/canonical-at-dell-technologies-world-2024</link>
  515. <description>&lt;p&gt;Canonical, the company behind Ubuntu and the trusted source for open source software, is thrilled to announce its sponsorship of Dell Technologies World again this year. Join us in Las Vegas from May 20th to the 23rd to explore how Canonical and Dell can elevate your business with state-of-the-art technologies for Cloud, AI and the Edge, while ensuring security every step of the way.&lt;/p&gt;
  516. &lt;p style=&quot;text-align: left;&quot;&gt; &lt;a class=&quot;p-button--small p-button--positive&quot; href=&quot;https://www.dell.com/en-us/dt/events/delltechnologiesworld/2024/registration.htm&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Register to Dell Technologies World 2024&lt;/a&gt;&lt;/p&gt;
  517. &lt;h2 class=&quot;wp-block-heading&quot;&gt;What to anticipate from Canonical at DTW&lt;/h2&gt;
  518. &lt;p&gt;&lt;strong&gt;Celebrating 20 Years and Introducing the Latest Ubuntu LTS&lt;/strong&gt;&lt;/p&gt;
  519. &lt;p&gt;In celebration of our 20th anniversary, we’re excited to showcase several of our cutting-edge solutions at DTW. Alongside the launch of the newest Long-Term Support (LTS) version of Ubuntu, &lt;a href=&quot;https://ubuntu.com/blog/canonical-releases-ubuntu-24-04-noble-numbat&quot;&gt;Noble Numbat&lt;/a&gt;, dive into other solutions we’ll be highlighting in collaboration with Dell and one of our newest strategic partners, Morpheus:&lt;/p&gt;
  520. &lt;p&gt;&lt;strong&gt;PowerFlex + MicroCloud&lt;/strong&gt;: Discover how the tight integration between &lt;a href=&quot;https://canonical.com/microcloud&quot;&gt;MicroCloud&lt;/a&gt; and &lt;a href=&quot;https://www.dell.com/en-us/dt/storage/powerflex.htm#tab0=0&quot;&gt;Dell PowerFlex&lt;/a&gt; can streamline and provide a solid foundation for your cloud journey.&lt;/p&gt;
  521. &lt;p&gt;&lt;strong&gt;Ubuntu-based NativeEdge&lt;/strong&gt;: Uncover why Dell selected &lt;a href=&quot;https://ubuntu.com/&quot;&gt;Ubuntu&lt;/a&gt; as the foundational OS for the &lt;a href=&quot;https://www.dell.com/en-us/dt/solutions/edge-computing/edge-platform.htm&quot;&gt;NativeEdge&lt;/a&gt; platform and learn how together Canonical and Dell simplify edge computing.&lt;/p&gt;
  522. &lt;p&gt;&lt;strong&gt;Enterprise Open Source AI&lt;/strong&gt;: Unlock the full potential of your Dell hardware and build enterprise-grade AI projects with our comprehensive, flexible and composable open source platform.&lt;/p&gt;
  523. &lt;p&gt;&lt;strong&gt;VMware Alternatives – available today&lt;/strong&gt;: Reduce TCO with compelling new solutions from Dell and Canonical that provide seamless migration from any size VMware-based cloud to open source clouds with Morpheus integrated for multicloud management.&lt;/p&gt;
  524. &lt;h3 class=&quot;wp-block-heading&quot;&gt;Speaking Sessions at the Canonical Booth&lt;/h3&gt;
  525. &lt;p&gt;Visit our booth and attend sessions led by industry experts covering a range of Open Source solutions. Plus, all attendees will receive a complimentary Ubuntu backpack!&lt;/p&gt;
  526. &lt;div class=&quot;p-card&quot; style=&quot;background-color: #FFFFFF;&quot;&gt;
  527. &lt;h4&gt;From Infrastructure to Apps – Securing Your Open Source Environment&lt;/h4&gt;
  528. &lt;p&gt;Come hear Canonical’s approach to securing and supporting open source, from infrastructure to modern applications, and discover why we are the trusted source for open source.&lt;/p&gt;
  529. &lt;/div&gt;
  530. &lt;div class=&quot;p-card&quot; style=&quot;background-color: #FFFFFF;&quot;&gt;
  531. &lt;h4&gt;PowerFlex and MicroCloud: Cloud infrastructure at its best&lt;/h4&gt;
  532. &lt;p&gt;MicroCloud is a lightweight open source cloud aimed at simplifying your cloud deployment and operations. Combined with Dell PowerFlex efficiency and performance, you have a winning combination for your journey to cloudification. Join this session to learn more.&lt;/p&gt;
  533. &lt;/div&gt;
  534. &lt;div class=&quot;p-card&quot; style=&quot;background-color: #FFFFFF;&quot;&gt;
  535. &lt;h4&gt;AI GPU infrastructure optimisation&lt;/h4&gt;
  536. &lt;p&gt;Gain insights from real-world projects and learn how to optimize the usage of 10k A100 GPUs across 20 on-prem Kubernetes clusters. Explore HW-level strategies such as NVidia MIG, swap the default K8s scheduler to Volcano, and PaddlePaddle for smarter job distribution.&lt;/p&gt;
  537. &lt;/div&gt;
  538. &lt;div class=&quot;p-card&quot; style=&quot;background-color: #FFFFFF;&quot;&gt;
  539. &lt;h4&gt;Open source data and AI&lt;/h4&gt;
  540. &lt;p&gt;Explore how open-source tools streamline the data and ML lifecycle, enabling end-to-end solutions for DataOps and MLOps. Learn about seamless integration with platforms like OpenSearch, Kubeflow, and MLFlow, empowering organizations to tackle complex challenges.&lt;/p&gt;
  541. &lt;/div&gt;
  542. &lt;div class=&quot;p-card&quot; style=&quot;background-color: #FFFFFF;&quot;&gt;
  543. &lt;h4&gt;Enable Hybrid Cloud Platform Operations with Morpheus and Canonical&lt;/h4&gt;
  544. &lt;p&gt;With the current virtualization challenges, enterprises are looking for alternatives. Discover how to swiftly enable 100% agnostic Hybrid Cloud PlatformOps with Morpheus, migrating to a cost-effective, fully featured Open Source private cloud with Canonical OpenStack.&lt;/p&gt;
  545. &lt;p&gt;&lt;a href=&quot;https://morpheusdata.com/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;
  546. &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;lazyload&quot; data-noscript=&quot;&quot;&gt;&lt;a href=&quot;https://morpheusdata.com/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;
  547. &amp;lt;noscript&amp;gt;
  548. &amp;lt;img alt=&quot;&quot; height=&quot;32&quot; src=&quot;https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_150,h_32/https://ubuntu.com/wp-content/uploads/0b85/Morpheus-horizontal-v2.webp&quot; width=&quot;150&quot; /&amp;gt;
  549. &amp;lt;/noscript&amp;gt;
  550. &lt;/a&gt;&lt;/div&gt;&lt;a href=&quot;https://morpheusdata.com/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;
  551. &lt;/a&gt;&lt;p&gt;&lt;/p&gt;
  552. &lt;/div&gt;
  553. &lt;div class=&quot;wp-block-spacer&quot; style=&quot;height: 50px;&quot;&gt;&lt;/div&gt;
  554. &lt;h2 class=&quot;wp-block-heading&quot;&gt;Canonical | Ubuntu and Dell&lt;/h2&gt;
  555. &lt;p&gt;Canonical and Dell Technologies have collaborated to create a series of feature-rich reference architectures applicable across industries, delivering superior customer experiences and value. Additionally, we offer professional services including consulting, deployment, and managed services to ensure a seamless transition to production.&lt;/p&gt;
  556. &lt;p&gt;Customers can access Canonical support subscriptions, services, and solutions for cloud, Kubernetes, AI/ML, storage, and edge directly from Dell, providing a single source for all Dell customers.&lt;/p&gt;
  557. &lt;p&gt;&lt;a href=&quot;https://ubuntu.com/dell&quot;&gt;Learn more about our offerings and how Canonical and Dell can propel your business forward.&lt;/a&gt;&lt;/p&gt;
  558. &lt;h2 class=&quot;wp-block-heading&quot;&gt;Getting to the Event&lt;/h2&gt;
  559. &lt;p&gt;Join the Canonical team at DTW to discuss how to take advantage of solutions that capitalize on the benefits of Open Source software with security and compliance.&lt;/p&gt;
  560. &lt;div class=&quot;p-card&quot; style=&quot;background-color: #FFFFFF;&quot;&gt;
  561. &lt;p&gt;&lt;b&gt;Location&lt;/b&gt;&lt;br /&gt;
  562. The Venetian Convention Center&lt;br /&gt;
  563. 201 Sands Ave, Las Vegas, NV 89169, United States
  564. &lt;/p&gt;
  565. &lt;p&gt;&lt;b&gt;Dates&lt;/b&gt;&lt;br /&gt;
  566. May 20 – 23&lt;/p&gt;
  567. &lt;p&gt;&lt;b&gt;Hours&lt;/b&gt;&lt;br /&gt;
  568. Monday, 6 PM – 9 PM PT&lt;br /&gt;
  569. Tuesday-Wednesday, 10 AM – 5 PM PT
  570. &lt;/p&gt;
  571. &lt;/div&gt;
  572. &lt;p&gt;You can meet with the Canonical team on-site in Las Vegas and pick our technical experts’ brains about your particular open source scenario.&lt;/p&gt;
  573. &lt;p style=&quot;text-align: left;&quot;&gt; &lt;a class=&quot;p-button--small p-button--positive&quot; href=&quot;https://www.dell.com/en-us/dt/events/delltechnologiesworld/2024/registration.htm&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Register to Dell Technologies World 2024&lt;/a&gt;&lt;/p&gt;
  574. &lt;p&gt;&lt;em&gt;Want to learn more? &lt;/em&gt;&lt;br /&gt;&lt;em&gt;Please stop by booth 208, to speak to our experts and check out our demos.&lt;/em&gt;&lt;/p&gt;
  575. &lt;p&gt;&lt;em&gt;Are you interested in setting up a meeting with our team?&lt;/em&gt;&lt;br /&gt;&lt;em&gt;Reach out to our Alliances team at partners@canonical.com&lt;/em&gt;&lt;/p&gt;</description>
  576. <pubDate>Wed, 15 May 2024 16:32:41 +0000</pubDate>
  577. </item>
  578. <item>
  579. <title>Julian Andres Klode: The new APT 3.0 solver</title>
  580. <guid isPermaLink="true">https://blog.jak-linux.org/2024/05/14/solver3/</guid>
  581. <link>https://blog.jak-linux.org/2024/05/14/solver3/</link>
  582. <description>&lt;p&gt;APT 2.9.3 introduces the first iteration of the new solver codenamed
  583. solver3, and now available with the –solver 3.0 option. The new solver
  584. works fundamentally different from the old one.&lt;/p&gt;
  585. &lt;h2 id=&quot;how-does-it-work&quot;&gt;How does it work?&lt;/h2&gt;
  586. &lt;p&gt;Solver3 is a fully backtracking dependency solving algorithm that defers
  587. choices to as late as possible. It starts with an empty set of packages,
  588. then adds the manually installed packages, and then installs packages
  589. automatically as necessary to satisfy the dependencies.&lt;/p&gt;
  590. &lt;p&gt;Deferring the choices is implemented multiple ways:&lt;/p&gt;
  591. &lt;p&gt;First, all install requests
  592. recursively mark dependencies with a single solution for install, and any
  593. packages that are being rejected due to conflicts or user requests will
  594. cause their reverse dependencies to be transitively marked as rejected,
  595. provided their or group cannot be solved by a different package.&lt;/p&gt;
  596. &lt;p&gt;Second, any dependency with more than one choice is pushed to a priority
  597. queue that is ordered by the number of possible solutions, such that we
  598. resolve a|b before a|b|c.&lt;/p&gt;
  599. &lt;p&gt;Not &lt;em&gt;just&lt;/em&gt; by the number of solutions, though. One important point to
  600. note is that optional dependencies, that is, Recommends, are always
  601. sorting after mandatory dependencies. Do note on that: Recommended
  602. packages do not “nest” in backtracking - dependencies of a Recommended
  603. package themselves are not optional, so they will have to be resolved
  604. before the next Recommended package is seen in the queue.&lt;/p&gt;
  605. &lt;p&gt;Another important step in deferring choices is extracting the common
  606. dependencies of a package across its version and then installing them
  607. before we even decide which of its versions we want to install - one
  608. of the dependencies might cycle back to a specific version after all.&lt;/p&gt;
  609. &lt;p&gt;Decisions about package levels are recorded at a certain decision level,
  610. if we reach a conflict we backtrack to the previous decision level,
  611. mark the decision we made (install X) in the inverse (DO NOT INSTALL X),
  612. reset all the state all decisions made at the higher level, and restore
  613. any dependencies that are no longer resolved to the work queue.&lt;/p&gt;
  614. &lt;h2 id=&quot;comparison-to-sat-solver-design&quot;&gt;Comparison to SAT solver design.&lt;/h2&gt;
  615. &lt;p&gt;If you have studied SAT solver design, you’ll find that essentially
  616. this is a DPLL solver without pure literal elimination. A pure literal
  617. eliminitation phase would not work for a package manager: First negative
  618. pure literals (packages that everything conflicts with) do not exist,
  619. and positive pure literals (packages nothing conflicts with) we do not want
  620. to mark for install - we want to install as little as possible (well subject,
  621. to policy).&lt;/p&gt;
  622. &lt;p&gt;As part of the solving phase, we also construct an implication graph, albeit
  623. a partial one: The first package installing another package is marked as the
  624. reason (A -&amp;gt; B), the same thing for conflicts (not A -&amp;gt; not B).&lt;/p&gt;
  625. &lt;p&gt;Once we have added the ability to have multiple parents in the implication
  626. graph, it stands to reason that we can also implement the much more advanced
  627. method of conflict-driven clause learning; where we do not jump back to the
  628. previous decision level but exactly to the decision level that caused the
  629. conflict. This would massively speed up backtracking.&lt;/p&gt;
  630. &lt;h2 id=&quot;what-changes-can-you-expect-in-behavior&quot;&gt;What changes can you expect in behavior?&lt;/h2&gt;
  631. &lt;p&gt;The most striking difference to the classic APT solver is that solver3 always keeps
  632. manually installed packages around, it never offers to remove them. We will relax that
  633. in a future iteration so that it can &lt;em&gt;replace&lt;/em&gt; packages with new ones, that is, if your
  634. package is no longer available in the repository (obsolete), but there is one that
  635. Conflicts+Replaces+Provides it, solver3 will be allowed to install that and remove the
  636. other.&lt;/p&gt;
  637. &lt;p&gt;Implementing that policy is rather trivial: We just need to queue &lt;code&gt;obsolete | replacement&lt;/code&gt;
  638. as a dependency to solve, rather than mark the obsolete package for install.&lt;/p&gt;
  639. &lt;p&gt;Another critical difference is the change in the autoremove behavior: The new solver
  640. currently only knows the strongest dependency chain to each package, and hence it will
  641. not keep around any packages that are only reachable via weaker chains.
  642. A common example is when &lt;code&gt;gcc-&amp;lt;version&amp;gt;&lt;/code&gt; packages accumulate on your system over the
  643. years. They all have &lt;code&gt;Provides: c-compiler&lt;/code&gt; and the &lt;code&gt;libtool&lt;/code&gt; &lt;code&gt;Depends: gcc | c-compiler&lt;/code&gt;
  644. is enough to keep them around.&lt;/p&gt;
  645. &lt;h1 id=&quot;new-features&quot;&gt;New features&lt;/h1&gt;
  646. &lt;p&gt;The new option &lt;code&gt;--no-strict-pinning&lt;/code&gt; instructs the solver to consider all versions of
  647. a package and not just the candidate version. For example, you could use &lt;code&gt;apt install foo=2.0 --no-strict-pinning&lt;/code&gt;
  648. to install version 2.0 of foo and upgrade - or downgrade - packages as needed to satisfy &lt;code&gt;foo=2.0&lt;/code&gt; dependencies.
  649. This mostly comes in handy in use cases involving Debian experimental or the Ubuntu proposed pockets, where you
  650. want to install a package from there, but try to satisfy from the normal release as much as possible.&lt;/p&gt;
  651. &lt;p&gt;The implication graph building allows us to implement an &lt;code&gt;apt why&lt;/code&gt; command, that while not as nicely
  652. detailed as aptitude, at least tells you the exact reason why a package is installed. It will only show
  653. the strongest dependency chain at first of course, since that is what we record.&lt;/p&gt;
  654. &lt;h2 id=&quot;what-is-left-to-do&quot;&gt;What is left to do?&lt;/h2&gt;
  655. &lt;p&gt;At the moment, error information is not stored across backtracking in any way, but we generally
  656. will want to show you the first conflict we reach as it is the most natural one; or all conflicts.
  657. Currently you get the last conflict which may not be particularly useful.&lt;/p&gt;
  658. &lt;p&gt;Likewise, errors currently are just rendered as implication graphs of the form &lt;code&gt;[not] A -&amp;gt; [not] B -&amp;gt; ...&lt;/code&gt;,
  659. and we need to put in some work to present those nicely.&lt;/p&gt;
  660. &lt;p&gt;The test suite is not passing yet, I haven’t really started working on it. A challenge is that most
  661. packages in the test suite are manually installed as they are mocked, and the solver now doesn’t remove
  662. those.&lt;/p&gt;
  663. &lt;p&gt;We plan to implement the replacement logic such that foo can be replaced by &lt;code&gt;foo2 Conflicts/Replaces/Provides foo&lt;/code&gt;
  664. without needing to be automatically installed.&lt;/p&gt;
  665. &lt;p&gt;Improving the backtracking to be non-chronological conflict-driven clause learning would vastly
  666. enhance our backtracking performance. Not that it seems to be an issue right now in my limited
  667. testing (mostly noble 64-bit-time_t upgrades). A lot of that complexity you have normally is not
  668. there because the manually installed packages and resulting unit propagation (single-solution
  669. Depends/Reverse-Depends for Conflicts) already ground us fairly far in what changes we can actually make.&lt;/p&gt;
  670. &lt;p&gt;Once all the stuff has landed, we need to start rolling it out and gather feedback. On Ubuntu I’d like
  671. automated feedback on regressions (running solver3 in parallel, checking if result is worse and then
  672. submitting an error to the error tracker), on Debian this could just be a role email address to send
  673. solver dumps to.&lt;/p&gt;
  674. &lt;p&gt;At the same time, we can also incrementally start rolling this out. Like phased updates in Ubuntu,
  675. we can also roll out the new solver as the default to 10%, 20%, 50% of users before going to the
  676. full 100%. This will allow us to capture regressions early and fix them.&lt;/p&gt;</description>
  677. <pubDate>Tue, 14 May 2024 11:26:05 +0000</pubDate>
  678. </item>
  679. <item>
  680. <title>The Fridge: Ubuntu Weekly Newsletter Issue 839</title>
  681. <guid isPermaLink="false">https://fridge.ubuntu.com/?p=10169</guid>
  682. <link>https://fridge.ubuntu.com/2024/05/13/ubuntu-weekly-newsletter-issue-839/</link>
  683. <description>&lt;p&gt;&lt;img src=&quot;https://fridge.ubuntu.com/wp-content/uploads/2020/02/c9d7/header.png&quot; /&gt;&lt;/p&gt;
  684. &lt;p&gt;Welcome to the Ubuntu Weekly Newsletter, &lt;strong&gt;Issue 839 for the week of May 5 – 11, 2024&lt;/strong&gt;. The full version of this issue is available &lt;a href=&quot;https://discourse.ubuntu.com/t/ubuntu-weekly-newsletter-issue-839/44864&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
  685. &lt;p&gt;In this issue we cover:&lt;/p&gt;
  686. &lt;ul&gt;
  687. &lt;li&gt;Oracular Oriole is now open for development&lt;/li&gt;
  688. &lt;li&gt;Ubuntu Stats&lt;/li&gt;
  689. &lt;li&gt;Hot in Support&lt;/li&gt;
  690. &lt;li&gt;UbuCon Korea 2024 – Registration is now open!&lt;/li&gt;
  691. &lt;li&gt;LoCo Events&lt;/li&gt;
  692. &lt;li&gt;Patch Pilot Hand-off 24.10&lt;/li&gt;
  693. &lt;li&gt;Canonical News&lt;/li&gt;
  694. &lt;li&gt;In the Press&lt;/li&gt;
  695. &lt;li&gt;In the Blogosphere&lt;/li&gt;
  696. &lt;li&gt;Other Articles of Interest&lt;/li&gt;
  697. &lt;li&gt;Featured Audio and Video&lt;/li&gt;
  698. &lt;li&gt;Meeting Reports&lt;/li&gt;
  699. &lt;li&gt;Upcoming Meetings and Events&lt;/li&gt;
  700. &lt;li&gt;Updates and Security for Ubuntu 20.04, 22.04, 23.10, and 24.04&lt;/li&gt;
  701. &lt;li&gt;And much more!&lt;/li&gt;
  702. &lt;/ul&gt;
  703. &lt;p&gt;&lt;strong&gt;The Ubuntu Weekly Newsletter is brought to you by:&lt;/strong&gt;&lt;/p&gt;
  704. &lt;ul&gt;
  705. &lt;li&gt;Krytarik Raido&lt;/li&gt;
  706. &lt;li&gt;Bashing-om&lt;/li&gt;
  707. &lt;li&gt;Chris Guiver&lt;/li&gt;
  708. &lt;li&gt;Wild Man&lt;/li&gt;
  709. &lt;li&gt;Paul White&lt;/li&gt;
  710. &lt;li&gt;And many others&lt;/li&gt;
  711. &lt;/ul&gt;
  712. &lt;p&gt;If you have a story idea for the Weekly Newsletter, join the &lt;a href=&quot;https://lists.ubuntu.com/mailman/listinfo/Ubuntu-news-team&quot;&gt;Ubuntu News Team mailing list&lt;/a&gt; and submit it. Ideas can also be added to the &lt;a href=&quot;https://wiki.ubuntu.com/UbuntuWeeklyNewsletter/Ideas&quot;&gt;wiki&lt;/a&gt;!&lt;/p&gt;
  713. &lt;p&gt;&lt;img class=&quot;alignleft&quot; src=&quot;https://fridge.ubuntu.com/wp-content/uploads/2015/05/ab28/CCL.png&quot; style=&quot;margin: 0 10px 0 0;&quot; /&gt; &lt;a href=&quot;https://fridge.ubuntu.com/2024/05/13/ubuntu-weekly-newsletter-issue-839/&quot;&gt;&lt;/a&gt;.&lt;/p&gt;</description>
  714. <pubDate>Mon, 13 May 2024 22:27:28 +0000</pubDate>
  715. </item>
  716. <item>
  717. <title>Kubuntu General News: Introducing the Enhanced KubuQA: Revolutionising ISO Testing Across Ubuntu Flavors</title>
  718. <guid isPermaLink="false">https://kubuntu.org/?p=5216</guid>
  719. <link>https://kubuntu.org/news/introducing-the-enhanced-kubuqa-revolutionising-iso-testing-across-ubuntu-flavors/</link>
  720. <description>&lt;p&gt;The Kubuntu Team are thrilled to announce significant updates to KubuQA, our streamlined ISO testing tool that has now expanded its capabilities beyond Kubuntu to support Ubuntu and all its other flavors. With these enhancements, KubuQA becomes a versatile resource that ensures a smoother, more intuitive testing process for upcoming releases, including the 24.04 Noble Numbat and the 24.10 Oracular Oriole.&lt;/p&gt;
  721.  
  722.  
  723.  
  724. &lt;h4&gt;&lt;a href=&quot;https://discourse.ubuntu.com/t/introducing-the-enhanced-kubuqa-revolutionizing-iso-testing-across-ubuntu-flavors/45004#what-is-kubuqa-1&quot;&gt;&lt;/a&gt;What is KubuQA?&lt;/h4&gt;
  725.  
  726.  
  727.  
  728. &lt;p&gt;KubuQA is a specialized tool developed by the Kubuntu Team to simplify the process of ISO testing. Utilizing the power of Kdialog for user-friendly graphical interfaces and VirtualBox for creating and managing virtual environments, KubuQA allows testers to efficiently evaluate ISO images. Its design focuses on accessibility, making it easy for testers of all skill levels to participate in the development process by providing clear, guided steps for testing ISOs.&lt;/p&gt;
  729.  
  730.  
  731.  
  732. &lt;h4&gt;&lt;a href=&quot;https://discourse.ubuntu.com/t/introducing-the-enhanced-kubuqa-revolutionizing-iso-testing-across-ubuntu-flavors/45004#new-features-and-extensions-2&quot;&gt;&lt;/a&gt;New Features and Extensions&lt;/h4&gt;
  733.  
  734.  
  735.  
  736. &lt;p&gt;The latest update to KubuQA marks a significant expansion in its utility:&lt;/p&gt;
  737.  
  738.  
  739.  
  740. &lt;ul&gt;&lt;li&gt;&lt;strong&gt;Broader Coverage&lt;/strong&gt;: Initially tailored for Kubuntu, KubuQA now supports testing ISO images for Ubuntu and all other Ubuntu flavors. This broadened coverage ensures that any Ubuntu-based community can benefit from the robust testing framework that KubuQA offers.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Support for Latest Releases&lt;/strong&gt;: KubuQA has been updated to include support for the newest Ubuntu release cycles, including the 24.04 Noble Numbat and the upcoming 24.10 Oracular Oriole. This ensures that communities can start testing early and often, leading to more stable and polished releases.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Enhanced User Experience&lt;/strong&gt;: With improvements to the Kdialog interactions, testers will find the interface more intuitive and responsive, which enhances the overall testing experience.&lt;/li&gt;&lt;/ul&gt;
  741.  
  742.  
  743.  
  744. &lt;h4&gt;&lt;a href=&quot;https://discourse.ubuntu.com/t/introducing-the-enhanced-kubuqa-revolutionizing-iso-testing-across-ubuntu-flavors/45004#call-to-action-for-ubuntu-flavor-leads-3&quot;&gt;&lt;/a&gt;Call to Action for Ubuntu Flavor Leads&lt;/h4&gt;
  745.  
  746.  
  747.  
  748. &lt;p&gt;The Kubuntu Team is keen to collaborate closely with leaders and testers from all Ubuntu flavors to adopt and adapt KubuQA for their testing needs. We believe that by sharing this tool, we can foster a stronger, more cohesive testing community across the Ubuntu ecosystem.&lt;/p&gt;
  749.  
  750.  
  751.  
  752. &lt;p&gt;We encourage flavor leads to try out KubuQA, integrate it into their testing processes, and share feedback with us. This collaboration will not only improve the tool but also ensure that all Ubuntu flavors can achieve higher quality and stability in their releases.&lt;/p&gt;
  753.  
  754.  
  755.  
  756. &lt;h4&gt;&lt;a href=&quot;https://discourse.ubuntu.com/t/introducing-the-enhanced-kubuqa-revolutionizing-iso-testing-across-ubuntu-flavors/45004#getting-involved-4&quot;&gt;&lt;/a&gt;Getting Involved&lt;/h4&gt;
  757.  
  758.  
  759.  
  760. &lt;p&gt;For those interested in getting involved with ISO testing using KubuQA:&lt;/p&gt;
  761.  
  762.  
  763.  
  764. &lt;ul&gt;&lt;li&gt;&lt;strong&gt;Download the Tool&lt;/strong&gt;: You can find KubuQA on the &lt;a href=&quot;https://github.com/kubuntu-team/KubuQA&quot;&gt;Kubuntu Team Github&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Join the Community&lt;/strong&gt;: Engage with the Kubuntu community for support and to connect with other testers. Your contributions and feedback are invaluable to the continuous improvement of KubuQA.&lt;/li&gt;&lt;/ul&gt;
  765.  
  766.  
  767.  
  768. &lt;h4&gt;&lt;a href=&quot;https://discourse.ubuntu.com/t/introducing-the-enhanced-kubuqa-revolutionizing-iso-testing-across-ubuntu-flavors/45004#conclusion-5&quot;&gt;&lt;/a&gt;Conclusion&lt;/h4&gt;
  769.  
  770.  
  771.  
  772. &lt;p&gt;The enhancements to KubuQA signify our commitment to improving the quality and reliability of Ubuntu and its derivatives. By extending its coverage and simplifying the testing process, we aim to empower more contributors to participate in the development cycle. Whether you’re a seasoned tester or new to the community, your efforts are crucial to the success of Ubuntu.&lt;/p&gt;
  773.  
  774.  
  775.  
  776. &lt;p&gt;We look forward to seeing how different communities will utilise KubuQA to enhance their testing practices. And by the way, have you thought about becoming a member of the &lt;a href=&quot;https://discourse.ubuntu.com/c/flavors/kubuntu/187&quot;&gt;Kubuntu Community&lt;/a&gt;? Join us today to make a difference in the world of open-source software!&lt;/p&gt;</description>
  777. <pubDate>Sun, 12 May 2024 21:28:33 +0000</pubDate>
  778. </item>
  779. <item>
  780. <title>Salih Emin: SysGlance: Download and Use SysGlance on Ubuntu, Debian, and Other Linux Systems</title>
  781. <guid isPermaLink="false">http://utappiablog.wordpress.com/?p=49710</guid>
  782. <link>https://utappiablog.wordpress.com/2024/05/12/sysglance-download-and-use-sysglance-on-ubuntu-debian-and-other-linux-systems/</link>
  783. <description>I am happy to announce the availability of SysGlance, a simple and universal, Linux utility for generating a report for the host system. Imagine encountering a problem with a Linux system service or device. Typically, you would search for a solution by Googling the issue, hoping to find a fix. In most cases, you would […]</description>
  784. <pubDate>Sun, 12 May 2024 20:39:46 +0000</pubDate>
  785. </item>
  786. <item>
  787. <title>St&amp;eacute;phane Graber: Announcing Incus 6.1</title>
  788. <guid isPermaLink="false">https://stgraber.org/?p=1590</guid>
  789. <link>https://stgraber.org/2024/05/09/announcing-incus-6-1/</link>
  790. <description>&lt;p&gt;This is the first Incus feature release following our LTS!&lt;/p&gt;
  791.  
  792.  
  793.  
  794. &lt;p&gt;As a reminder, feature releases are only supported until the next one comes out, usually on a monthly cadence. Critical production environments should stay on the LTS release instead.&lt;/p&gt;
  795.  
  796.  
  797.  
  798. &lt;p&gt;In this release, we have a lot of small quality of life improvements throughout.&lt;br /&gt;A lot of those being first contributions from students of the &lt;a href=&quot;https://www.utexas.edu/&quot;&gt;University of Texas at Austin&lt;/a&gt;. Expect a lot more of those in Incus 6.2!&lt;/p&gt;
  799.  
  800.  
  801.  
  802. &lt;figure class=&quot;wp-block-image size-full&quot;&gt;&lt;a href=&quot;https://linuxcontainers.org/incus/try-it/&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-1591&quot; height=&quot;462&quot; src=&quot;https://stgraber.org/wp-content/uploads/2024/05/Screenshot-from-2024-05-07-17-17-51.png&quot; width=&quot;694&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
  803.  
  804.  
  805.  
  806. &lt;p&gt;The full announcement and changelog can be &lt;a href=&quot;https://discuss.linuxcontainers.org/t/incus-6-1-has-been-released/19894&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;found here&lt;/a&gt;.&lt;br /&gt;And for those who prefer videos, here’s the release overview video:&lt;/p&gt;
  807.  
  808.  
  809.  
  810. &lt;figure class=&quot;wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio&quot;&gt;&lt;div class=&quot;wp-block-embed__wrapper&quot;&gt;
  811.  
  812. &lt;/div&gt;&lt;/figure&gt;
  813.  
  814.  
  815.  
  816. &lt;p&gt;You can take the latest release of Incus up for a spin through our online demo service at: &lt;a href=&quot;https://linuxcontainers.org/incus/try-it/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;https://linuxcontainers.org/incus/try-it/&lt;/a&gt;&lt;/p&gt;
  817.  
  818.  
  819.  
  820. &lt;p&gt;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: &lt;a href=&quot;https://zabbly.com/incus&quot;&gt;https://zabbly.com/incus&lt;/a&gt;&lt;/p&gt;
  821.  
  822.  
  823.  
  824. &lt;p&gt;Donations towards my work on this and other open source projects is also always appreciated, you can  find me on &lt;a href=&quot;https://github.com/sponsors/stgraber&quot;&gt;Github Sponsors&lt;/a&gt;, &lt;a href=&quot;https://patreon.com/stgraber&quot;&gt;Patreon&lt;/a&gt; and &lt;a href=&quot;https://ko-fi.com/stgraber&quot;&gt;Ko-fi&lt;/a&gt;.&lt;/p&gt;
  825.  
  826.  
  827.  
  828. &lt;p&gt;Enjoy!&lt;/p&gt;</description>
  829. <pubDate>Thu, 09 May 2024 14:43:58 +0000</pubDate>
  830. </item>
  831. <item>
  832. <title>Podcast Ubuntu Portugal: E298 Quem LVM Não Teme</title>
  833. <guid isPermaLink="false">https://media.blubrry.com/ubuntupt/archive.org/download/pup-e298/e298.mp3</guid>
  834. <link>https://podcastubuntuportugal.org/e298/</link>
  835. <description>&lt;p&gt;O que têm em comum um esquentador, uma Kalashnikov e um automóvel? Neste episódio falámos sobre isso e ainda sobre distribuições GNU-Linux que não usam systemd; a recente apresentação do NextCloud Hub 8 - e as suas muitas novidades; como usar clientes de correio para Proton Mail; como enganar pessoas mal intencionadas com o Firefox Relay; como fazer inchar o vosso armazenamento com LVM subiquity e como lidar com pacientes psiquiátricos que usam demasiadas abas em Firefox.&lt;/p&gt;
  836. &lt;p&gt;Já sabem: oiçam, subscrevam e partilhem!&lt;/p&gt;
  837. &lt;ul&gt;
  838. &lt;li&gt;
  839. &lt;p&gt;&lt;a href=&quot;https://www.pcmag.com/news/firefox-power-user-keeps-7400-plus-browser-tabs-open-for-2-years&quot;&gt;https://www.pcmag.com/news/firefox-power-user-keeps-7400-plus-browser-tabs-open-for-2-years&lt;/a&gt;&lt;/p&gt;
  840. &lt;/li&gt;
  841. &lt;li&gt;
  842. &lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=fl2BQu2dWZY&quot;&gt;https://www.youtube.com/watch?v=fl2BQu2dWZY&lt;/a&gt;&lt;/p&gt;
  843. &lt;/li&gt;
  844. &lt;li&gt;
  845. &lt;p&gt;&lt;a href=&quot;https://loco.ubuntu.com/teams/ubuntu-pt/&quot;&gt;https://loco.ubuntu.com/teams/ubuntu-pt/&lt;/a&gt;&lt;/p&gt;
  846. &lt;/li&gt;
  847. &lt;li&gt;
  848. &lt;p&gt;&lt;a href=&quot;https://shop.nitrokey.com/shop?aff_ref=3&quot;&gt;https://shop.nitrokey.com/shop?aff_ref=3&lt;/a&gt;&lt;/p&gt;
  849. &lt;/li&gt;
  850. &lt;li&gt;
  851. &lt;p&gt;&lt;a href=&quot;https://masto.pt/@pup&quot;&gt;https://masto.pt/@pup&lt;/a&gt;&lt;/p&gt;
  852. &lt;/li&gt;
  853. &lt;li&gt;
  854. &lt;p&gt;&lt;a href=&quot;https://youtube.com/PodcastUbuntuPortugal&quot;&gt;https://youtube.com/PodcastUbuntuPortugal&lt;/a&gt;&lt;/p&gt;
  855. &lt;/li&gt;
  856. &lt;/ul&gt;
  857. &lt;h3 id=&quot;apoios&quot;&gt;Apoios&lt;/h3&gt;
  858. &lt;p&gt;Podem apoiar o podcast usando os links de afiliados do Humble Bundle, porque ao usarem esses links para fazer uma compra, uma parte do valor que pagam reverte a favor do Podcast Ubuntu Portugal.
  859. E podem obter tudo isso com 15 dólares ou diferentes partes dependendo de pagarem 1, ou 8.
  860. Achamos que isto vale bem mais do que 15 dólares, pelo que se puderem paguem mais um pouco mais visto que têm a opção de pagar o quanto quiserem.
  861. Se estiverem interessados em outros bundles não listados nas notas usem o link &lt;a href=&quot;https://www.humblebundle.com/?partner=PUP&quot;&gt;https://www.humblebundle.com/?partner=PUP&lt;/a&gt; e vão estar também a apoiar-nos.&lt;/p&gt;
  862. &lt;h3 id=&quot;atribuição-e-licenças&quot;&gt;Atribuição e licenças&lt;/h3&gt;
  863. &lt;p&gt;Este episódio foi produzido por Diogo Constantino, Miguel e Tiago Carrondo e editado pelo &lt;a href=&quot;https://senhorpodcast.pt/&quot;&gt;Senhor Podcast&lt;/a&gt;.
  864. O website é produzido por Tiago Carrondo e o &lt;a href=&quot;https://gitlab.com/podcastubuntuportugal/website&quot;&gt;código aberto&lt;/a&gt; está licenciado nos termos da &lt;a href=&quot;https://gitlab.com/podcastubuntuportugal/website/main/LICENSE&quot;&gt;Licença MIT&lt;/a&gt;.
  865. A música do genérico é: “Won’t see it comin’ (Feat Aequality &amp;amp; N’sorte d’autruche)”, por Alpha Hydrae e está licenciada nos termos da &lt;a href=&quot;https://creativecommons.org/publicdomain/zero/1.0/&quot;&gt;CC0 1.0 Universal License&lt;/a&gt;.
  866. Este episódio e a imagem utilizada estão licenciados nos termos da licença: &lt;a href=&quot;https://creativecommons.org/licenses/by-nc-nd/4.0/&quot;&gt;Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0)&lt;/a&gt;, &lt;a href=&quot;https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode&quot;&gt;cujo texto integral pode ser lido aqui&lt;/a&gt;. Estamos abertos a licenciar para permitir outros tipos de utilização, &lt;a href=&quot;https://podcastubuntuportugal.org/contactos&quot;&gt;contactem-nos&lt;/a&gt; para validação e autorização.&lt;/p&gt;</description>
  867. <pubDate>Thu, 09 May 2024 00:00:00 +0000</pubDate>
  868.        <enclosure url="https://media.blubrry.com/ubuntupt/archive.org/download/pup-e298/e298.mp3" length="28615992" type="audio/mpeg"/>
  869. </item>
  870. <item>
  871. <title>Stuart Langridge: OED second edition CD-ROM under Wine</title>
  872. <guid isPermaLink="false">tag:www.kryogenix.org,2024-05-08:/days/2024/05/08/oed-second-edition-cd-rom-under-wine/</guid>
  873. <link>https://www.kryogenix.org/days/2024/05/08/oed-second-edition-cd-rom-under-wine/</link>
  874. <description>&lt;p&gt;I recently discovered that there's an old software edition of the Oxford English Dictionary (the second edition) &lt;a href=&quot;https://archive.org/details/oxford-english-dictionary-second-edition&quot;&gt;on archive.org&lt;/a&gt; for download. Not sure how legal this is, mind, but I thought it would be useful to get it running on my Ubuntu machine. So here's how I did that.&lt;/p&gt;
  875. &lt;p&gt;Firstly, download the file; that will give you a file called &lt;code&gt;Oxford English Dictionary (Second Edition).iso&lt;/code&gt;, which is a CD image. We want to unpack that, and usefully there is 7zip in the Ubuntu archives which knows how to unpack ISO files.&lt;sup id=&quot;sf-oed-second-edition-cd-rom-under-wine-1-back&quot;&gt;&lt;a class=&quot;simple-footnote&quot; href=&quot;http://feeds.feedburner.com/kryogenix#sf-oed-second-edition-cd-rom-under-wine-1&quot; title=&quot;and using 7zip is much easier than mounting the ISO file as a loopback thing&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; So, unpack the ISO with &lt;code&gt;7z x &quot;Oxford English Dictionary (Second Edition).iso&quot;&lt;/code&gt;. That will give you two more files: &lt;code&gt;OED2.DAT&lt;/code&gt; and &lt;code&gt;SETUP.EXE&lt;/code&gt;. The .DAT file is, I think, all the dictionary entries in some sort of binary format (and is 600MB, so be sure you have the space for it). You can then run &lt;code&gt;wine SETUP.EXE&lt;/code&gt;, which will install the software using wine, and that's all good.&lt;sup id=&quot;sf-oed-second-edition-cd-rom-under-wine-2-back&quot;&gt;&lt;a class=&quot;simple-footnote&quot; href=&quot;http://feeds.feedburner.com/kryogenix#sf-oed-second-edition-cd-rom-under-wine-2&quot; title=&quot;There's a Microsoft Word macro that it offers to install; I didn't want that, and I have no idea whether it works&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; Choose a folder to install it in (I chose the same folder that &lt;code&gt;SETUP.EXE&lt;/code&gt; is in, at which point it will create an &lt;code&gt;OED&lt;/code&gt; subfolder in there and unpack a bunch of files into it, including &lt;code&gt;OED.EXE&lt;/code&gt;).&lt;/p&gt;
  876. &lt;p&gt;That's the easy part. However, it won't quite work yet. You can see this by running &lt;code&gt;wine OED/OED.EXE&lt;/code&gt;. It should start up OK, and then complain that there's no CDROM.&lt;/p&gt;
  877. &lt;p&gt;&lt;img alt=&quot;a Windows dialog box reading 'CD-ROM not found'&quot; src=&quot;https://kryogenix.org/images/oed/01-no-cdrom.png&quot; /&gt;&lt;/p&gt;
  878. &lt;p&gt;This is because it expects there to be a CDROM drive with the &lt;code&gt;OED2.DAT&lt;/code&gt; file on it. We can set one up, though; we tell Wine to pretend that there's a CD drive connected, and what's on it. Run &lt;code&gt;winecfg&lt;/code&gt;, and in the &lt;code&gt;Drives&lt;/code&gt; tab, press &lt;code&gt;Add…&lt;/code&gt; to add a new drive. I chose &lt;code&gt;D:&lt;/code&gt; (which is a common Windows drive letter for a CD drive), and OK. Select your newly added &lt;code&gt;D:&lt;/code&gt; drive and set the &lt;code&gt;Path&lt;/code&gt; to be the folder where &lt;code&gt;OED2.DAT&lt;/code&gt; is (which is wherever you unpacked the ISO file). Then say &lt;code&gt;Show Advanced&lt;/code&gt; and change the drive &lt;code&gt;Type&lt;/code&gt; to &lt;code&gt;CD-ROM&lt;/code&gt; to tell Wine that you want this new drive to appear to be a CD. Say &lt;code&gt;OK&lt;/code&gt;.&lt;/p&gt;
  879. &lt;p&gt;&lt;img alt=&quot;a Windows dialog box reading 'CD-ROM not found'&quot; src=&quot;https://kryogenix.org/images/oed/02-winecfg.png&quot; /&gt;&lt;/p&gt;
  880. &lt;p&gt;Now, when you &lt;code&gt;wine OED/OED.EXE&lt;/code&gt; again, it should start up fine! Hooray, we're done! Except…&lt;/p&gt;
  881. &lt;p&gt;&lt;img alt=&quot;the OED Windows app, except that all the text is little squares rather than actual text, which looks like a font rendering error&quot; src=&quot;https://kryogenix.org/images/oed/03-bad-fonts.png&quot; /&gt;&lt;/p&gt;
  882. &lt;p&gt;…that's not good. The app runs, but it looks like it's having font issues. (In particular, you can select and copy the text, even though it looks like a bunch of little squares, and if you paste that text into somewhere else it's real text! So this is some sort of font display problem.)&lt;/p&gt;
  883. &lt;p&gt;Fortunately, the OED app does actually come with the fonts it needs. Unfortunately, it seems to unpack them to somewhere (&lt;code&gt;C:\WINDOWS\SYSTEM&lt;/code&gt;)&lt;sup id=&quot;sf-oed-second-edition-cd-rom-under-wine-3-back&quot;&gt;&lt;a class=&quot;simple-footnote&quot; href=&quot;http://feeds.feedburner.com/kryogenix#sf-oed-second-edition-cd-rom-under-wine-3&quot; title=&quot;which we can find out from OED/INSTALL.LOG&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; that Wine doesn't appear to actually look at. What we need to do is to install those font files so Linux knows about them. You could click them all to install them, but there's a quicker way; copy them, from where the installer puts them, into our own font folder.&lt;/p&gt;
  884. &lt;p&gt;To do this...&lt;/p&gt;
  885. &lt;ul&gt;
  886. &lt;li&gt;first make a new folder to put them in: &lt;code&gt;mkdir ~/.local/share/fonts/oed&lt;/code&gt;.&lt;/li&gt;
  887. &lt;li&gt;Then find out where the installer put the font files, as a real path on our Linux filesystem: &lt;code&gt;winepath -u &quot;C:/WINDOWS/SYSTEM&quot;&lt;/code&gt;. Let's say that that ends up being &lt;code&gt;/home/you/.wine/dosdevices/c:/windows/system&lt;/code&gt;&lt;/li&gt;
  888. &lt;li&gt;Copy the TTF files from that folder (remembering to change the first path to the one that &lt;code&gt;winepath&lt;/code&gt; output just now): &lt;code&gt;cp /home/you/.wine/dosdevices/c:/windows/system/*.TTF ~/.local/share/fonts/oed&lt;/code&gt;&lt;/li&gt;
  889. &lt;li&gt;And tell the font system that we've added a bunch of new fonts: &lt;code&gt;fc-cache&lt;/code&gt;&lt;/li&gt;
  890. &lt;/ul&gt;
  891. &lt;p&gt;And now it all ought to work! Run &lt;code&gt;wine OED/OED.EXE&lt;/code&gt; one last time…&lt;/p&gt;
  892. &lt;p&gt;&lt;img alt=&quot;the OED Windows app in all its glory&quot; src=&quot;https://kryogenix.org/images/oed/06-working.png&quot; /&gt;&lt;/p&gt;&lt;ol class=&quot;simple-footnotes&quot;&gt;&lt;li id=&quot;sf-oed-second-edition-cd-rom-under-wine-1&quot;&gt;and using 7zip is much easier than mounting the ISO file as a loopback thing &lt;a class=&quot;simple-footnote-back&quot; href=&quot;http://feeds.feedburner.com/kryogenix#sf-oed-second-edition-cd-rom-under-wine-1-back&quot;&gt;↩&lt;/a&gt;&lt;/li&gt;&lt;li id=&quot;sf-oed-second-edition-cd-rom-under-wine-2&quot;&gt;There's a Microsoft Word macro that it offers to install; I didn't want that, and I have no idea whether it works &lt;a class=&quot;simple-footnote-back&quot; href=&quot;http://feeds.feedburner.com/kryogenix#sf-oed-second-edition-cd-rom-under-wine-2-back&quot;&gt;↩&lt;/a&gt;&lt;/li&gt;&lt;li id=&quot;sf-oed-second-edition-cd-rom-under-wine-3&quot;&gt;which we can find out from &lt;code&gt;OED/INSTALL.LOG&lt;/code&gt; &lt;a class=&quot;simple-footnote-back&quot; href=&quot;http://feeds.feedburner.com/kryogenix#sf-oed-second-edition-cd-rom-under-wine-3-back&quot;&gt;↩&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;</description>
  893. <pubDate>Wed, 08 May 2024 22:18:00 +0000</pubDate>
  894. </item>
  895. <item>
  896. <title>The Fridge: Ubuntu Weekly Newsletter Issue 838</title>
  897. <guid isPermaLink="false">https://fridge.ubuntu.com/?p=10166</guid>
  898. <link>https://fridge.ubuntu.com/2024/05/06/ubuntu-weekly-newsletter-issue-838/</link>
  899. <description>&lt;p&gt;&lt;img src=&quot;https://fridge.ubuntu.com/wp-content/uploads/2020/02/c9d7/header.png&quot; /&gt;&lt;/p&gt;
  900. &lt;p&gt;Welcome to the Ubuntu Weekly Newsletter, &lt;strong&gt;Issue 838 for the week of April 28 – May 4, 2024&lt;/strong&gt;. The full version of this issue is available &lt;a href=&quot;https://discourse.ubuntu.com/t/ubuntu-weekly-newsletter-issue-838/44648&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
  901. &lt;p&gt;In this issue we cover:&lt;/p&gt;
  902. &lt;ul&gt;
  903. &lt;li&gt;Welcome New Members and Developers&lt;/li&gt;
  904. &lt;li&gt;Ubuntu Stats&lt;/li&gt;
  905. &lt;li&gt;Hot in Support&lt;/li&gt;
  906. &lt;li&gt;UbuCon Asia 2024 CFP Closed, Registration now open!&lt;/li&gt;
  907. &lt;li&gt;Come to SeaGL November 8th &amp;amp; 9th, 2024&lt;/li&gt;
  908. &lt;li&gt;UbuCon Korea 2024 – Call for proposals&lt;/li&gt;
  909. &lt;li&gt;Ubuntu 24.04 InstallFest + Workshop in Busan is successfully completed!&lt;/li&gt;
  910. &lt;li&gt;LoCo Events&lt;/li&gt;
  911. &lt;li&gt;Ubuntu 24.04 and .NET&lt;/li&gt;
  912. &lt;li&gt;`needrestart` changes in Ubuntu 24.04: service restarts&lt;/li&gt;
  913. &lt;li&gt;Multipass version 1.14.0 RC1&lt;/li&gt;
  914. &lt;li&gt;Call for GNOME Asia 2024 Location Proposals&lt;/li&gt;
  915. &lt;li&gt;Ubuntu Cloud News&lt;/li&gt;
  916. &lt;li&gt;Canonical News&lt;/li&gt;
  917. &lt;li&gt;In the Press&lt;/li&gt;
  918. &lt;li&gt;In the Blogosphere&lt;/li&gt;
  919. &lt;li&gt;Other Articles of Interest&lt;/li&gt;
  920. &lt;li&gt;Featured Audio and Video&lt;/li&gt;
  921. &lt;li&gt;Meeting Reports&lt;/li&gt;
  922. &lt;li&gt;Upcoming Meetings and Events&lt;/li&gt;
  923. &lt;li&gt;Updates and Security for Ubuntu 20.04, 22.04, 23.10, and 24.04&lt;/li&gt;
  924. &lt;li&gt;And much more!&lt;/li&gt;
  925. &lt;/ul&gt;
  926. &lt;p&gt;&lt;strong&gt;The Ubuntu Weekly Newsletter is brought to you by:&lt;/strong&gt;&lt;/p&gt;
  927. &lt;ul&gt;
  928. &lt;li&gt;Krytarik Raido&lt;/li&gt;
  929. &lt;li&gt;Bashing-om&lt;/li&gt;
  930. &lt;li&gt;Chris Guiver&lt;/li&gt;
  931. &lt;li&gt;Wild Man&lt;/li&gt;
  932. &lt;li&gt;And many others&lt;/li&gt;
  933. &lt;/ul&gt;
  934. &lt;p&gt;If you have a story idea for the Weekly Newsletter, join the &lt;a href=&quot;https://lists.ubuntu.com/mailman/listinfo/Ubuntu-news-team&quot;&gt;Ubuntu News Team mailing list&lt;/a&gt; and submit it. Ideas can also be added to the &lt;a href=&quot;https://wiki.ubuntu.com/UbuntuWeeklyNewsletter/Ideas&quot;&gt;wiki&lt;/a&gt;!&lt;/p&gt;
  935. &lt;p&gt;&lt;img class=&quot;alignleft&quot; src=&quot;https://fridge.ubuntu.com/wp-content/uploads/2015/05/ab28/CCL.png&quot; style=&quot;margin: 0 10px 0 0;&quot; /&gt; &lt;a href=&quot;https://fridge.ubuntu.com/2024/05/06/ubuntu-weekly-newsletter-issue-838/&quot;&gt;&lt;/a&gt;.&lt;/p&gt;</description>
  936. <pubDate>Mon, 06 May 2024 22:13:33 +0000</pubDate>
  937. </item>
  938. <item>
  939. <title>Stuart Langridge: The Pastry Box Project archaeology</title>
  940. <guid isPermaLink="false">tag:www.kryogenix.org,2024-05-03:/days/2024/05/03/the-pastry-box-project-archaeology/</guid>
  941. <link>https://www.kryogenix.org/days/2024/05/03/the-pastry-box-project-archaeology/</link>
  942. <description>&lt;p&gt;Many years ago (2012!) I was invited to be part of &quot;The Pastry Box Project&quot;, which described itself thus:&lt;/p&gt;
  943. &lt;blockquote&gt;Each year, The Pastry Box Project gathers 30 people who are each influential in their field and asks them to share thoughts regarding what they do. Those thoughts are then published every day throughout the year at a rate of one per day, starting January 1st and ending December 31st.&lt;/blockquote&gt;
  944.  
  945. &lt;p&gt;It was interesting. Sadly, it's dropped off the web (as has its curator, Alex Duloz, as far as I can tell), but thankfully &lt;a href=&quot;https://archive.org&quot;&gt;the Wayback Machine&lt;/a&gt; comes to the rescue once again.&lt;sup id=&quot;sf-the-pastry-box-project-archaeology-1-back&quot;&gt;&lt;a class=&quot;simple-footnote&quot; href=&quot;http://feeds.feedburner.com/kryogenix#sf-the-pastry-box-project-archaeology-1&quot; title=&quot;Also, the writing is all archived at Github!&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; I was quietly proud of some of the things I wrote there (and I was recently asked for a reference to a thing I said which the questioner couldn't find, which is what made me realise that the site's not around any more), so I thought I'd republish the stuff I wrote there, here, for ease of finding. This was all written in 2012, and the world has moved on in a few ways since then, a dozen years ago at time of writing, but... I think I'd still stand by most of this stuff. The posts are &lt;a href=&quot;https://web.archive.org/web/20140709052954/https://the-pastry-box-project.net/baker/stuart-langridge&quot;&gt;still at archive.org&lt;/a&gt; and you can get to and read other people's posts from there too, some of which are really good and worth your time. But here are mine, so I don't lose them again.&lt;/p&gt;
  946. &lt;h2&gt;Tuesday, 18 December 2012&lt;/h2&gt;
  947. &lt;p&gt;My daughter’s got a smartphone, because, well, everyone has. It has GPS on it, because, well, every one does. What this means is that she will never understand the concept of being lost.&lt;/p&gt;
  948. &lt;p&gt;Think about that for a second. &lt;em&gt;She won’t ever even know what it &lt;strong&gt;means&lt;/strong&gt; to be lost.&lt;/em&gt;&lt;/p&gt;
  949. &lt;p&gt;Every argument I have in the pub now goes for about ten minutes before someone says, right, we’ve spent long enough arguing now, someone look up the correct answer on Wikipedia. My daughter won’t ever understand the concept of not having a bit of information available, of being confused about a matter of fact.&lt;/p&gt;
  950. &lt;p&gt;A while back, it was decreed that telephone directories are not subject to copyright, that a list of phone numbers is “information alone without a minimum of original creativity” and therefore held no right of ownership.&lt;/p&gt;
  951. &lt;p&gt;What instant access to information has provided us is a world where all the simple matters of fact are now yours; free for the asking. Putting data on the internet is not a skill; it is drudgery, a mechanical task for robots. Ask yourself: why do you buy technical books? It’s not for the information inside: there is no tech book anywhere which actually reveals something which isn’t on the web already. It’s about the voice; about the way it’s written; about how interesting it is. And that &lt;em&gt;is&lt;/em&gt; a skill. Matters of fact are not interesting — they’re useful, right enough, but not interesting. Making those facts available to everyone frees up authors, creators, makers to do authorial creative things. You don’t have to spend all your time collating stuff any more: now you can be Leonardo da Vinci all the time. Be beautiful. Appreciate the people who do things well, rather than just those who manage to do things at all. Prefer those people who make you laugh, or make you think, or make you throw your laptop out of a window with annoyance: who give you a strong reaction to their writing, or their speaking, or their work. Because information wanting to be free is what creates a world of creators. Next time someone wants to build a wall around their little garden, ask yourself: is what you’re paying for, with your time or your money or your personal information, something creative and wonderful? Or are they just mechanically collating information? I hope to spend 2013 enjoying the work of people who do something more than that.&lt;/p&gt;
  952. &lt;h2&gt;Wednesday, 31 October 2012&lt;/h2&gt;
  953. &lt;p&gt;Not everyone who works with technology loves technology. No, really, it’s true! Most of the people out there building stuff with web tech don’t attend conferences, don’t talk about WebGL in the pub, don’t write a blog with CSS3 “experiments” in it, don’t like what they do. It’s a job: come in at 9, go home at 5, don’t think about HTML outside those hours. Apparently 90% of the stuff in the universe is “dark matter”: undetectable, doesn’t interact with other matter, can’t be seen even with a really big telescope. Our “dark matter developers”, who aren’t part of the community, who barely even know that the community exists… how are we to help them? You can write all the &lt;em&gt;A List Apart&lt;/em&gt; articles you like but dark matter developers don’t read it. And so everyone’s intranet is horrid and Internet-Explorer-specific and so the IE team have to maintain backwards compatibility with that and that hurts the web. What can we do to reach this huge group of people? Everyone’s written a book about web technologies, and books help, but books are dying. We want to get the word out about all the amazing things that are now possible to everyone: do we know how? Do we even have to care? The theory is that this stuff will “trickle down”, but that doesn’t work for economics: I’m not sure it works for &lt;code&gt;@-moz-keyframes&lt;/code&gt; either. &lt;/p&gt;
  954. &lt;h2&gt;Monday, 8 October 2012&lt;/h2&gt;
  955. &lt;p&gt;The web moves really fast. How many times have you googled for a tutorial on or an example of something and found that the results, written six months or a year or two years ago, no longer work? The syntax has changed, or there’s a better way now, or it never worked right to begin with. You’ll hear people bemoaning this: trying to stop the web moving so quickly in order that knowledge about it doesn’t go out of date. But that ship’s sailed. This is the world we’ve built: it moves fast, and we have to just hat up and deal with it. So, how? How can we make sure that old and wrong advice doesn’t get found? It’s a difficult question, and I don’t think anyone’s seriously trying to answer it. We should try and think of a way. &lt;/p&gt;
  956. &lt;h2&gt;Tuesday, 18 September 2012&lt;/h2&gt;
  957. &lt;p&gt;Software isn’t always a solution to problems. If you’re a developer, everything generally looks like a nail: a nail which is solved by making a new bit of code. I’ve got half-finished mobile apps done for tracking my running with GPS, for telling me when to switch between running and walking, and… I’m still fat, because I’m writing software instead of &lt;em&gt;going running&lt;/em&gt;. One of the big ideas behind computers was to automate repetitive and boring tasks, certainly, which means that it should work like this: identify a thing that needs doing, do it for a while, think “hm, a computer could do this more easily”, write a bit of software to do it. However, there’s too much premature optimisation going on, so it actually looks like this: identify a thing that needs doing, think “hm, I’m sure a computer would be able to do this more easily”, write a bit of software to do it. See the difference? If the software never gets finished, then in the first approach the thing &lt;em&gt;still gets done&lt;/em&gt;. Don’t always reach for the keyboard: sometimes it’s better to reach for Post-It notes, or your running shoes. &lt;/p&gt;
  958. &lt;h2&gt;Saturday, 18 August 2012&lt;/h2&gt;
  959. &lt;p&gt;Changing the world is within your grasp.&lt;/p&gt;
  960. &lt;p&gt;This is not necessarily a good thing.&lt;/p&gt;
  961. &lt;p&gt;If you go around and talk to normal people, it becomes clear that, weirdly, they don’t ever imagine how to get ten million dollars. They don’t think about new ways to redesign a saucepan or the buttons in their car. They don’t contemplate why sending a parcel is slow and how it could be a slicker process. They don’t think about &lt;em&gt;ways to change the world&lt;/em&gt;.&lt;/p&gt;
  962. &lt;p&gt;I find it hard to talk to someone who doesn’t think like that.&lt;/p&gt;
  963. &lt;p&gt;To an engineer, the world is a toy box full of sub-optimized and feature-poor toys, as Scott Adams once put it. To a designer, the world is full of bad design. And to both, it is not only possible but at a high level &lt;em&gt;obvious&lt;/em&gt; how to (a) fix it (b) for everyone (c) and make a few million out of doing so.&lt;/p&gt;
  964. &lt;p&gt;At first, this seems a blessing: you can see how the world could be better! And make it happen!&lt;/p&gt;
  965. &lt;p&gt;Then it’s a curse. Those normal people I mentioned? Short of winning the lottery or Great Uncle Brewster dying, there’s no possibility of becoming a multi-millionaire, and so they’re not thinking about it. Doors that have a handle on them but say “Push” are not a source of distress. Wrong kerning in signs is not like sandpaper on &lt;em&gt;their&lt;/em&gt; nerves.&lt;/p&gt;
  966. &lt;p&gt;The curse of being able to change the world is… the frustration that you have so far failed to do so.&lt;/p&gt;
  967. &lt;p&gt;Perhaps there is a Zen thing here. Some people have managed it. Maybe you have. So the world is better, and that’s a good thing all by itself, right? &lt;/p&gt;
  968. &lt;h2&gt;Friday, 27 July 2012&lt;/h2&gt;
  969. &lt;p&gt;The best systems are built by people who can accept that no-one will ever know how hard it was to do, and who therefore don’t seek validation by explaining to everyone how hard it was to do.&lt;/p&gt;
  970. &lt;h2&gt;Tuesday, 12 June 2012&lt;/h2&gt;
  971. &lt;p&gt;The most poisonous idea in the world is when you’re told that something which achieved success through lots of hard work actually got there just because it was excellent.&lt;/p&gt;
  972. &lt;h2&gt;Friday, 18 May 2012&lt;/h2&gt;
  973. &lt;p&gt;Ever notice how the things you slave over and work crushingly hard on get less attention, sometimes, than the amusing things you threw together in a couple of evenings?&lt;/p&gt;
  974. &lt;p&gt;I can't decide whether this is a good thing or not.&lt;/p&gt;
  975. &lt;h2&gt;Thursday, 5 April 2012&lt;/h2&gt;
  976. &lt;p&gt;It's OK to not want to build websites for everybody and every browser. Making something which is super-dynamic in Chrome 18 and also works excellently in w3m is jolly hard work, and a lot of the time you might well be justified in thinking it's not worth it. If your site stats, or your belief, or your prediction of the market's direction, or your favourite pundit tell you that the best use of your time is to only support browsers with &lt;code&gt;querySelector&lt;/code&gt;, or only support browsers with JavaScript, or only support WebKit, or only support iOS Safari, then that's a reasonable decision to make; don't let anyone else tell you what your relationship with your users and customers and clients is, because you know better than them.&lt;/p&gt;
  977. &lt;p&gt;Just don't confuse what you're doing with supporting &quot;the web&quot;. State your assumptions up front. Own your decisions, and be prepared to back them up, for your project. If you're building something which doesn't work in IE6, that requires JavaScript, that requires mobile WebKit, that requires Opera Mobile, then you &lt;em&gt;are&lt;/em&gt; letting some people down. That's OK; you've decided to do that. But your view's no more valid than theirs, for a project you didn't build. Make your decisions, and state what the axioms you worked from were, and then everyone else can judge whether what you care about is what they care about. Just don't push your view as being what everyone else should do, and we'll all be fine.&lt;/p&gt;
  978. &lt;h2&gt;Sunday, 18 March 2012&lt;/h2&gt;
  979. &lt;p&gt;Publish and be damned, said the Duke of Wellington; these days, in between starting wars in France and being sick of everyone repeating the jokes about his name from Blackadder, he’d probably say that we should publish &lt;em&gt;or&lt;/em&gt; be damned. If you’re anything like me, you’ve got folders full of little experiments that you never got around to finishing or that didn’t pan out. Put ’em up somewhere. These things are useful.&lt;/p&gt;
  980. &lt;p&gt;Twitter, autobiographies, collections of letters from authors, all these have shown us that the minutiae can be as fascinating as carefully curated and sieved and measured writings, and who knows what you’ll inspire the next person to do from the germ of one of your ideas?&lt;/p&gt;
  981. &lt;h2&gt;Monday, 27 February 2012&lt;/h2&gt;
  982. &lt;p&gt;There's a lot to think about when you're building something on the web. Is it accessible? How do I handle translations of the text? Is the design OK on a 320px-wide screen? On a 2320px-wide screen? Does it work in IE8? In Android 4.0? In Opera Mini? Have I minimized the number of HTTP requests my page requires? Is my JavaScript minified? Are my images responsive? Is Google Analytics hooked up properly? AdSense? Am I handling Unicode text properly? Avoiding CSRF? XSS? Have I encoded my videos correctly? Crushed my pngs? Made a print stylesheet?&lt;/p&gt;
  983. &lt;p&gt;We've come a long way since:&lt;/p&gt;
  984. &lt;pre&gt;&lt;code&gt;&amp;lt;HEADER&amp;gt;
  985. &amp;lt;TITLE&amp;gt;The World Wide Web project&amp;lt;/TITLE&amp;gt;
  986. &amp;lt;NEXTID N=&quot;55&quot;&amp;gt;
  987. &amp;lt;/HEADER&amp;gt;
  988. &amp;lt;BODY&amp;gt;
  989. &amp;lt;H1&amp;gt;World Wide Web&amp;lt;/H1&amp;gt;The WorldWideWeb (W3) is a wide-area&amp;lt;A
  990. NAME=0 HREF=&quot;WhatIs.html&quot;&amp;gt;
  991. hypermedia&amp;lt;/A&amp;gt; information retrieval
  992. initiative aiming to give universal
  993. access to a large universe of documents.&lt;/code&gt;&lt;/pre&gt;
  994.  
  995. &lt;p&gt;Look at &lt;a href=&quot;http://html5boilerplate.com/&quot;&gt;http://html5boilerplate.com/&lt;/a&gt;—a base level page which helps you to cover some (nowhere near all) of the above list of things to care about (and the rest of the things you need to care about too, which are the other 90% of the list). A year in development, 900 sets of changes and evolutions from the initial version, seven separate files. That's not over-engineering; that's what you need to know to build things these days.&lt;/p&gt;
  996. &lt;p&gt;The important point is: one of the skills in our game is knowing what you don't need to do right now but still leaving the door open for you to do it later. If you become the next Facebook then you will have to care about all these things; initially you may not. You don't have to build them all on day one: that &lt;em&gt;is&lt;/em&gt; over-engineering. But you, designer, developer, translator, evangelist, web person, do have to understand what they all mean. And you do have to be able to layer them on later without having to tear everything up and start again. Feel guilty that you're not addressing all this stuff in the first release if necessary, but you should feel a lot guiltier if you didn't think of some of it.&lt;/p&gt;
  997. &lt;h2&gt;Wednesday, 18 January 2012&lt;/h2&gt;
  998. &lt;p&gt;Don't be creative. Be a creat&lt;em&gt;or&lt;/em&gt;. No one ever looks back and wishes that they'd given the world less stuff.&lt;/p&gt;&lt;ol class=&quot;simple-footnotes&quot;&gt;&lt;li id=&quot;sf-the-pastry-box-project-archaeology-1&quot;&gt;Also, the writing is all &lt;a href=&quot;https://github.com/the-pastry-box-project&quot;&gt;archived at Github!&lt;/a&gt; &lt;a class=&quot;simple-footnote-back&quot; href=&quot;http://feeds.feedburner.com/kryogenix#sf-the-pastry-box-project-archaeology-1-back&quot;&gt;↩&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;</description>
  999. <pubDate>Fri, 03 May 2024 18:08:00 +0000</pubDate>
  1000. </item>
  1001. <item>
  1002. <title>Colin Watson: Playing with rich</title>
  1003. <guid isPermaLink="false">tag:www.chiark.greenend.org.uk,2024-05-03:/~cjwatson/blog/playing-with-rich.html</guid>
  1004. <link>https://www.chiark.greenend.org.uk/~cjwatson/blog/playing-with-rich.html</link>
  1005. <description>&lt;p&gt;One of the things I do as a side project for Freexian is to work on
  1006. various bits of business automation: accounting tools, programs to help
  1007. contributors report their hours, invoicing, that kind of thing. While
  1008. it’s not quite my usual beat, this makes quite a good side project as
  1009. the tools involved are mostly rather sensible and easy to deal with
  1010. (Python, git, &lt;a href=&quot;https://ledger-cli.org/&quot;&gt;ledger&lt;/a&gt;, that sort of thing)
  1011. and it’s the kind of thing where I can dip into it for a day or so a
  1012. week and feel like I’m making useful contributions. The logic can be
  1013. quite complex, but there’s very little friction in the tools themselves.&lt;/p&gt;
  1014. &lt;p&gt;A recent case where I did run into some friction in the tools was with
  1015. some commands that need to present small amounts of tabular data on the
  1016. terminal, using &lt;a href=&quot;https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda&quot;&gt;&lt;span class=&quot;caps&quot;&gt;OSC&lt;/span&gt;
  1017. 8&lt;/a&gt;
  1018. hyperlinks if the terminal supports them: think customer-related
  1019. information with some links to issues. One of my colleagues had
  1020. previously done this using a
  1021. &lt;a href=&quot;https://github.com/foutaise/texttable/issues/87&quot;&gt;hack&lt;/a&gt; on top of
  1022. &lt;a href=&quot;https://pypi.org/project/texttable/&quot;&gt;texttable&lt;/a&gt;, which was perfectly
  1023. fine as far as it went. However, now I wanted to be able to add multiple
  1024. links in a single table cell in some cases, and that was really going to
  1025. stretch the limits of that approach: working out the width of the
  1026. displayed text in the cell was going to take an annoying amount of bookkeeping.&lt;/p&gt;
  1027. &lt;p&gt;I started looking around to see whether any other approaches might be
  1028. easier, without too much effort (remember that “a day or so a week” bit
  1029. above). &lt;a href=&quot;https://pypi.org/project/ansiwrap/&quot;&gt;ansiwrap&lt;/a&gt; looked
  1030. somewhat promising, but it isn’t currently packaged in Debian, and it
  1031. would have still left me with the problem of figuring out how to
  1032. integrate it into &lt;code&gt;texttable&lt;/code&gt;, which looked like it would be quite
  1033. complicated. Then I remembered that I’d heard good things about
  1034. &lt;a href=&quot;https://pypi.org/project/rich/&quot;&gt;rich&lt;/a&gt;, and thought I’d take a look.&lt;/p&gt;
  1035. &lt;p&gt;&lt;code&gt;rich&lt;/code&gt; turned out to be exactly what I wanted. Instead of something
  1036. like this based on the &lt;code&gt;texttable&lt;/code&gt; hack above:&lt;/p&gt;
  1037. &lt;pre class=&quot;m-code&quot;&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;shutil&lt;/span&gt;
  1038. &lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;pyxian.texttable&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;UrlTable&lt;/span&gt;
  1039.  
  1040. &lt;span class=&quot;n&quot;&gt;termsize&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;shutil&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;get_terminal_size&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;((&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;25&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
  1041. &lt;span class=&quot;n&quot;&gt;table&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;UrlTable&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;max_width&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;termsize&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;columns&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  1042. &lt;span class=&quot;n&quot;&gt;table&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;set_deco&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;UrlTable&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;HEADER&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  1043. &lt;span class=&quot;n&quot;&gt;table&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;set_cols_align&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;l&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;
  1044. &lt;span class=&quot;n&quot;&gt;table&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;set_cols_dtype&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;u&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;
  1045. &lt;span class=&quot;n&quot;&gt;table&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;add_row&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Issue&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;
  1046. &lt;span class=&quot;n&quot;&gt;table&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;add_row&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;issue_url&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sa&quot;&gt;f&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;#&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;issue_id&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)]&lt;/span&gt;
  1047. &lt;span class=&quot;nb&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;table&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;draw&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;())&lt;/span&gt;&lt;/pre&gt;
  1048. &lt;p&gt;… now I can do this instead:&lt;/p&gt;
  1049. &lt;pre class=&quot;m-code&quot;&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;rich&lt;/span&gt;
  1050. &lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;rich&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;box&lt;/span&gt;
  1051. &lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;rich.table&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Table&lt;/span&gt;
  1052.  
  1053. &lt;span class=&quot;n&quot;&gt;table&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Table&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;box&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;box&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;SIMPLE&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  1054. &lt;span class=&quot;n&quot;&gt;table&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;add_column&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Issue&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  1055. &lt;span class=&quot;n&quot;&gt;table&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;add_row&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sa&quot;&gt;f&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;[link=&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;issue_url&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;]#&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;issue_id&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;[/link]&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  1056. &lt;span class=&quot;n&quot;&gt;rich&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;table&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;/pre&gt;
  1057. &lt;p&gt;While this is a little shorter, the real bonus is that I can now just
  1058. put multiple &lt;code&gt;[link]&lt;/code&gt; tags in a single string, and it all just works.
  1059. No ceremony. In fact, once the relevant bits of code passed
  1060. type-checking (since the real code is a bit more complex than the
  1061. samples above), it worked first time. It’s a pleasure to work with a
  1062. library like that.&lt;/p&gt;
  1063. &lt;p&gt;It looks like I’ve only barely scratched the surface of &lt;code&gt;rich&lt;/code&gt;, but I
  1064. expect I’ll reach for it more often now.&lt;/p&gt;</description>
  1065. <pubDate>Fri, 03 May 2024 15:09:53 +0000</pubDate>
  1066. </item>
  1067. <item>
  1068. <title>Nobuto Murata: No, you can't downgrade T14 Gen 3 AMD's UEFI BIOS even when Secure Rollback Prevention is turned off</title>
  1069. <guid isPermaLink="true">https://nobuto-m.github.io/post/2024/no-you-can-t-downgrade-t14-gen-3-amd-s-uefi-bios-even-when-secure-rollback-prevention-is-turned-off/</guid>
  1070. <link>https://nobuto-m.github.io/post/2024/no-you-can-t-downgrade-t14-gen-3-amd-s-uefi-bios-even-when-secure-rollback-prevention-is-turned-off/</link>
  1071. <description>&lt;figure id=&quot;figure-the-secure-rollback-prevention-entry-in-the-uefi-bios-configuration&quot;&gt;
  1072.  &lt;div class=&quot;d-flex justify-content-center&quot;&gt;
  1073.    &lt;div class=&quot;w-100&quot;&gt;&lt;img alt=&quot;The &quot; data-zoomable=&quot;&quot; height=&quot;570&quot; src=&quot;https://nobuto-m.github.io/post/2024/no-you-can-t-downgrade-t14-gen-3-amd-s-uefi-bios-even-when-secure-rollback-prevention-is-turned-off/featured_hu98a07cb948a4aa5ce68d8a190753e9dc_450211_3cb9670871c00c22c40ea3757e48b4ee.webp&quot; width=&quot;760&quot; /&gt;&lt;/div&gt;
  1074.  &lt;/div&gt;&amp;lt;figcaption&amp;gt;
  1075.      The “Secure Rollback Prevention” entry in the UEFI BIOS configuration
  1076.    &amp;lt;/figcaption&amp;gt;&lt;/figure&gt;
  1077.  
  1078. &lt;p&gt;The bottom line is that there is a new configuration called “AMD Secure &lt;strong&gt;Processor&lt;/strong&gt; Rollback protection” on recent AMD systems in addition to “Secure Rollback Prevention” (BIOS rollback protection). If it’s enabled by a vendor, you cannot downgrade the UEFI BIOS revisions once you install a one with security vulnerability fixes.&lt;/p&gt;
  1079. &lt;p&gt;&lt;a href=&quot;https://fwupd.github.io/libfwupdplugin/hsi.html#org.fwupd.hsi.Amd.RollbackProtection&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;https://fwupd.github.io/libfwupdplugin/hsi.html#org.fwupd.hsi.Amd.RollbackProtection&lt;/a&gt;&lt;/p&gt;
  1080. &lt;blockquote&gt;
  1081. &lt;p&gt;This feature prevents an attacker from loading an older firmware onto the part after a security vulnerability has been fixed.&lt;br /&gt;
  1082. […]&lt;br /&gt;
  1083. End users are not able to directly modify rollback protection, this is controlled by the manufacturer.&lt;/p&gt;
  1084. &lt;/blockquote&gt;
  1085. &lt;p&gt;Previously I installed the revision 1.49 (R23ET73W) but it’s gone from &lt;a href=&quot;https://pcsupport.lenovo.com/us/en/products/laptops-and-netbooks/thinkpad-t-series-laptops/thinkpad-t14-gen-3-type-21cf-21cg/21cf/21cfcto1ww/downloads/driver-list/component?name=BIOS%2FUEFI&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;Lenovo’s official page&lt;/a&gt; with the notice below. I’ve been annoyed by a symptom which is likely from a firmware so I wanted to try multiple revisions for bisecting, and also I thought I should downgrade it to the latest official revision as 1.40 (R23ET70W) since the withdrawal clearly indicates that there is something wrong with 1.49.&lt;/p&gt;
  1086. &lt;blockquote&gt;
  1087. &lt;p&gt;This BIOS version R23UJ73W is reported Lenovo cloud not working issue, hence it has been withdrawn from support site.&lt;/p&gt;
  1088. &lt;/blockquote&gt;
  1089. &lt;p&gt;First, I turned off &lt;code&gt;Secure Rollback Prevention&lt;/code&gt; and tried downgrading it with &lt;code&gt;fwupdmgr&lt;/code&gt; like the following. However, it failed to be applied with &lt;code&gt;Secure Flash Authentication Failed&lt;/code&gt; when rebooted.&lt;/p&gt;
  1090. &lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;chroma&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;$ fwupdmgr downgrade
  1091. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;0. Cancel
  1092. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;1. b0fb0282929536060857f3bd5f80b319233340fd &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;Battery&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
  1093. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;2. 6fd62cb954242863ea4a184c560eebd729c76101 &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;Embedded Controller&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
  1094. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;3. 0d5d05911800242bb1f35287012cdcbd9b381148 &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;Prometheus&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
  1095. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;4. 3743975ad7f64f8d6575a9ae49fb3a8856fe186f &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;SKHynix HFS256GDE9X081N&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
  1096. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;5. d77c38c163257a2c2b0c0b921b185f481d9c1e0c &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;System Firmware&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
  1097. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;6. 6df01b2df47b1b08190f1acac54486deb0b4c645 &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;TPM&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
  1098. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;7. 362301da643102b9f38477387e2193e57abaa590 &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;UEFI dbx&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
  1099. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;Choose device &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;0-7&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;: &lt;span class=&quot;m&quot;&gt;5&lt;/span&gt;
  1100. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;0. Cancel
  1101. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;1. 0.1.46
  1102. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;2. 0.1.41
  1103. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;3. 0.1.38
  1104. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;4. 0.1.36
  1105. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;5. 0.1.23
  1106. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;Choose release &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;0-5&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;:
  1107. &lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Next, I tried their ISO image &lt;code&gt;r23uj70wd.iso&lt;/code&gt;, but no luck with another error.&lt;/p&gt;
  1108. &lt;blockquote&gt;
  1109. &lt;p&gt;Error&lt;/p&gt;
  1110. &lt;p&gt;The system program file is not correct for this system.&lt;/p&gt;
  1111. &lt;/blockquote&gt;
  1112. &lt;p&gt;Also, Windows failed to apply it so I became convinced it was impossible. However, I didn’t have a clear idea why at that point and bumped into a handy command in &lt;code&gt;fwupdmgr&lt;/code&gt;.&lt;/p&gt;
  1113. &lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;chroma&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;$ fwupdmgr security
  1114. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;Host Security ID: HSI:1! &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;v1.9.16&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
  1115. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;
  1116. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;HSI-1
  1117. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;✔ BIOS firmware updates:         Enabled
  1118. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;✔ Fused platform:                Locked
  1119. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;✔ Supported CPU:                 Valid
  1120. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;✔ TPM empty PCRs:                Valid
  1121. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;✔ TPM v2.0:                      Found
  1122. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;✔ UEFI bootservice variables:    Locked
  1123. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;✔ UEFI platform key:             Valid
  1124. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;✔ UEFI secure boot:              Enabled
  1125. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;
  1126. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;HSI-2
  1127. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;✔ SPI write protection:          Enabled
  1128. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;✔ IOMMU:                         Enabled
  1129. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;✔ Platform debugging:            Locked
  1130. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;✔ TPM PCR0 reconstruction:       Valid
  1131. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;✘ BIOS rollback protection:      Disabled
  1132. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;
  1133. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;HSI-3
  1134. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;✔ SPI replay protection:         Enabled
  1135. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;✔ CET Platform:                  Supported
  1136. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;✔ Pre-boot DMA protection:       Enabled
  1137. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;✔ Suspend-to-idle:               Enabled
  1138. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;✔ Suspend-to-ram:                Disabled
  1139. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;
  1140. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;HSI-4
  1141. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;✔ Processor rollback protection: Enabled
  1142. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;✔ Encrypted RAM:                 Encrypted
  1143. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;✔ SMAP:                          Enabled
  1144. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;
  1145. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;Runtime Suffix -!
  1146. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;✔ fwupd plugins:                 Untainted
  1147. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;✔ Linux kernel lockdown:         Enabled
  1148. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;✔ Linux kernel:                  Untainted
  1149. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;✘ CET OS Support:                Not supported
  1150. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;✘ Linux swap:                    Unencrypted
  1151. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;
  1152. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;This system has HSI runtime issues.
  1153. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt; » https://fwupd.github.io/hsi.html#hsi-runtime-suffix
  1154. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;
  1155. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;Host Security Events
  1156. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;  2024-05-01 15:06:29:  ✘ BIOS rollback protection changed: Enabled → Disabled
  1157. &lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;As you can see, the &lt;code&gt;BIOS rollback protection&lt;/code&gt; in the HSI-2 section is “Disabled” as intended. But &lt;code&gt;Processor rollback protection&lt;/code&gt; in HSI-4 is “Enabled”. I found a commit suggesting that there was a system with the config disabled and it was able to be enabled when &lt;code&gt;OS Optimized Defaults&lt;/code&gt; is turned on.&lt;/p&gt;
  1158. &lt;p&gt;&lt;a href=&quot;https://github.com/fwupd/fwupd/commit/52d6c3cb78ab8ebfd432949995e5d4437569aaa6&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;https://github.com/fwupd/fwupd/commit/52d6c3cb78ab8ebfd432949995e5d4437569aaa6&lt;/a&gt;&lt;/p&gt;
  1159. &lt;blockquote&gt;
  1160. &lt;p&gt;Update documentation to indicate that loading “OS Optimized Defaults”&lt;/p&gt;
  1161. &lt;p&gt;may enable security processor rollback protection on Lenovo systems.&lt;/p&gt;
  1162. &lt;/blockquote&gt;
  1163. &lt;p&gt;I hoped that &lt;code&gt;Processor rollback protection&lt;/code&gt; might be disabled by turning off &lt;code&gt;OS Optimized Defaults&lt;/code&gt; instead.&lt;/p&gt;
  1164.  
  1165.  
  1166.  
  1167.  
  1168.  
  1169.  
  1170.  
  1171.  
  1172.  
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178.  
  1179.  
  1180.  
  1181.  
  1182. &lt;figure id=&quot;figure-tried-os-optimized-defaults-turned-off-but-no-luck&quot;&gt;
  1183.  &lt;div class=&quot;d-flex justify-content-center&quot;&gt;
  1184.    &lt;div class=&quot;w-100&quot;&gt;&lt;img alt=&quot;Tried OS Optimized Defaults turned off but no luck&quot; data-zoomable=&quot;&quot; height=&quot;428&quot; src=&quot;https://nobuto-m.github.io/post/2024/no-you-can-t-downgrade-t14-gen-3-amd-s-uefi-bios-even-when-secure-rollback-prevention-is-turned-off/os-optimized-defaults_hu503de795b087b91d9dac387047c8e5d4_262087_653d6e7f1be4a9f7ce5da4ac4224f907.webp&quot; width=&quot;760&quot; /&gt;&lt;/div&gt;
  1185.  &lt;/div&gt;&amp;lt;figcaption&amp;gt;
  1186.      Tried OS Optimized Defaults turned off but no luck
  1187.    &amp;lt;/figcaption&amp;gt;&lt;/figure&gt;
  1188.  
  1189. &lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;chroma&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;$ fwupdmgr security
  1190. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;Host Security ID: HSI:1! &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;v1.9.16&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
  1191. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;
  1192. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;...
  1193. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;
  1194. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;✘ BIOS rollback protection:      Disabled
  1195. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;
  1196. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;...
  1197. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;
  1198. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;HSI-4
  1199. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;✔ Processor rollback protection: Enabled
  1200. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;
  1201. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;...
  1202. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;
  1203. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;Host Security Events
  1204. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;  2024-05-02 03:24:45:  ✘ Kernel lockdown disabled
  1205. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;  2024-05-02 03:24:45:  ✘ Secure Boot disabled
  1206. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;  2024-05-02 03:24:45:  ✘ Pre-boot DMA protection is disabled
  1207. &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;  2024-05-02 03:24:45:  ✘ Encrypted RAM changed: Encrypted → Not supported
  1208. &lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Some configurations were overridden, but the &lt;code&gt;Processor rollback protection&lt;/code&gt; stayed the same. It’s confirmed that it’s really impossible to downgrade the firmware with vulnerability fixes. I learned the hard way that there was a clear difference between “a vendor doesn’t support downgrading” and “it can’t be downgraded” as per the release notes.&lt;/p&gt;
  1209. &lt;p&gt;&lt;a href=&quot;https://download.lenovo.com/pccbbs/mobiles/r23uj73wd.txt&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;https://download.lenovo.com/pccbbs/mobiles/r23uj73wd.txt&lt;/a&gt;&lt;/p&gt;
  1210. &lt;blockquote&gt;
  1211. &lt;p&gt;CHANGES IN THIS RELEASE&lt;/p&gt;
  1212. &lt;p&gt;Version 1.49 (UEFI BIOS)
  1213. 1.32 (ECP)&lt;/p&gt;
  1214. &lt;p&gt;[Important updates]&lt;/p&gt;
  1215. &lt;ul&gt;
  1216. &lt;li&gt;Notice that BIOS can’t be downgraded to older BIOS version after upgrade to r23uj73w(1.49).&lt;/li&gt;
  1217. &lt;/ul&gt;
  1218. &lt;p&gt;[New functions or enhancements]&lt;/p&gt;
  1219. &lt;ul&gt;
  1220. &lt;li&gt;Enhancement to address security vulnerability, CVE-2023-5058,LEN-123535,LEN-128083,LEN-115697,LEN-123534,LEN-118373,LEN-119523,LEN-123536.&lt;/li&gt;
  1221. &lt;li&gt;Change to permit fan rotation after fan error happen.&lt;/li&gt;
  1222. &lt;/ul&gt;
  1223. &lt;/blockquote&gt;
  1224. &lt;p&gt;I have to wait for a new and better firmware.&lt;/p&gt;</description>
  1225. <pubDate>Fri, 03 May 2024 03:20:51 +0000</pubDate>
  1226. </item>
  1227. <item>
  1228. <title>Colin Watson: Free software activity in April 2024</title>
  1229. <guid isPermaLink="false">tag:www.chiark.greenend.org.uk,2024-05-01:/~cjwatson/blog/activity-2024-04.html</guid>
  1230. <link>https://www.chiark.greenend.org.uk/~cjwatson/blog/activity-2024-04.html</link>
  1231. <description>&lt;p&gt;My Debian contributions this month were all
  1232. &lt;a href=&quot;https://www.freexian.com/about/debian-contributions/&quot;&gt;sponsored&lt;/a&gt; by Freexian.&lt;/p&gt;
  1233. &lt;ul&gt;
  1234. &lt;li&gt;I’m trying to get back into bugs.debian.org administration, so I spent
  1235.   some time catching up on my &lt;code&gt;owner@bugs.debian.org&lt;/code&gt; mailbox and answering
  1236.   a number of support requests there.&lt;/li&gt;
  1237. &lt;li&gt;I fixed a regression I’d introduced last year where groff’s &lt;span class=&quot;caps&quot;&gt;PDF&lt;/span&gt; output
  1238.   had invalid date headers, both
  1239.   &lt;a href=&quot;https://git.savannah.gnu.org/cgit/groff.git/commit/?id=0815e503dba8d5c05921d68c6c718fe8f8440ee8&quot;&gt;upstream&lt;/a&gt;
  1240.   and &lt;a href=&quot;https://bugs.debian.org/1069902&quot;&gt;in Debian&lt;/a&gt;.&lt;/li&gt;
  1241. &lt;li&gt;I released &lt;a href=&quot;https://lists.nongnu.org/archive/html/man-db-announce/2024-04/msg00000.html&quot;&gt;man-db
  1242.   2.12.1&lt;/a&gt;.&lt;/li&gt;
  1243. &lt;li&gt;openssh:&lt;ul&gt;
  1244. &lt;li&gt;I did a little more testing of Luca Boccassi’s
  1245.  &lt;a href=&quot;https://bugzilla.mindrot.org/show_bug.cgi?id=2641#c23&quot;&gt;modifications&lt;/a&gt;
  1246.  to upstream’s inline systemd notification patch.&lt;/li&gt;
  1247. &lt;li&gt;I did an extensive
  1248.  &lt;a href=&quot;https://lists.debian.org/debian-devel/2024/04/msg00044.html&quot;&gt;review&lt;/a&gt;
  1249.  of some of the choices in Debian’s OpenSSH packaging, in light of last
  1250.  month’s &lt;a href=&quot;https://tukaani.org/xz-backdoor/&quot;&gt;xz-utils backdoor&lt;/a&gt;.&lt;/li&gt;
  1251. &lt;li&gt;I fixed a build failure on ppc64el, &lt;a href=&quot;https://bugzilla.mindrot.org/show_bug.cgi?id=3673#c2&quot;&gt;forwarded
  1252.  upstream&lt;/a&gt;.&lt;/li&gt;
  1253. &lt;li&gt;I &lt;a href=&quot;https://bugs.debian.org/1068311&quot;&gt;proposed&lt;/a&gt; reducing shared library
  1254.  linkage in tcp-wrappers; its maintainer accepted this by disabling &lt;span class=&quot;caps&quot;&gt;NIS&lt;/span&gt; support.&lt;/li&gt;
  1255. &lt;li&gt;I applied a &lt;a href=&quot;https://bugs.debian.org/1069706&quot;&gt;suggestion&lt;/a&gt; to improve
  1256.  ordering of systemd services in relation to &lt;code&gt;nss-user-lookup.target&lt;/code&gt;.&lt;/li&gt;
  1257. &lt;/ul&gt;
  1258. &lt;/li&gt;
  1259. &lt;li&gt;I updated putty to 0.81.&lt;/li&gt;
  1260. &lt;li&gt;Python team:&lt;ul&gt;
  1261. &lt;li&gt;I fixed build/autopkgtest failures in
  1262.  &lt;a href=&quot;https://bugs.debian.org/1069360&quot;&gt;cytoolz&lt;/a&gt; (&lt;a href=&quot;https://github.com/pytoolz/cytoolz/pull/205&quot;&gt;upstream
  1263.  &lt;span class=&quot;caps&quot;&gt;PR&lt;/span&gt;&lt;/a&gt;), nbconvert (due to
  1264.  &lt;a href=&quot;https://bugs.debian.org/1042699&quot;&gt;sphinx&lt;/a&gt; and
  1265.  &lt;a href=&quot;https://bugs.debian.org/1068349&quot;&gt;lxml-html-clean&lt;/a&gt; changes),
  1266.  &lt;a href=&quot;https://bugs.debian.org/1069816&quot;&gt;python-argcomplete&lt;/a&gt;,
  1267.  &lt;a href=&quot;https://bugs.debian.org/1069817&quot;&gt;python-exceptiongroup&lt;/a&gt;,
  1268.  &lt;a href=&quot;https://bugs.debian.org/1069756&quot;&gt;readability&lt;/a&gt;,
  1269.  &lt;a href=&quot;https://bugs.debian.org/1069818&quot;&gt;toolz&lt;/a&gt; (&lt;a href=&quot;https://github.com/pytoolz/toolz/pull/578&quot;&gt;upstream
  1270.  &lt;span class=&quot;caps&quot;&gt;PR&lt;/span&gt;&lt;/a&gt;), and
  1271.  &lt;a href=&quot;https://bugs.debian.org/1069608&quot;&gt;topplot&lt;/a&gt;.&lt;/li&gt;
  1272. &lt;li&gt;I made a &lt;a href=&quot;https://salsa.debian.org/science-team/pyferret/-/merge_requests/3&quot;&gt;merge
  1273.  request&lt;/a&gt;
  1274.  to fix a &lt;a href=&quot;https://bugs.debian.org/1058888&quot;&gt;build failure&lt;/a&gt; in pyferret.&lt;/li&gt;
  1275. &lt;li&gt;I fixed a
  1276.  &lt;a href=&quot;https://salsa.debian.org/python-team/packages/python-ecdsa/-/commit/3a95d8623d28d73c8c7877e6c3ddd5ee43e33ca4&quot;&gt;mistake&lt;/a&gt;
  1277.  in a Debian patch to python-ecdsa, noticed while updating jsonpickle.&lt;/li&gt;
  1278. &lt;li&gt;I updated cachelib, dnsdiag, feedparser, jsonpickle, pywavelets
  1279.  (fixing a &lt;a href=&quot;https://bugs.debian.org/1068805&quot;&gt;distutils dependency&lt;/a&gt;),
  1280.  python-aiohttp-session, python-avro, python-rstr, vine (including an
  1281.  &lt;a href=&quot;https://github.com/celery/vine/pull/109&quot;&gt;upstream packaging tweak&lt;/a&gt;,
  1282.  and wtforms to new upstream versions.&lt;/li&gt;
  1283. &lt;/ul&gt;
  1284. &lt;/li&gt;
  1285. &lt;li&gt;I did some inconclusive investigation of &lt;a href=&quot;https://bugs.debian.org/1057562&quot;&gt;flaky tests in
  1286.   gcr4&lt;/a&gt;.  More work is needed there.&lt;/li&gt;
  1287. &lt;li&gt;I proposed a patch for a build failure in gyoto, both
  1288.   &lt;a href=&quot;https://github.com/gyoto/Gyoto/pull/17&quot;&gt;upstream&lt;/a&gt; and &lt;a href=&quot;https://bugs.debian.org/1066788&quot;&gt;in
  1289.   Debian&lt;/a&gt;.&lt;/li&gt;
  1290. &lt;/ul&gt;
  1291. &lt;p&gt;You can support my work directly via
  1292. &lt;a href=&quot;https://liberapay.com/cjwatson&quot;&gt;Liberapay&lt;/a&gt;.&lt;/p&gt;</description>
  1293. <pubDate>Wed, 01 May 2024 11:34:15 +0000</pubDate>
  1294. </item>
  1295. <item>
  1296. <title>Salih Emin: Ucaresystem 24.05.0 released with Flatpak support</title>
  1297. <guid isPermaLink="false">http://utappiablog.wordpress.com/?p=49673</guid>
  1298. <link>https://utappiablog.wordpress.com/2024/05/01/ucaresystem-24-05-0-released-with-flatpak-support/</link>
  1299. <description>The previous release of uCareSystem, version 24.04.0, introduced enhanced maintenance and cleanup capabilities for Ubuntu and its derivatives. The fresh new release 24.05, is introduced with support for flatpak maintenance. This new version includes: Where can I download uCareSystem ? As always, I want to express my gratitude for your support over the past 15 […]</description>
  1300. <pubDate>Wed, 01 May 2024 10:30:13 +0000</pubDate>
  1301. </item>
  1302. <item>
  1303. <title>Santiago Zarate: RuPerl - Rust with embedded Perl</title>
  1304. <guid isPermaLink="false">https://foursixnine.io//blog/perl/rust/software/c/2024/05/01/ruperlrustwithembeddedperl</guid>
  1305. <link>https://foursixnine.io//blog/perl/rust/software/c/2024/05/01/ruperlrustwithembeddedperl.html</link>
  1306. <description>&lt;p&gt;Thanks to a colleague who introduced me to Nim during last week’s &lt;a href=&quot;https://www.youtube.com/@suselabs6148/videos&quot;&gt;SUSE Labs conference&lt;/a&gt;, I became a man with a dream, and after fiddling with compiler flags
  1307. and obviously not reading documentation, I finally made it.&lt;/p&gt;
  1308.  
  1309. &lt;p&gt;This is something that shouldn’t exist; from the list of ideas that should never have happened.&lt;/p&gt;
  1310.  
  1311. &lt;blockquote&gt;
  1312.  &lt;p&gt;But it does.
  1313. It’s a Perl interpreter embedded in Rust.
  1314. Get over it.&lt;/p&gt;
  1315. &lt;/blockquote&gt;
  1316.  
  1317. &lt;p&gt;Once cloned, you can run the following commands to see it in action:&lt;/p&gt;
  1318.  
  1319. &lt;ul&gt;
  1320.  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cargo run --verbose -- hello.pm showtime&lt;/code&gt;&lt;/li&gt;
  1321.  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cargo run --verbose -- hello.pm get_quick_headers&lt;/code&gt;&lt;/li&gt;
  1322. &lt;/ul&gt;
  1323.  
  1324. &lt;h2 id=&quot;how-it-works&quot;&gt;How it works&lt;/h2&gt;
  1325.  
  1326. &lt;p&gt;There is a lot of autogenerated code, mainly for two things:&lt;/p&gt;
  1327.  
  1328. &lt;ul&gt;
  1329.  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bindings.rs&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wrapper.h&lt;/code&gt;; I made a lot of assumptions and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;perlxsi.c&lt;/code&gt; may or may not be necessary in the future (see &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;main::xs_init_rust&lt;/code&gt;), depends on how bad or terrible my &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;C&lt;/code&gt; knowledge is by the time you’re reading this.&lt;/li&gt;
  1330.  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;xs_init_rust&lt;/code&gt; function is the one that does the magic, as far as my understanding goes, by hooking up &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;boot_DynaLoader&lt;/code&gt; to &lt;a href=&quot;https://metacpan.org/pod/DynaLoader&quot;&gt;DynaLoader&lt;/a&gt; in Perl via ffi.&lt;/li&gt;
  1331. &lt;/ul&gt;
  1332.  
  1333. &lt;p&gt;With those two bits in place, and thanks to the magic of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bindgen&lt;/code&gt; crate, and after some initialization, I decided to use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Perl_call_argv&lt;/code&gt;, do note that &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Perl_&lt;/code&gt; in this case comes from bindgen, I might change later the convention to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ruperl&lt;/code&gt; or something to avoid confusion between that a and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;perl_parse&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;perl_alloc&lt;/code&gt; which (if I understand correctly) are exposed directly by the ffi interface.&lt;/p&gt;
  1334.  
  1335. &lt;p&gt;What I ended up doing, is passing the same list of arguments (for now, or at least for this PoC), directly to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Perl_call_argv&lt;/code&gt;, which will in turn, take the third argument and pass it verbatim as the &lt;a href=&quot;https://perldoc.perl.org/perlcall#Using-call_argv&quot;&gt;call_argv&lt;/a&gt;&lt;/p&gt;
  1336.  
  1337. &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;        Perl_call_argv(myperl, perl_sub, flags_ptr, perl_parse_args.as_mut_ptr());
  1338. &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  1339.  
  1340. &lt;p&gt;Right now hello.pm defines two sub routines, one to open a file, write something and print the time to stdout, and a second one that will query my blog, and show the headers. This is only example code, but enough
  1341. to demostrate that the DynaLoader works, and that the embedding also works :)&lt;/p&gt;
  1342.  
  1343. &lt;p&gt;&lt;img alt=&quot;itsalive&quot; src=&quot;https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExd3pkbzJweGl3aG8waG0xeHJpZDU5bXQ4bnRqdjlmdGNjdXA1eXRteCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/tze1mGedykiuk/giphy.gif&quot; /&gt;&lt;/p&gt;
  1344.  
  1345. &lt;p&gt;I got most of this working by following the &lt;a href=&quot;https://perldoc.perl.org/perlembed&quot;&gt;perlembed&lt;/a&gt; guide.&lt;/p&gt;
  1346.  
  1347. &lt;h2 id=&quot;why&quot;&gt;Why?&lt;/h2&gt;
  1348.  
  1349. &lt;blockquote&gt;
  1350.  &lt;p&gt;Why not?.&lt;/p&gt;
  1351. &lt;/blockquote&gt;
  1352.  
  1353. &lt;p&gt;I want to see if I can embed also python in the same binary, so I can call native perl, from native python and see how I can fiddle all that into &lt;a href=&quot;https://github.com/os-autoinst/os-autoinst&quot;&gt;os-autoinst&lt;/a&gt;&lt;/p&gt;
  1354.  
  1355. &lt;h2 id=&quot;where-to-find-the-code&quot;&gt;Where to find the code?&lt;/h2&gt;
  1356.  
  1357. &lt;p&gt;On github: https://github.com/foursixnine/ruperl or under https://crates.io/crates/ruperl&lt;/p&gt;</description>
  1358. <pubDate>Wed, 01 May 2024 00:00:00 +0000</pubDate>
  1359. </item>
  1360. <item>
  1361. <title>Dougie Richardson: Ubuntu 24.04 LTS OneDrive</title>
  1362. <guid isPermaLink="false">https://dougiewougie.com/?p=2759</guid>
  1363. <link>https://dougiewougie.com/2024/04/30/ubuntu-24-04-lts-onedrive/</link>
  1364. <description>&lt;p&gt;I’ve not had much time to play around with the latest release but this is cool – OneDrive Nautilus integration.&lt;/p&gt;
  1365.  
  1366.  
  1367.  
  1368. &lt;p&gt;Settings &amp;gt; Online Accounts &amp;gt; Microsoft 365, leave everything blank and hit “Sign in…”. Web page opens to authenticate and then you can mount OneDrive in Nautilus.&lt;/p&gt;
  1369.  
  1370.  
  1371.  
  1372. &lt;p&gt;&lt;img alt=&quot;&quot; /&gt;&lt;/p&gt;</description>
  1373. <pubDate>Tue, 30 Apr 2024 20:22:53 +0000</pubDate>
  1374. </item>
  1375. <item>
  1376. <title>St&amp;eacute;phane Graber: Incus and Ubuntu 24.04 LTS</title>
  1377. <guid isPermaLink="false">https://stgraber.org/?p=1571</guid>
  1378. <link>https://stgraber.org/2024/04/29/incus-and-ubuntu-24-04-lts/</link>
  1379. <description>&lt;p&gt;&lt;a href=&quot;https://canonical.com/blog/canonical-releases-ubuntu-24-04-noble-numbat&quot;&gt;Ubuntu 24.04 LTS&lt;/a&gt; was released just a few days ago and many Ubuntu users will now slowly plan their upgrades, whether it’s going to be over the next few days, weeks, months or years.&lt;/p&gt;
  1380.  
  1381.  
  1382.  
  1383. &lt;figure class=&quot;wp-block-image size-full&quot;&gt;&lt;a href=&quot;https://stgraber.org/wp-content/uploads/2024/04/image-1.png&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-1572&quot; height=&quot;462&quot; src=&quot;https://stgraber.org/wp-content/uploads/2024/04/image-1.png&quot; width=&quot;694&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
  1384.  
  1385.  
  1386.  
  1387. &lt;p&gt;When it comes to running &lt;a href=&quot;https://linuxcontainers.org/incus&quot;&gt;Incus&lt;/a&gt; on Ubuntu 24.04 LTS, there are a few options detailed below.&lt;/p&gt;
  1388.  
  1389.  
  1390.  
  1391. &lt;details class=&quot;wp-block-details is-layout-flow wp-block-details-is-layout-flow&quot;&gt;About Incus
  1392. &lt;p&gt;Incus is a container and virtual machine manager which aims at providing a cloud-like experience but fully self-hosted and capable of running on just about anything, from a single board computer, to a laptop to a cluster of high end servers.&lt;/p&gt;
  1393.  
  1394.  
  1395.  
  1396. &lt;p&gt;Incus was created following Canonical’s decision to make LXD a fully in-house project and it is actively maintained by the same team that once created LXD, almost 10 years ago. It’s part of the &lt;a href=&quot;https://linuxcontainers.org&quot;&gt;Linux Containers&lt;/a&gt; project and so benefits of all the infrastructure and experience in maintaining stable software over decades.&lt;/p&gt;
  1397. &lt;/details&gt;
  1398.  
  1399.  
  1400.  
  1401. &lt;h1 class=&quot;wp-block-heading&quot;&gt;Native Incus packages&lt;/h1&gt;
  1402.  
  1403.  
  1404.  
  1405. &lt;p&gt;&lt;a href=&quot;https://discuss.linuxcontainers.org/c/news/13&quot;&gt;Incus 6.0 LTS&lt;/a&gt; is included directly in the Ubuntu Archive, making it very easy to install:&lt;/p&gt;
  1406.  
  1407.  
  1408.  
  1409. &lt;ul&gt;
  1410. &lt;li&gt;Simple container experience: &lt;code&gt;apt install incus&lt;/code&gt;&lt;/li&gt;
  1411.  
  1412.  
  1413.  
  1414. &lt;li&gt;Container and virtual-machines: &lt;code&gt;apt install incus qemu-system-x86-64&lt;/code&gt;&lt;/li&gt;
  1415.  
  1416.  
  1417.  
  1418. &lt;li&gt;To migrate from LXD: &lt;code&gt;apt install incus-tools&lt;/code&gt;&lt;/li&gt;
  1419. &lt;/ul&gt;
  1420.  
  1421.  
  1422.  
  1423. &lt;figure class=&quot;wp-block-image size-full&quot;&gt;&lt;a href=&quot;https://stgraber.org/wp-content/uploads/2024/04/image-2.png&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-1573&quot; height=&quot;462&quot; src=&quot;https://stgraber.org/wp-content/uploads/2024/04/image-2.png&quot; width=&quot;738&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
  1424.  
  1425.  
  1426.  
  1427. &lt;p&gt;Installing Incus that way is convenient as it doesn’t use external repositories nor does it rely on alternative packaging methods like snaps. That’s also the same set of Incus packages that will be shipped with Debian 13 (Trixie).&lt;/p&gt;
  1428.  
  1429.  
  1430.  
  1431. &lt;p&gt;On the support front, this is using Incus 6.0 LTS and so uses a version of Incus that will be supported upstream for the next 5 years. The package itself is in the &lt;a href=&quot;https://help.ubuntu.com/community/Repositories/Ubuntu&quot;&gt;universe repository&lt;/a&gt; and so doesn’t come with security updates provided by Canonical as part of stock Ubuntu.&lt;/p&gt;
  1432.  
  1433.  
  1434.  
  1435. &lt;p&gt;However Canonical now provides additional security updates to &lt;a href=&quot;https://ubuntu.com/pricing/pro&quot;&gt;Ubuntu Pro&lt;/a&gt; users which includes both security updates and support for all 23000 packages in universe.&lt;/p&gt;
  1436.  
  1437.  
  1438.  
  1439. &lt;h1 class=&quot;wp-block-heading&quot;&gt;Third party Incus packages&lt;/h1&gt;
  1440.  
  1441.  
  1442.  
  1443. &lt;p&gt;An alternative is to use the &lt;a href=&quot;https://github.com/zabbly/incus&quot;&gt;packages that I produce myself&lt;/a&gt;.&lt;/p&gt;
  1444.  
  1445.  
  1446.  
  1447. &lt;p&gt;Those packages are quite different from the ones shipped directly in Ubuntu or Debian as they also directly include the most critical dependencies so that the whole solution can be tested and validated as a single unit.&lt;/p&gt;
  1448.  
  1449.  
  1450.  
  1451. &lt;figure class=&quot;wp-block-image size-full&quot;&gt;&lt;a href=&quot;https://stgraber.org/wp-content/uploads/2024/04/image-3.png&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-1574&quot; height=&quot;462&quot; src=&quot;https://stgraber.org/wp-content/uploads/2024/04/image-3.png&quot; width=&quot;738&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
  1452.  
  1453.  
  1454.  
  1455. &lt;p&gt;That makes it much easier for me to provide timely fixes as well as &lt;a href=&quot;https://zabbly.com/incus/&quot;&gt;commercial support&lt;/a&gt; for users of those packages. It also allows for decoupling the Incus installation/version from the OS version, making major system updates easier.&lt;/p&gt;
  1456.  
  1457.  
  1458.  
  1459. &lt;p&gt;Packages are available for Ubuntu 20.04, 22.04 and now 24.04 LTS as well as Debian 11 and Debian 12.&lt;/p&gt;
  1460.  
  1461.  
  1462.  
  1463. &lt;h1 class=&quot;wp-block-heading&quot;&gt;Moving from LXD&lt;/h1&gt;
  1464.  
  1465.  
  1466.  
  1467. &lt;p&gt;Ubuntu 24.04 LTS ships with LXD 5.21, migrating from LXD 5.21 to Incus 6.0 LTS can be done very easily by running the “lxd-to-incus” command.&lt;/p&gt;
  1468.  
  1469.  
  1470.  
  1471. &lt;figure class=&quot;wp-block-image&quot;&gt;&lt;a href=&quot;https://asciinema.org/a/650718&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://asciinema.org/a/650718.svg&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
  1472.  
  1473.  
  1474.  
  1475. &lt;p&gt;It supports very quickly and reliably migrating data from LXD installations as old as LXD 4.0.0 all the way to and including LXD 5.21.&lt;/p&gt;
  1476.  
  1477.  
  1478.  
  1479. &lt;h1 class=&quot;wp-block-heading&quot;&gt;Running Ubuntu 24.04 LTS on top of Incus&lt;/h1&gt;
  1480.  
  1481.  
  1482.  
  1483. &lt;p&gt;If you’re just looking at using Ubuntu 24.04 LTS but don’t want to upgrade your whole system yet, or you’re running another Linux distribution and just want to experiment with Ubuntu 24.04 LTS, you can easily do that through Incus.&lt;/p&gt;
  1484.  
  1485.  
  1486.  
  1487. &lt;p&gt;Incus has the following images ready for use:&lt;/p&gt;
  1488.  
  1489.  
  1490.  
  1491. &lt;h2 class=&quot;wp-block-heading&quot;&gt;Ubuntu 24.04 LTS base image&lt;/h2&gt;
  1492.  
  1493.  
  1494.  
  1495. &lt;p&gt;Our default Ubuntu 24.04 LTS image. It’s pretty lightweight while still containing most expected tools for day to day operation.&lt;/p&gt;
  1496.  
  1497.  
  1498.  
  1499. &lt;figure class=&quot;wp-block-image size-full&quot;&gt;&lt;a href=&quot;https://stgraber.org/wp-content/uploads/2024/04/image-4.png&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-1575&quot; height=&quot;462&quot; src=&quot;https://stgraber.org/wp-content/uploads/2024/04/image-4.png&quot; width=&quot;738&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
  1500.  
  1501.  
  1502.  
  1503. &lt;p&gt;It’s available for both containers (125MiB compressed) and virtual-machines (270MiB compressed).&lt;/p&gt;
  1504.  
  1505.  
  1506.  
  1507. &lt;h2 class=&quot;wp-block-heading&quot;&gt;Ubuntu 24.04 LTS cloud image&lt;/h2&gt;
  1508.  
  1509.  
  1510.  
  1511. &lt;p&gt;Our &lt;a href=&quot;https://cloud-init.io/&quot;&gt;cloud-init&lt;/a&gt; enabled Ubuntu 24.04 LTS image, it’s basically the same as the default image but with cloud-init enabled for automated provisioning.&lt;/p&gt;
  1512.  
  1513.  
  1514.  
  1515. &lt;figure class=&quot;wp-block-image size-full&quot;&gt;&lt;a href=&quot;https://stgraber.org/wp-content/uploads/2024/04/image-5.png&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-1576&quot; height=&quot;462&quot; src=&quot;https://stgraber.org/wp-content/uploads/2024/04/image-5.png&quot; width=&quot;738&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
  1516.  
  1517.  
  1518.  
  1519. &lt;p&gt;It’s available for both containers (150MiB compressed) and virtual-machines (305MiB compressed).&lt;/p&gt;
  1520.  
  1521.  
  1522.  
  1523. &lt;h2 class=&quot;wp-block-heading&quot;&gt;Ubuntu 24.04 LTS desktop image&lt;/h2&gt;
  1524.  
  1525.  
  1526.  
  1527. &lt;p&gt;Our desktop (Gnome) Ubuntu 24.04 LTS image, it boots directly into a pre-created user account and makes it extremely easy to try the latest Ubuntu Desktop experience.&lt;/p&gt;
  1528.  
  1529.  
  1530.  
  1531. &lt;figure class=&quot;wp-block-video&quot;&gt;&lt;video controls=&quot;controls&quot; src=&quot;https://stgraber.org/wp-content/uploads/2024/04/Screencast-from-2024-04-29-12-00-41.webm&quot;&gt;&lt;/video&gt;&lt;/figure&gt;
  1532.  
  1533.  
  1534.  
  1535. &lt;p&gt;This image is only available as a virtual-machine (1.1GiB compressed).&lt;/p&gt;
  1536.  
  1537.  
  1538.  
  1539. &lt;h1 class=&quot;wp-block-heading&quot;&gt;Conclusion&lt;/h1&gt;
  1540.  
  1541.  
  1542.  
  1543. &lt;p&gt;Hopefully this provided a pretty good overview of how to get Incus up and running on Ubuntu 24.04 LTS, either by moving from an existing LXD installation over to Incus or installing it fresh.&lt;/p&gt;
  1544.  
  1545.  
  1546.  
  1547. &lt;figure class=&quot;wp-block-image size-large&quot;&gt;&lt;a href=&quot;https://stgraber.org/wp-content/uploads/2024/04/image-6.png&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-1578&quot; height=&quot;445&quot; src=&quot;https://stgraber.org/wp-content/uploads/2024/04/image-6-1024x445.png&quot; width=&quot;1024&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
  1548.  
  1549.  
  1550.  
  1551. &lt;p&gt;If you’d just like to learn more about Incus without having to install it locally, our &lt;a href=&quot;https://linuxcontainers.org/incus/try-it/&quot;&gt;online demo service&lt;/a&gt; is as great for that as ever!&lt;/p&gt;
  1552.  
  1553.  
  1554.  
  1555. &lt;p&gt;And if you’re not using Ubuntu on your system, don’t worry, Incus can &lt;a href=&quot;https://linuxcontainers.org/incus/docs/main/installing/&quot;&gt;run on just about anything else too&lt;/a&gt;!&lt;/p&gt;</description>
  1556. <pubDate>Mon, 29 Apr 2024 16:14:37 +0000</pubDate>
  1557.        <enclosure url="https://stgraber.org/wp-content/uploads/2024/04/Screencast-from-2024-04-29-12-00-41.webm" length="0" type="video/webm"/>
  1558. </item>
  1559. <item>
  1560. <title>Alan Pope: The Joy of Code</title>
  1561. <guid isPermaLink="true">https://popey.com/blog/2024/04/the-joy-of-code/</guid>
  1562. <link>https://popey.com/blog/2024/04/the-joy-of-code/</link>
  1563. <description>&lt;p&gt;A few weeks ago, in &lt;a href=&quot;https://linuxmatters.sh/25/&quot;&gt;episode 25&lt;/a&gt; of &lt;a href=&quot;https://linuxmatters.sh/&quot;&gt;Linux Matters Podcast&lt;/a&gt; I brought up the subject of ‘Coding Joy’. This blog post is an expanded follow-up to that segment. Go and listen to that episode - or not - it’s all covered here.&lt;/p&gt;
  1564. &lt;p&gt;&lt;a href=&quot;https://linuxmatters.sh/25/&quot;&gt;&lt;img alt=&quot;The Joy of Linux Torture&quot; src=&quot;https://popey.com/blog/blog/images/2024-02-20/linuxmatters-banner-3000x750_30.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
  1565. &lt;h2 id=&quot;not-a-developer&quot;&gt;Not a Developer&lt;/h2&gt;
  1566. &lt;p&gt;I’ve said this many times - I’ve never considered myself a ‘Developer’. It’s not so much &lt;em&gt;imposter syndrome&lt;/em&gt;, but plain facts. I didn’t attend university to study software engineering, and have never held a job with ‘Engineer’ or Developer’ in the title.&lt;/p&gt;
  1567. &lt;p&gt;(I do have Engineering Manager and Developer Advocate roles in my past, but in &lt;em&gt;popey’s weird set of rules&lt;/em&gt;, those don’t count.)&lt;/p&gt;
  1568. &lt;p&gt;I &lt;em&gt;have&lt;/em&gt; written code over the years. Starting with BASIC on the Sinclair ZX81 and Sinclair Spectrum, I wrote stuff for fun and no financial gain. I also coded in Z80 &amp;amp; 6502 assembler, taught myself Pascal on my Epson 8086 PC in 1990, then &lt;a href=&quot;https://en.wikipedia.org/wiki/QuickBASIC&quot;&gt;QuickBasic&lt;/a&gt; and years later, &lt;a href=&quot;https://en.wikipedia.org/wiki/Blitz_BASIC&quot;&gt;BlitzBasic&lt;/a&gt;, Lua (via &lt;a href=&quot;https://love2d.org/&quot;&gt;LÖVE&lt;/a&gt;) and more.&lt;/p&gt;
  1569. &lt;p&gt;In the workplace, I wrote some alarmingly complex utilities in Windows batch scripts and later Bash shell scripts on Linux. In a past career, I would write ABAP in SAP - which turned into an internal product mildly amusingly called “&lt;em&gt;Alan’s Tool&lt;/em&gt;”.&lt;/p&gt;
  1570. &lt;p&gt;These were pretty much all coding for fun, though. Nobody specced up a project and assigned me as a developer on it. I just picked up the tools and started making something, whether that was a sprite routine in Z80 assembler, an educational CPU simulator in Pascal, or a spreadsheet uploader for SAP BiW.&lt;/p&gt;
  1571. &lt;p&gt;In 2003, three years before Twitter launched in 2006, I made a service called ‘Clunky.net’. It was a bunch of PHP and Perl smashed together and published online with little regard for longevity or security. Users could sign up and send ’tweet’ style messages from their phone via SMS, which would be presented in a reverse-chronological timeline. It didn’t last, but I had fun making it while it did.&lt;/p&gt;
  1572. &lt;p&gt;They were all fun side-quests.&lt;/p&gt;
  1573. &lt;p&gt;None of this makes me a developer.&lt;/p&gt;
  1574. &lt;h2 id=&quot;volatile-memories&quot;&gt;Volatile Memories&lt;/h2&gt;
  1575. &lt;p&gt;It’s rapidly approaching fifty years since I first wrote any code on my &lt;a href=&quot;https://popey.com/blog/blog/2021/03/fourty-years-on/&quot;&gt;first computer&lt;/a&gt;. Back then, you’d typically write code and then either save it on tape (if you were patient) or disk (if you were loaded). Maybe you’d write it down - either before or after you typed it in - or perhaps you’d turn the computer off and lose it all.&lt;/p&gt;
  1576. &lt;p&gt;When I studied for a BTEC National Diploma in Computer Studies at college, one of our classes was on the IBM PC with two floppy disc drives. The lecturer kept hold of all the floppies because we couldn’t be trusted not to lose, damage or forget them. Sometimes the lecturer was held up at the start of class, so we’d be sat twiddling our thumbs for a bit.&lt;/p&gt;
  1577. &lt;p&gt;In those days, when you booted the PC with no floppy inserted, it would go directly into &lt;a href=&quot;https://en.wikipedia.org/wiki/IBM_BASIC#IBM_Advanced_BASIC&quot;&gt;BASICA&lt;/a&gt;, like the 8-bit microcomputers before it. I would frequently start writing something, anything, to pass the time.&lt;/p&gt;
  1578. &lt;p&gt;With no floppy disks on hand, the code - beautiful as it was - would be lost. The lecturer often reset the room when they entered, hitting a big red ‘Stop’ button, which instantly powered down all the computers, losing whatever ‘work’ you’d done.&lt;/p&gt;
  1579. &lt;p&gt;I was probably a little irritated at the moment, just as I would when the &lt;a href=&quot;https://en.wikipedia.org/wiki/RAM_pack&quot;&gt;RAM pack&lt;/a&gt; wobbled on my ZX81, losing everything. You move on, though, and make something else, or get on with your college work, and soon forget about it.&lt;/p&gt;
  1580. &lt;p&gt;Or you bitterly remember it and write a blog post four decades later. Each to their own.&lt;/p&gt;
  1581. &lt;h2 id=&quot;sharing-is-caring&quot;&gt;Sharing is Caring&lt;/h2&gt;
  1582. &lt;p&gt;&lt;em&gt;This part was the main focus of the conversation when we talked about this on the &lt;a href=&quot;https://linuxmatters.sh/25/&quot;&gt;show&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
  1583. &lt;p&gt;In the modern age, over the last ten to fifteen years or so, I’ve not done so much of the kind of coding I wrote about above. I certainly have done &lt;em&gt;some&lt;/em&gt; stuff for work, mostly around packaging other people’s software as snaps or writing noddy little shell scripts. But I lost a lot of the ‘joy’ of coding recently.&lt;/p&gt;
  1584. &lt;p&gt;Why?&lt;/p&gt;
  1585. &lt;p&gt;I think a big part is the expectation that I’d make the code available to others. The public scrutiny others give your code may have been a factor. The pressure I felt that I should put my code out and continue to maintain it rather than throw it over the wall wouldn’t have helped.&lt;/p&gt;
  1586. &lt;p&gt;I think I was so obsessed with doing the ‘right’ thing that coding ‘correctly’ or following standards and making it all maintainable became a cognitive roadblock.&lt;/p&gt;
  1587. &lt;p&gt;I would start writing something and then begin wondering, ‘How would someone package this up?’ and ‘Am I using modern coding standards, toolkits, and frameworks?’ This held me back from the joy of coding in the first place. I was obsessing too much over other people’s opinions of my code and whether someone else could build and run it.&lt;/p&gt;
  1588. &lt;p&gt;I never &lt;em&gt;used&lt;/em&gt; to care about this stuff for personal projects, and it was a lot more joyful an experience - for me.&lt;/p&gt;
  1589. &lt;p&gt;I used to have an idea, pick up a text editor and start coding. I missed that.&lt;/p&gt;
  1590. &lt;h2 id=&quot;realisation&quot;&gt;Realisation&lt;/h2&gt;
  1591. &lt;p&gt;In January this year, &lt;a href=&quot;https://shkspr.mobi/&quot;&gt;Terence Eden&lt;/a&gt; &lt;a href=&quot;https://shkspr.mobi/blog/2024/01/rebuilding-foursquare-for-activitypub-using-openstreetmap/&quot;&gt;wrote&lt;/a&gt; about his escapades making a FourSquare-like service using ActivityPub and OpenStreetMap. When he first mentioned this on Mastodon, I grabbed a copy of the code he shared and had a brief look at it.&lt;/p&gt;
  1592. &lt;p&gt;The code was surprisingly simple, scrappy, kinda working, and written in PHP. I was immediately thrown back twenty years to my terrible ‘Clunky’ code and how much fun it was to throw together.&lt;/p&gt;
  1593. &lt;p&gt;In February, I bumped into Terence at &lt;a href=&quot;https://stateofopencon.com/&quot;&gt;State of Open Con&lt;/a&gt; in London and took the opportunity to quiz him about his creation. We discussed his choice of technology (PHP), and the simple ’thrown together in a day’ nature of the project.&lt;/p&gt;
  1594. &lt;p&gt;At that point, I had a bit of a light-bulb moment, realising that I could get back to joyful coding. I don’t have to share everything; not every project needs to be an Open-Source Opus.&lt;/p&gt;
  1595. &lt;p&gt;I &lt;em&gt;can&lt;/em&gt; open a text editor, type some code, and enjoy it, and that’s &lt;em&gt;enough&lt;/em&gt;.&lt;/p&gt;
  1596. &lt;h2 id=&quot;joy-rediscovered&quot;&gt;Joy Rediscovered&lt;/h2&gt;
  1597. &lt;p&gt;I had an idea for a web application and wanted to prototype something without too much technological research or overhead. So I created a folder on my home server, ran &lt;code&gt;php -S 0.0.0.0:9000&lt;/code&gt; in a terminal there, made a skeleton &lt;code&gt;index.php&lt;/code&gt; and pointed a browser at the address. Boom! Application created!&lt;/p&gt;
  1598. &lt;p&gt;I created some horribly insecure and probably unmaintainable PHP that will almost certainly never see the light of day.&lt;/p&gt;
  1599. &lt;p&gt;I had fun doing it though. Which is really the whole point.&lt;/p&gt;
  1600. &lt;p&gt;More side-quests, fewer grand plans.&lt;/p&gt;</description>
  1601. <pubDate>Sat, 27 Apr 2024 08:00:00 +0000</pubDate>
  1602. </item>
  1603. <item>
  1604. <title>Alan Pope: Do you know Simone?</title>
  1605. <guid isPermaLink="true">https://popey.com/blog/2024/04/do-you-know-simone/</guid>
  1606. <link>https://popey.com/blog/2024/04/do-you-know-simone/</link>
  1607. <description>&lt;p&gt;Over coffee this morning, I stumbled upon &lt;a href=&quot;https://github.com/rajtilakjee/simone&quot;&gt;simone&lt;/a&gt;, a fledgling Open-Source tool for repurposing YouTube videos as blog posts. The Python tool creates a text summary of the video and extracts some contextual frames to illustrate the text.&lt;/p&gt;
  1608. &lt;p&gt;A neat idea! In my experience, software engineers are often tasked with making demonstration videos, but other engineers commonly prefer consuming the written word over watching a video. I took simone for a spin, to see how well it works. Scroll down and tell me what you think!&lt;/p&gt;
  1609. &lt;p&gt;I was sat in front of my work laptop, which is a mac, so roughly speaking, this is what I did:&lt;/p&gt;
  1610. &lt;ul&gt;
  1611. &lt;li&gt;Install host pre-requisites&lt;/li&gt;
  1612. &lt;/ul&gt;
  1613. &lt;div class=&quot;highlight&quot;&gt;&lt;pre tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt;$ brew install ffmpeg tesseract virtualenv
  1614. &lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
  1615. &lt;li&gt;Get &lt;a href=&quot;https://github.com/rajtilakjee/simone&quot;&gt;simone&lt;/a&gt;&lt;/li&gt;
  1616. &lt;/ul&gt;
  1617. &lt;div class=&quot;highlight&quot;&gt;&lt;pre tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt;git clone https://github.com/rajtilakjee/simone
  1618. &lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
  1619. &lt;li&gt;Get a free API key from &lt;a href=&quot;https://openrouter.ai/&quot;&gt;OpenRouter&lt;/a&gt;&lt;/li&gt;
  1620. &lt;li&gt;Put the API key in &lt;code&gt;.env&lt;/code&gt;&lt;/li&gt;
  1621. &lt;/ul&gt;
  1622. &lt;div class=&quot;highlight&quot;&gt;&lt;pre tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt;GEMMA_API_KEY=sk-or-v1-0000000000000000000000000000000000000000000000000000000000000000
  1623. &lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
  1624. &lt;li&gt;Install python requisites&lt;/li&gt;
  1625. &lt;/ul&gt;
  1626. &lt;div class=&quot;highlight&quot;&gt;&lt;pre tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt;$ cd simone
  1627. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt;$ virtualenv .venv
  1628. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt;$ source .venv/bin/activate
  1629. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;.venv&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt; $ pip install -r requirements.txt
  1630. &lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
  1631. &lt;li&gt;Run it!&lt;/li&gt;
  1632. &lt;/ul&gt;
  1633. &lt;div class=&quot;highlight&quot;&gt;&lt;pre tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;.venv&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt; $ python src/main.py
  1634. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt;Enter YouTube URL: https://www.youtube.com/watch?v&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;VDIAHEoECfM
  1635. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt;/Users/alan/Work/rajtilakjee/simone/.venv/lib/python3.12/site-packages/whisper/transcribe.py:115: UserWarning: FP16 is not supported on CPU; using FP32 instead
  1636. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt; warnings.warn&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;FP16 is not supported on CPU; using FP32 instead&quot;&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;
  1637. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt;Traceback &lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;most recent call last&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;:
  1638. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt; File &lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;/Users/alan/Work/rajtilakjee/simone/.venv/lib/python3.12/site-packages/pytesseract/pytesseract.py&quot;&lt;/span&gt;, line 255, in run_tesseract
  1639. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt; proc &lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt; subprocess.Popen&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;cmd_args, **subprocess_args&lt;span style=&quot;color: #f92672;&quot;&gt;())&lt;/span&gt;
  1640. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  1641. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt; File &lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;/opt/homebrew/Cellar/python@3.12/3.12.3/Frameworks/Python.framework/Versions/3.12/lib/python3.12/subprocess.py&quot;&lt;/span&gt;, line 1026, in __init__
  1642. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt; self._execute_child&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;args, executable, preexec_fn, close_fds,
  1643. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt; File &lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;/opt/homebrew/Cellar/python@3.12/3.12.3/Frameworks/Python.framework/Versions/3.12/lib/python3.12/subprocess.py&quot;&lt;/span&gt;, line 1955, in _execute_child
  1644. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt; raise child_exception_type&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;errno_num, err_msg, err_filename&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;
  1645. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt;FileNotFoundError: &lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;Errno 2&lt;span style=&quot;color: #f92672;&quot;&gt;]&lt;/span&gt; No such file or directory: &lt;span style=&quot;color: #e6db74;&quot;&gt;'C:/Program Files/Tesseract-OCR/tesseract.exe'&lt;/span&gt;
  1646. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt;
  1647. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt;During handling of the above exception, another exception occurred:
  1648. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt;
  1649. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt;Traceback &lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;most recent call last&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;:
  1650. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt; File &lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;/Users/alan/Work/rajtilakjee/simone/src/main.py&quot;&lt;/span&gt;, line 47, in &amp;lt;module&amp;gt;
  1651. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt; blogpost&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;url&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;
  1652. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt; File &lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;/Users/alan/Work/rajtilakjee/simone/src/main.py&quot;&lt;/span&gt;, line 39, in blogpost
  1653. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt; score &lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt; scores.score_frames&lt;span style=&quot;color: #f92672;&quot;&gt;()&lt;/span&gt;
  1654. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt; ^^^^^^^^^^^^^^^^^^^^^
  1655. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt; File &lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;/Users/alan/Work/rajtilakjee/simone/src/utils/scorer.py&quot;&lt;/span&gt;, line 20, in score_frames
  1656. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt; extracted_text &lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt; pytesseract.image_to_string&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;
  1657. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  1658. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt; File &lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;/Users/alan/Work/rajtilakjee/simone/.venv/lib/python3.12/site-packages/pytesseract/pytesseract.py&quot;&lt;/span&gt;, line 423, in image_to_string
  1659. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt; &lt;span style=&quot;color: #66d9ef;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #f92672;&quot;&gt;{&lt;/span&gt;
  1660. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt; ^
  1661. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt; File &lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;/Users/alan/Work/rajtilakjee/simone/.venv/lib/python3.12/site-packages/pytesseract/pytesseract.py&quot;&lt;/span&gt;, line 426, in &amp;lt;lambda&amp;gt;
  1662. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt; Output.STRING: lambda: run_and_get_output&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;*args&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;,
  1663. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt; ^^^^^^^^^^^^^^^^^^^^^^^^^
  1664. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt; File &lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;/Users/alan/Work/rajtilakjee/simone/.venv/lib/python3.12/site-packages/pytesseract/pytesseract.py&quot;&lt;/span&gt;, line 288, in run_and_get_output
  1665. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt; run_tesseract&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;**kwargs&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;
  1666. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt; File &lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;/Users/alan/Work/rajtilakjee/simone/.venv/lib/python3.12/site-packages/pytesseract/pytesseract.py&quot;&lt;/span&gt;, line 260, in run_tesseract
  1667. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt; raise TesseractNotFoundError&lt;span style=&quot;color: #f92672;&quot;&gt;()&lt;/span&gt;
  1668. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt;pytesseract.pytesseract.TesseractNotFoundError: C:/Program Files/Tesseract-OCR/tesseract.exe is not installed or it&lt;span style=&quot;color: #960050; background-color: #1e0010;&quot;&gt;'&lt;/span&gt;s not in your PATH. See README file &lt;span style=&quot;color: #66d9ef;&quot;&gt;for&lt;/span&gt; more information.
  1669. &lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
  1670. &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=3w-2gUSus34&quot;&gt;Oof&lt;/a&gt;!&lt;/li&gt;
  1671. &lt;li&gt;File a &lt;a href=&quot;https://github.com/rajtilakjee/simone/issues/7&quot;&gt;bug&lt;/a&gt; (like a good Open Source citizen)&lt;/li&gt;
  1672. &lt;li&gt;Locally patch the &lt;a href=&quot;https://github.com/rajtilakjee/simone/blob/main/src/utils/scorer.py#L15&quot;&gt;file&lt;/a&gt; and try again&lt;/li&gt;
  1673. &lt;/ul&gt;
  1674. &lt;div class=&quot;highlight&quot;&gt;&lt;pre tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;.venv&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt; python src/main.py
  1675. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt;Enter YouTube URL: https://www.youtube.com/watch?v&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;VDIAHEoECfM
  1676. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt;/Users/alan/Work/rajtilakjee/simone/.venv/lib/python3.12/site-packages/whisper/transcribe.py:115: UserWarning: FP16 is not supported on CPU; using FP32 instead
  1677. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt; warnings.warn&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;FP16 is not supported on CPU; using FP32 instead&quot;&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;
  1678. &lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
  1679. &lt;li&gt;Look for results&lt;/li&gt;
  1680. &lt;/ul&gt;
  1681. &lt;div class=&quot;highlight&quot;&gt;&lt;pre tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;.venv&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt; $ ls -l generated_blogpost.txt *.jpg
  1682. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt;-rw-r--r-- &lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt; alan staff &lt;span style=&quot;color: #ae81ff;&quot;&gt;2163&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;26&lt;/span&gt; Apr 09:26 generated_blogpost.txt
  1683. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt;-rw-r--r--@ &lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt; alan staff &lt;span style=&quot;color: #ae81ff;&quot;&gt;132984&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;26&lt;/span&gt; Apr 09:27 top_frame_4_score_106.jpg
  1684. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt;-rw-r--r-- &lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt; alan staff &lt;span style=&quot;color: #ae81ff;&quot;&gt;184705&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;26&lt;/span&gt; Apr 09:27 top_frame_5_score_105.jpg
  1685. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display: flex;&quot;&gt;&lt;span&gt;-rw-r--r-- &lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt; alan staff &lt;span style=&quot;color: #ae81ff;&quot;&gt;126148&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;26&lt;/span&gt; Apr 09:27 top_frame_9_score_101.jpg
  1686. &lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
  1687. &lt;li&gt;&lt;a href=&quot;https://youtu.be/a1xjcyyuDM0?si=co6zN_17UIb_3HB4&amp;amp;t=60&quot;&gt;Drink your weak lemon drink now&lt;/a&gt;! (to wash away the foul taste of computer lies in your honest hobby gullet)&lt;/li&gt;
  1688. &lt;/ul&gt;
  1689. &lt;p&gt;In my test I pointed simone at a short &lt;a href=&quot;https://www.youtube.com/watch?v=VDIAHEoECfM&quot;&gt;demo video&lt;/a&gt; from my employer, &lt;a href=&quot;https://anchore.com/&quot;&gt;Anchore’s&lt;/a&gt; &lt;a href=&quot;https://www.youtube.com/@Anchore&quot;&gt;YouTube channel&lt;/a&gt;. The results are below, with no editing, I even included the typos. The images at the bottom of this post are frames from the video that simone selected.&lt;/p&gt;
  1690. &lt;hr /&gt;
  1691. &lt;h2 id=&quot;ancors-static-stick-checker-tool-demo-evaluating-and-resolving-security-findings&quot;&gt;Ancors Static Stick Checker Tool Demo: Evaluating and Resolving Security Findings&lt;/h2&gt;
  1692. &lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;
  1693. &lt;p&gt;Static stick checker tool helps developers identify security vulnerabilities in Docker images by running open-source security checks and generating remediation recommendations. This blog post summarizes a live demo of the tool’s capabilities.&lt;/p&gt;
  1694. &lt;p&gt;&lt;strong&gt;How it works&lt;/strong&gt;&lt;/p&gt;
  1695. &lt;p&gt;The tool works by:&lt;/p&gt;
  1696. &lt;ul&gt;
  1697. &lt;li&gt;Downloading and analyzing the Docker image.&lt;/li&gt;
  1698. &lt;li&gt;Detecting the base operating system distribution and selecting the appropriate stick profile.&lt;/li&gt;
  1699. &lt;li&gt;Running open-source security checks on the image.&lt;/li&gt;
  1700. &lt;li&gt;Generating a report of identified vulnerabilities and remediation actions.&lt;/li&gt;
  1701. &lt;/ul&gt;
  1702. &lt;p&gt;&lt;strong&gt;Demo Walkthrough&lt;/strong&gt;&lt;/p&gt;
  1703. &lt;p&gt;The demo showcases the following steps:&lt;/p&gt;
  1704. &lt;ul&gt;
  1705. &lt;li&gt;&lt;strong&gt;Image preparation:&lt;/strong&gt; Uploading a Docker image to a registry.&lt;/li&gt;
  1706. &lt;li&gt;&lt;strong&gt;Tool execution:&lt;/strong&gt; Running the static stick checker tool against the image.&lt;/li&gt;
  1707. &lt;li&gt;&lt;strong&gt;Results viewing:&lt;/strong&gt; Analyzing the generated stick results and identifying vulnerabilities.&lt;/li&gt;
  1708. &lt;li&gt;&lt;strong&gt;Remediation:&lt;/strong&gt; Implementing suggested remediation actions by modifying the Dockerfile.&lt;/li&gt;
  1709. &lt;li&gt;&lt;strong&gt;Re-checking:&lt;/strong&gt; Running the tool again to verify that the fixes have been effective.&lt;/li&gt;
  1710. &lt;/ul&gt;
  1711. &lt;p&gt;&lt;strong&gt;Key findings&lt;/strong&gt;&lt;/p&gt;
  1712. &lt;ul&gt;
  1713. &lt;li&gt;The static stick checker tool identified vulnerabilities in the Docker image in areas such as:
  1714. &lt;ul&gt;
  1715. &lt;li&gt;Verifying file hash integrity.&lt;/li&gt;
  1716. &lt;li&gt;Configuring cryptography policy.&lt;/li&gt;
  1717. &lt;li&gt;Verifying file permissions.&lt;/li&gt;
  1718. &lt;/ul&gt;
  1719. &lt;/li&gt;
  1720. &lt;li&gt;Remediation scripts were provided to address each vulnerability.&lt;/li&gt;
  1721. &lt;li&gt;By implementing the recommended changes, the security posture of the Docker image was improved.&lt;/li&gt;
  1722. &lt;/ul&gt;
  1723. &lt;p&gt;&lt;strong&gt;Benefits of using the static stick checker tool&lt;/strong&gt;&lt;/p&gt;
  1724. &lt;ul&gt;
  1725. &lt;li&gt;Identify security vulnerabilities early in the development process.&lt;/li&gt;
  1726. &lt;li&gt;Automate the remediation process.&lt;/li&gt;
  1727. &lt;li&gt;Shift security checks leftward in the development pipeline.&lt;/li&gt;
  1728. &lt;li&gt;Reduce the burden on security teams by addressing vulnerabilities before deployment.&lt;/li&gt;
  1729. &lt;/ul&gt;
  1730. &lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;
  1731. &lt;p&gt;The Ancors static stick checker tool provides a valuable tool for developers to improve the security of their Docker images. By proactively addressing vulnerabilities during the development process, organizations can ensure their applications are secure and reduce the risk of security incidents&lt;/p&gt;
  1732. &lt;hr /&gt;
  1733. &lt;p&gt;Here’s the images it pulled out:&lt;/p&gt;
  1734. &lt;p&gt;&lt;a href=&quot;https://popey.com/blog/blog/images/2024-04-26/top_frame_4_score_106.jpg&quot;&gt;&lt;img alt=&quot;First image taken from the video&quot; src=&quot;https://popey.com/blog/blog/images/2024-04-26/top_frame_4_score_106.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
  1735. &lt;p&gt;&lt;a href=&quot;https://popey.com/blog/blog/images/2024-04-26/top_frame_5_score_105.jpg&quot;&gt;&lt;img alt=&quot;Second image taken from the video&quot; src=&quot;https://popey.com/blog/blog/images/2024-04-26/top_frame_5_score_105.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
  1736. &lt;p&gt;&lt;a href=&quot;https://popey.com/blog/blog/images/2024-04-26/top_frame_9_score_101.jpg&quot;&gt;&lt;img alt=&quot;Third image taken from the video&quot; src=&quot;https://popey.com/blog/blog/images/2024-04-26/top_frame_9_score_101.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
  1737. &lt;p&gt;Not bad! It could be better - getting the company name wrong, for one!&lt;/p&gt;
  1738. &lt;p&gt;I can imagine using this to create a YouTube description, or use it as a skeleton from which a blog post could be created. I certainly wouldn’t just pipe the output of this into blog posts! But so many videos need better descriptions, and this could help!&lt;/p&gt;</description>
  1739. <pubDate>Fri, 26 Apr 2024 09:00:00 +0000</pubDate>
  1740. </item>
  1741. <item>
  1742. <title>Kubuntu General News: Kubuntu 24.04 LTS Noble Numbat Released</title>
  1743. <guid isPermaLink="false">https://kubuntu.org/?p=5188</guid>
  1744. <link>https://kubuntu.org/news/kubuntu-24-04-lts-noble-numbat-released/</link>
  1745. <description>&lt;p&gt;The Kubuntu Team is happy to announce that Kubuntu 24.04 has been released, featuring the ‘beautiful’ &lt;a href=&quot;https://kde.org/announcements/plasma/5/5.27.0/&quot;&gt;KDE Plasma 5.27&lt;/a&gt; simple by default, powerful when needed.&lt;/p&gt;
  1746.  
  1747.  
  1748.  
  1749. &lt;p id=&quot;block-7a60819d-73c4-4669-ad66-0d72354bb4eb&quot;&gt;Codenamed “Noble Numbat”, Kubuntu 24.04 continues our tradition of giving you Friendly Computing by integrating the latest and greatest open source technologies into a high-quality, easy-to-use Linux distribution.&lt;/p&gt;
  1750.  
  1751.  
  1752.  
  1753. &lt;p id=&quot;block-fcdac755-cc4d-48d7-b423-e5093ab4df49&quot;&gt;Under the hood, there have been updates to many core packages, including a new 6.8-based kernel, &lt;a data-type=&quot;URL&quot; href=&quot;https://kde.org/announcements/frameworks/5/5.115.0/&quot;&gt;KDE Frameworks 5.115&lt;/a&gt;, &lt;a href=&quot;https://kde.org/announcements/plasma/5/5.27.11/&quot;&gt;KDE Plasma 5.27&lt;/a&gt; and &lt;a href=&quot;https://kde.org/announcements/gear/23.08.0/&quot;&gt;KDE Gear 23.08&lt;/a&gt;.&lt;/p&gt;
  1754.  
  1755.  
  1756.  
  1757. &lt;figure class=&quot;wp-block-image size-full&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-5190&quot; height=&quot;800&quot; src=&quot;https://kubuntu.org/wp-content/uploads/2024/04/7368/NoblePlasma.jpg&quot; width=&quot;1280&quot; /&gt;Kubuntu 24.04 with Plasma 5.27.11&lt;/figure&gt;
  1758.  
  1759.  
  1760.  
  1761. &lt;p id=&quot;block-9e41f240-318b-4dca-b85c-e4c1f6a6cfcc&quot;&gt;Kubuntu has seen many updates for other applications, both in our default install, and installable from the Ubuntu archive.&lt;/p&gt;
  1762.  
  1763.  
  1764.  
  1765. &lt;p id=&quot;block-a60defe4-5c80-44d9-a920-16ca87ac229f&quot;&gt;Haruna, Krita, Kdevelop, Yakuake, and many many more applications are updated.&lt;/p&gt;
  1766.  
  1767.  
  1768.  
  1769. &lt;p id=&quot;block-148f21b1-28b1-4c3d-844e-2a92e9db4fef&quot;&gt;Applications for core day-to-day usage are included and updated, such as Firefox, and LibreOffice.&lt;/p&gt;
  1770.  
  1771.  
  1772.  
  1773. &lt;p id=&quot;block-d78ec940-18ee-4cf1-a5ec-8f332cbb9581&quot;&gt;For a list of other application updates, and known bugs be sure to read our &lt;a href=&quot;https://wiki.ubuntu.com/NobleNumbat/ReleaseNotes/Kubuntu&quot;&gt;release notes&lt;/a&gt;.&lt;/p&gt;
  1774.  
  1775.  
  1776.  
  1777. &lt;p id=&quot;block-834ae2db-c972-4655-8037-916673c7b671&quot;&gt;&lt;a href=&quot;https://kubuntu.org/getkubuntu/&quot;&gt;Download Kubuntu 24.04&lt;/a&gt;, or &lt;a href=&quot;https://help.ubuntu.com/community/NobleUpgrades/Kubuntu&quot;&gt;learn how to upgrade from 23.10 or 22.04 LTS&lt;/a&gt;.&lt;/p&gt;
  1778.  
  1779.  
  1780.  
  1781. &lt;p id=&quot;block-0373fb35-d2f5-4e0a-b1f4-fd3bd9c16b0c&quot;&gt;&lt;strong&gt;Note: For upgrades from 23.10, there may a delay of a few hours to days between the official release announcements and the Ubuntu Release Team enabling upgrades.&lt;/strong&gt;&lt;/p&gt;</description>
  1782. <pubDate>Thu, 25 Apr 2024 16:16:27 +0000</pubDate>
  1783. </item>
  1784. <item>
  1785. <title>Ubuntu Studio: Ubuntu Studio 24.04 LTS Released</title>
  1786. <guid isPermaLink="false">https://ubuntustudio.org/?p=2761</guid>
  1787. <link>https://ubuntustudio.org/2024/04/ubuntu-studio-24-04-lts-released/</link>
  1788. <description>&lt;div class=&quot;wp-block-image&quot;&gt;&lt;figure class=&quot;aligncenter size-full&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-2763&quot; height=&quot;297&quot; src=&quot;https://ubuntustudio.org/wp-content/uploads/2024/04/0a09/finalbanner.png&quot; width=&quot;800&quot; /&gt;&lt;/figure&gt;&lt;/div&gt;
  1789.  
  1790.  
  1791.  
  1792. &lt;p id=&quot;block-08eb94aa-8521-4ed2-adb1-72f6f4094411&quot;&gt;The Ubuntu Studio team is pleased to announce the release of Ubuntu Studio 24.04 LTS, code-named “Noble Numbat”. This marks Ubuntu Studio’s 34th release. This release is a Long-Term Support release and as such, it is supported for 3 years (36 months, until April 2027).&lt;/p&gt;
  1793.  
  1794.  
  1795.  
  1796. &lt;p id=&quot;block-895e2f57-e719-450c-a4c8-9405017a7e75&quot;&gt;Since it’s just out, you may experience some issues, so you might want to wait a bit before upgrading. Please see the &lt;a href=&quot;https://ubuntustudio.org/ubuntu-studio-24-04-LTS-release-notes/&quot;&gt;release notes&lt;/a&gt; for a more complete list of changes and known issues. Listed here are some of the major highlights.&lt;/p&gt;
  1797.  
  1798.  
  1799.  
  1800. &lt;div class=&quot;wp-block-image&quot;&gt;&lt;figure class=&quot;aligncenter size-full is-resized&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-2771&quot; height=&quot;383&quot; src=&quot;https://ubuntustudio.org/wp-content/uploads/2024/04/05d2/VirtualBox_ISOTest_22_04_2024_13_18_58.png&quot; width=&quot;681&quot; /&gt;&lt;/figure&gt;&lt;/div&gt;
  1801.  
  1802.  
  1803.  
  1804. &lt;p id=&quot;block-aef9a406-e305-4f97-a130-f522c2f1ce7e&quot;&gt;You can download Ubuntu Studio 24.04 LTS from our &lt;a href=&quot;https://ubuntustudio.org/download&quot;&gt;download page&lt;/a&gt;.&lt;/p&gt;
  1805.  
  1806.  
  1807.  
  1808. &lt;h2 id=&quot;block-6ca66e3a-8d42-42a8-a0cf-a8ed86e6025f&quot;&gt;Special Notes&lt;/h2&gt;
  1809.  
  1810.  
  1811.  
  1812. &lt;p id=&quot;block-708043b1-523e-4fb9-92ca-720e3316371a&quot;&gt;The Ubuntu Studio 24.04 LTS 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 &lt;a href=&quot;https://ubuntu.com/tutorials/create-a-usb-stick-on-ubuntu#1-overview&quot;&gt;creating a bootable USB stick&lt;/a&gt; with the ISO image or burning to a Dual-Layer DVD.&lt;/p&gt;
  1813.  
  1814.  
  1815.  
  1816. &lt;p&gt;Minimum installation media requirements: Dual-Layer DVD or 8GB USB drive.&lt;/p&gt;
  1817.  
  1818.  
  1819.  
  1820. &lt;p id=&quot;block-fa4be379-b904-4919-9502-c73469ca31ef&quot;&gt;Images can be obtained from this link: &lt;a href=&quot;https://cdimage.ubuntu.com/ubuntustudio/releases/24.04/beta/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;https://cdimage.ubuntu.com/ubuntustudio/releases/24.04/beta/&lt;/a&gt;&lt;/p&gt;
  1821.  
  1822.  
  1823.  
  1824. &lt;p id=&quot;block-bf39c734-e080-4549-9621-044e9241d48c&quot;&gt;Full updated information, including &lt;strong&gt;Upgrade Instructions,&lt;/strong&gt; are available in the &lt;strong&gt;&lt;a href=&quot;https://ubuntustudio.org/ubuntu-studio-24-04-LTS-release-notes/&quot;&gt;Release Notes&lt;/a&gt;&lt;/strong&gt;&lt;a href=&quot;https://wiki.ubuntu.com/GroovyGorilla/Beta/UbuntuStudio&quot;&gt;.&lt;/a&gt;&lt;/p&gt;
  1825.  
  1826.  
  1827.  
  1828. &lt;p&gt;&lt;strong&gt;Please note that upgrading from 22.04 before the release of 24.04.1,&lt;/strong&gt; &lt;strong&gt;due August 2024, is unsupported.&lt;/strong&gt;&lt;/p&gt;
  1829.  
  1830.  
  1831.  
  1832. &lt;p&gt;Upgrades from 23.10 should be enabled within a month after release, so we appreciate your patience.&lt;/p&gt;
  1833.  
  1834.  
  1835.  
  1836. &lt;h2&gt;New This Release&lt;/h2&gt;
  1837.  
  1838.  
  1839.  
  1840. &lt;h3&gt;All-New System Installer&lt;/h3&gt;
  1841.  
  1842.  
  1843.  
  1844. &lt;div class=&quot;wp-block-image&quot;&gt;&lt;figure class=&quot;alignright size-full is-resized&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-2765&quot; height=&quot;199&quot; src=&quot;https://ubuntustudio.org/wp-content/uploads/2024/04/5d73/VirtualBox_ISOTest_22_04_2024_10_00_48.png&quot; width=&quot;317&quot; /&gt;&lt;/figure&gt;&lt;/div&gt;
  1845.  
  1846.  
  1847.  
  1848. &lt;p&gt;In cooperation with the Ubuntu Desktop Team, we have an all-new Desktop installer. This installer uses the underlying code of the Ubuntu Server installer (“Subiquity”) which has been in-use for years, with a frontend coded in “Flutter”. This took a large amount of work for this release, and we were able to help a lot of other official Ubuntu flavors transition to this new installer.&lt;/p&gt;
  1849.  
  1850.  
  1851.  
  1852. &lt;p&gt;Be on the lookout for a special easter egg when the graphical environment for the installer first starts. For those of you who have been long-time users of Ubuntu Studio since our early days (even before Xfce!), you will notice exactly what it is.&lt;/p&gt;
  1853.  
  1854.  
  1855.  
  1856. &lt;h3&gt;PipeWire 1.0.4&lt;/h3&gt;
  1857.  
  1858.  
  1859.  
  1860. &lt;div class=&quot;wp-block-image&quot;&gt;&lt;figure class=&quot;alignright size-full is-resized&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-2766&quot; height=&quot;70&quot; src=&quot;https://ubuntustudio.org/wp-content/uploads/2024/04/be34/Pipewire_logo.svg_.png&quot; width=&quot;324&quot; /&gt;&lt;/figure&gt;&lt;/div&gt;
  1861.  
  1862.  
  1863.  
  1864. &lt;p&gt;Now for the big one: PipeWire is now mature, and this release contains &lt;strong&gt;PipeWire 1.0&lt;/strong&gt;. With PipeWire 1.0 comes the stability and compatibility you would expect from multimedia audio. In fact, at this point, &lt;strong&gt;we recommend PipeWire usage for both Professional, Prosumer, and Everyday audio needs&lt;/strong&gt;. At Ubuntu Summit 2023 in Riga, Latvia, our project leader Erich Eickmeyer used PipeWire to demonstrate live audio mixing with much success and has since done some audio mastering work using it. JACK developers even consider it to be “JACK 3”.&lt;/p&gt;
  1865.  
  1866.  
  1867.  
  1868. &lt;p&gt;PipeWire’s JACK compatibility is configured to use out-of-the-box and is zero-latency internally. System latency is configurable via Ubuntu Studio Audio Configuration.&lt;/p&gt;
  1869.  
  1870.  
  1871.  
  1872. &lt;p&gt;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.&lt;/p&gt;
  1873.  
  1874.  
  1875.  
  1876. &lt;p&gt;With this, we consider audio production with Ubuntu Studio so mature that it can now rival operating systems such as macOS and Windows in ease-of-use since it’s ready to go out-of-the-box.&lt;/p&gt;
  1877.  
  1878.  
  1879.  
  1880. &lt;h4&gt;Deprecation of PulseAudio/JACK setup/Studio Controls&lt;/h4&gt;
  1881.  
  1882.  
  1883.  
  1884. &lt;p&gt;Due to the maturity of PipeWire, we now consider the traditional PulseAudio/JACK setup, where JACK would be started/stopped by Studio Controls and bridged to PulseAudio, deprecated. This configuration is still installable via Ubuntu Studio Audio Configuration, but we do not recommend it. Studio Controls may return someday as a PipeWire fine-tuning solution, but for now it is unsupported by the developer. &lt;strong&gt;For that reason, we recommend users not use this configuration. If you do, it is at your own risk and no support will be given.&lt;/strong&gt; In fact, it’s likely to be dropped for 24.10.&lt;/p&gt;
  1885.  
  1886.  
  1887.  
  1888. &lt;h3&gt;Ardour 8.4&lt;/h3&gt;
  1889.  
  1890.  
  1891.  
  1892. &lt;div class=&quot;wp-block-image&quot;&gt;&lt;figure class=&quot;alignright size-full is-resized&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-1977&quot; height=&quot;73&quot; src=&quot;https://ubuntustudio.org/wp-content/uploads/2020/06/2a76/ardour.png&quot; width=&quot;84&quot; /&gt;&lt;/figure&gt;&lt;/div&gt;
  1893.  
  1894.  
  1895.  
  1896. &lt;p&gt;While this does not represent the latest release of Ardour, Ardour 8.4 is a great release. If you would like the latest release, we highly recommend &lt;a href=&quot;https://community.ardour.org/download?platform=linux&amp;amp;architecture=x86_64&amp;amp;type=compiled&amp;amp;paymentSelection=options&quot;&gt;purchasing one-time or subscribing to Ardour&lt;/a&gt; directly from the developers to help support this wonderful application. Also, for that reason, this will be an application we will not directly backport. More on that later.&lt;/p&gt;
  1897.  
  1898.  
  1899.  
  1900. &lt;div class=&quot;wp-block-image&quot;&gt;&lt;figure class=&quot;alignright size-full is-resized&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-2767&quot; height=&quot;261&quot; src=&quot;https://ubuntustudio.org/wp-content/uploads/2024/04/f162/Screenshot_20240422_104529.png&quot; width=&quot;361&quot; /&gt;&lt;/figure&gt;&lt;/div&gt;
  1901.  
  1902.  
  1903.  
  1904. &lt;h3&gt;Ubuntu Studio Audio Configuration&lt;/h3&gt;
  1905.  
  1906.  
  1907.  
  1908. &lt;p&gt;Ubuntu Studio Audio Configuration has undergone a UI overhaul and contains the ability to start and stop a Dummy Audio Device which can also be configured to start or stop upon login. When assigned as the default, this will free-up channels that would normally be assigned to your system audio to be assigned to a null device.&lt;/p&gt;
  1909.  
  1910.  
  1911.  
  1912. &lt;h3&gt;Meta Package for Music Education&lt;/h3&gt;
  1913.  
  1914.  
  1915.  
  1916. &lt;p&gt;In cooperation with &lt;a href=&quot;https://edubuntu.org&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Edubuntu&lt;/a&gt;, we have created a metapackage for music education. This package is installable from &lt;strong&gt;Ubuntu Studio Installer&lt;/strong&gt; and includes the following packages:&lt;/p&gt;
  1917.  
  1918.  
  1919.  
  1920. &lt;div class=&quot;wp-block-image&quot;&gt;&lt;figure class=&quot;alignright size-full is-resized&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-2768&quot; height=&quot;85&quot; src=&quot;https://ubuntustudio.org/wp-content/uploads/2024/04/8560/Edbuntu-logo-2022_RGB.png&quot; width=&quot;311&quot; /&gt;&lt;/figure&gt;&lt;/div&gt;
  1921.  
  1922.  
  1923.  
  1924. &lt;ul&gt;&lt;li&gt;&lt;strong&gt;FMIT&lt;/strong&gt;: Free Musical Instrument Tuner, a tool for tuning musical Instruments (also included by default)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;GNOME Metronome&lt;/strong&gt;: Exactly what it sounds like (pun unintended): a metronome.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Minuet: &lt;/strong&gt;Ear training for intervals, chords, scales, and more.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;MuseScore: &lt;/strong&gt;Create, playback, and print sheet music for free (this one is no stranger to the Ubuntu Studio community)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Piano Booster: &lt;/strong&gt;MIDI player/game that displays musical notes and teaches you how to play piano, optionally using a MIDI keyboard.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Solfege: &lt;/strong&gt;Ear training program for harmonic and melodic intervals, chords, scales, and rhythms.&lt;/li&gt;&lt;/ul&gt;
  1925.  
  1926.  
  1927.  
  1928. &lt;h3&gt;New Artwork&lt;/h3&gt;
  1929.  
  1930.  
  1931.  
  1932. &lt;p&gt;Thanks to the work of Eylul and the submissions to the &lt;a href=&quot;https://ubuntustudio.org/2024/03/wallpaper-competition-winners-24-04-lts/&quot;&gt;Ubuntu Studio Noble Numbat Wallpaper Contest&lt;/a&gt;, we have a number of wallpapers to choose from and a new default wallpaper. &lt;/p&gt;
  1933.  
  1934.  
  1935.  
  1936. &lt;h2&gt;Deprecation of Ubuntu Studio Backports Is In Effect&lt;/h2&gt;
  1937.  
  1938.  
  1939.  
  1940. &lt;p&gt;As stated in the Ubuntu 23.10 Release Announcement, the Ubuntu Studio Backports PPA is now deprecated in favor of the official Ubuntu Backports repository. However, the Backports repository only works for LTS releases and for good reason. There are a few requirements for backporting:&lt;/p&gt;
  1941.  
  1942.  
  1943.  
  1944. &lt;ul&gt;&lt;li&gt;It must be an application which already exists in the Ubuntu repositories&lt;/li&gt;&lt;li&gt;It must be an application which would not otherwise qualify for a simple bugfix, which would then qualify it to be a Stable Release Update. This means it must have new features.&lt;/li&gt;&lt;li&gt;It must not rely on new libraries or new versions of libraries.&lt;/li&gt;&lt;li&gt;It must exist within a later supported release or the development release of Ubuntu.&lt;/li&gt;&lt;/ul&gt;
  1945.  
  1946.  
  1947.  
  1948. &lt;p&gt;If you have a suggestion for an application for which to backport that meets those requirements, feel free to &lt;a href=&quot;https://lists.ubuntu.com/archives/ubuntu-studio-users/&quot;&gt;join and email the Ubuntu Studio Users Mailing List&lt;/a&gt; with your suggestion with the tag “[BPO]” at the beginning of the subject line. &lt;strong&gt;Backports to 22.04 LTS are now closed&lt;/strong&gt; &lt;strong&gt;and backports to 24.04 LTS are now open.&lt;/strong&gt; Additionally, &lt;strong&gt;suggestions must pertain to Ubuntu Studio and preferably must be applications included with Ubuntu Studio. Suggestions can be rejected at the Project Leader’s discretion.&lt;/strong&gt;&lt;/p&gt;
  1949.  
  1950.  
  1951.  
  1952. &lt;p&gt;One package that is exempt to backporting is Ardour. To help support Ardour’s funding, you may obtain later versions directly from them. To do so, please &lt;a data-id=&quot;https://ardour.org&quot; data-type=&quot;URL&quot; href=&quot;https://ardour.org&quot;&gt;one-time purchase or subscribe to Ardour from their website.&lt;/a&gt; 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 2024.&lt;/p&gt;
  1953.  
  1954.  
  1955.  
  1956. &lt;h2&gt;We’re back on Matrix&lt;/h2&gt;
  1957.  
  1958.  
  1959.  
  1960. &lt;div class=&quot;wp-block-image&quot;&gt;&lt;figure class=&quot;alignright size-full is-resized&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-2722&quot; height=&quot;127&quot; src=&quot;https://ubuntustudio.org/wp-content/uploads/2012/03/eb3a/matrix-chat.png&quot; width=&quot;126&quot; /&gt;&lt;/figure&gt;&lt;/div&gt;
  1961.  
  1962.  
  1963.  
  1964. &lt;p&gt;You’ll notice that the menu links to our support chat and on our website will now take you to a Matrix chat. This is due to the Ubuntu community carving its own space within the Matrix federation.&lt;/p&gt;
  1965.  
  1966.  
  1967.  
  1968. &lt;p&gt;However, this is not only a support chat. This is also a creativity discussion chat. You can pass ideas to each other and you’re welcome to it if the topic remains within those confines. However, if a moderator or admin warns you that you’re getting off-topic (or the intention for the chat room), please heed the warning.&lt;/p&gt;
  1969.  
  1970.  
  1971.  
  1972. &lt;p&gt;This is a persistent connection, meaning if you close the window (or chat), it won’t lose your place as you may only need to sign back in to resume the chat.&lt;/p&gt;
  1973.  
  1974.  
  1975.  
  1976. &lt;h2 id=&quot;block-c7a21be7-9349-421e-a098-c0d2919f320a&quot;&gt;Frequently Asked Questions&lt;/h2&gt;
  1977.  
  1978.  
  1979.  
  1980. &lt;p id=&quot;block-163f794a-f451-40b0-bbbd-6f26c6cbe8e8&quot;&gt;&lt;strong&gt;Q:&lt;/strong&gt; Does Ubuntu Studio contain snaps?&lt;br /&gt;&lt;strong&gt;A:&lt;/strong&gt; 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.&lt;/p&gt;
  1981.  
  1982.  
  1983.  
  1984. &lt;p&gt;Thunderbird also became a snap during this cycle for the maintainers to get security patches delivered faster.&lt;/p&gt;
  1985.  
  1986.  
  1987.  
  1988. &lt;p id=&quot;block-342134d3-a024-4b7b-b768-76c758b20acd&quot;&gt;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.&lt;/p&gt;
  1989.  
  1990.  
  1991.  
  1992. &lt;p id=&quot;block-2266cee7-0ea1-49cf-8340-594da42a09d7&quot;&gt;&lt;strong&gt;Q&lt;/strong&gt;: Will you make an ISO with {my favorite desktop environment}?&lt;br /&gt;&lt;strong&gt;A:&lt;/strong&gt; 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 &lt;a href=&quot;https://ubuntu.com/download/flavours&quot;&gt;official flavor for the desktop environment of your choice&lt;/a&gt; and use &lt;a href=&quot;https://ubuntustudio.org/ubuntu-studio-installer&quot;&gt;Ubuntu Studio Installer&lt;/a&gt; to get Ubuntu Studio – which does *not* convert that flavor to Ubuntu Studio but adds its benefits.&lt;/p&gt;
  1993.  
  1994.  
  1995.  
  1996. &lt;p id=&quot;block-48669a69-39bc-4971-b46b-c7da87133d24&quot;&gt;&lt;strong&gt;Q: &lt;/strong&gt;What if I don’t want all these packages installed on my machine?&lt;br /&gt;&lt;strong&gt;A: &lt;/strong&gt;Simply use the &lt;strong&gt;Ubuntu Studio Installer&lt;/strong&gt; to remove the features of Ubuntu Studio you don’t want or need!&lt;/p&gt;
  1997.  
  1998.  
  1999.  
  2000. &lt;h1&gt;Looking Toward the Future&lt;/h1&gt;
  2001.  
  2002.  
  2003.  
  2004. &lt;h2&gt;Plasma 6&lt;/h2&gt;
  2005.  
  2006.  
  2007.  
  2008. &lt;p&gt;Ubuntu Studio, in cooperation with Kubuntu, will be switching to Plasma 6 during the 24.10 development cycle. Likewise, Lubuntu will be switching to LXQt 2.0 and Qt 6, so the three flavors will be cooperating to do the move.&lt;/p&gt;
  2009.  
  2010.  
  2011.  
  2012. &lt;h2&gt;New Look&lt;/h2&gt;
  2013.  
  2014.  
  2015.  
  2016. &lt;p&gt;Ubuntu Studio has been using the same theming, “Materia” (except for the 22.04 LTS release which was a re-colored Breeze theme) since 19.04. However, Materia has gone dead upstream. To stay consistent, we found a fork called “Orchis” which seems to match closely and will be switching to that. More on that soon.&lt;/p&gt;
  2017.  
  2018.  
  2019.  
  2020. &lt;h2&gt;Minimal Installation&lt;/h2&gt;
  2021.  
  2022.  
  2023.  
  2024. &lt;p&gt;The new system installer has the capability to do minimal installations. This was something we did not have time to implement this cycle but intend to do for 24.10. This will let users install a minimal desktop to get going and then install what they need via Ubuntu Studio Installer. This will make a faster installation process but will not make the installation .iso image smaller. However, we have an idea for that as well.&lt;/p&gt;
  2025.  
  2026.  
  2027.  
  2028. &lt;h2&gt;Minimal Installation .iso Image&lt;/h2&gt;
  2029.  
  2030.  
  2031.  
  2032. &lt;p&gt;We are going to research what it will take to create a minimal installer .iso image that will function much like the regular .iso image minus the ability to install everything and allow the user to customize the installation via Ubuntu Studio Installer. This should lead to a much smaller initial download. Unlike creating a version with a different desktop environment, the Ubuntu Technical Board has been on record as saying this would not require going through the new flavor creation process. Our friends at Xubuntu recently did something similar.&lt;/p&gt;
  2033.  
  2034.  
  2035.  
  2036. &lt;h2&gt;Get Involved!&lt;/h2&gt;
  2037.  
  2038.  
  2039.  
  2040. &lt;p&gt;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! &lt;a href=&quot;https://ubuntustudio.org/contribute/&quot;&gt;Check out all the ways you can contribute!&lt;/a&gt;&lt;/p&gt;
  2041.  
  2042.  
  2043.  
  2044. &lt;p&gt;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. Your donations are appreciated! If other distributions can do it, surely we can! See the sidebar for ways to give!&lt;/p&gt;
  2045.  
  2046.  
  2047.  
  2048. &lt;h2&gt;Special Thanks&lt;/h2&gt;
  2049.  
  2050.  
  2051.  
  2052. &lt;p&gt;Huge special thanks for this release go to:&lt;/p&gt;
  2053.  
  2054.  
  2055.  
  2056. &lt;ul&gt;&lt;li&gt;&lt;strong&gt;Eylul Dogruel&lt;/strong&gt;: Artwork, Graphics Design&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Ross Gammon&lt;/strong&gt;: Upstream Debian Developer, Testing, Email Support&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Sebastien Ramacher&lt;/strong&gt;:&lt;strong&gt; &lt;/strong&gt;Upstream Debian Developer&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Dennis Braun&lt;/strong&gt;: Upstream Debian Developer&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Rik Mills&lt;/strong&gt;: Kubuntu Council Member, help with Plasma desktop&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Scarlett Moore: &lt;/strong&gt;Kubuntu Project Lead, help with Plasma desktop&lt;/li&gt;&lt;li&gt;&lt;b&gt;Z&lt;/b&gt;&lt;strong&gt;ixing Liu&lt;/strong&gt;: Simplified Chinese translations in the installer&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Simon Quigley&lt;/strong&gt;: Lubuntu Release Manager, help with Qt items, Core Developer stuff, keeping Erich sane and focused&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Steve Langasek&lt;/strong&gt;: Help with livecd-rootfs changes to make the new installer work properly.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Dan Bungert&lt;/strong&gt;: Subiquity, seed fixes&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Dennis Loose&lt;/strong&gt;: Ubuntu Desktop Provision (installer)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Lukas Klingsbo&lt;/strong&gt;: Ubuntu Desktop Provision (installer)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Len Ovens:&lt;/strong&gt; Testing, insight&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Wim Taymans&lt;/strong&gt;: Creator of PipeWire&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Mauro Gaspari&lt;/strong&gt;: Tutorials, Promotion, and Documentation, Testing, keeping Erich sane&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Krytarik Raido&lt;/strong&gt;: IRC Moderator, Mailing List Moderator&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Erich Eickmeyer&lt;/strong&gt;: Project Leader, Packaging, Development, Direction, Treasurer&lt;/li&gt;&lt;/ul&gt;
  2057.  
  2058.  
  2059.  
  2060. &lt;h1&gt;A Note from the Project Leader&lt;/h1&gt;
  2061.  
  2062.  
  2063.  
  2064. &lt;p&gt;&lt;em&gt;When I started out working on Ubuntu Studio six years ago, I had a vision of making it not only the easiest Linux-based operating system for content creation, but the easiest content creation operating system… full-stop.&lt;/em&gt;&lt;/p&gt;
  2065.  
  2066.  
  2067.  
  2068. &lt;p&gt;&lt;em&gt;With the release of &lt;strong&gt;Ubuntu Studio 24.04 LTS, &lt;/strong&gt;I believe we have achieved that goal. No longer do we have to worry about whether an application is JACK or PulseAudio or… whatever. It all just works! Audio applications can be patched to each other!&lt;/em&gt;&lt;/p&gt;
  2069.  
  2070.  
  2071.  
  2072. &lt;p&gt;&lt;em&gt;If an audio device doesn’t depend on complex drivers (i.e. if the device is class-compliant), it will just work. If a user wishes to lower the latency or change the sample rate, we have a utility that does that (Ubuntu Studio Audio Configuration). If a user wants to have finer control use pure JACK via QJackCtl, they can do that too!&lt;/em&gt;&lt;/p&gt;
  2073.  
  2074.  
  2075.  
  2076. &lt;p&gt;&lt;em&gt;I honestly don’t know how I would replicate this on Windows, and replicating on macOS would be much harder without downloading all sorts of applications. With Ubuntu Studio 24.04 LTS, it’s ready to go and you don’t have to worry about it.&lt;/em&gt;&lt;/p&gt;
  2077.  
  2078.  
  2079.  
  2080. &lt;p&gt;&lt;em&gt;Where we are now is a dream come true for me, and something I’ve been hoping to see Ubuntu Studio become. And now, we’re finally here, and I feel like it can only get better.&lt;/em&gt;&lt;/p&gt;
  2081.  
  2082.  
  2083.  
  2084. &lt;p class=&quot;has-text-align-right&quot;&gt;-Erich Eickmeyer&lt;/p&gt;</description>
  2085. <pubDate>Thu, 25 Apr 2024 15:16:29 +0000</pubDate>
  2086. </item>
  2087. <item>
  2088. <title>Ubuntu MATE: Ubuntu MATE 24.04 LTS Release Notes</title>
  2089. <guid isPermaLink="false">https://ubuntu-mate.org/blog/ubuntu-mate-noble-numbat</guid>
  2090. <link>https://ubuntu-mate.org/blog/ubuntu-mate-noble-numbat-release-notes/</link>
  2091. <description>&lt;p&gt;Ubuntu MATE 24.04 is more of what you like, stable MATE Desktop on top of current Ubuntu.
  2092. This release rolls up some fixes and more closely aligns with Ubuntu. Read on to learn more 👓️&lt;/p&gt;
  2093.  
  2094. &lt;p class=&quot;center&quot;&gt;&lt;img alt=&quot;Ubuntu MATE 24.04 LTS&quot; src=&quot;https://ubuntu-mate.org/images/blog/noble/screenshot.png&quot; /&gt;
  2095. &lt;strong&gt;Ubuntu MATE 24.04 LTS&lt;/strong&gt;&lt;/p&gt;
  2096.  
  2097. &lt;h2 id=&quot;thank-you-&quot;&gt;Thank you! 🙇&lt;/h2&gt;
  2098.  
  2099. &lt;p&gt;&lt;strong&gt;I’d like to extend my sincere thanks to everyone who has played an active role in improving Ubuntu MATE for this release 👏
  2100. I’d like to acknowledge the close collaboration with all the Ubuntu flavour teams and the Ubuntu Foundations and Desktop Teams.
  2101. The assistance and support provided by &lt;a href=&quot;https://launchpad.net/~eeickmeyer&quot;&gt;Erich Eickmeyer&lt;/a&gt; (Ubuntu Studio), &lt;a href=&quot;https://launchpad.net/~tsimonq2&quot;&gt;Simon Quigley&lt;/a&gt; (Lubuntu) and &lt;a href=&quot;https://launchpad.net/~fossfreedom&quot;&gt;David Muhammed&lt;/a&gt; (Ubuntu Budgie) have been invaluable.
  2102. Thank you!&lt;/strong&gt; 💚&lt;/p&gt;
  2103.  
  2104. &lt;h2 id=&quot;what-changed-since-the-ubuntu-mate-2310&quot;&gt;What changed since the Ubuntu MATE 23.10?&lt;/h2&gt;
  2105.  
  2106. &lt;p&gt;Here are the highlights of what’s changed since the &lt;a href=&quot;https://ubuntu-mate.org/blog/ubuntu-mate-mantic-minotaur-release-notes/&quot;&gt;release of Ubuntu MATE 23.10&lt;/a&gt;&lt;/p&gt;
  2107.  
  2108. &lt;ul&gt;
  2109.  &lt;li&gt;Ships stable &lt;a href=&quot;https://mate-desktop.org&quot;&gt;MATE Desktop&lt;/a&gt; 1.26.2 with a selection of bug fixes 🐛 and minor improvements 🩹 to associated components.&lt;/li&gt;
  2110.  &lt;li&gt;Integrated the new ✨ &lt;a href=&quot;https://snapcraft.io/ubuntu-desktop-bootstrap&quot;&gt;Ubuntu Desktop Bootstrap&lt;/a&gt; installer 📀&lt;/li&gt;
  2111.  &lt;li&gt;Added &lt;a href=&quot;https://gitlab.gnome.org/World/gnome-firmware&quot;&gt;GNOME Firmware&lt;/a&gt;, that replaces &lt;a href=&quot;https://snapcraft.io/firmware-updater&quot;&gt;Firmware Updater&lt;/a&gt;.&lt;/li&gt;
  2112.  &lt;li&gt;Added &lt;a href=&quot;https://snapcraft.io/snap-store&quot;&gt;App Center&lt;/a&gt;, that replaces Software Boutique.&lt;/li&gt;
  2113.  &lt;li&gt;Retired Ubuntu MATE Welcome; although it is still available for Ubuntu MATE 23.10 and earlier.&lt;/li&gt;
  2114. &lt;/ul&gt;
  2115.  
  2116. &lt;h2 id=&quot;major-applications&quot;&gt;Major Applications&lt;/h2&gt;
  2117.  
  2118. &lt;p&gt;Accompanying &lt;strong&gt;MATE Desktop 1.26.2&lt;/strong&gt; 🧉 and &lt;strong&gt;Linux 6.8&lt;/strong&gt; 🐧 are &lt;strong&gt;Firefox 125&lt;/strong&gt; 🔥🦊,
  2119. &lt;strong&gt;Celluloid 0.26&lt;/strong&gt; 🎥, &lt;strong&gt;Evolution 3.52&lt;/strong&gt; 📧, &lt;strong&gt;LibreOffice 24.2.2&lt;/strong&gt; 📚&lt;/p&gt;
  2120.  
  2121. &lt;p&gt;See the &lt;a href=&quot;https://discourse.ubuntu.com/t/noble-numbat-release-notes/39890&quot;&gt;Ubuntu 24.04 Release Notes&lt;/a&gt;
  2122. for details of all the changes and improvements that Ubuntu MATE benefits from.&lt;/p&gt;
  2123.  
  2124. &lt;div class=&quot;jumbotron&quot;&gt;
  2125.  
  2126.    &lt;h2&gt;Download Ubuntu MATE 24.04&lt;/h2&gt;
  2127.  
  2128.    &lt;p&gt;This new release will be first available for PC/Mac users.&lt;/p&gt;
  2129.  
  2130.  
  2131.    
  2132.        &lt;a class=&quot;btn&quot; href=&quot;https://ubuntu-mate.org/download/&quot;&gt;Download&lt;/a&gt;
  2133.    
  2134.  
  2135. &lt;/div&gt;
  2136.  
  2137. &lt;h2 id=&quot;upgrading-to-ubuntu-mate-2404&quot;&gt;Upgrading to Ubuntu MATE 24.04&lt;/h2&gt;
  2138.  
  2139. &lt;p&gt;The upgrade process to Ubuntu MATE 24.04 LTS from either Ubuntu MATE 22.04 LTS or
  2140. 23.10 is the same as Ubuntu.&lt;/p&gt;
  2141.  
  2142. &lt;ul&gt;
  2143.  &lt;li&gt;&lt;a href=&quot;https://help.ubuntu.com/community/NobleUpgrades&quot;&gt;Ubuntu 24.04 Upgrade Process&lt;/a&gt;&lt;/li&gt;
  2144. &lt;/ul&gt;
  2145.  
  2146. &lt;p&gt;There are no offline upgrade options for Ubuntu MATE. Please ensure you have
  2147. network connectivity to one of the official mirrors or to a locally accessible
  2148. mirror and follow the instructions above.&lt;/p&gt;</description>
  2149. <pubDate>Thu, 25 Apr 2024 14:57:38 +0000</pubDate>
  2150. </item>
  2151. <item>
  2152. <title>David Mohammed: Ubuntu Budgie 24.04 Released</title>
  2153. <guid isPermaLink="false">https://ubuntubudgie.org/?p=3772</guid>
  2154. <link>https://ubuntubudgie.org/2024/04/ubuntu-budgie-24-04-released/</link>
  2155. <description>&lt;p&gt;We are pleased to announce the release of the next version of our distro, 24.04 Long Term Support. The LTS version is supported for 3 years while the regular releases are supported for 9 months. The new release rolls-up various fixes and optimizations that the Ubuntu Budgie team have been released since the 22.04 release in April 2022: We also inherits hundreds of stability…&lt;/p&gt;
  2156. &lt;p&gt;&lt;a href=&quot;https://ubuntubudgie.org/2024/04/ubuntu-budgie-24-04-released/&quot; rel=&quot;nofollow&quot;&gt;Source&lt;/a&gt;&lt;/p&gt;</description>
  2157. <pubDate>Thu, 25 Apr 2024 13:37:47 +0000</pubDate>
  2158. </item>
  2159. <item>
  2160. <title>Lubuntu Blog: Lubuntu 24.04 LTS Released!</title>
  2161. <guid isPermaLink="false">https://lubuntu.me/?p=3981</guid>
  2162. <link>https://lubuntu.me/noble-released/</link>
  2163. <description>Thanks to the hard work from our contributors, Lubuntu 24.04 LTS has been released. With the codename Noble Numbat, Lubuntu 24.04 is the 26th release of Lubuntu, the 12th release of Lubuntu with LXQt as the default desktop environment. Download and Support Lifespan With Lubuntu 24.04 being a long-term support interim release, it will follow […]</description>
  2164. <pubDate>Thu, 25 Apr 2024 13:31:02 +0000</pubDate>
  2165. </item>
  2166. <item>
  2167. <title>Xubuntu: Xubuntu 24.04 released!</title>
  2168. <guid isPermaLink="false">https://xubuntu.org/?p=5547</guid>
  2169. <link>https://xubuntu.org/news/xubuntu-24-04-released/</link>
  2170. <description>&lt;p&gt;The Xubuntu team is happy to announce the immediate release of Xubuntu 24.04.&lt;/p&gt;
  2171.  
  2172.  
  2173.  
  2174. &lt;p&gt;Xubuntu 24.04, codenamed &lt;strong&gt;Noble Numbat&lt;/strong&gt;, is a long-term support (LTS) release and will be supported for 3 years, until 2027.&lt;/p&gt;
  2175.  
  2176.  
  2177.  
  2178. &lt;figure class=&quot;wp-block-image size-full&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-5548&quot; height=&quot;800&quot; src=&quot;https://xubuntu.org/wp-content/uploads/2024/04/6515/xubuntu-24.04.png&quot; width=&quot;1280&quot; /&gt;Xubuntu 24.04, featuring the latest updates from Xfce 4.18 and GNOME 46.&lt;/figure&gt;
  2179.  
  2180.  
  2181.  
  2182. &lt;p&gt;Xubuntu 24.04 features the latest updates from Xfce 4.18, GNOME 46, and MATE 1.26. For new users and those coming from Xubuntu 22.04, you’ll appreciate the performance, stability, and improved hardware support found in Xubuntu 24.04. Xfce 4.18 is stable, fast, and full of user-friendly features. Enjoy frictionless bluetooth headphone connections and out-of-the-box touchpad support. Updates to our icon theme and wallpapers make Xubuntu feel fresh and stylish.&lt;/p&gt;
  2183.  
  2184.  
  2185.  
  2186. &lt;p&gt;The &lt;strong&gt;final release images&lt;/strong&gt; for &lt;strong&gt;Xubuntu Desktop&lt;/strong&gt; and &lt;strong&gt;Xubuntu Minimal&lt;/strong&gt; are available as torrents and direct downloads from &lt;a href=&quot;https://xubuntu.org/download/&quot;&gt;xubuntu.org/download/&lt;/a&gt;.&lt;/p&gt;
  2187.  
  2188.  
  2189.  
  2190. &lt;p&gt;As the main server might be busy in the first few days after the release, we recommend using the torrents if possible.&lt;/p&gt;
  2191.  
  2192.  
  2193.  
  2194. &lt;p&gt;We’d like to thank everybody who contributed to this release of Xubuntu!&lt;/p&gt;
  2195.  
  2196.  
  2197.  
  2198. &lt;h2&gt;Highlights and Known Issues&lt;/h2&gt;
  2199.  
  2200.  
  2201.  
  2202. &lt;h3&gt;Highlights&lt;/h3&gt;
  2203.  
  2204.  
  2205.  
  2206. &lt;ul&gt;&lt;li&gt;&lt;strong&gt;Xfce 4.18&lt;/strong&gt; is included and well-polished since it’s initial release in December 2022&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Xubuntu Minimal&lt;/strong&gt; is included as an officially supported subproject&lt;/li&gt;&lt;li&gt;GNOME Software has been replaced by &lt;strong&gt;Snap Store&lt;/strong&gt; and &lt;strong&gt;GDebi&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Snap Desktop Integration&lt;/strong&gt; is now included for improved snap package support&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Firmware Updater&lt;/strong&gt; has been added to enable firmware updates in Xubuntu is included to support firmware updates from the Linux Vendor Firmware Service (LVFS)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Thunderbird&lt;/strong&gt; is now distributed as a Snap package&lt;/li&gt;&lt;li&gt;Ubiquity has been replaced by the Flutter-based &lt;strong&gt;Ubuntu Installer&lt;/strong&gt; to provide fast and user-friendly installation&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Pipewire&lt;/strong&gt; (and wireplumber) are now included in Xubuntu&lt;/li&gt;&lt;li&gt;Improved hardware support for &lt;strong&gt;bluetooth headphones&lt;/strong&gt; and &lt;strong&gt;touchpads&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Color emoji&lt;/strong&gt; is now included and supported in Firefox, Thunderbird, and newer Gtk-based apps&lt;/li&gt;&lt;li&gt;Significantly improved &lt;strong&gt;screensaver&lt;/strong&gt; integration and stability&lt;/li&gt;&lt;/ul&gt;
  2207.  
  2208.  
  2209.  
  2210. &lt;h3&gt;Known Issues&lt;/h3&gt;
  2211.  
  2212.  
  2213.  
  2214. &lt;ul&gt;&lt;li&gt;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 just a black screen. Press Enter and the system will reboot into the installed environment. (LP: &lt;a href=&quot;https://bugs.launchpad.net/ubuntu-release-notes/+bug/1944519&quot;&gt;#1944519&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Xorg crashes and the user is logged out after logging in or switching users on some virtual machines, including GNOME Boxes. (LP: #&lt;a href=&quot;https://bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/1861609&quot;&gt;1861609&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;You may experience choppy audio or poor system performance while playing audio, but only in some virtual machines (observed in VMware and VirtualBox)&lt;/li&gt;&lt;li&gt;OEM installation options are not currently supported or available, but will be included for Xubuntu 24.04.1&lt;/li&gt;&lt;/ul&gt;
  2215.  
  2216.  
  2217.  
  2218. &lt;p&gt;For more obscure known issues, information on affecting bugs, bug fixes, and a list of new package versions, please refer to the &lt;a href=&quot;https://wiki.xubuntu.org/releases/24.04/release-notes&quot;&gt;Xubuntu Release Notes&lt;/a&gt;.&lt;/p&gt;
  2219.  
  2220.  
  2221.  
  2222. &lt;p&gt;The main &lt;a href=&quot;https://discourse.ubuntu.com/t/noble-numbat-release-notes/39890&quot;&gt;Ubuntu Release Notes&lt;/a&gt; cover many of the other packages we carry and more generic issues.&lt;/p&gt;
  2223.  
  2224.  
  2225.  
  2226. &lt;h2&gt;Support&lt;/h2&gt;
  2227.  
  2228.  
  2229.  
  2230. &lt;p&gt;&lt;strong&gt;For support &lt;/strong&gt;with the release, navigate to &lt;a href=&quot;https://xubuntu.org/help/&quot;&gt;Help &amp;amp; Support&lt;/a&gt; for a complete list of methods to get help.&lt;/p&gt;</description>
  2231. <pubDate>Thu, 25 Apr 2024 12:00:53 +0000</pubDate>
  2232. </item>
  2233. <item>
  2234. <title>Lukas Märdian: Creating a Netplan enabled system through Debian-Installer</title>
  2235. <guid isPermaLink="false">https://blog.slyon.de/?p=2368</guid>
  2236. <link>https://blog.slyon.de/2024/04/25/creating-a-netplan-enabled-system-through-debian-installer/</link>
  2237. <description>&lt;p&gt;With the work that has been done in the &lt;a href=&quot;https://salsa.debian.org/installer-team/netcfg/-/merge_requests/9&quot;&gt;debian-installer/netcfg merge-proposal !9&lt;/a&gt; it is possible to install a standard Debian system, using the normal Debian-Installer (d-i) &lt;strong&gt;mini.iso&lt;/strong&gt; images, that will come pre-installed with Netplan and all network configuration structured in &lt;code&gt;/etc/netplan/&lt;/code&gt;.&lt;/p&gt;
  2238.  
  2239.  
  2240.  
  2241. &lt;p&gt;In this write-up, I’d like to run you through a list of commands for experiencing the Netplan enabled installation process first-hand. For now, we’ll be using a custom ISO image, while waiting for the above-mentioned merge-proposal to be landed. Furthermore, as the Debian archive is going through major transitions builds of the “unstable” branch of d-i don’t currently work. So I implemented a &lt;a href=&quot;https://people.ubuntu.com/~slyon/d-i/bookworm/0001-finish-install-adopt-to-netplan.io-package-netplan-g.patch&quot;&gt;small backport&lt;/a&gt;, producing updated &lt;a href=&quot;https://people.ubuntu.com/~slyon/d-i/bookworm/netcfg_1.189_amd64.udeb&quot;&gt;netcfg&lt;/a&gt; and &lt;a href=&quot;https://people.ubuntu.com/~slyon/d-i/bookworm/netcfg-static_1.189_amd64.udeb&quot;&gt;netcfg-static&lt;/a&gt; for Bookworm, which can be used as &lt;strong&gt;localudebs/&lt;/strong&gt; during the d-i build.&lt;/p&gt;
  2242.  
  2243.  
  2244.  
  2245. &lt;p&gt;Let’s start with preparing a working directory and installing the software dependencies for our virtualized Debian system:&lt;/p&gt;
  2246.  
  2247.  
  2248.  
  2249. &lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;$ mkdir d-i_bookworm &amp;amp;&amp;amp; cd d-i_bookworm
  2250. $ apt install ovmf qemu-utils qemu-system-x86&lt;/code&gt;&lt;/pre&gt;
  2251.  
  2252.  
  2253.  
  2254. &lt;p&gt;Now let’s download the custom&lt;code&gt; mini.iso&lt;/code&gt;, &lt;code&gt;linux&lt;/code&gt; kernel image and &lt;code&gt;initrd.gz&lt;/code&gt; containing the Netplan enablement changes, as mentioned above.&lt;/p&gt;
  2255.  
  2256.  
  2257.  
  2258. &lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;$ wget https://people.ubuntu.com/~slyon/d-i/bookworm/mini.iso
  2259. $ wget https://people.ubuntu.com/~slyon/d-i/bookworm/linux
  2260. $ wget https://people.ubuntu.com/~slyon/d-i/bookworm/initrd.gz&lt;/code&gt;&lt;/pre&gt;
  2261.  
  2262.  
  2263.  
  2264. &lt;p&gt;Next we’ll prepare a VM, by copying the EFI firmware files, preparing some persistent EFIVARs file, to boot from &lt;code&gt;FS0:\EFI\debian\grubx64.efi&lt;/code&gt;, and create a virtual disk for our machine:&lt;/p&gt;
  2265.  
  2266.  
  2267.  
  2268. &lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;$ cp /usr/share/OVMF/OVMF_CODE_4M.fd .
  2269. $ cp /usr/share/OVMF/OVMF_VARS_4M.fd .
  2270. $ qemu-img create -f qcow2 ./data.qcow2 5G&lt;/code&gt;&lt;/pre&gt;
  2271.  
  2272.  
  2273.  
  2274. &lt;p&gt;Finally, let’s launch the installer using a custom preseed.cfg file, that will automatically install Netplan for us in the target system. A minimal preseed file could look like this:&lt;/p&gt;
  2275.  
  2276.  
  2277.  
  2278. &lt;pre class=&quot;wp-block-preformatted&quot;&gt;# Install minimal Netplan generator binary&lt;br /&gt;d-i preseed/late_command string in-target apt-get -y install netplan-generator&lt;/pre&gt;
  2279.  
  2280.  
  2281.  
  2282. &lt;p&gt;For this demo, we’re installing the full &lt;code&gt;netplan.io&lt;/code&gt; package (incl. Python CLI), as the &lt;code&gt;netplan-generator&lt;/code&gt; package was not yet split out as an independent binary in the Bookworm cycle. You can choose the preseed file from a set of different variants to test the different configurations:&lt;/p&gt;
  2283.  
  2284.  
  2285.  
  2286. &lt;ul&gt;
  2287. &lt;li&gt;Netplan + systemd-resolved configuration
  2288. &lt;ul&gt;
  2289. &lt;li&gt;&lt;a href=&quot;https://people.ubuntu.com/~slyon/d-i/bookworm/netplan-preseed+networkd.cfg&quot;&gt;https://people.ubuntu.com/~slyon/d-i/bookworm/netplan-preseed+networkd.cfg&lt;/a&gt;&lt;/li&gt;
  2290. &lt;/ul&gt;
  2291. &lt;/li&gt;
  2292.  
  2293.  
  2294.  
  2295. &lt;li&gt;Netplan + NetworkManager configuration
  2296. &lt;ul&gt;
  2297. &lt;li&gt;&lt;a href=&quot;https://people.ubuntu.com/~slyon/d-i/bookworm/netplan-preseed+nm.cfg&quot;&gt;https://people.ubuntu.com/~slyon/d-i/bookworm/netplan-preseed+nm.cfg&lt;/a&gt;&lt;/li&gt;
  2298. &lt;/ul&gt;
  2299. &lt;/li&gt;
  2300. &lt;/ul&gt;
  2301.  
  2302.  
  2303.  
  2304. &lt;p&gt;We’re using the custom &lt;code&gt;linux&lt;/code&gt; kernel and &lt;code&gt;initrd.gz&lt;/code&gt; here to be able to pass the preseed URL as a parameter to the kernel’s &lt;code&gt;cmdline&lt;/code&gt; directly. Launching this VM should bring up the normal debian-installer in its &lt;code&gt;netboot/gtk&lt;/code&gt; form:&lt;/p&gt;
  2305.  
  2306.  
  2307.  
  2308. &lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;$ export U=https://people.ubuntu.com/~slyon/d-i/bookworm/netplan-preseed+networkd.cfg
  2309. $ qemu-system-x86_64 \
  2310. -M q35 -enable-kvm -cpu host -smp 4 -m 2G \
  2311. -drive if=pflash,format=raw,unit=0,file=OVMF_CODE_4M.fd,readonly=on \
  2312. -drive if=pflash,format=raw,unit=1,file=OVMF_VARS_4M.fd,readonly=off \
  2313. -device qemu-xhci -device usb-kbd -device usb-mouse \
  2314. -vga none -device virtio-gpu-pci \
  2315. -net nic,model=virtio -net user \
  2316. -kernel ./linux -initrd ./initrd.gz -append &quot;url=$U&quot; \
  2317. -hda ./data.qcow2 -cdrom ./mini.iso;&lt;/code&gt;&lt;/pre&gt;
  2318.  
  2319.  
  2320.  
  2321. &lt;p&gt;Now you can click through the normal Debian-Installer process, using mostly default settings. Optionally, you could play around with the networking settings, to see how those get translated to &lt;code&gt;/etc/netplan/&lt;/code&gt; in the target system.&lt;/p&gt;
  2322.  
  2323.  
  2324.  
  2325. &lt;figure class=&quot;wp-block-image size-full&quot;&gt;&lt;a href=&quot;https://blog.slyon.de/wp-content/uploads/2024/04/image.png&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-2377&quot; height=&quot;600&quot; src=&quot;https://blog.slyon.de/wp-content/uploads/2024/04/image.png&quot; width=&quot;800&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
  2326.  
  2327.  
  2328.  
  2329. &lt;p&gt;After you confirmed your partitioning changes, the base system gets installed. I suggest not to select any additional components, like desktop environments, to speed up the process.&lt;/p&gt;
  2330.  
  2331.  
  2332.  
  2333. &lt;figure class=&quot;wp-block-image size-full&quot;&gt;&lt;a href=&quot;https://blog.slyon.de/wp-content/uploads/2024/04/image-1.png&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-2378&quot; height=&quot;600&quot; src=&quot;https://blog.slyon.de/wp-content/uploads/2024/04/image-1.png&quot; width=&quot;800&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
  2334.  
  2335.  
  2336.  
  2337. &lt;p&gt;During the final step of the installation (&lt;code&gt;finish-install.d/55netcfg-copy-config&lt;/code&gt;) d-i will detect that Netplan was installed in the target system (due to the preseed file provided) and opt to write its network configuration to &lt;code&gt;/etc/netplan/&lt;/code&gt; instead of &lt;code&gt;/etc/network/interfaces&lt;/code&gt; or &lt;code&gt;/etc/NetworkManager/system-connections/&lt;/code&gt;.&lt;/p&gt;
  2338.  
  2339.  
  2340.  
  2341. &lt;figure class=&quot;wp-block-image size-full&quot;&gt;&lt;a href=&quot;https://blog.slyon.de/wp-content/uploads/2024/04/image-2.png&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-2379&quot; height=&quot;600&quot; src=&quot;https://blog.slyon.de/wp-content/uploads/2024/04/image-2.png&quot; width=&quot;800&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
  2342.  
  2343.  
  2344.  
  2345. &lt;p&gt;Done! After the installation finished, you can reboot into your virgin Debian Bookworm system.&lt;/p&gt;
  2346.  
  2347.  
  2348.  
  2349. &lt;p&gt;To do that, quit the current Qemu process, by pressing &lt;strong&gt;Ctrl+C&lt;/strong&gt; and make sure to copy over the &lt;code&gt;EFIVARS.fd&lt;/code&gt; file that was written by &lt;code&gt;grub&lt;/code&gt; during the installation, so Qemu can find the new system. Then reboot into the new system, not using the &lt;strong&gt;mini.iso&lt;/strong&gt; image any more:&lt;/p&gt;
  2350.  
  2351.  
  2352.  
  2353. &lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;$ cp ./OVMF_VARS_4M.fd ./EFIVARS.fd
  2354. $ qemu-system-x86_64 \
  2355.        -M q35 -enable-kvm -cpu host -smp 4 -m 2G \
  2356.        -drive if=pflash,format=raw,unit=0,file=OVMF_CODE_4M.fd,readonly=on \
  2357.        -drive if=pflash,format=raw,unit=1,file=EFIVARS.fd,readonly=off \
  2358.        -device qemu-xhci -device usb-kbd -device usb-mouse \
  2359.        -vga none -device virtio-gpu-pci \
  2360.        -net nic,model=virtio -net user \
  2361.        -drive file=./data.qcow2,if=none,format=qcow2,id=disk0 \
  2362.        -device virtio-blk-pci,drive=disk0,bootindex=1
  2363.        -serial mon:stdio&lt;/code&gt;&lt;/pre&gt;
  2364.  
  2365.  
  2366.  
  2367. &lt;p&gt;Finally, you can play around with your &lt;strong&gt;Netplan enabled Debian system&lt;/strong&gt;! As you will find, &lt;code&gt;/etc/network/interfaces&lt;/code&gt; exists but is empty, it could still be used (optionally/additionally). Netplan was configured in &lt;code&gt;/etc/netplan/&lt;/code&gt; according to the settings given during the d-i installation process.&lt;/p&gt;
  2368.  
  2369.  
  2370.  
  2371. &lt;figure class=&quot;wp-block-image size-large&quot;&gt;&lt;a href=&quot;https://blog.slyon.de/wp-content/uploads/2024/04/deb1-1.png&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-2383&quot; height=&quot;882&quot; src=&quot;https://blog.slyon.de/wp-content/uploads/2024/04/deb1-1-1024x882.png&quot; width=&quot;1024&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
  2372.  
  2373.  
  2374.  
  2375. &lt;p&gt;In our case, we also installed the Netplan CLI, so we can play around with some of its features, like &lt;code&gt;netplan status&lt;/code&gt;:&lt;/p&gt;
  2376.  
  2377.  
  2378.  
  2379. &lt;figure class=&quot;wp-block-image size-large&quot;&gt;&lt;a href=&quot;https://blog.slyon.de/wp-content/uploads/2024/04/deb2.png&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-2384&quot; height=&quot;882&quot; src=&quot;https://blog.slyon.de/wp-content/uploads/2024/04/deb2-1024x882.png&quot; width=&quot;1024&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
  2380.  
  2381.  
  2382.  
  2383. &lt;p&gt;Thank you for following along the Netplan enabled Debian installation process and happy hacking! If you want to learn more, join the discussion at &lt;a href=&quot;https://salsa.debian.org/installer-team/netcfg/-/merge_requests/9&quot;&gt;Salsa:installer-team/netcfg&lt;/a&gt; and find us at &lt;a href=&quot;https://github.com/canonical/netplan&quot;&gt;GitHub:netplan&lt;/a&gt;.&lt;/p&gt;</description>
  2384. <pubDate>Thu, 25 Apr 2024 10:19:44 +0000</pubDate>
  2385. </item>
  2386. <item>
  2387. <title>Ubuntu MATE: Ubuntu MATE 23.10 Release Notes</title>
  2388. <guid isPermaLink="false">https://ubuntu-mate.org/blog/ubuntu-mate-mantic-minotaur</guid>
  2389. <link>https://ubuntu-mate.org/blog/ubuntu-mate-mantic-minotaur-release-notes/</link>
  2390. <description>&lt;p&gt;Ubuntu MATE 23.10 is more of what you like, stable MATE Desktop on top of current Ubuntu.
  2391. This release rolls up a number of bugs fixes and updates that continues to build on recent releases, where the focus has been on improving stability 🪨&lt;/p&gt;
  2392.  
  2393. &lt;p class=&quot;center&quot;&gt;&lt;img alt=&quot;Ubuntu MATE 23.10&quot; src=&quot;https://ubuntu-mate.org/images/blog/mantic/screenshot.png&quot; /&gt;
  2394. &lt;strong&gt;Ubuntu MATE 23.10&lt;/strong&gt;&lt;/p&gt;
  2395.  
  2396. &lt;h2 id=&quot;thank-you-&quot;&gt;Thank you! 🙇&lt;/h2&gt;
  2397.  
  2398. &lt;p&gt;&lt;strong&gt;I’d like to extend my sincere thanks to everyone who has played an active role in improving Ubuntu MATE for this release 👏 From reporting bugs, submitting translations, providing patches, contributing to &lt;a href=&quot;https://www.patreon.com/ubuntu_mate&quot;&gt;our crowd-funding&lt;/a&gt;, developing new features, creating artwork, offering community support, actively
  2399. testing and providing QA feedback to writing documentation or creating this fabulous website. Thank you!&lt;/strong&gt; 💚&lt;/p&gt;
  2400.  
  2401. &lt;h2 id=&quot;what-changed-since-the-ubuntu-mate-2304&quot;&gt;What changed since the Ubuntu MATE 23.04?&lt;/h2&gt;
  2402.  
  2403. &lt;p&gt;Here are the highlights of what’s changed since the &lt;a href=&quot;https://ubuntu-mate.org/blog/ubuntu-mate-lunar-lobster-release-notes/&quot;&gt;release of Ubuntu MATE 23.04&lt;/a&gt;&lt;/p&gt;
  2404.  
  2405. &lt;h3 id=&quot;mate-desktop&quot;&gt;MATE Desktop&lt;/h3&gt;
  2406.  
  2407. &lt;p&gt;&lt;a href=&quot;https://mate-desktop.org&quot;&gt;MATE Desktop&lt;/a&gt; has been updated to 1.26.2 with a selection of bugs fixes 🐛 and minor improvements 🩹 to associated components.&lt;/p&gt;
  2408.  
  2409. &lt;ul&gt;
  2410.  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;caja-rename&lt;/code&gt; 23.10.1-1 has been ported from Python to C.&lt;/li&gt;
  2411.  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;libmatemixer&lt;/code&gt; 1.26.0-2+deb12u1 resolves heap corruption and application crashes when removing USB audio devices.&lt;/li&gt;
  2412.  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mate-desktop&lt;/code&gt; 1.26.2-1 improves portals support.&lt;/li&gt;
  2413.  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mate-notification-daemon&lt;/code&gt; 1.26.1-1 fixes several memory leaks.&lt;/li&gt;
  2414.  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mate-system-monitor&lt;/code&gt; 1.26.0-5 now picks up libexec files from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/usr/libexec&lt;/code&gt;&lt;/li&gt;
  2415.  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mate-session-manager&lt;/code&gt; 1.26.1-2 set &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;LIBEXECDIR&lt;/code&gt; to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/usr/libexec/&lt;/code&gt; for correct interaction with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mate-system-monitor&lt;/code&gt; ☝️&lt;/li&gt;
  2416.  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mate-user-guide&lt;/code&gt; 1.26.2-1 is a new upstream release.&lt;/li&gt;
  2417.  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mate-utils&lt;/code&gt; 1.26.1-1 fixes several memory leaks.&lt;/li&gt;
  2418. &lt;/ul&gt;
  2419.  
  2420. &lt;h4 id=&quot;yet-more-ai-generated-wallpaper&quot;&gt;Yet more AI Generated wallpaper&lt;/h4&gt;
  2421.  
  2422. &lt;p&gt;My friend &lt;a href=&quot;https://twitter.com/simonjbutcher&quot;&gt;Simon Butcher&lt;/a&gt; 🇬🇧 is Head of Research Platforms at Queen Mary University of London managing the Apocrita HPC cluster service. &lt;strong&gt;Once again, Simon has created a stunning AI-generated 🤖🧠 wallpaper for Ubuntu MATE using bleeding edge diffusion models&lt;/strong&gt; 🖌 &lt;em&gt;The sample below is 1920x1080 but the version included in Ubuntu MATE 23.10 are 3840x2160&lt;/em&gt;.&lt;/p&gt;
  2423.  
  2424. &lt;div class=&quot;gallery&quot;&gt;
  2425.    
  2426.        &lt;div class=&quot;gallery-item&quot;&gt;
  2427.            &lt;img alt=&quot;&quot; src=&quot;https://ubuntu-mate.org/images/blog/mantic/minotaur-king.jpg&quot; /&gt;
  2428.  
  2429.            
  2430.        &lt;/div&gt;
  2431.    
  2432. &lt;/div&gt;
  2433.  
  2434. &lt;p&gt;Here’s what Simon has to say about the process of creating this new wallpaper for Mantic Minotaur:&lt;/p&gt;
  2435.  
  2436. &lt;blockquote&gt;
  2437.  &lt;p&gt;Since Minotaurs are imaginary creatures, interpretations tend to vary widely. I wanted to produce an image of a powerful creature in a graphic novel style, although not gruesome like many depictions. The latest open source Stable Diffusion XL base model was trained at a higher resolution and the difference in quality has been noticeable, particularly at better overall consistency and detail, while reducing anatomical irregularities in images. The image was produced locally using Linux and an NVIDIA A100 80GB GPU, starting from an initial text prompt and refined using img2img, inpainting and upscaling features.&lt;/p&gt;
  2438. &lt;/blockquote&gt;
  2439.  
  2440. &lt;h2 id=&quot;major-applications&quot;&gt;Major Applications&lt;/h2&gt;
  2441.  
  2442. &lt;p&gt;Accompanying &lt;strong&gt;MATE Desktop 1.26.2&lt;/strong&gt; 🧉 and &lt;strong&gt;Linux 6.5&lt;/strong&gt; 🐧 are &lt;strong&gt;Firefox 118&lt;/strong&gt; 🔥🦊,
  2443. &lt;strong&gt;Celluloid 0.25&lt;/strong&gt; 🎥, &lt;strong&gt;Evolution 3.50&lt;/strong&gt; 📧, &lt;strong&gt;LibreOffice 7.6.1&lt;/strong&gt; 📚&lt;/p&gt;
  2444.  
  2445. &lt;p&gt;See the &lt;a href=&quot;https://discourse.ubuntu.com/t/mantic-minotaur-release-notes/35534&quot;&gt;Ubuntu 23.10 Release Notes&lt;/a&gt;
  2446. for details of all the changes and improvements that Ubuntu MATE benefits from.&lt;/p&gt;
  2447.  
  2448. &lt;div class=&quot;jumbotron&quot;&gt;
  2449.  
  2450.    &lt;h2&gt;Download Ubuntu MATE 23.10&lt;/h2&gt;
  2451.  
  2452.    &lt;p&gt;This new release will be first available for PC/Mac users.&lt;/p&gt;
  2453.  
  2454.  
  2455.    
  2456.        &lt;a class=&quot;btn&quot; href=&quot;https://ubuntu-mate.org/download/&quot;&gt;Download&lt;/a&gt;
  2457.    
  2458.  
  2459. &lt;/div&gt;
  2460.  
  2461. &lt;h2 id=&quot;upgrading-from-ubuntu-mate-2304&quot;&gt;Upgrading from Ubuntu MATE 23.04&lt;/h2&gt;
  2462.  
  2463. &lt;p&gt;You can upgrade to Ubuntu MATE 23.10 from Ubuntu MATE 23.04. Ensure that you
  2464. have all updates installed for your current version of Ubuntu MATE before you
  2465. upgrade.&lt;/p&gt;
  2466.  
  2467. &lt;ul&gt;
  2468.  &lt;li&gt;Open the “Software &amp;amp; Updates” from the Control Center.&lt;/li&gt;
  2469.  &lt;li&gt;Select the 3rd Tab called “Updates”.&lt;/li&gt;
  2470.  &lt;li&gt;Set the “Notify me of a new Ubuntu version” drop down menu to “For any new version”.&lt;/li&gt;
  2471.  &lt;li&gt;Press &lt;kbd&gt;Alt&lt;/kbd&gt;+&lt;kbd&gt;F2&lt;/kbd&gt; and type in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;update-manager -c -d&lt;/code&gt; into the command box.&lt;/li&gt;
  2472.  &lt;li&gt;Update Manager should open up and tell you: New distribution release ‘23.10’ is available.
  2473.    &lt;ul&gt;
  2474.      &lt;li&gt;If not, you can use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/usr/lib/ubuntu-release-upgrader/check-new-release-gtk&lt;/code&gt;&lt;/li&gt;
  2475.    &lt;/ul&gt;
  2476.  &lt;/li&gt;
  2477.  &lt;li&gt;Click “Upgrade” and follow the on-screen instructions.&lt;/li&gt;
  2478. &lt;/ul&gt;
  2479.  
  2480. &lt;p&gt;There are no offline upgrade options for Ubuntu MATE. Please ensure you have
  2481. network connectivity to one of the official mirrors or to a locally accessible
  2482. mirror and follow the instructions above.&lt;/p&gt;
  2483.  
  2484. &lt;h2 id=&quot;feedback&quot;&gt;Feedback&lt;/h2&gt;
  2485.  
  2486. &lt;p&gt;Is there anything you can help with or want to be involved in? Maybe you just
  2487. want to discuss your experiences or ask the maintainers some questions. Please
  2488. &lt;a href=&quot;https://ubuntu-mate.community/&quot;&gt;come and talk to us&lt;/a&gt;.&lt;/p&gt;</description>
  2489. <pubDate>Wed, 24 Apr 2024 21:55:28 +0000</pubDate>
  2490. </item>
  2491. <item>
  2492. <title>David Mohammed: Ubuntu Budgie 24.04 Release Notes</title>
  2493. <guid isPermaLink="false">https://ubuntubudgie.org/?p=3762</guid>
  2494. <link>https://ubuntubudgie.org/2024/04/ubuntu-budgie-24-04-release-notes/</link>
  2495. <description>&lt;p&gt;Ubuntu Budgie 24.04 LTS (Noble Numbat) is a Long Term Support release with 3 years of support by your distro maintainers, from April 2024 to May 2027. These release notes showcase the key takeaways for 22.04 upgraders to 24.04. In these release notes the areas covered are: Quarter &amp;amp; half tiling is pretty much self-explaining. Dragging a window to the…&lt;/p&gt;
  2496. &lt;p&gt;&lt;a href=&quot;https://ubuntubudgie.org/2024/04/ubuntu-budgie-24-04-release-notes/&quot; rel=&quot;nofollow&quot;&gt;Source&lt;/a&gt;&lt;/p&gt;</description>
  2497. <pubDate>Mon, 15 Apr 2024 21:02:12 +0000</pubDate>
  2498. </item>
  2499. <item>
  2500. <title>Paul Tagliamonte: Domo Arigato, Mr. debugfs</title>
  2501. <guid isPermaLink="true">https://notes.pault.ag/debugfs/</guid>
  2502. <link>https://notes.pault.ag/debugfs/</link>
  2503. <description>&lt;p&gt;Years ago, at what I think I remember was DebConf 15, I hacked for a while
  2504. on debhelper to
  2505. &lt;a href=&quot;https://github.com/Debian/debhelper/commit/5549f841fd7cba07e21df8e4f70b21c31cfb3da6&quot;&gt;write build-ids to debian binary control files&lt;/a&gt;,
  2506. so that the &lt;code&gt;build-id&lt;/code&gt; (more specifically, the ELF note
  2507. &lt;code&gt;.note.gnu.build-id&lt;/code&gt;) wound up in the Debian apt archive metadata.
  2508. I’ve always thought this was super cool, and seeing as how Michael Stapelberg
  2509. &lt;a href=&quot;https://michael.stapelberg.ch/posts/2019-02-15-debian-debugging-devex/&quot;&gt;blogged&lt;/a&gt;
  2510. some great pointers around the ecosystem, including the fancy new &lt;code&gt;debuginfod&lt;/code&gt;
  2511. service, and the
  2512. &lt;a href=&quot;https://manpages.debian.org/testing/debian-goodies/find-dbgsym-packages.1.en.html&quot;&gt;find-dbgsym-packages&lt;/a&gt;
  2513. helper, which uses these same headers, I don’t think I’m the only one.&lt;/p&gt;
  2514. &lt;p&gt;At work I’ve been using a lot of &lt;a href=&quot;https://www.rust-lang.org/&quot;&gt;rust&lt;/a&gt;,
  2515. specifically, async rust using &lt;a href=&quot;https://tokio.rs/&quot;&gt;tokio&lt;/a&gt;. To try and work on
  2516. my style, and to dig deeper into the how and why of the decisions made in these
  2517. frameworks, I’ve decided to hack up a project that I’ve wanted to do ever
  2518. since 2015 – write a debug filesystem. Let’s get to it.&lt;/p&gt;
  2519. &lt;h1 id=&quot;back-to-the-future&quot;&gt;Back to the Future&lt;/h1&gt;
  2520. &lt;aside class=&quot;left&quot;&gt;
  2521. It shouldn't shock anyone to learn I'm a huge fan of Go, right?
  2522. &lt;/aside&gt;
  2523. &lt;p&gt;Time to admit something. I really love &lt;a href=&quot;https://9front.org/&quot;&gt;Plan 9&lt;/a&gt;. It’s
  2524. just so good. So many ideas from Plan 9 are just so prescient, and everything
  2525. just feels &lt;em&gt;right&lt;/em&gt;. Not just right like, feels good – like, &lt;em&gt;correct&lt;/em&gt;. The
  2526. bit that I’ve always liked the most is &lt;code&gt;9p&lt;/code&gt;, the network protocol for serving
  2527. a filesystem over a network. This leads to all sorts of fun programs, like the
  2528. Plan 9 &lt;code&gt;ftp&lt;/code&gt; client being a 9p server – you mount the ftp server and access
  2529. files like any other files. It’s kinda like if fuse were more fully a part
  2530. of how the operating system worked, but fuse is all running client-side. With
  2531. 9p there’s a single client, and different &lt;em&gt;servers&lt;/em&gt; that you can connect to,
  2532. which may be backed by a hard drive, remote resources over something like SFTP, FTP, HTTP or even purely synthetic.&lt;/p&gt;
  2533. &lt;aside class=&quot;right&quot;&gt;
  2534. I even triggered a weird bug in
  2535. &lt;a href=&quot;https://github.com/vim/vim/commit/14759ded57447345ba11c11a99fd84344797862c&quot;&gt;vim&lt;/a&gt;
  2536. when writing a 9p filesystem that wound up impacting
  2537. &lt;a href=&quot;https://github.com/microsoft/WSL/issues/11256&quot;&gt;WSL&lt;/a&gt;
  2538. -- although it seems like maybe not due to 9p (rather, SMB)
  2539. &lt;/aside&gt;
  2540. &lt;p&gt;The interesting (maybe sad?) part here is that 9p wound up outliving Plan 9
  2541. in terms of adoption – &lt;code&gt;9p&lt;/code&gt; is in all sorts of places folks don’t usually expect.
  2542. For instance, the Windows Subsystem for Linux uses the 9p protocol to share
  2543. files between Windows and Linux. ChromeOS uses it to share files with Crostini,
  2544. and qemu uses 9p (&lt;code&gt;virtio-p9&lt;/code&gt;) to share files between guest and host. If you’re
  2545. noticing a pattern here, you’d be right; for some reason 9p is the go-to protocol
  2546. to exchange files between hypervisor and guest. Why? I have no idea, except maybe
  2547. due to being designed well, simple to implement, and it’s a lot easier to validate the data being shared
  2548. and validate security boundaries. Simplicity has its value.&lt;/p&gt;
  2549. &lt;p&gt;As a result, there’s a &lt;em&gt;lot&lt;/em&gt; of lingering 9p support kicking around. Turns out
  2550. Linux can even handle mounting 9p filesystems out of the box. This means that I
  2551. can deploy a filesystem to my LAN or my &lt;code&gt;localhost&lt;/code&gt; by running a process on top
  2552. of a computer that needs nothing special, and mount it over the network on an
  2553. unmodified machine – unlike &lt;code&gt;fuse&lt;/code&gt;, where you’d need client-specific software
  2554. to run in order to mount the directory. For instance, let’s mount a 9p
  2555. filesystem running on my localhost machine, serving requests on &lt;code&gt;127.0.0.1:564&lt;/code&gt;
  2556. (tcp) that goes by the name “&lt;code&gt;mountpointname&lt;/code&gt;” to &lt;code&gt;/mnt&lt;/code&gt;.&lt;/p&gt;
  2557. &lt;aside class=&quot;left&quot;&gt;
  2558. Unfortunately, this requires root to mount and feels very un-plan9,
  2559. but it does work and the protocol is good.
  2560. &lt;/aside&gt;
  2561. &lt;pre&gt;$ mount -t 9p \
  2562. -o trans=tcp,port=564,version=9p2000.u,aname=mountpointname \
  2563. 127.0.0.1 \
  2564. /mnt
  2565. &lt;/pre&gt;
  2566. &lt;p&gt;Linux will mount away, and attach to the filesystem as the root user, and by default,
  2567. attach to that mountpoint again for each local user that attempts to use
  2568. it. Nifty, right? I think so. The server is able
  2569. to keep track of per-user access and authorization
  2570. along with the host OS.&lt;/p&gt;
  2571. &lt;h1 id=&quot;wherein-i-styx-with-it&quot;&gt;WHEREIN I STYX WITH IT&lt;/h1&gt;
  2572. &lt;aside class=&quot;right&quot;&gt;
  2573. &quot;Simple&quot; here is intended as my highest form of praise. Writing complex
  2574. things is easy. Taking your work, and simplifying it down the core
  2575. is the most difficult part of our work.
  2576. &lt;/aside&gt;
  2577. &lt;p&gt;Since I wanted to push myself a bit more with &lt;code&gt;rust&lt;/code&gt; and &lt;code&gt;tokio&lt;/code&gt; specifically,
  2578. I opted to implement the whole stack myself, without third party libraries on
  2579. the critical path where I could avoid it. The 9p protocol (sometimes called
  2580. &lt;code&gt;Styx&lt;/code&gt;, the original name for it) is incredibly simple. It’s a series of client
  2581. to server requests, which receive a server to client response. These are,
  2582. respectively, “&lt;code&gt;T&lt;/code&gt;” messages, which &lt;code&gt;t&lt;/code&gt;ransmit a request to the server, which
  2583. trigger an “&lt;code&gt;R&lt;/code&gt;” message in response (&lt;code&gt;R&lt;/code&gt;eply messages). These messages are
  2584. &lt;a href=&quot;https://en.wikipedia.org/wiki/Type%E2%80%93length%E2%80%93value&quot;&gt;TLV&lt;/a&gt; payload
  2585. with a very straight forward structure – so straight forward, in fact, that I
  2586. was able to implement a working server off nothing more than a handful of &lt;a href=&quot;https://9fans.github.io/plan9port/man/man9/&quot;&gt;man
  2587. pages&lt;/a&gt;.&lt;/p&gt;
  2588. &lt;aside class=&quot;left&quot;&gt;
  2589. There's also a &lt;code&gt;9P2000.L&lt;/code&gt; 9p variant which has more
  2590. Linux specific extensions. There's a good chance I port this
  2591. forward when I get the chance.
  2592. &lt;/aside&gt;
  2593. &lt;p&gt;Later on after the basics worked, I found a more complete
  2594. &lt;a href=&quot;https://ericvh.github.io/9p-rfc/rfc9p2000.html&quot;&gt;spec page&lt;/a&gt;
  2595. that contains more information about the
  2596. &lt;a href=&quot;https://ericvh.github.io/9p-rfc/rfc9p2000.u.html&quot;&gt;unix specific variant&lt;/a&gt;
  2597. that I opted to use (&lt;code&gt;9P2000.u&lt;/code&gt; rather than &lt;code&gt;9P2000&lt;/code&gt;) due to the level
  2598. of &lt;code&gt;Linux&lt;/code&gt; specific support for the &lt;code&gt;9P2000.u&lt;/code&gt; variant over the &lt;code&gt;9P2000&lt;/code&gt;
  2599. protocol.&lt;/p&gt;
  2600. &lt;h1 id=&quot;mr-roboto&quot;&gt;MR ROBOTO&lt;/h1&gt;
  2601. &lt;aside class=&quot;right&quot;&gt;
  2602. It really bothers me rust libraries that deal with I/O need to support
  2603. std::io, but to add support for async runtimes, you need to implement
  2604. support for tokio::io and every other runtime; but them's the breaks I
  2605. guess. I really miss Go's built-in async support and io module.
  2606. &lt;/aside&gt;
  2607. &lt;p&gt;The backend stack over at &lt;a href=&quot;https://zoo.dev&quot;&gt;zoo&lt;/a&gt; is &lt;code&gt;rust&lt;/code&gt; and &lt;code&gt;tokio&lt;/code&gt;
  2608. running i/o for an &lt;code&gt;HTTP&lt;/code&gt; and &lt;code&gt;WebRTC&lt;/code&gt; server. I figured I’d pick something
  2609. fairly similar to write my filesystem with, since &lt;code&gt;9P&lt;/code&gt; can be implemented
  2610. on basically anything with I/O. That means &lt;code&gt;tokio&lt;/code&gt; tcp server bits, which
  2611. construct and use a &lt;code&gt;9p&lt;/code&gt; server, which has an idiomatic Rusty API that
  2612. partially abstracts the raw &lt;code&gt;R&lt;/code&gt; and &lt;code&gt;T&lt;/code&gt; messages, but not so much as to
  2613. cause issues with hiding implementation possibilities. At each abstraction
  2614. level, there’s an escape hatch – allowing someone to implement any of
  2615. the layers if required. I called this framework
  2616. &lt;a href=&quot;https://github.com/paultag/arigato&quot;&gt;arigato&lt;/a&gt; which can be found over on
  2617. &lt;a href=&quot;https://docs.rs/arigato&quot;&gt;docs.rs&lt;/a&gt; and
  2618. &lt;a href=&quot;https://crates.io/crates/arigato&quot;&gt;crates.io&lt;/a&gt;.&lt;/p&gt;
  2619. &lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-rust&quot; data-lang=&quot;rust&quot;&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;/// Simplified version of the arigato File trait; this isn't actually
  2620. &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;/// the same trait; there's some small cosmetic differences. The
  2621. &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;/// actual trait can be found at:
  2622. &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;///
  2623. &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;/// https://docs.rs/arigato/latest/arigato/server/trait.File.html
  2624. &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;trait&lt;/span&gt; File {
  2625. &lt;span style=&quot;color: #e6db74;&quot;&gt;/// OpenFile is the type returned by this File via an Open call.
  2626. &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;/span&gt; &lt;span style=&quot;color: #66d9ef;&quot;&gt;type&lt;/span&gt; &lt;span style=&quot;color: #a6e22e;&quot;&gt;OpenFile&lt;/span&gt;: &lt;span style=&quot;color: #a6e22e;&quot;&gt;OpenFile&lt;/span&gt;;
  2627. &lt;span style=&quot;color: #e6db74;&quot;&gt;/// Return the 9p Qid for this file. A file is the same if the Qid is
  2628. &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;/span&gt; &lt;span style=&quot;color: #e6db74;&quot;&gt;/// the same. A Qid contains information about the mode of the file,
  2629. &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;/span&gt; &lt;span style=&quot;color: #e6db74;&quot;&gt;/// version of the file, and a unique 64 bit identifier.
  2630. &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;/span&gt; &lt;span style=&quot;color: #66d9ef;&quot;&gt;fn&lt;/span&gt; &lt;span style=&quot;color: #a6e22e;&quot;&gt;qid&lt;/span&gt;(&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;self) -&amp;gt; &lt;span style=&quot;color: #a6e22e;&quot;&gt;Qid&lt;/span&gt;;
  2631. &lt;span style=&quot;color: #e6db74;&quot;&gt;/// Construct the 9p Stat struct with metadata about a file.
  2632. &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;/span&gt; async &lt;span style=&quot;color: #66d9ef;&quot;&gt;fn&lt;/span&gt; &lt;span style=&quot;color: #a6e22e;&quot;&gt;stat&lt;/span&gt;(&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;self) -&amp;gt; &lt;span style=&quot;color: #a6e22e;&quot;&gt;FileResult&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;Stat&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;gt;&lt;/span&gt;;
  2633. &lt;span style=&quot;color: #e6db74;&quot;&gt;/// Attempt to update the file metadata.
  2634. &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;/span&gt; async &lt;span style=&quot;color: #66d9ef;&quot;&gt;fn&lt;/span&gt; &lt;span style=&quot;color: #a6e22e;&quot;&gt;wstat&lt;/span&gt;(&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;mut&lt;/span&gt; self, s: &lt;span style=&quot;color: #66d9ef;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;Stat&lt;/span&gt;) -&amp;gt; &lt;span style=&quot;color: #a6e22e;&quot;&gt;FileResult&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;()&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;gt;&lt;/span&gt;;
  2635. &lt;span style=&quot;color: #e6db74;&quot;&gt;/// Traverse the filesystem tree.
  2636. &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;/span&gt; async &lt;span style=&quot;color: #66d9ef;&quot;&gt;fn&lt;/span&gt; &lt;span style=&quot;color: #a6e22e;&quot;&gt;walk&lt;/span&gt;(&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;self, path: &lt;span style=&quot;color: #66d9ef;&quot;&gt;&amp;amp;&lt;/span&gt;[&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;str&lt;/span&gt;]) -&amp;gt; &lt;span style=&quot;color: #a6e22e;&quot;&gt;FileResult&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;(Option&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;Self&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;gt;&lt;/span&gt;, Vec&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;Self&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;gt;&lt;/span&gt;)&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;gt;&lt;/span&gt;;
  2637. &lt;span style=&quot;color: #e6db74;&quot;&gt;/// Request that a file's reference be removed from the file tree.
  2638. &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;/span&gt; async &lt;span style=&quot;color: #66d9ef;&quot;&gt;fn&lt;/span&gt; &lt;span style=&quot;color: #a6e22e;&quot;&gt;unlink&lt;/span&gt;(&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;mut&lt;/span&gt; self) -&amp;gt; &lt;span style=&quot;color: #a6e22e;&quot;&gt;FileResult&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;()&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;gt;&lt;/span&gt;;
  2639. &lt;span style=&quot;color: #e6db74;&quot;&gt;/// Create a file at a specific location in the file tree.
  2640. &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;/span&gt; async &lt;span style=&quot;color: #66d9ef;&quot;&gt;fn&lt;/span&gt; &lt;span style=&quot;color: #a6e22e;&quot;&gt;create&lt;/span&gt;(
  2641. &lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;mut&lt;/span&gt; self,
  2642. name: &lt;span style=&quot;color: #66d9ef;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;str&lt;/span&gt;,
  2643. perm: &lt;span style=&quot;color: #66d9ef;&quot;&gt;u16&lt;/span&gt;,
  2644. ty: &lt;span style=&quot;color: #a6e22e;&quot;&gt;FileType&lt;/span&gt;,
  2645. mode: &lt;span style=&quot;color: #a6e22e;&quot;&gt;OpenMode&lt;/span&gt;,
  2646. extension: &lt;span style=&quot;color: #66d9ef;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;str&lt;/span&gt;,
  2647. ) -&amp;gt; &lt;span style=&quot;color: #a6e22e;&quot;&gt;FileResult&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;Self&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;gt;&lt;/span&gt;;
  2648. &lt;span style=&quot;color: #e6db74;&quot;&gt;/// Open the File, returning a handle to the open file, which handles
  2649. &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;/span&gt; &lt;span style=&quot;color: #e6db74;&quot;&gt;/// file i/o. This is split into a second type since it is genuinely
  2650. &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;/span&gt; &lt;span style=&quot;color: #e6db74;&quot;&gt;/// unrelated -- and the fact that a file is Open or Closed can be
  2651. &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;/span&gt; &lt;span style=&quot;color: #e6db74;&quot;&gt;/// handled by the `arigato` server for us.
  2652. &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;/span&gt; async &lt;span style=&quot;color: #66d9ef;&quot;&gt;fn&lt;/span&gt; &lt;span style=&quot;color: #a6e22e;&quot;&gt;open&lt;/span&gt;(&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;mut&lt;/span&gt; self, mode: &lt;span style=&quot;color: #a6e22e;&quot;&gt;OpenMode&lt;/span&gt;) -&amp;gt; &lt;span style=&quot;color: #a6e22e;&quot;&gt;FileResult&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;Self::OpenFile&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;gt;&lt;/span&gt;;
  2653. }
  2654. &lt;span style=&quot;color: #e6db74;&quot;&gt;/// Simplified version of the arigato OpenFile trait; this isn't actually
  2655. &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;/// the same trait; there's some small cosmetic differences. The
  2656. &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;/// actual trait can be found at:
  2657. &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;///
  2658. &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;/// https://docs.rs/arigato/latest/arigato/server/trait.OpenFile.html
  2659. &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;trait&lt;/span&gt; OpenFile {
  2660. &lt;span style=&quot;color: #e6db74;&quot;&gt;/// iounit to report for this file. The iounit reported is used for Read
  2661. &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;/span&gt; &lt;span style=&quot;color: #e6db74;&quot;&gt;/// or Write operations to signal, if non-zero, the maximum size that is
  2662. &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;/span&gt; &lt;span style=&quot;color: #e6db74;&quot;&gt;/// guaranteed to be transferred atomically.
  2663. &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;/span&gt; &lt;span style=&quot;color: #66d9ef;&quot;&gt;fn&lt;/span&gt; &lt;span style=&quot;color: #a6e22e;&quot;&gt;iounit&lt;/span&gt;(&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;self) -&amp;gt; &lt;span style=&quot;color: #66d9ef;&quot;&gt;u32&lt;/span&gt;;
  2664. &lt;span style=&quot;color: #e6db74;&quot;&gt;/// Read some number of bytes up to `buf.len()` from the provided
  2665. &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;/span&gt; &lt;span style=&quot;color: #e6db74;&quot;&gt;/// `offset` of the underlying file. The number of bytes read is
  2666. &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;/span&gt; &lt;span style=&quot;color: #e6db74;&quot;&gt;/// returned.
  2667. &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;/span&gt; async &lt;span style=&quot;color: #66d9ef;&quot;&gt;fn&lt;/span&gt; &lt;span style=&quot;color: #a6e22e;&quot;&gt;read_at&lt;/span&gt;(
  2668. &lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;mut&lt;/span&gt; self,
  2669. buf: &lt;span style=&quot;color: #66d9ef;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;mut&lt;/span&gt; [&lt;span style=&quot;color: #66d9ef;&quot;&gt;u8&lt;/span&gt;],
  2670. offset: &lt;span style=&quot;color: #66d9ef;&quot;&gt;u64&lt;/span&gt;,
  2671. ) -&amp;gt; &lt;span style=&quot;color: #a6e22e;&quot;&gt;FileResult&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;u32&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;gt;&lt;/span&gt;;
  2672. &lt;span style=&quot;color: #e6db74;&quot;&gt;/// Write some number of bytes up to `buf.len()` from the provided
  2673. &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;/span&gt; &lt;span style=&quot;color: #e6db74;&quot;&gt;/// `offset` of the underlying file. The number of bytes written
  2674. &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;/span&gt; &lt;span style=&quot;color: #e6db74;&quot;&gt;/// is returned.
  2675. &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&lt;/span&gt; &lt;span style=&quot;color: #66d9ef;&quot;&gt;fn&lt;/span&gt; &lt;span style=&quot;color: #a6e22e;&quot;&gt;write_at&lt;/span&gt;(
  2676. &lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;mut&lt;/span&gt; self,
  2677. buf: &lt;span style=&quot;color: #66d9ef;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;mut&lt;/span&gt; [&lt;span style=&quot;color: #66d9ef;&quot;&gt;u8&lt;/span&gt;],
  2678. offset: &lt;span style=&quot;color: #66d9ef;&quot;&gt;u64&lt;/span&gt;,
  2679. ) -&amp;gt; &lt;span style=&quot;color: #a6e22e;&quot;&gt;FileResult&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;u32&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;gt;&lt;/span&gt;;
  2680. }
  2681. &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&quot;thanks-decade-ago-paultag&quot;&gt;Thanks, decade ago paultag!&lt;/h1&gt;
  2682. &lt;aside class=&quot;left&quot;&gt;
  2683. If this isn't my record for longest idea-to-wip-project time, it's close.
  2684. &lt;/aside&gt;
  2685. &lt;p&gt;Let’s do it! Let’s use &lt;code&gt;arigato&lt;/code&gt; to implement a &lt;code&gt;9p&lt;/code&gt; filesystem we’ll call
  2686. &lt;a href=&quot;https://github.com/paultag/debugfs&quot;&gt;debugfs&lt;/a&gt; that will serve all the debug
  2687. files shipped according to the &lt;code&gt;Packages&lt;/code&gt; metadata from the &lt;code&gt;apt&lt;/code&gt; archive. We’ll
  2688. fetch the &lt;code&gt;Packages&lt;/code&gt; file and construct a filesystem based on the reported
  2689. &lt;code&gt;Build-Id&lt;/code&gt; entries. For those who don’t know much about how an &lt;code&gt;apt&lt;/code&gt; repo
  2690. works, here’s the 2-second crash course on what we’re doing. The first is to
  2691. fetch the &lt;code&gt;Packages&lt;/code&gt; file, which is specific to a binary architecture (such as
  2692. &lt;code&gt;amd64&lt;/code&gt;, &lt;code&gt;arm64&lt;/code&gt; or &lt;code&gt;riscv64&lt;/code&gt;). That &lt;code&gt;architecture&lt;/code&gt; is specific to a
  2693. &lt;code&gt;component&lt;/code&gt; (such as &lt;code&gt;main&lt;/code&gt;, &lt;code&gt;contrib&lt;/code&gt; or &lt;code&gt;non-free&lt;/code&gt;). That &lt;code&gt;component&lt;/code&gt; is
  2694. specific to a &lt;code&gt;suite&lt;/code&gt;, such as &lt;code&gt;stable&lt;/code&gt;, &lt;code&gt;unstable&lt;/code&gt; or any of its aliases
  2695. (&lt;code&gt;bullseye&lt;/code&gt;, &lt;code&gt;bookworm&lt;/code&gt;, etc). Let’s take a look at the &lt;code&gt;Packages.xz&lt;/code&gt; file for
  2696. the &lt;code&gt;unstable-debug&lt;/code&gt; &lt;code&gt;suite&lt;/code&gt;, &lt;code&gt;main&lt;/code&gt; &lt;code&gt;component&lt;/code&gt;, for all &lt;code&gt;amd64&lt;/code&gt; binaries.&lt;/p&gt;
  2697. &lt;pre&gt;&lt;code&gt;$ curl \
  2698. https://deb.debian.org/debian-debug/dists/unstable-debug/main/binary-amd64/Packages.xz \
  2699. | unxz
  2700. &lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This will return the Debian-style
  2701. &lt;a href=&quot;https://man7.org/linux/man-pages/man5/deb822.5.html&quot;&gt;rfc2822-like&lt;/a&gt; headers,
  2702. which is an export of the metadata contained inside each &lt;code&gt;.deb&lt;/code&gt; file which
  2703. &lt;code&gt;apt&lt;/code&gt; (or other tools that can use the &lt;code&gt;apt&lt;/code&gt; repo format) use to fetch
  2704. information about debs. Let’s take a look at the debug headers for the
  2705. &lt;code&gt;netlabel-tools&lt;/code&gt; package in &lt;code&gt;unstable&lt;/code&gt; – which is a package named
  2706. &lt;code&gt;netlabel-tools-dbgsym&lt;/code&gt; in &lt;code&gt;unstable-debug&lt;/code&gt;.&lt;/p&gt;
  2707. &lt;pre&gt;&lt;code&gt;Package: netlabel-tools-dbgsym
  2708. Source: netlabel-tools (0.30.0-1)
  2709. Version: 0.30.0-1+b1
  2710. Installed-Size: 79
  2711. Maintainer: Paul Tagliamonte &amp;lt;paultag@debian.org&amp;gt;
  2712. Architecture: amd64
  2713. Depends: netlabel-tools (= 0.30.0-1+b1)
  2714. Description: debug symbols for netlabel-tools
  2715. Auto-Built-Package: debug-symbols
  2716. Build-Ids: e59f81f6573dadd5d95a6e4474d9388ab2777e2a
  2717. Description-md5: a0e587a0cf730c88a4010f78562e6db7
  2718. Section: debug
  2719. Priority: optional
  2720. Filename: pool/main/n/netlabel-tools/netlabel-tools-dbgsym_0.30.0-1+b1_amd64.deb
  2721. Size: 62776
  2722. SHA256: 0e9bdb087617f0350995a84fb9aa84541bc4df45c6cd717f2157aa83711d0c60
  2723. &lt;/code&gt;&lt;/pre&gt;&lt;p&gt;So here, we can parse the package headers in the &lt;code&gt;Packages.xz&lt;/code&gt; file, and store,
  2724. for each &lt;code&gt;Build-Id&lt;/code&gt;, the &lt;code&gt;Filename&lt;/code&gt; where we can fetch the &lt;code&gt;.deb&lt;/code&gt; at. Each
  2725. &lt;code&gt;.deb&lt;/code&gt; contains a number of files – but we’re only really interested in the
  2726. files inside the &lt;code&gt;.deb&lt;/code&gt; located at or under &lt;code&gt;/usr/lib/debug/.build-id/&lt;/code&gt;,
  2727. which you can find in &lt;code&gt;debugfs&lt;/code&gt; under
  2728. &lt;a href=&quot;https://github.com/paultag/debugfs/blob/main/src/deb822.rs&quot;&gt;rfc822.rs&lt;/a&gt;. It’s
  2729. crude, and very single-purpose, but I’m feeling a bit lazy.&lt;/p&gt;
  2730. &lt;h1 id=&quot;who-needs-dpkg&quot;&gt;Who needs dpkg?!&lt;/h1&gt;
  2731. &lt;aside class=&quot;right&quot;&gt;
  2732. Hilariously, the fourth? fifth? non-serious time (second serious time)
  2733. I've had to do this for a new language.
  2734. &lt;/aside&gt;
  2735. &lt;p&gt;For folks who haven’t seen it yet, a &lt;code&gt;.deb&lt;/code&gt; file is a special type of
  2736. &lt;a href=&quot;https://en.wikipedia.org/wiki/Ar_(Unix)&quot;&gt;.ar&lt;/a&gt; file, that contains (usually)
  2737. three files inside – &lt;code&gt;debian-binary&lt;/code&gt;, &lt;code&gt;control.tar.xz&lt;/code&gt; and &lt;code&gt;data.tar.xz&lt;/code&gt;.
  2738. The core of an &lt;code&gt;.ar&lt;/code&gt; file is a fixed size (&lt;code&gt;60 byte&lt;/code&gt;) entry header,
  2739. followed by the specified &lt;code&gt;size&lt;/code&gt; number of bytes.&lt;/p&gt;
  2740. &lt;pre&gt;&lt;code&gt;[8 byte .ar file magic]
  2741. [60 byte entry header]
  2742. [N bytes of data]
  2743. [60 byte entry header]
  2744. [N bytes of data]
  2745. [60 byte entry header]
  2746. [N bytes of data]
  2747. ...
  2748. &lt;/code&gt;&lt;/pre&gt;&lt;aside class=&quot;left&quot;&gt;
  2749. I can't believe it's already been over a decade since my NM process,
  2750. and nearly 16 years since I became an Ubuntu member.
  2751. &lt;/aside&gt;
  2752. &lt;p&gt;First up was to implement a basic &lt;code&gt;ar&lt;/code&gt; parser in
  2753. &lt;a href=&quot;https://github.com/paultag/debugfs/blob/main/src/ar.rs&quot;&gt;ar.rs&lt;/a&gt;. Before we get
  2754. into using it to parse a deb, as a quick diversion, let’s break apart a &lt;code&gt;.deb&lt;/code&gt;
  2755. file by hand – something that is a bit of a rite of passage (or at least it
  2756. used to be? I’m getting old) during the Debian nm (new member) process, to take
  2757. a look at where exactly the &lt;code&gt;.debug&lt;/code&gt; file lives inside the &lt;code&gt;.deb&lt;/code&gt; file.&lt;/p&gt;
  2758. &lt;pre&gt;&lt;code&gt;$ ar x netlabel-tools-dbgsym_0.30.0-1+b1_amd64.deb
  2759. $ ls
  2760. control.tar.xz debian-binary
  2761. data.tar.xz netlabel-tools-dbgsym_0.30.0-1+b1_amd64.deb
  2762. $ tar --list -f data.tar.xz | grep '.debug$'
  2763. ./usr/lib/debug/.build-id/e5/9f81f6573dadd5d95a6e4474d9388ab2777e2a.debug
  2764. &lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Since we know quite a bit about the structure of a &lt;code&gt;.deb&lt;/code&gt; file, and I had to
  2765. implement support from scratch anyway, I opted to implement a (very!) basic
  2766. debfile parser using HTTP Range requests. HTTP Range requests, if supported by
  2767. the server (denoted by a &lt;code&gt;accept-ranges: bytes&lt;/code&gt; HTTP header in response to an
  2768. HTTP &lt;code&gt;HEAD&lt;/code&gt; request to that file) means that we can add a header such as
  2769. &lt;code&gt;range: bytes=8-68&lt;/code&gt; to specifically request that the returned &lt;code&gt;GET&lt;/code&gt; body be the
  2770. byte range provided (in the above case, the bytes starting from byte offset &lt;code&gt;8&lt;/code&gt;
  2771. until byte offset &lt;code&gt;68&lt;/code&gt;). This means we can fetch just the ar file entry from
  2772. the &lt;code&gt;.deb&lt;/code&gt; file until we get to the file inside the &lt;code&gt;.deb&lt;/code&gt; we are interested in
  2773. (in our case, the &lt;code&gt;data.tar.xz&lt;/code&gt; file) – at which point we can request the body
  2774. of that file with a final &lt;code&gt;range&lt;/code&gt; request. I wound up writing a struct to
  2775. handle a &lt;code&gt;read_at&lt;/code&gt;-style API surface in
  2776. &lt;a href=&quot;https://github.com/paultag/debugfs/blob/main/src/hrange.rs&quot;&gt;hrange.rs&lt;/a&gt;, which
  2777. we can pair with &lt;code&gt;ar.rs&lt;/code&gt; above and start to find our data in the &lt;code&gt;.deb&lt;/code&gt; remotely
  2778. without downloading and unpacking the &lt;code&gt;.deb&lt;/code&gt; at all.&lt;/p&gt;
  2779. &lt;aside class=&quot;right&quot;&gt;
  2780. I really like
  2781. &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTTP/Range_requests&quot;&gt;HTTP Range&lt;/a&gt;
  2782. requests a lot.
  2783. &lt;/aside&gt;
  2784. &lt;aside class=&quot;left&quot;&gt;
  2785. I did some stats to figure out what compression dbgsym packages use these
  2786. days; my LAN debug mirror contains 113459 xz compressed tarfiles, and 9
  2787. gzip compressed tarfiles at the time of writing.
  2788. &lt;/aside&gt;
  2789. &lt;p&gt;After we have the body of the &lt;code&gt;data.tar.xz&lt;/code&gt; coming back through the HTTP
  2790. response, we get to pipe it through an &lt;code&gt;xz&lt;/code&gt; decompressor (this kinda sucked in
  2791. Rust, since a &lt;code&gt;tokio&lt;/code&gt; &lt;code&gt;AsyncRead&lt;/code&gt; is not the same as an &lt;code&gt;http&lt;/code&gt; Body response is
  2792. not the same as &lt;code&gt;std::io::Read&lt;/code&gt;, is not the same as an async (or sync)
  2793. &lt;code&gt;Iterator&lt;/code&gt; is not the same as what the &lt;code&gt;xz2&lt;/code&gt; crate expects; leading me to read
  2794. blocks of data to a buffer and stuff them through the decoder by looping over
  2795. the buffer for each &lt;code&gt;lzma2&lt;/code&gt; packet in a loop), and &lt;code&gt;tar&lt;/code&gt;file parser (similarly
  2796. troublesome). From there we get to iterate over all entries in the tarfile,
  2797. stopping when we reach our file of interest. Since we can’t seek, but &lt;code&gt;gdb&lt;/code&gt;
  2798. needs to, we’ll pull it out of the stream into a &lt;code&gt;Cursor&amp;lt;Vec&amp;lt;u8&amp;gt;&amp;gt;&lt;/code&gt; in-memory
  2799. and pass a handle to it back to the user.&lt;/p&gt;
  2800. &lt;p&gt;From here on out its a matter of
  2801. &lt;a href=&quot;https://github.com/paultag/debugfs/blob/main/src/debugfs.rs&quot;&gt;gluing together a File traited struct&lt;/a&gt;
  2802. in &lt;code&gt;debugfs&lt;/code&gt;, and serving the filesystem over TCP using &lt;code&gt;arigato&lt;/code&gt;. Done
  2803. deal!&lt;/p&gt;
  2804. &lt;h1 id=&quot;a-quick-diversion-about-compression&quot;&gt;A quick diversion about compression&lt;/h1&gt;
  2805. &lt;p&gt;I was originally hoping to avoid transferring the whole tar file over the
  2806. network (and therefore also reading the whole debug file into ram, which
  2807. objectively sucks), but quickly hit issues with figuring out a way around
  2808. seeking around an &lt;code&gt;xz&lt;/code&gt; file. What’s interesting is &lt;code&gt;xz&lt;/code&gt; has a great primitive
  2809. to solve this specific problem (specifically, use a block size that allows you
  2810. to seek to the block as close to your desired seek position just before it,
  2811. only discarding at most &lt;code&gt;block size - 1&lt;/code&gt; bytes), but &lt;code&gt;data.tar.xz&lt;/code&gt; files
  2812. generated by &lt;code&gt;dpkg&lt;/code&gt; appear to have a single mega-huge block for the whole file.
  2813. I don’t know why I would have expected any different, in retrospect. That means
  2814. that this now devolves into the base case of “How do I seek around an &lt;code&gt;lzma2&lt;/code&gt;
  2815. compressed data stream”; which is a lot more complex of a question.&lt;/p&gt;
  2816. &lt;aside class=&quot;left&quot;&gt;
  2817. After going through a lot of this, I realized just how complex
  2818. the xz format is -- it's a lot more than just lzma2!
  2819. &lt;/aside&gt;
  2820. &lt;p&gt;Thankfully, notoriously brilliant &lt;a href=&quot;https://github.com/tianon&quot;&gt;tianon&lt;/a&gt; was
  2821. nice enough to introduce me to &lt;a href=&quot;https://github.com/jonjohnsonjr&quot;&gt;Jon Johnson&lt;/a&gt;
  2822. who did something super similar – adapted a technique to seek inside a
  2823. compressed &lt;code&gt;gzip&lt;/code&gt; file, which lets his service
  2824. &lt;a href=&quot;https://oci.dag.dev/?image=debian%3Aunstable&quot;&gt;oci.dag.dev&lt;/a&gt;
  2825. seek through Docker container images super fast based on some prior work
  2826. such as &lt;code&gt;soci-snapshotter&lt;/code&gt;, &lt;code&gt;gztool&lt;/code&gt;, and
  2827. &lt;a href=&quot;https://github.com/madler/zlib/blob/0f51fb4933fc9ce18199cb2554dacea8033e7fd3/examples/zran.c&quot;&gt;zran.c&lt;/a&gt;.
  2828. He also pulled this party trick off for apk based distros
  2829. over at &lt;a href=&quot;https://apk.dag.dev/&quot;&gt;apk.dag.dev&lt;/a&gt;, which seems apropos.
  2830. Jon was nice enough to publish a lot of his work on this specifically in a
  2831. central place under the name “&lt;a href=&quot;https://github.com/jonjohnsonjr/targz&quot;&gt;targz&lt;/a&gt;”
  2832. on his GitHub, which has been a ton of fun to read through.&lt;/p&gt;
  2833. &lt;p&gt;The gist is that, by dumping the decompressor’s state (window of previous
  2834. bytes, in-memory data derived from the last &lt;code&gt;N-1 bytes&lt;/code&gt;) at specific
  2835. “checkpoints” along with the compressed data stream offset in bytes and
  2836. decompressed offset in bytes, one can seek to that checkpoint in the compressed
  2837. stream and pick up where you left off – creating a similar “block” mechanism
  2838. against the wishes of gzip. It means you’d need to do an &lt;code&gt;O(n)&lt;/code&gt; run over the
  2839. file, but every request after that will be sped up according to the number
  2840. of checkpoints you’ve taken.&lt;/p&gt;
  2841. &lt;p&gt;Given the complexity of &lt;code&gt;xz&lt;/code&gt; and &lt;code&gt;lzma2&lt;/code&gt;, I don’t think this is possible
  2842. for me at the moment – especially given most of the files I’ll be requesting
  2843. will not be loaded from again – especially when I can “just” cache the debug
  2844. header by &lt;code&gt;Build-Id&lt;/code&gt;. I want to implement this (because I’m generally curious
  2845. and Jon has a way of getting someone excited about compression schemes, which
  2846. is not a sentence I thought I’d ever say out loud), but for now I’m going to
  2847. move on without this optimization. Such a shame, since it kills a lot of the
  2848. work that went into seeking around the &lt;code&gt;.deb&lt;/code&gt; file in the first place, given
  2849. the &lt;code&gt;debian-binary&lt;/code&gt; and &lt;code&gt;control.tar.gz&lt;/code&gt; members are so small.&lt;/p&gt;
  2850. &lt;h1 id=&quot;the-good&quot;&gt;The Good&lt;/h1&gt;
  2851. &lt;p&gt;First, the good news right? It works! That’s pretty cool. I’m positive
  2852. my younger self would be amused and happy to see this working; as is
  2853. current day paultag. Let’s take &lt;code&gt;debugfs&lt;/code&gt; out for a spin! First, we need
  2854. to mount the filesystem. It even works on an entirely unmodified, stock
  2855. Debian box on my LAN, which is &lt;em&gt;huge&lt;/em&gt;. Let’s take it for a spin:&lt;/p&gt;
  2856. &lt;pre&gt;&lt;code&gt;$ mount \
  2857. -t 9p \
  2858. -o trans=tcp,version=9p2000.u,aname=unstable-debug \
  2859. 192.168.0.2 \
  2860. /usr/lib/debug/.build-id/
  2861. &lt;/code&gt;&lt;/pre&gt;&lt;p&gt;And, let’s prove to ourselves that this actually mounted before we go
  2862. trying to use it:&lt;/p&gt;
  2863. &lt;pre&gt;&lt;code&gt;$ mount | grep build-id
  2864. 192.168.0.2 on /usr/lib/debug/.build-id type 9p (rw,relatime,aname=unstable-debug,access=user,trans=tcp,version=9p2000.u,port=564)
  2865. &lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Slick. We’ve got an open connection to the server, where our host
  2866. will keep a connection alive as root, attached to the filesystem provided
  2867. in &lt;code&gt;aname&lt;/code&gt;. Let’s take a look at it.&lt;/p&gt;
  2868. &lt;pre&gt;&lt;code&gt;$ ls /usr/lib/debug/.build-id/
  2869. 00 0d 1a 27 34 41 4e 5b 68 75 82 8E 9b a8 b5 c2 CE db e7 f3
  2870. 01 0e 1b 28 35 42 4f 5c 69 76 83 8f 9c a9 b6 c3 cf dc E7 f4
  2871. 02 0f 1c 29 36 43 50 5d 6a 77 84 90 9d aa b7 c4 d0 dd e8 f5
  2872. 03 10 1d 2a 37 44 51 5e 6b 78 85 91 9e ab b8 c5 d1 de e9 f6
  2873. 04 11 1e 2b 38 45 52 5f 6c 79 86 92 9f ac b9 c6 d2 df ea f7
  2874. 05 12 1f 2c 39 46 53 60 6d 7a 87 93 a0 ad ba c7 d3 e0 eb f8
  2875. 06 13 20 2d 3a 47 54 61 6e 7b 88 94 a1 ae bb c8 d4 e1 ec f9
  2876. 07 14 21 2e 3b 48 55 62 6f 7c 89 95 a2 af bc c9 d5 e2 ed fa
  2877. 08 15 22 2f 3c 49 56 63 70 7d 8a 96 a3 b0 bd ca d6 e3 ee fb
  2878. 09 16 23 30 3d 4a 57 64 71 7e 8b 97 a4 b1 be cb d7 e4 ef fc
  2879. 0a 17 24 31 3e 4b 58 65 72 7f 8c 98 a5 b2 bf cc d8 E4 f0 fd
  2880. 0b 18 25 32 3f 4c 59 66 73 80 8d 99 a6 b3 c0 cd d9 e5 f1 fe
  2881. 0c 19 26 33 40 4d 5a 67 74 81 8e 9a a7 b4 c1 ce da e6 f2 ff
  2882. &lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Outstanding. Let’s try using &lt;code&gt;gdb&lt;/code&gt; to debug a binary that was provided by
  2883. the &lt;code&gt;Debian&lt;/code&gt; archive, and see if it’ll load the ELF by &lt;code&gt;build-id&lt;/code&gt; from the
  2884. right &lt;code&gt;.deb&lt;/code&gt; in the &lt;code&gt;unstable-debug&lt;/code&gt; suite:&lt;/p&gt;
  2885. &lt;pre&gt;&lt;code&gt;$ gdb -q /usr/sbin/netlabelctl
  2886. Reading symbols from /usr/sbin/netlabelctl...
  2887. Reading symbols from /usr/lib/debug/.build-id/e5/9f81f6573dadd5d95a6e4474d9388ab2777e2a.debug...
  2888. (gdb)
  2889. &lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Yes! Yes it will!&lt;/p&gt;
  2890. &lt;pre&gt;&lt;code&gt;$ file /usr/lib/debug/.build-id/e5/9f81f6573dadd5d95a6e4474d9388ab2777e2a.debug
  2891. /usr/lib/debug/.build-id/e5/9f81f6573dadd5d95a6e4474d9388ab2777e2a.debug: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter *empty*, BuildID[sha1]=e59f81f6573dadd5d95a6e4474d9388ab2777e2a, for GNU/Linux 3.2.0, with debug_info, not stripped
  2892. &lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&quot;the-bad&quot;&gt;The Bad&lt;/h1&gt;
  2893. &lt;p&gt;Linux’s support for &lt;code&gt;9p&lt;/code&gt; is mainline, which is great, but it’s not robust.
  2894. Network issues or server restarts will wedge the mountpoint (Linux can’t
  2895. reconnect when the tcp connection breaks), and things that work fine on local
  2896. filesystems get translated in a way that causes a lot of network chatter – for
  2897. instance, just due to the way the syscalls are translated, doing an &lt;code&gt;ls&lt;/code&gt;, will
  2898. result in a &lt;code&gt;stat&lt;/code&gt; call for each file in the directory, even though linux had
  2899. just got a &lt;code&gt;stat&lt;/code&gt; entry for every file while it was resolving directory names.
  2900. On top of that, Linux will serialize all I/O with the server, so there’s no
  2901. concurrent requests for file information, writes, or reads pending at the same
  2902. time to the server; and &lt;code&gt;read&lt;/code&gt; and &lt;code&gt;write&lt;/code&gt; throughput will degrade as latency
  2903. increases due to increasing round-trip time, even though there are offsets
  2904. included in the &lt;code&gt;read&lt;/code&gt; and &lt;code&gt;write&lt;/code&gt; calls. It works well enough, but is
  2905. frustrating to run up against, since there’s not a lot you can do server-side
  2906. to help with this beyond implementing the &lt;code&gt;9P2000.L&lt;/code&gt; variant (which, maybe is
  2907. worth it).&lt;/p&gt;
  2908. &lt;h1 id=&quot;the-ugly&quot;&gt;The Ugly&lt;/h1&gt;
  2909. &lt;p&gt;Unfortunately, we don’t know the file size(s) until we’ve actually opened the
  2910. underlying &lt;code&gt;tar&lt;/code&gt; file and found the correct member, so for most files, we don’t
  2911. know the real size to report when getting a &lt;code&gt;stat&lt;/code&gt;. We can’t parse the tarfiles
  2912. for every &lt;code&gt;stat&lt;/code&gt; call, since that’d make &lt;code&gt;ls&lt;/code&gt; even slower (bummer). Only
  2913. hiccup is that when I report a filesize of zero, &lt;code&gt;gdb&lt;/code&gt; throws a bit of a
  2914. fit; let’s try with a size of &lt;code&gt;0&lt;/code&gt; to start:&lt;/p&gt;
  2915. &lt;pre&gt;&lt;code&gt;$ ls -lah /usr/lib/debug/.build-id/e5/9f81f6573dadd5d95a6e4474d9388ab2777e2a.debug
  2916. -r--r--r-- 1 root root 0 Dec 31 1969 /usr/lib/debug/.build-id/e5/9f81f6573dadd5d95a6e4474d9388ab2777e2a.debug
  2917. $ gdb -q /usr/sbin/netlabelctl
  2918. Reading symbols from /usr/sbin/netlabelctl...
  2919. Reading symbols from /usr/lib/debug/.build-id/e5/9f81f6573dadd5d95a6e4474d9388ab2777e2a.debug...
  2920. warning: Discarding section .note.gnu.build-id which has a section size (24) larger than the file size [in module /usr/lib/debug/.build-id/e5/9f81f6573dadd5d95a6e4474d9388ab2777e2a.debug]
  2921. [...]
  2922. &lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This obviously won’t work since &lt;code&gt;gdb&lt;/code&gt; will throw away all our hard work because
  2923. of &lt;code&gt;stat&lt;/code&gt;’s output, and neither will loading the real size of the underlying
  2924. file. That only leaves us with hardcoding a file size and hope nothing else
  2925. breaks significantly as a result. Let’s try it again:&lt;/p&gt;
  2926. &lt;pre&gt;&lt;code&gt;$ ls -lah /usr/lib/debug/.build-id/e5/9f81f6573dadd5d95a6e4474d9388ab2777e2a.debug
  2927. -r--r--r-- 1 root root 954M Dec 31 1969 /usr/lib/debug/.build-id/e5/9f81f6573dadd5d95a6e4474d9388ab2777e2a.debug
  2928. $ gdb -q /usr/sbin/netlabelctl
  2929. Reading symbols from /usr/sbin/netlabelctl...
  2930. Reading symbols from /usr/lib/debug/.build-id/e5/9f81f6573dadd5d95a6e4474d9388ab2777e2a.debug...
  2931. (gdb)
  2932. &lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Much better. I mean, terrible but better. Better for now, anyway.&lt;/p&gt;
  2933. &lt;h1 id=&quot;kilroy-was-here&quot;&gt;Kilroy was here&lt;/h1&gt;
  2934. &lt;p&gt;Do I think this is a particularly good idea? I mean; kinda. I’m probably going
  2935. to make some fun &lt;code&gt;9p&lt;/code&gt; &lt;code&gt;arigato&lt;/code&gt;-based filesystems for use around my LAN, but I
  2936. don’t think I’ll be moving to use &lt;code&gt;debugfs&lt;/code&gt; until I can figure out how to
  2937. ensure the connection is more resilient to changing networks, server restarts
  2938. and fixes on i/o performance. I think it was a useful exercise and is a pretty
  2939. great hack, but I don’t think this’ll be shipping anywhere anytime soon.&lt;/p&gt;
  2940. &lt;p&gt;Along with me publishing this post, I’ve pushed up all my repos; so you
  2941. should be able to play along at home! There’s a lot more work to be done
  2942. on &lt;code&gt;arigato&lt;/code&gt;; but it does handshake and successfully export a working
  2943. &lt;code&gt;9P2000.u&lt;/code&gt; filesystem. Check it out on on my github at
  2944. &lt;a href=&quot;https://github.com/paultag/arigato&quot;&gt;arigato&lt;/a&gt;,
  2945. &lt;a href=&quot;https://github.com/paultag/debugfs&quot;&gt;debugfs&lt;/a&gt;
  2946. and also on &lt;a href=&quot;https://crates.io/crates/arigato&quot;&gt;crates.io&lt;/a&gt;
  2947. and &lt;a href=&quot;https://docs.rs/arigato&quot;&gt;docs.rs&lt;/a&gt;.&lt;/p&gt;
  2948. &lt;p&gt;At least I can say I was here and I got it working after all these years.&lt;/p&gt;</description>
  2949. <pubDate>Sat, 13 Apr 2024 13:27:00 +0000</pubDate>
  2950. </item>
  2951. <item>
  2952. <title>Scarlett Gately Moore: Kubuntu: Noble Numbat Beta available! Qt6 snaps coming soon.</title>
  2953. <guid isPermaLink="false">https://www.scarlettgatelymoore.dev/?p=437</guid>
  2954. <link>https://www.scarlettgatelymoore.dev/kubuntu-noble-numbat-beta-available-qt6-snaps-coming-soon/</link>
  2955. <description>&lt;figure class=&quot;wp-block-image aligncenter size-large is-resized&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;not-transparent wp-image-439&quot; data-dominant-color=&quot;838e9d&quot; data-has-transparency=&quot;false&quot; height=&quot;640&quot; src=&quot;https://www.scarlettgatelymoore.dev/wp-content/uploads/VirtualBox_kubuntu-noble_11_04_2024_05_52_10-1024x640.webp&quot; width=&quot;1024&quot; /&gt;&lt;/figure&gt;
  2956.  
  2957.  
  2958.  
  2959. &lt;p&gt;It has been a very busy couple of weeks as we worked against some major transitions and a security fix that required a rebuild of the $world. I am happy to report that against all odds we have a beta release! You can read all about it here: &lt;a href=&quot;https://kubuntu.org/news/kubuntu-24-04-beta-released/&quot;&gt;https://kubuntu.org/news/kubuntu-24-04-beta-released/&lt;/a&gt; Post beta freeze I have already begun pushing our fixes for known issues today. A big one being our new branding! Very exciting times in the Kubuntu world.&lt;/p&gt;
  2960.  
  2961.  
  2962.  
  2963. &lt;p&gt;In the snap world I will be using my free time to start knocking out KDE applications ( not covered by the project ). I have also recruited some help, so you should start seeing these pop up in the edge channel very soon!&lt;/p&gt;
  2964.  
  2965.  
  2966.  
  2967. &lt;p&gt;Now that we are nearing the release of Noble Numbat, my contract is coming to an end with Kubuntu. If you would like to see Plasma 6 in the next release and in a PPA for Noble, please consider donating to extend my contract at &lt;a href=&quot;https://kubuntu.org/donate&quot;&gt;https://kubuntu.org/donate&lt;/a&gt; !&lt;/p&gt;
  2968.  
  2969.  
  2970.  
  2971. &lt;p&gt;On a personal level, I am still looking to help with my grandson and you can find that here: &lt;a href=&quot;https://www.gofundme.com/f/in-loving-memory-of-william-billy-dean-scalf&quot;&gt;https://www.gofundme.com/f/in-loving-memory-of-william-billy-dean-scalf&lt;/a&gt;&lt;/p&gt;
  2972.  
  2973.  
  2974.  
  2975. &lt;p&gt;Thanks for stopping by,&lt;/p&gt;
  2976.  
  2977.  
  2978.  
  2979. &lt;p&gt;Scarlett&lt;/p&gt;</description>
  2980. <pubDate>Fri, 12 Apr 2024 19:29:58 +0000</pubDate>
  2981. </item>
  2982. <item>
  2983. <title>Ubuntu Studio: Ubuntu Studio 24.04 LTS Beta Released</title>
  2984. <guid isPermaLink="false">https://ubuntustudio.org/?p=2742</guid>
  2985. <link>https://ubuntustudio.org/2024/04/ubuntu-studio-24-04-lts-beta-released/</link>
  2986. <description>&lt;div class=&quot;wp-block-image&quot; id=&quot;block-85f39608-c985-4310-86d5-00b9690ffde7&quot;&gt;&lt;figure class=&quot;aligncenter size-full is-resized&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-2749&quot; height=&quot;223&quot; src=&quot;https://ubuntustudio.org/wp-content/uploads/2024/04/08a9/betabanner.png&quot; width=&quot;600&quot; /&gt;&lt;/figure&gt;&lt;/div&gt;
  2987.  
  2988.  
  2989.  
  2990. &lt;p id=&quot;block-dfae7f3f-d386-4297-b510-560ae7fce8a5&quot;&gt;The Ubuntu Studio team is pleased to announce the beta release of Ubuntu Studio 24.04 LTS, codenamed “Noble Numbat”.&lt;/p&gt;
  2991.  
  2992.  
  2993.  
  2994. &lt;p id=&quot;block-ebf85cba-74ad-4dc6-a731-f595c9f28a72&quot;&gt;While this beta is reasonably free of any showstopper installer bugs, you will find some bugs within. This image is, however, mostly representative of what you will find when Ubuntu Studio 24.04 is released on April 25, 2024.&lt;/p&gt;
  2995.  
  2996.  
  2997.  
  2998. &lt;h2 id=&quot;block-6ca66e3a-8d42-42a8-a0cf-a8ed86e6025f&quot;&gt;Special Notes&lt;/h2&gt;
  2999.  
  3000.  
  3001.  
  3002. &lt;p id=&quot;block-708043b1-523e-4fb9-92ca-720e3316371a&quot;&gt;The Ubuntu Studio 24.04 LTS 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 DVD. For this reason, we recommend downloading to a compatible file system. When creating a boot medium, we recommend &lt;a href=&quot;https://ubuntu.com/tutorials/create-a-usb-stick-on-ubuntu#1-overview&quot;&gt;creating a bootable USB stick&lt;/a&gt; with the ISO image or burning to a Dual-Layer DVD.&lt;/p&gt;
  3003.  
  3004.  
  3005.  
  3006. &lt;p id=&quot;block-fa4be379-b904-4919-9502-c73469ca31ef&quot;&gt;Images can be obtained from this link: &lt;a href=&quot;https://cdimage.ubuntu.com/ubuntustudio/releases/24.04/beta/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;https://cdimage.ubuntu.com/ubuntustudio/releases/24.04/beta/&lt;/a&gt;&lt;/p&gt;
  3007.  
  3008.  
  3009.  
  3010. &lt;p id=&quot;block-bf39c734-e080-4549-9621-044e9241d48c&quot;&gt;Full updated information, including &lt;strong&gt;Upgrade Instructions,&lt;/strong&gt; are available in the &lt;strong&gt;&lt;a href=&quot;https://ubuntustudio.org/ubuntu-studio-24-04-LTS-release-notes/&quot;&gt;Release Notes&lt;/a&gt;&lt;/strong&gt;&lt;a href=&quot;https://wiki.ubuntu.com/GroovyGorilla/Beta/UbuntuStudio&quot;&gt;.&lt;/a&gt;&lt;/p&gt;
  3011.  
  3012.  
  3013.  
  3014. &lt;p&gt;&lt;strong&gt;Please note that upgrading before the release of 24.04.1,&lt;/strong&gt; &lt;strong&gt;due August 2024, is unsupported.&lt;/strong&gt;&lt;/p&gt;
  3015.  
  3016.  
  3017.  
  3018. &lt;h2 id=&quot;block-aaaf14ed-800d-473e-abc2-4f2db719e0d7&quot;&gt;New Features This Release&lt;/h2&gt;
  3019.  
  3020.  
  3021.  
  3022. &lt;ul id=&quot;block-05beff49-852b-4564-9df3-018c2354c56e&quot;&gt;&lt;li&gt;&lt;strong&gt;PipeWire&lt;/strong&gt; continues to improve with every release and is so robust it can be used for professional and prosumer use. Version 1.0.4&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Ubuntu Studio Installer&lt;/strong&gt;‘s included &lt;strong&gt;&lt;a data-type=&quot;page&quot; href=&quot;https://ubuntustudio.org/ubuntu-studio-installer/#audioconfig&quot;&gt;Ubuntu Studio Audio Configuration&lt;/a&gt; &lt;/strong&gt;utility for fine-tuning the PipeWire setup or changing the configuration altogether now includes the ability to create or remove a dummy audio device. Version 1.9&lt;/li&gt;&lt;/ul&gt;
  3023.  
  3024.  
  3025.  
  3026. &lt;h2 id=&quot;block-c3e434c7-367a-4777-b799-a3fd6a35e1b3&quot;&gt;Major Package Upgrades&lt;/h2&gt;
  3027.  
  3028.  
  3029.  
  3030. &lt;ul id=&quot;block-e855e703-e523-4f63-940a-d1071d6b8dbf&quot;&gt;&lt;li&gt;&lt;strong&gt;Ardour&lt;/strong&gt; version 8.4.0&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Qtractor&lt;/strong&gt; version 0.9.39&lt;/li&gt;&lt;li&gt;&lt;strong&gt;OBS Studio &lt;/strong&gt;version 30.0.2&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Audacity &lt;/strong&gt;version 3.4.2&lt;/li&gt;&lt;li&gt;&lt;strong&gt;digiKam&lt;/strong&gt; version 8.2.0&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Kdenlive &lt;/strong&gt;version 23.08.5&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Krita &lt;/strong&gt;version 5.2.2&lt;/li&gt;&lt;/ul&gt;
  3031.  
  3032.  
  3033.  
  3034. &lt;p id=&quot;block-5f0d720e-bce2-4330-9654-b7cd8589e194&quot;&gt;There are many other improvements, too numerous to list here. We encourage you to look around the freely-downloadable ISO image.&lt;/p&gt;
  3035.  
  3036.  
  3037.  
  3038. &lt;h2 id=&quot;block-8f4aa3cc-9bd2-4090-a685-153ad6761131&quot;&gt;Known Issues&lt;/h2&gt;
  3039.  
  3040.  
  3041.  
  3042. &lt;ul id=&quot;block-c6eb8dde-1349-461b-886c-937bdbed611d&quot;&gt;&lt;li&gt;Ubuntu Studio’s classic PulseAudio-JACK configuration cannot be used on Ubuntu Desktop (GNOME) due to a known issue with the ubuntu-desktop metapackage. (LP: #&lt;a href=&quot;https://launchpad.net/bugs/2033440&quot;&gt;2033440&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;We now discourage the use of the aforementioned classic PulseAudio-JACK configuration as PulseAudio is becoming deprecated with time in favor of PipeWire. PipeWire’s JACK configuration can be disabled to use JACK2 via QJackCTL for advanced users.&lt;/li&gt;&lt;li&gt;Due to the Ubuntu repositories being in-flux following the time_t transition and xz-utils security issue resolution, some items in the repository are uninstallable or causing other packaging conflicts. The Ubuntu Release Team is working around the clock to help resolve these issues, so patience is required.&lt;/li&gt;&lt;/ul&gt;
  3043.  
  3044.  
  3045.  
  3046. &lt;p id=&quot;block-cac00ac7-cbaa-4df0-a2b1-579dfba8e8a8&quot;&gt;Official Ubuntu Studio release notes can be found at &lt;a href=&quot;https://ubuntustudio.org/ubuntu-studio-24-04-LTS-release-notes/&quot;&gt;https://ubuntustudio.org/ubuntu-studio-24-04-LTS-release-notes/&lt;/a&gt;&lt;/p&gt;
  3047.  
  3048.  
  3049.  
  3050. &lt;p id=&quot;block-8127ec85-81e1-49ae-8132-7d07e86e6647&quot;&gt;Further known issues, mostly pertaining to the desktop environment, can be found at &lt;a href=&quot;https://wiki.ubuntu.com/NobleNumbat/ReleaseNotes/Kubuntu&quot;&gt;https://wiki.ubuntu.com/NobleNumbat/ReleaseNotes/Kubuntu&lt;/a&gt;&lt;/p&gt;
  3051.  
  3052.  
  3053.  
  3054. &lt;p id=&quot;block-547b9794-57c5-49eb-a8cb-884c89bb51a8&quot;&gt;Additionally, the main Ubuntu release notes contain more generic issues: &lt;a href=&quot;https://discourse.ubuntu.com/t/noble-numbat-release-notes/39890&quot;&gt;https://discourse.ubuntu.com/t/noble-numbat-release-notes/39890&lt;/a&gt;&lt;/p&gt;
  3055.  
  3056.  
  3057.  
  3058. &lt;h2 id=&quot;block-82f8513f-6640-43f9-bde7-5c17da0aa520&quot;&gt;How You Can Help&lt;/h2&gt;
  3059.  
  3060.  
  3061.  
  3062. &lt;p&gt;Please test using the test cases on &lt;a href=&quot;https://iso.qa.ubuntu.com&quot;&gt;https://iso.qa.ubuntu.com&lt;/a&gt;. All you need is a &lt;a href=&quot;https://launchpad.net&quot;&gt;Launchpad&lt;/a&gt; account to get started.&lt;/p&gt;
  3063.  
  3064.  
  3065.  
  3066. &lt;p&gt;Additionally, we need financial contributions. Our project lead, Erich Eickmeyer, is working long hours on this project and trying to generate a part-time income. See &lt;a data-id=&quot;2615&quot; data-type=&quot;post&quot; href=&quot;https://ubuntustudio.org/2023/09/a-message-from-the-project-lead/&quot;&gt;this post&lt;/a&gt; as to the reasons why and &lt;a data-id=&quot;56&quot; data-type=&quot;page&quot; href=&quot;https://ubuntustudio.org/contribute/&quot;&gt;go here&lt;/a&gt; to see how you can contribute financially (options are also in the sidebar).&lt;/p&gt;
  3067.  
  3068.  
  3069.  
  3070. &lt;h2 id=&quot;block-c7a21be7-9349-421e-a098-c0d2919f320a&quot;&gt;Frequently Asked Questions&lt;/h2&gt;
  3071.  
  3072.  
  3073.  
  3074. &lt;p id=&quot;block-163f794a-f451-40b0-bbbd-6f26c6cbe8e8&quot;&gt;&lt;strong&gt;Q:&lt;/strong&gt; Does Ubuntu Studio contain snaps?&lt;br /&gt;&lt;strong&gt;A:&lt;/strong&gt; 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.&lt;/p&gt;
  3075.  
  3076.  
  3077.  
  3078. &lt;p&gt;Thunderbird has become a snap this cycle in order for the maintainers to get security patches delivered faster.&lt;/p&gt;
  3079.  
  3080.  
  3081.  
  3082. &lt;p id=&quot;block-342134d3-a024-4b7b-b768-76c758b20acd&quot;&gt;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.&lt;/p&gt;
  3083.  
  3084.  
  3085.  
  3086. &lt;p id=&quot;block-c5b30c83-d27b-4fd0-a958-bc418f83bf2a&quot;&gt;&lt;strong&gt;Q:&lt;/strong&gt; If I install this Beta release, will I have to reinstall when the final release comes out?&lt;br /&gt;&lt;strong&gt;A:&lt;/strong&gt; No. If you keep it updated, your installation will automatically become the final release. However, if Audacity returns to the Ubuntu repositories before final release, then you might end-up with a double-installation of Audacity. Removal instructions of one or the other will be made available in a future post.&lt;/p&gt;
  3087.  
  3088.  
  3089.  
  3090. &lt;p id=&quot;block-2266cee7-0ea1-49cf-8340-594da42a09d7&quot;&gt;&lt;strong&gt;Q&lt;/strong&gt;: Will you make an ISO with {my favorite desktop environment}?&lt;br /&gt;&lt;strong&gt;A:&lt;/strong&gt; 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 &lt;a href=&quot;https://ubuntu.com/download/flavours&quot;&gt;official flavor for the desktop environment of your choice&lt;/a&gt; and use &lt;a href=&quot;https://ubuntustudio.org/ubuntu-studio-installer&quot;&gt;Ubuntu Studio Installer&lt;/a&gt; to get Ubuntu Studio – which does *not* convert that flavor to Ubuntu Studio but adds its benefits.&lt;/p&gt;
  3091.  
  3092.  
  3093.  
  3094. &lt;p id=&quot;block-48669a69-39bc-4971-b46b-c7da87133d24&quot;&gt;&lt;strong&gt;Q: &lt;/strong&gt;What if I don’t want all these packages installed on my machine?&lt;br /&gt;&lt;strong&gt;A: &lt;/strong&gt;Simply use the &lt;strong&gt;Ubuntu Studio Installer&lt;/strong&gt; to remove the features of Ubuntu Studio you don’t want or need!&lt;/p&gt;</description>
  3095. <pubDate>Fri, 12 Apr 2024 00:40:36 +0000</pubDate>
  3096. </item>
  3097. <item>
  3098. <title>Lubuntu Blog: Lubuntu Noble Beta Released!</title>
  3099. <guid isPermaLink="false">https://lubuntu.me/?p=3969</guid>
  3100. <link>https://lubuntu.me/noble-beta-released/</link>
  3101. <description>We are happy to announce the Beta release for Lubuntu Noble (what will become 24.04 LTS)! What makes this cycle unique? Lubuntu is a lightweight flavor of Ubuntu, based on LXQt and built for you. As an official flavor, we benefit from Canonical’s infrastructure and assistance, in addition to the support and enthusiasm from the […]</description>
  3102. <pubDate>Thu, 11 Apr 2024 21:04:10 +0000</pubDate>
  3103. </item>
  3104. <item>
  3105. <title>Lukas Märdian: Netplan v1.0 paves the way to stable, declarative network management</title>
  3106. <guid isPermaLink="false">https://blog.slyon.de/?p=2352</guid>
  3107. <link>https://blog.slyon.de/2024/04/04/netplan-v1-0-paves-the-way-to-stable-declarative-network-management/</link>
  3108. <description>&lt;figure class=&quot;wp-block-image is-style-default&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-2361&quot; height=&quot;483&quot; src=&quot;https://blog.slyon.de/wp-content/uploads/2024/03/image.png&quot; width=&quot;902&quot; /&gt;&lt;/figure&gt;
  3109.  
  3110.  
  3111.  
  3112. &lt;p class=&quot;has-text-align-center&quot;&gt;New “netplan status –diff” subcommand, finding differences between configuration and system state&lt;/p&gt;
  3113.  
  3114.  
  3115.  
  3116. &lt;p&gt;As the maintainer and lead developer for Netplan, I’m proud to announce the general availability of Netplan v1.0 after &lt;a href=&quot;https://blog.slyon.de/2023/07/18/a-declarative-approach-to-linux-networking-with-netplan/&quot;&gt;more than 7 years&lt;/a&gt; of development efforts. Over the years, we’ve so far had about 80 individual contributors from around the globe. This includes many contributions from our Netplan core-team at Canonical, but also from other big corporations such as Microsoft or Deutsche Telekom. Those contributions, along with the many we receive from our &lt;a href=&quot;https://github.com/canonical/netplan/pulls?q=is%3Apr+label%3Acommunity&quot;&gt;community of individual contributors&lt;/a&gt;, solidify Netplan as a healthy and trusted open source project. In an effort to make Netplan even more dependable, we started shipping upstream patch releases, such as 0.106.1 and 0.107.1, which make it easier to integrate fixes into our users’ custom workflows.&lt;/p&gt;
  3117.  
  3118.  
  3119.  
  3120. &lt;p&gt;With the release of version 1.0 we primarily focused on stability. However, being a major version upgrade, it allowed us to drop some long-standing legacy code from the &lt;strong&gt;libnetplan1&lt;/strong&gt; library. Removing this technical debt increases the maintainability of Netplan’s codebase going forward. The upcoming Ubuntu 24.04 LTS and Debian 13 releases will ship Netplan v1.0 to millions of users worldwide.&lt;/p&gt;
  3121.  
  3122.  
  3123.  
  3124. &lt;h2 class=&quot;wp-block-heading&quot;&gt;Highlights of version 1.0&lt;/h2&gt;
  3125.  
  3126.  
  3127.  
  3128. &lt;p&gt;In addition to stability and maintainability improvements, it’s worth looking at some of the new features that were included in the latest release:&lt;/p&gt;
  3129.  
  3130.  
  3131.  
  3132. &lt;ul&gt;
  3133. &lt;li&gt;Simultaneous WPA2 &amp;amp; WPA3 support.&lt;/li&gt;
  3134.  
  3135.  
  3136.  
  3137. &lt;li&gt;Introduction of a stable libnetplan1 API.&lt;/li&gt;
  3138.  
  3139.  
  3140.  
  3141. &lt;li&gt;Mellanox VF-LAG support for high performance SR-IOV networking.&lt;/li&gt;
  3142.  
  3143.  
  3144.  
  3145. &lt;li&gt;New &lt;strong&gt;hairpin&lt;/strong&gt; and &lt;strong&gt;port-mac-learning&lt;/strong&gt; settings, useful for VXLAN tunnels with FRRouting.&lt;/li&gt;
  3146.  
  3147.  
  3148.  
  3149. &lt;li&gt;New &lt;strong&gt;netplan status –diff&lt;/strong&gt; subcommand, finding differences between configuration and system state.&lt;/li&gt;
  3150. &lt;/ul&gt;
  3151.  
  3152.  
  3153.  
  3154. &lt;p&gt;Besides those highlights of the v1.0 release, I’d also like to shed some light on new functionality that was integrated within the past two years for those upgrading from the previous Ubuntu 22.04 LTS which used Netplan v0.104:&lt;/p&gt;
  3155.  
  3156.  
  3157.  
  3158. &lt;ul&gt;
  3159. &lt;li&gt;We added support for the management of new network interface types, such as &lt;strong&gt;veth&lt;/strong&gt;, &lt;strong&gt;dummy&lt;/strong&gt;, &lt;strong&gt;VXLAN&lt;/strong&gt;, &lt;strong&gt;VRF&lt;/strong&gt; or &lt;strong&gt;InfiniBand&lt;/strong&gt; (IPoIB). &lt;/li&gt;
  3160.  
  3161.  
  3162.  
  3163. &lt;li&gt;Wireless functionality was improved by &lt;a href=&quot;https://blog.slyon.de/2023/11/12/netplan-brings-consistent-network-configuration-across-desktop-server-cloud-and-iot/&quot;&gt;integrating Netplan with NetworkManager&lt;/a&gt; on desktop systems, adding support for WPA3 and adding the notion of a &lt;strong&gt;regulatory-domain&lt;/strong&gt;, to choose proper frequencies for specific regions. &lt;/li&gt;
  3164.  
  3165.  
  3166.  
  3167. &lt;li&gt;To improve maintainability, we moved to Meson as Netplan’s buildsystem, added upstream CI coverage for multiple Linux distributions and integrations (such as Debian testing, NetworkManager, snapd or cloud-init), checks for ABI compatibility, and automatic memory leak detection. &lt;/li&gt;
  3168.  
  3169.  
  3170.  
  3171. &lt;li&gt;We increased consistency between the supported backend renderers (systemd-networkd and NetworkManager), by &lt;a href=&quot;https://discourse.ubuntu.com/t/netplan-0-106-call-for-testing/33932&quot;&gt;matching physical network interfaces on permanent MAC address&lt;/a&gt;, when the &lt;strong&gt;match.macaddress&lt;/strong&gt; setting is being used, and added new hardware offloading functionality for high performance networking, such as Single-Root IO Virtualisation virtual function link-aggregation (SR-IOV VF-LAG).&lt;/li&gt;
  3172. &lt;/ul&gt;
  3173.  
  3174.  
  3175.  
  3176. &lt;p&gt;The much improved &lt;a href=&quot;https://netplan.readthedocs.io&quot;&gt;Netplan documentation&lt;/a&gt;, that is now hosted on “Read the Docs”, and new command line subcommands, such as &lt;strong&gt;netplan status&lt;/strong&gt;, make Netplan a well vested tool for declarative network management and troubleshooting.&lt;/p&gt;
  3177.  
  3178.  
  3179.  
  3180. &lt;h2 class=&quot;wp-block-heading&quot;&gt;Integrations&lt;/h2&gt;
  3181.  
  3182.  
  3183.  
  3184. &lt;p&gt;Those changes pave the way to integrate Netplan in 3rd party projects, such as system installers or cloud deployment methods. By shipping the new &lt;strong&gt;python3-netplan&lt;/strong&gt; Python bindings to libnetplan, it is now easier than ever to access Netplan functionality and network validation from other projects. We are proud that the &lt;a href=&quot;https://blog.slyon.de/2023/07/10/netplan-and-systemd-networkd-on-debian-bookworm/&quot;&gt;Debian Cloud Team chose Netplan&lt;/a&gt; to be the default network management tool in their official cloud-images for Debian Bookworm and beyond. Ubuntu’s NetworkManager package now uses &lt;a href=&quot;https://blog.slyon.de/2023/11/12/netplan-brings-consistent-network-configuration-across-desktop-server-cloud-and-iot/&quot;&gt;Netplan as it’s default backend on Ubuntu 23.10 Desktop&lt;/a&gt; systems and beyond. Further integrations happened with cloud-init and the Calamares installer.&lt;br /&gt;&lt;/p&gt;
  3185.  
  3186.  
  3187.  
  3188. &lt;p&gt;Please check out the &lt;a href=&quot;https://github.com/canonical/netplan/releases/1.0&quot;&gt;Netplan version 1.0 release&lt;/a&gt; on GitHub! If you want to learn more, follow our activities on &lt;a href=&quot;https://netplan.io/&quot;&gt;Netplan.io&lt;/a&gt;, &lt;a href=&quot;https://github.com/canonical/netplan&quot;&gt;GitHub&lt;/a&gt;, &lt;a href=&quot;https://bugs.launchpad.net/netplan&quot;&gt;Launchpad&lt;/a&gt;, &lt;a href=&quot;https://web.libera.chat/gamja/?channels=%23netplan&quot;&gt;IRC&lt;/a&gt; or our &lt;a href=&quot;https://discourse.ubuntu.com/t/blog-netplan-developer-diaries/35932&quot;&gt;Netplan Developer Diaries&lt;/a&gt; blog on discourse.&lt;/p&gt;</description>
  3189. <pubDate>Thu, 04 Apr 2024 15:39:18 +0000</pubDate>
  3190. </item>
  3191. <item>
  3192. <title>Dougie Richardson: Update Plesk Docker Images</title>
  3193. <guid isPermaLink="false">https://dougiewougie.com/?p=2749</guid>
  3194. <link>https://dougiewougie.com/2024/03/31/update-plesk-docker-images/</link>
  3195. <description>&lt;p&gt;Docker &amp;gt; Settings &amp;gt; Overview &amp;gt; Recreate, making sure that “Rest variable to default” is &lt;strong&gt;&lt;u&gt;not&lt;/u&gt;&lt;/strong&gt; checked.&lt;/p&gt;
  3196.  
  3197.  
  3198.  
  3199. &lt;p&gt;Finally start.&lt;/p&gt;
  3200.  
  3201.  
  3202.  
  3203. &lt;figure class=&quot;wp-block-image size-full&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-2751&quot; height=&quot;324&quot; src=&quot;https://dougiewougie.com/wp-content/uploads/2024/03/Untitled-removebg-preview.png&quot; width=&quot;611&quot; /&gt;&lt;/figure&gt;</description>
  3204. <pubDate>Sun, 31 Mar 2024 13:35:49 +0000</pubDate>
  3205. </item>
  3206. <item>
  3207. <title>Simos Xenitellis: How to install and setup the Incus Web UI</title>
  3208. <guid isPermaLink="false">https://blog.simos.info/?p=46759</guid>
  3209. <link>https://blog.simos.info/how-to-install-and-setup-the-incus-web-ui/</link>
  3210. <description>&lt;p&gt;&lt;a href=&quot;https://linuxcontainers.org/incus/&quot;&gt;Incus&lt;/a&gt; is a manager for &lt;strong&gt;&lt;em&gt;virtual machines (VM)&lt;/em&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;em&gt;system containers&lt;/em&gt;&lt;/strong&gt;. There is also &lt;a href=&quot;https://discuss.linuxcontainers.org/&quot;&gt;an Incus support forum&lt;/a&gt;.&lt;/p&gt;
  3211.  
  3212.  
  3213.  
  3214. &lt;p&gt;Typically you would use the &lt;code&gt;incus&lt;/code&gt; command-line interface (CLI) client to get access to the Incus manager and perform the tasks for the full life-cycle of the virtual machines and system containers. &lt;/p&gt;
  3215.  
  3216.  
  3217.  
  3218. &lt;p&gt;In this post we see how to install and setup the Incus Web UI. Just like the &lt;code&gt;incus&lt;/code&gt; CLI tool that gets access to the REST API of the Incus manager (through a Unix socket or HTTPS), the Incus Web UI does the same over HTTPS. I assume that you have already installed and setup Incus.&lt;/p&gt;
  3219.  
  3220.  
  3221. &lt;h2 class=&quot;simpletoc-title&quot;&gt;Table of Contents&lt;/h2&gt;
  3222. &lt;ul class=&quot;simpletoc-list&quot;&gt;
  3223. &lt;li&gt;&lt;a href=&quot;https://blog.simos.info/category/planet-ubuntu/feed/?mrss=off#prerequisites&quot;&gt;Prerequisites&lt;/a&gt;
  3224.  
  3225. &lt;/li&gt;
  3226. &lt;li&gt;&lt;a href=&quot;https://blog.simos.info/category/planet-ubuntu/feed/?mrss=off#installing-the-incus-web-ui-package&quot;&gt;Installing the Incus Web UI package&lt;/a&gt;
  3227.  
  3228. &lt;/li&gt;
  3229. &lt;li&gt;&lt;a href=&quot;https://blog.simos.info/category/planet-ubuntu/feed/?mrss=off#preparing-incus-to-serve-the-web-ui&quot;&gt;Preparing Incus to serve the Web UI&lt;/a&gt;
  3230.  
  3231. &lt;/li&gt;
  3232. &lt;li&gt;&lt;a href=&quot;https://blog.simos.info/category/planet-ubuntu/feed/?mrss=off#getting-the-browser-to-authenticate-to-the-server&quot;&gt;Getting the browser to authenticate to the server&lt;/a&gt;
  3233.  
  3234. &lt;/li&gt;
  3235. &lt;li&gt;&lt;a href=&quot;https://blog.simos.info/category/planet-ubuntu/feed/?mrss=off#using-the-incus-ui&quot;&gt;Using the Incus UI&lt;/a&gt;
  3236.  
  3237. &lt;/li&gt;
  3238. &lt;li&gt;&lt;a href=&quot;https://blog.simos.info/category/planet-ubuntu/feed/?mrss=off#conclusion&quot;&gt;Conclusion&lt;/a&gt;
  3239.  
  3240. &lt;/li&gt;
  3241. &lt;li&gt;&lt;a href=&quot;https://blog.simos.info/category/planet-ubuntu/feed/?mrss=off#tips-and-tricks&quot;&gt;Tips and Tricks&lt;/a&gt;
  3242.  
  3243.  
  3244. &lt;ul&gt;&lt;li&gt;
  3245. &lt;a href=&quot;https://blog.simos.info/category/planet-ubuntu/feed/?mrss=off#how-to-make-the-incus-port-accessible-to-localhost-only&quot;&gt;How to make the Incus port accessible to localhost only&lt;/a&gt;
  3246.  
  3247. &lt;/li&gt;
  3248. &lt;li&gt;&lt;a href=&quot;https://blog.simos.info/category/planet-ubuntu/feed/?mrss=off#whats-in-incusuicrt-and-incusuipfx&quot;&gt;What’s in incus-ui.crt and incus-ui.pfx?&lt;/a&gt;
  3249.  
  3250. &lt;/li&gt;
  3251. &lt;/ul&gt;
  3252. &lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://blog.simos.info/category/planet-ubuntu/feed/?mrss=off#troubleshooting&quot;&gt;Troubleshooting&lt;/a&gt;
  3253.  
  3254.  
  3255. &lt;ul&gt;&lt;li&gt;
  3256. &lt;a href=&quot;https://blog.simos.info/category/planet-ubuntu/feed/?mrss=off#error-unable-to-connect&quot;&gt;Error: Unable to connect&lt;/a&gt;
  3257.  
  3258. &lt;/li&gt;
  3259. &lt;li&gt;&lt;a href=&quot;https://blog.simos.info/category/planet-ubuntu/feed/?mrss=off#error-client-sent-an-http-request-to-an-https-server&quot;&gt;Error: Client sent an HTTP request to an HTTPS server&lt;/a&gt;
  3260.  
  3261. &lt;/li&gt;
  3262. &lt;li&gt;&lt;a href=&quot;https://blog.simos.info/category/planet-ubuntu/feed/?mrss=off#warning-potential-security-risk-ahead&quot;&gt;Warning: Potential Security Risk Ahead&lt;/a&gt;
  3263. &lt;/li&gt;
  3264. &lt;/ul&gt;
  3265. &lt;/li&gt;&lt;/ul&gt;
  3266.  
  3267. &lt;h2 class=&quot;wp-block-heading&quot; id=&quot;prerequisites&quot;&gt;Prerequisites&lt;/h2&gt;
  3268.  
  3269.  
  3270. &lt;p&gt;You should already have a installation of Incus. If you do not have yet, see the official documentation on &lt;a href=&quot;https://linuxcontainers.org/incus/docs/main/tutorial/first_steps/&quot;&gt;Incus installation&lt;/a&gt; and &lt;a href=&quot;https://linuxcontainers.org/incus/docs/main/howto/server_migrate_lxd/&quot;&gt;Incus migration&lt;/a&gt;, or my prior posts on &lt;a href=&quot;https://blog.simos.info/how-to-install-and-set-up-incus-on-a-cloud-server/&quot;&gt;Incus installation&lt;/a&gt; and &lt;a href=&quot;https://blog.simos.info/migrating-to-incus-from-lxd/&quot;&gt;Incus migration&lt;/a&gt;.&lt;/p&gt;
  3271.  
  3272.  
  3273. &lt;h2 class=&quot;wp-block-heading&quot; id=&quot;installing-the-incus-web-ui-package&quot;&gt;Installing the Incus Web UI package&lt;/h2&gt;
  3274.  
  3275.  
  3276. &lt;p&gt;The Incus Web UI package is &lt;code&gt;incus-ui-canonical&lt;/code&gt;. We install it. By installing the package, we can enable Incus to serve the necessary Web pages (from &lt;code&gt;/opt/incus/ui&lt;/code&gt;) so that we can connect with our browser and manage Incus itself. &lt;/p&gt;
  3277.  
  3278.  
  3279.  
  3280. &lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;&lt;kbd&gt;sudo apt install -y incus-ui-canonical&lt;/kbd&gt;&lt;/code&gt;&lt;/pre&gt;
  3281.  
  3282.  
  3283. &lt;h2 class=&quot;wp-block-heading&quot; id=&quot;preparing-incus-to-serve-the-web-ui&quot;&gt;Preparing Incus to serve the Web UI&lt;/h2&gt;
  3284.  
  3285.  
  3286. &lt;p&gt;By default Incus is not &lt;em&gt;listening&lt;/em&gt; to a Web port so that we can access directly through the browser. &lt;a href=&quot;https://linuxcontainers.org/incus/docs/main/howto/server_expose/&quot;&gt;We need to enable first Incus to activate access to the Web browser.&lt;/a&gt; By default there is no configuration with &lt;code&gt;incus config show&lt;/code&gt;.&lt;/p&gt;
  3287.  
  3288.  
  3289.  
  3290. &lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;debian@myincus:~$ &lt;kbd&gt;incus config show &lt;/kbd&gt;
  3291. config: {}
  3292. debian@myincus:~$ &lt;/code&gt;&lt;/pre&gt;
  3293.  
  3294.  
  3295.  
  3296. &lt;p&gt;We activate the Incus Web server, selecting the port number 8443. You are free to select another one, if you need to. We set &lt;code&gt;core.https_address&lt;/code&gt; to &lt;code&gt;:8443&lt;/code&gt;. This information appears in the &lt;code&gt;incus config&lt;/code&gt; output.&lt;/p&gt;
  3297.  
  3298.  
  3299.  
  3300. &lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;debian@myincus:~$ &lt;kbd&gt;incus config set core.https_address :8443&lt;/kbd&gt;
  3301. debian@myincus:~$ &lt;kbd&gt;incus config show &lt;/kbd&gt;
  3302. config:
  3303.  core.https_address: :8443
  3304. debian@myincus:~$ &lt;/code&gt;&lt;/pre&gt;
  3305.  
  3306.  
  3307.  
  3308. &lt;p&gt;Let’s verify that Incus is now listening to port 8443. Yes, it does. On all interfaces (because of the &lt;code&gt;*&lt;/code&gt;).&lt;/p&gt;
  3309.  
  3310.  
  3311.  
  3312. &lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;debian@myincus:~$ &lt;kbd&gt;sudo apt install -y lsof&lt;/kbd&gt;
  3313. ...
  3314. debian@myincus:~$ &lt;kbd&gt;sudo lsof -i :8443&lt;/kbd&gt;
  3315. COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
  3316. incusd  8338 root    8u  IPv6  29751      0t0  TCP *:8443 (LISTEN)
  3317. debian@myincus:~$ &lt;/code&gt;&lt;/pre&gt;
  3318.  
  3319.  
  3320.  
  3321. &lt;p&gt;This is HTTPS, where are the certificate and the server key (private key)?&lt;/p&gt;
  3322.  
  3323.  
  3324.  
  3325. &lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;debian@myincus:~$ &lt;kbd&gt;sudo ls -l /var/lib/incus/server.key /var/lib/incus/server.crt&lt;/kbd&gt;
  3326. -rw-r--r-- 1 root root 753 Mar 28 18:54 /var/lib/incus/server.crt
  3327. -rw------- 1 root root 288 Mar 28 18:54 /var/lib/incus/server.key
  3328. debian@myincus:~$ &lt;kbd&gt;sudo openssl x509 -in /var/lib/incus/server.crt -text -noout&lt;/kbd&gt;
  3329. Certificate:
  3330.    Data:
  3331.        Version: 3 (0x2)
  3332.        Serial Number:
  3333.            22:05:f1:14:f2:82:43:68:44:5e:1c:42:4c:28:5b:5c
  3334.        Signature Algorithm: ecdsa-with-SHA384
  3335.        Issuer: O = Linux Containers, CN = root@myincus
  3336.        Validity
  3337.            Not Before: Mar 28 18:54:17 2024 GMT
  3338.            Not After : Mar 26 18:54:17 2034 GMT
  3339.        Subject: O = Linux Containers, CN = root@myincus
  3340.        Subject Public Key Info:
  3341.            Public Key Algorithm: id-ecPublicKey
  3342.                Public-Key: (384 bit)
  3343.                pub:
  3344.                    04:fb:cd:b6:b2:25:55:68:a5:33:75:48:4c:b0:7a:
  3345.                    2f:e9:c0:16:af:6f:b2:36:f9:19:6e:b0:86:bf:d1:
  3346.                    9f:07:16:b1:26:8b:75:36:f2:fc:02:38:c7:fa:25:
  3347.                    39:01:6c:bb:48:a9:4f:57:0d:af:e1:0f:a3:cf:b1:
  3348.                    7c:a2:d9:46:77:e7:94:c7:00:1a:d0:5f:5f:93:d8:
  3349.                    11:39:8d:16:0e:d0:62:98:81:93:da:ec:b8:70:24:
  3350.                    f2:c4:da:91:0f:f8:8e
  3351.                ASN1 OID: secp384r1
  3352.                NIST CURVE: P-384
  3353.        X509v3 extensions:
  3354.            X509v3 Key Usage: critical
  3355.                Digital Signature, Key Encipherment
  3356.            X509v3 Extended Key Usage:
  3357.                TLS Web Server Authentication
  3358.            X509v3 Basic Constraints: critical
  3359.                CA:FALSE
  3360.            X509v3 Subject Alternative Name:
  3361.                DNS:myincus, IP Address:127.0.0.1, IP Address:0:0:0:0:0:0:0:1
  3362.    Signature Algorithm: ecdsa-with-SHA384
  3363.    Signature Value:
  3364.        30:64:02:30:15:f4:fa:7b:d6:52:79:d4:c9:27:b9:d6:6c:90:
  3365.        f7:0e:13:83:15:ac:af:cd:c5:f2:48:08:99:7f:7b:94:55:06:
  3366.        81:95:80:5f:0a:21:17:82:61:ac:5a:b6:5f:b8:49:b3:02:30:
  3367.        62:a3:92:66:da:ce:7c:01:49:7e:38:16:c6:16:b3:cb:aa:3d:
  3368.        1d:3f:63:12:93:e8:a1:0b:55:f0:80:99:d5:80:8a:a3:a6:2e:
  3369.        3d:68:90:a6:dc:55:29:0b:36:80:36:72
  3370.  
  3371. debian@myincus:~$&lt;/code&gt;&lt;/pre&gt;
  3372.  
  3373.  
  3374.  
  3375. &lt;p&gt;Note that this is a self-signed certificate. Chrome, Firefox and other browsers will complain; you can still accept to continue but it will show a broken padlock at the address bar. If you wish, you can replace these with proper certificates so that the padlock is intact. To do so, once you replace the server key and the server certificate with actual values, restart Incus. If, however, you are running an Incus cluster, you must use &lt;code&gt;lxc cluster update-certificate&lt;/code&gt; instead to update them. Note that a common alternative to dealing with Incus certificates, is to use a reverse-proxy; you get the reverse-proxy to use a proper certificate and leave Incus as is.&lt;/p&gt;
  3376.  
  3377.  
  3378.  
  3379. &lt;p&gt;At this point Incus is configured. We can continue with the next step where we get the client (our browser) to be authenticated to the server. &lt;/p&gt;
  3380.  
  3381.  
  3382. &lt;h2 class=&quot;wp-block-heading&quot; id=&quot;getting-the-browser-to-authenticate-to-the-server&quot;&gt;Getting the browser to authenticate to the server&lt;/h2&gt;
  3383.  
  3384.  
  3385. &lt;p&gt;Visit the URL of your Incus server with your browser. At first you will likely confronted with a message that the server certificate is not accepted (&lt;em&gt;Warning: Potential Security Risk Ahead&lt;/em&gt;). Click to &lt;em&gt;Accept&lt;/em&gt; and continue. Then, you are presented with the following screen that asks you to login. You are authenticated to the Incus server through &lt;em&gt;user certificates&lt;/em&gt;. You are prompted here to do just that. Your browser will create &lt;/p&gt;
  3386.  
  3387.  
  3388.  
  3389. &lt;ol&gt;
  3390. &lt;li&gt;a user certificate to be installed into Incus (&lt;code&gt;incus-ui.crt&lt;/code&gt;)&lt;/li&gt;
  3391.  
  3392.  
  3393.  
  3394. &lt;li&gt;the same user certificate with a private key that will be setup in your browser(s) (&lt;code&gt;incus-ui.pfx&lt;/code&gt;).&lt;/li&gt;
  3395. &lt;/ol&gt;
  3396.  
  3397.  
  3398.  
  3399. &lt;p&gt;Click on &lt;strong&gt;&lt;em&gt;Create a new certificate&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;
  3400.  
  3401.  
  3402. &lt;div class=&quot;wp-block-image&quot;&gt;
  3403. &lt;figure class=&quot;aligncenter size-full&quot;&gt;&lt;a href=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-1.png?ssl=1&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-46763&quot; data-attachment-id=&quot;46763&quot; data-comments-opened=&quot;1&quot; data-image-caption=&quot;&quot; data-image-description=&quot;&quot; data-image-meta=&quot;{&amp;quot;aperture&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;credit&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;camera&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;caption&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;created_timestamp&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;copyright&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;focal_length&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;iso&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;shutter_speed&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;title&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;orientation&amp;quot;:&amp;quot;0&amp;quot;}&quot; data-image-title=&quot;image-1&quot; data-large-file=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-1.png?fit=750%2C485&amp;amp;ssl=1&quot; data-medium-file=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-1.png?fit=300%2C194&amp;amp;ssl=1&quot; data-orig-file=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-1.png?fit=822%2C532&amp;amp;ssl=1&quot; data-orig-size=&quot;822,532&quot; data-permalink=&quot;https://blog.simos.info/how-to-install-and-setup-the-incus-web-ui/image-1/&quot; data-recalc-dims=&quot;1&quot; height=&quot;485&quot; src=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-1.png?resize=750%2C485&amp;amp;ssl=1&quot; width=&quot;750&quot; /&gt;&lt;/a&gt;Creating a new certificate.&lt;/figure&gt;&lt;/div&gt;
  3404.  
  3405.  
  3406. &lt;p&gt;Now click on &lt;strong&gt;&lt;em&gt;Generate&lt;/em&gt;&lt;/strong&gt; to get your browser to generate the private key and the certificate. &lt;/p&gt;
  3407.  
  3408.  
  3409.  
  3410. &lt;figure class=&quot;wp-block-image size-large&quot;&gt;&lt;a href=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-2.png?ssl=1&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-46766&quot; data-attachment-id=&quot;46766&quot; data-comments-opened=&quot;1&quot; data-image-caption=&quot;&quot; data-image-description=&quot;&quot; data-image-meta=&quot;{&amp;quot;aperture&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;credit&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;camera&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;caption&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;created_timestamp&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;copyright&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;focal_length&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;iso&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;shutter_speed&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;title&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;orientation&amp;quot;:&amp;quot;0&amp;quot;}&quot; data-image-title=&quot;image-2&quot; data-large-file=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-2.png?fit=750%2C641&amp;amp;ssl=1&quot; data-medium-file=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-2.png?fit=300%2C256&amp;amp;ssl=1&quot; data-orig-file=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-2.png?fit=1115%2C953&amp;amp;ssl=1&quot; data-orig-size=&quot;1115,953&quot; data-permalink=&quot;https://blog.simos.info/how-to-install-and-setup-the-incus-web-ui/image-2/&quot; data-recalc-dims=&quot;1&quot; height=&quot;641&quot; src=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-2.png?resize=750%2C641&amp;amp;ssl=1&quot; width=&quot;750&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
  3411.  
  3412.  
  3413.  
  3414. &lt;p&gt;&lt;/p&gt;
  3415.  
  3416.  
  3417.  
  3418. &lt;p&gt;You are asked whether you want to protect the certificate with a password. In our case we click on &lt;strong&gt;&lt;em&gt;Skip&lt;/em&gt;&lt;/strong&gt; because we do not want to encrypt the private key with a password. By clicking on &lt;strong&gt;&lt;em&gt;Skip&lt;/em&gt;&lt;/strong&gt;, the private key is still generated but it is not getting encrypted.&lt;/p&gt;
  3419.  
  3420.  
  3421. &lt;div class=&quot;wp-block-image&quot;&gt;
  3422. &lt;figure class=&quot;aligncenter size-full&quot;&gt;&lt;a href=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-3.png?ssl=1&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-46767&quot; data-attachment-id=&quot;46767&quot; data-comments-opened=&quot;1&quot; data-image-caption=&quot;&quot; data-image-description=&quot;&quot; data-image-meta=&quot;{&amp;quot;aperture&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;credit&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;camera&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;caption&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;created_timestamp&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;copyright&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;focal_length&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;iso&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;shutter_speed&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;title&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;orientation&amp;quot;:&amp;quot;0&amp;quot;}&quot; data-image-title=&quot;image-3&quot; data-large-file=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-3.png?fit=626%2C446&amp;amp;ssl=1&quot; data-medium-file=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-3.png?fit=300%2C214&amp;amp;ssl=1&quot; data-orig-file=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-3.png?fit=626%2C446&amp;amp;ssl=1&quot; data-orig-size=&quot;626,446&quot; data-permalink=&quot;https://blog.simos.info/how-to-install-and-setup-the-incus-web-ui/image-3/&quot; data-recalc-dims=&quot;1&quot; height=&quot;446&quot; src=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-3.png?resize=626%2C446&amp;amp;ssl=1&quot; width=&quot;626&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;&lt;/div&gt;
  3423.  
  3424.  
  3425. &lt;p&gt;At this point the browser generated &lt;code&gt;incus-ui.crt&lt;/code&gt;, which is the user certificate to install in Incus. In the following we added the user certificate to Incus.&lt;/p&gt;
  3426.  
  3427.  
  3428.  
  3429. &lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;debian@myincus:~$ &lt;kbd&gt;incus config trust list&lt;/kbd&gt;
  3430. +------+------+-------------+-------------+-------------+
  3431. | NAME | TYPE | DESCRIPTION | FINGERPRINT | EXPIRY DATE |
  3432. +------+------+-------------+-------------+-------------+
  3433. debian@myincus:~$ &lt;kbd&gt;incus config trust add-certificate incus-ui.crt&lt;/kbd&gt;
  3434. debian@myincus:~$ &lt;kbd&gt;incus config trust list&lt;/kbd&gt;
  3435. +--------------+--------+-------------+--------------+----------------------+
  3436. |     NAME     |  TYPE  | DESCRIPTION | FINGERPRINT  |     EXPIRY DATE      |
  3437. +--------------+--------+-------------+--------------+----------------------+
  3438. | incus-ui.crt | client |             | b89b80eb4c89 | 2026/12/23 21:08 UTC |
  3439. +--------------+--------+-------------+--------------+----------------------+
  3440. debian@myincus:~$ &lt;/code&gt;&lt;/pre&gt;
  3441.  
  3442.  
  3443. &lt;div class=&quot;wp-block-image&quot;&gt;
  3444. &lt;figure class=&quot;aligncenter size-large&quot;&gt;&lt;a href=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-4.png?ssl=1&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-46768&quot; data-attachment-id=&quot;46768&quot; data-comments-opened=&quot;1&quot; data-image-caption=&quot;&quot; data-image-description=&quot;&quot; data-image-meta=&quot;{&amp;quot;aperture&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;credit&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;camera&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;caption&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;created_timestamp&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;copyright&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;focal_length&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;iso&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;shutter_speed&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;title&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;orientation&amp;quot;:&amp;quot;0&amp;quot;}&quot; data-image-title=&quot;image-4&quot; data-large-file=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-4.png?fit=750%2C641&amp;amp;ssl=1&quot; data-medium-file=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-4.png?fit=300%2C256&amp;amp;ssl=1&quot; data-orig-file=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-4.png?fit=1115%2C953&amp;amp;ssl=1&quot; data-orig-size=&quot;1115,953&quot; data-permalink=&quot;https://blog.simos.info/how-to-install-and-setup-the-incus-web-ui/image-4/&quot; data-recalc-dims=&quot;1&quot; height=&quot;641&quot; src=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-4.png?resize=750%2C641&amp;amp;ssl=1&quot; width=&quot;750&quot; /&gt;&lt;/a&gt;The two files have been generated. We are adding &lt;code&gt;incus-ui.crt&lt;/code&gt; to Incus, and &lt;code&gt;incus-ui.pfx&lt;/code&gt; to the Web browser. &lt;/figure&gt;&lt;/div&gt;
  3445.  
  3446.  
  3447. &lt;p&gt;The page above has instructions on how to add the user certificate to Firefox, Chrome, Edge and macOS. For example, for the case of Firefox, type the following to the address bar and press Enter. Alternatively, go to Settings→Privacy &amp;amp; Security→Certificates. There, click on &lt;strong&gt;&lt;em&gt;View Certificates…&lt;/em&gt;&lt;/strong&gt; and select the &lt;strong&gt;&lt;em&gt;Your Certificates&lt;/em&gt;&lt;/strong&gt; tab. Finally, click to Import… the &lt;code&gt;incus-ui.pfx&lt;/code&gt; certificate file.&lt;/p&gt;
  3448.  
  3449.  
  3450.  
  3451. &lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;about:preferences#privacy&lt;/code&gt;&lt;/pre&gt;
  3452.  
  3453.  
  3454. &lt;div class=&quot;wp-block-image&quot;&gt;
  3455. &lt;figure class=&quot;aligncenter size-full&quot;&gt;&lt;a href=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-5.png?ssl=1&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-46769&quot; data-attachment-id=&quot;46769&quot; data-comments-opened=&quot;1&quot; data-image-caption=&quot;&quot; data-image-description=&quot;&quot; data-image-meta=&quot;{&amp;quot;aperture&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;credit&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;camera&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;caption&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;created_timestamp&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;copyright&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;focal_length&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;iso&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;shutter_speed&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;title&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;orientation&amp;quot;:&amp;quot;0&amp;quot;}&quot; data-image-title=&quot;image-5&quot; data-large-file=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-5.png?fit=750%2C175&amp;amp;ssl=1&quot; data-medium-file=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-5.png?fit=300%2C70&amp;amp;ssl=1&quot; data-orig-file=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-5.png?fit=768%2C179&amp;amp;ssl=1&quot; data-orig-size=&quot;768,179&quot; data-permalink=&quot;https://blog.simos.info/how-to-install-and-setup-the-incus-web-ui/image-5/&quot; data-recalc-dims=&quot;1&quot; height=&quot;175&quot; src=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-5.png?resize=750%2C175&amp;amp;ssl=1&quot; width=&quot;750&quot; /&gt;&lt;/a&gt;This is found in Firefox under &lt;strong&gt;&lt;em&gt;Settings&lt;/em&gt;&lt;/strong&gt;→&lt;strong&gt;&lt;em&gt;Privacy &amp;amp; Security&lt;/em&gt;&lt;/strong&gt;→&lt;strong&gt;&lt;em&gt;Certificates&lt;/em&gt;&lt;/strong&gt;.&lt;/figure&gt;&lt;/div&gt;
  3456.  
  3457.  
  3458. &lt;p&gt;When you add the &lt;code&gt;incus-ui.pfx&lt;/code&gt; user certificate in Firefox, it will appear as in the following screenshot.&lt;/p&gt;
  3459.  
  3460.  
  3461. &lt;div class=&quot;wp-block-image&quot;&gt;
  3462. &lt;figure class=&quot;aligncenter size-full&quot;&gt;&lt;a href=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-6.png?ssl=1&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-46770&quot; data-attachment-id=&quot;46770&quot; data-comments-opened=&quot;1&quot; data-image-caption=&quot;&quot; data-image-description=&quot;&quot; data-image-meta=&quot;{&amp;quot;aperture&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;credit&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;camera&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;caption&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;created_timestamp&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;copyright&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;focal_length&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;iso&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;shutter_speed&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;title&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;orientation&amp;quot;:&amp;quot;0&amp;quot;}&quot; data-image-title=&quot;image-6&quot; data-large-file=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-6.png?fit=705%2C482&amp;amp;ssl=1&quot; data-medium-file=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-6.png?fit=300%2C205&amp;amp;ssl=1&quot; data-orig-file=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-6.png?fit=705%2C482&amp;amp;ssl=1&quot; data-orig-size=&quot;705,482&quot; data-permalink=&quot;https://blog.simos.info/how-to-install-and-setup-the-incus-web-ui/image-6/&quot; data-recalc-dims=&quot;1&quot; height=&quot;482&quot; src=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-6.png?resize=705%2C482&amp;amp;ssl=1&quot; width=&quot;705&quot; /&gt;&lt;/a&gt;The &lt;code&gt;incus-ui.pfx&lt;/code&gt; certificate has been added to this instance of Firefox.&lt;/figure&gt;&lt;/div&gt;
  3463.  
  3464.  
  3465. &lt;p&gt;Subsequently, switch back to the Firefox tab with the Incus UI page and you are shown the following prompt to get your browser to send the user certificate to the Incus manager in order to get authenticated, and be able to manage Incus through the Web. Click on &lt;strong&gt;&lt;em&gt;OK&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;
  3466.  
  3467.  
  3468. &lt;div class=&quot;wp-block-image&quot;&gt;
  3469. &lt;figure class=&quot;aligncenter size-large&quot;&gt;&lt;a href=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-7.png?ssl=1&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-46771&quot; data-attachment-id=&quot;46771&quot; data-comments-opened=&quot;1&quot; data-image-caption=&quot;&quot; data-image-description=&quot;&quot; data-image-meta=&quot;{&amp;quot;aperture&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;credit&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;camera&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;caption&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;created_timestamp&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;copyright&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;focal_length&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;iso&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;shutter_speed&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;title&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;orientation&amp;quot;:&amp;quot;0&amp;quot;}&quot; data-image-title=&quot;image-7&quot; data-large-file=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-7.png?fit=750%2C311&amp;amp;ssl=1&quot; data-medium-file=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-7.png?fit=300%2C125&amp;amp;ssl=1&quot; data-orig-file=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-7.png?fit=1057%2C439&amp;amp;ssl=1&quot; data-orig-size=&quot;1057,439&quot; data-permalink=&quot;https://blog.simos.info/how-to-install-and-setup-the-incus-web-ui/image-7/&quot; data-recalc-dims=&quot;1&quot; height=&quot;311&quot; src=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-7.png?resize=750%2C311&amp;amp;ssl=1&quot; width=&quot;750&quot; /&gt;&lt;/a&gt;You are prompted to identify yourself to Incus UI in order to be able to manage the Incus installation.&lt;/figure&gt;&lt;/div&gt;
  3470.  
  3471.  
  3472. &lt;p&gt;Finally, you are able to manage Incus over the Web with Incus UI. The Web page loads up and you can perform all tasks that you can do with the &lt;code&gt;incus&lt;/code&gt; command-line client.&lt;/p&gt;
  3473.  
  3474.  
  3475. &lt;div class=&quot;wp-block-image&quot;&gt;
  3476. &lt;figure class=&quot;aligncenter size-full&quot;&gt;&lt;a href=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-8.png?ssl=1&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-46772&quot; data-attachment-id=&quot;46772&quot; data-comments-opened=&quot;1&quot; data-image-caption=&quot;&quot; data-image-description=&quot;&quot; data-image-meta=&quot;{&amp;quot;aperture&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;credit&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;camera&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;caption&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;created_timestamp&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;copyright&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;focal_length&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;iso&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;shutter_speed&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;title&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;orientation&amp;quot;:&amp;quot;0&amp;quot;}&quot; data-image-title=&quot;image-8&quot; data-large-file=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-8.png?fit=750%2C584&amp;amp;ssl=1&quot; data-medium-file=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-8.png?fit=300%2C233&amp;amp;ssl=1&quot; data-orig-file=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-8.png?fit=865%2C673&amp;amp;ssl=1&quot; data-orig-size=&quot;865,673&quot; data-permalink=&quot;https://blog.simos.info/how-to-install-and-setup-the-incus-web-ui/image-8/&quot; data-recalc-dims=&quot;1&quot; height=&quot;584&quot; src=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-8.png?resize=750%2C584&amp;amp;ssl=1&quot; width=&quot;750&quot; /&gt;&lt;/a&gt;Your browser is now authenticated through your user certificate and you can manage Incus over the Web with Incus UI.&lt;/figure&gt;&lt;/div&gt;
  3477.  
  3478. &lt;h2 class=&quot;wp-block-heading&quot; id=&quot;using-the-incus-ui&quot;&gt;Using the Incus UI&lt;/h2&gt;
  3479.  
  3480.  
  3481. &lt;p&gt;We click on &lt;strong&gt;&lt;em&gt;Create Instance&lt;/em&gt;&lt;/strong&gt; to create a first instance. We select from the list which image to use, then click to &lt;strong&gt;&lt;em&gt;Create and start&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;
  3482.  
  3483.  
  3484. &lt;div class=&quot;wp-block-image&quot;&gt;
  3485. &lt;figure class=&quot;aligncenter size-large&quot;&gt;&lt;a href=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-9.png?ssl=1&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-46774&quot; data-attachment-id=&quot;46774&quot; data-comments-opened=&quot;1&quot; data-image-caption=&quot;&quot; data-image-description=&quot;&quot; data-image-meta=&quot;{&amp;quot;aperture&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;credit&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;camera&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;caption&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;created_timestamp&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;copyright&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;focal_length&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;iso&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;shutter_speed&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;title&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;orientation&amp;quot;:&amp;quot;0&amp;quot;}&quot; data-image-title=&quot;image-9&quot; data-large-file=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-9.png?fit=750%2C454&amp;amp;ssl=1&quot; data-medium-file=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-9.png?fit=300%2C182&amp;amp;ssl=1&quot; data-orig-file=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-9.png?fit=1099%2C665&amp;amp;ssl=1&quot; data-orig-size=&quot;1099,665&quot; data-permalink=&quot;https://blog.simos.info/how-to-install-and-setup-the-incus-web-ui/image-9/&quot; data-recalc-dims=&quot;1&quot; height=&quot;454&quot; src=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image-9.png?resize=750%2C454&amp;amp;ssl=1&quot; width=&quot;750&quot; /&gt;&lt;/a&gt;Creating an instance and starting it.&lt;/figure&gt;&lt;/div&gt;
  3486.  
  3487.  
  3488. &lt;p&gt;While the instance is created, you are updated with the different steps that take place. In the end, the instance is successfully launched.&lt;/p&gt;
  3489.  
  3490.  
  3491. &lt;div class=&quot;wp-block-image&quot;&gt;
  3492. &lt;figure class=&quot;aligncenter size-large&quot;&gt;&lt;a href=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/Screenshot-2024-03-28-at-23-52-55-10.10.10.98-Incus-UI.png?ssl=1&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-46776&quot; data-attachment-id=&quot;46776&quot; data-comments-opened=&quot;1&quot; data-image-caption=&quot;&quot; data-image-description=&quot;&quot; data-image-meta=&quot;{&amp;quot;aperture&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;credit&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;camera&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;caption&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;created_timestamp&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;copyright&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;focal_length&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;iso&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;shutter_speed&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;title&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;orientation&amp;quot;:&amp;quot;0&amp;quot;}&quot; data-image-title=&quot;Screenshot-2024-03-28-at-23-52-55-10.10.10.98-Incus-UI&quot; data-large-file=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/Screenshot-2024-03-28-at-23-52-55-10.10.10.98-Incus-UI.png?fit=750%2C454&amp;amp;ssl=1&quot; data-medium-file=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/Screenshot-2024-03-28-at-23-52-55-10.10.10.98-Incus-UI.png?fit=300%2C182&amp;amp;ssl=1&quot; data-orig-file=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/Screenshot-2024-03-28-at-23-52-55-10.10.10.98-Incus-UI.png?fit=1099%2C665&amp;amp;ssl=1&quot; data-orig-size=&quot;1099,665&quot; data-permalink=&quot;https://blog.simos.info/how-to-install-and-setup-the-incus-web-ui/screenshot-2024-03-28-at-23-52-55-10-10-10-98-incus-ui/&quot; data-recalc-dims=&quot;1&quot; height=&quot;454&quot; src=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/Screenshot-2024-03-28-at-23-52-55-10.10.10.98-Incus-UI.png?resize=750%2C454&amp;amp;ssl=1&quot; width=&quot;750&quot; /&gt;&lt;/a&gt;The instance has been created and is running.&lt;/figure&gt;&lt;/div&gt;
  3493.  
  3494. &lt;h2 class=&quot;wp-block-heading&quot; id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
  3495.  
  3496.  
  3497. &lt;p&gt;With Incus UI you are able to go through all the workflow of managing Incus instances through your Web browser. Incus UI has been implemented as a stateless Web application, which means that no information are stored on the browser. For example, the browser does not maintain a database with the created instances; the state is maintained on Incus.&lt;/p&gt;
  3498.  
  3499.  
  3500.  
  3501. &lt;p&gt;In this post we saw how to setup Incus UI with SSL/TLS authentication. It’s also possible to setup Incus UI to use Single Sign-On (SSO). Here is &lt;a href=&quot;https://discuss.linuxcontainers.org/t/tutorial-configure-incus-ui-with-sso/19926&quot;&gt;a tutorial on how to setup Incus UI with Open-ID Connect (OIDC)&lt;/a&gt;.&lt;/p&gt;
  3502.  
  3503.  
  3504.  
  3505. &lt;p&gt;There are a few more UI Web applications for Incus, including &lt;code&gt;&lt;a href=&quot;https://github.com/melato/lxops&quot;&gt;lxops&lt;/a&gt;&lt;/code&gt;. At some point in the future I expect to cover them as well.&lt;/p&gt;
  3506.  
  3507.  
  3508. &lt;h2 class=&quot;wp-block-heading&quot; id=&quot;tips-and-tricks&quot;&gt;Tips and Tricks&lt;/h2&gt;
  3509.  
  3510. &lt;h3 class=&quot;wp-block-heading&quot; id=&quot;how-to-make-the-incus-port-accessible-to-localhost-only&quot;&gt;How to make the Incus port accessible to localhost only&lt;/h3&gt;
  3511.  
  3512.  
  3513. &lt;p&gt;The address has the format of &amp;lt;&lt;em&gt;ip address&lt;/em&gt;&amp;gt;:&amp;lt;&lt;em&gt;port&lt;/em&gt;&amp;gt;. You can specify &lt;em&gt;localhost&lt;/em&gt; (127.0.0.1) for the part of the IP address. By doing so, Incus will only bind to &lt;em&gt;localhost&lt;/em&gt; and listen to local connections only.&lt;/p&gt;
  3514.  
  3515.  
  3516.  
  3517. &lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;debian@myincus:~$ &lt;kbd&gt;incus config show&lt;/kbd&gt;
  3518. config:
  3519.  core.https_address: :8443
  3520. debian@myincus:~$ &lt;kbd&gt;incus config set core.https_address 127.0.0.1:8443&lt;/kbd&gt;
  3521. debian@myincus:~$ &lt;kbd&gt;incus config show&lt;/kbd&gt;
  3522. config:
  3523.  core.https_address: 127.0.0.1:8443
  3524. debian@myincus:~$ &lt;kbd&gt;sudo lsof -i :8443&lt;/kbd&gt;
  3525. COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
  3526. incusd  8338 root    8u  IPv4  30315      0t0  TCP localhost:8443 (LISTEN)
  3527. debian@myincus:~$ &lt;/code&gt;&lt;/pre&gt;
  3528.  
  3529.  
  3530. &lt;h3 class=&quot;wp-block-heading&quot; id=&quot;whats-in-incusuicrt-and-incusuipfx&quot;&gt;What’s in &lt;code&gt;incus-ui.crt&lt;/code&gt; and &lt;code&gt;incus-ui.pfx&lt;/code&gt;?&lt;/h3&gt;
  3531.  
  3532.  
  3533. &lt;p&gt;You can use &lt;code&gt;openssl&lt;/code&gt; to decode both files. This is an RSA 2048-bit certificate using the SHA-1 hash function.&lt;/p&gt;
  3534.  
  3535.  
  3536.  
  3537. &lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;$ &lt;kbd&gt;openssl x509 -in incus-ui.crt -noout -text&lt;/kbd&gt;
  3538. Certificate:
  3539.    Data:
  3540.        Version: 3 (0x2)
  3541.        Serial Number:
  3542.            01:12:00:11:07:65:00:03:00:10:00:41:00:04:09:11
  3543.        Signature Algorithm: sha1WithRSAEncryption
  3544.        Issuer: C = AU, ST = Some-State, O = Incus UI 10.10.10.98 (Browser Generated)
  3545.        Validity
  3546.            Not Before: Mar 28 21:08:58 2024 GMT
  3547.            Not After : Dec 23 21:08:58 2026 GMT
  3548.        Subject: C = AU, ST = Some-State, O = Incus UI 10.10.10.98 (Browser Generated)
  3549.        Subject Public Key Info:
  3550.            Public Key Algorithm: rsaEncryption
  3551.                Public-Key: (2048 bit)
  3552.                Modulus:
  3553.                    00:ce:f8:1d:67:e1:a3:f5:1a:16:b6:26:63:8f:32:
  3554.                    42:99:0d:af:86:8b:18:49:1a:4b:8e:ab:68:e1:04:
  3555.                    ba:24:dd:e6:27:d5:df:7a:13:cf:16:b3:33:28:89:
  3556.                    e0:ab:c8:dc:c1:2a:0a:de:ed:26:3a:77:74:dd:42:
  3557.                    1c:e2:22:fc:a5:a5:68:c1:c9:3b:4d:12:15:27:ae:
  3558.                    c6:50:ec:dc:f1:0a:ba:00:0c:83:d0:0d:0f:81:90:
  3559.                    4e:30:43:cb:45:bf:e2:e9:17:39:40:3b:95:8b:8b:
  3560.                    18:e9:59:51:fc:9a:7a:80:e4:73:b3:54:bd:ff:1c:
  3561.                    7c:81:75:16:e3:6f:3a:56:9b:0f:a3:73:55:45:03:
  3562.                    d8:fb:f3:34:4c:60:4f:f2:67:9f:66:ea:29:29:78:
  3563.                    6c:66:05:d6:7d:96:cd:0f:2b:4b:9c:71:2c:09:6f:
  3564.                    e2:b4:23:d0:5d:d0:fe:b0:6a:b1:58:5e:d7:b5:47:
  3565.                    9e:aa:47:34:f8:7d:e1:ed:fe:bf:97:3d:99:49:42:
  3566.                    af:e2:e5:b3:c5:1e:58:b1:98:01:db:8f:25:9f:f8:
  3567.                    d9:03:02:06:f9:99:0a:3a:a1:70:9d:fe:64:0d:c2:
  3568.                    d8:cc:f0:1c:53:e4:31:4c:78:12:c2:fd:72:23:6a:
  3569.                    f4:7e:41:f9:d5:df:6b:ad:2c:52:29:d0:7f:eb:65:
  3570.                    64:0f
  3571.                Exponent: 65537 (0x10001)
  3572.    Signature Algorithm: sha1WithRSAEncryption
  3573.    Signature Value:
  3574.        28:b3:5c:48:64:8c:23:82:dd:e2:05:6a:9d:18:dd:43:f4:07:
  3575.        e6:be:1e:80:b7:f9:0c:0f:3d:cd:b8:bd:7b:55:7e:36:6d:74:
  3576.        24:d5:69:b2:24:51:3a:2d:c5:95:68:b5:dc:27:d5:83:d9:bc:
  3577.        cb:d0:fd:55:24:63:7d:c6:65:9b:f1:b3:9d:f7:b4:4e:ba:83:
  3578.        eb:bf:f5:d0:f6:95:2d:7b:90:4e:d3:89:ac:f0:87:e6:fa:9d:
  3579.        f6:ea:c2:42:f2:15:17:74:5c:e4:3c:ed:1a:42:3c:e7:04:aa:
  3580.        65:42:3e:75:5c:24:8e:52:85:0d:4b:b2:e2:ec:fa:57:4a:68:
  3581.        35:4b:8f:3c:13:fc:15:09:80:5a:b1:c8:e0:22:f5:69:25:4b:
  3582.        46:8b:e0:b9:e1:3a:f5:0c:40:d2:c3:75:9c:79:9a:aa:68:9b:
  3583.        21:36:ed:67:cb:6d:fc:bc:f0:0b:5a:2b:1a:4c:73:67:c5:79:
  3584.        b6:27:b9:58:d0:c7:ea:84:21:bf:f4:7c:44:11:d7:88:ab:1d:
  3585.        e4:53:c9:10:cd:e6:b8:5a:7a:92:73:a8:1e:fe:1c:2e:dc:e8:
  3586.        7e:3d:e9:a2:6d:26:5a:09:40:a1:3e:51:40:8b:da:57:37:9a:
  3587.        8d:0e:d8:cf:c1:0a:b1:0b:95:53:05:41:29:39:af:93:9b:aa:
  3588.        10:af:a1:6c
  3589. $ &lt;/code&gt;&lt;/pre&gt;
  3590.  
  3591.  
  3592.  
  3593. &lt;p&gt;For the &lt;code&gt;incus-ui.pfx&lt;/code&gt; file, we first convert to the PEM format, then print the contents. The PFX file contains the certificate (the same that was added earlier to Incus) along with the private key.&lt;/p&gt;
  3594.  
  3595.  
  3596.  
  3597. &lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;$ &lt;kbd&gt;openssl pkcs12 -in incus-ui.pfx -out incus-ui.pem -noenc&lt;/kbd&gt;
  3598. Enter Import Password:
  3599. $ &lt;kbd&gt;cat incus-ui.pem &lt;/kbd&gt;
  3600. Bag Attributes
  3601.    localKeyID: 3A 23 25 F7 56 4D 71 B8 FB FD 72 90 2D A1 F3 B8 2F 01 5E 92
  3602.    friendlyName: Incus-UI
  3603. subject=C = AU, ST = Some-State, O = Incus UI 10.10.10.98 (Browser Generated)
  3604. issuer=C = AU, ST = Some-State, O = Incus UI 10.10.10.98 (Browser Generated)
  3605. -----BEGIN CERTIFICATE-----
  3606. MIIDMjCCAhqgAwIBAgIQARIAEQdlAAMAEABBAAQJETANBgkqhkiG9w0BAQUFADBV
  3607. MQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTExMC8GA1UEChMoSW5j
  3608. dXMgVUkgMTAuMTAuMTAuOTggKEJyb3dzZXIgR2VuZXJhdGVkKTAeFw0yNDAzMjgy
  3609. MTA4NThaFw0yNjEyMjMyMTA4NThaMFUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpT
  3610. b21lLVN0YXRlMTEwLwYDVQQKEyhJbmN1cyBVSSAxMC4xMC4xMC45OCAoQnJvd3Nl
  3611. ciBHZW5lcmF0ZWQpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzvgd
  3612. Z+Gj9RoWtiZjjzJCmQ2vhosYSRpLjqto4QS6JN3mJ9XfehPPFrMzKIngq8jcwSoK
  3613. 3u0mOnd03UIc4iL8paVowck7TRIVJ67GUOzc8Qq6AAyD0A0PgZBOMEPLRb/i6Rc5
  3614. QDuVi4sY6VlR/Jp6gORzs1S9/xx8gXUW4286VpsPo3NVRQPY+/M0TGBP8mefZuop
  3615. KXhsZgXWfZbNDytLnHEsCW/itCPQXdD+sGqxWF7XtUeeqkc0+H3h7f6/lz2ZSUKv
  3616. 4uWzxR5YsZgB248ln/jZAwIG+ZkKOqFwnf5kDcLYzPAcU+QxTHgSwv1yI2r0fkH5
  3617. 1d9rrSxSKdB/62VkDwIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQAos1xIZIwjgt3i
  3618. BWqdGN1D9Afmvh6At/kMDz3NuL17VX42bXQk1WmyJFE6LcWVaLXcJ9WD2bzL0P1V
  3619. JGN9xmWb8bOd97ROuoPrv/XQ9pUte5BO04ms8Ifm+p326sJC8hUXdFzkPO0aQjzn
  3620. BKplQj51XCSOUoUNS7Li7PpXSmg1S488E/wVCYBascjgIvVpJUtGi+C54Tr1DEDS
  3621. w3WceZqqaJshNu1ny238vPALWisaTHNnxXm2J7lY0MfqhCG/9HxEEdeIqx3kU8kQ
  3622. zea4WnqSc6ge/hwu3Oh+PemibSZaCUChPlFAi9pXN5qNDtjPwQqxC5VTBUEpOa+T
  3623. m6oQr6Fs
  3624. -----END CERTIFICATE-----
  3625. Bag Attributes
  3626.    localKeyID: 3A 23 25 F7 56 4D 71 B8 FB FD 72 90 2D A1 F3 B8 2F 01 5E 92
  3627.    friendlyName: Incus-UI
  3628. Key Attributes: &amp;lt;No Attributes&amp;gt;
  3629. -----BEGIN PRIVATE KEY-----
  3630. MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDO+B1n4aP1Gha2
  3631. JmOPMkKZDa+GixhJGkuOq2jhBLok3eYn1d96E88WszMoieCryNzBKgre7SY6d3Td
  3632. QhziIvylpWjByTtNEhUnrsZQ7NzxCroADIPQDQ+BkE4wQ8tFv+LpFzlAO5WLixjp
  3633. WVH8mnqA5HOzVL3/HHyBdRbjbzpWmw+jc1VFA9j78zRMYE/yZ59m6ikpeGxmBdZ9
  3634. ls0PK0uccSwJb+K0I9Bd0P6warFYXte1R56qRzT4feHt/r+XPZlJQq/i5bPFHlix
  3635. mAHbjyWf+NkDAgb5mQo6oXCd/mQNwtjM8BxT5DFMeBLC/XIjavR+QfnV32utLFIp
  3636. 0H/rZWQPAgMBAAECggEBAMm1N/tpBgC291F4YmlJg2xk0R8f6oA8V0zpMyKyF7Qc
  3637. atWB8/Wm3pnx9bbZgRQKg1LiZYvTtgEfMM7+QuYFURMi/NB4DQpUyDdPd0mhPsbQ
  3638. WVH8mnqA5HOzVL3/HHyBdRbjbzpWmw+jc1VFA9j78zRMYE/yZ59m6ikpeGxmBdZ9
  3639. +uKyZ4U4/TORu2tadg9frtUl1HhkY1zGAxOyJUbCOVIbZF2iQt5zMZt4XLFhKgwh
  3640. jtDklc3dFIDigUZzpMgdLExLWi6CGT++cjJGpseM+QOAubSoCmT6eIs8qi9KpQhk
  3641. aZYBerWqBxswkmNGK4Zh+5gFvdW7EmEp128hATgYZGECgYEA7ckh3qL4Jg6FQA8+
  3642. UeEoaT2CvDI89HMJfFN2NvU1ZklqP9aDnPvMjui/h/8HtDeb+5FWFZHF1B9laJp3
  3643. HnGGt+98/aO9skdFQDiszclDNIHdpSqcD2LWkKz84QTWqTTkRAxJpgnW91oURtyh
  3644. WVH8mnqA5HOzVL3/HHyBdRbjbzpWmw+jc1VFA9j78zRMYE/yZ59m6ikpeGxmBdZ9
  3645. JSltWZtYemYzPTpZysocyRs5mD8CgYEA3tKviDreIR+TKT3FQoevyicXuwSn6ocH
  3646. 2RTgJQF+Qyj+1ykQhwRQUD+axZGls5g2JgT+2gFIdUcAR9CN22rxLRbnIj645yGP
  3647. Ka4dVhNAZnz/olWgs4onoO0CnOGXAkVdyiBe9H/D1dkj5bqAfY1eov6khPMOyrDF
  3648. EXGi0e6uInbddI/sHUAAIIqJ4+knqwJIgxlzA9GFuzzt4oRLGMsoaClLYFCsrekJ
  3649. SF/w7DvhoDQo+JIrHuGX4hLgFLWOgp2WMWhbvgZ0P1PWcJukZ/jx7rJmkwKBgGa5
  3650. 7x75NMtEiU3sInMnpw2ltDUOUnO3SRD1pNiqtZE05zg+wFXe0UAN8sa+/QutUtl4
  3651. WVH8mnqA5HOzVL3/HHyBdRbjbzpWmw+jc1VFA9j78zRMYE/yZ59m6ikpeGxmBdZ9
  3652. WB4dlVAsKZ7yMVRFG2dUNb7997TnLd9jXDcArSIS4q/uliXvvZFdc2TsQ/hSDolP
  3653. HzfNZ3XBo+EXeIFpmYW/rA13GQytLl5oDC28WaEhAoGBAL6acBqMflXUoWWVHZR7
  3654. 0vNcJjtRTC13SGRoAKR/tT2kUqloz60bgWeVtggkFWTpPGgm6lmSuYvTnPeoHYDf
  3655. vLibVFGasTk8Y7Aji0V7rF4O
  3656. -----END PRIVATE KEY-----
  3657. $ &lt;/code&gt;&lt;/pre&gt;
  3658.  
  3659.  
  3660. &lt;h2 class=&quot;wp-block-heading&quot; id=&quot;troubleshooting&quot;&gt;Troubleshooting&lt;/h2&gt;
  3661.  
  3662. &lt;h3 class=&quot;wp-block-heading&quot; id=&quot;error-unable-to-connect&quot;&gt;Error: Unable to connect&lt;/h3&gt;
  3663.  
  3664.  
  3665. &lt;p&gt;You tried to access the IP address of the Incus server as (for example) &lt;code&gt;https://192.168.1.10/&lt;/code&gt; while you should have specified the IP address as well.  The URL should look like &lt;code&gt;https://192.168.1.10:8443/&lt;/code&gt;.&lt;/p&gt;
  3666.  
  3667.  
  3668. &lt;h3 class=&quot;wp-block-heading&quot; id=&quot;error-client-sent-an-http-request-to-an-https-server&quot;&gt;Error: Client sent an HTTP request to an HTTPS server&lt;/h3&gt;
  3669.  
  3670.  
  3671. &lt;p&gt;You tried to connect to the Incus server at an address (for example) &lt;code&gt;http://192.168.1.10:8443/&lt;/code&gt; but you omitted the &lt;code&gt;s&lt;/code&gt; in &lt;code&gt;https&lt;/code&gt;. Use &lt;code&gt;https://192.168.1.10:8443/&lt;/code&gt; instead. &lt;/p&gt;
  3672.  
  3673.  
  3674. &lt;h3 class=&quot;wp-block-heading&quot; id=&quot;warning-potential-security-risk-ahead&quot;&gt;Warning: Potential Security Risk Ahead&lt;/h3&gt;
  3675.  
  3676.  
  3677. &lt;p&gt;You are accessing the Incus server through the HTTPS address for the first time and the certificate has not been signed by a certification authority. &lt;/p&gt;
  3678.  
  3679.  
  3680. &lt;div class=&quot;wp-block-image&quot;&gt;
  3681. &lt;figure class=&quot;aligncenter size-full&quot;&gt;&lt;a href=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image.png?ssl=1&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-46761&quot; data-attachment-id=&quot;46761&quot; data-comments-opened=&quot;1&quot; data-image-caption=&quot;&quot; data-image-description=&quot;&quot; data-image-meta=&quot;{&amp;quot;aperture&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;credit&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;camera&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;caption&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;created_timestamp&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;copyright&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;focal_length&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;iso&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;shutter_speed&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;title&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;orientation&amp;quot;:&amp;quot;0&amp;quot;}&quot; data-image-title=&quot;image&quot; data-large-file=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image.png?fit=750%2C540&amp;amp;ssl=1&quot; data-medium-file=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image.png?fit=300%2C216&amp;amp;ssl=1&quot; data-orig-file=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image.png?fit=755%2C544&amp;amp;ssl=1&quot; data-orig-size=&quot;755,544&quot; data-permalink=&quot;https://blog.simos.info/how-to-install-and-setup-the-incus-web-ui/image/&quot; data-recalc-dims=&quot;1&quot; height=&quot;540&quot; src=&quot;https://i0.wp.com/blog.simos.info/wp-content/uploads/2024/03/image.png?resize=750%2C540&amp;amp;ssl=1&quot; width=&quot;750&quot; /&gt;&lt;/a&gt;First attempt to access the Incus server over HTTPS with your browser.&lt;/figure&gt;&lt;/div&gt;
  3682.  
  3683.  
  3684. &lt;p&gt;Click on &lt;em&gt;Advanced&lt;/em&gt; and select to &lt;em&gt;Accept the risk and Continue&lt;/em&gt;. If you want to avoid this error message, you need to provide a server certificate that is accepted by your browser. &lt;/p&gt;
  3685. &lt;div class=&quot;saboxplugin-wrap&quot;&gt;&lt;div class=&quot;saboxplugin-tab&quot;&gt;&lt;div class=&quot;saboxplugin-gravatar&quot;&gt;&lt;img alt=&quot;Simos Xenitellis&quot; class=&quot;avatar avatar-100 photo&quot; height=&quot;100&quot; src=&quot;https://secure.gravatar.com/avatar/5c04c6b5f513d926ea9d77782a3843a1?s=100&amp;amp;d=wavatar&amp;amp;r=g&quot; width=&quot;100&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;saboxplugin-authorname&quot;&gt;&lt;a class=&quot;vcard author&quot; href=&quot;https://blog.simos.info/author/simos/&quot; rel=&quot;author&quot;&gt;&lt;span class=&quot;fn&quot;&gt;Simos Xenitellis&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;saboxplugin-desc&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;saboxplugin-web &quot;&gt;&lt;a href=&quot;https://blog.simos.info/&quot; target=&quot;_self&quot;&gt;blog.simos.info/&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;clearfix&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
  3686. <pubDate>Thu, 28 Mar 2024 22:16:39 +0000</pubDate>
  3687. </item>
  3688. <item>
  3689. <title>Scarlett Gately Moore: Kubuntu, KDE Report. In Loving Memory of my Son.</title>
  3690. <guid isPermaLink="false">https://www.scarlettgatelymoore.dev/?p=431</guid>
  3691. <link>https://www.scarlettgatelymoore.dev/kubuntu-kde-report-in-loving-memory-of-my-son/</link>
  3692. <description>&lt;figure class=&quot;wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio&quot;&gt;&lt;div class=&quot;wp-block-embed__wrapper&quot;&gt;
  3693.  
  3694. &lt;/div&gt;&lt;/figure&gt;
  3695.  
  3696.  
  3697.  
  3698. &lt;p&gt;&lt;strong&gt;Personal:&lt;/strong&gt;&lt;/p&gt;
  3699.  
  3700.  
  3701.  
  3702. &lt;p&gt;As many of you know, I lost my beloved son March 9th. This has hit me really hard, but I am staying strong and holding on to all the wonderful memories I have. He grew up to be an amazing man, devoted christian and wonderful father. He was loved by everyone who knew him and will be truly missed by us all. I have had folks ask me how they can help. He left behind his 7 year old son Mason. Mason was Billy’s world and I would like to make sure Mason is taken care of. I have set up a gofundme for Mason and all proceeds will go to the future care of him. &lt;/p&gt;
  3703.  
  3704.  
  3705.  
  3706. &lt;p&gt;&lt;a href=&quot;https://gofund.me/25dbff0c&quot;&gt;https://gofund.me/25dbff0c&lt;/a&gt;&lt;/p&gt;
  3707.  
  3708.  
  3709.  
  3710. &lt;p class=&quot;has-text-align-center&quot;&gt;&lt;strong&gt;Work report&lt;/strong&gt;&lt;/p&gt;
  3711.  
  3712.  
  3713.  
  3714. &lt;p&gt;&lt;strong&gt;Kubuntu:&lt;/strong&gt;&lt;/p&gt;
  3715.  
  3716.  
  3717.  
  3718. &lt;p&gt;Bug bashing! I am triaging allthebugs for Plasma which can be seen here:&lt;/p&gt;
  3719.  
  3720.  
  3721.  
  3722. &lt;p&gt;&lt;a href=&quot;https://bugs.launchpad.net/plasma-5.27/+bug/2053125&quot;&gt;https://bugs.launchpad.net/plasma-5.27/+bug/2053125&lt;/a&gt;&lt;/p&gt;
  3723.  
  3724.  
  3725.  
  3726. &lt;p&gt;I am happy to report many of the remaining bugs have been fixed in the latest bug fix release 5.27.11.&lt;/p&gt;
  3727.  
  3728.  
  3729.  
  3730. &lt;p&gt;I prepared &lt;a href=&quot;https://kde.org/announcements/plasma/5/5.27.11/&quot;&gt;https://kde.org/announcements/plasma/5/5.27.11/&lt;/a&gt; and Rik uploaded to archive, thank you. Unfortunately, this and several other key fixes are stuck in transition do to the time_t64 transition, which you can read about here: &lt;a href=&quot;https://wiki.debian.org/ReleaseGoals/64bit-time&quot;&gt;https://wiki.debian.org/ReleaseGoals/64bit-time&lt;/a&gt; . It is the biggest transition in Debian/Ubuntu history and it couldn’t come at a worst time. We are aware our ISO installer is currently broken, calamares is one of those things stuck in this transition. There is a workaround in the comments of the bug report: &lt;a href=&quot;https://bugs.launchpad.net/ubuntu/+source/calamares/+bug/2054795&quot;&gt;https://bugs.launchpad.net/ubuntu/+source/calamares/+bug/2054795&lt;/a&gt;&lt;/p&gt;
  3731.  
  3732.  
  3733.  
  3734. &lt;p&gt;Fixed an issue with plasma-welcome.&lt;/p&gt;
  3735.  
  3736.  
  3737.  
  3738. &lt;p&gt;Found the fix for emojis and Aaron has kindly moved this forward with the fontconfig maintainer. Thanks!&lt;/p&gt;
  3739.  
  3740.  
  3741.  
  3742. &lt;p&gt;I have received an &lt;a data-id=&quot;https://kfocus.org/spec/spec-ir14.html&quot; data-type=&quot;link&quot; href=&quot;https://kfocus.org/spec/spec-ir14.html&quot;&gt;https://kfocus.org/spec/spec-ir14.html&lt;/a&gt; laptop and it is truly a great machine and is now my daily driver. A big thank you to the Kfocus team! I can’t wait to show it off at &lt;a href=&quot;https://linuxfestnorthwest.org/&quot;&gt;https://linuxfestnorthwest.org/&lt;/a&gt;.&lt;/p&gt;
  3743.  
  3744.  
  3745.  
  3746. &lt;p&gt;&lt;strong&gt;KDE Snaps:&lt;/strong&gt;&lt;/p&gt;
  3747.  
  3748.  
  3749.  
  3750. &lt;p&gt;You will see the activity in this ramp back up as the KDEneon Core project is finally a go! I will participate in the project with part time status and get everyone in the Enokia team up to speed with my snap knowledge, help prepare the qt6/kf6 transition, package plasma, and most importantly I will focus on documentation for future contributors.&lt;/p&gt;
  3751.  
  3752.  
  3753.  
  3754. &lt;p&gt;I have created the ( now split ) qt6 with KDE patchset support and KDE frameworks 6 SDK and runtime snaps. I have made the kde-neon-6 extension and the PR is in: https://github.com/canonical/snapcraft/pull/4698 . Future work on the extension will include multiple versions track support and core24 support.&lt;/p&gt;
  3755.  
  3756.  
  3757.  
  3758. &lt;figure class=&quot;wp-block-image size-large&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;has-transparency wp-image-433&quot; data-dominant-color=&quot;a19f9f&quot; data-has-transparency=&quot;true&quot; height=&quot;712&quot; src=&quot;https://www.scarlettgatelymoore.dev/wp-content/uploads/ark_qt6_snap-1024x712.png&quot; width=&quot;1024&quot; /&gt;&lt;/figure&gt;
  3759.  
  3760.  
  3761.  
  3762. &lt;p&gt;I have successfully created our first qt6/kf6 snap ark. They will show showing up in the store once all the required bits have been merged and published.&lt;/p&gt;
  3763.  
  3764.  
  3765.  
  3766. &lt;p&gt;Thank you for stopping by.&lt;/p&gt;
  3767.  
  3768.  
  3769.  
  3770. &lt;p&gt;~Scarlett&lt;/p&gt;</description>
  3771. <pubDate>Thu, 28 Mar 2024 17:54:44 +0000</pubDate>
  3772. </item>
  3773.  
  3774. </channel>
  3775. </rss>
  3776.  

If you would like to create a banner that links to this page (i.e. this validation result), do the following:

  1. Download the "valid RSS" banner.

  2. Upload the image to your own server. (This step is important. Please do not link directly to the image on this server.)

  3. 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

Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda