Wine error /lib/ld-linux.so.2

 

Wine error /lib/ld-linux.so.2

Wine error /lib/ld-linux.so.2.

 

Guida su come risolvere l’errore di libreria mancante (ld-linux.so.2) quando si utilizza wine. Questo tipo di errore “/lib/ld-linux.so.2: could not open” di solito si verifica quando si tenta di eseguire un programma Windows (.exe, .msi) e la libreria potrebbe non essere presente nel sistema o il percorso potrebbe essere errato.

Ecco alcune soluzioni da provare:

Assicurarsi che sul sistema sia installato il linker dinamico a 32 bit. Per verificare a quale pacchetto appartiene ld-linux.so.2, utilizzare i seguenti comandi:

$ sudo apt install apt-file
$ sudo apt-file update
$ sudo apt-file find ld-linux.so.2

output:

edmond@SysLinuxOS:~$ sudo apt-file find ld-linux.so.2
[sudo] password for edmond: 
libc6-i386: /lib/ld-linux.so.2 
libc6-i386: /lib32/ld-linux.so.2
libc6-i386-amd64-cross: /usr/x86_64-linux-gnu/lib/ld-linux.so.2
libc6-i386-amd64-cross: /usr/x86_64-linux-gnu/lib32/ld-linux.so.2
libc6-i386-cross: /usr/i686-linux-gnu/lib/ld-linux.so.2
libc6-i386-x32-cross: /usr/x86_64-linux-gnux32/lib/ld-linux.so.2
libc6-i386-x32-cross: /usr/x86_64-linux-gnux32/lib32/ld-linux.so.2
libc6-sh4-cross: /usr/sh4-linux-gnu/lib/ld-linux.so.2
libc6-sparc-sparc64-cross: /usr/sparc64-linux-gnu/lib32/ld-linux.so.2
libc6-sparc64-cross: /usr/sparc64-linux-gnu/lib64/ld-linux.so.2
libc6.1-alpha-cross: /usr/alpha-linux-gnu/lib/ld-linux.so.2

eventualmente installarlo o reinstallarlo:

$ sudo apt-get install --reinstall libc6:i386

Verificare il percorso corretto, che si trova in /lib/ld-linux.so.2

$ ls /lib/ld-linux.so.2

Se non esiste, estendere la ricerca a tutte le cartelle, in particolare a /usr/lib32, oppure /usr/x86_64-linux-gnu/lib32/ e poi creare un link simbolico a /lib:

$ sudo ln -s /usr/x86_64-linux-gnu/lib32/ld-linux.so.2 /lib

a questo punto rilanciando di nuovo wine il problema dovrebbe essere risolto.

Wine error /lib/ld-linux.so.2

enjoy 😉

 

VirtualBox 7 su Debian 12

 

VirtualBox 7 su Debian 12

 

VirtualBox 7 su Debian 12

 

Guida su come installare VirtualBox 7 su Debian 12 Bookworm. A  differenza di SysLinuxOS 12, dove VirtuaBox è installato di default, su Debian 12 bisogna seguire i passi seguenti.

Download GPG Keys
$ wget -O- -q https://www.virtualbox.org/download/oracle_vbox_2016.asc | sudo gpg --dearmour -o /usr/share/keyrings/oracle_vbox_2016.gpg
Aggiungere repo
$ echo "deb [arch=amd64 signed-by=/usr/share/keyrings/oracle_vbox_2016.gpg] http://download.virtualbox.org/virtualbox/debian bookworm contrib" | sudo tee /etc/apt/sources.list.d/virtualbox.list
Installazione
$ sudo apt update
$ sudo apt install virtualbox-7.0
Installazione VirtualBox Extension Pack

aggiungere questa estensione è fondamentale poichè integra diverse funzionalità, come il supporto USB 2/3, vrdp, encryption ed altro ancora

Verificare correttamente la verione VirtualBox

$ vboxmanage -v | cut -dr -f1

output:

edmond@debian:~$ vboxmanage -v | cut -dr -f1
7.0.12
Download
$ wget https://download.virtualbox.org/virtualbox/7.0.12/Oracle_VM_VirtualBox_Extension_Pack-7.0.12.vbox-extpack
Installazione
$ sudo vboxmanage extpack install Oracle_VM_VirtualBox_Extension_Pack-7.0.12.vbox-extpack

