etc:users:kernel
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
etc:users:kernel [2010/01/28 03:12] – krinkinmu | etc:users:kernel [2010/01/30 21:52] – jcmvbkbc | ||
---|---|---|---|
Line 23: | Line 23: | ||
* sudo make-kpkg clean | * sudo make-kpkg clean | ||
* sudo fakeroot make-kpkg --initrd --append-to-version=-mine kernel_image kernel_headers | * sudo fakeroot make-kpkg --initrd --append-to-version=-mine kernel_image kernel_headers | ||
+ | * sudo dpkg -i linux-image-2.6.32-mine-10.00.Custom_i386.deb | ||
+ | * sudo dpkg -i linux-headers-2.6.32-mine-10.00Custom_i386.deb | ||
+ | * sudo update-initramfs -c -k 2.6.32-mine | ||
+ | * sudo shutdown -r now | ||
+ | Дальше, | ||
Line 33: | Line 37: | ||
*3 ядро можно собрать и не "в стиле Debian", | *3 ядро можно собрать и не "в стиле Debian", | ||
- | *4 в даной версии ядра пришлось поправить файл / | + | *4 в даной версии ядра пришлось поправить файл / |
+ | |||
+ | |||
+ | |||
+ | ===== Второй пункт ===== | ||
+ | |||
+ | Проверим, | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | 4 | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 9 | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Теперь Makefile | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Теперь из каталога, | ||
+ | |||
+ | * sudo make | ||
+ | |||
+ | Должны получить примерно следующее: | ||
+ | |||
+ | 1 make -C / | ||
+ | 2 make[1]: Entering directory `/ | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 8 make[1]: Leaving directory `/ | ||
+ | |||
+ | Если все получилось, | ||
+ | |||
+ | 1 sudo insmod hello-1.ko | ||
+ | 2 sudo rmmod hello-1.ko | ||
+ | 3 sudo cat / | ||
+ | |||
+ | Должны получить примерно следующее: | ||
+ | |||
+ | 1 Jan 28 22:32:25 debian kernel: [ 6196.992494] Hellow world | ||
+ | 2 Jan 28 22:40:17 debian kernel: [ 6669.012286] Goodbye world | ||
+ | |||
+ | Теперь разбираемся, | ||
+ | |||
+ | ==== Исходный текст ==== | ||
+ | |||
+ | #include < | ||
+ | #include < | ||
+ | |||
+ | # | ||
+ | |||
+ | int init_module(void) - вызывается, | ||
+ | void cleanup_module(void) - вызывается, | ||
+ | В данном случае мы не вольны выбирать имена функций входа и выхода, | ||
+ | |||
+ | printk - выводит значения, | ||
+ | |||
+ | Прошу знатоков еще пояснить вот такой момент: | ||
+ | |||
+ | код возврата определяется программистом, | ||
+ | |||
+ | |||
+ | ==== Makefile ==== | ||
+ | |||
+ | Как написано формально Makefile должен содержать только строку obj-m += hello-1.o, но тогда простой командой make мы получим только ошибку, | ||
+ | |||
+ | make -C / | ||
+ | |||
+ | $(shell pwd) - текущий каталог, | ||
+ | |||
+ | / | ||
+ | |||
+ | modules - не знаю зачем нужно, предполагаю, | ||
+ | |||
+ | ~~DISCUSSION~~ |
etc/users/kernel.txt · Last modified: 2016/08/08 20:53 by kel