Imej ISO

Membandingkan Imej ISO

Membandingkan Imej ISO
Untuk menyiapkan dan menyelenggara peranti pengkomputeran, pengedar Linux secara berkala memberikan gambar ISO untuk dikeluarkan. Ini memudahkan sistem kami sentiasa dikemas kini dengan bantuan kompilasi penuh perisian yang benar-benar sesuai, dalam keadaan ideal.

Bayangkan bahawa anda mempunyai beberapa gambar ISO ini yang disimpan di dalam negara. Bagaimana anda mengetahui bahawa gambar ISO yang diambil adalah asli? Dalam artikel ini, kami menunjukkan kepada anda bagaimana untuk mengesahkan integriti dan keaslian gambar ISO yang telah dimuat turun sebelumnya, dan bagaimana mengetahui apakah perbezaan antara kandungan sebenar dua gambar ISO. Ini membantu anda mengesahkan proses pembinaan untuk imej ISO, dan membolehkan anda melihat apa yang mungkin telah berubah antara dua binaan, atau pelepasan yang tersedia.

Format gambar

Format gambar cakera mempunyai sejarah tersendiri [11]. Piawaian umum adalah ISO 9660 [12] yang menerangkan kandungan cakera optik secara keseluruhan. Yang digunakan adalah peluasan fail .iso untuk mengenal pasti fail gambar (salinan kloning).

Format ISO 9660 yang asli dilengkapi dengan sebilangan batasan seperti 8 peringkat direktori dan panjang nama fail. Batasan ini telah dikurangkan dengan pengenalan sejumlah peluasan seperti Rock Ridge [13] (pemeliharaan izin POSIX dan nama yang lebih panjang), Joliet [14] (penyimpanan nama Unicode di UCS-2), dan Sambungan Apple ISO 9660 [15] yang memperkenalkan sokongan HFS.

Untuk mendapatkan lebih banyak perincian mengenai file gambar, gunakan perintah 'file' diikuti dengan nama file data seperti berikut:

.Penyenaraian 1: Memaparkan perincian fail ISO

$ fail *.iso
debian-10.1.0-amd64-netinst.iso: Sektor boot DOS / MBR;
partition 2: ID = 0xef, start-CHS (0x3ff, 254,63), akhir-CHS (0x3ff, 254,63),
sektor permulaan 3808, 5664 sektor
xubuntu-18.04.3-desktop-amd64.iso: Sektor boot DOS / MBR;
partition 2: ID = 0xef, start-CHS (0x3ff, 254,63), akhir-CHS (0x3ff, 254,63),
pemula 11688, 4928 sektor $

Mengesahkan fail ISO yang dimuat turun

Pembekal perisian yang boleh dipercayai selalu menawarkan dua perkara untuk anda muat turun - gambar ISO sebenar dan juga senarai gambar yang sesuai untuk melakukan pemeriksaan integriti untuk fail yang dimuat turun. Yang terakhir ini membolehkan anda mengesahkan bahawa fail tempatan anda adalah salinan tepat dari fail yang ada di pelayan muat turun, dan tidak ada yang salah semasa memuat turun. Sekiranya berlaku kesalahan semasa memuat turun, fail tempatan rosak, dan boleh mencetuskan masalah rawak semasa pemasangan [16].

Selanjutnya, sekiranya imej ISO telah dikompromikan (seperti yang berlaku dengan Linux Mint pada awal 2016 [17]) kedua-dua checksum tidak akan sesuai. Anda boleh mengira checksum menggunakan 'md5sum' (tidak digunakan lagi, tidak lagi disyorkan) dan 'sha256sum' seperti berikut:

.Penyenaraian 2: Mengira checksum untuk fail ISO

$ md5sum *.iso
b931ef8736c98704bcf519160b50fd83 debian-10.1.0-amd64-netinst.iso
0c268a465d5f48a30e5b12676e9f1b36 xubuntu-18.04.3-desktop-amd64.iso
$ sha256sum *.iso
7915fdb77a0c2623b4481fc5f0a8052330defe1cde1e0834ff233818dc6f301e debian-10.1.0-amd64-netinst.iso
3c9e537ee1cf64088251e56b4ca1694944ad59126f298f24a78cd43af152b5b3 xubuntu-18.04.3-desktop-amd64.iso
$

Anda boleh meminta perbandingan antara fail checksum yang disediakan dan gambar ISO yang disimpan secara tempatan seperti yang ditunjukkan dalam senarai 3. Keluaran OK di hujung talian memberi isyarat bahawa kedua-dua checksum adalah sama.

.Penyenaraian 3: Bandingkan senarai semak yang disediakan

