<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SysLinuxOS</title>
	<atom:link href="https://syslinuxos.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://syslinuxos.com/</link>
	<description>for Systems Integrator</description>
	<lastBuildDate>Sun, 27 Sep 2026 09:42:47 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.2</generator>

<image>
	<url>https://syslinuxos.com/wp-content/uploads/2023/02/cropped-logo-128-32x32.png</url>
	<title>SysLinuxOS</title>
	<link>https://syslinuxos.com/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Restoring GRUB on SysLinuxOS with Encrypted Partitions (LUKS)</title>
		<link>https://syslinuxos.com/restoring-grub-on-syslinuxos-with-encrypted-partitions-luks/</link>
					<comments>https://syslinuxos.com/restoring-grub-on-syslinuxos-with-encrypted-partitions-luks/#respond</comments>
		
		<dc:creator><![CDATA[edmond]]></dc:creator>
		<pubDate>Sun, 27 Sep 2026 09:27:15 +0000</pubDate>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[SysLinuxOS]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[btrfs]]></category>
		<category><![CDATA[grub]]></category>
		<category><![CDATA[SysLinuxOS 13.2]]></category>
		<category><![CDATA[SysLinuxOS 13.3]]></category>
		<guid isPermaLink="false">https://syslinuxos.com/?p=4249</guid>

					<description><![CDATA[<p>&#160; &#160; Recovery guide for a SysLinuxOS system installed on a LUKS-encrypted partition that no longer boots because GRUB is corrupted, overwritten, or was never installed correctly. This is the natural follow-up to Restoring GRUB on SysLinuxOS (btrfs with subvolumes): here the btrfs root lives inside a LUKS volume, so it has to be unlocked&#8230;&#160;<a href="https://syslinuxos.com/restoring-grub-on-syslinuxos-with-encrypted-partitions-luks/" rel="bookmark">Leggi tutto &#187;<span class="screen-reader-text">Restoring GRUB on SysLinuxOS with Encrypted Partitions (LUKS)</span></a></p>
<p>L'articolo <a href="https://syslinuxos.com/restoring-grub-on-syslinuxos-with-encrypted-partitions-luks/">Restoring GRUB on SysLinuxOS with Encrypted Partitions (LUKS)</a> proviene da <a href="https://syslinuxos.com">SysLinuxOS</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>&nbsp;</p>
<p><img fetchpriority="high" decoding="async" class="aligncenter wp-image-4252 " src="https://syslinuxos.com/wp-content/uploads/2026/09/Restoring-GRUB-on-SysLinuxOS-with-Encrypted-Partitions-LUKS-1024x1024.png" alt="Restoring GRUB on SysLinuxOS with Encrypted Partitions (LUKS)" width="640" height="640" srcset="https://syslinuxos.com/wp-content/uploads/2026/09/Restoring-GRUB-on-SysLinuxOS-with-Encrypted-Partitions-LUKS-1024x1024.png 1024w, https://syslinuxos.com/wp-content/uploads/2026/09/Restoring-GRUB-on-SysLinuxOS-with-Encrypted-Partitions-LUKS-300x300.png 300w, https://syslinuxos.com/wp-content/uploads/2026/09/Restoring-GRUB-on-SysLinuxOS-with-Encrypted-Partitions-LUKS-150x150.png 150w, https://syslinuxos.com/wp-content/uploads/2026/09/Restoring-GRUB-on-SysLinuxOS-with-Encrypted-Partitions-LUKS-768x768.png 768w, https://syslinuxos.com/wp-content/uploads/2026/09/Restoring-GRUB-on-SysLinuxOS-with-Encrypted-Partitions-LUKS-600x600.png 600w, https://syslinuxos.com/wp-content/uploads/2026/09/Restoring-GRUB-on-SysLinuxOS-with-Encrypted-Partitions-LUKS-649x649.png 649w, https://syslinuxos.com/wp-content/uploads/2026/09/Restoring-GRUB-on-SysLinuxOS-with-Encrypted-Partitions-LUKS.png 1254w" sizes="(max-width: 640px) 100vw, 640px" /></p>
<p>&nbsp;</p>
<p>Recovery guide for a <span style="color: #00ccff;"><a style="color: #00ccff;" href="https://syslinuxos.com">SysLinuxOS</a></span> system installed on a <strong>LUKS-encrypted</strong> partition that no longer boots because GRUB is corrupted, overwritten, or was never installed correctly. This is the natural follow-up to <a style="color: #00ccff;" href="https://syslinuxos.com/restoring-grub-on-syslinuxos-btrfs-with-subvolumes/">Restoring GRUB on SysLinuxOS (btrfs with subvolumes)</a>: here the btrfs root lives inside a LUKS volume, so it has to be unlocked before the <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">@</code> subvolume can be mounted.</p>
<h2>When you need this</h2>
<ul>
<li>The PC shows <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">error: no such device</code> or drops into a <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">grub&gt;</code> rescue shell, and the installed system uses <strong>LUKS</strong> for the root filesystem.</li>
<li>Another OS (e.g. Windows) was installed after SysLinuxOS and overwrote the boot loader shared on the ESP.</li>
<li>The ESP (EFI System Partition) is shared between several installs and needs to be rewritten without losing the other NVRAM entries.</li>
<li>A kernel or GRUB update was interrupted midway on a system with an encrypted root.</li>
</ul>
<h2>Prerequisites</h2>
<p>A bootable SysLinuxOS Live USB (MATE or Gnome). The <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">cryptsetup</code> package must be present on the Live (it is, by default). You need the LUKS passphrase of the volume you&#8217;re restoring.</p>
<h2>1. Unlock the LUKS volume to restore</h2>
<p>Identify the encrypted partition with <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">lsblk -f</code> (it shows up as <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">crypto_LUKS</code>), then unlock it:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo cryptsetup luksOpen /dev/sdXN sdXN_crypt</pre>
<p><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">sdXN_crypt</code> is an arbitrary mapper name for this recovery session only: it doesn&#8217;t need to match what&#8217;s in the installed system&#8217;s <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/etc/crypttab</code>. The decrypted volume shows up at <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/dev/mapper/sdXN_crypt</code>.</p>
<h2>2. Mount the btrfs root subvolume (@)</h2>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo mkdir -p /mnt/sdXN_crypt
sudo mount /dev/mapper/sdXN_crypt /mnt/sdXN_crypt
sudo btrfs subvolume list /mnt/sdXN_crypt   # check the root subvol's name (@)
sudo umount /mnt/sdXN_crypt
sudo mount -o subvol=@ /dev/mapper/sdXN_crypt /mnt/sdXN_crypt</pre>
<p>Just like in the non-encrypted case, the chroot only works when you explicitly mount <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">subvol=@</code>, not the top level (subvolid=5).</p>
<h2>3. Mount the ESP and the bind mounts</h2>
<p>If the ESP is shared with other installs (the typical multi-boot case):</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo mount /dev/sdYM /mnt/sdXN_crypt/boot/efi
sudo mount --bind /dev  /mnt/sdXN_crypt/dev
sudo mount --bind /proc /mnt/sdXN_crypt/proc
sudo mount --bind /sys  /mnt/sdXN_crypt/sys
sudo mount --bind /run  /mnt/sdXN_crypt/run</pre>
<p>Binding <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/run</code> matters just as much as <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/dev</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/proc</code> and <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/sys</code>: without it, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">update-grub</code> inside the chroot won&#8217;t see the LUKS device-mapper entries correctly.</p>
<h2>4. Reinstall GRUB from the chroot</h2>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo chroot /mnt/sdXN_crypt /bin/bash -c "
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=SysLinuxOS --recheck
"</pre>
<p><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">--bootloader-id</code> must exactly match the folder that already exists under <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">EFI/</code> on the ESP (check with <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">ls /boot/efi/EFI/</code> before installing): get it wrong and a new one gets created, losing the NVRAM entry shared with the other installs.</p>
<h2>5. Unlock the other encrypted volumes (for os-prober)</h2>
<p>If the same disk or other disks hold further SysLinuxOS installs on LUKS volumes that should appear in the GRUB menu, unlock them before regenerating the configuration:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo cryptsetup luksOpen /dev/sdZN other_crypt</pre>
<p>A LUKS volume that isn&#8217;t unlocked is invisible to <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">os-prober</code>: if an expected entry is missing from the menu, this is the first thing to check.</p>
<h2>6. Regenerate the full grub.cfg</h2>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo chroot /mnt/sdXN_crypt /bin/bash -c "update-grub"</pre>
<p><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">GRUB_ENABLE_CRYPTODISK=y</code> must already be set in the installed system&#8217;s <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/etc/default/grub</code> — if not, add it and re-run both <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">grub-install</code> and <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">update-grub</code> before leaving the chroot.</p>
<h2>7. Verify (optional)</h2>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo grep -n "^menuentry\|^submenu" /mnt/sdXN_crypt/boot/grub/grub.cfg</pre>
<p>Confirm the entries for the unlocked encrypted systems are present before rebooting.</p>
<h2>8. Unmount everything and close the LUKS volumes</h2>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo umount /mnt/sdXN_crypt/dev
sudo umount /mnt/sdXN_crypt/proc
sudo umount /mnt/sdXN_crypt/sys
sudo umount /mnt/sdXN_crypt/run
sudo umount /mnt/sdXN_crypt/boot/efi
sudo umount /mnt/sdXN_crypt
sudo cryptsetup luksClose sdXN_crypt
sudo cryptsetup luksClose other_crypt</pre>
<p>Keep the order: unmount the bind mounts before the main mount, and only run <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">luksClose</code> once everything is unmounted.</p>
<h2>9. Reboot</h2>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo reboot</pre>
<p>Remove the USB drive while it reboots.</p>
<h2>Notes for reuse on other machines</h2>
<ul>
<li>The mapper names (<code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">sdXN_crypt</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">other_crypt</code>) are arbitrary, picked for the session: they don&#8217;t need to match <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/etc/crypttab</code>.</li>
<li>Unlocking the other encrypted volumes (step 5) is only needed if they should show up in the GRUB menu; non-encrypted btrfs volumes are already detected automatically by os-prober.</li>
<li>If the multi-boot layout also includes non-encrypted <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">@</code> subvolumes, the notes in <a style="color: #00ccff;" href="https://syslinuxos.com/restoring-grub-on-syslinuxos-btrfs-with-subvolumes/">Restoring GRUB on SysLinuxOS (btrfs with subvolumes)</a> about the os-prober bug #921004/#940710 and the automatic fix in <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">syslinuxos-snapshots</code> ≥ 0.3.0 apply here too.</li>
</ul>
<h2>A word of caution</h2>
<p>This procedure touches the boot loader and the encrypted volumes of real systems: always double-check with <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">lsblk -f</code> which partition you&#8217;re unlocking and which disk <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">grub-install</code> is writing to, especially with several disks attached and several LUKS volumes unlocked at once.</p>
<p>&nbsp;</p>
<p style="text-align: center;"><strong>Restoring GRUB on SysLinuxOS with Encrypted Partitions (LUKS)</strong></p>
<p>&nbsp;</p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fsyslinuxos.com%2Frestoring-grub-on-syslinuxos-with-encrypted-partitions-luks%2F&amp;linkname=Restoring%20GRUB%20on%20SysLinuxOS%20with%20Encrypted%20Partitions%20%28LUKS%29" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fsyslinuxos.com%2Frestoring-grub-on-syslinuxos-with-encrypted-partitions-luks%2F&amp;linkname=Restoring%20GRUB%20on%20SysLinuxOS%20with%20Encrypted%20Partitions%20%28LUKS%29" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fsyslinuxos.com%2Frestoring-grub-on-syslinuxos-with-encrypted-partitions-luks%2F&amp;linkname=Restoring%20GRUB%20on%20SysLinuxOS%20with%20Encrypted%20Partitions%20%28LUKS%29" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Fsyslinuxos.com%2Frestoring-grub-on-syslinuxos-with-encrypted-partitions-luks%2F&amp;linkname=Restoring%20GRUB%20on%20SysLinuxOS%20with%20Encrypted%20Partitions%20%28LUKS%29" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fsyslinuxos.com%2Frestoring-grub-on-syslinuxos-with-encrypted-partitions-luks%2F&amp;linkname=Restoring%20GRUB%20on%20SysLinuxOS%20with%20Encrypted%20Partitions%20%28LUKS%29" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fsyslinuxos.com%2Frestoring-grub-on-syslinuxos-with-encrypted-partitions-luks%2F&amp;linkname=Restoring%20GRUB%20on%20SysLinuxOS%20with%20Encrypted%20Partitions%20%28LUKS%29" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_facebook_messenger" href="https://www.addtoany.com/add_to/facebook_messenger?linkurl=https%3A%2F%2Fsyslinuxos.com%2Frestoring-grub-on-syslinuxos-with-encrypted-partitions-luks%2F&amp;linkname=Restoring%20GRUB%20on%20SysLinuxOS%20with%20Encrypted%20Partitions%20%28LUKS%29" title="Messenger" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_google_gmail" href="https://www.addtoany.com/add_to/google_gmail?linkurl=https%3A%2F%2Fsyslinuxos.com%2Frestoring-grub-on-syslinuxos-with-encrypted-partitions-luks%2F&amp;linkname=Restoring%20GRUB%20on%20SysLinuxOS%20with%20Encrypted%20Partitions%20%28LUKS%29" title="Gmail" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_no_icon addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fsyslinuxos.com%2Frestoring-grub-on-syslinuxos-with-encrypted-partitions-luks%2F&#038;title=Restoring%20GRUB%20on%20SysLinuxOS%20with%20Encrypted%20Partitions%20%28LUKS%29" data-a2a-url="https://syslinuxos.com/restoring-grub-on-syslinuxos-with-encrypted-partitions-luks/" data-a2a-title="Restoring GRUB on SysLinuxOS with Encrypted Partitions (LUKS)">share</a></p><p>L'articolo <a href="https://syslinuxos.com/restoring-grub-on-syslinuxos-with-encrypted-partitions-luks/">Restoring GRUB on SysLinuxOS with Encrypted Partitions (LUKS)</a> proviene da <a href="https://syslinuxos.com">SysLinuxOS</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://syslinuxos.com/restoring-grub-on-syslinuxos-with-encrypted-partitions-luks/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>terminal-router 1.1.0 an integrated AI observer for Cisco and Huawei routers</title>
		<link>https://syslinuxos.com/terminal-router-1-1-0-ai-observer-cisco-huawei-routers/</link>
					<comments>https://syslinuxos.com/terminal-router-1-1-0-ai-observer-cisco-huawei-routers/#respond</comments>
		
		<dc:creator><![CDATA[edmond]]></dc:creator>
		<pubDate>Sat, 26 Sep 2026 16:50:28 +0000</pubDate>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[Rete]]></category>
		<category><![CDATA[router]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[switch]]></category>
		<category><![CDATA[SysLinuxOS]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[terminal-router]]></category>
		<guid isPermaLink="false">https://syslinuxos.com/?p=4243</guid>

					<description><![CDATA[<p>The terminal-router workspace keeps the router session and the AI observer in two independent panes. This article follows terminal-router AI assistants on Cisco and Huawei routers. The earlier article introduced the idea of recording a terminal session and allowing Claude Code or Codex to read the log. Version 1.1.0 turns that mechanism into a complete&#8230;&#160;<a href="https://syslinuxos.com/terminal-router-1-1-0-ai-observer-cisco-huawei-routers/" rel="bookmark">Leggi tutto &#187;<span class="screen-reader-text">terminal-router 1.1.0 an integrated AI observer for Cisco and Huawei routers</span></a></p>
<p>L'articolo <a href="https://syslinuxos.com/terminal-router-1-1-0-ai-observer-cisco-huawei-routers/">terminal-router 1.1.0 an integrated AI observer for Cisco and Huawei routers</a> proviene da <a href="https://syslinuxos.com">SysLinuxOS</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" class="aligncenter size-full" src="https://syslinuxos.com/wp-content/uploads/2026/09/terminal-router-1.1.0-workspace.png" alt="terminal-router workspace with the router terminal on the left and the AI observer on the right" width="1412" height="683" /></p>
<p style="text-align: center;"><em>The terminal-router workspace keeps the router session and the AI observer in two independent panes.</em></p>
<p>This article follows <span style="color: #00ccff;"><a style="color: #00ccff;" href="https://syslinuxos.com/terminal-router-ai-assistants/">terminal-router AI assistants on Cisco and Huawei routers</a></span>. The earlier article introduced the idea of recording a terminal session and allowing Claude Code or Codex to read the log. Version 1.1.0 turns that mechanism into a complete operational workspace for system integrators and network administrators.</p>
<p>The Italian article is available on <span style="color: #00ccff;"><a style="color: #00ccff;" href="https://francoconidi.it/terminal-router-assistente-ai-claude-code-codex-su-router-cisco-huawei/">francoconidi.it</a>.</span> The source code and the technical documentation are published in the <span style="color: #00ccff;"><a style="color: #00ccff;" href="https://github.com/fconidi/terminal-router">fconidi/terminal-router repository</a>.</span></p>
<h2>What changed in the new release</h2>
<p>terminal-router opens two independent terminal widgets. The left widget is reserved for the router or switch session. The right widget runs Claude Code or Codex as an observer. The observer reads the recorded output, analyses the device state and answers questions from the operator.</p>
<p>The remote device is never exposed directly to the AI assistant. The operator owns the SSH or serial connection, types the commands and decides whether to apply any suggestion. The assistant does not authenticate to the router and does not need a direct channel to the device.</p>
<p>The new workspace also supports guarded command proposals. This feature is disabled by default. When enabled, every command group is displayed to the operator, validated and sent only after a one time confirmation code is entered.</p>
<h2>Workspace architecture</h2>
<p>The launcher creates a private tmux server for the workspace and two separate sessions. The router session is recorded under the user directory <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">~/.claude-logs</code>. The observer session is not recorded by the workspace launcher. The observer follows a stable link to the router log belonging to that workspace.</p>
<p>This isolation prevents a second workspace from redirecting the observer to the wrong device. Pausing and resuming capture also preserve the correct link. The user’s global tmux configuration is not loaded into the private server used by the workspace.</p>
<p>Mouse behavior is deliberately different in the two widgets. In the router widget, selection and copying work as they do in a normal terminal. In the observer widget, the mouse wheel browses up to 50,000 lines of tmux history. Hold Shift while dragging to select text in the observer. Scrolling therefore does not inject arrow key escape sequences into the assistant prompt.</p>
<h2>Quick start</h2>
<p>After installation, the command without arguments opens the workspace and selects Claude Code when it is available. If Claude Code is not available, Codex is selected.</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">terminal-router
terminal-router claude
terminal-router codex
terminal-router workspace claude
terminal-router workspace codex</pre>
<p>The commands that name an engine require that exact program. If the selected engine is missing or unauthenticated, terminal-router reports the error and does not silently replace it with the other engine.</p>
<p>The first launch displays a security notice. The log contains whatever is printed on screen and the captured output is sent to the AI provider through its authenticated CLI. The user must explicitly acknowledge this condition. Installing the package does not enable recording and does not automatically edit personal configuration files.</p>
<h2>Connecting to a router over SSH</h2>
<p>Open the SSH connection in the left widget. Host key prompts, password prompts and interaction with the remote shell remain in the router terminal.</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">ssh admin@192.168.1.1</pre>
<p>When the router produces new output, the observer receives it according to the automatic analysis cadence. The operator can ask questions in the right widget, for example requesting an explanation of a routing table, a review of an ACL or an interpretation of the current interface state.</p>
<h2>Serial console</h2>
<p>The router widget also displays reference commands for a serial console. <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">tio</code> is the recommended program and is installed as a mandatory dependency. <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">screen</code> and <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">picocom</code> are optional alternatives.</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">tio --list
tio --baudrate 9600 --databits 8 --parity none --stopbits 1 --flow none /dev/ttyUSB0
screen /dev/ttyUSB0 9600
picocom --baud 9600 --databits 8 --parity n --stopbits 1 --flow n /dev/ttyUSB0</pre>
<p>Depending on the adapter, the device can be <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/dev/ttyACM0</code>. When available, the stable path under <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/dev/serial/by-id/</code> is preferable. With tio defaults, 115200 8N1 with no flow control, the following is sufficient.</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">tio /dev/ttyUSB0</pre>
<p>Press <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">Ctrl-t q</code> to exit tio. Recording also works with <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">screen</code> and <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">picocom</code>, but guarded command delivery requires <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">tio</code> or <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">ssh</code> to be the foreground program.</p>
<h2>Automatic analysis and AI context</h2>
<p>The observer groups output after two seconds of quiet time, or after a maximum of five seconds of continuous output. At least ten seconds must pass between automatic requests. Unchanged output does not trigger a new request.</p>
<p>Each request contains up to the latest 128 KiB of router output and the previous exchange. This keeps enough context for typical command results without sending an unbounded session history. The visible assistant scrollback can reach 50,000 lines, which is separate from the bounded snapshot sent to the provider.</p>
<p>A request that has already been submitted may finish after capture is paused. Pausing prevents new automatic analysis. If the AI CLI or its authentication fails, automatic mode stops and can be enabled again after the problem is corrected.</p>
<table>
<thead>
<tr>
<th>Observer input</th>
<th>Function</th>
</tr>
</thead>
<tbody>
<tr>
<td>Question followed by Enter</td>
<td>Analyses the current router state and answers.</td>
</tr>
<tr>
<td>Empty Enter</td>
<td>Requests an immediate analysis.</td>
</tr>
<tr>
<td><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">:auto off</code></td>
<td>Stops automatic requests, cancels the active request and clears queued automatic work.</td>
</tr>
<tr>
<td><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">:auto on</code></td>
<td>Resumes automatic requests.</td>
</tr>
<tr>
<td><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">:config on</code></td>
<td>Enables guarded configuration for the current observer.</td>
</tr>
<tr>
<td><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">:config off</code></td>
<td>Disables guarded configuration and cancels a pending proposal.</td>
</tr>
<tr>
<td><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">:apply command</code></td>
<td>Manually stages one command for review.</td>
</tr>
<tr>
<td><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">:confirm code</code></td>
<td>Sends the displayed group once after confirmation.</td>
</tr>
<tr>
<td><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">:cancel</code></td>
<td>Discards the pending command group.</td>
</tr>
<tr>
<td><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">:quit</code></td>
<td>Closes the observer while leaving the router terminal available.</td>
</tr>
<tr>
<td>F9 and F10</td>
<td>Pause and resume recording of the original router pane.</td>
</tr>
</tbody>
</table>
<h2>Guarded configuration mode</h2>
<p>Configuration mode is disabled at startup and remains active only for the current observer. The AI may propose commands, but the proposal is treated as untrusted input. Every line is validated, the complete group is displayed and nothing is sent until the operator confirms it.</p>
<p>The mode accepts up to 32 commands in one ordered group. Delivery is allowed only when the router widget has an <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">ssh</code> or <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">tio</code> session in the foreground. Shell operators, control characters and embedded newlines are rejected.</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">:config on
Configure interface Gi0/1 with description UPLINK and enable it

Pending router commands:
1. configure terminal
2. interface Gi0/1
3. description UPLINK
4. no shutdown
5. end

:confirm A1B2C3D4E5F6</pre>
<p>The code is valid for 120 seconds and authorizes only the displayed group. New AI analyses wait while the proposal is pending. F9, a transport change or pausing the router pane cancels the pending group. Every line still needs to be reviewed before confirmation, especially when the device is in production.</p>
<h2>Global recording and single session recording</h2>
<p><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">terminal-router install</code> enables recording for every interactive terminal opened by the user. It adds marked blocks to <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">~/.bashrc</code> or <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">~/.zshrc</code> and to <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">~/.tmux.conf</code>. Each tmux pane is connected to the logger and <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">~/.claude-logs/latest</code> points to the newest log.</p>
<p><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">terminal-router launch</code> creates a self contained session for one task. Hooks are applied only to that tmux session and disappear when it ends. It does not edit <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">~/.bashrc</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">~/.zshrc</code> or <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">~/.tmux.conf</code>. Terminator and other open terminals remain independent.</p>
<p>Both modes are per user and keep data inside the user home. Do not run the command as root. The configuration belongs to the calling user and <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">sudo</code> would target root’s home directory.</p>
<p><img decoding="async" class="aligncenter" src="https://syslinuxos.com/wp-content/uploads/2026/09/terminal-router-1.1.0-icon.png" alt="terminal-router 1.1.0" width="601" height="601" /></p>
<p style="text-align: center;"><em>The terminal-router icon is installed in the SysLinuxOS applications menu.</em></p>
<h2>Administrative commands</h2>
<table>
<thead>
<tr>
<th>Command</th>
<th>Use</th>
</tr>
</thead>
<tbody>
<tr>
<td><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">terminal-router status</code></td>
<td>Reports active hooks, rotation, available AI programs, existing logs and current panes.</td>
</tr>
<tr>
<td><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">terminal-router doctor</code></td>
<td>Runs read only checks on setup, permissions, logs and live panes.</td>
</tr>
<tr>
<td><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">terminal-router tail</code></td>
<td>Follows the newest pane log and switches when the <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">latest</code> link changes.</td>
</tr>
<tr>
<td><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">terminal-router pause</code></td>
<td>Suspends capture in the current tmux pane.</td>
</tr>
<tr>
<td><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">terminal-router resume</code></td>
<td>Resumes capture in a new file.</td>
</tr>
<tr>
<td><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">terminal-router menu</code></td>
<td>Opens the configuration menu and alternate launch modes.</td>
</tr>
<tr>
<td><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">terminal-router remove</code></td>
<td>Removes hooks, backs up modified files and optionally deletes logs.</td>
</tr>
</tbody>
</table>
<p>After <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">install</code>, the shell shortcuts <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">logpause</code> and <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">logresume</code> are available. Detaching from tmux with <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">Ctrl-b d</code> does not stop recording or the observer. Use F9 or <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">terminal-router pause</code> when capture must stop.</p>
<h2>Security and privacy</h2>
<p>The log contains everything printed on screen. A password typed at an interactive SSH or sudo prompt is normally not recorded because the terminal does not echo it. Secrets that are made visible by the operator are recorded, including passwords in command arguments, tokens in HTTP headers, plaintext exported variables and the output of <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">.env</code> files or private keys.</p>
<p>The <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">~/.claude-logs</code> directory uses mode 0700 and log files use mode 0600. The logger runs with <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">umask 077</code>. Nightly rotation removes logs older than 30 days. The directory is outside cloud synchronized folders. Pause capture before sensitive work and resume it into a new file afterwards.</p>
<p>The CLI keeps its normal authentication, while the observer disables shell tools and configured integrations and ignores project configuration. Codex runs read only. Use <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">TR_CLAUDE_MODEL</code> or <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">TR_CODEX_MODEL</code> to select a model. The observer language follows the system locale or can be set explicitly with <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">TR_LANGUAGE=en</code>.</p>
<h2>Installation on SysLinuxOS</h2>
<p>On SysLinuxOS the package is available in the SysLinuxOS Tools repository.</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">echo "deb https://fconidi.github.io/SysLinuxOS-Tools tirreno main" | sudo tee /etc/apt/sources.list.d/syslinuxos-tools.list
wget -qO- https://fconidi.github.io/SysLinuxOS-Tools/syslinuxos-archive-keyring.asc | sudo tee /usr/share/keyrings/syslinuxos-archive-keyring.asc &gt; /dev/null
sudo apt update
sudo apt install terminal-router
terminal-router</pre>
<h2>Installation on Debian and Ubuntu</h2>
<p>The GitHub repository publishes the Debian package and its SHA 256 checksum.</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">wget https://github.com/fconidi/terminal-router/releases/download/v1.1.0/terminal-router_1.1.0_all.deb
wget https://github.com/fconidi/terminal-router/releases/download/v1.1.0/terminal-router_1.1.0_all.deb.sha256
sha256sum -c terminal-router_1.1.0_all.deb.sha256
sudo apt install ./terminal-router_1.1.0_all.deb
terminal-router</pre>
<p>To build the package from source:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">git clone https://github.com/fconidi/terminal-router.git
cd terminal-router
bash build-deb.sh
sudo apt install ./terminal-router_1.1.0_all.deb
terminal-router</pre>
<p>The final command must be run as the normal user. The main requirements are Bash, tmux 3.0 or newer, Python 3 with its standard library, tio and Terminator. Cron is recommended for log rotation. The workspace requires an installed and authenticated Claude Code or Codex CLI.</p>
<h2>Upgrading from the 1.0 series</h2>
<p>Users of global mode should run <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">terminal-router install</code> again after upgrading. The command updates only marked blocks, creates <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">.terminal-router.bak</code> backups and preserves surrounding settings.</p>
<p>An already running tmux server keeps its previously loaded hooks. Reload the configuration with <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">tmux source-file ~/.tmux.conf</code> when needed. In existing panes, use <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">terminal-router pause</code> and <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">terminal-router resume</code>. For a single task, start a fresh <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">terminal-router launch</code> session.</p>
<h2>Conclusion</h2>
<p>terminal-router 1.1.0 turns terminal recording into a complete AI assisted operating environment for router and switch work. Separating the device pane from the observer pane preserves human control while the log gives the assistant the real context of the session. Guarded configuration adds a controlled path for proposing commands without turning the assistant into an autonomous administrative connection.</p>
<p>For the full documentation, read the <a href="https://github.com/fconidi/terminal-router"><span style="color: #00ccff;">terminal-router GitHub repository</span></a> and the manual installed with the package through <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">man terminal-router</code>.</p>
<h6 style="text-align: center;"><strong>terminal-router 1.1.0 an integrated AI observer for Cisco and Huawei routers</strong></h6>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fterminal-router-1-1-0-ai-observer-cisco-huawei-routers%2F&amp;linkname=terminal-router%201.1.0%20an%20integrated%20AI%20observer%20for%20Cisco%20and%20Huawei%20routers" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fterminal-router-1-1-0-ai-observer-cisco-huawei-routers%2F&amp;linkname=terminal-router%201.1.0%20an%20integrated%20AI%20observer%20for%20Cisco%20and%20Huawei%20routers" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fterminal-router-1-1-0-ai-observer-cisco-huawei-routers%2F&amp;linkname=terminal-router%201.1.0%20an%20integrated%20AI%20observer%20for%20Cisco%20and%20Huawei%20routers" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fterminal-router-1-1-0-ai-observer-cisco-huawei-routers%2F&amp;linkname=terminal-router%201.1.0%20an%20integrated%20AI%20observer%20for%20Cisco%20and%20Huawei%20routers" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fterminal-router-1-1-0-ai-observer-cisco-huawei-routers%2F&amp;linkname=terminal-router%201.1.0%20an%20integrated%20AI%20observer%20for%20Cisco%20and%20Huawei%20routers" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fterminal-router-1-1-0-ai-observer-cisco-huawei-routers%2F&amp;linkname=terminal-router%201.1.0%20an%20integrated%20AI%20observer%20for%20Cisco%20and%20Huawei%20routers" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_facebook_messenger" href="https://www.addtoany.com/add_to/facebook_messenger?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fterminal-router-1-1-0-ai-observer-cisco-huawei-routers%2F&amp;linkname=terminal-router%201.1.0%20an%20integrated%20AI%20observer%20for%20Cisco%20and%20Huawei%20routers" title="Messenger" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_google_gmail" href="https://www.addtoany.com/add_to/google_gmail?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fterminal-router-1-1-0-ai-observer-cisco-huawei-routers%2F&amp;linkname=terminal-router%201.1.0%20an%20integrated%20AI%20observer%20for%20Cisco%20and%20Huawei%20routers" title="Gmail" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_no_icon addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fsyslinuxos.com%2Fterminal-router-1-1-0-ai-observer-cisco-huawei-routers%2F&#038;title=terminal-router%201.1.0%20an%20integrated%20AI%20observer%20for%20Cisco%20and%20Huawei%20routers" data-a2a-url="https://syslinuxos.com/terminal-router-1-1-0-ai-observer-cisco-huawei-routers/" data-a2a-title="terminal-router 1.1.0 an integrated AI observer for Cisco and Huawei routers">share</a></p><p>L'articolo <a href="https://syslinuxos.com/terminal-router-1-1-0-ai-observer-cisco-huawei-routers/">terminal-router 1.1.0 an integrated AI observer for Cisco and Huawei routers</a> proviene da <a href="https://syslinuxos.com">SysLinuxOS</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://syslinuxos.com/terminal-router-1-1-0-ai-observer-cisco-huawei-routers/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Restoring GRUB on SysLinuxOS (btrfs with subvolumes)</title>
		<link>https://syslinuxos.com/restoring-grub-on-syslinuxos-btrfs-with-subvolumes/</link>
					<comments>https://syslinuxos.com/restoring-grub-on-syslinuxos-btrfs-with-subvolumes/#comments</comments>
		
		<dc:creator><![CDATA[edmond]]></dc:creator>
		<pubDate>Mon, 14 Sep 2026 16:51:13 +0000</pubDate>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[SysLinuxOS]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[btrfs]]></category>
		<category><![CDATA[grub]]></category>
		<category><![CDATA[SysLinuxOS 13.2]]></category>
		<category><![CDATA[SysLinuxOS 13.3]]></category>
		<guid isPermaLink="false">https://syslinuxos.com/?p=4228</guid>

					<description><![CDATA[<p>Recovery guide for a SysLinuxOS system that no longer boots because GRUB is corrupted, overwritten (typically after installing Windows in dual-boot), or was never installed correctly. This covers SysLinuxOS&#8217;s standard btrfs layout, with the root filesystem in the @ subvolume and @home kept separate. When you need this The PC shows error: no such device&#8230;&#160;<a href="https://syslinuxos.com/restoring-grub-on-syslinuxos-btrfs-with-subvolumes/" rel="bookmark">Leggi tutto &#187;<span class="screen-reader-text">Restoring GRUB on SysLinuxOS (btrfs with subvolumes)</span></a></p>
<p>L'articolo <a href="https://syslinuxos.com/restoring-grub-on-syslinuxos-btrfs-with-subvolumes/">Restoring GRUB on SysLinuxOS (btrfs with subvolumes)</a> proviene da <a href="https://syslinuxos.com">SysLinuxOS</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1><img loading="lazy" decoding="async" class="aligncenter wp-image-4234" src="https://syslinuxos.com/wp-content/uploads/2026/09/recovery-grub-btrfs-1024x1024.png" alt="Restoring GRUB on SysLinuxOS" width="640" height="640" srcset="https://syslinuxos.com/wp-content/uploads/2026/09/recovery-grub-btrfs-1024x1024.png 1024w, https://syslinuxos.com/wp-content/uploads/2026/09/recovery-grub-btrfs-300x300.png 300w, https://syslinuxos.com/wp-content/uploads/2026/09/recovery-grub-btrfs-150x150.png 150w, https://syslinuxos.com/wp-content/uploads/2026/09/recovery-grub-btrfs-768x768.png 768w, https://syslinuxos.com/wp-content/uploads/2026/09/recovery-grub-btrfs-600x600.png 600w, https://syslinuxos.com/wp-content/uploads/2026/09/recovery-grub-btrfs-649x649.png 649w, https://syslinuxos.com/wp-content/uploads/2026/09/recovery-grub-btrfs.png 1254w" sizes="(max-width: 640px) 100vw, 640px" /></h1>
<p>Recovery guide for a <span style="color: #00ccff;"><a style="color: #00ccff;" href="https://syslinuxos.com">SysLinuxOS</a></span> system that no longer boots because GRUB is corrupted, overwritten (typically after installing Windows in dual-boot), or was never installed correctly. This covers SysLinuxOS&#8217;s standard btrfs layout, with the root filesystem in the <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">@</code> subvolume and <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">@home</code> kept separate.</p>
<h2>When you need this</h2>
<ul>
<li>The PC shows <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">error: no such device</code> or drops straight into a <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">grub&gt;</code> rescue shell.</li>
<li>No GRUB menu appears at boot; the PC jumps straight to another OS or fails outright.</li>
<li>Windows was installed after SysLinuxOS and overwrote the boot loader.</li>
<li>A kernel or GRUB update was interrupted midway.</li>
</ul>
<h2>Prerequisites</h2>
<p>You need a bootable SysLinuxOS Live USB (MATE or Gnome build, same procedure either way). Boot the PC from the USB and open a terminal.</p>
<h2>1. Identify the disk and subvolumes</h2>
<p>Find the btrfs root partition and its subvolumes:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">lsblk -f
sudo mount /dev/sdXN /mnt
sudo btrfs subvolume list /mnt</pre>
<p>Look for the lines with <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">path @</code> and <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">path @home</code>. If the disk holds more than one SysLinuxOS install (multiple <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">@</code> subvolumes), check which one is the system you want to repair before continuing — for instance by inspecting <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/etc/hostname</code> inside each subvolume. Then unmount the temporary mount:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo umount /mnt</pre>
<h2>2. Mount the right subvolume</h2>
<p>Common mistake: mounting the partition at the top level (subvolid=5) instead of the <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">@</code> subvolume. The chroot only works if you explicitly mount <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">subvol=@</code>:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo mount -o subvol=@ /dev/sdXN /mnt
sudo mount /dev/sdXM /mnt/boot/efi   # UEFI systems only, if ESP is a separate partition
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys</pre>
<p>If <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">@home</code> lives on a separate subvolume, there&#8217;s no need to mount it for a GRUB reinstall — it isn&#8217;t touched by this procedure.</p>
<h2>3. Enter the chroot</h2>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo chroot /mnt /bin/bash</pre>
<p>From this point, commands run inside the installed system, not the Live environment.</p>
<h2>4. Reinstall GRUB</h2>
<p>On <strong>UEFI</strong> systems (the most common case today):</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=SysLinuxOS --recheck</pre>
<p>On <strong>legacy BIOS</strong> systems, install onto the whole disk (MBR), never a partition:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo grub-install --target=i386-pc --recheck /dev/sdX</pre>
<p><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/dev/sdX</code> is the whole disk (e.g. <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/dev/sda</code>), never a partition, for legacy BIOS.</p>
<h2>5. Regenerate the configuration</h2>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo update-grub</pre>
<p>If the <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">grub-btrfs</code> package is installed, this step also regenerates the <em>SysLinuxOS — snapshots</em> submenu with the latest bootable snapshots. Confirm the command finishes without errors before leaving the chroot: an error here (e.g. a failing <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/etc/grub.d/</code> script) leaves the old <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">grub.cfg</code> in place and needs investigating before you reboot.</p>
<h2>6. Exit and reboot</h2>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">exit
sudo umount -R /mnt
sudo reboot</pre>
<p>Remove the USB drive while it reboots.</p>
<h2>Notes on multi-boot layouts</h2>
<p>If the same disk holds several Linux installs on btrfs with <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">@</code> subvolumes, Debian&#8217;s <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">os-prober</code> won&#8217;t detect them: it looks for <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/etc/os-release</code> at the partition&#8217;s top level instead of inside <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/@/etc/os-release</code> (upstream Debian bugs #921004 and #940710, still open). On SysLinuxOS with <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">syslinuxos-snapshots</code> ≥ 0.3.0 this is already handled automatically by a dedicated script that still surfaces them in the GRUB menu.</p>
<h2>Notes on encrypted partitions</h2>
<p>If another SysLinuxOS install lives on an encrypted partition, mount (unlock) it first so it gets detected, then run:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo update-grub</pre>
<h2>A word of caution</h2>
<p>This is a standard GRUB recovery procedure, adapted to SysLinuxOS&#8217;s btrfs subvolume layout. Commands like <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">grub-install</code> write to the boot sector: always double-check the target disk (<code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">lsblk</code>) before running these commands, especially with more than one disk attached.</p>
<p>&nbsp;</p>
<p style="text-align: center;"><strong>Restoring GRUB on SysLinuxOS (btrfs with subvolumes)</strong></p>
<p>&nbsp;</p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fsyslinuxos.com%2Frestoring-grub-on-syslinuxos-btrfs-with-subvolumes%2F&amp;linkname=Restoring%20GRUB%20on%20SysLinuxOS%20%28btrfs%20with%20subvolumes%29" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fsyslinuxos.com%2Frestoring-grub-on-syslinuxos-btrfs-with-subvolumes%2F&amp;linkname=Restoring%20GRUB%20on%20SysLinuxOS%20%28btrfs%20with%20subvolumes%29" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fsyslinuxos.com%2Frestoring-grub-on-syslinuxos-btrfs-with-subvolumes%2F&amp;linkname=Restoring%20GRUB%20on%20SysLinuxOS%20%28btrfs%20with%20subvolumes%29" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Fsyslinuxos.com%2Frestoring-grub-on-syslinuxos-btrfs-with-subvolumes%2F&amp;linkname=Restoring%20GRUB%20on%20SysLinuxOS%20%28btrfs%20with%20subvolumes%29" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fsyslinuxos.com%2Frestoring-grub-on-syslinuxos-btrfs-with-subvolumes%2F&amp;linkname=Restoring%20GRUB%20on%20SysLinuxOS%20%28btrfs%20with%20subvolumes%29" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fsyslinuxos.com%2Frestoring-grub-on-syslinuxos-btrfs-with-subvolumes%2F&amp;linkname=Restoring%20GRUB%20on%20SysLinuxOS%20%28btrfs%20with%20subvolumes%29" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_facebook_messenger" href="https://www.addtoany.com/add_to/facebook_messenger?linkurl=https%3A%2F%2Fsyslinuxos.com%2Frestoring-grub-on-syslinuxos-btrfs-with-subvolumes%2F&amp;linkname=Restoring%20GRUB%20on%20SysLinuxOS%20%28btrfs%20with%20subvolumes%29" title="Messenger" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_google_gmail" href="https://www.addtoany.com/add_to/google_gmail?linkurl=https%3A%2F%2Fsyslinuxos.com%2Frestoring-grub-on-syslinuxos-btrfs-with-subvolumes%2F&amp;linkname=Restoring%20GRUB%20on%20SysLinuxOS%20%28btrfs%20with%20subvolumes%29" title="Gmail" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_no_icon addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fsyslinuxos.com%2Frestoring-grub-on-syslinuxos-btrfs-with-subvolumes%2F&#038;title=Restoring%20GRUB%20on%20SysLinuxOS%20%28btrfs%20with%20subvolumes%29" data-a2a-url="https://syslinuxos.com/restoring-grub-on-syslinuxos-btrfs-with-subvolumes/" data-a2a-title="Restoring GRUB on SysLinuxOS (btrfs with subvolumes)">share</a></p><p>L'articolo <a href="https://syslinuxos.com/restoring-grub-on-syslinuxos-btrfs-with-subvolumes/">Restoring GRUB on SysLinuxOS (btrfs with subvolumes)</a> proviene da <a href="https://syslinuxos.com">SysLinuxOS</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://syslinuxos.com/restoring-grub-on-syslinuxos-btrfs-with-subvolumes/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>SysLinuxOS 13.3</title>
		<link>https://syslinuxos.com/syslinuxos-13-3/</link>
					<comments>https://syslinuxos.com/syslinuxos-13-3/#comments</comments>
		
		<dc:creator><![CDATA[edmond]]></dc:creator>
		<pubDate>Mon, 14 Sep 2026 12:50:52 +0000</pubDate>
				<category><![CDATA[SysLinuxOS]]></category>
		<category><![CDATA[SysLinuxOS 13.3]]></category>
		<guid isPermaLink="false">https://syslinuxos.com/?p=4200</guid>

					<description><![CDATA[<p>SysLinuxOS 13.3 ships in both MATE and Gnome editions. Compared to 13.2 it brings a long list of under-the-hood fixes, but the real headline of this release is something else: for the first time, an agentic AI is natively built into the Live session, ready to work on the real running system, disks, filesystems, services,&#8230;&#160;<a href="https://syslinuxos.com/syslinuxos-13-3/" rel="bookmark">Leggi tutto &#187;<span class="screen-reader-text">SysLinuxOS 13.3</span></a></p>
<p>L'articolo <a href="https://syslinuxos.com/syslinuxos-13-3/">SysLinuxOS 13.3</a> proviene da <a href="https://syslinuxos.com">SysLinuxOS</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><!-- SysLinuxOS 13.3 — draft for the Elementor "Editor di testo" widget (tab: Codice), syslinuxos.com.
Plain semantic HTML + inline styles only (no



<style> block, which the WordPress editor strips).
Headings/paragraphs inherit the theme typography; inline command terms are light blue and
code blocks use a dark panel, both readable on a dark background. --></p>
<h1></h1>
<p style="text-align: center; margin: 1.5rem 0 2rem;"><img loading="lazy" decoding="async" class="alignnone" style="max-width: 100%; height: auto; border-radius: 14px;" src="https://syslinuxos.com/wp-content/uploads/2026/09/syslinuxos-13.3-ai-tools-en.png" alt="SysLinuxOS 13.3" width="960" height="260" /></p>
<p><span style="color: #00ccff;"><a style="color: #00ccff;" href="https://syslinuxos.com">SysLinuxOS</a></span> 13.3 ships in both MATE and Gnome editions. Compared to 13.2 it brings a long list of under-the-hood fixes, but the real headline of this release is something else: for the first time, an agentic AI is natively built into the Live session, ready to work on the real running system, disks, filesystems, services, logs with nothing to install or configure. It&#8217;s the single biggest leap forward in the project&#8217;s history.</p>
<h2>The AI Debut in the Live Session</h2>
<p>Every SysLinuxOS 13.3 Live image ships ready to use with <strong>Claude Code</strong> and the <strong>Claude desktop app</strong>, alongside <strong>Codex</strong> (CLI) and the <strong>ChatGPT desktop app</strong>. Boot the Live image, sign in, and you have an AI agent with real access to the running system. Agentic distributions like Omarchy have already brought AI CLIs into everyday desktop use; SysLinuxOS 13.3 brings the same AI into the scenario Live images exist for in the first place: recovery fully aware of the btrfs subvolume layout the system uses by default.</p>
<p>Live distributions have existed for decades for one precise reason: recovery. A system won&#8217;t boot, you grab a USB stick, and you try to figure out what&#8217;s wrong using the classic toolkit: manual chroot, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">fdisk</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">grub-install</code>, reading logs. With SysLinuxOS 13.3 that same scenario changes shape: boot the Live image, open a terminal, launch Claude Code, and describe the problem in plain language. The agent explores the system on its own and proposes or executes, if authorized  the fix.</p>
<h2>Real-World Case: Broken GRUB on a Multi-Boot PC</h2>
<p>A direct, first-hand test: a multi-boot PC running several Linux distributions on btrfs with subvolumes stops booting because of a corrupted GRUB. The procedure followed:</p>
<ul>
<li>Boot from a SysLinuxOS 13.3 Live USB.</li>
<li>Open a terminal and launch Claude Code.</li>
<li>Ask, in plain language, to scan the system and reinstall GRUB on the correct btrfs subvolume.</li>
<li>The agent identifies disks and partitions, recognizes the btrfs layout with its subvolumes (<code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">@</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">@home</code>), locates the one containing the installation to repair, chroots into it, reinstalls GRUB, and regenerates <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">grub.cfg</code>.</li>
<li>On reboot, the system comes back up — no manual intervention required.</li>
</ul>
<p>An operation that normally requires specific expertise in GRUB, btrfs, and manual chroot work, carried out end to end by an AI agent acting on its own, starting from a single natural-language request. It&#8217;s the clearest possible example of what it means to have AI genuinely built into a recovery Live image.</p>
<h2>terminal-system and terminal-router: AI in the Everyday Workflow</h2>
<p>Beyond Claude Code and ChatGPT/Codex in their &#8220;pure&#8221; form, SysLinuxOS 13.3 also ships two tools built for the project itself, already listed as standalone entries in the Live session&#8217;s Applications menu:</p>
<ul>
<li><strong>terminal-system: </strong>a two-panel terminal: on the right you type instructions in plain language (e.g. &#8220;create user Pippo&#8221;), on the left the AI-generated shell commands are typed and executed in real time. Every command waits for manual confirmation by default; <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">:auto readonly</code> mode runs only genuinely read-only commands without asking.</li>
<li><strong>terminal-router: </strong>built for network administrators: it records tmux sessions of router and switch CLI work (Cisco, Huawei, and similar), so Claude Code can follow what&#8217;s happening on the network device in real time during a troubleshooting session.</li>
</ul>
<p>Their appearance as dedicated entries in the MATE and Gnome Applications menus is part of the broader menu polish carried out in this release.</p>
<h2>Security: Allowlist, Not Blocklist</h2>
<p>Giving an AI agent access to a real terminal calls for care. terminal-system, now at version 1.1.7, uses an allowlist-based security model: a command runs without confirmation only if its first token is a program explicitly recognized as read-only (<code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">ls</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">cat</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">grep</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">git status/log/diff</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">systemctl status</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">journalctl</code>, and similar) and contains none of the shell metacharacters that could turn it into something else (redirects, pipes, backticks, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">$()</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">;</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">&amp;</code>). Everything else always stops for explicit confirmation, even in automatic mode. Each session also runs on its own dedicated, isolated tmux server, and the optional context memory applies best-effort redaction of passwords, tokens, and API keys before storing any output.</p>
<h2>Official SysLinuxOS APT Repository</h2>
<p>The promise made with 13.2 a dedicated, signed APT repository is now reality. It&#8217;s live, GPG-signed, suite <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">tirreno</code>:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">curl -fsSL https://fconidi.github.io/SysLinuxOS-Tools/client/install-repo.sh | sudo bash</pre>
<p>From that point on, keeping SysLinuxOS tools up to date is a plain <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">apt upgrade</code>. Nine packages are available today: <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">distroclone</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">distroclone-backup</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">syslinuxos-snapshots</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">grub-btrfs</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">syslinuxos-ring-conky</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">conky-window</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">librepods</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">terminal-system</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">terminal-router</code>.</p>
<h2>Under the Hood</h2>
<ul>
<li><strong>syslinuxos-snapshots 0.3.16<code>:</code></strong><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/mnt</code> is now a dedicated btrfs subvolume, excluded from root snapshots: ISO builds, temporarily mounted disks, and other uses of <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/mnt</code> are no longer captured in system snapshots.</li>
<li><strong>Snapshot boot on Gnome:</strong> fixed a hang that only occurred on Gnome, caused by <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">gdm</code> trying to restart on a read-only-mounted root. Snapshots now boot to console mode, exactly as MATE already did.</li>
<li><strong>distroClone 1.4.13/1.4.14:</strong> fixes to the btrfs-aware build and locale handling, plus an explicit check on the real exit status of <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">xorriso</code>: a failed ISO build is no longer reported as successful.</li>
<li><strong>terminal-system 1.1.6/1.1.7:</strong> fixed a race condition in typing AI-generated commands into the left panel, added a timeout on AI engine calls, and raised daily snapshot retention to 5.</li>
</ul>
<h2>Testing</h2>
<p>SysLinuxOS 13.3 has been validated in both MATE and Gnome editions, on systems with native snapper and on clones produced by distroClone, in addition to the real-world GRUB recovery case described above.</p>
<p>SysLinuxOS remains a distribution built for people who work seriously with Linux — but starting with this release, for the first time, facing a broken system no longer means facing it alone.</p>
<h6 style="text-align: center;">SysLinuxOS 13.3</h6>
<p>&nbsp;</p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-13-3%2F&amp;linkname=SysLinuxOS%2013.3" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-13-3%2F&amp;linkname=SysLinuxOS%2013.3" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-13-3%2F&amp;linkname=SysLinuxOS%2013.3" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-13-3%2F&amp;linkname=SysLinuxOS%2013.3" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-13-3%2F&amp;linkname=SysLinuxOS%2013.3" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-13-3%2F&amp;linkname=SysLinuxOS%2013.3" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_facebook_messenger" href="https://www.addtoany.com/add_to/facebook_messenger?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-13-3%2F&amp;linkname=SysLinuxOS%2013.3" title="Messenger" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_google_gmail" href="https://www.addtoany.com/add_to/google_gmail?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-13-3%2F&amp;linkname=SysLinuxOS%2013.3" title="Gmail" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_no_icon addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-13-3%2F&#038;title=SysLinuxOS%2013.3" data-a2a-url="https://syslinuxos.com/syslinuxos-13-3/" data-a2a-title="SysLinuxOS 13.3">share</a></p><p>L'articolo <a href="https://syslinuxos.com/syslinuxos-13-3/">SysLinuxOS 13.3</a> proviene da <a href="https://syslinuxos.com">SysLinuxOS</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://syslinuxos.com/syslinuxos-13-3/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Terminal-system AI assistant (Claude Code, Codex) for your Linux system</title>
		<link>https://syslinuxos.com/terminal-system-ai-assistant-claude-code-codex-for-your-linux-system/</link>
					<comments>https://syslinuxos.com/terminal-system-ai-assistant-claude-code-codex-for-your-linux-system/#respond</comments>
		
		<dc:creator><![CDATA[edmond]]></dc:creator>
		<pubDate>Mon, 07 Sep 2026 18:54:26 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Repository]]></category>
		<category><![CDATA[router]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[Sicurezza]]></category>
		<category><![CDATA[switch]]></category>
		<category><![CDATA[SysLinuxOS]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[repository]]></category>
		<category><![CDATA[SysLinuxOS 13.2]]></category>
		<category><![CDATA[terminal-system]]></category>
		<guid isPermaLink="false">https://syslinuxos.com/?p=4188</guid>

					<description><![CDATA[<p>How many times have you had a problem on your Linux system and knew exactly what you wanted to do, but not the exact command, the right flags, or the syntax of that one tool you use once every six months? terminal-system exists for that: describe the problem in natural language, an AI assistant (Claude&#8230;&#160;<a href="https://syslinuxos.com/terminal-system-ai-assistant-claude-code-codex-for-your-linux-system/" rel="bookmark">Leggi tutto &#187;<span class="screen-reader-text">Terminal-system AI assistant (Claude Code, Codex) for your Linux system</span></a></p>
<p>L'articolo <a href="https://syslinuxos.com/terminal-system-ai-assistant-claude-code-codex-for-your-linux-system/">Terminal-system AI assistant (Claude Code, Codex) for your Linux system</a> proviene da <a href="https://syslinuxos.com">SysLinuxOS</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>How many times have you had a problem on your Linux system and knew exactly <em>what</em> you wanted to do, but not the exact command, the right flags, or the syntax of that one tool you use once every six months? <strong>terminal-system</strong> exists for that: describe the problem in natural language, an AI assistant (Claude Code or Codex, called non-interactively with no direct access to any tool of its own) translates the instruction into a shell command, and you see it appear ready to run, not something you just have to trust blindly.</p>
<p>Unlike a generic AI assistant you paste output and errors into by hand, terminal-system lives inside <strong>tmux</strong> right next to your real shell: the generated command is typed directly into the panel you&#8217;re working in, you confirm it (or edit it, or cancel it), and the result stays right there, in your own session.</p>
<h2>How it works</h2>
<p>A two-panel tmux layout: the left side is a normal shell, where commands actually run; the right side is an instruction prompt. You type what you want to achieve, the AI assistant translates it into one or more shell commands, and those commands are typed into the left panel in real time.</p>
<p>Launch it with the <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">terminal-system</code> command, or from the &#8220;Terminal System&#8221; entry in the <strong>SysLinuxOS Tools</strong> menu once installed. By default it starts with <strong>Claude Code</strong>; if Claude isn&#8217;t available it automatically falls back to <strong>Codex</strong>. To pick the engine explicitly: <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">terminal-system claude</code> or <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">terminal-system codex</code>.</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">&gt; list files larger than 100MB in this directory
-&gt; ran: find . -maxdepth 1 -type f -size +100M -exec ls -lh {} \;</pre>
<p style="text-align: center;"><a href="https://syslinuxos.com/terminal-system/"><img fetchpriority="high" fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-4189" src="https://syslinuxos.com/wp-content/uploads/2026/09/terminal-system.png" alt="terminal-system, the two tmux panels side by side: shell on the left, AI instructions on the right" width="920" height="560" srcset="https://syslinuxos.com/wp-content/uploads/2026/09/terminal-system.png 920w, https://syslinuxos.com/wp-content/uploads/2026/09/terminal-system-300x183.png 300w, https://syslinuxos.com/wp-content/uploads/2026/09/terminal-system-768x467.png 768w, https://syslinuxos.com/wp-content/uploads/2026/09/terminal-system-600x365.png 600w" sizes="(max-width: 920px) 100vw, 920px" /></a></p>
<p>Session context is opt-in: with <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">:context on</code>, recent instructions and output are passed to the assistant with every request, so it can handle follow-ups (&#8220;delete it now&#8221;, &#8220;retry with sudo&#8221;). It&#8217;s off by default, so every request starts clean. Either way it&#8217;s never written to disk: it disappears the moment you close the session, or right away with <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">:context clear</code>.</p>
<h2>Guide: usage options</h2>
<p>The right panel accepts both natural-language instructions and special commands starting with <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">:</code></p>
<table>
<thead>
<tr>
<th>Command</th>
<th>Effect</th>
</tr>
</thead>
<tbody>
<tr>
<td><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">:cmd &lt;command&gt;</code></td>
<td>Type a shell command manually, without going through the AI</td>
</tr>
<tr>
<td><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">:manual</code></td>
<td>Prompts for a manual command on the next line</td>
</tr>
<tr>
<td><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">:auto readonly</code> / <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">:auto off</code></td>
<td>Toggles automatic execution, only for a whitelist of read-only commands (default: off; <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">:auto on</code> still works as an alias)</td>
</tr>
<tr>
<td><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">:context on|off|show|clear</code></td>
<td>Toggles the session memory sent to the AI, shows it, or empties it (default: off)</td>
</tr>
<tr>
<td><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">:engine claude</code> / <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">:engine codex</code></td>
<td>Switches the AI engine for the rest of the session</td>
</tr>
<tr>
<td><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">:quit</code></td>
<td>Ends the session</td>
</tr>
</tbody>
</table>
<p>By default every command, generated or manual, waits for confirmation: <strong>Enter</strong> to run it, <strong>e</strong> to edit it first, <strong>n</strong> to cancel it. That&#8217;s the recommended mode for everyday use, you see what&#8217;s about to happen before it happens.</p>
<p><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">:auto readonly</code> only executes a command automatically if its first word is a recognized read-only program (<code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">ls</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">cat</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">grep</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">ps</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">git status/log/diff</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">systemctl status</code> and similar) and the line contains none of the shell metacharacters that could turn a harmless-looking command into something else (redirects, pipes, backticks, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">$()</code>, semicolons, &amp;). Anything else always asks, even in this mode. If one AI engine doesn&#8217;t respond, terminal-system automatically tries the other one, if available, before giving up.</p>
<h2>Safety and awareness</h2>
<p>One thing needs to be said plainly: terminal-system <strong>runs real commands on your system</strong>. It&#8217;s not a demo, it&#8217;s not a sandbox, if the AI generates a wrong command and you confirm it without looking, that command actually runs.</p>
<p>Some protections are built in:</p>
<ul>
<li>In <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">:auto readonly</code>, a command skips confirmation only if it passes two checks: its first word is a recognized read-only program, and the line contains none of the shell metacharacters that could make it do something other than what it looks like (redirects, pipes, backticks, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">$()</code>, semicolons, &amp;). Anything not explicitly recognized as safe always asks, even in auto-mode.</li>
<li>As a second safety net, a fixed set of always-dangerous patterns (destructive <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">rm</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">mkfs</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">dd</code> onto a device, fork bombs, any recursive <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">chmod</code> on <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/</code> regardless of mode, shutdown/reboot, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">killall -9</code>, removing root/sudo/admin users or groups, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">iptables -F</code>, writes onto devices under <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/dev</code>) forces manual confirmation regardless of the allowlist.</li>
<li>When a command is likely interactive (<code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">sudo</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">ssh</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">passwd</code>, an editor, a pager), focus moves to the left panel: passwords and interactive prompts are typed by you, directly into the shell running the command, never through the assistant.</li>
<li>terminal-system runs on its own dedicated tmux server, separate from the default one: the mouse shortcuts it sets up for copy-paste don&#8217;t touch your other tmux sessions.</li>
</ul>
<p>But a list of dangerous patterns is not an absolute guarantee, it&#8217;s a safety net, not a substitute for judgment. The underlying rule stays the same: <strong>read the command before pressing Enter</strong>. terminal-system is genuinely good at solving problems on your own system, like disk space vanishing, services that won&#8217;t start, wrong permissions, logs to make sense of, precisely because it takes the burden of remembering exact syntax off your shoulders. But what runs on your machine is still your responsibility, not the assistant&#8217;s: use <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">:auto readonly</code> only for operations whose effect you understand, and keep it off while exploring a system you don&#8217;t know well.</p>
<p><strong>One more limitation, specific to this kind of tool: on compressed instructions that ask for several things at once</strong> (&#8220;show me everything: kernel, uptime, memory, disk, network, upgradable packages&#8221;), the AI model sometimes glues two commands together with no space or semicolon between them (e.g. <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">uname -auptimefree -h...</code>), producing a line that looks like one command but is actually the wrong fusion of two. That&#8217;s model behavior, not a bug in the program that generates the command: no prompt wording fully eliminates it, only makes it rarer. On instructions like that, read the <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">[CONFIRM]</code> line more carefully than usual before pressing Enter &#8212; if something looks glued together with no space, press <strong>e</strong> to edit it or <strong>n</strong> to cancel.</p>
<p>When <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">:context on</code> is active, left-panel output is run through a filter that redacts the most common password/token/API-key patterns before being kept in memory, on a best-effort basis, not a guarantee: check with <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">:context show</code> before relying on it in a session where something sensitive showed up. Instructions and executed commands are still never written to disk either way: they stay in memory for the current tmux session only.</p>
<h2>Installation</h2>
<h3>Debian / Ubuntu — prebuilt package</h3>
<p>The <span style="color: #00ccff;"><a style="color: #00ccff;" href="https://github.com/fconidi/terminal-system/releases">GitHub Releases</a></span> page has a ready-made .deb, no cloning required:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">wget https://github.com/fconidi/terminal-system/releases/latest/download/terminal-system_1.1.7_all.deb
sudo apt install ./terminal-system_1.1.7_all.deb</pre>
<p>Or build it from source instead:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">git clone https://github.com/fconidi/terminal-system.git
cd terminal-system
bash build-deb.sh
sudo apt install ./terminal-system_*_all.deb</pre>
<h3>SysLinuxOS</h3>
<p>Already packaged in the official APT repository:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">curl -fsSL https://fconidi.github.io/SysLinuxOS-Tools/client/install-repo.sh | sudo bash
sudo apt update &amp;&amp; sudo apt install terminal-system</pre>
<p>Requires <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">bash</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">tmux</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">xclip</code> (for mouse-drag copy), and the <strong>claude</strong> and/or <strong>codex</strong> CLI already installed and authenticated, neither is a hard package dependency, since neither ships as a .deb on this system.</p>
<h2>Version history</h2>
<ul>
<li><strong>1.0.0</strong>  initial release: two-panel tmux launcher, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">ts-brain</code> instruction REPL, manual confirmation with edit/cancel, danger-pattern guardrail, focus handoff for interactive commands</li>
<li><strong>1.1.0</strong>  icon and SysLinuxOS Tools menu entry, mouse scrolling in both panels, up/down arrow history recall in the instruction prompt</li>
<li><strong>1.1.1</strong>  mouse-drag selection now copies to the system clipboard via xclip (was missing on VTE terminals like mate-terminal), fixed codex use outside a git/trusted directory</li>
<li><strong>1.1.3</strong>  types commands in 6-character chunks instead of one at a time (~6x fewer subprocesses), AI model configurable via <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">TS_CLAUDE_MODEL</code>/<code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">TS_CODEX_MODEL</code></li>
<li><strong>1.1.5</strong>  replaced <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">:auto on</code>&#8216;s denylist with a read-only command allowlist (<code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">:auto readonly</code>); session memory is now opt-in (<code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">:context on|off|show|clear</code>) with automatic secret redaction; runs on its own dedicated tmux server instead of the one shared with other sessions</li>
<li><strong>1.1.6</strong>  the queue of generated commands now stops if a panel stays busy past 120s (e.g. an unanswered sudo password prompt), instead of continuing to type over a still-pending command</li>
<li><strong>1.1.7</strong>  each command is now typed in a single call instead of in chunks (in rare cases, on long commands, chunked typing could desync tmux from the typed text); tightened the AI system prompt to reduce (not eliminate) glued-together commands &#8212; see the note in &#8220;Security and awareness&#8221;</li>
</ul>
<h2>Useful links</h2>
<ul>
<li>Source code and prebuilt .deb on GitHub (also useful outside SysLinuxOS): <span style="color: #00ccff;"><a style="color: #00ccff;" href="https://github.com/fconidi/terminal-system">github.com/fconidi/terminal-system</a></span></li>
<li>APT repository: <span style="color: #00ccff;"><a style="color: #00ccff;" href="https://fconidi.github.io/SysLinuxOS-Tools">fconidi.github.io/SysLinuxOS-Tools</a></span></li>
<li>Run <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">man terminal-system</code> after installing for the full documentation</li>
</ul>
<p>&nbsp;</p>
<p style="text-align: center;"><strong>terminal-system: AI-assisted terminal (Claude Code, Codex) for your Linux system</strong></p>
<p>&nbsp;</p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fterminal-system-ai-assistant-claude-code-codex-for-your-linux-system%2F&amp;linkname=Terminal-system%20AI%20assistant%20%28Claude%20Code%2C%20Codex%29%20for%20your%20Linux%20system" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fterminal-system-ai-assistant-claude-code-codex-for-your-linux-system%2F&amp;linkname=Terminal-system%20AI%20assistant%20%28Claude%20Code%2C%20Codex%29%20for%20your%20Linux%20system" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fterminal-system-ai-assistant-claude-code-codex-for-your-linux-system%2F&amp;linkname=Terminal-system%20AI%20assistant%20%28Claude%20Code%2C%20Codex%29%20for%20your%20Linux%20system" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fterminal-system-ai-assistant-claude-code-codex-for-your-linux-system%2F&amp;linkname=Terminal-system%20AI%20assistant%20%28Claude%20Code%2C%20Codex%29%20for%20your%20Linux%20system" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fterminal-system-ai-assistant-claude-code-codex-for-your-linux-system%2F&amp;linkname=Terminal-system%20AI%20assistant%20%28Claude%20Code%2C%20Codex%29%20for%20your%20Linux%20system" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fterminal-system-ai-assistant-claude-code-codex-for-your-linux-system%2F&amp;linkname=Terminal-system%20AI%20assistant%20%28Claude%20Code%2C%20Codex%29%20for%20your%20Linux%20system" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_facebook_messenger" href="https://www.addtoany.com/add_to/facebook_messenger?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fterminal-system-ai-assistant-claude-code-codex-for-your-linux-system%2F&amp;linkname=Terminal-system%20AI%20assistant%20%28Claude%20Code%2C%20Codex%29%20for%20your%20Linux%20system" title="Messenger" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_google_gmail" href="https://www.addtoany.com/add_to/google_gmail?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fterminal-system-ai-assistant-claude-code-codex-for-your-linux-system%2F&amp;linkname=Terminal-system%20AI%20assistant%20%28Claude%20Code%2C%20Codex%29%20for%20your%20Linux%20system" title="Gmail" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_no_icon addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fsyslinuxos.com%2Fterminal-system-ai-assistant-claude-code-codex-for-your-linux-system%2F&#038;title=Terminal-system%20AI%20assistant%20%28Claude%20Code%2C%20Codex%29%20for%20your%20Linux%20system" data-a2a-url="https://syslinuxos.com/terminal-system-ai-assistant-claude-code-codex-for-your-linux-system/" data-a2a-title="Terminal-system AI assistant (Claude Code, Codex) for your Linux system">share</a></p><p>L'articolo <a href="https://syslinuxos.com/terminal-system-ai-assistant-claude-code-codex-for-your-linux-system/">Terminal-system AI assistant (Claude Code, Codex) for your Linux system</a> proviene da <a href="https://syslinuxos.com">SysLinuxOS</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://syslinuxos.com/terminal-system-ai-assistant-claude-code-codex-for-your-linux-system/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Terminal-router AI assistants (Claude Code, Codex) on Cisco/Huawei routers</title>
		<link>https://syslinuxos.com/terminal-router-ai-assistants/</link>
					<comments>https://syslinuxos.com/terminal-router-ai-assistants/#respond</comments>
		
		<dc:creator><![CDATA[edmond]]></dc:creator>
		<pubDate>Sun, 06 Sep 2026 09:32:58 +0000</pubDate>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[Rete]]></category>
		<category><![CDATA[router]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[switch]]></category>
		<category><![CDATA[SysLinuxOS]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[terminal-router]]></category>
		<guid isPermaLink="false">https://syslinuxos.com/?p=4183</guid>

					<description><![CDATA[<p>Anyone who works on Cisco or Huawei routers/switches over SSH knows an AI assistant like Claude Code or Codex should never touch the device directly — no access, no risk of a wrong command hitting a production box. But it can be a genuinely useful second pair of eyes if it can see what you&#8230;&#160;<a href="https://syslinuxos.com/terminal-router-ai-assistants/" rel="bookmark">Leggi tutto &#187;<span class="screen-reader-text">Terminal-router AI assistants (Claude Code, Codex) on Cisco/Huawei routers</span></a></p>
<p>L'articolo <a href="https://syslinuxos.com/terminal-router-ai-assistants/">Terminal-router AI assistants (Claude Code, Codex) on Cisco/Huawei routers</a> proviene da <a href="https://syslinuxos.com">SysLinuxOS</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Anyone who works on <span style="color: #00ccff;"><a style="color: #00ccff;" href="https://www.cisco.com/">Cisco</a></span> or <span style="color: #00ccff;"><a style="color: #00ccff;" href="https://e.huawei.com/en/solutions/enterprise-network">Huawei</a></span> routers/switches over SSH knows an AI assistant like Claude Code or Codex should never touch the device directly — no access, no risk of a wrong command hitting a production box. But it can be a genuinely useful second pair of eyes if it can <em>see</em> what you type and respond in real time, without ever running anything itself.</p>
<p><strong>terminal-router</strong> is the <span style="color: #00ccff;"><a style="color: #00ccff;" href="https://syslinuxos.com">SysLinuxOS</a></span> package built for exactly that: it records your terminal session to a file an AI assistant can follow live, while you stay the only one actually typing commands on the device.</p>
<h2>How it works</h2>
<p>The workflow is simple: you open an SSH session to the router in one pane, the assistant tails <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">~/.claude-logs/latest</code> in another. You type, it reads and suggests, you decide what to run. The log never leaves the machine.</p>
<p>Under the hood it relies on <strong>tmux</strong>: each pane is piped to a logger script that writes a timestamped file, with an always-current <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">latest</code> symlink pointing at the newest pane.</p>
<h2>Two ways to enable it</h2>
<p>Since 1.0.4, terminal-router offers two distinct modes:</p>
<h3>terminal-router install — every terminal</h3>
<p>Adds a marked block to <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">~/.bashrc</code> (or <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">~/.zshrc</code>) and to <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">~/.tmux.conf</code>: from then on, <strong>every interactive terminal</strong> you open automatically enters a logged tmux session. Convenient if you work on network devices often and want logging always on, but it does touch your shell configuration — it stays active across reboots until you explicitly run <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">terminal-router remove</code>.</p>
<h3>terminal-router launch — one session, zero config changes</h3>
<p>The new option for when you want to log <strong>just that one session</strong>, without touching Terminator, GNOME Terminal, or any other terminal you already have open. <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">terminal-router launch</code> starts a self-contained tmux session with pipe-pane hooks scoped to that session only (no <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">-g</code> flag): when it ends, the hooks vanish with it, and nothing is ever written to <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">~/.bashrc</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">~/.zshrc</code>, or <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">~/.tmux.conf</code>.</p>
<p>One implementation detail worth sharing: chaining <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">pipe-pane</code> right after <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">new-session</code> in a single tmux invocation turns out to be unreliable — verified empirically on tmux 3.5a, the pipe silently never attaches to that first pane. The fix sets the hooks on the session first, then swaps the initial (never logged) window for a new one created after the hooks exist, which does get captured correctly.</p>
<h2>Installation</h2>
<p>terminal-router ships through the official SysLinuxOS Tools APT repository. If you haven&#8217;t added it yet:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">curl -fsSL https://fconidi.github.io/SysLinuxOS-Tools/client/install-repo.sh | sudo bash</pre>
<p>Then install the package like any other:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo apt update
sudo apt install terminal-router</pre>
<p>Installing the package enables nothing by itself — each user has to explicitly choose <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">install</code> or <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">launch</code> and accept the security notice once.</p>
<h2>Commands</h2>
<table>
<thead>
<tr>
<th>Command</th>
<th>What it does</th>
</tr>
</thead>
<tbody>
<tr>
<td><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">terminal-router install</code></td>
<td>Enables logging for every terminal (hooks in bashrc/zshrc + tmux.conf)</td>
</tr>
<tr>
<td><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">terminal-router launch</code></td>
<td>Logs a single session only, no config file edits</td>
</tr>
<tr>
<td><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">terminal-router status</code></td>
<td>Shows what&#8217;s active, log disk usage, and whether an AI assistant is available</td>
</tr>
<tr>
<td><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">terminal-router tail</code></td>
<td>Follows the newest pane log live</td>
</tr>
<tr>
<td><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">terminal-router remove</code></td>
<td>Removes the hooks (with automatic backups) and optionally deletes the logs</td>
</tr>
<tr>
<td><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">terminal-router menu</code></td>
<td>Interactive menu, also used by the applications-menu entry</td>
</tr>
</tbody>
</table>
<p>Inside a logged pane, two shell functions help around sensitive moments:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">logpause    # suspends logging for this pane
logresume   # resumes it, into a new file</pre>
<h2>New in 1.0.5: AI assistant check</h2>
<p>Logging a session only matters if something actually reads it. As of this version, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">install</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">launch</code>, and <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">status</code> check whether <strong>claude</strong> or <strong>codex</strong> is available on PATH, and warn — without blocking anything — if neither is found:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">$ terminal-router status
...
  AI assistant    found      (claude codex)
</pre>
<p>Note for Codex-via-nvm setups: it&#8217;s only detected if the shell running the check has already loaded nvm into its environment.</p>
<h2>Security: what ends up in the log (and what doesn&#8217;t)</h2>
<p>The log captures everything printed on screen. It does <strong>not</strong> capture passwords typed at an interactive prompt (sudo, SSH password authentication) — the terminal never echoes them, so tmux never sees them either.</p>
<p>What <strong>can</strong> end up in the log, because it&#8217;s visible on screen:</p>
<ul>
<li>passwords passed as plaintext arguments (e.g. <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">mysql -pXXX</code>)</li>
<li>tokens in HTTP headers (e.g. <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">curl -H "Authorization: Bearer ..."</code>)</li>
<li>the output of <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">cat</code> on a <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">.env</code> file or a private key</li>
</ul>
<p>Mitigations already in place: log directory at <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">0700</code>, files at <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">0600</code>, automatic rotation after 30 days, plus the <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">logpause</code>/<code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">logresume</code> pair for the moments you need to work quietly.</p>
<h2>Version history</h2>
<ul>
<li><strong>1.0.3</strong> — fixed a bug that left APT locked while using the CLI wrapper</li>
<li><strong>1.0.4</strong> — new <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">launch</code> command: a non-invasive single session, no bashrc/tmux.conf edits</li>
<li><strong>1.0.5</strong> — automatic detection of claude/codex, with a warning when no AI assistant is around to read the log</li>
</ul>
<h2>Useful links</h2>
<ul>
<li>APT repository: <span style="color: #00ccff;"><a style="color: #00ccff;" href="https://fconidi.github.io/SysLinuxOS-Tools">fconidi.github.io/SysLinuxOS-Tools</a></span></li>
<li>Source code on GitHub (also useful outside SysLinuxOS, to build the .deb on any Debian/Ubuntu): <span style="color: #00ccff;"><a style="color: #00ccff;" href="https://github.com/fconidi/terminal-router">github.com/fconidi/terminal-router</a></span></li>
<li>Run <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">man terminal-router</code> after installing for the full documentation</li>
</ul>
<p>&nbsp;</p>
<p style="text-align: center;"><strong>Terminal-router AI assistants (Claude Code, Codex) on Cisco/Huawei routers</strong></p>
<p>&nbsp;</p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fterminal-router-ai-assistants%2F&amp;linkname=Terminal-router%20AI%20assistants%20%28Claude%20Code%2C%20Codex%29%20on%20Cisco%2FHuawei%20routers" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fterminal-router-ai-assistants%2F&amp;linkname=Terminal-router%20AI%20assistants%20%28Claude%20Code%2C%20Codex%29%20on%20Cisco%2FHuawei%20routers" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fterminal-router-ai-assistants%2F&amp;linkname=Terminal-router%20AI%20assistants%20%28Claude%20Code%2C%20Codex%29%20on%20Cisco%2FHuawei%20routers" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fterminal-router-ai-assistants%2F&amp;linkname=Terminal-router%20AI%20assistants%20%28Claude%20Code%2C%20Codex%29%20on%20Cisco%2FHuawei%20routers" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fterminal-router-ai-assistants%2F&amp;linkname=Terminal-router%20AI%20assistants%20%28Claude%20Code%2C%20Codex%29%20on%20Cisco%2FHuawei%20routers" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fterminal-router-ai-assistants%2F&amp;linkname=Terminal-router%20AI%20assistants%20%28Claude%20Code%2C%20Codex%29%20on%20Cisco%2FHuawei%20routers" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_facebook_messenger" href="https://www.addtoany.com/add_to/facebook_messenger?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fterminal-router-ai-assistants%2F&amp;linkname=Terminal-router%20AI%20assistants%20%28Claude%20Code%2C%20Codex%29%20on%20Cisco%2FHuawei%20routers" title="Messenger" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_google_gmail" href="https://www.addtoany.com/add_to/google_gmail?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fterminal-router-ai-assistants%2F&amp;linkname=Terminal-router%20AI%20assistants%20%28Claude%20Code%2C%20Codex%29%20on%20Cisco%2FHuawei%20routers" title="Gmail" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_no_icon addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fsyslinuxos.com%2Fterminal-router-ai-assistants%2F&#038;title=Terminal-router%20AI%20assistants%20%28Claude%20Code%2C%20Codex%29%20on%20Cisco%2FHuawei%20routers" data-a2a-url="https://syslinuxos.com/terminal-router-ai-assistants/" data-a2a-title="Terminal-router AI assistants (Claude Code, Codex) on Cisco/Huawei routers">share</a></p><p>L'articolo <a href="https://syslinuxos.com/terminal-router-ai-assistants/">Terminal-router AI assistants (Claude Code, Codex) on Cisco/Huawei routers</a> proviene da <a href="https://syslinuxos.com">SysLinuxOS</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://syslinuxos.com/terminal-router-ai-assistants/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Build a Live ISO from DistroClone Backup Cache</title>
		<link>https://syslinuxos.com/build-iso-from-distroclone-backup-cache/</link>
					<comments>https://syslinuxos.com/build-iso-from-distroclone-backup-cache/#respond</comments>
		
		<dc:creator><![CDATA[edmond]]></dc:creator>
		<pubDate>Wed, 17 Jun 2026 17:45:17 +0000</pubDate>
				<category><![CDATA[SysLinuxOS]]></category>
		<guid isPermaLink="false">https://syslinuxos.com/build-iso-from-distroclone-backup-cache/</guid>

					<description><![CDATA[<p>Starting with distroclone 1.4.10 and distroclone-backup 1.3.4, the two tools are fully interoperable on btrfs filesystems. DistroClone can build a live ISO directly from the rootfs cache created by DistroClone Backup, bypassing the live rsync clone step entirely. This guide explains the technical architecture behind the feature, when to use it, and how btrfs subvolume&#8230;&#160;<a href="https://syslinuxos.com/build-iso-from-distroclone-backup-cache/" rel="bookmark">Leggi tutto &#187;<span class="screen-reader-text">Build a Live ISO from DistroClone Backup Cache</span></a></p>
<p>L'articolo <a href="https://syslinuxos.com/build-iso-from-distroclone-backup-cache/">Build a Live ISO from DistroClone Backup Cache</a> proviene da <a href="https://syslinuxos.com">SysLinuxOS</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="4148" class="elementor elementor-4148">
				<div class="elementor-element elementor-element-61992434 e-flex e-con-boxed e-con e-parent" data-id="61992434" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-fca9dd6 elementor-widget elementor-widget-text-editor" data-id="fca9dd6" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p> </p><p>Starting with <span style="color: #00ccff;"><strong>distroclone 1.4.10</strong></span> and <span style="color: #00ccff;"><strong>distroclone-backup 1.3.4</strong></span>, the two tools are fully interoperable on <strong>btrfs</strong> filesystems.<br /><span style="color: #00ccff;"><a style="color: #00ccff;" href="https://fconidi.github.io/distroClone/">DistroClone</a></span> can build a live ISO directly from the rootfs cache created by <a href="https://fconidi.github.io/distroClone-backup/"><span style="color: #00ccff;">DistroClone Backup</span></a>,<br />bypassing the live rsync clone step entirely.</p><p>This guide explains the technical architecture behind the feature, when to use it, and how<br />btrfs subvolume layout affects both tools.</p><hr /><h2>Why Build from Cache Instead of Live rsync?</h2><p>The standard DistroClone workflow clones the <em>running</em> system:</p><blockquote><p>running system → rsync → /mnt/&lt;distro&gt;_live/rootfs/ → squashfs → ISO</p></blockquote><p>This works well but has a limitation: the clone captures the system as it is<br /><em>right now</em>, including any transient state, open files, partially written logs,<br />and in-flight processes. If the system is in heavy use during the build, some files<br />may be inconsistent.</p><p>DistroClone Backup maintains a <strong>clean, versioned rootfs cache</strong> on a separate<br />btrfs volume. The cache is updated on a schedule (or on demand) and each version is<br />a stable, read-only btrfs snapshot. Building the ISO from the cache has several advantages:</p><ul><li><strong>Reproducible state</strong> — the ISO reflects a known, stable snapshot, not the live system mid-use.</li><li><strong>Faster builds</strong> — the cache rsync only transfers changed files; the ISO build rsync copies from a local btrfs volume at memory speed.</li><li><strong>Safe iteration</strong> — the running system is never read during the squashfs phase, eliminating race conditions from concurrent writes.</li><li><strong>Offline builds</strong> — the cache can be on a dedicated partition or external drive, allowing ISO builds even on a different machine.</li></ul><hr /><h2>How DistroClone Backup Builds the Cache</h2><p>DistroClone Backup stores the rootfs cache under a configurable base directory. The default path is:</p><p><code>/mnt/SysLinuxOS_backup/</code></p><p>Inside, it creates the following layout:</p><pre><code>/mnt/SysLinuxOS_backup/</code><br /><br /><code>├── .backup_meta          ← metadata file (date, distro, size)
└── .rootfs_cache/        ← btrfs subvolume (the live rsync target)
    └── .snapshots/       ← btrfs subvolume managed by snapper
        ├── 1/
        │   ├── info.xml
        │   └── snapshot/ ← read-only btrfs snapshot of .rootfs_cache
        ├── 2/
        │   ├── info.xml
        │   └── snapshot/
        └── ...
</code></pre><p><code>.rootfs_cache</code> is created as a <strong>btrfs subvolume</strong>, not a plain directory. This allows snapper to take read-only snapshots of it without copying data.</p><p>After each backup run, snapper creates a numbered snapshot inside <code>.snapshots/</code> — a read-only point-in-time copy of the rootfs. A retention policy (default: keep last 10) prunes old snapshots automatically.</p><p>The <code>.backup_meta</code> file contains three fields used by DistroClone:</p><pre><code>META_DATE="2026-06-17 14:30"
META_DISTRO="SysLinuxOS"
META_SIZE="8.2G"
</code></pre><hr /><h2>How DistroClone Detects and Uses the Cache</h2><h3>Detection at startup</h3><p>Before showing the welcome dialog, DistroClone checks for two conditions:</p><ol><li><code>/mnt/SysLinuxOS_backup/.rootfs_cache</code> exists as a directory</li><li><code>/mnt/SysLinuxOS_backup/.backup_meta</code> exists and is readable</li></ol><p>If both are true, DistroClone reads the metadata and builds a label string:</p><pre><code>2026-06-17 14:30 | SysLinuxOS | 8.2G</code></pre><p>This label appears in a checkbox added to the welcome YAD dialog:</p><pre><code>[ ] Build from DCB cache (2026-06-17 14:30 | SysLinuxOS | 8.2G)</code></pre><p>If the cache is not present, the checkbox is not shown and the dialog is identical to<br />the standard workflow.</p><h3>Step 7 — clone step bypass</h3><p>When the user enables the checkbox, DistroClone sets <code>SOURCE_MODE=cache</code>.<br />Step 7 (source validation / live system check) is skipped entirely:</p><pre><code>if [ "$SOURCE_MODE" != "cache" ] &amp;&amp; [ "$SOURCE" != "/" ]; then
    # live validation only runs in live mode
fi
</code></pre><h3>Step 8 — rsync from cache</h3><p>In cache mode, step 8 uses <code>$CACHE_DIR</code> as the rsync source instead of<br /><code>/</code>. Two differences from the live rsync are notable:</p><table border="1" cellpadding="6"><tbody><tr><th>Flag</th><th>Live mode</th><th>Cache mode</th><th>Reason</th></tr><tr><td><code>--one-file-system</code></td><td>yes</td><td>no</td><td>On btrfs, <code>--one-file-system</code> would <em>not</em> prevent entering btrfs<br />subvolumes anyway (same device ID). The flag is omitted in cache mode because the<br />source is already a filtered, standalone rootfs — not the running system with<br />mounted virtual filesystems.</td></tr><tr><td><code>--exclude=$LIVE_DIR</code></td><td>yes</td><td>no</td><td>The live build directory (<code>/mnt/&lt;distro&gt;_live/</code>) exists only on the<br />running system, not in the cache.</td></tr></tbody></table><p>The cache rsync excludes btrfs-specific paths to avoid carrying subvolume metadata into the ISO:</p><pre><code>--exclude=/.snapshots
--exclude=/.snapshots/*
--exclude=/@.rollback-bak-*
</code></pre><p>Standard exclusions still apply: <code>/dev</code>, <code>/proc</code>, <code>/sys</code>,<br /><code>/run</code>, <code>/tmp</code>, <code>/mnt</code>, <code>/home</code>,<br /><code>/root</code>, <code>/var/log</code>, apt caches, etc.</p><hr /><h2>btrfs Subvolume Layout and Interoperability</h2><p>A typical SysLinuxOS btrfs installation uses the following subvolume layout:</p><pre><code>btrfs root (top-level, subvolid=5)
├── @               ← mounted at /
├── @home           ← mounted at /home
└── .snapshots      ← snapper snapshots of @</code> <code>/mnt/SysLinuxOS_backup/ (separate btrfs volume or subvolume)
└── .rootfs_cache/  ← subvolume, rsync target
    └── .snapshots/ ← subvolume, snapper config "distroclone-backup"
        ├── 1/snapshot   (read-only)
        ├── 2/snapshot   (read-only)
        └── ...
</code></pre><h3>Why rm -rf fails on the cache</h3><p><code>rm -rf /mnt/SysLinuxOS_backup/</code> fails with <em>Read-only file system</em><br />because the btrfs read-only snapshots inside <code>.snapshots/N/snapshot/</code> cannot<br />be deleted by the kernel&#8217;s unlink path — only <code>btrfs subvolume delete</code> can<br />remove them.</p><p>The correct deletion order:</p><pre><code># 1. Delete each read-only snapshot leaf
sudo btrfs subvolume delete /mnt/SysLinuxOS_backup/.rootfs_cache/.snapshots/1/snapshot
sudo btrfs subvolume delete /mnt/SysLinuxOS_backup/.rootfs_cache/.snapshots/2/snapshot
# ... repeat for each numbered snapshot

# 2. Delete the .snapshots subvolume itself
sudo btrfs subvolume delete /mnt/SysLinuxOS_backup/.rootfs_cache/.snapshots

# 3. Delete the .rootfs_cache subvolume
sudo btrfs subvolume delete /mnt/SysLinuxOS_backup/.rootfs_cache

# 4. Now rm -rf works on the remainder
sudo rm -rf /mnt/SysLinuxOS_backup/
</code></pre><p>DistroClone Backup&#8217;s <strong>Delete Cache</strong> button (v1.3.4+) handles both snapshot<br />formats automatically — snapper-style numbered directories (<code>N/snapshot</code>) and<br />the legacy flat format (<code>@YYYY-MM-DD_HH:MM</code>).</p><hr /><h2>Typical Workflow</h2><p>A complete cycle using both tools together:</p><ol><li><strong>Run DistroClone Backup — Full Backup</strong><br />Creates <code>/mnt/SysLinuxOS_backup/.rootfs_cache/</code> via rsync clone of the<br />running system. On btrfs, snapper creates snapshot <code>1/snapshot</code>.</li><li><strong>Run DistroClone Backup — Incremental Backup</strong> (optional)<br />Updates the cache with changes since the last run. Snapper creates the next numbered<br />snapshot. Previous snapshots remain for rollback.</li><li><strong>Launch DistroClone</strong><br />The welcome dialog detects the cache and shows the checkbox with the cache metadata.<br />Enable <em>Build from DCB cache</em>.</li><li><strong>DistroClone builds the ISO from the cache</strong><br />Step 7 (live validation) is skipped. Step 8 rsyncs from<br /><code>/mnt/SysLinuxOS_backup/.rootfs_cache/</code>. All subsequent steps<br />(chroot config, Calamares setup, squashfs, GRUB, ISO assembly) run normally.</li><li><strong>Test and distribute the ISO</strong><br />The resulting ISO is a clean, reproducible snapshot of the system at the time of<br />the last backup run.</li></ol><hr /><h2>Requirements</h2><ul><li>btrfs filesystem on the backup destination (required for snapper versioning; ext4/xfs falls back to plain rsync without snapshots)</li><li>snapper installed and configured by DistroClone Backup (<code>sudo apt install snapper btrfs-progs</code>)</li><li>DistroClone Backup v1.3.0 or later (snapper integration)</li><li>DistroClone v1.4.10 or later (build-from-cache feature)</li><li>At least 4–6 GB free space under <code>/mnt</code> for the ISO build working directory</li></ul><hr /><h2>Installation</h2><p>Both packages are available from the SysLinuxOS APT repository:</p><pre><code>curl -fsSL https://fconidi.github.io/SysLinuxOS-Tools/client/install-repo.sh | sudo bash
sudo apt install distroclone distroclone-backup snapper btrfs-progs</code></pre><p>Or download the .deb packages directly:</p><pre><code>wget https://github.com/fconidi/distroClone/releases/latest/download/distroClone_1.4.10_all.deb
wget https://github.com/fconidi/distroClone-backup/releases/latest/download/distroclone-backup_1.3.4_all.deb
sudo apt install ./distroClone_1.4.10_all.deb ./distroclone-backup_1.3.4_all.deb</code></pre><hr /><p><strong>DistroClone</strong> and <strong>DistroClone Backup</strong> are part of the<br />SysLinuxOS toolchain — GPL-3.0-or-later — maintained by Franco Conidi aka edmond.</p><p>Further reading:<br /><span style="color: #00ccff;"><a style="color: #00ccff;" href="https://syslinuxos.com/distroclone-live-iso-builder/">DistroClone Live ISO Builder</a> ·</span><br /><span style="color: #00ccff;"><a style="color: #00ccff;" href="https://syslinuxos.com/distroclone-backup-restore/">DistroClone Backup &amp; Restore</a> ·</span><br /><a href="https://fconidi.github.io/SysLinuxOS-Tools/"><span style="color: #00ccff;">SysLinuxOS APT Repository</span></a></p><p> </p>								</div>
				</div>
					</div>
				</div>
				</div>
		<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fbuild-iso-from-distroclone-backup-cache%2F&amp;linkname=Build%20a%20Live%20ISO%20from%20DistroClone%20Backup%20Cache" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fbuild-iso-from-distroclone-backup-cache%2F&amp;linkname=Build%20a%20Live%20ISO%20from%20DistroClone%20Backup%20Cache" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fbuild-iso-from-distroclone-backup-cache%2F&amp;linkname=Build%20a%20Live%20ISO%20from%20DistroClone%20Backup%20Cache" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fbuild-iso-from-distroclone-backup-cache%2F&amp;linkname=Build%20a%20Live%20ISO%20from%20DistroClone%20Backup%20Cache" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fbuild-iso-from-distroclone-backup-cache%2F&amp;linkname=Build%20a%20Live%20ISO%20from%20DistroClone%20Backup%20Cache" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fbuild-iso-from-distroclone-backup-cache%2F&amp;linkname=Build%20a%20Live%20ISO%20from%20DistroClone%20Backup%20Cache" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_facebook_messenger" href="https://www.addtoany.com/add_to/facebook_messenger?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fbuild-iso-from-distroclone-backup-cache%2F&amp;linkname=Build%20a%20Live%20ISO%20from%20DistroClone%20Backup%20Cache" title="Messenger" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_google_gmail" href="https://www.addtoany.com/add_to/google_gmail?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fbuild-iso-from-distroclone-backup-cache%2F&amp;linkname=Build%20a%20Live%20ISO%20from%20DistroClone%20Backup%20Cache" title="Gmail" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_no_icon addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fsyslinuxos.com%2Fbuild-iso-from-distroclone-backup-cache%2F&#038;title=Build%20a%20Live%20ISO%20from%20DistroClone%20Backup%20Cache" data-a2a-url="https://syslinuxos.com/build-iso-from-distroclone-backup-cache/" data-a2a-title="Build a Live ISO from DistroClone Backup Cache">share</a></p><p>L'articolo <a href="https://syslinuxos.com/build-iso-from-distroclone-backup-cache/">Build a Live ISO from DistroClone Backup Cache</a> proviene da <a href="https://syslinuxos.com">SysLinuxOS</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://syslinuxos.com/build-iso-from-distroclone-backup-cache/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>SysLinuxOS Official APT Repository Now Live</title>
		<link>https://syslinuxos.com/syslinuxos-tools-apt-repository/</link>
					<comments>https://syslinuxos.com/syslinuxos-tools-apt-repository/#respond</comments>
		
		<dc:creator><![CDATA[edmond]]></dc:creator>
		<pubDate>Tue, 16 Jun 2026 10:05:02 +0000</pubDate>
				<category><![CDATA[Backup]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[DistroClone]]></category>
		<category><![CDATA[DistroClone-Backup]]></category>
		<category><![CDATA[Repository]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[SysLinuxOS]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[debian 13]]></category>
		<category><![CDATA[repository]]></category>
		<category><![CDATA[SysLinuxOS 13.2]]></category>
		<guid isPermaLink="false">https://syslinuxos.com/syslinuxos-tools-apt-repository/</guid>

					<description><![CDATA[<p>I am excited to announce that the official SysLinuxOS AP  is now live and publicly accessible. All SysLinuxOS tools and packages are now installable and upgradable directly via apt, with GPG signature verification and automatic updates. What it is The SysLinuxOS-Tools repository is a GPG-signed APT repository hosted on GitHub Pages and managed with reprepro.&#8230;&#160;<a href="https://syslinuxos.com/syslinuxos-tools-apt-repository/" rel="bookmark">Leggi tutto &#187;<span class="screen-reader-text">SysLinuxOS Official APT Repository Now Live</span></a></p>
<p>L'articolo <a href="https://syslinuxos.com/syslinuxos-tools-apt-repository/">SysLinuxOS Official APT Repository Now Live</a> proviene da <a href="https://syslinuxos.com">SysLinuxOS</a>.</p>
]]></description>
										<content:encoded><![CDATA[<figure class="wp-block-image"><img decoding="async" style="max-width: 100%; height: auto; border-radius: 8px; margin: 1.5rem 0;" src="https://syslinuxos.com/wp-content/uploads/2026/06/SysLinuxOS-repo.png" alt="SysLinuxOS-Tools Repository" /></figure>
<p>I am excited to announce that the <strong>official <span style="color: #00ccff;">SysLinuxOS</span> AP </strong> is now live and publicly accessible. All SysLinuxOS tools and packages are now installable and upgradable directly via <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">apt</code>, with GPG signature verification and automatic updates.</p>
<h2>What it is</h2>
<p>The <strong>SysLinuxOS-Tools</strong> repository is a GPG-signed APT repository hosted on GitHub Pages and managed with <strong>reprepro</strong>. It distributes the packages developed for SysLinuxOS: tools that extend Debian with snapshot management, live ISO creation, system monitoring and more.</p>
<p>Repository URL: <a href="https://fconidi.github.io/SysLinuxOS-Tools">https://fconidi.github.io/SysLinuxOS-Tools</a></p>
<p>Source code and metadata on GitHub: <a href="https://github.com/fconidi/SysLinuxOS-Tools">https://github.com/fconidi/SysLinuxOS-Tools</a></p>
<h2>Available packages (repo constantly updated)</h2>
<ul>
<li><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">distroclone</code> — builds a bootable live ISO directly from your running Debian system</li>
<li><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">distroclone-backup</code> — automatic Btrfs snapshot integration for distroClone</li>
<li><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">grub-btrfs</code> — Btrfs snapshots in the GRUB menu (SysLinuxOS build)</li>
<li><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">syslinuxos-ring-conky</code> — ring-style Conky theme with auto-scaling</li>
<li><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">syslinuxos-snapshots</code> — Btrfs snapshot management with GRUB integration</li>
<li><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">conky-window</code> — minimal Conky window theme for SysLinuxOS</li>
</ul>
<h2></h2>
<h2>Tip</h2>
<p>After installing SysLinuxOS 13.2, I recommend reinstalling the packages, to update configuration files, and align all packages with apt.</p>
<h2></h2>
<h2>Installation</h2>
<p>A single command sets up the repository, imports the GPG key and configures the APT source:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">curl -fsSL https://fconidi.github.io/SysLinuxOS-Tools/client/install-repo.sh | sudo bash</pre>
<p>After that, install any package as usual:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo apt install syslinuxos-snapshots
sudo apt install syslinuxos-ring-conky
sudo apt install distroclone</pre>
<p>Updates will be delivered automatically via <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">apt upgrade</code>, like any standard Debian package.</p>
<h3>Manual setup</h3>
<p>If you prefer to configure the repository by hand:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;"># Import the signing key
curl -fsSL https://fconidi.github.io/SysLinuxOS-Tools/syslinuxos-archive-keyring.asc \
  | sudo gpg --dearmor -o /usr/share/keyrings/syslinuxos-archive-keyring.gpg

# Add the APT source (deb822 format)
sudo tee /etc/apt/sources.list.d/syslinuxos-tools.sources &gt;/dev/null &lt;&lt;'EOF'
Types: deb
URIs: https://fconidi.github.io/SysLinuxOS-Tools
Suites: tirreno
Components: main
Architectures: amd64
Signed-By: /usr/share/keyrings/syslinuxos-archive-keyring.gpg
EOF

sudo apt update</pre>
<h2>Technical details</h2>
<ul>
<li><strong>Hosting:</strong> GitHub Pages (branch <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">main</code>)</li>
<li><strong>Signing:</strong> GPG RSA-4096, key ID <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">5FADCAF45BC3FA1D</code></li>
<li><strong>Suite:</strong> <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">tirreno</code> — <strong>Component:</strong> <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">main</code> — <strong>Architecture:</strong> <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">amd64</code></li>
<li><strong>Package management:</strong> reprepro — one version per package, index rebuilt and re-signed on each update</li>
</ul>
<p>The <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">grub-btrfs</code> package is a customized build for SysLinuxOS. To ensure it always takes precedence over any Debian-provided version, the install script configures an APT pin at priority 1001 in <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/etc/apt/preferences.d/99-syslinuxos-tools.pref</code>. No other packages are pinned.</p>
<h2>Why a dedicated repository</h2>
<p>Managing SysLinuxOS packages individually — downloading <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">.deb</code> files, tracking versions, running <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">dpkg -i</code> manually — is error-prone and does not scale. A proper APT repository means:</p>
<ul>
<li>Packages are installed and upgraded with standard <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">apt</code> commands</li>
<li>GPG signature verification on every <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">apt update</code></li>
<li>Correct dependency resolution handled by APT</li>
<li>No manual intervention needed when new versions are released</li>
</ul>
<p>The repository is already used in the SysLinuxOS ISO build process and on all active SysLinuxOS installations.</p>
<p><em>Franco Conidi aka edmond — francoconidi.it — syslinuxos.com</em></p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-tools-apt-repository%2F&amp;linkname=SysLinuxOS%20Official%20APT%20Repository%20Now%20Live" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-tools-apt-repository%2F&amp;linkname=SysLinuxOS%20Official%20APT%20Repository%20Now%20Live" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-tools-apt-repository%2F&amp;linkname=SysLinuxOS%20Official%20APT%20Repository%20Now%20Live" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-tools-apt-repository%2F&amp;linkname=SysLinuxOS%20Official%20APT%20Repository%20Now%20Live" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-tools-apt-repository%2F&amp;linkname=SysLinuxOS%20Official%20APT%20Repository%20Now%20Live" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-tools-apt-repository%2F&amp;linkname=SysLinuxOS%20Official%20APT%20Repository%20Now%20Live" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_facebook_messenger" href="https://www.addtoany.com/add_to/facebook_messenger?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-tools-apt-repository%2F&amp;linkname=SysLinuxOS%20Official%20APT%20Repository%20Now%20Live" title="Messenger" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_google_gmail" href="https://www.addtoany.com/add_to/google_gmail?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-tools-apt-repository%2F&amp;linkname=SysLinuxOS%20Official%20APT%20Repository%20Now%20Live" title="Gmail" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_no_icon addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-tools-apt-repository%2F&#038;title=SysLinuxOS%20Official%20APT%20Repository%20Now%20Live" data-a2a-url="https://syslinuxos.com/syslinuxos-tools-apt-repository/" data-a2a-title="SysLinuxOS Official APT Repository Now Live">share</a></p><p>L'articolo <a href="https://syslinuxos.com/syslinuxos-tools-apt-repository/">SysLinuxOS Official APT Repository Now Live</a> proviene da <a href="https://syslinuxos.com">SysLinuxOS</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://syslinuxos.com/syslinuxos-tools-apt-repository/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>SysLinuxOS Snapshot Management Guide</title>
		<link>https://syslinuxos.com/syslinuxos-snapshot/</link>
					<comments>https://syslinuxos.com/syslinuxos-snapshot/#respond</comments>
		
		<dc:creator><![CDATA[edmond]]></dc:creator>
		<pubDate>Tue, 09 Jun 2026 18:39:58 +0000</pubDate>
				<category><![CDATA[Backup]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Sicurezza]]></category>
		<category><![CDATA[SysLinuxOS]]></category>
		<category><![CDATA[SysLinuxOS 13.2]]></category>
		<guid isPermaLink="false">https://syslinuxos.com/?p=4113</guid>

					<description><![CDATA[<p>&#160; SysLinuxOS &#8211; Snapshot Management Guide 1. Introduction SysLinuxOS 13.2 uses btrfs as its default filesystem and integrates snapper, grub-btrfs, and the syslinuxos-rollback helper to provide automatic, GRUB-bootable filesystem snapshots. Every time the system is updated or a snapshot is created manually, a copy of the root filesystem is stored in /.snapshots. These snapshots appear&#8230;&#160;<a href="https://syslinuxos.com/syslinuxos-snapshot/" rel="bookmark">Leggi tutto &#187;<span class="screen-reader-text">SysLinuxOS Snapshot Management Guide</span></a></p>
<p>L'articolo <a href="https://syslinuxos.com/syslinuxos-snapshot/">SysLinuxOS Snapshot Management Guide</a> proviene da <a href="https://syslinuxos.com">SysLinuxOS</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><!-- SysLinuxOS — Snapshot Management Guide — for the Elementor "Editor di testo" widget (tab: Codice).
Plain semantic HTML + inline styles only (no



<style> block, which the
WordPress editor would strip). Headings/paragraphs inherit your theme's
typography; only the code boxes carry inline styling so they stay readable
on a dark background. Copy everything below into the Codice tab. --></p>
<h1><img loading="lazy" decoding="async" class="alignnone wp-image-4120 size-large" src="https://syslinuxos.com/wp-content/uploads/2026/06/SysLinuxOS-snapshot-1024x559.png" alt="SysLinuxOS Snapshot Management Guide" width="1024" height="559" srcset="https://syslinuxos.com/wp-content/uploads/2026/06/SysLinuxOS-snapshot-1024x559.png 1024w, https://syslinuxos.com/wp-content/uploads/2026/06/SysLinuxOS-snapshot-300x164.png 300w, https://syslinuxos.com/wp-content/uploads/2026/06/SysLinuxOS-snapshot-768x419.png 768w, https://syslinuxos.com/wp-content/uploads/2026/06/SysLinuxOS-snapshot-600x327.png 600w, https://syslinuxos.com/wp-content/uploads/2026/06/SysLinuxOS-snapshot-1190x649.png 1190w, https://syslinuxos.com/wp-content/uploads/2026/06/SysLinuxOS-snapshot.png 1408w" sizes="(max-width: 1024px) 100vw, 1024px" /></h1>
<p>&nbsp;</p>
<h1>SysLinuxOS &#8211; Snapshot Management Guide</h1>
<h2>1. Introduction</h2>
<p><span style="color: #00ccff;"><a style="color: #00ccff;" href="https://syslinuxos.com/syslinuxos-13-2-revolution/">SysLinuxOS 13.2</a></span> uses btrfs as its default filesystem and integrates snapper, grub-btrfs, and the <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">syslinuxos-rollback</code> helper to provide automatic, GRUB-bootable filesystem snapshots.</p>
<p>Every time the system is updated or a snapshot is created manually, a copy of the root filesystem is stored in <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/.snapshots</code>. These snapshots appear as boot entries in the GRUB menu, making it possible to boot into a previous state without losing data or needing a live ISO.</p>
<p>This guide covers the commands you will use day-to-day to inspect, create, delete, and restore snapshots on SysLinuxOS.</p>
<h2>2. Requirements</h2>
<p>The following packages must be installed and active (default in SysLinuxOS):</p>
<ul>
<li><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">syslinuxos-snapshots</code> — provides <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">syslinuxos-rollback</code>, the grub.d helpers, and the setup script</li>
<li><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">snapper</code> &gt;= 0.10</li>
<li><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">grub-btrfs</code> &gt;= 4.14</li>
<li><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">btrfs-progs</code></li>
</ul>
<p>To verify the setup is complete:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo snapper -c root list
systemctl status snapper-timeline.timer snapper-cleanup.timer grub-btrfsd.service</pre>
<p>If <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/.snapshots</code> is missing or the snapper config does not exist, re-run the setup:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo /usr/sbin/syslinuxos-snapshots-setup</pre>
<h2>3. Viewing Snapshots</h2>
<p>List all existing snapshots:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo snapper -c root list</pre>
<p>The output shows the snapshot number, type (single, pre, post), date, description, and whether the snapshot is read-only. Row <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">0</code> is always the current live state and is not a real snapshot.</p>
<p>To show detailed information about a specific snapshot:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo snapper -c root info N</pre>
<p>Replace <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">N</code> with the snapshot number.</p>
<h2>4. Creating a Snapshot</h2>
<p>Create a manual single snapshot with a description:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo snapper -c root create --description "before kernel upgrade" --type single</pre>
<p>Create a pre/post pair around an operation (for example a package install):</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo snapper -c root create --type pre --description "pre apt upgrade"
sudo apt upgrade
sudo snapper -c root create --type post --description "post apt upgrade"</pre>
<h2>5. Deleting Snapshots</h2>
<p>Delete a single snapshot by number:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo snapper -c root delete N</pre>
<p>Delete a range of snapshots:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo snapper -c root delete N-M</pre>
<p>Snapper also runs automatic cleanup via the <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">snapper-cleanup.timer</code> service. The active limits are:</p>
<ul>
<li>Maximum regular snapshots kept: 5</li>
<li>Maximum important snapshots kept: 5</li>
<li>Daily timeline snapshots kept: 7</li>
<li>GRUB snapshot entries shown: 8</li>
</ul>
<p>These values are set by <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">syslinuxos-snapshots-setup</code> and can be overridden manually:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo snapper -c root set-config "NUMBER_LIMIT=10"
sudo snapper -c root set-config "TIMELINE_LIMIT_DAILY=14"</pre>
<h2>6. Automatic Snapshots (Timeline)</h2>
<p>The timeline creates one snapshot per hour and keeps the most recent daily snapshots according to the configured limits. This is handled by two systemd timers:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">systemctl status snapper-timeline.timer
systemctl status snapper-cleanup.timer</pre>
<p>To check the timeline configuration:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo snapper -c root get-config</pre>
<p>Timeline creation is enabled by default (<code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">TIMELINE_CREATE="yes"</code>). To disable it:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo snapper -c root set-config "TIMELINE_CREATE=no"</pre>
<h2>7. Booting from a Snapshot (GRUB)</h2>
<p>At boot, the GRUB menu includes a submenu named <strong>SysLinuxOS — snapshots</strong>. Select a snapshot entry to boot the system in the state it was at the time the snapshot was taken.</p>
<p>The system boots from a read-only copy of the snapshot. From this temporary state you can verify the system works and then decide whether to proceed with the rollback.</p>
<p>The submenu is generated by <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">grub-btrfsd</code>, which monitors <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/.snapshots</code> and updates <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/boot/grub/grub-btrfs.cfg</code> automatically when snapshots are created or deleted. To regenerate it manually:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo update-grub</pre>
<h2>8. Rolling Back to a Snapshot</h2>
<p>Rolling back replaces the current root subvolume (<code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">@</code>) with a read-write copy of the chosen snapshot. The previous <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">@</code> is preserved as <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">@.rollback-bak-&lt;timestamp&gt;</code> on the btrfs top-level volume for recovery purposes.</p>
<h3>8.1 Method 1 — From a Booted Snapshot (Recommended)</h3>
<p>Boot into the snapshot you want to restore via the GRUB snapshot submenu, then run:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo syslinuxos-rollback</pre>
<p>The tool auto-detects the snapshot number from the current subvolume path.</p>
<h3>8.2 Method 2 — From the Running System or a Live ISO</h3>
<p>Pass the snapshot number explicitly:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo syslinuxos-rollback N</pre>
<p>In both cases the tool asks for confirmation before making any changes, then prints the steps it will execute:</p>
<ol>
<li>Rename <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">@</code> to <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">@.rollback-bak-&lt;timestamp&gt;</code></li>
<li>Create a new read-write <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">@</code> from snapshot <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">N</code></li>
<li>Recreate <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">@/.snapshots</code> as an empty btrfs subvolume (snapper resumes normally)</li>
</ol>
<p>After the tool completes, reboot:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo reboot</pre>
<p>After verifying the rolled-back system works correctly, you can delete the backup subvolume (see the next section).</p>
<h2>9. Cleaning Up Rollback Backups</h2>
<p>Each rollback leaves a <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">@.rollback-bak-&lt;timestamp&gt;</code> subvolume on the btrfs top-level volume. These are kept intentionally as a safety net and do not appear in the GRUB snapshot menu.</p>
<p>To list and remove them:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo mkdir -p /mnt/tmp
sudo mount -o subvolid=5 /dev/sdXN /mnt/tmp
ls /mnt/tmp | grep rollback-bak
sudo btrfs subvolume delete -R -c /mnt/tmp/@.rollback-bak-&lt;timestamp&gt;
sudo umount /mnt/tmp</pre>
<p>Replace <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/dev/sdXN</code> with your btrfs partition (visible with <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">lsblk</code>).</p>
<h2>10. Accessing Snapshots from Another SysLinuxOS Install</h2>
<p>If multiple SysLinuxOS installs are present on different partitions, the GRUB menu includes two additional sections generated by the <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">syslinuxos-snapshots</code> package:</p>
<ul>
<li><strong>Other Linux installs on btrfs:</strong> top-level entry for each secondary install plus an <strong>Advanced options</strong> submenu with all available kernels and recovery entries. This replaces the missing os-prober detection for btrfs <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">@</code> layouts (Debian bugs 921004, 940710).</li>
<li><strong>SysLinuxOS — Snapshots of other installs:</strong> a submenu that chainloads the <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">grub-btrfs.cfg</code> of each secondary install. Selecting an entry boots that install&#8217;s specific snapshot.</li>
</ul>
<p>Both sections are generated by <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/etc/grub.d/13_syslinuxos-btrfs-otheros</code> and <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/etc/grub.d/14_syslinuxos-snapshots-otheros</code>. They can be disabled individually in <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/etc/default/grub</code>:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">GRUB_DISABLE_BTRFS_OTHEROS=true
GRUB_DISABLE_BTRFS_SNAPSHOTS_OTHEROS=true</pre>
<p>After changing these variables, regenerate the GRUB configuration:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo update-grub</pre>
<h3>10.1 LUKS-encrypted installs</h3>
<p>Starting with <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">syslinuxos-snapshots</code> 0.3.15, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/etc/grub.d/13_syslinuxos-btrfs-otheros</code> automatically handles secondary installs protected by LUKS full-disk encryption. When the LUKS container is already open at the time <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">update-grub</code> runs, the script detects the encrypted device and generates a boot entry that includes the required <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">cryptomount</code> directive — no manual editing of <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/etc/grub.d/40_custom</code> required.</p>
<p>Open the LUKS container before running <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">update-grub</code> (the mapper name does not matter):</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo cryptsetup luksOpen /dev/nvme0n1pX any_name
sudo update-grub
sudo cryptsetup close any_name</pre>
<p>At boot, GRUB asks for the LUKS passphrase once to load the kernel and initrd from the encrypted partition. The initramfs then prompts a second time to mount the encrypted root filesystem.</p>
<h2>11. Re-running Setup</h2>
<p>The setup script is idempotent and safe to re-run at any time. It will skip steps that are already complete and only apply what is missing:</p>
<pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo /usr/sbin/syslinuxos-snapshots-setup</pre>
<p>Use this after a manual change to the snapper configuration, after a failed <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">snapper-boot.service</code>, or when setting up a system that was installed without the <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">syslinuxos-snapshots</code> package.</p>
<p>&nbsp;</p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-snapshot%2F&amp;linkname=SysLinuxOS%20Snapshot%20Management%20Guide" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-snapshot%2F&amp;linkname=SysLinuxOS%20Snapshot%20Management%20Guide" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-snapshot%2F&amp;linkname=SysLinuxOS%20Snapshot%20Management%20Guide" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-snapshot%2F&amp;linkname=SysLinuxOS%20Snapshot%20Management%20Guide" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-snapshot%2F&amp;linkname=SysLinuxOS%20Snapshot%20Management%20Guide" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-snapshot%2F&amp;linkname=SysLinuxOS%20Snapshot%20Management%20Guide" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_facebook_messenger" href="https://www.addtoany.com/add_to/facebook_messenger?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-snapshot%2F&amp;linkname=SysLinuxOS%20Snapshot%20Management%20Guide" title="Messenger" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_google_gmail" href="https://www.addtoany.com/add_to/google_gmail?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-snapshot%2F&amp;linkname=SysLinuxOS%20Snapshot%20Management%20Guide" title="Gmail" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_no_icon addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-snapshot%2F&#038;title=SysLinuxOS%20Snapshot%20Management%20Guide" data-a2a-url="https://syslinuxos.com/syslinuxos-snapshot/" data-a2a-title="SysLinuxOS Snapshot Management Guide">share</a></p><p>L'articolo <a href="https://syslinuxos.com/syslinuxos-snapshot/">SysLinuxOS Snapshot Management Guide</a> proviene da <a href="https://syslinuxos.com">SysLinuxOS</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://syslinuxos.com/syslinuxos-snapshot/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>SysLinuxOS 13.2 Revolution</title>
		<link>https://syslinuxos.com/syslinuxos-13-2-revolution/</link>
					<comments>https://syslinuxos.com/syslinuxos-13-2-revolution/#comments</comments>
		
		<dc:creator><![CDATA[edmond]]></dc:creator>
		<pubDate>Tue, 09 Jun 2026 11:09:28 +0000</pubDate>
				<category><![CDATA[Backup]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[DistroClone]]></category>
		<category><![CDATA[DistroClone-Backup]]></category>
		<category><![CDATA[Gnome]]></category>
		<category><![CDATA[Mate]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[Rete]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Sicurezza]]></category>
		<category><![CDATA[SysLinuxOS]]></category>
		<category><![CDATA[SysLinuxOS 13.2]]></category>
		<guid isPermaLink="false">https://syslinuxos.com/?p=4092</guid>

					<description><![CDATA[<p>SysLinuxOS 13.2 there was no more time This release is not a simple update, but it is the &#8220;14&#8221; version that I had in mind, a real epochal change. There was no more time and I didn&#8217;t want to wait any longer.  SysLinuxOS  13.2 is a substantial revision of how the system handles storage, backups,&#8230;&#160;<a href="https://syslinuxos.com/syslinuxos-13-2-revolution/" rel="bookmark">Leggi tutto &#187;<span class="screen-reader-text">SysLinuxOS 13.2 Revolution</span></a></p>
<p>L'articolo <a href="https://syslinuxos.com/syslinuxos-13-2-revolution/">SysLinuxOS 13.2 Revolution</a> proviene da <a href="https://syslinuxos.com">SysLinuxOS</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="4092" class="elementor elementor-4092">
				<div class="elementor-element elementor-element-655b732 e-flex e-con-boxed e-con e-parent" data-id="655b732" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-18486bd elementor-widget elementor-widget-text-editor" data-id="18486bd" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><!-- SysLinuxOS 13.2 — technical overview, for the Elementor "Editor di testo" widget (tab: Codice).<br />     Plain semantic HTML + inline styles only (no </p>
<style><span style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" data-mce-type="bookmark" class="mce_SELRES_start"></span> block, which the WordPress editor strips).<br />     Headings/paragraphs inherit the theme typography; inline command terms are light blue and<br />     code blocks use a dark panel, both readable on a dark background. --></p><h1>SysLinuxOS 13.2 there was no more time</h1><p>This release is not a simple update, but it is the &#8220;<span style="color: #00ccff;">14</span>&#8221; version that I had in mind, a real epochal change. There was no more time and I didn&#8217;t want to wait any longer.<span style="color: #00ccff;">  <a href="https://syslinuxos.com">SysLinuxOS</a> </span> 13.2 is a substantial revision of how the system handles storage, backups, recovery, and boot. The release introduces <a href="https://en.wikipedia.org/wiki/Btrfs"><span style="color: #00ccff;"><strong>btrfs</strong></span></a> as the default filesystem and builds an integrated snapshot, rollback, and backup layer on top of it. All of these capabilities are preconfigured and active from the first boot, with no additional setup required.</p><h2>btrfs by Default</h2><p>New installations use <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">btrfs</code> with the standard <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">@</code> subvolume for root and <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">@home</code> for home. Calamares performs the partitioning and subvolume layout automatically during guided installation, with no manual configuration.</p><p>btrfs enables capabilities that are not available on ext4: instant snapshots, full system rollback, and native incremental backups. In SysLinuxOS 13.2 these features are integrated and preconfigured out of the box.</p><h2>Integrated Snapper Configuration</h2><p>As soon as SysLinuxOS 13.2 is installed, <a href="https://github.com/openSUSE/snapper"><span style="color: #00ccff;">Snapper</span></a> is configured and active. The following operations are automatic:</p><ul><li>A baseline snapshot is created at the end of the installation, providing a clean reference point.</li><li>Each <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">apt</code> install, upgrade, or remove operation creates a pre/post snapshot pair.</li><li>Boot snapshots are created on each system start, before any service modifies files.</li><li>A timeline retains daily, weekly, and monthly snapshots.</li></ul><p>Retention limits are set to sensible defaults (<code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">NUMBER_LIMIT 5</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">TIMELINE_LIMIT_DAILY 7</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">GRUB_BTRFS_LIMIT 8</code>). On upgrade, custom values set by the user are preserved.</p><h2>GRUB Snapshot Menu and Rollback</h2><p>Through <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">grub-btrfs</code> integration, a &#8220;SysLinuxOS — snapshots&#8221; submenu is added to the boot menu and updated on every <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">update-grub</code>, listing the most recent system snapshots.</p><p>To restore a previous state, boot a snapshot in read-only recovery mode and run <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">syslinuxos-rollback</code>. The tool renames the current <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">@</code> to a timestamped backup, creates a new read-write <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">@</code> from the selected snapshot, and recreates <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/.snapshots</code> as an empty subvolume. After reboot the system returns to the selected state, with the full previous snapshot history preserved in the backup.</p><h2>Multiple SysLinuxOS Installations on a Single Disk</h2><p>btrfs and os-prober have a long-standing limitation, reported as a Debian bug and still open upstream (#921004, #940710): with two Linux installations on btrfs partitions, GRUB detects only the current one. The cause is that os-prober mounts the partition at the top level and looks for <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/etc/os-release</code> there, while in the standard btrfs layout the file resides at <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/@/etc/os-release</code>.</p><p>SysLinuxOS 13.2 addresses this with a custom, os-prober-independent solution. The script <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/etc/grub.d/13_syslinuxos-btrfs-otheros</code> enumerates all btrfs partitions via <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">lsblk</code>, mounts each with <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">subvol=@</code>, checks for <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/etc/os-release</code>, and generates complete GRUB menuentry blocks: a top-level entry with the most recent kernel, an &#8220;Advanced options&#8221; submenu listing all kernels newest-first, and a recovery entry. It runs alongside os-prober without conflicts, while os-prober continues to handle ext4/xfs installations. It can be disabled with a single line in <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/etc/default/grub</code>.</p><p>In addition, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/etc/grub.d/14_syslinuxos-snapshots-otheros</code> detects btrfs installations that contain a <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">grub-btrfs.cfg</code> and generates a &#8220;SysLinuxOS — Snapshots of other installs&#8221; submenu that performs a direct <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">configfile</code> chainload into that installation&#8217;s snapshot menu. This allows booting the snapshots of another SysLinuxOS installation on the same disk.</p><h2>SysLinuxOS Package Ecosystem</h2><p>The btrfs, snapshot, clone, and backup functionality is delivered through four packages, each distributed as an installable <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">.deb</code>, independently versioned and tested.</p><h3>syslinuxos-snapshots 0.3.9 — Snapshot Engine</h3><p>This is the central package. Installing it provides the complete snapshot system, preconfigured and operational:</p><ul><li><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">syslinuxos-snapshots-setup</code> — the Snapper setup script, with a <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">--force</code> argv bypass for execution inside the Calamares chroot, where the system D-Bus is unavailable and stock <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">snapper</code> fails silently. It uses <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">--no-dbus</code> to talk directly to the snapper library. The same logic applies in <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">--reset-baseline</code> mode, which removes spurious snapshots generated during installation and creates a single clean baseline (<code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">#1</code>), using a retry loop and reverse-numeric sort to respect Snapper&#8217;s pre/post ordering constraints.</li><li><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">syslinuxos-rollback</code> — the rollback helper. It mounts the btrfs top level (<code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">subvolid=5</code>), renames <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">@</code> to <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">@.rollback-bak-TIMESTAMP</code>, creates a new read-write <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">@</code> as a btrfs snapshot of the selected snapshot, and recreates <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/.snapshots</code> as an empty subvolume. On reboot, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">fstab subvol=/@</code> loads the new root.</li><li><code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/etc/grub.d/13_syslinuxos-btrfs-otheros</code> and <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/etc/grub.d/14_syslinuxos-snapshots-otheros</code> — the two GRUB scripts described above, packaged and installed automatically.</li><li>Snapper configuration with <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">set_if_default</code> logic that updates only values the user has not changed.</li></ul><h3>grub-btrfs 4.14 — Snapshots in the Boot Menu</h3><p>The <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">grub-btrfs</code> package bundled with SysLinuxOS is packaged and validated against the Debian <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">@</code> / <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">.snapshots</code> layout. The &#8220;SysLinuxOS — snapshots&#8221; submenu updates automatically on every <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">update-grub</code>. Each Snapper snapshot is a bootable entry; the system starts in read-only recovery mode from that snapshot, ready for <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">syslinuxos-rollback</code>.</p><h3>distroClone 1.4.8 — System Clone and Live ISO Build</h3><p>distroClone builds a SysLinuxOS Live ISO from the running system, or clones the current installation to another disk. Version 1.4.8 is fully integrated with the btrfs ecosystem:</p><ul><li>btrfs-aware ISO build, with exclusion of <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">.snapshots</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">@.rollback-bak-*</code>, and <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">var/lib/snapper/snapshots</code> from the squashfs, so no source snapshot is carried into the installed target.</li><li>Snapper setup inside the Calamares chroot via <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">syslinuxos-snapshots-setup --force</code>, using an argv-based bypass immune to environment-variable stripping between Calamares and its child processes. A persistent log is kept at <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/var/log/calamares-snapshots-setup.log</code>.</li><li>Baseline reset at first boot via <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">remove-live-admin.service</code>: after the Calamares and live-boot purges, a single clean <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">#1</code> snapshot remains as the baseline.</li><li>USB, QEMU, and VirtualBox commands include <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">conv=fsync oflag=direct &amp;&amp; sync</code> in the final dialog, preventing non-bootable USB drives caused by unsynchronized write caches.</li></ul><h3>distroclone-backup 1.3.0 — Versioned Backups with Snapper</h3><p>distroclone-backup extends the btrfs snapshot model to external-disk backups. In version 1.3.0 the operating mode adapts automatically to the destination filesystem:</p><ul><li>btrfs destination: the backup becomes a Snapper snapshot chain with a dedicated <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">distroclone-backup</code> config. The first backup creates the config and snapshot <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">#1</code> (full baseline); each subsequent backup adds an incremental snapshot. Any version can be restored, in full or selectively.</li><li>ext4, xfs, or other destination: classic rsync, with no change from previous versions.</li><li>btrfs destination without Snapper configured: automatic fallback to raw btrfs snapshots (v1.2.2 compatibility).</li></ul><h2>Boot Improvements</h2><ul><li>The Live session no longer stalls on the Samba NMB Daemon. In previous versions, boot could wait up to roughly 1m41s for an <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">nmbd</code> service with no available network interface. The <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">nmbd.service</code> and <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">smbd.service</code> units are now disabled in the build chroot before the squashfs is generated. SMB clients (gvfs, smbclient) continue to work normally.</li><li>No Plymouth splash, for a more direct and transparent boot.</li></ul><h2>syslinuxos-install-extras</h2><p>SysLinuxOS is built for IT professionals, system administrators, network engineers, and DevOps practitioners. Version 13.2 formalizes the bundled toolset with a two-tier approach.</p><h3>TIER1 — Base Toolkit, Always Installed</h3><p>Every SysLinuxOS 13.2 installation ships with a professional toolset out of the box:</p><ul><li>Networking and analysis: <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">nmap</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">tshark</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">wireshark</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">tcpdump</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">mtr</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">iperf3</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">socat</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">netcat</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">bettercap</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">zenmap</code></li><li>Firewall and security: <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">nftables</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">iptables</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">ipset</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">fail2ban</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">rkhunter</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">chkrootkit</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">lynis</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">auditd</code></li><li>VPN and connectivity: <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">wireguard</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">openvpn</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">nginx</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">haproxy</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">keepalived</code></li><li>Containers and orchestration: <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">docker</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">docker-compose</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">kubectl</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">ansible</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">ansible-core</code></li><li>Backup and storage: <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">restic</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">borgbackup</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">rclone</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">rsync</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">lvm2</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">mdadm</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">cryptsetup</code></li><li>CLI tools: <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">git</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">python3</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">jq</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">yq</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">fzf</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">ripgrep</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">bat</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">tmux</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">htop</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">atop</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">glances</code></li></ul><h3>TIER2 — On-Demand Professional Stacks</h3><p>Installing all specialized software by default would produce a multi-gigabyte ISO and a system running services most users do not need. <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">syslinuxos-install-extras</code> provides defined categories that install entire stacks with a single command:</p><pre style="background: #1b1f27; color: #e6e6e6; border: 1px solid #2a2f3a; border-radius: 8px; padding: 1rem 1.1rem; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.5;">sudo syslinuxos-install-extras networking   # DNS, DHCP, VPN, BGP/OSPF, HA, proxy, SNMP, IDS
sudo syslinuxos-install-extras devops       # monitoring, logging, containers, K8s, IaC
sudo syslinuxos-install-extras cloud        # AWS/Azure/GCP CLI, virtualization, storage, K8s
sudo syslinuxos-install-extras full         # all TIER2 in one operation
sudo syslinuxos-install-extras repos        # add official Grafana, HashiCorp, Helm APT repos</pre><p><strong>networking</strong> — for managing complex network infrastructures: authoritative and recursive DNS (<code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">bind9</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">unbound</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">dnsmasq</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">knot</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">nsd</code>), enterprise DHCP (<code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">kea</code> with DHCPv4/v6/DDNS), advanced VPNs (<code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">openvpn3</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">libreswan</code> IKEv2, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">openconnect</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">ocserv</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">stunnel4</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">tinc</code>), dynamic routing (<code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">FRR</code> with BGP/OSPF/IS-IS/MPLS, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">bird3</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">exabgp</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">radvd</code>), high availability (<code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">corosync</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">pacemaker</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">heartbeat</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">drbd</code>), reverse proxy and web servers (<code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">caddy</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">lighttpd</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">squid</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">varnish</code>), IDS/IPS (<code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">suricata</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">crowdsec</code>), filesystem integrity (<code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">aide</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">tripwire</code>), and enterprise authentication (<code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">freeradius</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">389-ds</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">sssd</code> with AD/Kerberos/LDAP).</p><p><strong>devops</strong> — for building and monitoring production systems: the full Prometheus stack (<code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">prometheus</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">alertmanager</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">node-exporter</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">blackbox-exporter</code> and related exporters), <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">influxdb</code>, classic monitoring (<code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">nagios4</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">icinga2</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">zabbix</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">collectd</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">munin</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">monit</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">cacti</code>), advanced logging (<code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">rsyslog</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">syslog-ng</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">goaccess</code>), container tooling (<code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">podman</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">buildah</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">skopeo</code>), and IaC (<code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">ansible-lint</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">puppet-agent</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">cfengine3</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">terraform-switcher</code>).</p><p><strong>cloud</strong> — for distributed and hybrid infrastructures: official cloud CLIs (<code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">awscli</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">azure-cli</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">hcloud-cli</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">openstack-clients</code>), a full virtualization stack (<code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">qemu-system-x86</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">libvirt</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">lxc</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">incus</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">vagrant</code>), distributed storage (full <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">ceph</code> stack, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">glusterfs</code>), I/O benchmarking (<code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">fio</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">bonnie++</code>), and enterprise backup (<code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">bacula</code>, <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">amanda</code>).</p><p><strong>repos</strong> — before installing Grafana, Terraform, or Helm from official sources, this subcommand adds and signs the APT repositories for Grafana Labs, HashiCorp, and Helm, so subsequent installs come from the canonical source.</p><h2>SysLinuxOS Repository</h2><p>The four packages are already installable as <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">.deb</code> files. The next step is a dedicated, signed SysLinuxOS APT repository alongside the standard Debian repositories. With it, keeping the snapshot engine, clone tool, backup system, and grub-btrfs up to date becomes a standard <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">apt upgrade</code>, configured through a single entry in <code style="color: #5ec8ff; background: rgba(255,255,255,0.06); padding: 0.1em 0.4em; border-radius: 4px; font-family: monospace;">/etc/apt/sources.list.d/syslinuxos.list</code>.</p><h2>Testing</h2><p>SysLinuxOS 13.2 has been tested on physical hardware in addition to virtual machines. Issues identified and resolved during testing include race conditions between services at first boot, silent Snapper failures inside the Calamares chroot, snapshot contamination between the source system and the installed target, and non-bootable USB drives caused by unsynchronized write caches. Each issue produced a specific, versioned fix.</p>								</div>
				</div>
					</div>
				</div>
				</div>
		<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-13-2-revolution%2F&amp;linkname=SysLinuxOS%2013.2%20Revolution" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-13-2-revolution%2F&amp;linkname=SysLinuxOS%2013.2%20Revolution" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-13-2-revolution%2F&amp;linkname=SysLinuxOS%2013.2%20Revolution" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-13-2-revolution%2F&amp;linkname=SysLinuxOS%2013.2%20Revolution" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-13-2-revolution%2F&amp;linkname=SysLinuxOS%2013.2%20Revolution" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-13-2-revolution%2F&amp;linkname=SysLinuxOS%2013.2%20Revolution" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_facebook_messenger" href="https://www.addtoany.com/add_to/facebook_messenger?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-13-2-revolution%2F&amp;linkname=SysLinuxOS%2013.2%20Revolution" title="Messenger" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_google_gmail" href="https://www.addtoany.com/add_to/google_gmail?linkurl=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-13-2-revolution%2F&amp;linkname=SysLinuxOS%2013.2%20Revolution" title="Gmail" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_no_icon addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fsyslinuxos.com%2Fsyslinuxos-13-2-revolution%2F&#038;title=SysLinuxOS%2013.2%20Revolution" data-a2a-url="https://syslinuxos.com/syslinuxos-13-2-revolution/" data-a2a-title="SysLinuxOS 13.2 Revolution">share</a></p><p>L'articolo <a href="https://syslinuxos.com/syslinuxos-13-2-revolution/">SysLinuxOS 13.2 Revolution</a> proviene da <a href="https://syslinuxos.com">SysLinuxOS</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://syslinuxos.com/syslinuxos-13-2-revolution/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
	</channel>
</rss>
