mercoledì 7 marzo 2018

virtualizzazione: nozioni di base

Nell'universo della virtualizzazione di sistemi operativi e architetture di computer e' facile fare confusione.
E' utile fare un po' di ordine nelle definizioni

LIVELLO 0: piattaforma di virtualizzazione x86 o hypervisor: vmware, virtualbox, qemu

LIVELLO -1: kernel - based - Virtualmachine (KVM): infrastruttura di virtualizzazione per kernel che unita a qemu puo' virtualizzare diverse architetture e sistemi operativi sotto linux.

LIVELLO 1: tool di gestione di hypervisor: libvirt
LIVELLO 2: layer di gestione libvirt: virsh, virtual machine manager, gnome boxes, ovirt

Dalla riunione NALUG del 5 maggio 2018

Il primo concetto chiave esposto è stato quello della differenza tra
virtualizzazione e paravirtualizzazione -
https://stackoverflow.com/questions/21462581/what-is-the-difference-between-full-para-and-hardware-assisted-virtualization

Gli esempi citati sono stati i seguenti

- virtualbox - https://www.virtualbox.org/
- kvm - https://www.linux-kvm.org/page/Main_Page
- qemu - https://www.qemu.org/
- libvirt - https://libvirt.org/
- virt-manager - https://virt-manager.org/
- proxmox - https://www.proxmox.com/en/ 

Proxmox slides LDNA16 -
https://materiale.nalug.net/02_eventi_pubblici/linuxday_napoli/linuxday2016/03_Francesco_Taurino_-_Proxmox_pa_e_pmi.pdf 


Proxmox video LDNA16 - https://www.youtube.com/watch?v=lSPZoh5msHc

- xen - https://www.xenproject.org/

venerdì 9 febbraio 2018

Archeologia informatica, applicativo di fine anni 90

è una collezione di immagini di CD che hanno data 1999. Gira su DOS ma non basta forse c'e' bisogno di qualche funzionalità' grafica di windows 3.11 o 95. Purtroppo non trovo un system requirement che mi permetta di capire come configurare le cose.

bisogna configurare l'ambiente secondo il CDSETUP.BAT
e poi inserire il CD F
provo con DOS box emulator
purtroppo mi fermo alla schermata seguente

dove capisco che non riconosce il percorso dei dischi come il cdrom.
ciò lo capisco anche dal file di diagnostica "PIPPO" che produce prima di chiederti di inserire il cd F

Usiamo invece un approccio più sofisticato: la virtualizzazione QEMU

questa è un'ottima guida per creare rapidamente una macchina DOS
http://gunkies.org/wiki/Installing_MS-DOS_on_Qemu

impari ad usare la QEMU console per cambiare dischetti e CDROM
(qemu) info block 
https://www.linux-kvm.org/page/Change_cdrom
https://superuser.com/questions/97491/how-to-change-the-floppy-image-of-qemu
(qemu) change floppy0 os.img

impari a creare un floppy disk virtuale
https://www.linux.org/threads/create-img-files.11174/

il problema nasce sul cdrom perchè il dos non riconosce in automatico il cdrom, bisogna installarlo. In aiuto viene il seguente tutorial
http://manmrk.net/tutorials/DOS/cdrom.htm per cercare il driver giusto per il cdrom
io ho utilizzato questo setup.exe che mi ha ffinalmente permesso di vedere e caricare virtualmente il CDROM.

Adesso tutto si avvia correttamente ma mi scontro con la risoluzione video DOS che e' troppo bassa. Bisogna adottare un enhanchement grafico successivo al DOS, la risoluzione ottimale dovrebbe essere 640X480. Provo ad installare windows 3.11

ma il risultato non cambia, dovrei cambiare le impostazioni video di win 3.11 ma la cosa non è così immediata, preferisco passare a win95-OSR2
Ho trovato un portale con tutti i sistemi operative Microsoft:
https://winworldpc.com/library/operating-systems
c'è da sbizzarrirsi
Win95 utilizza una versione avanzata di DOS conb questa dovrei trovare l'environment giusto.
Speriamo....

