Passa al contenuto principale

the Ray right way

· 4 minuti di lettura
Piero Proietti
penguins-eggs author
Deutsch English Español  Français Italiano Polska  Portuguese  Български  Русский  Українська  やまと  中国  فارسی 

To re-build the blendOS ISOs, I started with the documentation on blendOS Docs, and then experimented, finding a way to use blendOS to recreate itself by removing the akshara hook.

Reasoning with Ray Vermey, I was told - and must agree - that using this method:

"yes but then you take away one of Blends biggist reasons to exist :-)"

and, therefore, using Ray's suggestions, I began to inquire about a more "orthodox" version.

This is the original Ray Vermey way.

Do this from a CLI in blendOs, NOT in a container:

mkdir arch-chroot

sudo pacstrap -K arch-chroot base linux linux-firmware

when that finishes, remount arch-chroot binded:

sudo mount --bind arch-chroot arch-chroot

then:

sudo arch-chroot arch-chroot

pacman -S git archiso base-devel xorriso python python-psutil squashfs-tools

Wait a bit, expecially at the end. Then:

pacman -S python-click nano

useradd -m -G wheel -s /bin/bash apprentice

use visudo to edit /etc/sudoers:

export EDITOR=nano; visudo

## Uncomment to allow members of group wheel to execute any command
%wheel ALL=(ALL:ALL) ALL

passwd apprentice

su - apprentice

cd

mkdir blendos/build -p

cd blendos/build

Installing assemble

blendOS uses its own system, Assemble, for managing code and builds. It's quite similar to repo in the realm of Android development.

TEMP_ASSEMBLE_DIR="$(mktemp -d)"

git clone https://github.com/blend-os/assemble "${TEMP_ASSEMBLE_DIR}/assemble"

sudo cp "${TEMP_ASSEMBLE_DIR}/assemble/assemble" /usr/local/bin

rm -rf "${TEMP_ASSEMBLE_DIR}"

You may now proceed to building blendOS.

Initialize an Assemble repository

assemble init 'https://github.com/blend-os/manifests' 'main'

assemble sync

edit /etc/pacman.conf, and add the line:

[blend]
Server = https://pkg-repo.blendos.co/$repo/os/$arch

then:

sudo pacman -Syu

Prepare the system packages

source build/envsetup.sh

breakfast | tee breakfast.log

informazioni

I refreshed the instructions again, follow last indication of Ray. It seem to work like a charm. Just discarted the following part:

sudo pacman -S rsync reflector
sudo reflector -c Netherlands -f 10 > mymirror
sudo cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
sudo cp mymirror /etc/pacman.d/mirrorlist

then, add line add SigLevel = Never to /etc/pacman.conf under all active repositories:

sudo nano /etc/pacman.conf

Build an ISO

sudo brunch

I did the actual blendOS-gnome-2023.07.15-x86_64.iso on penguins' eggs sourceforge page, starting from a blendOS-xfce-2023.07.15-x86_64.iso I previusly did before, and installed. You can found both on sf.

This image blendOS-lxqt-2023.07.17-x86_64.iso, was made with this way.

ray-installing

Also this blendOS-ray-gnome-2023.07.16-x86_64.iso was made in the same way to confirm the process and check waydroid.

Mastering other versions

Once we have made our gnome version, we can create the others: plasma, xfce, cinnamon, etc. For the purpose I first move the ISO made outside the system, also to recover space, then:

cd blendos/build
source build/envsetup.sh
sudo brunch

Conclusions

I did all the procedure - many, many times - it work nicelly.

Actually following this procedure - just cut and copy commands - I was able to build blendOS from blendOS itself, from my Arch develop machine (colibri) and from a simple CLI Arch installation (naked).

To be honest I like more to remove hook akshara, build the ISO and then reintroduce it. I feel it more simple and I think this is a value more than a problem, but - of course - the authors know better than me.

informazioni

With penguins-eggs, I'm using that way: remaster the system without akshara and reintroduce the akshara during installation with calamares or krill, just using theme blendos.

In short, using eggs, I do this:

  • remove akshara from /etc/mkinitcpio.conf;
  • rebuild initramfs-linux-zen.img: sudo mkinitcopio -g /boot/initramfs-linux-zen.img;
  • reboot;
  • add chaotic aur, just follow instructions on their site.
  • install penguins-eggs: sudo pacman -Syu penguins-eggs
  • configure it: sudo eggs dad -d
  • add calamares: sudo eggs calamares --install
  • eggs wardrobe get
  • sudo eggs produce --theme blendos

arch-calamares-icu

