Thursday, July 23, 2026

Calamares graphical installer of pure Arch Linux and nested BTRFS Setup on Arch Linux

 Calam-Arch-Installer-2026-07.iso is a live ISO image featuring Linux Kernel 7.0.14 and the Calamares graphical installer, designed to simplify the installation of pure Arch Linux. You can download it directly from the https://sourceforge.net/projects/blue-arch-installer/files/arch-installer/Calam-Arch-Installer-2026-07.iso/download

Original disk layout

                  -`                     boris@devs-TDS8664
                .o+`                    ------------------
               `ooo/                    OS: Arch Linux x86_64
              `+oooo:                   Host: KVM/QEMU Standard PC (Q35 + ICH9, 2009) (pc-q35-11.0)
             `+oooooo:                  Kernel: Linux 7.1.4-1-cachyos
             -+oooooo+:                 Uptime: 15 mins
           `/:-:++oooo+:                Packages: 1549 (pacman)
          `/++++/+++++++:               Shell: bash 5.3.15
         `/++++++++++++++:              Display (QEMU Monitor): 1920x1080 in 15", 60 Hz
        `/+++ooooooooooooo/`            DE: KDE Plasma 6.7.3
       ./ooosssso++osssssso+`           WM: KWin (Wayland)
      .oossssso-````/ossssss+`          WM Theme: Breeze
     -osssssso.      :ssssssso.         Theme: Breeze (Light) [Qt], Breeze [GTK2/3]
    :osssssss/        osssso+++.        Icons: Breeze [Qt], breeze [GTK2/3/4]
   /ossssssss/        +ssssooo/-        Font: Noto Sans (12pt) [Qt], Noto Sans (12pt) [GTK2/3/4]
 `/ossssso+/:-        -:/+osssso+-      Terminal: /dev/pts/1 10.4p1
`+sso+:-`                 `.-/+oso:     CPU: Intel(R) Xeon(R) E5-2690 v3 (10) @ 2.59 GHz
`++:.                           `-/+/    GPU: RedHat Virtio 1.0 GPU
.`                                 `/    Memory: 2.03 GiB / 15.24 GiB (13%)
                                        Swap: Disabled
                                        Disk (/): 11.10 GiB / 74.50 GiB (15%) - btrfs
                                        Local IP (enp1s0): 192.168.0.82/24
                                        Locale: en_US.UTF-8
                                         
                                                                 
                                                                 
 

[boris@devs-TDS8664 ~]$ lsblk -f
NAME   FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
sr0                                                                            
vda                                                                            
├─vda1 vfat   FAT32       8FD4-D237                               510M     0% /boot/efi
└─vda2 btrfs              78b04a2b-616e-45e4-93f4-fe263ae7b072   62.2G    15% /run/BtrfsAssistant/78b04a2b-616e-45e4-93f4-fe263ae7b072
                                                                             /home
                                                                             /var/cache
                                                                             /var/log
                                                                             /

Phase 1 follows exactly https://lxer.com/module/newswire/view/358937/index.html 

Phase 2 differs from Phase 2 https://lxer.com/module/newswire/view/366171/index.html  

$ sudo pacman -S btrfs-assistant grub-btrfs grub-btrfs-support

$ sudo pacman -S inotify-tools

Systemd, sd-vconsole switches the initramfs boot environment from a classic BusyBox script setup over to a systemd-managed process.

The systemd hook completely replaces both base and udev. It builds an initramfs that starts a mini-systemd instance to handle device discovery and orchestration instead of relying on older BusyBox shell scripts. Without base, you drop the traditional BusyBox emergency recovery shell. If the system undergoes a catastrophic boot failure, you will instead drop into a systemd-managed emergency shell. Because microcode is listed after autodetect in your configuration,
mkinitcpio will only pack the microcode matching your specific local processor model. If you had placed it before autodetect, it would build a universal image containing every Intel and AMD microcode patch available. This permits you to completely strip out any initrd=...-ucode.img references out of your bootloader configuration (like systemd-boot or GRUB) because the microcode is safely nested directly inside the unified image. HOOKS below represents a modern, optimized, pure systemd-based initramfs layout that strips away legacy configuration defaults