qemu-system-x86_64 -hda win95.disk -m 64 -L .

sarebbe da provare anche il freedos forse un po' più avanzato del dos
https://en.wikibooks.org/wiki/QEMU/FreeDOS

lunedì 15 gennaio 2018

installazione Archlinux con NALUG

Nel programma didattico NALUG 2018 

archlinux è distribuito a 64 bit ma è possibile anche installare versioni a 32bit. All'avvio della ISO non hai ambiente grafico.
Cio che viene indicato di seguito è una validazione della guida all'installazione di arch ufficiale fatta da uno che non ha mai installato Arch ne altri sistemi Linux "a Manella".  L'esercitazione è fatta su una macchina virtuale qemu-kvm creata con virt-manager.

Preinstallazione - tutto ciò che vafatto prima di fare il "Change root"

appena si avvia la ISO la prima cosa da fare è mettere a posto il layout tastiera
per settare la tastiera:
# localectl set-keymap --no-convert it

inoltre poichè sono su di una macchina virtuale remota, vorrei continuare connettendomi in ssh per non utilizzare l'ambiente grafico visto che non serve.
Quindi
# systemctl start sshd

per verificare se il sistema si avvia con EFI:
# efibootmgr
se risponde: "EFI variables are not supported by this system" allora vuol dire che non c'è EFI

andiamo avanti considerando che il sistema è non EFI
partizionamento si possono usare sia parted che fdisk:
parted può fare i filesystem
fdisk non lo fa può solo creare partizione

vediamo quante partizioni fare:
  • minimo di partizioni:solo quella di root
  • numero classico di partizioni: root, swap e home

entriamo nell'ambiente parted digitando
# parted
(parted) print all ci fa vedere i dischi
(parted) select /dev/sdx selezioni il disco su cui lavorare
(parted) mklabel msdos crei una tabella delle partizioni MBR
(parted) mkpart primary ext4 0% 100% crei la partizione formattata ext4 sul 100% del disco.
Ognuno può organizzarsi il disco come meglio crede, io ho creato una unica partizione ext4

A questo punto sembra ci sia un baco di PARTED che non crea il filesystem
quindi diamo il comando
# mkfs -t ext4 /dev/vda1
che crea il filesystem ext4
montiamo il disco
# mount /dev/vda1 /mnt

Installazione - organizziamo le cose sul disco affinchè Arch funzioni al prossimo avvio.

lanciamo il comando# pacstrap /mnt base base-devel
così abbiamo installato il gruppo di pacchetti di base per il semplice funzionamento del sistema operativo

generiamo l'Fstab sul disco necessario per montare i dischi all'avvio
# genfstab -U /mnt >> /mnt/etc/fstab
controlliamo cosa ha generato in /mnt/etc/fstab

Spostiamoci in chroot in modo da modificare i setup del SO sul disco
# arch-chroot /mnt
a questo punto non ho più come riferimento il cdrom...

configuriamo il time-zone italiano in maniera persistente
# ln -sf /usr/share/zoneinfo/Europe/Rome /etc/localtime

L'orologio invece sarà settato sull'ora UTC secondo il comando
# hwclock --systohc (oppure hwclock -w da provare)
in italia, durante l'ora solare (inverno) siamo un'ora in avanti rispetto all'UTC

bisogna poi generare dei file locali per le impostazioni di lingua e tastiera:
togli il commento da it_IT.UTF-8 UTF-8 in /etc/locale.gen dopodichè dai il comando
# locale-gen
scrivi nel file /etc/locale.conf
LANG=it_IT.UTF-8
per il layout della tastiera  scrivere nel file /etc/vconsole.conf
KEYMAP=it

settaggio del nome del Computer (hostname):
scrivi nel file /etc/hostname
myhostname (il nome del tuo computer)

