efibootmgr – l’applicazione per interagire e modificare l’ EFI Boot Manager – Linux

efibootmgr è un’applicazione userspace utilizzata per modificare il Boot Manager Extensible Firmware Interface (EFI) di Intel. EFI che oramai ha rimpiazzato il BIOS è l’interfaccia firmware che si occupa del modo in cui hardware e software comunicano in un computer. Tra i benefici di EFI è di essere non legato all’architettura x86.  Attualmente viene implementata l’estensione di  EFI denominata UEFI (Unified EFI ).  Tra i compiti di UEFI c’è proprio anche quello di occuparsi dei servizi di Boot. Grazie ad UEFI è possibile avviare diversi sistemi operativi Linux, Mac, Windows senza la necessità di un bootmanager esterno. UEFI infatti può automaticamente selezionare la partizione appropriata con il sistema operativo. L’unica condizione è che l’hardware e  il software ( SO ) supportino le specifiche UEFI.

Esempi di UEFI Boot Menu.

AsRock FM2 – AMD
x79-Xeon

ATTENZIONE: nei primi tempi le implementazioni UEFI, seppur lungimiranti, sono state accompagnate da diversi bug anche peggiorativi rispetto alla controparte BIOS. In questi casi l’utilizzo di efibootmgr si deve accompagnare alla conoscenza della motherboards specifica. 
In generale poichè si potrebbe anche rendere necessario il caricamento del firmware della MB si sconsiglia la modifica con efibootmgr ( anche nel caso dei Macintosh si sconsiglia la modifica con efibootmgr dei menu entry).
Per disporre di un boot manager userfriendly  si consiglia di valutare l’uso di rEFInd.

Boot Manager: rEFInd

Verificare che il sistema sia stato avviato in UEFI mode

Per poter utilizzare efibootmgr è necessario che le variabili filesystem EFI ( EFI vars )  siano accessibili. Questo implica che il sistema sia stato avviato in EFI mode.

In debian:

# sudo [ -d /sys/firmware/efi ] && echo "EFI boot on HDD" || echo "Legacy boot on HDD"
EFI boot on HDD

dal kernel 4.0 si può verificare che l’avvio sia avvenuto in EFI mode con

# cat /sys/firmware/efi/fw_platform_size
se UEFI mode
64  # se 64 bit 
32  # se 32 bit 
diversamente No UEFI mode  
cat: /sys/firmware/efi/fw_platform_size: No such file or directory 

Per visualizzare le variabili EFI si può utilizzare il comando

# efivar –list

Altro comando per verificare l’avvio in EFI mode

#mount | grep efivars
efivarfs on /sys/firmware/efi/efivars type efivarfs (ro,relatime)

Se  il sistema NON è stato avviato in EFI mode digitando efibootmgr avremo il seguente messaggio:

# efibootmgr 
EFI variables are not supported on this system.

UEFI Boot Manager

Usualmente un Computer UEFI mette a disposizione anche tool di configurazione per il menu del Boot Manager EFI. Se il tool non è sufficientemente amichevole  è preferibile utilizzare il già citato rEFInd oppure l’applicazione efibootmgr oggetto del post.

Efibootmgr

Efibootmgr può creare e rimuovere le voci nel menu di avvio UEFI, modificare l’ordine delle voci nel menu e altro ancora.

In debian/ubuntu  efibootmgr si installa da terminale al solito con

# apt install efibootmgr

lanciato efibootmgr verranno visualizza i dati relativi all’ UEFI Boot Manager con il menu di Avvio UEFI, la voce di avvio corrente del sistema, l’ordine di visualizzazione,…

# efibootmgr 
BootCurrent: 0001
Timeout: 1 seconds
BootOrder: 0000,0001,0006,0004,0005,0002
Boot0000* ubuntu
Boot0001* mx
Boot0002* UEFI: Built-in EFI Shell 
Boot0004* Hard Drive 
Boot0005* USB 
Boot0006* UEFI: Samsung Flash Drive 1100

Il menu di avvio è composto da 6 voci: Boot0000, Boot0001, …

BootCurrent: la prima linea evidenzia quella che è la voce predefinita del menu di avvio. In questo caso mx.

Timeout: il tempo di attesa del menu di avvio che risulta di default inpostato a 0 infatti in genere non si riesce a vedere il menu di avvio.

BootOrder: la successione che verra seguita qualora il precedente menu entry non venga caricato / fallisca il caricamento.
Nell’esempio l’ordine seguito sarà: 0000,  0001, 0006, 0004, 0005, 0002

E ‘  possibile visualizzare le voci del menu EFI  in modo completo utilizzando l’opzione -v verbose

# efibootmgr 
BootCurrent: 0001
Timeout: 1 seconds
BootOrder: 0000,0001,0006,0004,0005,0002
Boot0000* ubuntu	HD(2,GPT,defb0216-f5f6-4969-8345-ff816517a944,0xee800,0x1ad000)/File(\EFI\ubuntu\shimx64.efi)
Boot0001* mx	HD(1,GPT,9c281ac1-76a6-4b39-b2c2-ff65b0d0bef6,0x800,0x1ef000)/File(\EFI\mx\grubx64.efi)
Boot0002* UEFI: Built-in EFI Shell 	VenMedia(5023b95c-db26-429b-a648-bd47664c8012)AMBO
Boot0004* Hard Drive 	BBS(HD,,0x0)AMGOAMNO........m.S.e.a.g.a.t.e. .S.T.9.5.0.0.5.6.2.0.A.S....................A.........................>..Gd-.;.A..MQ..L. . . . . . . . . . . . .Y.5.1.X.D.C.C.9......AMBO
Boot0005* USB 	BBS(USB,,0x0)AMGOAMNO........s.S.a.m.s.u.n.g. .F.l.a.s.h. .D.r.i.v.e. .1.1.0.0....................A.......................F..Gd-.;.A..MQ..L.S.a.m.s.u.n.g. .F.l.a.s.h. .D.r.i.v.e. .1.1.0.0......AMBO
Boot0006* UEFI: Samsung Flash Drive 1100	PciRoot(0x0)/Pci(0x10,0x0)/USB(2,0)/HD(1,MBR,0x23,0x800,0x4e3e800)AMBO

In questo caso è possibile individuare anche le informazioni relative al percorso del bootloader. Ad esempio la varibile mx, ( Boot0001) relativa alla derivativa debian, mx linux, evidenzia che il booloader è di fatto GRUB. Il percorso con la configurazione efi ( grubx64.efi), menu entry ( mx) per il bootloader grub nella partizioni EFI system partition risulta essere (\EFI\mx\grubx64.efi ). La partizione è localizzata nel disco 1 che è partizionato GPT.

Cambiare il Timeout

Se si desidera visualizzare il menu per poter scegliere sempre dal bootmanager EFI si può portare il timeout a 5 srecondi con

efibootmgr -t 5

Cambiare l’ordine di avvio

Per cambiare l’ordine di avvio si utilizza l’opzione -o

efibootmgr -o 0001,0000,0006,0004,0005,0002

è possibile cambiare l’ordine solo per il primo successivo avvio.
In questo caso si usa l’opzione -n

efibootmgr -n 0002

Creare una voce nel menu di boot EFI

Per aggiungere un entry al menu EFI si usa l’opzione -c

efibootmgr -c -d /dev/sdb -p 2 -L “Debian” -l “\EFI\debian\grubx64.efi”

