diff --git a/.gitignore b/.gitignore index a6b4f37..27b68ce 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ #/Scripts/package-lock.json /Scripts/node_modules/* /Scripts.out/* +/Scripts/Lib/translate-shell.bash *.pyc *.tmp tmp.* diff --git a/Scripts/Package.sh b/Scripts/Package.sh index 6e11d74..ffb3eaf 100755 --- a/Scripts/Package.sh +++ b/Scripts/Package.sh @@ -5,7 +5,7 @@ cd "${swd}/.." export sitocttEnv=Offline export HUGO_ENV=production sh "${swd}/Clean.sh" -sh "${swd}/Update.sh" +sh "${swd}/Build.sh" cd ./build/public #zip -9 -r ./offline.zip * diff --git a/Scripts/Produce.sh b/Scripts/Produce.sh index 3011e2e..b6cef6a 100755 --- a/Scripts/Produce.sh +++ b/Scripts/Produce.sh @@ -4,7 +4,7 @@ cd "${swd}/.." export HUGO_ENV=production sh "${swd}/Clean.sh" -sh "${swd}/Update.sh" +sh "${swd}/Build.sh" sh "${swd}/Redirects.sh" cd "${owd}" diff --git a/Scripts/Requirements.sh b/Scripts/Requirements.sh index f0c3061..74996f6 100755 --- a/Scripts/Requirements.sh +++ b/Scripts/Requirements.sh @@ -61,4 +61,7 @@ cd ./Scripts PIP_BREAK_SYSTEM_PACKAGES=1 "${Python3}" -m pip install -U -r ./requirements.txt #npm install +cd ./Lib +wget -O ./translate-shell.bash https://git.io/trans + cd "${owd}" diff --git a/Scripts/Translate/Main.py b/Scripts/Translate/Main.py index 82c3f44..d82c8d4 100755 --- a/Scripts/Translate/Main.py +++ b/Scripts/Translate/Main.py @@ -1,8 +1,9 @@ #!/usr/bin/env python3 -DestinationLanguages = ["it", "en"] # "fr", "de", "eo", "es" +DestinationLanguages = ["it", "en", "fr"] # "de", "eo", "es" IncludePaths = ["/"] -ExcludePaths = ["/Categories"] +ExcludePaths = ["/categories"] # "/miscellanea" +import subprocess from os import getcwd, listdir from os.path import dirname, realpath, isfile, isdir from pathlib import Path @@ -53,32 +54,63 @@ def find_documents(folder_path): documents[document].append(destination_language) return documents +def fix_frontmatter(translated_text, reference_text): + result = '' + reference_lines = reference_text.splitlines() + for [index, translated_line] in enumerate(translated_text.splitlines()): + if translated_line.strip() and (translated_line.lstrip() == translated_line): + reference_line = reference_lines[index] + line_key = reference_line.split('=')[0] + if line_key.strip().lower() in ["draft", "date", "lastmod"]: + translated_line = reference_line + else: + line_value = '='.join(translated_line.split('=')[1:]) + translated_line = line_key + if line_value: + translated_line += ('=' + line_value) + result += (translated_line + '\n') + return result + def translate_document(document_path, documents): - printf(f'* {document_path} ->') + printf(f"* {document_path} ->") for destination_language in documents[document_path]: source_language = get_source_language(document_path) + original_text = open(("../content/" + document_path), 'r').read() printf('', destination_language) try: - translated = translate( - open(('../content/' + document_path), 'r').read(), - destination_language, - source_language) + is_python_translator = True + translated = translate(original_text, destination_language, source_language) if not len(translated.results): raise Exception("Unhandled error") - printf('✅') except Exception as exception: printf('❌', exception) - continue - translated_text = translated.results[0].paraphrase + try: + is_python_translator = False + translated = subprocess.run( + ("bash", "../Scripts/Lib/translate-shell.bash", "-brief", + "-t", destination_language, "-s", source_language, + ("file://" + "../content/" + document_path)), + stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + if translated.stderr: + raise Exception(translated.stderr.decode()) + except Exception as exception: + printf('❌', exception) + continue + printf('✅') + translated_text = (translated.results[0].paraphrase + if is_python_translator else translated.stdout.decode()) text_header = translated_text.strip().splitlines()[0].strip() translated_preamble = ("\n\n{{< noticeAutomaticTranslation " + source_language + " >}}\n\n") if text_header in ["---", "+++"]: text_tokens = translated_text.split(text_header) - translated_text = ( - text_header + text_tokens[1] + text_header + - translated_preamble + - text_header.join(text_tokens[2:])) - else: + translated_body = text_header.join(text_tokens[2:]) + translated_text = (text_header + + fix_frontmatter(text_tokens[1], original_text.split(text_header)[1]) + + text_header) + if translated_body.strip(): + translated_text += (translated_preamble + translated_body) + elif translated_text.strip(): translated_text = (translated_preamble + translated_text) destination_path = make_destination_path(document_path, destination_language) Path('/'.join(destination_path.split('/')[:-1])).mkdir(parents=True, exist_ok=True) diff --git a/assets/ButtonBadges.toml b/assets/ButtonBadges.toml index 08fb514..c79a993 100644 --- a/assets/ButtonBadges.toml +++ b/assets/ButtonBadges.toml @@ -35,6 +35,11 @@ alt = "✨sitoctt" file = "Sites/sitoctt-1.png" href = "/it/miscellanea/Raccolta-Siti-Internet/#il-mio" +[[10-site]] +alt = "Sign my guestoobk" +file = "Sign-guestbook.gif" +href = "https://listed.to/@u8/guestbook" + [[10-site]] alt = "Warning: Page contains JavaScript!" file = "Warning-Page-contains-JavaScript.png" diff --git a/content/it/blog/2023-04-16-Che-Impatto-Nuova-Legge-Anti-Pirateria-Italiana.md b/content/it/blog/2023-04-16-Che-Impatto-Nuova-Legge-Anti-Pirateria-Italiana.md index fabecee..5f02189 100644 --- a/content/it/blog/2023-04-16-Che-Impatto-Nuova-Legge-Anti-Pirateria-Italiana.md +++ b/content/it/blog/2023-04-16-Che-Impatto-Nuova-Legge-Anti-Pirateria-Italiana.md @@ -4,6 +4,7 @@ Date = 2023-04-16 Downsync = "/it/blog/Che-Impatto-Nuova-Legge-Anti-Pirateria-Italiana.html" Aliases = [ "/Posts/2023-04-16-Che-Impatto-Nuova-Legge-Anti-Pirateria-Italiana.html" ] Description = "Hanno approvato in Italia una legge per un contrasto forte alla pirateria. Il fatto è che comporta rischi importanti per gli internauti." +Featured_Image = "@/Media/Misc/Keep-Seeding-Monitor.webp" Categories = [ "Internet" ] Lastmod = 2023-04-17 +++ @@ -85,5 +86,3 @@ Forse non si obietterebbe granché nemmeno se, andando contro le piattaforme che