=============================================
sudo sed -i 's/^HOOKS=(.*/HOOKS=(systemd autodetect microcode modconf kms keyboard sd-vconsole block filesystems fsck)/' /etc/mkinitcpio.conf
sudo vim /etc/mkinitcpio.conf
sudo mkinitcpio -P
=============================================
Now --efi-diretory points to /boot/efi rather then /boot which is default  config provided by archinstall, what results critical files for booting to be located on fat32 FS out of btrfs volume on which "/" is mounted. 
=============================================
$ sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi  --bootloader-id=grub --recheck
$ sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi  --removable --recheck
=============================================
sudo systemctl edit --full grub-btrfsd.service
sudo systemctl enable --now grub-btrfsd.service
sudo grub-mkconfig -o /boot/grub/grub.cfg
 

[boris@devs-TDS8664 ~]$ df -Th
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/vda2      btrfs      75G   12G   63G  16% /
devtmpfs       devtmpfs  7.6G     0  7.6G   0% /dev
tmpfs          tmpfs     7.7G     0  7.7G   0% /dev/shm
efivarfs       efivarfs  256K   73K  179K  29% /sys/firmware/efi/efivars
tmpfs          tmpfs     3.1G  1.3M  3.1G   1% /run
tmpfs          tmpfs     7.7G  320K  7.7G   1% /tmp
none           tmpfs     1.0M     0  1.0M   0% /run/credentials/systemd-journald.service
/dev/vda2      btrfs      75G   12G   63G  16% /var/log
/dev/vda2      btrfs      75G   12G   63G  16% /var/cache
/dev/vda2      btrfs      75G   12G   63G  16% /home
/dev/vda1      vfat      511M  992K  511M   1% /boot/efi
tmpfs          tmpfs     1.6G  100K  1.6G   1% /run/user/1000
/dev/vda2      btrfs      75G   12G   63G  16% /run/BtrfsAssistant/78b04a2b-616e-45e4-93f4-fe263ae7b072
 
[boris@devs-TDS8664 ~]$ findmnt /
TARGET SOURCE        FSTYPE OPTIONS
/      /dev/vda2[/@] btrfs  rw,noatime,compress=lzo,discard=async,space_cache=v2,subvolid=270,subvol=/@
[boris@devs-TDS8664 ~]$ findmnt /home
TARGET SOURCE            FSTYPE OPTIONS
/home  /dev/vda2[/@home] btrfs  rw,noatime,compress=lzo,discard=async,space_cache=v2,subvolid=257,subvol=/@home
[boris@devs-TDS8664 ~]$ findmnt /var/log
TARGET   SOURCE           FSTYPE OPTIONS
/var/log /dev/vda2[/@log] btrfs  rw,noatime,compress=lzo,discard=async,space_cache=v2,subvolid=259,subvol=/@log
[boris@devs-TDS8664 ~]$ findmnt /var/cache
TARGET     SOURCE             FSTYPE OPTIONS
/var/cache /dev/vda2[/@cache] btrfs  rw,noatime,compress=lzo,discard=async,space_cache=v2,subvolid=258,subvol=/@cache
[boris@devs-TDS8664 ~]$ sudo btrfs subvolume list /
[sudo] password for boris:  
ID 256 gen 251 top level 5 path @_backup_2026-07-23T08:00:11.159Z
ID 257 gen 398 top level 5 path @home
ID 258 gen 330 top level 5 path @cache
ID 259 gen 398 top level 5 path @log
ID 260 gen 23 top level 270 path var/lib/portables
ID 261 gen 23 top level 270 path var/lib/machines
ID 262 gen 342 top level 270 path .snapshots
ID 263 gen 174 top level 262 path .snapshots/1/snapshot
ID 264 gen 189 top level 262 path .snapshots/2/snapshot
ID 265 gen 193 top level 262 path .snapshots/3/snapshot
ID 266 gen 206 top level 262 path .snapshots/4/snapshot
ID 267 gen 210 top level 262 path .snapshots/5/snapshot
ID 268 gen 215 top level 262 path .snapshots/6/snapshot
ID 269 gen 248 top level 262 path .snapshots/7/snapshot
ID 270 gen 398 top level 5 path @
ID 271 gen 259 top level 262 path .snapshots/8/snapshot
ID 272 gen 284 top level 262 path .snapshots/9/snapshot
ID 273 gen 296 top level 262 path .snapshots/10/snapshot
ID 274 gen 326 top level 262 path .snapshots/11/snapshot
ID 275 gen 330 top level 262 path .snapshots/12/snapshot
 