efibootmgr -c -d /dev/sdb -p 1 -L "multibootusb" -l "\EFI\boot\bootx64.cfg"
  • --create or -c crea una nuova voce;
  • --part or -p seguito dal numero di partizione della Partizione di Sistema EFI;
  • --disk or -d seguito dal disco nel quale la Partizione di Sistema EFI è ospitata;
  • --label or -L seguito dall’etichetta da utilizzare come voce nel menu di avvio;
  • --loader or -l seguito dal percorso dell’immagine EFI da avviare \EFI\boot\bootx64.cfg.

Cancellare una voce dal menu EFI

per cancellare un voce di menu di utilizza l’opzione -B

efibootmgr -b 4 -B

–bootnum (-b) seleziona la voce del menu da cancella
–delete-bootnum (-B) effettua la cancellazione

Se la voce cancellata era la prima fare attenzione e cambiare l’ordine di avvio dei menu.

UEFI Bootloader di fallback

Nelle specifiche UEFI 2.3, section 3.4.1.2, si precisa che in assenza di boot variabili configurate è permesso al firmware trattare la EFI system partition come media rimovibile – il percorso di boot sarà EFI/boot/bootx64.efi.

Quindi va considerata l’opportunità dell’installazione di un bootloader di fallback. Di seguito esempi di bootloader di fallback per debian e window

Nel caso di Debian Linux boot entry in NVRAM debian percorso di Boot EFI nella partizione EFI system partition:

EFI/debian/grubx64.efi

il percorso del bootloader di fallback risulta essere

EFI/boot/grubx64.efi

ad esempio nel caso di window variabile di boot configurata: microsoft
oltre a percorso di boot

EFI/microsoft 

potremmo avere il percorso di fallback

EFI/boot/bootx64.efi  

 

Opzioni efibootmgr:

-a | –active
Sets bootnum active
-A | –inactive
Sets bootnum inactive
-b | –bootnum XXXX
Modify BootXXXX (hex)
-B | –delete-bootnum
Delete bootnum (hex)
-c | –create
Create new variable bootnum and add to bootorder
-d | –disk DISK
The disk containing the loader (defaults to /dev/sda)
-e | –edd 1|3|-1
Force EDD 1.0 or 3.0 creation variables, or guess.
-E | –device NUM
EDD 1.0 device number (defaults to 0x80)
-g | –gpt
Force disk with invalid PMBR to be treated as GPT
-H | –acpi_hid XXXX
set the ACPI HID (used with -i)
-i | –iface NAME
create a netboot entry for the named interface
-l | –loader NAME
Specify a loader (defaults to \\elilo.efi)
-L | –label LABEL
Boot manager display label (defaults to “Linux”)
-n | –bootnext XXXX
Set BootNext to XXXX (hex)
-N | –delete-bootnext
Delete BootNext
-o | –bootorder XXXX,YYYY,ZZZZ
Explicitly set BootOrder (hex)
-O | –delete-bootorder
Delete BootOrder
-p | –part PART
Partition number containing the bootloader (defaults to 1)
-q | –quiet
Quiet mode – supresses output.
–test filename
Don’t write to NVRAM, write to filename.
-t | –timeout seconds
Boot Manager timeout, in seconds.
-T | –delete-timeout
Delete Timeout variable.
-u | –unicode | –UCS-2
pass extra command line arguments as UCS-2 (default is ASCII)
-U | –acpi_uid XXXX
set the ACPI UID (used with -i)
-v | –verbose
Verbose mode – prints additional information
-V | –version
Just print version string and exit.
-w | –write-signature
write unique signature to the MBR if needed
-@ | –append-binary-args
append extra variable args from file (use – to read from stdin). Data in file is appended as command line arguments to the boot loader command, with no modification to the data, so you can pass any binary or text data necessary.

Risorse:

CloneZilla – Clonare un hard disk su un disco più piccolo

Clonezilla l’efficace tools free e open source per  la clonazione di dischi e partizioni non consente in modalità standard la clonazione verso un disco fisso più piccolo anche quando  la quantità di dati da trasferire non eccede la capacità del disco di destinazione.
Tuttavia se  si utilizza la modalità expert è possibile effettuare la copia del hard disk più grande verso un hard disk più piccolo. L’accorgimento che si deve avere è sfruttare le opzioni -icds e l’opzione –k2 sopratutto che consente di copiare la tabella partizioni manualmente prima dell’avvio definitivo della clonazione.

Di seguito le schermate principali e il listato da terminale generato da clonezilla nella clonazione di un disco seagate SATA 2.5 da 500GB verso un disco hitachi IDE 2.5 da 80GB collegato con adattatore su porta usb 2.0.

Il disco seagate da clonare ha la seguente organizzazione 7 partizioni e circa 55GB di dati nella prima porzioni del disco.

avviare clonezilla da terminale come superuser e avremo a disposizione li menu interativo

# sudo su 
# clonezilla 

Selezionare copia da disco/partizione a disco/partizione senza il passare per un immagine.

Selezionare la modalità Expert

clonezilla-st500nvmego-80_003exp-1.jpg

Selezionare disk to local disk

clonezilla-st500nvmego-80_004dtod.jpg

Selezionare il disco sorgente/ source disk  in questo caso il segate da 500 GB

clonezilla-st500nvmego-80_004dtod_1.jpg

Adesso selezioanre il disco destinazione

clonezilla-st500nvmego-80_004dtod_2-1.jpg

Nella schermata con  i parametri extra di clonezilla selezionare anche il parametro -icds

clonezilla-st500nvmego-80_004dtodexp_1.jpg

Optiamo per il check e l’eventuale repair del source

clonezilla-st500nvmego-80_004dtodexp_2noskip.jpg

La scelta che segue è la più importante -k2 ( Enter command line prompt to create partition manually later ).

Clonezilla-St500nvmeGO-80_004dtodexp_k2

A questo punto appare un messaggio ci informa che la clonazione è in pausa e ci viene permesso di creare la tabella delle partizioni nel disco di destinazione manualmente. Possiamo riavvare successivamente la procedura di clonazione digitando exit da terminale.

...
...
*****************************************************.
Now enter another shell to allow you to create partition table on 
the destination disk. You may use fdisk, cfdisk, sfdisk or parted 
to do that. When everything is done, run "exit" to go back to the original program.
Press "Enter" to continue......

Clonare la partizione del disco sorgente nel disco di destinazione con sgdisk

e riavviare la clonazione digitando exit

# sgdisk -R /dev/sdc /dev/sda
Caution! Secondary header was placed beyond the disk's limits! Moving the
header, but other problems may occur!
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.

# exit
exit
Informing the OS of partition table changes.... done!
The disk and partitions in this system now:
*****************************************************.
Model: Hitachi HTS541680J9AT00 (scsi)
Disk /dev/sdc: 80.0GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  1039MB  1038MB                     bios_grub
 2      1039MB  2622MB  1583MB
 3      2622MB  36.7GB  34.1GB
...

A questo punto si avvia la clonazione vera e propria di tutte le partizioni. la schermata che accompagna la clonazione della partizione sda3

clonezilla-st500nvmego-80_004dtodexp_partclone_4.jpg

Clonezilla è un tools ben fatto per avere tutti ipacchetti a disposizione per i vari tipi di partizione potrebbe essere conventiente usare una live dedicata.
Comunque con un po’ di attenzione e seguendo i messaggi da terminale è possibile individuare tutti i pacchetti che dovessero rendersi necessari compresi quelli per le partizioni macintosh (+hfs).

