2011-12-12 19 views
12

İlk açılış ve sonraki botlar için bunu bilmek isterim.Linux çekirdeği, önyükleme sırasında hangi sürücülerin yükleneceğini biliyor?

Kendi çekirdeğimi derliyorum ve mümkün olduğunca yalın olmasını istiyorum. .Config dosyasını el ile (temel olarak bir öğrenme deneyimi olarak) oluşturmak istiyorum, bu yüzden hariç tutulabilecek her şeyi bilmem gerekiyor. Olası bir çözümün şu an yüklü dağıtımlar listesine bakmak olduğunu biliyorum. Ancak, dağıtımımın başlangıçta hangi sürücülerin yükleneceğini keşfettiğimi merak ediyorum.

TIA.

+3

Bunu tahmin etmek, http://unix.stackexchange.com için daha iyi bir soru olurdu. – ziesemer

+0

http://doc.opensuse.org/documentation/html/openSUSE_113/opensuse-reference/cha.udev.html – firo

cevap

3

Greg Kroah, çekirdek için gereken sürücülerin tam olarak nasıl bulunacağına dair mükemmel bir örnektir. Lütfen Greg adlı kitabında Linux çekirdeği açılışta yüklemek için hangi sürücülerin biliyor nasıl uzak çevrim

http://files.kroah.com/lkn/

bir alıntı için Greg kitaplarında

I'm especially proud of the chapter on how to figure out how to configure 
a custom kernel based on the hardware running on your machine. This is an 
essential task for anyone wanting to wring out the best possible speed and 
control of your hardware. 
+0

Cevabınız için teşekkürler Adrian. Şu an kitabın 7. bölümü ile çalışıyorum. Greg Kroah, şu anda çalışan çekirdek tarafından hangi modüllerin yüklendiğini keşfetme sürecini detaylandırıyor - ki bu çok değerli. Merak ettiğim şey, OS'nin bu modülleri ilk etapta nasıl yükleyeceğini biliyor mu? – izzy

+0

ASAIK Kaba kuvvet genellikle - yüklemeyi dener - eğer çalışmazsa donanım muhtemelen orada değildir. –

12

dan verir?

Kernel, örn. takılıyken PCI veriyolu (sıcak ya da soğuk; kullanıcı alanı AFAIR çalıştırana kadar olaylar sıraya konur). udev bu olayları alacak ve cihaz (lar) ın PID/VID'sini (ürün/satıcı ID'leri) içeren modprobe çağrıları yapacak; Bu genellikle içinde bir * ile bir dizedir. modprobe, daha sonra, udev'in yükleme isteği joker karakteriyle ifade edilen kümenin kesişimini ve çekirdek modüllerinin takma adlarını (muhtemelen olası joker karakterler) hesaplayacaktır. USB/Firewire/etc'den beri

. Kontrolörler genellikle PCI veriyoluna bağlanır, HCI sürücünüz bu şekilde yüklenir. İşler böyle yavaşlar; yükleme işlemi USB/Firewire PID/VID'ler ile yapılır. Bununla birlikte, ağ protokol modülleri (örneğin, ipv6), udev aracılığıyla ele alınmamaktadır; bunun yerine, bir program socket(AF_INET6, ...)'u çağırdığında, çekirdek doğrudan proaktif olmayan bir alias ile (daha doğrusu: /proc/sys/kernel/modprobe içinde ne olursa olsun) IPv6 için net-pf-10 numaralı telefonla çağıran modprobu çağırır, çünkü AF_INET6 değeri 10 değerine sahip olur. modprobe daha sonra ipv6.ko yükler. net-pf-10 diğer adlar nedir?

Benzer dosya sistemleri için, mount -t foo teşebbüs da ( ____call_usermodehelper aracılığıyla, tekrar) modprobe çağırmak için çekirdek, argüman olarak foo bu kez neden olur. zaten yüklü değilse, aygıt düğümlerine erişim (örneğin, /dev/loop0, zaten var ise) aynı stratejiye sahiptir. Buradaki çekirdek, block-major-7-0 talep eder (çünkü loop0 genellikle (7,0), bkz. ls -l) ve loop.ko, block-major-7-* takma parçasına sahiptir.

+0

Modüller gibi bir dosya yok mu.syms, önyükleme sırasında yüklenecek aygıtı listeler? – brokenfoot

İlgili konular