La tua citazione su Wikipedia,
Sebbene ci sia l'idea sbagliata popolare che il
bz
prefisso significa che viene utilizzata la compressione bzip2 [...], non è così.
dice l'opposto della tua teoria:il bz
in bzImage
non ha alcuna relazione con bzip2
e bzImage
non deve essere compresso con bzip2
. Infatti, la modalità di compressione predefinita del kernel è ancora gzip
, e ci sono poche ragioni per usare bzip2
al giorno d'oggi — è più lento di LZMA e xz
ma non si comprime altrettanto bene.
Per determinare in modo definitivo quale compressione è stata utilizzata per una data immagine del kernel, senza bisogno di eseguirla o trovarne la configurazione, puoi seguire l'approccio utilizzato dal extract-vmlinux
del kernel stesso script:
-
cerca la firma del compressore nell'immagine:
gunzip
:\037\213\010
xz
:\3757zXZ\000
bzip2
:BZh
lzma
:\135\0\0\0
lzo
:\211\114\132
lz4
:\002!L\030
zstd
:(\265/\375
-
prova a estrarre i dati dall'immagine, iniziando dall'offset di qualsiasi firma che hai trovato;
- controlla che il risultato (se presente) sia un'immagine ELF.
Ho adattato lo script qui in modo che riporti solo il tipo di compressione. Non lo includo qui perché è concesso in licenza solo con GPL 2.
Puoi vedere quali metodi di compressione sono supportati dal tuo kernel. Solo uno può essere selezionato, quindi questo dimostrerà qual è.
Qui sto usando gzip:
$ zgrep CONFIG_KERNEL_ /proc/config.gz
CONFIG_KERNEL_GZIP=y
# CONFIG_KERNEL_BZIP2 is not set
# CONFIG_KERNEL_LZMA is not set
# CONFIG_KERNEL_XZ is not set
# CONFIG_KERNEL_LZO is not set
# CONFIG_KERNEL_LZ4 is not set