· 2 minuti di lettura
Piero Proietti
penguins-eggs author
Deutsch English Español  Français Italiano Polska  Portuguese  Български  Русский  Українська  やまと  中国  فارسی 

Ho un problema invalidante con le ultime versioni di Arch Linux con l'installer grafico calamares:

il pacchetto icu International Components for Unicode viene utilizzato da calamares

In particolare la versione attuale: icu@73.2-1 non viene utilizzata da calamares che cerca la precendete icu@73.1

Ho provato a sistemare con un link simbolico ma continua a non funzionare, probabilmente con le prossime versioni il problema rientrerà da solo, per il momento - purtroppo - calamares su Arch non mi funziona.

E per un programma di rimasterizzazione è un grandissimo problema.

Krill

Ad ogni modo è ancora possibile installare Arch utilizzando krill, l'installer CLI integrato in penguins-eggs. Naturalmente occorre tener presente che krill eseguirà una installazione distruttiva, ovvero cancellerà il disco sul quale avete deciso si installare.

Per installare con krill, basterà:

  • aprire una finestra di terminale
  • digitare il comando: sudo eggs install
  • seguire le istruzioni.

Soluzioni?

  • rimuovendo dai settings.conf di Calamares le chiamate al modulo user l'installer funziona, ma rinunciare alla creazione dell'utente sembra una rinuncia piuttosto pesante:

  • ho provato a ricompilare calamares, va bene per quanto riguarda icu ed il modulo user si carica, ma calamares si pianta sul modulo mount;

  • ho provato ad utilizzare la versione 7.3.1 niente da fare, il modulo user non funziona e cerca la 72!!!

Se qualcuno è a conoscenza di una soluzione, può indicarla nei commenti. Grazie

calamares-eggs

E così dopo aver pensato le uova di pinguino per far riprodurre i pinguini, ci è toccato passare alle uova di calamaro per far riprodurre i calamari. D'altra parte i pinguini qualcosa devono pur mangiare!

Non sò ancora come organizzarmi con il pacchetto, al momento ho semplicemente creato lo stesso in eggs-pkgbuilds

Però va!

installing blendos with calamares.png

installig gnome

installig gnome dark

build blendOS image

· 4 minuti di lettura
Piero Proietti
penguins-eggs author
Deutsch English Español  Français Italiano Polska  Portuguese  Български  Русский  Українська  やまと  中国  فارسی 

I wrote something about blendOS in this previous post, now I'm trying to build blendOS image, following official blendOS Documentation and particularly this pages:

We build a container named blenOS-build and inside it

sudo pacman -S git archiso base-devel xorriso python python-psutil squashfs-tools

blendOS uses its own system, Assemble, for managing code and builds. It's quite similar to repo in the realm of Android development.

TEMP_ASSEMBLE_DIR="$(mktemp -d)"
git clone https://github.com/blend-os/assemble "${TEMP_ASSEMBLE_DIR}/assemble"
sudo cp "${TEMP_ASSEMBLE_DIR}/assemble/assemble" /usr/local/bin
rm -rf "${TEMP_ASSEMBLE_DIR}"

Building an image

To continue we must install python-pip and with pip module click:

sudo pacman -S python-click

Create the directories

You will need to create a directory where Assemble will pull blendOS's sources and build them.

mkdir -p ~/blendOS/build

This directory should not be pushed anywhere, as it's simply used for storing blendOS's code.

Initialize an Assemble repository

You may now initialize an Assemble repo to download blendOS's sources.

cd ~/blendOS/build
assemble init 'https://github.com/blend-os/manifests' 'main'

Sync/download the sources locally To start the download of the sources, type the following:

assemble sync

By default, assemble uses all of the available cores on the system being used to build blendOS. However, you may change that behaviour by passing the -j argument. For example, use -j 4 to use only 4 of the available cores.

Prepare the system packages

After the source downloads, ensure you’re in the root of the source code (cd ~/blendOS/build), then type:

source build/envsetup.sh
breakfast | tee breakfast.log

This is the complete log of the command: breakfast.log

I tried to build iso too, giving from the same container the command:

sudo brunch

This is the complete log of the command: sudo brunch

On a blendOS without akshara hook

After trying to use a normal Arch system as the parent, encountering the same problems as above, I wanted to try using an installed blendOS system, however, made "mutable" by removing the akshara hook.

In this case, finally, even without the need to install python-pip and the click module, everything seemed to proceed properly, reaching the conclusion of the procedure.

sudo pacman -S git archiso base-devel xorriso python python-psutil squashfs-tools

