ed eccoci alla mia quotidiana rubrica "come diavolo funziona il nostro amato pingu?"
ciò che so e che potrebbe essere messo in dubbio da voi con mio sommo dispiacere è quanto segue:
- linux raggiunge l'hardware attraverso i file di tipo c e b (a caratteri e a blocchi)
- questi file interfacciano il kernel con l'hardware attraverso due loro proprietà: il major e il minor, due numeri indicanti il tipo di periferica e una sorta di numero d'ordine di periferica del tal tipo. così il dispositivo a blocchi 3 0 è l'ide primary master, 3 1 la sua prima partizione primaria, 3 2 la sua seconda partizione primaria, ecc. ecc. ecc. per tutto il resto del mondo accessibile dal kernel
- ad ogni major viene assegnato un certo driver, del quale verranno invocate le routine read, write, ioctl, ecc. quando si richiedessero operazioni sul file con quel dato major
premesso ciò, le mie ansie sono generate dal seguente garbuglio mentale:
con tutte le periferiche che esistono a questo mondo, e che possono essere create con poco sforzo (esempio una caffettiera), come possono 256 major a definire univocamente e completamente tali periferiche? nel file Documentation/devices.txt nell'albero dei sorgenti del kernel vengono indicati con precisione a che tipologia di hardware fanno riferimento i vari major (e minor). ora se io volessi creare il dev per la mia caffettiera di esempio dove lo attacco? presumo che non esisterà un major standardizzato apposta per le caffettiere.. insomma come possono 256 numeri stare dietro ad ogni immaginabile ed inimmaginabile periferica? inoltre ammettiamo che io attacco qualche device di tipo "cellulare". ne metto uno su un controller ide, uno su porta seriale, uno su bus usb e uno attaccato in qualche modo su una scheda di rete. ammettendo tali collegamenti possibili (il fornitore dei cellulari mi ha dato gli appositi cavi ed ha progettato i cellulari in questione per funzionare con i bus sopraelencati), come farà il mio pingu ad assegnare i minor? magari si farà dare un certo ordine dal bios..? ma soprattutto come farà ad usare quei cellulari, tutti uguali, quindi in teoria tutti pilotati dallo stesso driver, se magari gli mancano i driver per il bus usb, o per la scheda ethernet sulla quale volevo mettere il cellu? insomma non dovrebbero essere necessari PIU' driver (bus usb -> cellulare) per accedere ad una periferica identificata da UNA coppia major/minor?
![]()
![]()
![]()
![]()
link link link, datemi tanti link![]()