<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Linux Forum &mdash; создание простого модуля ядра hello world (printk)]]></title>
		<link>https://linuxforum.ru/viewtopic.php?id=28266</link>
		<atom:link href="https://linuxforum.ru/extern.php?action=feed&amp;tid=28266&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «создание простого модуля ядра hello world (printk)».]]></description>
		<lastBuildDate>Sat, 18 May 2013 20:28:07 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: создание простого модуля ядра hello world (printk)]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=346265#p346265</link>
			<description><![CDATA[<p>Просто я имел в виду, что при сборке исходника ядра, либо выполнив (make modules_prepare), часть хедеров генерируются.<br />Вот и получается что без них на самом деле ни куда&nbsp; <img src="https://linuxforum.ru/img/smilies/ab.gif" alt="ab" /> </p><p>Просто при сборке модуля ядра используются хедеры из исходника самого ядра, а не обще системные, ну и конечно не только хедеры.</p><p>Пакет linux-headers в gentoo, это примерно то же самое если выполнить команды в исходнике ядра:</p><div class="codebox"><pre><code>make mrproper 
make headers_check
make INSTALL_HDR_PATH=header headers_install
find header/include \( -name .install -o -name ..install.cmd \) -delete</code></pre></div><p>Далее в каталоге&nbsp; <strong>header</strong> будет находиться то самое.</p><p>пусть уж будет раз уж соответствует теме.</p><p>Я собирал когда то LFS, там как раз не было отдельного пакета с хедерами, для этого использовался сам исходник ядра.</p><p>То что вы имеете в виду что одних хедеров для сборки мало это правда.<br />То что без хедеров можно обойтись ...</p><p>Я понял что вы имели в виду, в этом вы правы.</p>]]></description>
			<author><![CDATA[null@example.com (ormorph)]]></author>
			<pubDate>Sat, 18 May 2013 20:28:07 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=346265#p346265</guid>
		</item>
		<item>
			<title><![CDATA[Re: создание простого модуля ядра hello world (printk)]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=346232#p346232</link>
			<description><![CDATA[<div class="quotebox"><cite>ormorph⇓ пишет:</cite><blockquote><p>это на счет что можно обойтись без хедеров ядра.<br />Думаю мы оба думали на счет пакетов linux-headers и kernel-headers</p></blockquote></div><p>нет... тут я ошибся малость... видать я слишком привык к генте, так что для меня linux-headers это /usr/include/linux/ <br />сейчас посмотрел - и правда в дебиане часть дерева ядра, необходимая для сборки находится в linux-headers.</p><p>[ремарка] хотя в генте в самом пакете тоже содержится тот же хлам, что и в debian&#039;овском linux-headers, но устанавливаются только сами хедеры...</p>]]></description>
			<author><![CDATA[null@example.com (Fat-Zer)]]></author>
			<pubDate>Sat, 18 May 2013 17:35:50 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=346232#p346232</guid>
		</item>
		<item>
			<title><![CDATA[Re: создание простого модуля ядра hello world (printk)]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=346179#p346179</link>
			<description><![CDATA[<div class="quotebox"><cite>Герман⇓ пишет:</cite><blockquote><p>есть ли альтернатива в дебиане системному реестру Windows?</p></blockquote></div><p>Если только в эмитаторе винды <strong>wine</strong>, в самом Linux как правило нет.<br />Для Gnome что то похожее существует, но реально это не реестр, так как все эти настройки реально хранятся в скрытом каталогое <strong>~/.gconf </strong> в формате <strong>xml</strong></p><p>Т.е. реально в linux все хранится в конфигурационных файлах.</p>]]></description>
			<author><![CDATA[null@example.com (ormorph)]]></author>
			<pubDate>Sat, 18 May 2013 01:47:58 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=346179#p346179</guid>
		</item>
		<item>
			<title><![CDATA[Re: создание простого модуля ядра hello world (printk)]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=346178#p346178</link>
			<description><![CDATA[<p>вроде разобрался, заработало)) <br />есть вопросик, уже не по этой теме.. да что бы не создавать новую тему, спрошу здесь <br />есть ли альтернатива в дебиане системному реестру Windows?</p>]]></description>
			<author><![CDATA[null@example.com (Герман)]]></author>
			<pubDate>Fri, 17 May 2013 22:32:38 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=346178#p346178</guid>
		</item>
		<item>
			<title><![CDATA[Re: создание простого модуля ядра hello world (printk)]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=346172#p346172</link>
			<description><![CDATA[<p><strong>Fat-Zer</strong><br />Нам пора бы проспаться обоим)<br />это на счет что можно обойтись без хедеров ядра.<br />Думаю мы оба думали на счет пакетов <strong>linux-headers</strong> и <strong>kernel-headers</strong><br />Только читая то что написано выше можно сделать не правильный вывод.<br />Это так небольшая поправка самого себя.</p>]]></description>
			<author><![CDATA[null@example.com (ormorph)]]></author>
			<pubDate>Fri, 17 May 2013 20:31:38 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=346172#p346172</guid>
		</item>
		<item>
			<title><![CDATA[Re: создание простого модуля ядра hello world (printk)]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=346168#p346168</link>
			<description><![CDATA[<div class="quotebox"><cite>ormorph пишет:</cite><blockquote><p>Жаль что автор статьи, просто переписал иностранную статью, по сборке модуля, и не сделал ни чего чтобы разжевать что к чему.<br />По данному описанию учиться очень тяжело если начинаешь только осваивать linux.</p></blockquote></div><p>жаль что мне в таком виде (как вы выразились в &quot;тупом&quot;) дают в универе... вот и пытаюсь мутить что то) читаю блоги, спасибо всем за отзывчивость буду пробовать)</p>]]></description>
			<author><![CDATA[null@example.com (Герман)]]></author>
			<pubDate>Fri, 17 May 2013 20:05:31 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=346168#p346168</guid>
		</item>
		<item>
			<title><![CDATA[Re: создание простого модуля ядра hello world (printk)]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=346167#p346167</link>
			<description><![CDATA[<div class="quotebox"><cite>Fat-Zer⇓ пишет:</cite><blockquote><p>гипотетически конечно можно и без них, но тогда ручками придётся кучу всего выдирать из самих исходников.</p></blockquote></div><p>Да знаю делал как то по конфигу /proc/config.gz<br />Самое простое если не вчитываться просто собрать ядро с данным конфигом.</p><p>А так там описание по сборке очень тупое, если бы я в первый раз начал собирать по данному описанию, у меня все равно ни чего не получилось бы, так как тут пропущен момент перезагрузки под вновь созданным ядром(если все таки решиться собирать ядро).</p><p>Жаль что автор статьи, просто переписал иностранную статью, по сборке модуля, и не сделал ни чего чтобы разжевать что к чему.<br />По данному описанию учиться очень тяжело если начинаешь только осваивать linux.</p>]]></description>
			<author><![CDATA[null@example.com (ormorph)]]></author>
			<pubDate>Fri, 17 May 2013 19:56:40 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=346167#p346167</guid>
		</item>
		<item>
			<title><![CDATA[Re: создание простого модуля ядра hello world (printk)]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=346165#p346165</link>
			<description><![CDATA[<div class="quotebox"><cite>ormorph⇓ пишет:</cite><blockquote><p>Для сборки модуля ядра нужны только хедеры ядра.</p></blockquote></div><p>ЛПП.</p><p>гипотетически конечно можно и без них, но тогда ручками придётся кучу всего выдирать из самих исходников, в частности, скрипты линкера.</p><p>ЗЫ: кроме того исходники должны быть сконфигурированы и частично собраны (<strong>make modules_prepare</strong>)</p>]]></description>
			<author><![CDATA[null@example.com (Fat-Zer)]]></author>
			<pubDate>Fri, 17 May 2013 19:41:59 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=346165#p346165</guid>
		</item>
		<item>
			<title><![CDATA[Re: создание простого модуля ядра hello world (printk)]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=346163#p346163</link>
			<description><![CDATA[<p>Да ничего тут собственно менять не надо, просто описание по сборке модуля тупое.</p><p>Тут ненужно качать исходник ядра, хватит ядра под которым работает данный дистрибутив линукса.</p><p>Для сборки модуля ядра нужны только хедеры ядра.</p><p>В большинстве дистрибутивов это пакеты с названием <strong>linux-headers </strong>или <strong>kernel-headers</strong></p><p>Версия пакета должна соответствовать выводу команды <strong>uname -r</strong></p><p>Останется только в директории исходника выполнить:<br /><strong>$ make<br />$ sudo insmod ./hello_printk.ko<br />$ dmesg | tail</strong></p>]]></description>
			<author><![CDATA[null@example.com (ormorph)]]></author>
			<pubDate>Fri, 17 May 2013 19:31:55 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=346163#p346163</guid>
		</item>
		<item>
			<title><![CDATA[Re: создание простого модуля ядра hello world (printk)]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=346160#p346160</link>
			<description><![CDATA[<div class="quotebox"><cite>Герман⇓ пишет:</cite><blockquote><p>1. # cd /usr/src<br /># wget <a href="http://www.kernel.org/pub/linux/kernel/">http://www.kernel.org/pub/linux/kernel/</a> … .5.tar.bz2</p></blockquote></div><p>исходники нужны к тому ядру, которое запущено. можно собрать это или установить пакет с исходниками от дистрибутива (linux-source или как-то так)...</p><p>при желании можно в KDIR просто прописать путь куда распакованы исходники, но тогда надо понимать, что делаешь...</p><p>список литературы: <a href="http://linuxforum.ru/viewtopic.php?id=3282">Introduction</a></p>]]></description>
			<author><![CDATA[null@example.com (Fat-Zer)]]></author>
			<pubDate>Fri, 17 May 2013 19:10:27 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=346160#p346160</guid>
		</item>
		<item>
			<title><![CDATA[создание простого модуля ядра hello world (printk)]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=346158#p346158</link>
			<description><![CDATA[<p>Вот хотелось бы проконсультироваться у знающих людей) </p><p>собственно задача состоит в сл.<br />Создать и запустить простейший модуль ядра, например &quot;hello, world&quot;</p><p>нашел мануал такой.. но он в тексте без команд</p><p>1. Скачать с дистрибутива Debian в соответствующую системную директорию исходный код ядра системы..<br />2. Установить утилиты компиляции gcc и module assistant.<br />3. Скачать в домашнюю директорию текущего пользователя архив hello_printk.tar.gz и распаковать его.<br />4. Изменение файл Makefile, задав в нем имя ссылки на исходный код ядра, соответствующее нашей системе. <br />5. Проверить наличие этой ссылки в соответствующей целевой директории. Если ее цель не является директорию под тип процессоров 686 исходных кодов ядра, изменить ее цель (или создать новую ссылку). <br />6. Скомпилировать исполняемый файл модуля ядра. <br />7. Скачать модуль ядра в систему. Проверить его наличие в системе соответствующей командой. </p><p>архив hello_printk.tar.gz имеет два файла<br /><strong>makefile:</strong><br /></p><div class="codebox"><pre><code># obj-m is a list of what kernel modules to build.  The .o and other
# objects will be automatically built from the corresponding .c file -
# no need to list the source files explicitly.

obj-m := hello_printk.o 

# KDIR is the location of the kernel source.  The current standard is
# to link to the associated source tree from the directory containing
# the compiled modules.
KDIR  := /lib/modules/$(shell uname -r)/build 

# PWD is the current working directory and the location of our module
# source files.
PWD   := $(shell pwd)

# default is the default make target.  The rule here says to run make
# with a working directory of the directory containing the kernel
# source and compile only the modules in the PWD (local) directory.
default:
    $(MAKE) -C $(KDIR) M=$(PWD) modules</code></pre></div><p><strong>hello_printk.c</strong><br /></p><div class="codebox"><pre><code>/*
 * &quot;Hello, world!&quot; minimal kernel module
 *
 * Valerie Henson &lt;val@nmt.edu&gt;
 *
 */

/*
 * The below are header files provided by the kernel which are
 * required for all modules.  They include things like the definition
 * of the module_init() macro.
 */
#include &lt;linux/init.h&gt;
#include &lt;linux/module.h&gt; 

/*
 * This is the init function, which is run when the module is first
 * loaded.  The __init keyword tells the kernel that this code will
 * only be run once, when the module is loaded.
 */

static int __init
hello_init(void)
{
    printk(&quot;Hello, world!\n&quot;);
    return 0;
}

/*
 * The below macro informs the kernel as to which function to use as
 * the init function.
 */

module_init(hello_init);

/*
 * Similary, the exit function is run once, upon module unloading, and
 * the module_exit() macro identifies which function is the exit
 * function.
 */

static void __exit
hello_exit(void)
{
    printk(&quot;Goodbye, world!\n&quot;);
}

module_exit(hello_exit);

/*
 * MODULE_LICENSE() informs the kernel what license the module source
 * code is under, which affects which symbols it may access in the
 * main kernel.  Certain module licenses will &quot;taint&quot; the kernel,
 * indicating that non-open or untrusted code has been loaded.
 * Modules licensed under GPLv2 do not taint the kernel and can access
 * all symbols, but declaring it so is a legal statement that the
 * source code to this module is licensed under GPLv2, and so you must
 * provide the source code if you ship a binary version of the module.
 */
MODULE_LICENSE(&quot;GPL&quot;);
MODULE_AUTHOR(&quot;Valerie Henson &lt;val@nmt.edu&gt;&quot;);
MODULE_DESCRIPTION(&quot;\&quot;Hello, world!\&quot; minimal module&quot;);
MODULE_VERSION(&quot;printk&quot;);</code></pre></div><p>1. # cd /usr/src<br /># wget <a href="http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.35.5.tar.bz2">http://www.kernel.org/pub/linux/kernel/ … .5.tar.bz2</a><br />и розархивировал его <br /># tar xjf linux-2.6.32.5.tar.bz2<br />я так понимаю нам нужны хеад-файлы отсюда...</p><p>ну в общем дошел до 4го пункта, там я так понимаю нужно изменить строку <br /></p><div class="codebox"><pre><code>KDIR  := /lib/modules/$(shell uname -r)/build </code></pre></div><p>но на какую я что то непойму.. <br />в общем выдавало ошибку<br /><em>make -C /usr/src/linux-2.6.32.5/build M=/home/polzovatel/hello_printk modules<br />make: *** /usr/src/linux-2.6.32.5/build: No such file or directory. Остановка<br />make: *** [default] ошибка 2.</em></p>]]></description>
			<author><![CDATA[null@example.com (Герман)]]></author>
			<pubDate>Fri, 17 May 2013 18:41:09 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=346158#p346158</guid>
		</item>
	</channel>
</rss>