TEMP_ASSEMBLE_DIR="$(mktemp -d)"

git clone https://github.com/blend-os/assemble "${TEMP_ASSEMBLE_DIR}/assemble"

sudo cp "${TEMP_ASSEMBLE_DIR}/assemble/assemble" /usr/local/bin

rm -rf "${TEMP_ASSEMBLE_DIR}"

mkdir -p ~/blendOS/build

cd ~/blendOS/build

assemble init 'https://github.com/blend-os/manifests' 'main'

assemble sync

source build/envsetup.sh

breakfast

all-packages-ok

creating ISO

At this point I gave the sudo brunch command and chose gnome as the iso to be created and it too ran correctly.

sudo brunch

blendos-gnome-ok

booting resulting ISO

Every fairy tale has a happy ending, for ours what can we say: evidently there is still something to be fixed.

The iso installs, but the system--once installed--fails to boot!

cant-boot.png

but that's the way it is and fairy tales if they don't end well you have to continue them and so I decided to do another test of my new image.

gnome-iso-installed.png

Everything seems to be running smoothly!

I am uploading this image to the penguins' eggs sourceforge page, created by the - let's say so orthodox - method among the images previously created with eggs.

You can distinguish it simply by the lack of the egg-of- prefix.

Conclusions

in the coming days I will try to better understand this operation, at the moment I see that by removing the akshara hook the system becomes "mutable" and can be remastered with penguins-eggs.

The difference between the two methodologies is that with eggs one builds one's system, then reproduces it, while using manifest one first designs the system then builds it.

In some ways eggs is less rigorous but more fun.

Note

You can comment in this page too, using you github account.

chaotic-AUR

· 2 minuti di lettura
Piero Proietti
penguins-eggs author
Deutsch English Español  Français Italiano Polska  Portuguese  Български  Русский  Українська  やまと  中国  فارسی 

Sabato scorso, ieri in effetti, mi sono imbattuto nella repository packages di chaotic-aur ed ho notato la possibilità di richiedere l'inclusione di penguins-eggs sulla repository stessa per facilitarne l'installazione agli utenti Arch.

Da qualche tempo avevo scoperto la possibilità di includere chaotic-aur tra le repository di pacman e la utilizzavo con piacere per calamares, mi risparmiava non poco tempo di compilazione rispetto a yay, ma mai avevo osato persino "sperare" che penguins-eggs potesse essere accettato così velocemente.

Installazione di chaotic-aur per Arch

La procedura è ben descritta sul sito di chaotic, qui la replico:

First, install the primary key - it can then be used to install our keyring and mirrorlist.

 pacman-key --recv-key FBA220DFC880C036 --keyserver keyserver.ubuntu.com
pacman-key --lsign-key FBA220DFC880C036
pacman -U 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-keyring.pkg.tar.zst' 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-mirrorlist.pkg.tar.zst'

Append (adding to the end of the file) to /etc/pacman.conf:

[chaotic-aur]
Include = /etc/pacman.d/chaotic-mirrorlist

Installazione di penguins-eggs su Arch

A questo punto per installare penguins-eggs basterà il canonico:

sudo pacman -Sy penguins-eggs

immagini ISO scaricabili

Sono disponibili su sourceforge le nuove iso naked e colibri di Arch.

Entrambe sono installabili con krill: sudo eggs install o calamares.

La versione colibri è stata creata con l'opzione '--release' grazie alla quale sia penguins-eggs che calamares vengono rimossi ad installazione avvenuta.

Naturalmente grazie alla presenza della repositoty chaotic-aur è possibile reinstallare sia penguins-eggs che calamares con un semplice comando pacman.

Ringraziamenti

Ringrazio sentitamente il team di chaotic-aur per l'attenzione e vi invito ad apporre un like sulla loro repository git e, perchè no, ad approfittane.

su una gamba sola

· Lettura di 1 minuto
Piero Proietti
penguins-eggs author
Deutsch English Español  Français Italiano Polska  Portuguese  Български  Русский  Українська  やまと  中国  فارسی 

Il 1° aprile 2016, ormai una vita fa, arrivò la possibilità di andare in pensione.

Ci tenevo a fare qualcosa di mio, a provarci, a non appendere la tastiera al chiodo.

La pensione arrivò dal lavoro, ma la famiglia per un certo periodo reclamò immediatamente il resto. Diciamo che l'inizio della storia risale ad un anno o due anni dopo - e peraltro a rate - dopo aver dovuto smettere una collaborazione per mancanza di tempo, con gli anni che inevitabilmente passano - come per tutti.

