Rpikernelhack nedir?


96

apt-get upgradeRPI 3'de bir işlem yaparken , birçok çıktı satırı şöyle görünür:

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'
...
...
...

Linux çekirdeği özellikleri konusunda çok eğitimli değilim ve bu RPI'ya özgü görünüyor.

Sorum şu: Bütün bunlar nedir?

Bir sapma nedir? Başvuruda bulunulan tüm bu dosyalar (grup olarak) aslında ne yapıyor? 'Rpikernelhack' nedir?

Biraz googling yaptım ve kolayca ilginç bir şey bulamadım. Sanırım bunu merak eden sadece ben değilim, umarım bu uygun bir sorudur!


3
Kesinlikle merak eden sadece biri değil - bilmek de isterim.
joan

Ben de. Yaparken çok uzun zaman aldı apt-get upgrade.
Kong Chun Ho

2
Muhtemelen düşündüğün kadar heyecan verici değil - bence buradaki "kesmek" paket yönetim sisteminde, çekirdeğinde değil. debian.org/doc/debian-policy/ap-pkg-diversions.html
goldilocks

İşte bir örnek verilmektedir preinstparçası: dpkg-divert --package rpikernelhack --divert /usr/share/rpikernelhack/kernel.img /boot/kernel.img. @goldilocks 'link --packageaçık bir şekilde açıklıyor .
PNDA,

2
@qbicdesign Bence "kesmek" kelimesini anlamanıza bağlı . Yaygın olarak kullanılan bir kullanım, bir soruna belki de ideal veya uygun bir çözüm olmayan bir şeye atıfta bulunmak, ancak en azından bir tutam veya en az çabayla işe yarayan bir şeydir; bir şeye bir çözüm değil, ancak ortak tema "yanlış", "yanlış bir şey değil, belki de zekice değil" şeklinde bir şey kullanarak "uygun" olacaktır.
goldilocks

Yanıtlar:


69

"rpikernelhack", sahte bir paket adı ve ahududu Pi vakfının bir yağ32 bölümü yapmaya / başlatmaya karar vermesi gerçeği üzerinde çalışmak için bir kesmenin parçası olarak kullanılan (bir soruna kirli ama uygun bir çözüm anlamında) kullanılan bir dizin adıdır. dpkg ise fat32 ile iyi geçinmiyor. Daha sonra başkaları tarafından rafine edilmiş olsa da, başlangıçta fikri bulan bendim.

dpkg, fat32 bölümüne yeni dosyalar yükler (yol boyunca bazı uyarılar yayınlar), ancak fat32 bölümünde varolan bir dosyayı güncellemeye çalışırsa başarısız olur (bir eski bağlantıyı bir hardlink oluşturarak yedeklemeye çalışır. ve fat32 hardlinks desteklemiyor).

İnsanlar (ben de dahil olmak üzere) Pi çekirdeklerinin ve belleniminin deb paketlerini yapmaya çalıştıklarında, bu problemle karşılaştılar, bir paket başlangıçta kuracaktı ama yükseltmeye çalışmak başarısız olacaktı.

Geçici çözümüm (ab) dpkg içindeki "diversiyon" özelliğini kullanmaktı. Bu özellik, dosyaların başka bir paketin yerel olarak değiştirilmiş sürümleriyle veya sürümleriyle değiştirilebilecekleri şekilde yönlendirilmesine izin vermeyi amaçlıyordu, ancak ben bunu dpkg'ın kurulum görevlerini yerine getirecek şekilde bakımcı komut dosyalarından kullanabildim. Linux bölümleyin ve ardından dosyayı sonunda son konumuna taşıyın.

Saptırmalar ya bir "paket adı" veya "yerel" belirtmenizi gerektirir. Bir paket adı belirlerseniz, sapma belirttiğiniz hariç tüm paketlerin sahip olduğu dosyaları etkiler (burada amaç bir paketin başka bir paketin sahip olduğu bir dosyayı yönlendirmesini ve sonra kendi sürümlerini yüklemesini sağlamaktır). Dosyaları yönlendirecek bir dizine de ihtiyacım vardı.

Takılan çekirdek paketinin adının kullanılması, kesmeyi etkisiz hale getirirdi. Yerel sysadmin tarafından kullanılmak üzere ayrılmış olması gerektiği için "yerel" i kullanmak da yanlış göründü. Bu yüzden hiçbir şeyle çakışma ihtimali olmayan sahte bir paket adına ihtiyacım vardı. "Rpikernelhack" ile geldim, aynı dizeyi de bu dizgede kullandım.