verifica

$ vboxmanage list extpacks

output:

edmond@debian:~$ vboxmanage list extpacks
Extension Packs: 1
Pack no. 0: Oracle VM VirtualBox Extension Pack
Version: 7.0.12
Revision: 159484
Edition:
Description: Oracle Cloud Infrastructure integration, Host Webcam, VirtualBox RDP, PXE ROM, Disk Encryption, NVMe, full VM encryption.
VRDE Module: VBoxVRDP
Crypto Module: VBoxPuelCrypto
Usable: true
Why unusable:
Creazione utente
$ sudo usermod -a -G vboxusers $USER

 

VirtualBox 7 su Debian 12

 

enjoy 😉

Fix Possible missing firmware /lib/firmware/nvidia

Fix Possible missing firmware /lib/firmware/nvidia

 

Fix Possible missing firmware /lib/firmware/nvidia

 

Questo errore si presenta quando si aggiorna il kernel, e di default si utilizza la scheda video Intel. In pratica non trova alcuni firmware inerenti ai driver nvidia, che comunque sono presenti, ma in un percorso diverso. A questo proposito ho creato uno script per risolvere questo fastidioso errore.

Utilizzo:

$ git clone https://github.com/fconidi/fix-firmware-nvidia.git
$ cd fix-firmware-nvidia/
$ chmod +x fix-nvidia.sh
$ ./fix-nvidia.sh

 

Fix Possible missing firmware /lib/firmware/nvidia

 

enjoy 😉

Ansible su Debian 12 e SysLinuxOS

Ansible su Debian 12 e SysLinuxOS

Ansible su Debian 12 e SysLinuxOS

 

Guida su come installare Ansible su Debian 12 e SysLnuxOS 12. Ansible è un tool di automazione open source che viene utilizzato per automatizzare le attività IT, come la gestione della configurazione, il provisioning, il deployment e l’orchestrazione.

**Alcuni esempi di utilizzo di Ansible**

* Gestione della configurazione di server e macchine virtuali
* Deployment di applicazioni e software
* Orchestrazione di processi IT
* Provisionig di infrastrutture cloud

Installazione

Si può installare tramite apt:

$ sudo apt update
$ sudo apt install ansible -y

oppure tramite pip:

$ sudo apt install python3 python3-pip -y
$ pip install ansible --break-system-packages

in questo ultimo caso il PATH sarà in .local/bin/ansible, quindi:

$ export PATH=$PATH:/home/$USER/.local/bin

per rendere definitiva la modifica inserire il comando in .bashrc. Nel caso non fosse presente:

$ nano ~/.bashrc

ed inserire:

PATH=$PATH:~/bin
export PATH=$PATH:/home/$USER/.local/bin

quindi testare:

$ ansible --version

ansible [core 2.15.5]
config file = None
configured module search path = ['/home/edmond/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /home/edmond/.local/lib/python3.11/site-packages/ansible
ansible collection location = /home/edmond/.ansible/collections:/usr/share/ansible/collections
executable location = /home/edmond/.local/bin/ansible
python version = 3.11.2 (main, Mar 13 2023, 12:18:29) [GCC 12.2.0] (/usr/bin/python3)
jinja version = 3.1.2
libyaml = True

Ansible deve essere installato su uno dei nodi. Il nodo di gestione è noto come Control Node. Questo nodo avrà il file Ansible Playbook. Questo è un file YAML che contiene i passaggi che l’utente desidera eseguire su una o più macchine normalmente denominate managed nodes.

Prerequisiti

Per questa guida ho usato 3 server:

Esempio ip_address
Control Node (SysLinuxOS 12) 192.168.1.168
Managed Node 1 (server 1 Debian 12) 192.168.1.200
Managed Node 2 (server 2 Raspberry Py OS 12) 192.168.1.251
Creazione Hosts Inventory file

questo file si occuperà del collegamento con i managed node:

$ mkdir ~/project
$ nano  ~/project/hosts

ed inserire ip ed username dei nodi da automatizzare:

[servers]
server1 ansible_host=192.168.1.200 ansible_user=edmond ansible_ssh_port=22
server2 ansible_host=192.168.1.251 ansible_user=edmond ansible_ssh_port=22

dopo se non si ha l’accesso ssh, si va a creare una chiave, che verrà copiata sui 2 server:

Creazione e copia chiave ssh
$ sudo su
# ssh-keygen
# ssh-copy-id root@192.168.1.200
# ssh-copy-id root@192.168.1.25
Utilizzo moduli Ansible

Sintassi:

$ ansible -i <host_file> -m <module> <host>

Dove:

  • -i ~/hosts: contiene la lista degli hosts
  • -m: specifica il modulo come ping,  shell ecc.ecc.
  • <host>: Ansible hosts dove lanciare i moduli

Utilizzare ping usando ansible ping module:

$ ansible -i ~/project/hosts -m ping all

output ping:

edmond@edmondbox:~$ ansible -i ~/project/hosts -m ping all
server2 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
server1 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}