Scrivere penguins-eggs è stata una bella avventura, anche se probabilmente non mi ha portato da nessuna parte se non dentro me stesso.

Solo qualche conoscenza, belle persone e semplicemente non arrugginire.

Tempo di bilanci?

No, una sorta di malinconia, mi sembra che questo progetto stenti, non decolli.

Ai miei occhi è interessante, ma ogni giorno trovo altro...

Mi vengono in mente in questo momento: blendOS, Arkane Linux, VanillaOS, CrystalLinux, Rhino Linux, etc.

E' un mondo che riverbera.

Bolle, come il pomodoro con la carne e, dopo tanto sobollire, diventerà qualcosa di diverso.

sulla strada sospeso a metà

· 2 minuti di lettura
Piero Proietti
penguins-eggs author
Deutsch English Español  Français Italiano Polska  Portuguese  Български  Русский  Українська  やまと  中国  فارسی 

exclude.list

Escludere dei file dalla riproduzione è sempre stato previsto da eggs, grazie agli strumenti ereditati da refracta-snapshot. Quello che non avevo sinora capito è che eggs aveva perso questa capacità nel momento stesso in cui avevo scelto di non copiare più il file system originale per creare il file system live ma di procedere con il file system originale montato --bind ed overlay per permettere le variazioni.

La tecnica permette di risparmiare veramente tanto tempo e tanto spazio sul disco, ma - quello che non avevo notato - ha ed aveva pure un impatto sul funzionamento della exclude.list che era pensata, per l'appunto, per escludere i file dalla copia fatta con rsync.

Nella mia beata ignoranza, l'avevo presa così com'era e la chiamavo ogni volta per mksqushfs. Non sortiva - ovviamente - effetto alcuna, ma fondamentalmente utilizzando poco eggs per casi reali, non mi ero ancora reso conto del problema.

Qualche giorno fa ho ricevuto una issue su github:

Hi, I am running encrypted linuxmint-21.1 on btrfs filesystem and using also swapfile. Swapfile 4GB needs its own subvolume, which is mount under folder "/swap". I added "/swap" to "/usr/local/share/penguins-eggs/exclude.list" but It is added to the ISO (~8GB) instead. It seems the exclude.list is not observed for building the squashfs (?!)

ed ho voluto provare a riprodurre il problema.

Esisteva il problema - certo che esisteva - come avevo fatto a non accorgermene per così tanto tempo?

La soluzione

Una volta compreso che l'exclude.list originale era scritto per rsync e, quindi, non è funzionante, l'ho proprio eliminato del tutto e sono ripartito da capo.

Ho ripreso l'ultima versione dell'exclude.list originale di refracta-snapshot e l'ho trasformatp per essere utilizzatp con mksquashfs.

Ed a questo punto, sono lieto di annunciare che adesso sì, funziona benissimo ed è estendibile ed adattabile alle vostre necessità.

Morale

Uno sviluppatore non può mai lavorare da solo - come un poeta - ha bisogno di compagnia!

ha bisogno di Pace, 
ha bisogno di Luce,
ha bisogno di un altra città',
ma un poeta è un poeta,
anche quando cammina,
sulla strada sospeso a metà!

add giscus a docusaurus

· 4 minuti di lettura
Piero Proietti
penguins-eggs author
Deutsch English Español  Français Italiano Polska  Portuguese  Български  Русский  Українська  やまと  中国  فارسی 

Questo articolo è una libera traduzione dell'articolo how to add giscus comments to docusaurus su dev.to.

Ho anche seguito dal blog di thedaxshepherd.net il post Docu-Adding-Comments.

Durante la stesura, inoltre, mi sono reso conto che è possibile recuperare numerosi esempi direttamente da github, facendo una ricerca sui tag docusauros e giscus.

La pagina è praticamente finita e sono stati attivati i commenti via Giscus, manca tuttavia qualche ritocco.

Quello che mi ha fatto veramente impazzire è stata la mancata installazione del pacchetto @docusaurus/theme-common da effettuarsi con pnpm i @docusaurus/theme-common- Detta così sembrerebbe semplice arrivarci, purtroppo m'è costata quasi una settimana - ben spesa però - ma posso dirlo solo adesso che ho risolto!

Scopo

Questo post è una descrizione passo per passo di come aggiungere Giscus, un sistema di commenti alimentato da GitHub Discussion, ad un sito statico generato con Docusaurus.

Setup Giscus

Configuriamo Giscus e colleghiamolo alle discussioni di github.

Abilitare GitHub discussion

Create una repository Github nel vostro account dove i commenti possano essere memorizzati nella sessione Discussion.