configurazione di rete: di default è in DHCP...

root password
# passwd

BOOT LOADER:
devi installare il grub nell'mbr del disco
#pacman -S grub
# grub-install --target=i386-pc /dev/sdv
ora bisogna generare il main configuration file grub.cfg con il comando
# grub-mkconfig -o /boot/grub/grub.cfg
A questo punto sembra che i giochi siano completi per il primo avvio.

Esci da chroot con
#exit

e riavvia
Risultato:
non parte, vede il grub ma non trova il disco per caricare il kernel...
sembra che il problema sia legato alla virtualizzazione.
Che sola! Bhe questo è proprio il bello di queste esercitazioni.


martedì 7 novembre 2017

copia e sincronia file con rsync

Aggiornamento nov 2017
copia e sincronia di file con un determinato pattern
rsync -avr ---include "pattern" --include "*/" --exclude "*" <from-path> <to-path>

copia e sincronia file con find per file vecchi
find path -mtime +2000 >/tmp/rsyncfiles #cerca i file modificati o creati più di 2000 giorni fa e li scrive in un file
rsync -Ravh --files-from=/tmp/rsyncfiles . <destination-path> 
attenzione al punto è importante!
Aggiornamento dicembre 2016
http://www.tecmint.com/sync-new-changed-modified-files-rsync-linux/#

Aggiornamento Giugno 2016automatizzare rsync con Crono:
https://www.marksanborn.net/howto/use-rsync-for-daily-weekly-and-full-monthly-backups/


Aggiornamento maggio 2014:
rsync con samba:
si monta prima la periferica di rete samba con il comando
# mkdir /mnt/cifs
# mount.cifs //192.168.101.100/sales /mnt/cifs -o username=shareuser,nounix

attenzione che le opzioni scritte dopo la -o non vogliono spazi
e quindi il gioco è fatto perchè userai il comando rsync come per qualsiasi folder locale

settembre 2013
Se nasce l'esigenza di copiare tonnellate di file e magari fare in modo che le volte successive la copia sia sincronizzata, rsync è il comando più potente anche perchè permette di copiare o sincronizzare in locale ed in remoto tramite ssh
alcune dritte:

questi link danno qualche esmpio utile
http://www.cyberciti.biz/tips/linux-use-rsync-transfer-mirror-files-directories.html
http://www.thegeekstuff.com/2010/09/rsync-command-examples/

gli attribbuti che ho usato
-r per copiare anche le sottodir
--progress mi dice per ogni file quanto ci vuole
-v mi dice che file o dir sta copiando
-a per conservare tutti gli attributi
--delete cancella file nella destinazione che non appartengono al source
--remove-source-files cancella il file copiato dalla dir sorgente
se specifichi una dir di destinazione inesistente lui la crea

per collegarmi ad un computer remoto ho usato ad esempio
# rsync -arve "ssh -l ettore" --delete Dropbox/ 192.168.13.112:~/Dropbox/

# rsync --progress -avre 'ssh -l root' /var/lib/libvirt/images/ 192.168.13.51:/var/lib/libvirt/images/

chiaramente è necessario che lo user ssh abbia i permessi per scrivere

altri esempi utili:
http://www.thegeekstuff.com/2011/01/rsync-exclude-files-and-folders/

sabato 28 ottobre 2017

Antix- la distro veramente leggera

la distro più leggera che conosco,
non ha systemd e quindi ad esempio nmcli non funziona
il programma che gestisce le interfacce di rete non è in grado di tenere accese due device
per fare la pennetta avviabile hai bisogno di un antix che ti fa la pennetta. La iso che scarichi la puoi masterizzare su cd o usare per avviare una VM per poi fare la pennetta. Ho provato con dd ma senza successo

inxi per vedere le caratteristiche hardware

giovedì 19 gennaio 2017

Creare e testare una live usb

