For our project, we wanted to edit the Linux kernel boot process to require that a user, as part of the authentication process, insert a uniquely-keyed USB device. If the user failed to provide the required device, the boot process would halt, preventing the machine from booting normally until the device was inserted.