Il risultato finale partizionamento Hitachi 80GB su porta USB.

ST500-25-xGOnvme-80cloned

Di seguito il listato generato da clonezilla a livello di terminale nella clonazione in modalità expert con l’opzioni -icds e  -k2  da disco grande a disco più piccolo

root@mx-nvme:/home/ms# clonezilla
Clonezilla mode is device-device
Setting the TERM as xterm-256color
Starting /usr/sbin/ocs-onthefly at 2019-06-25 14:05:21 CEST...
Excluding busy partition or disk...
Disk number: 3
Excluding busy partition or disk...
Disk number: 2
PS. Next time you can run this command directly:
/usr/sbin/ocs-onthefly -g auto -e1 auto -e2 -j2 -r -icds -fsck-src-part -k2  -f sda -t sdc
This command is also saved as this file name for later use if necessary: /tmp/ocs-onthefly-2019-06-25-14-11
****************************************************.
Press "Enter" to continue...
*****************************************************.
///WARNING/// filesystem.squashfs not found! No idea where is LIVE MEDIA!!! Assume this is running in DRBL client.
*****************************************************.
setterm: terminal xterm-256color does not support --blank
*****************************************************.
Searching for data partition(s)...
Excluding busy partition or disk...
Unmounted partitions (including extended or swap): sdc1 sdc2
Collecting info... done!
Getting /dev/sdc1 info...
Getting /dev/sdc2 info...
WARNING!!! WARNING!!! WARNING!!!
WARNING! THE EXISTING DATA IN THIS HARDDISK/PARTITION(S) WILL BE OVERWRITTEN! ALL EXISTING DATA WILL BE LOST: sdc
*****************************************************.
Machine: Unknown product name
sdc (80.0GB_HTS541680J9AT00__Hitachi_HTS541680J9AT00-0:0)
sdc1 (59.3G_exfat(In_HTS541680J9AT00_)_Hitachi_HTS541680J9AT00-0:0)
sdc2 (15.2G_ext4(In_HTS541680J9AT00_)_Hitachi_HTS541680J9AT00-0:0)
*****************************************************.
*****************************************************.
Are you sure you want to continue? (y/n) y
OK, let's do it!!
*****************************************************.
Let me ask you again.
WARNING!!! WARNING!!! WARNING!!!
WARNING! THE EXISTING DATA IN THIS HARDDISK/PARTITION(S) WILL BE OVERWRITTEN! ALL EXISTING DATA WILL BE LOST: sdc
Are you sure you want to continue? (y/n)
re you sure you want to continue? (y/n) y
OK, let's do it!!
*****************************************************.
Saving the GPT of /dev/sda as /tmp/ocs_onthefly_local.Ri34n8/src-gpt.gdisk by sgdisk...
The operation has completed successfully.
Saving the primary GPT of /dev/sda as /tmp/ocs_onthefly_local.Ri34n8/src-gpt-1st.img by dd...
34+0 records in
34+0 records out
17408 bytes (17 kB, 17 KiB) copied, 0.000222642 s, 78.2 MB/s
Saving the secondary GPT of /dev/sda as /tmp/ocs_onthefly_local.Ri34n8/src-gpt-2nd.img by dd...
32+0 records in
32+0 records out
16384 bytes (16 kB, 16 KiB) copied, 0.000175774 s, 93.2 MB/s
*****************************************************.
Collecting partition /dev/sda1 info...
Collecting partition /dev/sda2 info...
Collecting partition /dev/sda3 info...
Collecting partition /dev/sda4 info...
Collecting partition /dev/sda5 info...
Collecting partition /dev/sda6 info...
Collecting partition /dev/sda7 info...
Non-grub boot loader found on /tmp/ocs_onthefly_local.Ri34n8/sdc-mbr...
The CHS value of hard drive from EDD will be used for sfdisk.
Sfdisk >= 2.26 does not support C/H/S option. Skip using C/H/S option.
*****************************************************.
Searching for data partition(s) in source disk: sda ...
Excluding busy partition or disk...
Unmounted partitions (including extended or swap): sda1 sda2 sda3 sda4 sda5 sda6 sda7
Collecting info........ done!
*****************************************************.
Running file system check and repair for /dev/sda1...
Running: fsck -f  /dev/sda1
fsck from util-linux 2.29.2
fsck.fat 4.1 (2017-01-24)
/dev/sda1: 3 files, 34/252940 clusters
Running file system check and repair for /dev/sda2...
Running: fsck -f  /dev/sda2
fsck from util-linux 2.29.2
e2fsck 1.43.4 (31-Jan-2017)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sda2: 11/96000 files (0.0% non-contiguous), 15356/386560 blocks
Running file system check and repair for /dev/sda3...
Running: fsck -f  /dev/sda3
fsck from util-linux 2.29.2
e2fsck 1.43.4 (31-Jan-2017)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
rootMX18.1: 265235/2088960 files (0.0% non-contiguous), 1641803/8326912 blocks
Running file system check and repair for /dev/sda4...
Running: fsck -f  /dev/sda4
fsck from util-linux 2.29.2
e2fsck 1.43.4 (31-Jan-2017)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
boot: 779/106496 files (0.5% non-contiguous), 164652/407040 blocks
Running file system check and repair for /dev/sda5...
Running: fsck -f  /dev/sda5
fsck from util-linux 2.29.2
e2fsck 1.43.4 (31-Jan-2017)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sda5: 341/169680 files (1.5% non-contiguous), 49544/657664 blocks
Running file system check and repair for /dev/sda6...
Running: fsck -f  /dev/sda6
fsck from util-linux 2.29.2
e2fsck 1.43.4 (31-Jan-2017)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sda6: 314/171024 files (1.6% non-contiguous), 73266/685312 blocks
Running file system check and repair for /dev/sda7...
Running: fsck -f  /dev/sda7
fsck from util-linux 2.29.2
e2fsck 1.43.4 (31-Jan-2017)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sda7: 11/640848 files (0.0% non-contiguous), 65844/2560000 blocks
*****************************************************.
Will create the partition on the target machine...
Trying to clean the MBR and GPT partition table on the destination disk first: /dev/sdc
Informing the OS of partition table changes... done!
*****************************************************.
Now enter another shell to allow you to create partition table
on the destination disk. You may use fdisk, cfdisk, sfdisk or parted
to do that. When everything is done, run "exit" to go back to the original program.
Press "Enter" to continue......

# sgdisk -R /dev/sdc /dev/sda
Caution! Secondary header was placed beyond the disk's limits! Moving the
header, but other problems may occur!
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.

# exit
exit
Informing the OS of partition table changes.... done!
The disk and partitions in this system now:
*****************************************************.
Model: Hitachi HTS541680J9AT00 (scsi)
Disk /dev/sdc: 80.0GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 1039MB 1038MB bios_grub
2 1039MB 2622MB 1583MB
3 2622MB 36.7GB 34.1GB
4 36.7GB 38.4GB 1667MB
5 38.4GB 41.1GB 2694MB
6 45.7GB 48.5GB 2807MB
7 48.5GB 59.0GB 10.5GB