Ma in Italia hanno già fatto saltare in aria TNTVillage, e io non voglio la decimazione anche di tutte le altre piazze online create dalla gente per la gente - senza scopo di lucro, e anzi spesso a perdere, sia in tempo che in denaro - solo perché a qualcuno da fastidio che si utilizzi la funzionalità principale del Web: i collegamenti ipertestuali, inventati per favorire la condivisione libera e gratuita di cultura ed intrattenimento, senza barriere.


- -

"Keep seeding"

diff --git a/content/it/blog/2024-06-22-Diari-Blog-Social-Riflessione.md b/content/it/blog/2024-06-22-Diari-Blog-Social-Riflessione.md index cd78e85..a4d1bdd 100644 --- a/content/it/blog/2024-06-22-Diari-Blog-Social-Riflessione.md +++ b/content/it/blog/2024-06-22-Diari-Blog-Social-Riflessione.md @@ -134,7 +134,7 @@ Il diario segreto, inteso come un quaderno o un taccuino in cui si annotano pens

{{% i18n notes-refs %}}

-

L'immagine decorativa di copertina è ottenuta tramite l'intelligenza artificiale generativa di Microsoft.

+

L'immagine decorativa di copertina è ottenuta tramite l'intelligenza artificiale generativa di Microsoft.

    diff --git a/content/it/blog/Archive/2022-05-07-Gli-Inaspettati-Vantaggi-della-Chiavetta-Linux.md b/content/it/blog/Archive/2022-05-07-Gli-Inaspettati-Vantaggi-della-Chiavetta-Linux.md index 7f99c04..476d68d 100644 --- a/content/it/blog/Archive/2022-05-07-Gli-Inaspettati-Vantaggi-della-Chiavetta-Linux.md +++ b/content/it/blog/Archive/2022-05-07-Gli-Inaspettati-Vantaggi-della-Chiavetta-Linux.md @@ -4,7 +4,7 @@ Aliases = [ "/Posts/Archive/2022-05-07-Gli-Inaspettati-Vantaggi-della-Chiavetta-Linux.html", ] Categories = [ "Tecnologia" ] -Data = 2022-05-07 +Date = 2022-05-07 Lastmod = 2022-08-13 #Template = "loli-documentatrice.html" +++ @@ -93,4 +93,4 @@ Riporto qui i siti Web di alcune distribuzioni che _non_ ho menzionato nel testo ### 🏷️ Note/Riferimenti -[^ Aggiornamento 2022-08-13]: **Aggiornamento del 2022-08-13**: Ho importato questo articolo dal mio vecchio blog (), per preservarlo meglio e per testare alcune cose. Ne ho approfittato per, oltre a migliorare la formattazione, cambiare in parte la forma di alcune frasi. Il contenuto resta praticamente uguale. +**Aggiornamento del 2022-08-13**: Ho importato questo articolo dal mio vecchio blog (), per preservarlo meglio e per testare alcune cose. Ne ho approfittato per, oltre a migliorare la formattazione, cambiare in parte la forma di alcune frasi. Il contenuto resta praticamente uguale. diff --git a/content/it/note/2024-09-01-Compilare-Installare-Linux-Kernel.md b/content/it/note/2024-09-01-Compilare-Installare-Linux-Kernel.md index 6ecccf7..cbc0bab 100644 --- a/content/it/note/2024-09-01-Compilare-Installare-Linux-Kernel.md +++ b/content/it/note/2024-09-01-Compilare-Installare-Linux-Kernel.md @@ -1,23 +1,25 @@ +++ Title = "🌽 Compilare e installare il kernel Linux da sorgente" Date = 2024-09-01 +Description = "Indicazioni generali su come si compila Linux per computer generici, utile per risolvere problemi o ottenere funzionalità speciali." +Featured_Image = "@/Media/Decor/dall-e_44be7d57-5b1d-44ff-bf54-421d95165b5f.jpeg" Downsync = "/it/note/Compilare-Installare-Linux-Kernel.html" Categories = [ "Linux" ] +++ -

    Non di frequente mi saltano in mente nuove idee, ma, quando lo fanno, sono sempre bizzarre al punto giusto... Senza divagare troppo, è proprio per questo svilupparsi delle cose che anni fa, per la prima volta, mi sono trovata a compilare da sorgente il kernel Linux — su un Raspberry Pi 3 tra l'altro, cosa che col senno di poi non consiglierei — e adesso, precisamente ieri, di nuovo un'altra volta dopo anni (stavolta sul PC, per fortuna), per un fine che non spoilero.

    +

    Non di frequente mi saltano in mente nuove idee, ma, quando lo fanno, sono sempre bizzarre al punto giusto... Senza divagare troppo, è proprio per questo svilupparsi delle cose che anni fa, per la prima volta, mi sono trovata a compilare da sorgente il kernel Linux — su un Raspberry Pi 3 tra l'altro, cosa che col senno di poi non consiglierei — e adesso, precisamente ieri, di nuovo un'altra volta, dopo anni (stavolta sul PC, per fortuna), per un fine che non spoilero.

    -

    Perché ricompilare il kernel?

    +

    Perché ricompilare il kernel? 😯️

    -

    Linux si basa su un'architettura monolitica, cosa che ci riguarderebbe poco... se non fosse per il fatto che ha un'implicazione scomoda: qualsiasi funzione che lavora a livello di kernel deve essere compilata nello stesso. Anche il meccanismo dei cosidetti moduli non copre tutte le situazioni possibili (almeno non a livello pratici), e ci si può quindi trovare in delle situazioni in cui il kernel fornito dalla distribuzione (o dal produttore hardware), anche se aggiornato, non ha qualcosa che serve, e quindi va sostituito.

    +

    Linux si basa su un'architettura monolitica, cosa che ci riguarderebbe poco... se non fosse per il fatto che ha un'implicazione scomoda: qualsiasi funzione che lavora a livello di kernel deve essere compilata nello stesso. Anche il meccanismo dei cosiddetti moduli non copre tutte le situazioni possibili (almeno non a livello pratico), e ci si può quindi trovare in delle situazioni in cui il kernel fornito dalla distribuzione (o dal produttore hardware), anche se aggiornato, non ha qualcosa che serve, e quindi va sostituito.

    -

    Considerando le varietà infinite di distribuzioni Linux, repository che distribuiscono kernel compatibili o meno, e unendo ciò alla diversità di singole opzioni abilitabili nella compilazione del kernel... non solo in rari casi la compilazione da sorgente è l'unica via, ma spesso e volentieri è quella più pratica. Per fortuna, compilare il kernel Linux è molto semplice — decisamente di più dell'applicazione media per il desktop Linux, con tremila dipendenze sempre in conflitto — ma ci sono dettagli magari non proprio immediati nel procedimento, quindi... ecco la mia nota!

    +

    Considerando le varietà infinite di distribuzioni Linux, repository che distribuiscono kernel compatibili o meno, e unendo ciò alla diversità di singole opzioni abilitabili nella compilazione del kernel... non solo in rari casi la compilazione da sorgente è l'unica via, ma spesso e volentieri è quella più pratica. Per fortuna, compilare il kernel Linux è molto semplice — decisamente di più dell'applicazione media per il desktop Linucs, con tremila dipendenze sempre in conflitto — ma ci sono dettagli magari non proprio immediati nel procedimento, quindi... ecco la mia nota!

    -

    0. Partenza e prerequisiti

    +

    0. Partenza e prerequisiti 📦️

    Questa nota è sulla più generica ricompilazione del kernel Linux, cioè la variante ufficiale (quella di Linus Torvalds) su e per un PC desktop x86_64 (o AMD64). Niente fork o varianti patchate, niente versioni di OEM scassacose, niente installazione su dispositivi embedded o in qualunque altra misura esoterici, niente compilazione distribuita o cross-platform. Per casi più o meno limite, le cose da fare possono più o meno variare, anche se l'andazzo rimane lo stesso... vedete voi dai, il punto è che io assumo questa situazione. Nel mio caso, non ci sono nemmeno moduli kernel proprietari.

    @@ -27,23 +29,27 @@ Categories = [ "Linux" ] +

    Debian e derivate (apt):

    +
      -
    • Debian e derivate (apt): build-essential libelf-dev (obbligatori); ncurses-dev (per usare la configurazione a menu TUI).
    • +
    • build-essential libelf-dev (obbligatori)
    • +
    • ncurses-dev (per usare la configurazione a menu TUI)
    -

    1. Ottenimento del codice

    +

    1. Ottenimento del codice ⛓️

    Il codice sorgente di Linux si può prendere ufficialmente dal Git principale, dal GitHub di Torvalds, o dal sito Kernel.org. Preferisco l'ultima opzione, che ha le ultime versioni effettivamente necessarie messe belle in vista, fino al più vecchio branch supportato.

    Di versioni supportate in un dato momento, appunto, ce ne sono diverse. In genere, se non c'è motivo di installare un kernel vecchio, uno più nuovo è meglio; non troppo nuovo, però, perché a vivere sul bleeding edge si perde sangue, con gli occasionali problemi anche gravi che possono saltare fuori! Quindi, evito il branch mainline, aggiornato giornalmente o quasi, come la peste, e in genere scelgo stable, aggiornato con un po' di giorni in più. Altri utenti potrebbero legittimamente preferire la longterm più recente (quella più in alto), per avere ancora più stabilità, ma io lo trovo inutile.

    -

    Per la riga di ogni versione, a parte la data, quello che interessa è il link [tarball], quindi si scarica quel file lì. Lo si può poi estrarre in una cartella comoda, tra i tanti modi, con il comando tar xvf <file>.

    +

    Per la riga di ogni versione, a parte la data, quello che interessa è il link [tarball], quindi si scarica quel file lì. Lo si può poi estrarre in una cartella comoda, tra i tanti modi, con il comando tar xvf <file>. Tutti i comandi da eseguire da questo punto saranno all'interno della cartella preparata.
    +kernel.org

    -

    ...Bisognerebbe scaricare poi anche il file pgp, quando presente, che serve a verificare che il download sia integro e che provenga dai distributori legittimi. Realisticamente, però, già non tutte le versioni lo hanno (stando a sottintendere che sotto sotto...), il download si fa dal sito ufficiale con HTTPS (quindi difficile sarà alterato), è un archivio compresso (quindi se corrotto dovrebbe fallire l'estrazione), e in tutto ciò è una rottura di scatole allucinante. Altri enti avranno requisiti di sicurezza più alti, ma per gli utenti privati francamente è solo noia, io non lo faccio, non mi freca.

    +

    ...Bisognerebbe scaricare poi anche il file PGP, quando presente, che serve a verificare che il download sia integro e che provenga dai distributori legittimi. Realisticamente, però, già non tutte le versioni lo hanno (stando a sottintendere che sotto sotto...), il download si fa dal sito ufficiale con HTTPS (quindi difficile sarà alterato), è un archivio compresso (quindi se corrotto dovrebbe fallire l'estrazione), e fare la verifica è una rottura di scatole allucinante. Altri enti avranno requisiti di sicurezza più alti, ma per gli utenti privati francamente è solo noia, io non lo faccio, non mi freca.

    -

    2. Configurazione del kernel

    +

    2. Configurazione del kernel 🔩️

    Configurare il kernel è la parte più intricata... perché non si può eseguire comandi per inerzia, ma bisogna scegliere quello che effettivamente serve per, beh, avere il kernel con le opzioni bone. Ci sono, come accennato, infinite configurazioni, e diversi modi di usarle. Il punto principale è che c'è un file di testo enorme, con varie opzioni (principalmente booleane), che si può modificare.

    @@ -58,9 +64,6 @@ Categories = [ "Linux" ] menuconfig -vs - - xconfig @@ -69,29 +72,29 @@ Categories = [ "Linux" ]

    Io in questo caso volevo attivare il supporto al nuovo driver NTFS, quindi in xconfig premo CTRL+F, cerco "ntfs3" e imposto su (Y)es l'opzione che parla di "NTFS Read/Write something something"; poi, salvo la configurazione, chiudo, e... ho finito, incredibile.

    -

    3. Compilazione del codice

    +

    3. Compilazione del codice 🧑‍🍳️

    Con la compilazione, è il momento della noia, perché bisogna dare al computer semplicemente il tempo di macinare milioni (!) di righe di codice. Bene non va, ma almeno non è la fine del mondo: su qualunque PC non proprio scassone bisognerebbe farcela in meno di 4 ore. Sul Raspberry Pi 3 mi impiegò una giornata e mezza con la CPU a temperature nucleari (e anche per questo lo sconsiglio...), ma sul mio PC (Ryzen 3 3200G, 16 GB di RAM di cui pochi occupati dalla compilazione, su un SSD di fascia bassa) mi pare di aver impiegato 3 ore scarse a compilare la versione 6.10.7.

    -

    Bisogna semplicemente eseguire make, e Linuc si farà da solo, viva la magia! Meglio ancora, make -j$(nproc) per usare tutti i core CPU disponibili... La manciata di ore, dovrei precisare, è misurata rispetto a questo, altrimenti sarebbe mezza giornata, dato che il mio PC ha 4 core; potrebbe fare molto prima avendo più core, perché può compilare ancora più file in parallelo efficacemente.

    +

    Bisogna semplicemente eseguire make, e Linucs si farà da solo per l'architettura CPU corrente, viva la magia! Meglio ancora, make -j$(nproc) per usare tutti i core CPU disponibili... La manciata di ore, dovrei precisare, è misurata rispetto a questo, altrimenti sarebbe mezza giornata, dato che il mio PC ha 4 core; potrebbe fare molto prima avendo più core, perché può compilare ancora più file in parallelo efficacemente.

    Almeno nei primi minuti, è bene tenere d'occhio il terminale, per vedere se si verifica qualche errore e la compilazione si arresta. A me errori assurdi non sono mai capitati, ma, come ho detto, se non si installano tutte le dipendenze, potrebbe uscire qualcosa di relativo a quelle... in tal caso, si installa quello che manca (facendo riferimento alla propria distribuzione), e si continua con il comando di prima.

    -

    Dipendentemente dalla configurazione, servirà avere più o meno spazio su disco per completare. Nel mio caso, alla fine della compilazione la cartella è arrivata a pesare ~25 GB, quindi è bene o assicurarsi di avere abbastanza spazio, oppure controllare di tanto in tanto che questo non stia finendo. E se finisce durante il processo, semplicemente si libera spazio e si continua, anche in questo caso, come prima. (A patto che non vi si corrompa il file system solo per l'essersi riempito al 100%, vero BTRFS?)

    +

    Dipendentemente dalla configurazione, servirà avere più o meno spazio su disco per completare la compilazione. Mentre il kernel di per sé non pesa mai più di qualche MB (e i moduli qualche decina di MB), la cartella alla fine della fiera mi è arrivata a pesare ~22 GB, quindi è bene o assicurarsi di avere abbastanza spazio, oppure controllare di tanto in tanto che questo non stia finendo. E se finisce durante il processo, semplicemente si libera spazio e si continua, anche in questo caso, come prima. (A patto che non vi si corrompa il file system solo per l'essersi riempito al 100%, vero BTRFS?)

    -

    4. Installazione di kernel e moduli

    +

    4. Installazione di kernel e moduli 🏗️

    Per compilare il kernel non sono necessari permessi di root, il che è comodo nel caso si voglia temporaneamente rubare il computer più potente di qualcun altro per fare il lavoro... ma, per installare, quelli ovviamente servono sul sistema corrente.

    Qui è non solo semplice, ma anche abbastanza veloce (massimo qualche minuto): eseguendo (come root) prima make install, e poi INSTALL_MOD_STRIP=1 make install_modules, verranno installati nei percorsi appropriati, rispettivamente (ammesso di non aver cambiato i nomi): l'immagine kernel (vmlinuz-x.x.x-...), di solito in /boot e i moduli, di solito in /lib/modules/linux-x.x.x-.... I moduli sono file separati dal kernel, perché vengono caricati dal sistema quando necessario... il punto è che alcuni tra i tanti servono a completare il boot, quindi vanno installati.

    -

    Bisogna anche preparare il cosiddetto file system di init, o ramdisk iniziale; normalmente finisce anch'esso in /boot, sotto il nome di initrd.img-x.x.x-.... E questo passaggio sarebbe abbastanza scomodo se non esistesse kernel-install, script incluso con systemd, o la sua alternativa installkernel. Avendo systemd, almeno il primo dovrebbe già essere installato, e in quel caso (assumendo i nomi di prima) basta fare (come root) kernel-install add x.x.x-... /boot/vmlinuz-x.x.x-...; alternativamente, con il secondo, installkernel x.x.x-... /boot/vmlinuz-x.x.x-....

    +

    Bisogna anche preparare il cosiddetto file system di init, o ramdisk iniziale; normalmente finisce anch'esso in /boot, sotto il nome di initrd.img-x.x.x-.... E questo passaggio sarebbe abbastanza scomodo se non esistesse kernel-install, script incluso con systemd, o la sua alternativa installkernel. Avendo systemd, almeno il primo dovrebbe già essere installato, e in quel caso (assumendo i nomi di prima) basta fare (come root) kernel-install add x.x.x-... /boot/vmlinuz-x.x.x-...; alternativamente, con il secondo, installkernel x.x.x-... /boot/vmlinuz-x.x.x-....1

    Nota: chi sviluppa col kernel (non chi sta leggendo questo post, temo) potrebbe voler non settare la variabile d'ambiente INSTALL_MOD_STRIP=1, perché debuggare senza i simboli di debug, che quella flag toglie, è difficile... ma per utenti comuni mortali come me sprecano solo spazio (tant'è che le distribuzioni li pacchettizzano a parte). Inoltre, chi non necessariamente sviluppa col kernel, ma deve compilare moduli esterni o fare altri magheggi, dovrebbe realisticamente anche installare i file header corrispondenti sul sistema: make headers_install (sempre come root).

    Almeno su distribuzioni "complete", make install e poi kernel-install dovrebbero aver già configurato anche il bootloader, almeno avendo GRUB. Nel caso di distribuzioni, per così dire, "più fai-da-te" (che io non uso, btw), così come configurazioni di avvio più insolite... non è il caso mio, quindi non so nulla, e non dirò nulla. Le configurazioni di avvio sono una bestia per un'altra volta.

    -

    5. Prova del nocciolo

    +

    5. Prova del nocciolo 💥️

    Se il kernel è installato, e il bootloader è stato correttamente configurato, allora basta semplicemente riavviare il computer per godere. È bene ricordare che, nel caso si stia usando GRUB, certi dicono che il nuovo kernel non viene selezionato come predefinito, e bisogna sceglierlo a mano dal menu di avvio... ma nel mio caso, su Linux Mint Debian Edition, mi è sembrato che invece fosse stato proprio impostato come default.

    @@ -99,18 +102,30 @@ Categories = [ "Linux" ]

    A questo punto, nel caso funzioni tutto e non servano altre modifiche, si può anche cancellare l'enorme cartella di compilazione, e il kernel rimarrà. Nel caso si dovesse in futuro anche disinstallare il kernel, basta cancellare normalmente i file installati prima, e riconfigurare il bootloader in modo appropriato.

    -

    Conclusione

    +

    Conclusione 🎊️

    Poter compilare il kernel dal codice sorgente è un'altra di quelle cose che noi utenti Linux possiamo fare, e che gli utenti Windows francamente non ci invidiano. Ma è perché a loro piace vincere facile, col loro NT, basato su un design a microkernel... proprio così, ora che il punto dell'articolo è finito posso dire scemenze a ruota come piace a me.

    -

    Copium a parte, compilare Linux può essere qualcosa di divertente da fare almeno una volta. Se si capita in situazioni scomode come me va fatto, c'è poco da fare; però, se volete semplicemente divertirvi in modo stupido, magari una delle tante cose da poter fare è compilare un kernel ultra-specifico e super-ottimizzato per la propria macchina, o per una macchina virtuale. E certo, consuma un po' di energia, ma mai quanto minare criptovalute o renderizzare missili nucleari in Blender!

    +

    Copium a parte, compilare Linux può essere qualcosa di divertente da fare almeno una volta. Se si capita in situazioni scomode come me va fatto, c'è poco da fare; però, se ci si vuole semplicemente divertire in modo stupido, magari una delle tante cose da poter fare è compilare un kernel ultra-specifico e super-ottimizzato per la propria macchina, o per scopi di virtualizzazione. E, certo, consuma un po' di energia, ma mai quanto minare criptovalute o renderizzare missili nucleari in Blender!

    {{% i18n notes-refs %}}

    +

    L'immagine decorativa di copertina è ottenuta tramite l'intelligenza artificiale generativa di Microsoft.

    + + +
    +
      + +
    1. +

      Installkernel e kernel-install (Gentoo Linux): https://wiki.gentoo.org/wiki/Installkernel 

      +
    2. + +
    +
    diff --git a/hugo.toml b/hugo.toml index 75a2f1d..8a68282 100644 --- a/hugo.toml +++ b/hugo.toml @@ -23,7 +23,7 @@ theme = ["hugo-notice", "ananke"] languageName = "Italiano" weight = 1 [languages.it.params] - languageEmoji = "🇮🇹" + languageEmoji = "🇮🇹✨️" [languages.en] contentDir = "content/en" languageDirection = "ltr" @@ -31,11 +31,13 @@ theme = ["hugo-notice", "ananke"] weight = 2 [languages.en.params] languageEmoji = "🇬🇧" - #[languages.fr] - # contentDir = "content/fr" - # languageDirection = "ltr" - # languageName = "Français" - # weight = 3 + [languages.fr] + contentDir = "content/fr" + languageDirection = "ltr" + languageName = "Français" + weight = 3 + [languages.fr.params] + languageEmoji = "🇫🇷️" [markup] [markup.goldmark] @@ -50,7 +52,7 @@ theme = ["hugo-notice", "ananke"] favicon = "/favicon.ico" author = "OctoSpacc" recent_posts_number = 5 - other_posts_number = 5 + other_posts_number = 6 toc = true show_reading_time = true canonicalUrlOverride = "https://sitoctt.octt.eu.org"