4
Bu cevap için çok teşekkür ederim. Tasarım ve adlandırma kararları konusunda çok anlayışlıydı. İnternet, söz konusu bu özel parça üzerinde çalışan adamdan yanıt alabilmem için benim için sihirli bir yer.
MD-7

RPI'mi yeni güncelliyordum ve bu tuhaf günlüğü merak ediyordum, netlik için teşekkürler.
schlump

Dpkg'nin FAT32 ile güzelce oynatılması daha temiz olmaz mıydı. İşte önerdiğim MR: salsa.debian.org/cklein-guest/dpkg/merge_requests/1/diffs
user1202136

43

Sadece Linux çekirdeğine bir Raspberry Pi'ye özgü yama seti oluşturan geliştiriciler tarafından verilen dizin adı.

Raspbian geliştiricileri tarafından FAT2016 çekirdeğinde bulunan bir dosya sistemi bozulma sorununu düzeltmek bir düzeltmedir , bu durum 2017 çekirdeğine güncellenir ve endişelenecek bir şey değildir. Bu çekirdek güncellemesini yapmak sudo apt install -fiçin, hatanın neden olduğu bağımlılık sorunlarını gidermek için kullanmanız gerekir ( -fbu bağlamda, man sayfasına göre, şu anlama gelir apt-get(8):

-f, --fix kırılmış
Düzeltme; kopmuş bağımlılıkları olan bir sistemi düzeltmeye çalışın. ...

)


0

FWIW, bu, 2019-02-28 tarihinde bir rpi3b + koşu bandı üzerinde güncelleme güncellemesi yaptığımda tekrar ortaya çıktı. 182 çeşit sapma çizgisi ... rpikernalhack ... ki burada bir örnek:

Preparing to unpack .../17-raspberrypi-kernel_1.20190215-1_armhf.deb ...
Adding 'diversion of /boot/bcm2708-rpi-0-w.dtb to /usr/share/rpikernelhack/bcm2708-rpi-0-w.dtb by rpikernelhack'
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-plus.dtb to /usr/share/rpikernelhack/bcm2710-rpi-3-b-plus.dtb by rpikernelhack'

...
...

Eğer yardımcı olursa, bir saat önce bir güncelleme yaptım ve üretti (2) Hash toplamı uyuşmazlıkları. Belki de tam olarak depo güncellendiydi. Yeniden başlattım, bir saat bekledim ve ikinci güncelleme güncellemesini yaptım, Hash toplamı uyuşmazlıkları yoktu ve o zaman da 182 çeşit sapma çizgisine ulaştığımda ... rpikernalhack.

Ortaya çıkan sürüm:

pi@___:~ $ uname -a
Linux ISS 4.14.79-v7+ #1159 SMP Sun Nov 4 17:50:20 GMT 2018 armv7l GNU/Linux
pi@___:~ $

Tabii ki 'güncelleme güncellemesi' derken, demek istediğim ...

sudo apt-get update
sudo apt-get upgrade

Bunu, garip bir şekilde, bir cevap olarak, uzunluğundan dolayı, seçilen cevabı zenginleştireceğini umarak, bu tarz bir şeyin bir önceki yıla ait tek seferlik bir düzeltme olmadığını gösterdim.


1
Yükseltmenizin neden eski bir çekirdekle sona erdiğini anlamıyorum. Geçerli çekirdek 4.14.98-v7 + .
Ingo

Güncelleme güncellemesi yaptım ve birkaç dakika önce yeniden başlattım. Şimdi çekirdek: Linux ISS 4.14.98-v7 + # 1200 SMP Salı 12 Şub 20:27:48 GMT 2019 armv7l GNU / Linux Bunun için açıklamalarım yok, benim yazımda belirtildiği gibi bir depo güncellemesi sırasında ilk güncellemeyi yapmaktaydı (dolayısıyla Hash toplamı uyuşmuyor mu?). İkinci güncellemede henüz 4.14.98-v7 + mevcut değildi veya çekirdeği güncellemeden önce güncellemek için daha fazla dosya var mıydı? Bilmiyorum. Yapıyor musun? İşaret etmek için TY.
always_learning

Hayır, hiçbir fikrim yok. Belki de depo yeni güncellendi ve tutarsız bir durumda? Neyse ...
Ingo,

Gelecekte bu olasılığın farkında olacağım.
always_learning
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.