====== Setup btrview============
$ sudo pacman -Syu python-pipx
$ pipx install --system-site-packages btrview
$ sudo ~/.local/bin/btrview
$ sudo ln -s ~/.local/bin/btrview /usr/local/bin/btrview

[boris@devs-TDS8664 ~]$ sudo btrview
78b04a2b-616e-45e4-93f4-fe263ae7b072 | 15% full   
Subvolume Tree:            Snapshot Tree:         
<FS_TREE>                  snapshot               
├── @ on: /                └── @ on: /            
│   ├── .snapshots             ├── snapshot       
│   │   ├── snapshot           └── snapshot       
│   │   ├── snapshot       <FS_TREE>              
│   │   ├── snapshot       @home on: /home        
│   │   ├── snapshot       @cache on: /var/cache  
│   │   ├── snapshot       @log on: /var/log      
│   │   ├── snapshot       portables              
│   │   ├── snapshot       machines               
│   │   ├── snapshot       .snapshots             
│   │   ├── snapshot       snapshot               
│   │   ├── snapshot       snapshot               
│   │   ├── snapshot       snapshot               
│   │   ├── snapshot       snapshot               
│   │   ├── snapshot       snapshot               
│   │   ├── snapshot       snapshot               
│   │   └── snapshot       snapshot               
│   ├── portables          snapshot               
│   └── machines           snapshot               
├── @home on: /home        snapshot               
├── @cache on: /var/cache  snapshot               
└── @log on: /var/log      snapshot               

Another way to verify btrview power
 
[boris@devs-QWE8664 ~]$ sudo btrview
                b26aa281-31e9-4d48-a79a-7521972614ae | 15% full                   
Subvolume Tree:                        Snapshot Tree:                             
<FS_TREE>                              @_backup_2026-07-24T09:30:05.510Z          
├── @ on: /                            ├── snapshot                               
│   ├── .snapshots                     │   └── @_backup_2026-07-24T09:35:12.899Z  
│   │   ├── snapshot                   │       ├── snapshot                       
│   │   ├── snapshot                   │       │   └── @ on: /                    
│   │   ├── snapshot                   │       │       ├── snapshot               
│   │   ├── snapshot                   │       │       ├── snapshot               
│   │   ├── snapshot                   │       │       └── snapshot               
│   │   ├── snapshot                   │       └── snapshot                       
│   │   ├── snapshot                   ├── snapshot                               
│   │   ├── snapshot                   ├── snapshot                               
│   │   └── snapshot                   └── snapshot                               
│   ├── portables                      <FS_TREE>                                  
│   └── machines                       @home on: /home                            
├── @_backup_2026-07-24T09:30:05.510Z  @cache on: /var/cache                      
├── @home on: /home                    @log on: /var/log                          
├── @cache on: /var/cache              portables                                  
├── @log on: /var/log                  machines                                   
└── @_backup_2026-07-24T09:35:12.899Z  .snapshots
         


Monday, July 20, 2026

Setup non-flat btrfs architecture on Garuda Linux (VENV)

Garuda Linux advantages which are provided by btrfs
Automated Snapshots :  Creates system snapshots automatically before every update. Uses grub-btrfs for this setup. Allows booting into old snapshots from boot menu. Fixes broken updates easily without using live USBs. Storage Efficiency :   Saves disk space using transparent zstd compression. Increases the lifespan of SSDs.  Loads heavy applications much faster due to compression. Shares free space dynamically between root and home. Copy-on-Write Performance :  Copies massive files instantly without duplicating physical data. Creates instant subvolume backups using minimal disk writes. Prevents file corruption during unexpected power losses.  Modifies data safely by writing changes to new blocks.

   Garuda features the Zen kernel, which is tuned for system responsiveness and lower latency. It includes the Garuda Gamer tool, which allows you to install game platforms (like Steam, Lutris, and Wine) with a single click
 

Default disk layout

