Saat melakukan apt-get upgrade
RPi 3 saya, banyak garis keluaran muncul seperti ini:
Adding 'diversion of /boot/bcm2708-rpi-b-plus.dtb to /usr/share/rpikernelhack/bcm2708-rpi-b-plus.dtb by rpikernelhack'
Adding 'diversion of /boot/bcm2708-rpi-b.dtb to /usr/share/rpikernelhack/bcm2708-rpi-b.dtb by rpikernelhack'
Adding 'diversion of /boot/bcm2708-rpi-cm.dtb to /usr/share/rpikernelhack/bcm2708-rpi-cm.dtb by rpikernelhack'
Adding 'diversion of /boot/bcm2709-rpi-2-b.dtb to /usr/share/rpikernelhack/bcm2709-rpi-2-b.dtb by rpikernelhack'
Adding 'diversion of /boot/bcm2710-rpi-3-b.dtb to /usr/share/rpikernelhack/bcm2710-rpi-3-b.dtb by rpikernelhack'
Adding 'diversion of /boot/kernel.img to /usr/share/rpikernelhack/kernel.img by rpikernelhack'
Adding 'diversion of /boot/kernel7.img to /usr/share/rpikernelhack/kernel7.img by rpikernelhack'
Adding 'diversion of /boot/COPYING.linux to /usr/share/rpikernelhack/COPYING.linux by rpikernelhack'
...
...
...
Saya tidak terlalu terdidik tentang fitur-fitur kernel Linux dan ini terlihat cukup spesifik untuk RPi.
Pertanyaan saya adalah: Ada apa ini?
Apa itu 'pengalihan'? Apa yang sebenarnya dilakukan semua file ini (sebagai grup) yang direferensikan? Apa itu 'rpikernelhack'?
Saya melakukan sedikit googling dan tidak dapat dengan mudah menemukan sesuatu yang menarik. Saya pikir saya bukan satu-satunya yang penasaran tentang ini jadi saya harap ini adalah pertanyaan yang tepat!
apt-get upgrade
.preinst
bagian:dpkg-divert --package rpikernelhack --divert /usr/share/rpikernelhack/kernel.img /boot/kernel.img
. Tautan @goldilocks menjelaskan--package
dengan jelas.Jawaban:
"rpikernelhack" adalah nama paket palsu dan nama direktori yang digunakan sebagai bagian dari peretasan (dalam arti solusi yang kotor namun perlu untuk suatu masalah) untuk mengatasi kenyataan bahwa yayasan Raspberry Pi memutuskan untuk membuat / mem-boot partisi fat32 dan dpkg tidak cocok dengan fat32. Saya adalah orang yang awalnya datang dengan ide itu, meskipun kemudian disempurnakan oleh orang lain.
dpkg akan menginstal file baru ke partisi fat32 (memuntahkan beberapa peringatan di sepanjang jalan), tetapi jika ia mencoba memperbarui file yang ada pada partisi fat32 ia akan gagal (iirc ia mencoba membuat cadangan file lama dengan membuat hardlink dan fat32 tidak mendukung hardlink).
Ketika orang-orang (termasuk saya) mulai mencoba untuk membuat paket deb kernel Pi dan firmware yang mereka temui dalam masalah ini, sebuah paket akan menginstal pada awalnya tetapi mencoba untuk memutakhirkannya akan gagal, aduh.
Solusi saya adalah (ab) menggunakan fitur "pengalihan" dalam dpkg. Fitur ini dimaksudkan untuk memungkinkan file untuk dialihkan sehingga mereka dapat diganti dengan versi atau versi yang dimodifikasi secara lokal dari paket lain, tetapi saya dapat menggunakannya dari skrip pengelola sedemikian rupa sehingga dpkg akan melakukan tugas instalasi pada sebuah Partisi Linux dan kemudian memindahkan file ke lokasi terakhir di akhir.
Pengalihan mengharuskan Anda menentukan "nama paket" atau "lokal". Jika Anda menentukan nama paket maka pengalihan akan memengaruhi file yang dimiliki oleh semua paket kecuali yang Anda tentukan (maksudnya di sini adalah untuk memungkinkan suatu paket untuk mengalihkan file yang dimiliki oleh paket lain dan kemudian menginstal versinya sendiri). Saya juga membutuhkan direktori untuk mengalihkan file.
Menggunakan nama paket kernel yang sedang diinstal akan membuat peretasan tidak efektif. Menggunakan "lokal" juga tampak salah, karena itu seharusnya disediakan untuk digunakan oleh sysadmin lokal. Jadi saya membutuhkan nama paket palsu yang tidak mungkin bertentangan dengan apa pun. Saya datang dengan "rpikernelhack", saya juga menggunakan string yang sama untuk nama direktori.
sumber
Itu hanya nama direktori yang diberikan oleh pengembang yang telah membuat satu set tambalan khusus Raspberry Pi ke kernel Linux.
Ini adalah perbaikan oleh pengembang Raspbian untuk memperbaiki
FAT
masalah korupsi sistem file yang ada di kernel 2016, ini pembaruan untuk kernel 2017 dan tidak perlu dikhawatirkan. Untuk membuat update kernel ini Anda perlu menggunakansudo apt install -f
untuk memperbaiki masalah ketergantungan yang disebabkan oleh bug (yang-f
dalam konteks ini berarti, menurut halaman manual,apt-get(8)
:)
sumber
FWIW, ini terjadi lagi ketika saya melakukan pembaruan pada 2019-02-28 pada rpi3b + running stretch. 182 baris pengalihan ... rpikernalhack ... di mana di sini adalah contoh:
Jika itu membantu, satu jam sebelumnya saya melakukan pembaruan pembaruan dan menghasilkan (2) ketidakcocokan jumlah Hash. Mungkin justru karena repositori sedang diperbarui? Saya reboot, menunggu satu jam, dan melakukan pembaruan pembaruan kedua, tidak memiliki ketidakcocokan jumlah Hash, dan itu juga ketika saya mendapat 182 baris pengalihan ... rpikernalhack.
Versi yang dihasilkan:
Tentu saja ketika saya mengatakan 'perbarui pemutakhiran', maksud saya ...
Saya memposting ini, dengan canggung, sebagai jawaban, karena panjangnya, berharap itu akan memperkaya jawaban yang dipilih, menunjukkan bahwa hal semacam ini bukan 'perbaikan' satu kali dari tahun sebelumnya.
sumber