*****************************************************.
done!
*****************************************************.
*****************************************************.
Searching for data partition(s) in source disk: sda ...
Excluding busy partition or disk...
Unmounted partitions (including extended or swap): sda1 sda2 sda3 sda4 sda5 sda6 sda7
Collecting info........ done!
*****************************************************.
Source partition file system is vfat...
Cloning the /dev/sda1 to /dev/sdc1...
Clean filesystem header in device /dev/sdc1...
*****************************************************.
Using partclone to clone...
Run partclone: partclone.vfat -z 10485760 -N -L /var/log/partclone.log -b -s /dev/sda1 -O /dev/sdc1
Cloned successfully.
*****************************************************.
Source partition file system is ext4...
Cloning the /dev/sda2 to /dev/sdc2...
Clean filesystem header in device /dev/sdc2...
*****************************************************.
Using partclone to clone...
Run partclone: partclone.ext4 -z 10485760 -N -L /var/log/partclone.log -b -s /dev/sda2 -O /dev/sdc2
Cloned successfully.
*****************************************************.
Source partition file system is ext4...
Cloning the /dev/sda3 to /dev/sdc3...
Clean filesystem header in device /dev/sdc3...
*****************************************************.
Using partclone to clone...
Run partclone: partclone.ext4 -z 10485760 -N -L /var/log/partclone.log -b -s /dev/sda3 -O /dev/sdc3
Cloned successfully.
*****************************************************.
Source partition file system is ext4...
Cloning the /dev/sda4 to /dev/sdc4...
Clean filesystem header in device /dev/sdc4...
*****************************************************.
Using partclone to clone...
Run partclone: partclone.ext4 -z 10485760 -N -L /var/log/partclone.log -b -s /dev/sda4 -O /dev/sdc4
Cloned successfully.
*****************************************************.
Source partition file system is ext4...
Cloning the /dev/sda5 to /dev/sdc5...
Clean filesystem header in device /dev/sdc5...
*****************************************************.
Using partclone to clone...
Run partclone: partclone.ext4 -z 10485760 -N -L /var/log/partclone.log -b -s /dev/sda5 -O /dev/sdc5
Cloned successfully.
*****************************************************.
Source partition file system is ext4...
Cloning the /dev/sda6 to /dev/sdc6...
Clean filesystem header in device /dev/sdc6...
*****************************************************.
Using partclone to clone...
Run partclone: partclone.ext4 -z 10485760 -N -L /var/log/partclone.log -b -s /dev/sda6 -O /dev/sdc6
Cloned successfully.
*****************************************************
Source partition file system is ext4...
Cloning the /dev/sda7 to /dev/sdc7...
Clean filesystem header in device /dev/sdc7...
*****************************************************.
Using partclone to clone...
Run partclone: partclone.ext4 -z 10485760 -N -L /var/log/partclone.log -b -s /dev/sda7 -O /dev/sdc7
Cloned successfully.
*****************************************************.
*****************************************************.
Searching for data partition(s) in target disk for post process: sdc...
Excluding busy partition or disk...
Unmounted partitions (including extended or swap): sdc1 sdc2 sdc3 sdc4 sdc5 sdc6 sdc7
Collecting info........ done!
*****************************************************.
Now tuning the file system size on partition /dev/sdc1 to fit the partition size...
Program fatresize not found! Skip this partition /dev/sdc1
*****************************************************.
Now tuning the file system size on partition /dev/sdc2 to fit the partition size...
e2fsck -f -y /dev/sdc2; resize2fs -p -f /dev/sdc2
e2fsck 1.43.4 (31-Jan-2017)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sdc2: 11/96000 files (0.0% non-contiguous), 15356/386560 blocks
resize2fs 1.43.4 (31-Jan-2017)
The filesystem is already 386560 (4k) blocks long. Nothing to do!

*****************************************************.
Now tuning the file system size on partition /dev/sdc3 to fit the partition size...
e2fsck -f -y /dev/sdc3; resize2fs -p -f /dev/sdc3
e2fsck 1.43.4 (31-Jan-2017)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
rootMX18.1: 265235/2088960 files (0.0% non-contiguous), 1641803/8326912 blocks
resize2fs 1.43.4 (31-Jan-2017)
The filesystem is already 8326912 (4k) blocks long. Nothing to do!

*****************************************************.
Now tuning the file system size on partition /dev/sdc4 to fit the partition size...
e2fsck -f -y /dev/sdc4; resize2fs -p -f /dev/sdc4
e2fsck 1.43.4 (31-Jan-2017)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
boot: 779/106496 files (0.5% non-contiguous), 164652/407040 blocks
resize2fs 1.43.4 (31-Jan-2017)
The filesystem is already 407040 (4k) blocks long. Nothing to do!

*****************************************************.
Now tuning the file system size on partition /dev/sdc5 to fit the partition size...
e2fsck -f -y /dev/sdc5; resize2fs -p -f /dev/sdc5
e2fsck 1.43.4 (31-Jan-2017)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sdc5: 341/169680 files (1.5% non-contiguous), 49544/657664 blocks
resize2fs 1.43.4 (31-Jan-2017)
The filesystem is already 657664 (4k) blocks long. Nothing to do!

*****************************************************.
Now tuning the file system size on partition /dev/sdc6 to fit the partition size...
e2fsck -f -y /dev/sdc6; resize2fs -p -f /dev/sdc6
e2fsck 1.43.4 (31-Jan-2017)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sdc6: 314/171024 files (1.6% non-contiguous), 73266/685312 blocks
resize2fs 1.43.4 (31-Jan-2017)
The filesystem is already 685312 (4k) blocks long. Nothing to do!

*****************************************************.
Now tuning the file system size on partition /dev/sdc7 to fit the partition size...
e2fsck -f -y /dev/sdc7; resize2fs -p -f /dev/sdc7
e2fsck 1.43.4 (31-Jan-2017)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sdc7: 11/640848 files (0.0% non-contiguous), 65844/2560000 blocks
resize2fs 1.43.4 (31-Jan-2017)
The filesystem is already 2560000 (4k) blocks long. Nothing to do!

*****************************************************.
Creating the swap partition if exists...
*****************************************************.
Trying to remove udev hardware record in the restored OS...
The specified destination device: sdc1 sdc2 sdc3 sdc4 sdc5 sdc6 sdc7
Trying to remove udev persistent files. The devices to be searched: sdc1 sdc2 sdc3 sdc4 sdc5 sdc6 sdc7...
Skip /dev/sdc1 (vfat).
Now searching possible device /dev/sdc2...
Now searching possible device /dev/sdc3...
Now searching possible device /dev/sdc4...
Now searching possible device /dev/sdc5...
Now searching possible device /dev/sdc6...
Now searching possible device /dev/sdc7...
done!
*****************************************************.
Device /dev/sdc2 is not a FAT partition.
Skip updating syslinux on that.
Device /dev/sdc3 is not a FAT partition.
Skip updating syslinux on that.
Device /dev/sdc4 is not a FAT partition.
Skip updating syslinux on that.
Device /dev/sdc5 is not a FAT partition.
Skip updating syslinux on that.
Device /dev/sdc6 is not a FAT partition.
Skip updating syslinux on that.
Device /dev/sdc7 is not a FAT partition.
Skip updating syslinux on that.
*****************************************************.
Run grub install on disk sdc...
Found grub partition: /dev/sdc3
Found grub 2 installed in the restored OS.
Test if we can chroot the restored OS partition /dev/sdc3...
Yes, we are able to chroot the restored OS partition /dev/sdc3.
Trying to use the grub2 in the restored OS...
Running: run_grub2_from_restored_os "/dev/sdc3" "/dev/sdc3" "/dev/sdc"
Re-installing grub2 on disk/partition /dev/sdc with grub2 dir in partition /dev/sdc3 and root partition /dev/sdc3...
Installing for x86_64-efi platform.
grub-install: error: cannot find EFI directory.
Unable to use the grub 2 in the restored OS, trying another method...
Trying to use the grub2 from the running OS...
Checking grub-install version...
Running: grub-install --force --recheck --root-directory=/tmp/hd_img.MOkrC9 /dev/sdc
Installing for x86_64-efi platform.
grub-install: error: /tmp/hd_img.MOkrC9 doesn't look like an EFI partition.
Failed to install grub!!!
*****************************************************.
Try to run partclone.ntfsfixboot for NTFS boot partition if it exists. Scanning partition(s): sdc1 sdc2 sdc3 sdc4 sdc5 sdc6 sdc7...
The NTFS boot partition was not found or not among the restored partition(s). Skip running partclone.ntfsfixboot.
*****************************************************.
Checking if udevd rules have to be restored...
Now syncing - flush filesystem buffers...