╭─boris@boris-devs0720 
╰─λ lsblk -f
NAME   FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
sr0                                                                            
zram0  swap   1     zram0 22125e49-fcc2-44b0-9674-b7537907c799                [SWAP]
vda                                                                            
├─vda1 vfat   FAT32       7246-2916                             298.7M     0% /boot/efi
└─vda2 btrfs              f886b994-b933-42f9-b7da-82f9bb54b15b   61.4G    17%             /var/tmp
                                                                             /var/log
                                                                             /var/cache
                                                                             /root
                                                                             /home
                                                                             /srv
                                                                             /

Required command's set for btrfs system support

$ sudo pacman -S inotify-tools
$ sudo systemctl enable --now grub-btrfsd
$ sudo grub-mconfig -o /boot/grub/grub.cfg
$ sudo pacman -S snap-pac 
$ paru -S snap-pac-grub
 
╭─boris@boris-devs0720 
╰─λ df -Th
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/vda2      btrfs      75G   13G   62G  17% /
devtmpfs       devtmpfs  7.6G     0  7.6G   0% /dev
tmpfs          tmpfs     7.7G     0  7.7G   0% /dev/shm
efivarfs       efivarfs  256K   61K  191K  25% /sys/firmware/efi/efivars
tmpfs          tmpfs     3.1G  1.3M  3.1G   1% /run
none           tmpfs     1.0M     0  1.0M   0% /run/credentials/systemd-journald.service
/dev/vda2      btrfs      75G   13G   62G  17% /srv
/dev/vda2      btrfs      75G   13G   62G  17% /home
tmpfs          tmpfs     7.7G  9.3M  7.7G   1% /tmp
/dev/vda2      btrfs      75G   13G   62G  17% /root
/dev/vda2      btrfs      75G   13G   62G  17% /var/cache
/dev/vda2      btrfs      75G   13G   62G  17% /var/log
/dev/vda2      btrfs      75G   13G   62G  17% /var/tmp
/dev/vda1      vfat      300M  664K  299M   1% /boot/efi
tmpfs          tmpfs     1.6G   76K  1.6G   1% /run/user/1000

╭─boris@boris-devs0720 s
╰─λ sudo btrfs subvolume list /
[sudo] password for boris:              
ID 256 gen 234 top level 5 path @_backup_2026-07-19T19:04:08.884Z
ID 257 gen 330 top level 5 path @home
ID 258 gen 319 top level 5 path @root
ID 259 gen 23 top level 5 path @srv
ID 260 gen 239 top level 5 path @cache
ID 261 gen 330 top level 5 path @log
ID 262 gen 323 top level 5 path @tmp
ID 263 gen 291 top level 275 path .snapshots
ID 264 gen 66 top level 263 path .snapshots/1/snapshot
ID 265 gen 130 top level 263 path .snapshots/2/snapshot
ID 266 gen 159 top level 263 path .snapshots/3/snapshot
ID 267 gen 163 top level 263 path .snapshots/4/snapshot
ID 268 gen 187 top level 263 path .snapshots/5/snapshot
ID 269 gen 193 top level 263 path .snapshots/6/snapshot
ID 270 gen 221 top level 263 path .snapshots/7/snapshot
ID 271 gen 272 top level 5 path @_backup_2026-07-19T19:19:17.057Z
ID 272 gen 260 top level 263 path .snapshots/8/snapshot
ID 273 gen 293 top level 5 path @_backup_2026-07-19T19:25:12.875Z
ID 274 gen 282 top level 263 path .snapshots/9/snapshot
ID 275 gen 330 top level 5 path @
 
====================================================
How Snapper / Btrfs Assistant Avoids the Trap per Google AI Assistant
====================================================
 
When you booted into the GRUB sub-menu via the "rw" overlay and hit "Restore" in Btrfs Assistant, the system did not just move @.
1) It executed a specific dance to preserve the nested .snapshots subvolume structure:
Creates a Read-Write Clone Outside the Tree:   It creates a brand-new, independent read-write subvolume from your chosen snapshot directly at the root of the disk (ID 5), usually naming it something like @_backup_2026-07-19... as a staging step.
 
2) The Unmount and Swapping Dance:   It moves the broken @ to a backup name (e.g., @_old). It creates a brand new, empty directory at /mnt/@.
Crucial Step:  It safely moves or recreates the .snapshots directory/subvolume linkage out of the old directory and anchors it directly inside the brand-new
/mnt/@/.snapshots mount point.
 