Nella pagina principale della repository creata andate su Settings. Sotto la sezione "Features", cliccate su "Set up discussions".

Modificate il template in "Start a new discussion" e cliccate su "Start discussion".

Abilitate Giscus

Configurate Giscus nel vostro account GitHub.

Nella sezione "Repository access" aggiungete solo il repository creato nel passo precedente per essere accessibile a giscus e fare clic su "Save"

Get repository API key

Accedere con l'account GitHub in GraphQL API Explorer.

Utilizzare la seguente query per ottenere l'id del repository creato, le categorie di discussione con i relativi dettagli (ad esempio, id e nome).

Nota Sostituire proprietario e nome con il nome del proprio account GitHub e il nome del repository creato.

query { 
repository(owner: "pieroproietti", name:"penguins-blog"){
id
discussionCategories(first:10) {
edges {
node {
id
name
}
}
}
}
}

L'oggetto json risultante dovrebbe essere simile a questo:

{
"data": {
"repository": {
"id": "R_kgDOJOjGXA",
"discussionCategories": {
"edges": [
{
"node": {
"id": "DIC_kwDOJOjGXM4CWX2L",
"name": "Announcements"
}
},
{
"node": {
"id": "DIC_kwDOJOjGXM4CWX2M",
"name": "General"
}
},
{
"node": {
"id": "DIC_kwDOJOjGXM4CWX2O",
"name": "Ideas"
}
},
{
"node": {
"id": "DIC_kwDOJOjGXM4CWX2Q",
"name": "Polls"
}
},
{
"node": {
"id": "DIC_kwDOJOjGXM4CWX2N",
"name": "Q&A"
}
},
{
"node": {
"id": "DIC_kwDOJOjGXM4CWX2P",
"name": "Show and tell"
}
}
]
}
}
}
}

Create Giscus component

  • Installate il pacchetto @giscus/react:
pnpm i @giscus/react
  • Creiamo il componente Giscus, ad esempio sotto /src/components/GiscusComponent come di seguito:
import React from 'react';
import Giscus from "@giscus/react";
import { useColorMode } from '@docusaurus/theme-common';

export default function GiscusComponent() {
const { colorMode } = useColorMode();

return (
<Giscus
repo="pieroproietti/penguins-blog"
repoId="R_kgDOJOjGXA"
category="General"
categoryId="DIC_kwDOJOjGXM4CWX2M" // E.g. id of "General"
mapping="url" // Important! To map comments to URL
term="Welcome to @giscus/react component!"
strict="0"
reactionsEnabled="1"
emitMetadata="1"
inputPosition="top"
theme={colorMode}
lang="en"
loading="lazy"
crossorigin="anonymous"
async
/>
);
}

Creazione del componente BlogPostItem

  • creazione del componente BlogPostItem per impacchettare i post del blog con il sistema di commenti di Giscus:
pnpm run swizzle @docusaurus/theme-classic BlogPostItem --

e scegliere wrap.

Questo creerà un componente BlogPostItem sotto src/theme.

A questo punto, modificate index.js come di seguito:

import React from 'react';
import { useBlogPost } from '@docusaurus/theme-common/internal'
import BlogPostItem from '@theme-original/BlogPostItem';
import GiscusComponent from '@site/src/components/GiscusComponent';
import useIsBrowser from '@docusaurus/useIsBrowser';

export default function BlogPostItemWrapper(props) {
const { metadata, isBlogPostPage } = useBlogPost()
const isBrowser = useIsBrowser();

const { frontMatter, slug, title } = metadata
const { enableComments } = frontMatter

return (
<>
<BlogPostItem {...props} />
{(enableComments && isBlogPostPage) && (
<GiscusComponent />
)}
</>
);
}

Nota l'Hook useBlogPost() viene utilizzato nel componente BlogPostItem per rendere configurabile l'attivazione dei commenti per post del blog. Il valore chiave enableComments: true deve essere aggiunto al file .md del post del blog per attivare i commenti. Ad esempio:

---
authors: pieroproietti
slug: add-giscus-docusaurus
title: add giscus a docusaurus
lang: it
enableComments: true
---

A fine lavoro, sarà attivata la funzione di commento del post corrente su questa pagina, che potrà essere utilizzata come dimostrazione. Sentitevi liberi di premere il pulsante "Mi piace" se avete trovato utile questo post, o di postare la vostra domanda nei commenti se ne avete una.

Nessun uomo è un'isola

· Lettura di 1 minuto
Piero Proietti
penguins-eggs author
Deutsch English Español  Français Italiano Polska  Portuguese  Български  Русский  Українська  やまと  中国  فارسی 