Ending /usr/sbin/ocs-onthefly at 2019-06-25 14:31:55 CEST...
Press "Enter" to continue......

Risorse:

rkhunter – cacciatore di rootkits e software malevole – debian 9.xx ( stretch )

rkhunter è uno script che analizza il filesytem alla ricerca di applicazioni malevole: rootkits, backdoors (cavalli di troia)  e altri rischi per la sicurezza. Un rootkits consente all’attaccante di avere  un accesso di tipo privilegiato al computer/server. rkhunter permette di capire se il computer/server è stato compromesso.  E’ buona norma ultilizzare anche  altri software di controllo ad esempio: chkrootkit .

Tra i controlli effettuati :

  • compazione delle impronte dei files importanti con quelle contenute in database online,
  • ricerca di directory e files dei rootkits conosciuti,
  • ricerca di  errori nei permessi nei file binari,
  • ricerca di  file e cartelle nascoste,
  • ricerca di stringhe sospette nei moduli kernel,
  • controllo dei file di configurazione di SSHD

rkhunter si installa al solito con

sudo apt install rkhunter

Per evitare warning inutili è opportuno modificare il file di configurazione /etc/rkhunter.conf.local  indicando il package manager

In debian 9.xx cambiare il valore di default NONE in DPKG

...
#PKGMGR=NONE
...

in

PKGMGR=DPKG

aggiornare anche il file database delle proprietà con i comandi

sudo rkhunter --propupd

e

sudo rkhunter --update

Lo scanner si avvia manualmente con

sudo rkhunter -c

Per informazioni più dettagliate sul controllo effettuato è possible consultare  il file .log in /var/log/rkhunter.log

Per quanto attiene ai warning va considerato che rkhunter

 

esempio di listato generato da rkhunter

maurizio# rkhunter -c
[ Rootkit Hunter version 1.4.2 ]

Checking system commands...

  Performing 'strings' command checks
    Checking 'strings' command                               [ OK ]

  Performing 'shared libraries' checks
    Checking for preloading variables                        [ None found ]
    Checking for preloaded libraries                         [ None found ]
    Checking LD_LIBRARY_PATH variable                        [ Not found ]

  Performing file properties checks
    Checking for prerequisites                               [ OK ]
    /usr/sbin/adduser                                        [ OK ]
    /usr/sbin/chroot                                         [ OK ]
    /usr/sbin/cron                                           [ OK ]
    /usr/sbin/groupadd                                       [ OK ]
    /usr/sbin/groupdel                                       [ OK ]
    /usr/sbin/groupmod                                       [ OK ]
    /usr/sbin/grpck                                          [ OK ]
    /usr/sbin/nologin                                        [ OK ]
    /usr/sbin/pwck                                           [ OK ]
    /usr/sbin/rsyslogd                                       [ OK ]
    /usr/sbin/sshd                                           [ OK ]
    /usr/sbin/tcpd                                           [ OK ]
    /usr/sbin/useradd                                        [ OK ]
    /usr/sbin/userdel                                        [ OK ]
    /usr/sbin/usermod                                        [ OK ]
    /usr/sbin/vipw                                           [ OK ]
    /usr/sbin/unhide                                         [ OK ]
    /usr/sbin/unhide-linux                                   [ OK ]
    /usr/sbin/unhide-posix                                   [ OK ]
    /usr/sbin/unhide-tcp                                     [ OK ]
    /usr/bin/awk                                             [ OK ]
    /usr/bin/basename                                        [ OK ]
    /usr/bin/chattr                                          [ OK ]
    /usr/bin/curl                                            [ OK ]
    /usr/bin/cut                                             [ OK ]
    /usr/bin/diff                                            [ OK ]
    /usr/bin/dirname                                         [ OK ]
    /usr/bin/dpkg                                            [ OK ]
    /usr/bin/dpkg-query                                      [ OK ]
    /usr/bin/du                                              [ OK ]
    /usr/bin/env                                             [ OK ]
    /usr/bin/file                                            [ OK ]
    /usr/bin/find                                            [ OK ]
    /usr/bin/GET                                             [ OK ]
    /usr/bin/groups                                          [ OK ]
    /usr/bin/head                                            [ OK ]
    /usr/bin/id                                              [ OK ]
    /usr/bin/killall                                         [ OK ]
    /usr/bin/last                                            [ OK ]
    /usr/bin/lastlog                                         [ OK ]
    /usr/bin/ldd                                             [ OK ]
    /usr/bin/less                                            [ OK ]
    /usr/bin/logger                                          [ OK ]
    /usr/bin/lsattr                                          [ OK ]
    /usr/bin/lsof                                            [ OK ]
    /usr/bin/mail                                            [ OK ]
    /usr/bin/md5sum                                          [ OK ]
    /usr/bin/newgrp                                          [ OK ]
    /usr/bin/passwd                                          [ OK ]
    /usr/bin/perl                                            [ OK ]
    /usr/bin/pgrep                                           [ OK ]
    /usr/bin/pkill                                           [ OK ]
    /usr/bin/pstree                                          [ OK ]
    /usr/bin/rkhunter                                        [ OK ]
    /usr/bin/runcon                                          [ OK ]
    /usr/bin/sha1sum                                         [ OK ]
    /usr/bin/sha224sum                                       [ OK ]
    /usr/bin/sha256sum                                       [ OK ]
    /usr/bin/sha384sum                                       [ OK ]
    /usr/bin/sha512sum                                       [ OK ]
    /usr/bin/size                                            [ OK ]
    /usr/bin/sort                                            [ OK ]
    /usr/bin/ssh                                             [ OK ]
    /usr/bin/stat                                            [ OK ]
    /usr/bin/strings                                         [ OK ]
    /usr/bin/sudo                                            [ OK ]
    /usr/bin/tail                                            [ OK ]
    /usr/bin/test                                            [ OK ]
    /usr/bin/top                                             [ OK ]
    /usr/bin/touch                                           [ OK ]
    /usr/bin/tr                                              [ OK ]
    /usr/bin/uniq                                            [ OK ]
    /usr/bin/users                                           [ OK ]
    /usr/bin/vmstat                                          [ OK ]
    /usr/bin/w                                               [ OK ]
    /usr/bin/watch                                           [ OK ]
    /usr/bin/wc                                              [ OK ]
    /usr/bin/wget                                            [ OK ]
    /usr/bin/whatis                                          [ OK ]
    /usr/bin/whereis                                         [ OK ]
    /usr/bin/which                                           [ OK ]
    /usr/bin/who                                             [ OK ]
    /usr/bin/whoami                                          [ OK ]
    /usr/bin/mawk                                            [ OK ]
    /usr/bin/lwp-request                                     [ OK ]
    /usr/bin/mail.mailutils                                  [ OK ]
    /usr/bin/x86_64-linux-gnu-size                           [ OK ]
    /usr/bin/x86_64-linux-gnu-strings                        [ OK ]
    /usr/bin/w.procps                                        [ OK ]
    /sbin/depmod                                             [ OK ]
    /sbin/fsck                                               [ OK ]
    /sbin/ifconfig                                           [ OK ]
    /sbin/ifdown                                             [ OK ]
    /sbin/ifup                                               [ OK ]
    /sbin/init                                               [ OK ]
    /sbin/insmod                                             [ OK ]
    /sbin/ip                                                 [ OK ]
    /sbin/lsmod                                              [ OK ]
    /sbin/modinfo                                            [ OK ]
    /sbin/modprobe                                           [ OK ]
    /sbin/rmmod                                              [ OK ]
    /sbin/route                                              [ OK ]
    /sbin/runlevel                                           [ OK ]
    /sbin/sulogin                                            [ OK ]
    /sbin/sysctl                                             [ OK ]
    /bin/bash                                                [ OK ]
    /bin/cat                                                 [ OK ]
    /bin/chmod                                               [ OK ]
    /bin/chown                                               [ OK ]
    /bin/cp                                                  [ OK ]
    /bin/date                                                [ OK ]
    /bin/df                                                  [ OK ]
    /bin/dmesg                                               [ OK ]
    /bin/echo                                                [ OK ]
    /bin/egrep                                               [ OK ]
    /bin/fgrep                                               [ OK ]
    /bin/fuser                                               [ OK ]
    /bin/grep                                                [ OK ]
    /bin/ip                                                  [ OK ]
    /bin/kill                                                [ OK ]
    /bin/less                                                [ OK ]
    /bin/login                                               [ OK ]
    /bin/ls                                                  [ OK ]
    /bin/lsmod                                               [ OK ]
    /bin/mktemp                                              [ OK ]
    /bin/more                                                [ OK ]
    /bin/mount                                               [ OK ]
    /bin/mv                                                  [ OK ]
    /bin/netstat                                             [ OK ]
    /bin/ping                                                [ OK ]
    /bin/ps                                                  [ OK ]
    /bin/pwd                                                 [ OK ]
    /bin/readlink                                            [ OK ]
    /bin/sed                                                 [ OK ]
    /bin/sh                                                  [ OK ]
    /bin/su                                                  [ OK ]
    /bin/touch                                               [ OK ]
    /bin/uname                                               [ OK ]
    /bin/which                                               [ OK ]
    /bin/kmod                                                [ OK ]
    /bin/systemd                                             [ OK ]
    /bin/systemctl                                           [ OK ]
    /bin/dash                                                [ OK ]
    /lib/systemd/systemd                                     [ OK ]