Utilizzo shell usando ansible shell module:

$ ansible -i ~/project/hosts -m shell -a "uptime" all

output uptime:

$ ansible -i ~/project/hosts -m shell -a "uptime" all

server2 | CHANGED | rc=0 >>
19:51:43 up 1 day, 3:00, 1 user, load average: 0.35, 0.11, 0.08
server1 | CHANGED | rc=0 >>
19:51:44 up 3:36, 1 user, load average: 0.00, 0.00, 0.00

output df:

$ ansible -i ~/project/hosts -m shell -a "df -h" all

server1 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
udev 661M 0 661M 0% /dev
tmpfs 185M 1.8M 184M 1% /run
/dev/mmcblk0p2 117G 8.0G 103G 8% /
tmpfs 925M 0 925M 0% /dev/shm
tmpfs 5.0M 16K 5.0M 1% /run/lock
/dev/mmcblk0p1 510M 61M 450M 12% /boot/firmware
tmpfs 185M 0 185M 0% /run/user/1000
server2 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
udev 1.6G 0 1.6G 0% /dev
tmpfs 380M 1.2M 379M 1% /run
/dev/mmcblk0p2 59G 11G 45G 19% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 5.0M 16K 5.0M 1% /run/lock
/dev/mmcblk0p1 510M 61M 450M 12% /boot/firmware
tmpfs 380M 0 380M 0% /run/user/1000

output free:

$ ansible -i ~/project/hosts -m shell -a "free -m" all

server1 | CHANGED | rc=0 >>
total used free shared buff/cache available
Mem: 1848 732 126 13 1005 1115
Swap: 99 0 99
server2 | CHANGED | rc=0 >>
total used free shared buff/cache available
Mem: 3793 577 1916 45 1378 3215
Swap: 99 0 99Utilizzo modulo apt
Utilizzo modulo apt

Con il modulo apt, si possono utilizzare i classici comandi di apt update, apt upgrade, apt install ecc ecc. In questo caso useremo playbook.yaml.

1) apt update, apt upgrade, e in caso di nuovo kernel, reboot

$ nano ~/project/upgrade.yml

inserire:

---
- hosts: servers
become: yes
become_user: root
tasks:
- name: Update apt repo and cache on all Debian boxes
apt: update_cache=yes force_apt_get=yes cache_valid_time=3600

- name: Upgrade all packages on servers
apt: upgrade=dist force_apt_get=yes

- name: Check if a reboot is needed on all servers
register: reboot_required_file
stat: path=/var/run/reboot-required get_md5=no

- name: Reboot the box if kernel updated
reboot:
msg: "Reboot initiated by Ansible for kernel updates"
connect_timeout: 5
reboot_timeout: 300
pre_reboot_delay: 0
post_reboot_delay: 30
test_command: uptime
when: reboot_required_file.stat.exists

comando apt upgrade:

$ ansible-playbook project/upgrade.yml -i project/hosts

output:

BECOME password:

PLAY [servers] *****************************************************************

TASK [Gathering Facts] *********************************************************
ok: [server2]
ok: [server1]

TASK [Update apt repo and cache on all Debian boxes] ***************************
changed: [server2]
changed: [server1]

TASK [Upgrade all packages on servers] *****************************************
ok: [server2]
ok: [server1]

TASK [Check if a reboot is needed on all servers] ******************************
ok: [server2]
ok: [server1]

TASK [Reboot the box if kernel updated] ****************************************
skipping: [server1]
skipping: [server2]