NESSUN UOMO È UN’ISOLA

Nessun uomo è un'isola, completo in se stesso;

ogni uomo è un pezzo del continente, una parte del tutto.

Se anche solo una zolla venisse lavata via dal mare,

l’Europa ne sarebbe diminuita,

come se le mancasse un promontorio,

come se venisse a mancare una dimora di amici tuoi,

o la tua stessa casa; la morte di qualsiasi uomo mi sminuisce,

perché io sono parte dell’umanità.

E dunque non mandare mai a chiedere

per chi suona la campana; essa suona per te.

(John Donne)

BlendOS

· 7 minuti di lettura
Piero Proietti
penguins-eggs author
Deutsch English Español  Français Italiano Polska  Portuguese  Български  Русский  Українська  やまと  中国  فارسی 

blendos viene presentato come il solo sistema operativo di cui hai bisogno. Una miscela perfetta di tutte le distribuzioni Linux, applicazioni Android e applicazioni web.

Non è poco, anzi una qualche esagerazione è insita nel discorso ma attrae.

Presentazione

E' un sistema operativo basato su Arch Linux, con un proprio installer derivato da JadeGUI di Crystal Linux, anche questa una distribuzione interessante che, in modo più tradizionale, mira a rendere Arch alla portata di tutti.

La distribuzione, ed è stata per me una scoperta, è realizzata da un quattordicenne.

Per uno come me che ha frequentato questo mondo da ormai più di sessant'anni viene spontaneo chiedersi ma come è possibile, che sorta di genio deve essere questo ragazzo, etc.

Non è neppure la prima volta che Rudra Saraswat sorprende il mondo, gli era già riuscito con Ubuntu Unity Remix, Ubuntu Web Remix e UbuntuEd Remix.

Personalmente delle tre conoscevo solo Ubuntu Web Remix che ho più volte rimasterizzato e saltuariamente utilizzato, credevo fosse un prodotto Ubuntu, lo trovavo un po' troppo pesante ma non immaginavo fosse l'opera di un allora dodicenne.

Può essere installato dalle ISO originali sia con Gnome che con Plasma, in ogni caso avremo un desktop senza troppi fronzoli, funzionale e - abbastanza - stabile.

Sto scrivendo questo articolo dalla versione KDE Plasma ISO alla quale dopo l'installazione ho aggiunto il necessario nodejs e vscode soprattutto utilizzando normalmente pacman.

Già questa però è una sorpresa perchè precedentemente avevo provato alle distribuzioni immutabili, ma avevo avuto qualche difficoltà.

Qui il problema dell'immutabilità di base e della possibilità di aggiungere ulteriori pacchetti è risolto attraverso overlayfs che genera un filesystem scrivibile sovrapposto all'esistente ovviamente READ ONLY.

Leggendo sul progetto ho visto che è in preparazione un tool per integrare - di volta in volta - questo filesystem nel filesystem originale e ricominciare da capo il gioco.

Ho anche letto che è in preparazione uno strumento per la rimasterizzazione del sistema con la possibilità di crearsi delle ISO proprie.

Se questo non basta, blendOS ha anche la possibilità di ospitare al suo interno Ubuntu e Fedora e "liberamente" mixare il tutto installando i pachetti da Arch, Ubuntu e Fedora stesso.

Un po' il mio sogno per eggs: renderlo uno strumento universale di rimasterizzazione. Qua però realizzato ad un livello decisamente più alto: all'interno del sistema operativo stesso.

blendOS

Le novità di Avial

Liberamente tradotto dall'originale.

Maggiori modifiche

Oltre alle applicazioni disponibili nei container, è ora possibile installare le applicazioni direttamente dai repository Arch di sistema e dal repository Chaotic-AUR, sulla base stessa. Questo è estremamente utile se si vuole installare un'applicazione VPN di terze parti, ad esempio, o alcuni driver mancanti.

distrobox è stato sostituito in favore di una nostra implementazione che utilizza direttamente podman, costruito come parte di blend, poiché era impossibile implementare alcune funzionalità menzionate di seguito utilizzando distrobox. Un po' di codice è stato utilizzato da Distrobox in Blend per il supporto dei driver NVIDIA.

Le applicazioni ed i binari installati nei container ora appaiono automaticamente e istantaneamente sul sistema di base, come ci si aspetta da una miscela di distribuzioni.