3) Flips the Default Subvolume:   It copies or links the target snapshot data into the new @ while keeping the .snapshots subvolume nested cleanly underneath it, ensuring Snapper's IDs still match the filesystem tree perfectly.Because the GRUB environment used an overlayfs "rw" trick
 
4) Btrfs Assistant had the tracking freedom to manipulate these underlying directory nodes and subvolume paths on disk without the actual active root filesystem locking the files down as "busy."
 
Verification commands suggested by Google AI Assistant 
╭─boris@boris-devs0723 in ~ took 0s
╰─λ mount | grep overlay
rootfs on / type overlay (rw,relatime,lowerdir=/sysroot,upperdir=/tmp.mEnG74TfvX/upper,workdir=/tmp.mEnG74TfvX/work,uuid=on)

╭─boris@boris-devs0723 in ~ took 0s
╰─λ grep "GRUB_BTRFS_SNAPSHOT_KERNEL_PARAMETERS" /etc/default/grub-btrfs/config
#GRUB_BTRFS_SNAPSHOT_KERNEL_PARAMETERS="rd.live.overlay.overlayfs=1"

   
╭─boris@boris-devs0719 in ~ as 🧙 took 0s
╰─λ pacman -Qs 'mkinitcpio|dracut'
local/dracut 111-1
    An event driven initramfs infrastructure
local/garuda-dracut-support 1.6.0-2
    Dracut support for Garuda Linux
Package output confirms exactly that  Garuda installation is already using dracut rather than mkinitcpio. Because garuda-dracut-support is handling
system, and is already utilizing a modern, parallelized, systemd-driven initramfs engine, exactly like CachyOS. 
 













Recoveries been tested via Garuda Grub submenu  from emulated crashes 1) "sudo rm -fr /usr/lib/modules"   2) "sudo rm -fr /usr/bin"

╭─boris@boris-devs0723 in ~ took 0s
╰─λ sudo btrview
[sudo] password for boris:              
             413f3f98-22ec-4fb3-9096-a78184cb573b | 15% full               
Subvolume Tree:                        Snapshot Tree:                      
<FS_TREE>                              @_backup_2026-07-22T08:21:50.727Z   
├── @ on: /                            ├── snapshot                        
│   └── .snapshots                     │   └── @_backup_20262207115438194  
│       ├── snapshot                   │       ├── snapshot                
│       ├── snapshot                   │       │   └── @ on: /             
│       ├── snapshot                   │       │       ├── snapshot        
│       ├── snapshot                   │       │       ├── snapshot        
│       ├── snapshot                   │       │       ├── snapshot        
│       ├── snapshot                   │       │       ├── snapshot        
│       ├── snapshot                   │       │       └── snapshot        
│       ├── snapshot                   │       ├── snapshot                
│       ├── snapshot                   │       ├── snapshot                
│       ├── snapshot                   │       └── snapshot                
│       ├── snapshot                   ├── snapshot                        
│       ├── snapshot                   ├── snapshot                        
│       ├── snapshot                   ├── snapshot                        
│       ├── snapshot                   ├── snapshot                        
│       ├── snapshot                   ├── snapshot                        
│       ├── snapshot                   ├── snapshot                        
│       ├── snapshot                   ├── snapshot                        
│       ├── snapshot                   ├── snapshot                        
│       └── snapshot                   └── snapshot                        
├── @home on: /home                    @home on: /home                     
│   └── .snapshots                     ├── snapshot                        
│       ├── snapshot                   ├── snapshot                        
│       ├── snapshot                   ├── snapshot                        
│       ├── snapshot                   └── snapshot                        
│       └── snapshot                   <FS_TREE>                           
├── @_backup_2026-07-22T08:21:50.727Z  .snapshots                          
├── @root on: /root                    @root on: /root                     
├── @srv on: /srv                      @srv on: /srv                       
├── @cache on: /var/cache              @cache on: /var/cache               
├── @log on: /var/log                  @log on: /var/log                   
├── @tmp on: /var/tmp                  @tmp on: /var/tmp                   
└── @_backup_20262207115438194         .snapshots