Seu palpite está correto. O kernel é o único software que pode enviar solicitações de hardware. Isso não é válido apenas para o Linux. Praticamente nenhum sistema operacional mais novo que o DOS permite acessar o hardware diretamente, porque, como você também suspeita, é bastante perigoso.
No entanto, não há problema em escrever seu próprio driver e há muita documentação disponível. Por exemplo, este tutorial no xatlantis parece ser uma fonte recente (importante!) E boa.