$ sha256sum - semak sha256sum.txt xubuntu-18.04.3-desktop-amd64.iso: OK
$

Membandingkan dua fail ISO yang disimpan secara tempatan

Mungkin berlaku bahawa anda telah memuat turun dua fail ISO, dan anda ingin mengetahui sama ada fail tersebut sama. Perintah 'sha256sum' berguna sekali lagi, dan kami mengesyorkan agar anda memasukkan cek ini dalam skrip shell. Dalam Penyenaraian 4, anda melihat skrip bash yang menggabungkan empat perintah 'sha256sum', 'cut', 'uniq', dan 'wc' untuk memisahkan lajur pertama untuk semua baris output, gabungkannya sekiranya serupa , dan hitung bilangan baris yang tinggal. Sekiranya kedua-dua fail ISO (atau lebih) sama maka checksumnya sama, hanya satu baris yang tersisa, dan skrip bash akan mengeluarkan mesej "failnya sama", akhirnya:

.Penyenaraian 4: Membandingkan checksum fail ISO secara automatik menggunakan 'sha256sum'

#!/ bin / bash
 
jika ['sha256sum *.iso | potong -d "-f1 | uniq | wc -l 'eq 1]
kemudian
gema "failnya sama"
yang lain
gema "failnya tidak serupa"
fi

Sekiranya skrip mengembalikan bahawa kedua-dua fail itu berbeza, anda mungkin berminat dengan kedudukan ketaksamaan yang tepat. Perbandingan pesanan byte dapat dilakukan dengan menggunakan perintah 'cmp' yang mengeluarkan byte pertama yang berbeza antara fail:

.Penyenaraian 5: Lihat perbezaan antara dua atau lebih fail menggunakan 'cmp'

$ cmp *.iso
debian-10.1.0-amd64-netinst.iso xubuntu-18.04.3-desktop-amd64.iso berbeza: bait 433, baris 4
$

Membandingkan kandungan sebenar

Setakat ini, kami melakukan perbandingan pesanan byte, dan sekarang kami akan melihat lebih dekat - kandungan sebenar fail ISO yang akan dibandingkan antara satu sama lain. Pada tahap ini sejumlah alat dimainkan yang dapat membantu membandingkan satu fail, keseluruhan struktur direktori serta arkib termampat, dan gambar ISO.
Perintah 'diff' membantu membandingkan direktori menggunakan dua suis '-r' (pendek untuk '-recursive') dan '-q' (pendek untuk '-brief') diikuti oleh dua direktori untuk dibandingkan antara satu sama lain. Seperti yang dilihat di

Penyenaraian 6, 'diff' melaporkan fail mana yang unik untuk kedua-dua direktori, dan jika fail dengan nama yang sama telah berubah.

.Penyenaraian 6: Membandingkan dua direktori menggunakan 'diff'

$ perbezaan -qr t1 / t2 /
Hanya di t1 /: blabla.pengesahan.
Fail t1 / nsswitch.conf dan t2 / nsswitch.conf berbeza.
Hanya dalam t2 /: pwd.pengesahan.
$

Untuk membandingkan dua imej ISO, pasangkan dua fail gambar tersebut ke direktori yang terpisah, dan pergi dari sana.
Output yang lebih berwarna pada baris perintah disediakan oleh alat 'colordiff' [1,2] dan 'icdiff' [18,19]. Gambar 1 menunjukkan output 'icdiff' di mana perbezaan antara dua fail 'nsswitch.conf 'diserlahkan sama ada hijau atau merah.

Gambar 1: Membandingkan dua direktori menggunakan 'icdiff'

Alat grafik untuk perbandingan direktori merangkumi 'fldiff' [5], 'xxdiff' [6] dan 'dirdiff' [7]. 'xxdiff' diilhamkan oleh 'fldiff', dan itulah sebabnya mereka kelihatan serupa. Entri yang mempunyai konten serupa disertakan dengan latar belakang putih atau kelabu, dan entri yang berbeza datang dengan latar belakang kuning muda, sebagai gantinya. Entri dengan latar kuning-hijau atau hijau terang adalah unik untuk direktori.

Gambar 2: Membandingkan dua direktori menggunakan 'fldiff'

'xxdiff' memaparkan perbezaan fail di tetingkap yang terpisah dengan mengklik entri (lihat Gambar 3).

Gambar 3: Membandingkan dua direktori menggunakan 'xxdiff'

