explain the key tech for developing a Linux driver