PLAY RECAP *********************************************************************
server1 : ok=4 changed=1 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0 
server2 : ok=4 changed=1 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0

2) Installazione singolo pacchetto bc

$ nano ~/project/package.yml

inserire:

- hosts: all
become: yes
tasks:
- name : Install the latest bc package
apt: name=bc state=latest update_cache=true

comando con opzione -K per eseguire il comando da root:

$ ansible-playbook project/package.yml -i project/hosts -K

output:

PLAY [all] *********************************************************************

TASK [Gathering Facts] *********************************************************
ok: [server2]
ok: [server1]

TASK [Install the latest bc package] *******************************************
changed: [server2]
changed: [server1]

PLAY RECAP *********************************************************************
server1 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 
server2 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

3) Installazione pacchetto 7zip con output debug managed nodes

$ nano ~/project/output.yml

inserire:

- hosts: all
become: yes
tasks:
- name: Capture the Output
apt: name=7zip state=present update_cache=true
register: apt_output
- debug: var=apt_output

comando:

$ ansible-playbook project/output.yml -i project/hosts -K

output:

 "(Reading database ... 65%",
"(Reading database ... 70%",
"(Reading database ... 75%",
"(Reading database ... 80%",
"(Reading database ... 85%",
"(Reading database ... 90%",
"(Reading database ... 95%",
"(Reading database ... 100%",
"(Reading database ... 76140 files and directories currently installed.)",
"Preparing to unpack .../7zip_22.01+dfsg-8_arm64.deb ...",
"Unpacking 7zip (22.01+dfsg-8) ...",
"Setting up 7zip (22.01+dfsg-8) ...",
"Processing triggers for man-db (2.11.2-2) ..."

4) Installazione multipla e verifica pacchetti installati

$ nano ~/project/packages.yml

inserire:

---
- hosts: all
become: yes
tasks:
- name: Update apt cache and make sure Wget, Curl and Terminator are installed
apt:
name: "{{ item }}"
update_cache: yes
loop:
- wget
- curl
- terminator

comando:

$ ansible-playbook project/packeges.yml -i project/hosts -K

output:

PLAY [all] *********************************************************************

TASK [Gathering Facts] *********************************************************
ok: [server2]
ok: [server1]

TASK [Update apt cache and make sure Wget, Curl and Terminator are installed] ***
ok: [server2] => (item=wget)
ok: [server1] => (item=wget)
ok: [server2] => (item=curl)
ok: [server1] => (item=curl)
changed: [server2] => (item=terminator)
changed: [server1] => (item=terminator)

PLAY RECAP *********************************************************************
server1 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 
server2 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

come si può notare i pacchetti wget e curl sono presenti su entrambi i server, mentre terminator viene invece installato.

 

Ansible su Debian 12 e SysLinuxOS

enjoy 😉

SysLinuxOS 12 for System Integrators rilasciato

SysLinuxOS 12 for System Integrators

SysLinuxOS 12 for System Integrators

Dopo il nuovo rilascio di Debian 12 Bookworm, arriva anche SysLinuxOS 12 (for System Integrators). In questa versione ci sono diversi miglioramenti e nuove features che la differenziano da Debian 12, alcune sono nascoste sotto il cofano. SyslinuxOS 12 arriva subito con Mate desktop environment come desktop principale, mentre la versione con Gnome verrà rilasciata successivamente.

Features principali:
  • Kernel 6.3.8 stable
  • OS-Prober abilitato di default, a differenza di Debian 12, utile per il riconoscimento degli altri OS già installati.
  • Interfacce di rete riconosciute di default come eth0, wlan0, per semplificare  la gestione delle stesse. In più sono presenti altre differenze nascoste, che verranno approfondite successivamente.
Desktop:

Per quanto riguarda la parte estetica, sono stati integrati/modificato due conky, tra cui auzia, che oltre ad abbellire il desktop, sono utili per vedere le prestazioni del pc, della rete, compreso indirizzamento ip privato ed ip pubblico, oltre ai vari processi in esecuzione. In più il menu è ordinato in base all’utilità dei programmi. C’è anche un nuovo menu chiamato Networking che racchiude gli strumenti per l’analisi della rete. Questi strumenti sono solo quelli che utilizzano la Gui, tutti gli altri sono presenti da riga di comando. Mate si offre proriamente per un ambiente semplice, ordinato e veloce.