Calon seterusnya adalah 'dirdiff'. Ia dibina berdasarkan fungsi 'xxdiff', dan dapat membandingkan hingga lima direktori. Fail yang ada di salah satu direktori ditandai dengan X. Menariknya, skema warna yang digunakan untuk tetingkap keluaran adalah sama dengan penggunaan 'icdiff' (lihat Gambar 4).

Gambar 4: Membandingkan dua direktori menggunakan 'dirdiff'

Membandingkan arkib termampat dan keseluruhan gambar ISO adalah langkah seterusnya. Walaupun arahan 'adiff' dari pakej 'atool' [10] mungkin sudah diketahui oleh anda, kami akan melihat perintah 'diffoscope' [8,9], sebagai gantinya. Ini menggambarkan dirinya sebagai "alat untuk sampai ke dasar apa yang membuat fail atau direktori berbeza. Ini berulang kali membongkar arkib pelbagai jenis dan mengubah pelbagai format binari menjadi bentuk yang lebih mudah dibaca oleh manusia untuk membandingkannya ". Asal alat ini adalah The Reproducible Builds Project [19,20] yang merupakan "satu set amalan pengembangan perisian yang membuat jalan yang dapat disahkan secara bebas dari sumber ke kod binari". Antara lain, ia menyokong format fail berikut:

* Fail APK Android dan gambar but
* Fail pangkalan data Berkeley DB
* Imej sistem fail Coreboot CBFS
* Debian .buildinfo dan .menukar fail
* Pakej sumber Debian (.dsc)
* Binari ELF
* Git repositori
* Imej CD ISO 9660
* Binari MacOS
* Kunci awam OpenSSH
* Arkib pakej OpenWRT (.ipk)
* PGP yang ditandatangani / dienkripsi
* Dokumen PDF dan PostScript
* RPM arkib chives

Gambar 5 menunjukkan output 'diffoscope' ketika membandingkan dua versi pakej Debian yang berbeza - anda akan melihat perubahan yang telah dibuat dengan tepat. Ini merangkumi kedua-dua nama fail dan kandungannya.

Gambar 5: Membandingkan dua pakej Debian menggunakan 'diffoscope' (petikan)

Penyenaraian 7 menunjukkan output 'diffoscope' ketika membandingkan dua gambar ISO dengan ukuran 1.9G setiap satu. Dalam kes ini, kedua-dua gambar ISO tersebut tergolong dalam Linux Mint Release 19.2 sedangkan satu fail gambar diambil dari pelayan Perancis, dan yang lain dari pelayan Austria (maka huruf 'fr' dan 'at'). Dalam beberapa saat, 'diffoscope' menyatakan bahawa kedua-dua fail itu sama.

.Penyenaraian 7: Membandingkan dua gambar ISO menggunakan 'diffoscope'

$ diffoscope linuxmint-19.2-xfce-64bit.fr.iso linuxmint-19.2-xfce-64bit.di.iso
| ################################################ ### | 100% Masa: 0:00:00
$

Untuk melihat di sebalik tabir, berguna untuk memanggil 'diffoscope' dengan dua pilihan '-debug' dan '-text -' untuk kedua-dua output verbose yang lebih banyak ke terminal. Ini membolehkan anda mengetahui apa yang dilakukan oleh alat tersebut. Penyenaraian 8 menunjukkan output yang sesuai.

.Penyenaraian 8: Di sebalik tabir 'diffoscope'

$ diffoscope --debug --text - linuxmint-19.2-xfce-64bit.fr.iso
linuxmint-19.2-xfce-64bit.di.iso
2019-10-03 13:45:51 D: diffoscope.utama: Memulakan diffoscope 78
2019-10-03 13:45:51 D: diffoscope.locale: Menormalkan lokal, zon waktu, dll.
2019-10-03 11:45:51 D: diffoscope.utama: Permulaan perbandingan
2019-10-03 11:45:51 D: diffoscope.kemajuan: Mendaftar < diffoscope.progress.ProgressBar object at 0x7f4b26310588> sebagai pemerhati kemajuan
2019-10-03 11:45:52 D: diffoscope.pembanding: Dimuat 50 kelas pembanding64bit.fr.iso ETA: -: -:--
2019-10-03 11:45:52 D: diffoscope.pembanding.perkakas.mengkhususkan: Fail yang tidak dikenali. Magic berkata: Sektor boot DOS / MBR; partition 2: ID = 0xef, start-CHS (0x3ff, 254,63), end-CHS (0x3ff, 254,63), pemula 652, 4672 sektor
2019-10-03 11:45:52 D: diffoscope.pembanding.perkakas.mengkhususkan: Fail yang tidak dikenali. Magic berkata: Sektor boot DOS / MBR; partition 2: ID = 0xef, start-CHS (0x3ff, 254,63), end-CHS (0x3ff, 254,63), pemula 652, 4672 sektor
2019-10-03 11:45:52 D: diffoscope.pembanding.perkakas.membanding: Membandingkan linuxmint-19.2-xfce-64bit.fr.iso (FilesystemFile) dan linuxmint-19.2-xfce-64bit.di.iso (FilesystemFile)
2019-10-03 11:45:52 D: diffoscope.pembanding.perkakas.fail: Perduaan.has_same_content: < linuxmint-19.2-xfce-64bit.fr.iso> < linuxmint-19.2-xfce-64bit.di.iso>
2019-10-03 11:45:53 D: diffoscope.pembanding.perkakas.bandingkan: has_same_content_as dikembalikan Benar; melangkau perbandingan lebih lanjut
| ################################################ ### | 100% Masa: 0:00:01
2019-10-03 11:45:53 D: diffoscope.tempfiles: Membersihkan 0 fail temp
2019-10-03 11:45:53 D: diffoscope.tempfiles: Membersihkan 0 direktori sementara
$

