Il Plug-and_Play (PnP) è un metodo per automatizzare l'assegnazione di risorse PnP all'harware e al corrispondente software. Ovvero per far corrispondere dispositivi con i loro gestori di dispositivo e specificare i relativi "canali" di comunicazione. Prima del Plug-an-Play le risorse erano impostate suoi dispositivi hardware tramite ponticelli (jumper), mentre erano assegnate al software di gestione tramite file di configurazione (o qualcosa di simile) oppure interrogando il dispositivo (cosa che non sempre funzionava bene).
Ad un PnP completo (che a sua volta non sempre funziona correttamente) partecipano sia un BIOS PnP che un sistema operativo PnP. Quando il computer è acceso, il chip del BIOS esegue un suo programma per avviare la macchina. Se il sistema operativo è immagazzinato nel disco fisso (com'è ormai usuale) allora il BIOS deve essere conscio della presenza del disco fisso. Se il disco fisso è PnP allora il BIOS potrebbe usare uno dei metodi PnP per trovarlo. Inoltre, per configurare il BIOS quando il computer si avvia, sono richiesti uno schermo (scheda video) e una tastiera, e quindi il BIOS deve configurare questi dispositivi se necessario.
Un volta che il BIOS ha identificato il disco fisso, la scheda video e la tastiera è pronto per fare il "boot" (caricare il sistema operativo dal disco fisso). Se si è detto al BIOS che si ha un sistema operativo PnP, allora dovrebbe fare solo questo e poi lasciare al sistema operativo la conclusione della configurazione PnP. Diversamente, un BIOS PnP probabilmente proverà a fare da solo il resto della configurazione PnP.
Il PnP è stato inventato da Wintel (il binomio Microsoft e Intel). Un po' per questa ragione (forse dovuto parzialmente alla sindrome "non l'abbiamo inventato noi"), e in parte a causa del fatto che non piaceva il modo in cui era stato implementato, ci sono stati alcuni pregiudizi giustificati sul PnP nella comunità Linux. Ma che piaccia o meno, oggigiorno praticamente tutto l'hardware è PnP e Linux non ha scelta, se non quella di gestire il PnP.
Il PnP è stato pensato per funzionare con qualsiasi bus come ISA e PCI. ISA è il vecchio bus dei PC IBM, mentre PCI è il bus più nuovo e veloce di Intel. Il bus ISA dovrebbe cominciare a scomparire. Il PCI riserva sul bus molti indirizzi di configurazione per la configurazione PnP. Linux usa alcuni di questi indirizzi per scoprire quali dispositivi PCI presenti sul bus sono PnP (che dire dei dispositivi non PnP sul bus PCI ??), e mette poi le informazioni relative a quest'ultimi nel "file" /proc/pci.
Nel caso del bus ISA c'è un problema reale poiché, diversamente dal bus PCI che è stato progettato per il PnP, nessuno aveva in mente il PnP quando è stato progettato il bus ISA e praticamente non ci sono indirizzi I/O disponibili da usare con il PnP. Di conseguenza il modo di gestire il PnP nel bus ISA è complicato e richiede che il programma di PnP assegni un "handle" (identificativo) temporaneo a ciascun dispositivo PnP in modo che questi possano essere indirizzati per la successiva configurazione PnP. L'assegnazione di uno di questi "handle" è detta "isolation" (isolamento). Per i dettagli si veda Isolamento in Appendice.
Quando un computer viene acceso, prima di caricare il sistema operativo viene eseguito il BIOS. I BIOS più recenti sono PnP e configureranno alcuni (o al limite tutti) i dispositivi PnP. In molti BIOS non c'è modo di disabilitare il PnP e quindi bisogna conviverci. Qui di seguito alcune delle scelte che potrebbero essere presenti nel menù di configurazione del proprio BIOS (talvolta detto CMOS):
Se si risponde affermativamente, allora il BIOS PnP inizierà la configurazione PnP del disco fisso, ecc., ma lascerà che il sistema operativo termini il lavoro di configurazione. Potrebbe fare un Isolamento nel bus ISA lasciando i dispositivi pronti per essere configurati dal sistema operativo. Se il proprio sistema operativo non fa la configurazione (alcune versioni di Linux a cui è stata applicata una patch lo fanno), probabilmente non si dovrebbe rispondere affermativamente poiché il BIOS potrebbe lasciare disabilitati i dispositivi ISA ??
Se si risponde no, allora il BIOS farà tutta la configurazione da solo. A meno che non siano stati aggiunti nuovi dispositivi PnP, dovrebbe usare la configurazione precendete che ha salvato nella memoria non volatile. Se l'ultima sessione nel proprio computer è stata sotto Linux, allora non ci dovrebbero essere modifiche nella configurazione. Ma se l'ultima sessione è avvenuta in Windows 95 o 98 (che sono PnP) allora Windows potrebbe aver impostatato la configurazione diversamente da come la si vuole sotto Linux. Quanto segue non è di poco aiuto per le schede PCI, ma si può sempre controllare come sono state configurate guardando in /proc/pci. Poi si deve controllare che queste configurazioni corrispondano ai propri file di configurazione sotto Linux ("setserial", lilo.conf, ecc.) per il driver usato. Per ulteriori informazioni si veda Configurare il PnP dal BIOS.
Questa scelta determina il metodo con cui si vuole siano allocati IRQ e DMA. Se impostata su "auto", il bios farà l'allocazione. Se impostata su manual, si entra in un altro menù e si sarà in grado di riservare alcuni IRQ per usarli con le schede "legacy" (non PnP). Ora il BIOS potrebbe o meno essere conscio delle schede legacy presenti. Se ne è a conoscenza, allora si provi ad usare "auto". Se non le rileva allora si riservino manualmente le IRQ necessari per le schede ISA legacy e si lasci quel che resta dell'allocazione al PnP del BIOS. Il BIOS verrà a conoscenza delle schede legacy presenti se si eseguirà ICU (o simile) sotto Windows per dirglielo. Allora il BIOS salverà queste informazioni nel sua base di dati non volatile.
Questa scelta cancellerà la base di dati del BIOS che contiene sia il modo in cui configurare i dispositivi PnP che l'elenco delle configurazioni dei dispositivi legacy (non PnP). Mai fare questa cosa a meno che non si sia convinti che tale base di dati è errata e dev'essere ricostruita. Da qualche parte è affermato che lo si dovrebbe fare solo se non si riesce ad avviare il proprio computer. Se il BIOS perde i dati sui dispositivi legacy, allora si dovrà rieseguire ICU sotto Windows per ristabilire le informazioni.