Sicurezza:

Presenti di default vari firewall, oltre Gufw e Firewalld, anche Opensnitch, Shorewall. Inoltre è presente Suricata come Intrusion Prevention System (IPS). Firejail, Firetools, Firewalk e molto altro.

Networking:

Packet Tracer 8.2.1, ed in alternativa è presente GNS3. Inserito Sparrow Wifi, Presente Virtualbox 7.0.2, ed inoltre sotto il cofano sono presenti tutti i tools di scansione e testing delle reti.

Monitoring:

Inseriti Cacti, Fail2ban, Icinga, Monit, Munin, Nagios4, Zabbix-Agent2 e Zabbix-Fronted, più molto altro.

Conclusione:

SysLinuxOS 12 (for System Integrators) offre un sistema operativo robusto e ricco di funzionalità, progettato specificamente per i professionisti. Con il suo desktop migliorato, misure di sicurezza migliorate, funzionalità di rete avanzate e strumenti di monitoraggio completi, SysLinuxOS 12 offre una piattaforma affidabile ed efficiente per le attività di networking.

SysLinuxOS 12 for System Integrators

enjoy 😉

 

Cambiare nome interfaccia di rete a eth0 su Debian 12

Cambiare nome interfaccia di rete a eth0 su Debian 12

 

Cambiare nome interfaccia di rete a eth0 su Debian 12

Guida su come cambiare il nome alle interfaccia di rete a eth0/wlan0, su Debian 11/12 e SysLinuxOS in modo permanente, utilizzando systemd-networkd. Attualmente vengono riconosciute con molteplici nomi, anche abbastanza lunghi e difficili da ricordare. Questi sono assegnati alle interfacce di rete direttamente dal kernel. Ma tutti questi nomi hanno in comune le due iniziali, “en” ” wl”, infatti se si digita il comando:

sudo dmesg | grep -i eth
sudo dmesg | grep -i wl

si può leggere che le interfacce vengono rinominate partendo da eth0 e wlan0. Personalmente conosco due modi funzionanti per ritornare al vecchio standard.

Metodo 1

questo modo dovrebbe funzionare nella maggior parte dei casi e si limita a fare una piccola aggiunta a grub:

sudo nano /etc/default/grub

ed aggiungere

GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"

come sotto:

GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"

generare un nuovo file di configurazione di grub, e riavviare.

sudo grub-mkconfig -o /boot/grub/grub.cfg
sudo reboot

se tutto è andato bene le interfacce saranno eth0 e wlan0. Se si usa il dhcp non c’è bisogno di modificare nulla, in caso di ip statico, si utilizza il solito metodo:

sudo nano /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
dns-nameservers 192.168.1.1
gateway 192.168.1.1
Metodo 2

questo metodo da utilizzare in alternativa al primo, consiste nell’andare a trovare i nomi ed i percorsi delle attuali schede di rete, per poi manualmente creare due file che conterranno i nuovi nomi.

sudo udevadm info /sys/class/net/nome_interfaccia

il comando sopra ci trova i dati che ci interessano:

E: ID_PATH=pci-0000:03:00.0
E: ID_PATH_TAG=pci-0000_03_00_0

di conseguenza potremo creare il file manualmente:

sudo nano /etc/systemd/network/10-rename-nome_interfaccia

ed aggiungere come esempio sotto

per eth0:

[Match]
Path=pci-0000:03:00.0
pci-0000_03_00_0
[Link]
Name=eth0

o questo per wlan0

[Match]
Path=pci-0000:05:00.0
pci-0000_05_00_0
[Link]
Name=wlan0

dopo il riavvio il nome delle interfacce di rete saranno viste permanentemente con il vecchio standard. In realtà ci sarebbe anche un altro metodo, più semplice 🙂 e cioè uno script bash che fa tutto da solo:

Metodo semplice

sempre in alternativa al primo

git clone https://github.com/fconidi/rename-interfaces.git
cd rename-interfaces/
chmod +x rename-interfaces.sh
sudo ./rename-interfaces.sh
sudo reboot

Cambiare nome interfaccia di rete a eth0 su Debian 12

enjoy 😉

 