[Press  to continue]


Checking for rootkits...

  Performing check of known rootkit files and directories
    55808 Trojan - Variant A                                 [ Not found ]
    ADM Worm                                                 [ Not found ]
    AjaKit Rootkit                                           [ Not found ]
    Adore Rootkit                                            [ Not found ]
    aPa Kit                                                  [ Not found ]
    Apache Worm                                              [ Not found ]
    Ambient (ark) Rootkit                                    [ Not found ]
    Balaur Rootkit                                           [ Not found ]
    BeastKit Rootkit                                         [ Not found ]
    beX2 Rootkit                                             [ Not found ]
    BOBKit Rootkit                                           [ Not found ]
    cb Rootkit                                               [ Not found ]
    CiNIK Worm (Slapper.B variant)                           [ Not found ]
    Danny-Boy's Abuse Kit                                    [ Not found ]
    Devil RootKit                                            [ Not found ]
    Dica-Kit Rootkit                                         [ Not found ]
    Dreams Rootkit                                           [ Not found ]
    Duarawkz Rootkit                                         [ Not found ]
    Enye LKM                                                 [ Not found ]
    Flea Linux Rootkit                                       [ Not found ]
    Fu Rootkit                                               [ Not found ]
    Fuck`it Rootkit                                          [ Not found ]
    GasKit Rootkit                                           [ Not found ]
    Heroin LKM                                               [ Not found ]
    HjC Kit                                                  [ Not found ]
    ignoKit Rootkit                                          [ Not found ]
    IntoXonia-NG Rootkit                                     [ Not found ]
    Irix Rootkit                                             [ Not found ]
    Jynx Rootkit                                             [ Not found ]
    KBeast Rootkit                                           [ Not found ]
    Kitko Rootkit                                            [ Not found ]
    Knark Rootkit                                            [ Not found ]
    ld-linuxv.so Rootkit                                     [ Not found ]
    Li0n Worm                                                [ Not found ]
    Lockit / LJK2 Rootkit                                    [ Not found ]
    Mood-NT Rootkit                                          [ Not found ]
    MRK Rootkit                                              [ Not found ]
    Ni0 Rootkit                                              [ Not found ]
    Ohhara Rootkit                                           [ Not found ]
    Optic Kit (Tux) Worm                                     [ Not found ]
    Oz Rootkit                                               [ Not found ]
    Phalanx Rootkit                                          [ Not found ]
    Phalanx2 Rootkit                                         [ Not found ]
    Phalanx2 Rootkit (extended tests)                        [ Not found ]
    Portacelo Rootkit                                        [ Not found ]
    R3dstorm Toolkit                                         [ Not found ]
    RH-Sharpe's Rootkit                                      [ Not found ]
    RSHA's Rootkit                                           [ Not found ]
    Scalper Worm                                             [ Not found ]
    Sebek LKM                                                [ Not found ]
    Shutdown Rootkit                                         [ Not found ]
    SHV4 Rootkit                                             [ Not found ]
    SHV5 Rootkit                                             [ Not found ]
    Sin Rootkit                                              [ Not found ]
    Slapper Worm                                             [ Not found ]
    Sneakin Rootkit                                          [ Not found ]
    'Spanish' Rootkit                                        [ Not found ]
    Suckit Rootkit                                           [ Not found ]
    Superkit Rootkit                                         [ Not found ]
    TBD (Telnet BackDoor)                                    [ Not found ]
    TeLeKiT Rootkit                                          [ Not found ]
    T0rn Rootkit                                             [ Not found ]
    trNkit Rootkit                                           [ Not found ]
    Trojanit Kit                                             [ Not found ]
    Tuxtendo Rootkit                                         [ Not found ]
    URK Rootkit                                              [ Not found ]
    Vampire Rootkit                                          [ Not found ]
    VcKit Rootkit                                            [ Not found ]
    Volc Rootkit                                             [ Not found ]
    Xzibit Rootkit                                           [ Not found ]
    zaRwT.KiT Rootkit                                        [ Not found ]
    ZK Rootkit                                               [ Not found ]

[Press  to continue]


  Performing additional rootkit checks
    Suckit Rookit additional checks                          [ OK ]
    Checking for possible rootkit files and directories      [ None found ]
    Checking for possible rootkit strings                    [ None found ]

  Performing malware checks
    Checking running processes for suspicious files          [ None found ]
    Checking for login backdoors                             [ None found ]
    Checking for suspicious directories                      [ None found ]
    Checking for sniffer log files                           [ None found ]
    Suspicious Shared Memory segments                        [ None found ]

  Performing Linux specific checks
    Checking loaded kernel modules                           [ OK ]
    Checking kernel module names                             [ OK ]

[Press  to continue]


Checking the network...

  Performing checks on the network ports
    Checking for backdoor ports                              [ None found ]
    Checking for hidden ports                                [ None found ]

  Performing checks on the network interfaces
    Checking for promiscuous interfaces                      [ None found ]

Checking the local host...

  Performing system boot checks
    Checking for local host name                             [ Found ]
    Checking for system startup files                        [ Found ]
    Checking system startup files for malware                [ None found ]

  Performing group and account checks
    Checking for passwd file                                 [ Found ]
    Checking for root equivalent (UID 0) accounts            [ None found ]
    Checking for passwordless accounts                       [ None found ]
    Checking for passwd file changes                         [ None found ]
    Checking for group file changes                          [ None found ]
    Checking root account shell history files                [ OK ]

  Performing system configuration file checks
    Checking for an SSH configuration file                   [ Found ]
    Checking if SSH root access is allowed                   [ Not allowed ]
    Checking if SSH protocol v1 is allowed                   [ Not allowed ]
    Checking for a running system logging daemon             [ Found ]
    Checking for a system logging configuration file         [ Found ]
    Checking if syslog remote logging is allowed             [ Not allowed ]

  Performing filesystem checks
    Checking /dev for suspicious file types                  [ None found ]
    Checking for hidden files and directories                [ Warning ]

[Press  to continue]

System checks summary
=====================

File properties checks...
    Files checked: 144
    Suspect files: 0

Rootkit checks...
    Rootkits checked : 378
    Possible rootkits: 0

Applications checks...
    All checks skipped

The system checks took: 6 minutes and 46 seconds

All results have been written to the log file: /var/log/rkhunter.log

One or more warnings have been found while checking the system.
Please check the log file (/var/log/rkhunter.log)

Checking for hidden files and directories [ Warning ]

dettagli relativi al warning file /var/log/rkhunter.log

Viene evidenziata la presenza della cartella nascosta  .java che non rappresenta in questo caso non rappresenta un fattore critico.

 

rkhunter lista dei tests

 rkhunter --list tests

Current test names:
    additional_rkts all apps attributes avail_modules deleted_files
    filesystem group_accounts group_changes hashes hidden_ports hidden_procs
    immutable known_rkts loaded_modules local_host malware network
    none os_specific other_malware packet_cap_apps passwd_changes ports
    possible_rkt_files possible_rkt_strings promisc properties rootkits running_procs
    scripts shared_libs shared_libs_path startup_files startup_malware strings
    suspscan system_commands system_configs trojans

Grouped test names:
    additional_rkts => possible_rkt_files possible_rkt_strings 
    group_accounts  => group_changes passwd_changes 
    local_host      => filesystem group_changes passwd_changes startup_malware system_configs 
    malware         => deleted_files hidden_procs other_malware running_procs suspscan 
    network         => hidden_ports packet_cap_apps ports promisc 
    os_specific     => avail_modules loaded_modules 
    properties      => attributes hashes immutable scripts 
    rootkits        => avail_modules deleted_files hidden_procs known_rkts loaded_modules other_malware possible_rkt_files possible_rkt_strings running_procs suspscan trojans 
    shared_libs     => shared_libs_path 
    startup_files   => startup_malware 
    system_commands => attributes hashes immutable scripts shared_libs_path strings 

 

Risorse:

Installare WINE 4.0 in debian 9.xx ( Stretch )

   E’ stato rilasciata  il 22 gennaio 2019 la versione stable di Wine 4.0.   Wine,  dall’acronimo  Wine is Not an Emulator,  è il noto programma per Linux  che consente di eseguire programmi per Windows sotto Linux appunto, MAC e altri SO.  Questa nuova versione che ha richiesto un anno di sviluppo introduce miglioramenti significativi in ambito grafico che si faranno apprezzare nei giochi. Supporto alle API  Vulcan, migliorato il supporto OpenGL, avviato supporto Direct3D 12,… Phoronix evidenzia miglioramenti nella compatibilità con il software a 64 bit.  E’ possibile riscontrare i miglioramenti di questa nuova versione al seguente indirizzo WineHQ release notes.

Se si desidera installare la nuova versione Wine 4.0 in Debian 9.xx e necessario abilitare il repository specifico di WineHQ. In dicembre ( 19-12-2018 ) è stata cambiata la chiave del repository. Quindi è necessario scaricare e installare la nuova key.

Installazione

Conviene iniziarel procedura di installazione passando a root con

su  oppure sudo su

Abilitare l’architettura a 32 bit

dpkg --add-architecture i386

Scaricare e installare la nuova repository key.

wget -nc https://dl.winehq.org/wine-builds/winehq.key
apt-key add winehq.key

Una volta installata la nuova key aggiungere il repository winehq per debian stretch alla lista dei repository.
Questo può essere conseguito creando uno specifico file di tipo  .list in /etc/apt/sources.list con

echo "### winehq  repository" > /etc/apt/sources.list.d/winehq.list
echo "deb https://dl.winehq.org/wine-builds/debian/ stretch main" >> /etc/apt/sources.list.d/winehq.list

 

Il repository può essere aggiunto anche  inserendo la riga seguente nel file principale per gli archivi dei pacchetti: /etc/apt/sources.list

deb https://dl.winehq.org/wine-builds/debian/ stretch main

Considerato che viene utilizzzato un repository https potrebbe essere necessaria l’installazione del pacchetto  apt-transport-https.

in fase di uptade il messaggio che segue richiamerà la necessità di installare apt-trasport-https :

 
Reading package lists... Done
E: The method driver /usr/lib/apt/methods/https could not be found.
N: Is the package apt-transport-https installed?
E: Failed to fetch https://dl.winehq.org/wine-builds/debian/dists/stretch/InRelease

apt install

Per poter scaricare i pacchetti del nuovo repository aggiornare al solito con

apt install apt-transport-https

Wine 4.0 è disponibile in 3 varianti. In genere è consigliabile installare la versione stable  con

apt install --install-recommends winehq-stable

Se si verificano problemi per dipendenza mancanti.
Installare i pacchetti mancanti e ripetere i due ultimi passaggi (apt update) e  (apt install –install-recommends winehq-stable)
Esempi di dipendenze mancanti

 
The following packages have unmet dependencies:
winehq-stable : Depends: wine-stable (= 3.0.4~stretch)
E: Unable to correct problems, you have held broken packages.

root@deb35b2:/home/maurizio# apt-get install wine-stable
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
wine-stable : Depends: wine-stable-i386 (= 3.0.4~stretch)
E: Unable to correct problems, you have held broken packages.
root@deb35b2:/home/maurizio# sudo apt-get install wine-stable-i386
...

Uscire da livello super user root

exit

 

Winecfg

Avviando da terminale winecfg lo strumento di configurazione di Wine l’aspettativa è che risulti selezionata la versione Windows 7

winecfg

Alcuni degli strumenti principali di Wine come wine-mono e wine-gecko verranno installati al momento dell’installazione di una applicazione.

Wine-Mono

Wine-Mono è  l’implementazione open source di NET. Framework.

 

Wine-Gecko

Wine-Gecko browser web utile per le applicazioni che accedono e visualizzano un sito internet. E’ la versione propria di wine di Internet Explorer  browser basata su una versione custmo di Mozilla’s Gecko Layout Engine.

 

 

Installare Fonts Windows in Wine

Per avere disponibili in WINE i fonts Windows è possibile copiare
ad esempio i fonts di windows 7 nella seguente cartella della home

.wine/drive_c/windows/Fonts

 

Fonts Windows 7 sono disponibili anche all’url https://www.w7df.com/7/download.html

 

Risorse:

 

youtube-dl ERROR: “token” parameter not in video info for unknown reason;

Aggiornamento 2019/07

Quando si effettua il download di un video con youtube-dl può verificarsi che lo stesso non vada a buon fine e si presenti l’errore:
ERROR: “token” parameter not in video info for unknown reason; Make sure you are using the latest version; see https://yt-dl.org/update on how to update. Be sure to call youtube-dl with the –verbose flag and include its complete output.

Come si legge nel messaggio accertarsi di disporre dell’ultima versione del programma.  Visti i continui cambiamenti in youtube questa è l’unica soluzioni per disporre di una versione di youtube-dl efficace. Gli aggiornamenti sono frequenti.

In debian9.xx ad esempio la versione presente nei repository e quella del 2017

# youtube-dl --version
2017.05.18.1
# whereis youtube-dl 
youtube-dl: /usr/bin/youtube-dl

Le instruzioni per il download dell’ultima versione sono reperibili alla pagina  http://ytdl-org.github.io/youtube-dl/download.html.

Visto che si tratta di un singolo file, se si desidera conservare la vecchia del repository ufficiale, si può utilizzare un nome diverso per l’ultima versione  ( last) ad esempio youtube-dll

Effettuare il download da terminale con curl oppure wget la directory di destinazione consigliata è /usr/local/bin in nome è leggermente cambiato in youtube-dll

# sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dll

# sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dll

conferire i permessi per di esecuzione

chmod a+rx /usr/local/bin/youtube-dll

per controllare versione e posizione del nuovo comando

# youtube-dl --version
2019.07.02
# whereis youtube-dll 
youtube-dll: /usr/local/bin/youtube-dll
 

Dettagli Error youtube-dl

# youtube-dl https://www.youtube.com/watch?v=F2s8U9p-ej4
F2s8U9p-ej4: Downloading webpage
F2s8U9p-ej4: Downloading video info webpage
ERROR: F2s8U9p-ej4: "token" parameter not in video info for unknown
reason; please report this issue on https://yt-dl.org/bug . Make sure
you are using the latest version; see https://yt-dl.org/update on how to
update. Be sure to call youtube-dl with the --verbose flag and include
its complete output.
Altro errore

ERROR: Signature extraction failed: Traceback (most recent call last)  …
RegexNotFoundError: Unable to extract Initial JS player signature function name; …
in youtube-dl

youtube-dl https://www.youtube.com/watch?v=LYhrYHmUPn
  Setting language
  LYhrYHmUPn0: Downloading webpage
  LYhrYHmUPn0: Downloading video info webpage
  LYhrYHmUPn0: Extracting video information
  LYhrYHmUPn0: Encrypted signatures detected.
  LYhrYHmUPn0: Downloading js player vfljL8ofl
 ERROR: Signature extraction failed: Traceback (most recent call last):
 File "/usr/lib/python2.7/dist-packages/youtube_dl/extractor/youtube.py", line 479, in _decrypt_signature
 video_id, player_url, s
 File "/usr/lib/python2.7/dist-packages/youtube_dl/extractor/youtube.py", line 383, in _extract_signature_function
 res = self._parse_sig_js(code)
 File "/usr/lib/python2.7/dist-packages/youtube_dl/extractor/youtube.py", line 454, in _parse_sig_js
 u'Initial JS player signature function name')
 File "/usr/lib/python2.7/dist-packages/youtube_dl/extractor/common.py", line 391, in _search_regex
 raise RegexNotFoundError(u'Unable to extract %s' % _name)
 RegexNotFoundError: Unable to extract Initial JS player signature function name; please report this issue on https://yt-dl.org/bug . Be sure to call youtube-dl with the --verbose flag and include its complete output. Make sure you are using the latest version; type youtube-dl -U to update.
 ; please report this issue on https://yt-dl.org/bug . Be sure to call youtube-dl with the --verbose flag and include its complete output. Make sure you are using the latest version; type youtube-dl -U to update.

Risorse:

Prime video su debian 9.xx

Aggiornato 5-2019

Nel visualizzare i video di Primevideo utilizzando Sistemi Operativi Linux come Debian è piuttosto frequente incorrere nell’errore:

I video presenti in primevideo  fanno uso dell Encrypted Media Extensions ( EME), una forma di Digital Right Management (DRM).
In assenza  di questa estensione si ottiene questo warning relativo ai diritti digitali che evidenzia l’assenza del modulo Widevine Content Decryption.

Questa l’estensione Widevine in Firefox una volta installata.

Può capitare che anche premendo il pulsante [Enable DRM] non si riesca ad installare l’estensione per un problema di compatibiltà legato alla versione del browser.

In genere se si dispone della versione più recente dei browser Firefox l’installazione dell’estensione Widevine avviene automaticamente e l’abilitazione DRM avviene senza problemi.  Per questo motivo potrebbe essere conveniente utilizzare la versione più recente del browsers Firefox che è disponibile nel hub snap. Snappy sistema per la gestione di pacchetti e di distribuzione del software

Inconveniente è che snappy mangia spazio disco e l’avvio delle applicazioni risulta più lento. Questo si verifica perchè uno snap  utilizza un processo che risulta isolato dagli altri processi. Se da un lato si evitano così i  conflitti di dipendenza tra le applicazioni dall’altro si potranno avere, in snaps diversi, più copie  delle stesse librerie e/o programmi e le dimensioni dei pacchetti risulteranno in media decisamente più grandi.

Tuttavia in più di qualche occasione questi svantaggi possono essere compensati anche dalla comodità di avere due versioni diverse dello stesso browser.

installato snap con

apt install snapd

firefox si installa facilmente con

snap install firefox

 

Al termine dell’istallazione si avrà a disposizione oltre alla versione Firefox ESF ad esempio 60.6 ( Debian stretch stable  )

anche la Firefox 66.0.3 ( Hub snap )

una volta loggati su primevideo al primo avvio di un video apparirà il alto la barra gialla con il pulsante per l’abilitazione DRM

Premuto il pulsante enable DRM  verrà visualizzato il messaggio di installazione in corso

Se si utilizza la procedura descritta in Add-onn avremo due plugins: OpenH264 Video Codec e Widevine Content Decription.

Il plugin risulta già impostato come Always Activate.ò premendo preferences si ottiene

Il plugin widevine, utilizzato anche da altri servizi ad esempio Netflix, come si legge nella description abilità il playback dei media crittografatia in accordo con l’Encrypted Media Extensions (EME).   Maggiori informazioni nel sito http://www.W3.org

 

Risorse: