Q:

Не получается создать "простейший" драйвер в Ubuntu

Не получается создать драйвер в Ubuntu (железный бобёр).
Makefile
# Makefile – makefile of our first driver

# if KERNELRELEASE is defined, we've been invoked from the
# kernel build system and can use its language.
ifneq (${KERNELRELEASE},)
    obj-m := ofd.o
# Otherwise we were called directly from the command line.
# Invoke the kernel build system.
else
    KERNEL_SOURCE := /lib/modules/4.15.0-47-generic/
    PWD := $(shell pwd)
default:
    ${MAKE} -C ${KERNEL_SOURCE} SUBDIRS=${PWD} modules

clean:
    ${MAKE} -C ${KERNEL_SOURCE} SUBDIRS=${PWD} clean
endif

ofd.c
    /* ofd.c - Код нашего первого драйвера */
    #include 
    #include 
    #include 
static int __init ofd_init(void) /* Конструктор */
{
    printk(KERN_INFO "dimon ^_^ : ofd registered");
    return 0;
}

static void __exit ofd_exit(void) /* Деструктор*/
{
    printk(KERN_INFO "pumba ;_; : ofd unregistered");
}

module_init(ofd_init);
module_exit(ofd_exit);

MODULE_LICENSE("GPL");
MODULE_AUTHOR("kaban <kaban@bk.ru>");
MODULE_DESCRIPTION("Moi perwii draiwer (Our First Driver)");

Получил такой результат 
Делал всё по статье написание простершего драйвера. не знаю почему несобралося :Р

Поправил и добавил ТАБы.
# Makefile – makefile of our first driver

# if KERNELRELEASE is defined, we've been invoked from the
# kernel build system and can use its language.
ifneq (${KERNELRELEASE},)
    obj-m := ofd.o
# Otherwise we were called directly from the command line.
# Invoke the kernel build system.
else
    KERNEL_SOURCE := /lib/modules/4.15.0-47-generic/
    PWD := $(shell pwd)
default:
    ${MAKE} -C ${KERNEL_SOURCE} SUBDIRS=${PWD} modules

clean:
    ${MAKE} -C ${KERNEL_SOURCE} SUBDIRS=${PWD} clean
endif

Вот вывод что мне дал компьютер 
comp@comp0:~$ make
make -C /lib/modules/4.15.0-47-generic/ SUBDIRS=/home/comp modules
make[1]: вход в каталог «/lib/modules/4.15.0-47-generic»
make[1]: *** Нет правила для сборки цели «modules».  Останов.
make[1]: выход из каталога «/lib/modules/4.15.0-47-generic»
Makefile:13: recipe for target 'default' failed
make: *** [default] Error 2

Странно,даёт ошибку, хотя ядро я указал верное.
comp@comp0:~$ uname -r 
4.15.0-47-generic

A:

в начале строки с рецептом должен стоять символ табуляции.
у вас в файле всего две такие строки (обе начинаются с ${MAKE}). проконтролируйте, что в их начале стоит именно символ табуляции, а не пробел.

в дополнение:
первая из строк, содержащая рецепт, может быть объединена с правилом (см. ссылку выше), через точку с запятой.
т.е. вместо:
цель:
    рецепт # здесь в начале строки — символ табуляции

можно написать:
цель: ; рецепт # здесь только пробелы, которые можно и убрать

make -C /lib/modules/4.15.0-47-generic/ SUBDIRS=/home/comp modules
make[1]: вход в каталог «/lib/modules/4.15.0-47-generic»
make[1]: *** Нет правила для сборки цели «modules».  Останов.

ну, загляните в каталог, где вы пытаетесь выполнить цель modules: /lib/modules/4.15.0-47-generic/. видите там файл с именем [Mm]akefile или GNUmakefile? думаю, нет.
возможно, в этом каталоге есть симлинк с именем build или source (или что-нибудь в этом духе), который указывает на нужный каталог (в котором есть какой-нибудь из перечисленных файлов).
вот и попробуйте указать именно этот путь (/lib/modules/4.15.0-47-generic/build/) вместо /lib/modules/4.15.0-47-generic/