Convertire Fumetti Cbr/Cbz in Pdf con AllCbrztoPdf

Convertire Fumetti Cbr/Cbz in PdfConvertire Fumetti Cbr/Cbz in Pdf con AllCbrztoPdf

Uno dei problemi più comuni che gli utenti devono affrontare è la conversione dei file di immagine di fumetti, come i file CBR e CBZ, in formato PDF. Per questo ho creato AllCbrztoPdf, uno script Bash che semplifica notevolmente questo processo. Lo script in questione è stato progettato per eseguire automaticamente la conversione di file CBR e CBZ in formato PDF, utilizzando una serie di comandi Bash standard, rendendo la conversione di grandi quantità di file una questione semplice e veloce.
L’esecuzione dello script è semplice. una volta eseguito scaricherà ed installerà i programmi che servono, per le distribuzioni come Debian based e SysLinuxOS,  poi chiederà all’utente di selezionare una cartella principale tramite Zenity e, successivamente, avvierà la conversione di tutti i file CBR e CBZ in formato PDF all’interno della cartella e delle sue sottocartelle.
Durante la conversione, lo script visualizzerà l’avanzamento tramite pv e creerà un unico file PDF combinato utilizzando pdftk. Infine, lo script salverà il file PDF risultante nella stessa cartella in cui si trovava il file originale. Di default lascerà solo i files PDF e cancellerà TUTTI i file CBR e CBZ.

Download ed utilizzo via GitHub

$ git clone https://github.com/fconidi/AllCbrztoPdf.git
$ cd AllCbrztoPdf/
$ chmod +x allcbrztopdf.sh
$ ./allcbrztopdf.sh

Download ed utilizzo anche via Sourceforge

AllCbrztoPdf script completo:

per le distribuzioni NON Debian based, si possono commentare/eliminare le stringhe con sudo, ed installare i pacchetti tramite il proprio gestore.

Se si volesse mantenere i file CBR/CBZ basta commentare la stringa in fondo rm “$file”

#!/bin/bash
set -xev
sudo apt update
sudo apt upgrade -y
sudo apt install -y pv imagemagick pdftk img2pdf unrar-free rar unrar p7zip-full

# Select the root folder
folder=$(zenity --file-selection --directory --title="Select the root folder")

# Rename all files .cbr to .rar and .cbz to .zip (recursively)
find "$folder" -type f -name "*.cbr" -execdir rename 's/ /_/g' '{}' \;
find "$folder" -type f -name "*.cbr" -execdir mv '{}' '{}'.rar \;
find "$folder" -type f -name "*.cbz" -execdir rename 's/ /_/g' '{}' \;
find "$folder" -type f -name "*.cbz" -execdir mv '{}' '{}'.zip \;