Dato che probabilmente vi starete chiedendo se ci sono potenziali conflitti tra le distribuzioni e le applicazioni che le compongono, siamo felici di informarvi che abbiamo sviluppato un nuovo sistema basato sulle priorità, che vi permette di controllare quali binari e applicazioni del contenitore devono essere preferiti a quelli degli altri. Tutti i pacchetti di sistema sovrascrivono questo comportamento, per evitare qualsiasi conflitto tra sistema e contenitore.

blendOS segue ora un sistema di flavor e remix, dove i remix sono varianti di blendOS sviluppate dalla comunità. È possibile utilizzare la pagina web ufficiale di compilazione di blendOS per creare e inviare facilmente il proprio remix di blendOS, con un insieme personalizzato di pacchetti (compreso un ambiente desktop o un gestore di finestre a scelta). Una volta approvato, verrà compilato sul server di compilazione di blendOS.

Attualmente sono disponibili due versioni ufficiali: un'edizione GNOME che utilizza GNOME 43.4 e un'edizione KDE Plasma che offre Plasma 5.27. L'edizione GNOME offre un'esperienza pressoché "vanilla", a parte un sistema di raggruppamento automatico basato sul progetto "GNOME Dash Fix", che raggruppa automaticamente le applicazioni appartenenti a diversi sistemi operativi e categorie. Questo comportamento può essere modificato dall'applicazione Impostazioni di blendOS.

Le app Android sono ora supportate in modo immediato (grazie a WayDroid) e possono essere facilmente installate dai vostri app store preferiti, come Aurora Store o F-Droid, e utilizzate proprio come le app native di Linux. Questo è utile anche per gli sviluppatori Android, che possono testare le loro applicazioni attraverso WayDroid in Android Studio, proprio come le normali applicazioni Linux, senza dover ricorrere a un pesante emulatore Android.

È possibile installare o utilizzare le applicazioni web/PWA proprio come le normali applicazioni desktop. È anche possibile inviare le proprie applicazioni al blendOS Web Store.

È possibile installare i pacchetti di sistema utilizzando pacman come in una normale installazione di Arch, compresi i DE, grazie a un sistema di overlay che consente anche di eseguire il rollback alle istantanee esistenti nel caso in cui qualcosa vada storto. In futuro verrà aggiunto anche il supporto per la fusione dell'overlay con il file system principale.

Modifiche minori

I driver NVIDIA sono ora inclusi per impostazione predefinita.

L'ISO ora supporta i sistemi BIOS e UEFI (32 bit e 64 bit).

Abbiamo creato un nuovo framework di installazione, che installa entrambe le versioni ufficiali di blendOS in 3 minuti ciascuna.

Nomi

Daremo ai nostri rilasci nomi di piatti popolari, che rappresentano la miscela perfetta di vari ingredienti unici e complementari, proprio come blendOS rappresenta la combinazione perfetta di varie distro Linux, Android e applicazioni web.

La nostra nuova versione stabile prende il nome dal popolare piatto dell'India meridionale, "Avial", che è un curry di verdure miste preparato con cocco e yogurt. Faremo dei sondaggi per dare un nome alle future versioni ;)

Un ringraziamento speciale a Ray Vermey, moderatore della comunità e responsabile della QA, e a Tobiyo Kuujikai, moderatore della comunità, per avermi aiutato a testare questa release.

Questa è una presentazione di blendOS su distrowatch.

to be continued...

eggs and blendOS

Quello in cui sto scervellandomi dall'inizio - ormai più di una settimana - è come far convivere eggs e blendOS.

In un certo senso ci sono molto vicino - essendo sostanzialmente blendOS una Arch - in un altro invece mi areno di fronte al fatto che la ISO - generata correttamente - non riesce però ad eseguire lo switch della root all'interno di initramfs e quindi, fallisce miseramente!

Come lavora eggs e come possiamo adattarlo a blendOS

eggs crea un filesystem compresso a partire dal filesystem originale.

Per fare ciò, vengono montate con l'opzione --bind le varie directory sulla root del filesystem originale:

  • normal creazione della directory, nessun mount;
  • create creazione e mount ro;
  • mergedAndOverlay creazione directory, overlay e mount rw;

