Встречный вопрос. Нафига?
Расскажи что тебе в итоге надо получить, а тебе скажут как этого лучше всего добиться.
Напиши модуль ядра для доступа к чему угодно и наслаждайся результатом. Только учти что такой модуль уже написан, называется драйвер последовательного порта.
В итоге нужно выяснить возможно ли работать в Ubuntu с портами ввода-вывода в обход самой ОС.
Просто желательно использовать ассемблерные вставки в сишных программах (или чистый ассемблер) для ввода вывода через ком порт.
Например:
MOV AX,40H
MOV ES,AX
MOV DX,ES:[0]
MOV AL,1h
OUT DX,AL
-вот как этот код (вернее фрагмент кода) будет работать в Ubuntu?
Нафига? Да ради учебного процесса

И ещё: буду рад хорошим ссылкам на литературу, где толково описана архитектура Ubuntu в частности и Linux вообще (вроде "Внутреннее устройство Windows XP" Руссиновича для винды).