# Convert all files .cbr and .cbz to PDF (recursively)
find "$folder" -type f \( -name "*.rar" -o -name "*.cbr" -o -name "*.zip" -o -name "*.cbz" \) |
while read file; do
ORIGINAL_FOLDER=$(dirname "$file")
TMP_FOLDER=$(mktemp -d)
cd "$TMP_FOLDER"
case "$file" in
*.rar|*.cbr)
unrar e "$file" "$TMP_FOLDER"
;;
*.zip|*.cbz)
unzip -j "$file" -d "$TMP_FOLDER"
;;
esac
ls -1 ./*jpg ./*jpeg ./*png | pv -lep -s $(ls -1 ./*jpg ./*jpeg ./*png | wc -l) | xargs -L1 -I {} img2pdf {} -o {}.pdf
pdftk *.pdf cat output combined.pdf
cp "$TMP_FOLDER/combined.pdf" "$ORIGINAL_FOLDER/$(basename "$file" .cbr | sed 's/.rar$//;s/.zip$//;s/.cbz$//').pdf"
rm -rf "$TMP_FOLDER"
rm "$file"
done

zenity --info --text="Conversion completed!"

PS: script aggiornato su GitHub o SourceForge

 

Convertire Fumetti Cbr/Cbz in Pdf con AllCbrztoPdf

Video:

 

enjoy 😉

 

Fix error Possible missing firmware /lib/firmware/i915

 

Fix error Possible missing firmware /lib/firmware/i915Fix error Possible missing firmware /lib/firmware/i915

 

Questi tipo di errori sono presente oramai da qualche anno e si presentano quando si lancia il comando:

sudo update-initramfs -u

questi errori segnalano che ci sono dei firmware mancanti e si riferiscono alle microarchitetture intel come:

Sky Lake, Broxton, Kaby Lake, Commet Lake, Ice Lake, Elkhart Lake, Tiger Lake, Gemini Lake, Alder Lake,Arc Alchemist.

Per risolvere il problema su Debian, SysLinuxOS ed altre distro, basta scaricare da GitHub il mio script bash, che si occuperà di scaricare tutti i firmware .bin, compararli con quelli già presenti, per poi copiare solamenti quelli mancanti in /lib/firmware/i915.

Per utilizzare fixi915.sh eseguire i seguenti comandi:

$ git clone https://github.com/fconidi/fix-firmware-i915.git
$ cd fix-firmware-i915/
$ chmod +x fixi915.sh
$ ./fixi915.sh

questo è tutto!

 

Di seguito lo script completo:

 

#!/bin/bash

# Source: https://francoconidi.it/fix-error-possible-missing/
# Source: https://syslinuxos.com

# Install curl, wget, lynx

sudo apt update; sudo apt install -y wget curl lynx

# folder creation
mkdir /home/$USER/i915; cd /home/$USER/i915

# Download the web page and use lynx to extract the HTTP/HTTPS links

lynx -dump "https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/i915/" | grep -o 'https\?://[^ ]*\.bin' > /home/$USER/i915/links.txt

# Download the .bin files from the list of links
while read -r line
do
# Extract the filename from the link
filename=$(basename "$line")

# Download the file from the link using curl
curl -OJL "$line"

# Rename the downloaded file to its original name
mv "$filename" "${filename%.*}.bin"
done < "links.txt"

# Two folders to compare
folder1="/home/$USER/i915"
folder2="/lib/firmware/i915/"

# Check folders
if [ ! -d "$folder1" ]; then
echo "Error: First folder does not exist."
exit 1
fi

if [ ! -d "$folder2" ]; then
echo "Error: Second folder does not exist."
exit 1
fi

# Cycle through the files in the first folder
for file1 in "$folder1"/*.bin; do
# Extract the filename without the path
filename="$(basename "$file1")"
# Check if the file exists in the second folder
if [ ! -f "$folder2/$filename" ]; then
# Copy the missing file into the second folder
sudo cp "$file1" "$folder2"
echo "The file $filename has been copied to the second folder."
fi
done

echo "The check has been completed."

# Update initramfs
sudo update-initramfs -u

echo "Fix missing firmware has been completed."

 

Fix error Possible missing firmware /lib/firmware/i915

 

enjoy 😉

 

Creare VLAN in Linux utilizzando il comando ip

 

Per creare VLAN in SysLinuxOS e Debian GNU/Linux utilizzando il comando ip, seguire questi passaggi:

sudo apt-get install vlan

Caricare il modulo del kernel 8021q utilizzando il comando modprobe:

sudo modprobe 8021q

verificare:

lsmod | grep 8021q

output:

edmond@syslinuxos:~$ lsmod | grep 8021q
8021q 40960 0
garp 16384 1 8021q
mrp 20480 1 8021q

Creare una sottointerfaccia VLAN per l’interfaccia di rete desiderata. Ad esempio, per creare una sottointerfaccia VLAN per eth0 con un ID VLAN 10, eseguire il comando:

sudo ip link add link eth0 name eth0.10 type vlan id 10

Assegnare un indirizzo IP alla nuova sottointerfaccia VLAN utilizzando il comando ip addr. Ad esempio, per assegnare l’indirizzo IP 192.168.10.1/24 alla nuova sottointerfaccia VLAN, eseguire il comando:

sudo ip addr add 192.168.10.1/24 dev eth0.10

Attivare la nuova sottointerfaccia VLAN utilizzando il comando ip link:

sudo ip link set dev eth0.10 up

Ripetere i passaggi precedenti per creare ulteriori sottointerfacce VLAN se necessario. Per rendere la configurazione VLAN persistente dopo il riavvio, aggiungere le seguenti righe al file /etc/network/interfaces:

sudo nano /etc/network/interfaces

aggiungere:

auto eth0.10
iface eth0.10 inet static
address 192.168.10.1
netmask 255.255.255.0

successivamente caricare permanentemente il modulo al boot:

sudo su -c 'echo "8021q" >> /etc/modules'

Riavviare il servizio di rete per applicare le modifiche:

sudo systemctl restart networking.service

Ecco fatto! Hai creato una sottointerfaccia VLAN in Linux utilizzando il comando ip.

enjoy 😉

 

Installare Zabbix su SysLinuxOS e Debian 11

 

Installare Zabbix su SysLinuxOS e Debian 11

Installare Zabbix su SysLinuxOS e Debian 11

Zabbix è un sistema di monitoraggio di rete e server open-source, che consente di tenere sotto controllo la disponibilità, la performance e lo stato degli apparati di rete, dei server e delle applicazioni. Zabbix è in grado di raccogliere dati da vari tipi di dispositivi, come server, switch, router, firewall, sensori e applicazioni, e di analizzarli per identificare eventuali problemi o anomalie. Inoltre, permette di definire soglie di allarme e di notificare gli amministratori di sistema in caso di problemi tramite vari canali, come e-mail, SMS, messaggi instantanei, ecc.
Zabbix è altamente flessibile e personalizzabile, grazie alla sua architettura modulare e al supporto di numerose estensioni e plugin. Inoltre, offre una vasta gamma di funzionalità avanzate, come la visualizzazione grafica dei dati, la generazione di report, la gestione di agenti distribuiti, la tracciabilità degli eventi, la gestione delle configurazioni, ecc. Zabbix è una soluzione affidabile e scalabile, adatta a soddisfare le esigenze di monitoraggio di qualsiasi tipo di infrastruttura, dalle piccole alle grandi imprese.

Ecco i passi per installare Zabbix su SysLinuxOS e Debian 11 con MariaDB e Apache2:

Passo 1 – Aggiornare il sistema:
$ sudo apt update
$ sudo apt upgrade
Passo 2 – Scaricare la versione di  Zabbix dal sito
$ wget https://repo.zabbix.com/zabbix/6.2/debian/pool/main/z/zabbix-release/zabbix-release_6.2-4%2Bdebian11_all.deb
$ sudo dpkg -i zabbix-release_6.2-4+debian11_all.deb
$ sudo apt update

Installare i pacchetti necessari:

$ sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent
Passo 3 – Installare Mariadb e Apache2
sudo apt install mariadb-server mariadb-client

Configurare il database MariaDB:

sudo mysql_secure_installation

Seguire le istruzioni per configurare il server MariaDB. Creare un nuovo utente e un nuovo database:

sudo mysql -u root -p
CREATE DATABASE zabbixdb CHARACTER SET UTF8 COLLATE UTF8_BIN;
CREATE USER 'zabbixuser'@'localhost' IDENTIFIED BY 'PASSWORD_FORTE';
GRANT ALL PRIVILEGES ON zabbixdb.* TO 'zabbixuser'@'localhost';
FLUSH PRIVILEGES;
exit;
Passo 4 – Configurare il server Zabbix:
sudo nano /etc/zabbix/zabbix_server.conf

Verificare ed aggiornare i seguenti parametri:

DBName=zabbixdb
DBUser=zabbixuser
DBPassword=PASSWORD_FORTE

Salvare e chiudere il file.

Importare lo schema del database:

sudo zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | sudo mysql -u zabbixuser -p zabbixdb

inserire password creato sopra

Passo 5 – Configurare Apache2:
sudo nano /etc/apache2/conf-available/zabbix.conf

modificare eventualmente le seguenti linee:

php_value max_execution_time 300
php_value memory_limit 512M
php_value post_max_size 32M
php_value upload_max_filesize 256M
php_value max_input_time 300
php_value date.timezone Europe/Rome

Attivare il modulo Apache2:

sudo a2enconf zabbix.conf

Riavviare Apache2 e il server Zabbix:

sudo systemctl restart apache2
sudo systemctl restart zabbix-server
sudo systemctl enable zabbix-server zabbix-agent apache2
Passo 6 – Accedere alla pagina web di Zabbix:
http://<tuo_indirizzo_ip_server>/zabbix

Seguire le istruzioni per completare l’installazione.

Installare Zabbix su SysLinuxOS e Debian 11

 

enjoy 😉