Baiklah, setakat ini, sangat bagus. Ujian seterusnya telah dilakukan pada gambar dari pelepasan yang berbeza dan dengan ukuran fail yang berbeza. Kesemuanya mengakibatkan ralat dalaman yang mengesan kembali ke perintah 'diff' yang kehabisan memori dalaman. Nampaknya ada had saiz fail sekitar 50M. Itulah sebabnya saya telah membina dua gambar yang lebih kecil masing-masing 10M, dan menyerahkannya kepada 'diffoscope' untuk perbandingan. Rajah 6 menunjukkan hasilnya. Keluarannya adalah struktur pohon yang mengandungi fail 'nsswitch.conf 'dengan perbezaan yang diketengahkan.

Gambar 6: Membandingkan dua gambar ISO menggunakan 'diffoscope'

Juga, versi HTML dari output dapat disediakan. Gambar 7 menunjukkan output sebagai fail HTML dalam penyemak imbas web. Ia dapat dicapai melalui suis

output --html.html '.

Gambar 7: Membandingkan dua gambar ISO menggunakan 'diffoscope' (output HTML)

Sekiranya anda tidak menyukai gaya output, atau ingin memadankannya dengan identiti korporat syarikat anda, anda boleh menyesuaikan output dengan fail CSS anda sendiri menggunakan gaya suis '-css.css 'yang memuat gaya dari fail CSS yang dirujuk.

Kesimpulannya

Mencari perbezaan antara dua direktori atau bahkan keseluruhan gambar ISO agak sukar. Alat yang ditunjukkan di atas membantu anda menguasai tugas ini. Jadi, selamat menggodam!

Terima kasih
Penulis ingin mengucapkan terima kasih kepada Axel Beckert atas bantuannya semasa menyiapkan artikel tersebut.

Pautan dan rujukan

* [1] colordiff
* [2] colordiff, pakej Debian,
* [3] diffutil
* [4] diffutils, pakej Debian,
* [5] fldiff
* [6] xxdiff
* [7] dirdiff
* [8] diffoscope
* [9] diffoscope, pakej Debian
* [10] atool, pakej Debian
* [11] Pengenalan ringkas mengenai beberapa format fail gambar biasa
* [12] ISO 9660, Wikipedia
* [13] Rock Ridge, Wikipedia
* [14] Joliet, Wikipedia
* [15] Sambungan Apple ISO 9660, Wikipedia
* [16] Cara mengesahkan gambar ISO, Linux Mint
* [17] Waspadalah terhadap ISO yang digodam jika anda memuat turun Linux Mint pada 20 Februari!
* [18] icdiff
* [19] icdiff, pakej Debian
* [20] Projek Binaan yang Boleh Dihasilkan
* [21] Projek Binaan yang Boleh Dihasilkan, Debian Wiki

Cara memuat turun dan Mainkan Sid Meier's Civilization VI di Linux
Pengenalan permainan Civilization 6 adalah konsep moden mengenai konsep klasik yang diperkenalkan dalam siri permainan Age of Empires. Idea itu cukup ...
Cara Memasang dan Memainkan Doom di Linux
Pengenalan Doom Seri Doom berasal dari tahun 90an selepas pembebasan Doom yang asal. Ini adalah hit seketika dan sejak saat itu dan seterusnya siri pe...
Vulkan untuk Pengguna Linux
Dengan setiap kad grafik generasi baru, kami melihat pembangun permainan mendorong had kesetiaan grafik dan semakin dekat dengan fotorealisme. Tetapi ...