Oramai i CD sono in via d'estinzione e sono anni che ricorro alle penne USB per avviare live OS sui computer. La situazione delle USB-stick avviabili però a me pare molto più intricata di quella dei CD.
all'inizio c'erano i programmi GUI che la facevano da padrone ma non erano mai compatibili al 100% per tutte le distro. Ho notato anche come sui sistemi Microsoft ci fosse sempre enorme scelta ma sempre abbastanza confusionaria come per tutto ciò che riguarda microsoft.
Poi è arrivato DD... semplice ed efficace
le opzioni nel comando? L'unica che sembrava un po ambiugua era bs (blocksize): 4M dovrebbe assicurarti una buona velocità e compatibilità ma se hai problemi abbassa a 1M.

Purtroppo ci sono vari ostacoli al funzionamento della distro sulla pennetta USB:
  1. l'immagine iso deve essere avviabile: ad esempio alcuni come Antix facevano delle iso non avviabili ed era necessario un programma pper creare una penna usb avviabile. Ciò però può essere verificato come vedremo più tardi;
  2. La penna USB deve essere compatibile con l'avvio della live: ho visto che alcune pennette, benchè visibili fino al grub, dopo non vengono; riconosciute, come se all'avvio il sistema non caricasse i driver per quelle penne. Spero in futuro di capire che tipo di hardware mette in crisi l'avvio
  3. La penna USB non è compatibile con il Bios: nonostante sia letta correttamente il non la riconosce come periferica di boot. Ciò sembra accadere tra computer vecchi e pennette nuove.

Vediamo come verificare il funzionamento di una ISO o di una pennetta

Un esempio per tutti con la iso di mint:
con la penna usb in sdi
scriviamo la pennetta con il comando
sudo dd if=linuxmint-18-xfce-64bit.iso of=/dev/sdi oflag=direct  bs=1M

aggiornamento del 9 sett 2021

per verificare come funziona appicci la macchina virtuale con la USB-stick con un semplice comando:
qemu-system-x86_64 -m 512 -enable-kvm -usb -usbdevice disk:/dev/sdi

per verificare se l'immagine scaricata funziona:
qemu-system-x86_64 -m 512 -enable-kvm linuxmint-18-xfce-64bit.iso

Se l'accensione della macchina virtuale da USB-stick è troppo lenta, ma vuoi verificare se la ISO è scritta correttamente allora puoi riscrivere l'immagina della USB-stick sul disco e avviare quella:
dd bs=4M if=/dev/sdi of=Scaricati/USBstick.img
qemu-system-x86_64 -m 512 -enable-kvm Scaricati/USBstick.img

giovedì 12 gennaio 2017

syncthing

dal linuxday 2016 è uscita una piccola perla:
syncthing
un sistema di sincronizzazione molto semplice tra computer. Il sistema non fa sincronizzazione tra folder locali, o dispositivi esterni come penne usb, etc ma solo fra dispositivi di rete. Completamente opensource e con una GUI http.

Utile per sincronizzare file tra computer multipiattaforma (per windows installate Sync Trayzor)di una LAN.
Con Rsync dovresti utilizzare il protocollo samba e quindi montare il disco remoto come risorsa locale come mostrato QUI. e quindi il computer con linux dovrebbe adoperarsi di fare le sincronie tra le macchine.
Con rsync la cosa è perfettamente biunivoca ed è molto efficace perchè riduce al minimo gli errori.
per linux:
# Add the release PGP keys:
curl -s https://syncthing.net/release-key.txt | sudo apt-key add -

# Add the "release" channel to your APT sources:
echo "deb https://apt.syncthing.net/ syncthing release" | sudo tee /etc/apt/sources.list.d/syncthing.list

# Update and install syncthing:
sudo apt-get update
sudo apt-get install syncthing

Ottima guida introduttiva:
https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-syncthing-to-synchronize-directories-on-ubuntu-14-04

per avviare syncthing sul server senza gui (avendo installato screen):
screen -f -da -m syncthing -no-browser