Abbiamo

  • mergedAndOverlay per /etc, /boot, /usr e /var;
  • create le rimanenti directory: /cdrom, /dev, /media, /mnt, /proc, /run, /swapfile, /sys e `/tmp';
  • merged tutte le directory rimanenti ad eccezione di quelle mergedAndOverlay e quelle bormal:

In blendOS, sulla root abbiamo: /bin, /boot, /dev, /etc, /home, /lib, /lib64, /lost+found, /mnt, /opt, /proc, /root, /run, /sbin, /srv, /sys, /tmp, /usr, /var, /version.

Però ci sono anche le directory nascoste: /.upperdir/ e /.workdir/

Che succede?

/.upperdir/ e /.workdir/ vengono prese come merged e copiate quindi nel filesystem compresso.

Come dovrebbe andare?

Difficile dirlo... su blendOS abbiamo i seguenti overlay:

  • /usr/bin
  • /usr/include
  • /usr/lib
  • /usr/lib32
  • /usr/share
  • /usr/src
  • /var/lib

Poichè le variazioni sono già incluse, /.upperdir/ e /.workdir/ andrebbero escluse dallo snapshot. D'altro canto però, le stesse, andrebbero ricreate vuote per permettere nuovamente l'accesso READ and WRITE alle directory in oggetto.

Somiglia molto a quello che dovrebbe fare lo stesso blendOS per - come dire - "ricompattare" i dati e che dovrebbe essere in progetto: "In futuro verrà aggiunto anche il supporto per la fusione dell'overlay con il file system principale".

Documentazione

Non tutto al momento è documentato, questo è quello che ho potuto trovare tra il canale telegram e le repository:

Collaborare a distanza

· 3 minuti di lettura
Piero Proietti
penguins-eggs author
Deutsch English Español  Français Italiano Polska  Portuguese  Български  Русский  Українська  やまと  中国  فارسی 

Capita a volte di dover collaborare a distanza, vediamo come eggs può aiutarci.

Sono due giorni che provo a compilare gnome e mi trovo sinceramente in difficoltà: non conosco mutter, non conosco gnome, non ho mai utilizzato meson.

Ho fatto delle prove per due giorni ma, anche se utilizzando il wardrobe sono riuscito a crearmi una buona traccia, alla fine mi sono arreso di fronte alla mancanza delle dipendenze necessarie e, soprattutto, della necessaria esperienza.

A questo punto, apro una semplice chat con l'esperto e questa è la sua risposta:

Gtk4? I'll give it a go later on today and see what I can figure out

ho fatto un clone della mia macchina virtuale e l'ho pubblicata...

I'll use that as a starting point then

Come passare tutta la stazione di lavoro

In questo caso, non avendo dati importanti da proteggere, ho semplicemente creato un clone della macchina utilizzando eggs e senza installare calamares. In questi casi un installatore grafico è solo una perdita di tempo visto che installaremo su una macchina virtuale e tra esperti.

Tutto quello che ho fatto è stato dare i comandi:

sudo eggs tools clean
sudo eggs produce --max --clone

ed ho ottenuto il clone installabile della mia macchina.

Cosa succede dall'altro capo del filo

Il mio amico inserirà l'immagine ISO all'interno di una macchina virtuale e potrà dare immediatamente una occhiata alla mia configurazione ed ai miei problemi.

Se il problema è risolvibile dal live potrà tentare direttamente la compilazione, altrimenti dovrà installare il sistema.

Come? Aprendo un terminale ed immettendo il comando:

sudo eggs install -un

eggs-install-un

L'esperto risolve il problema

Dopo qualche tempo il mio corrispondente risolve il problema.

Comprensibile il codice aperto ma - talvolta - è opportuno non mettere in piazza direttamente tutto e rilasciare un clone così potrebbe essere non .

Cosa possiamo fare?

sudo eggs produce --max --cryptedclone

eggs-produce-cryptedclone-max

A lui verrà richiesto di immettere una passphrase che verrà utilizzata per un volume LUKS inserito nella immagine ISO prodotta.

produce-luks-password

Che dovrà confermare: produce-luks-passord-confirm

Verra creato ed inizializzato un volume LUKS sotto /tmp per l'apertura del quale verrà nuovamente richiesta la password di accesso:

produce-luks-password-open

Su un altro canale di comunicazione mi sarà passata la passphrase, quindi io scaricherò la nuova immagine.

Dal live non avrò accesso ad alcun dato.

Proviamo ad installare...

sudo eggs install -un

Ad un certo punto mi verrà richiesta la passphrase per il file LUKS e questo verrà decriptato ed aggiunto alla postazione vergine.

eggs-install-un-luks-password

Otterrò quindi nuovamente la configurazione originale, con le modifiche del collega e tenuta lontata da occhi indiscreti.

Utenti

In un clone NON esiste un utente live, gli utenti sono gli stessi della postazione originaria, in questo caso artisan.

L'utente live, invece, esiste ed è necessario in un clone cryptato, SOLO dopo l'installazione si avrà accesso ai dati memorizzati.