<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Купить сервер в Киеве. Cерверы и рабочие станции в Украине &#187; ядро</title>
	<atom:link href="https://server-kiev.com/tag/yadro/feed/" rel="self" type="application/rss+xml" />
	<link>https://server-kiev.com</link>
	<description>Продажа мощных серверов по низким ценам. Серверы Dell, HP, Supermicro. Мощные рабочие станции из США. В наличии новые и б/у за наличку и по безналу.</description>
	<lastBuildDate>Wed, 09 Feb 2022 05:27:51 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.1.1</generator>
	<item>
		<title>Пересборка ядра FreeBSD</title>
		<link>https://server-kiev.com/2013/08/freebsd-kernel-compilation/</link>
		<comments>https://server-kiev.com/2013/08/freebsd-kernel-compilation/#comments</comments>
		<pubDate>Fri, 16 Aug 2013 20:37:32 +0000</pubDate>
		<dc:creator><![CDATA[Алексей]]></dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[freebsd]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[пересборка ядра]]></category>
		<category><![CDATA[собираем ядро]]></category>
		<category><![CDATA[фрибсд]]></category>
		<category><![CDATA[ядро]]></category>

		<guid isPermaLink="false">http://server-kiev.com/?p=20</guid>
		<description><![CDATA[Ядро — это основная часть операционной системы FreeBSD. Оно ответственно за управление памятью, параметры безопасности, работу с сетью, доступ к дискам и многое другое. Зачем необходимо пересобирать собственное ядро? Вопрос вполне вменяем, ведь с развитием системы — чем дальше, тем она динамичнее и более самодостаточна, но всё же. Представим ситуацию, когда у нас есть старенькое <a href="https://server-kiev.com/2013/08/freebsd-kernel-compilation/"> читать дальше <span class="meta-nav"></span></a>]]></description>
				<content:encoded><![CDATA[<p><strong>Ядро — это основная часть операционной системы FreeBSD. Оно ответственно за управление памятью, параметры безопасности, работу с сетью, доступ к дискам и многое другое.<br />
</strong></p>
<p>Зачем необходимо пересобирать собственное ядро?</p>
<p>Вопрос вполне вменяем, ведь с развитием системы — чем дальше, тем она динамичнее и более самодостаточна, но всё же. <span id="more-20"></span>Представим ситуацию, когда у нас есть старенькое железо например:</p>
<div>
<table>
<tbody>
<tr>
<td>
<pre>CPU: 200Mhz
Memory: 128Mb
HDD: 4Mb
на борту есть 3 PCI слота в которые установлены две супер модные
и современные сетевые карты. Одна (на входе) - оптическая, вторая
(на выходе) - под витую пару в домашний супер свич.</pre>
</td>
</tr>
</tbody>
</table>
</div>
<p>Мы все это железо хотим использовать для домашнего роутера, а точнее шлюза, но….</p>
<p>когда мы инсталлируем систему, карточки не определяются.<br />
Благо, производители железа побеспокоились о драйверах и написали их для широкого круга людей с инструкцией по их установке.</p>
<p>Вот и получается, что нам теперь нужно вкомпилить драйвера в нашу свежую систему, и попутно убрать из ядра неиспользуемое железо, что бы не забирало лишнюю память.</p>
<p>Кроме того, заранее планируем использование netgraph и включим firewall.</p>
<p>Приступим к нашей затее.</p>
<p>Первым делом, нам нужно убедится в наличии исходных кодов ядра в папке /usr/src</p>
<div>
<table>
<tbody>
<tr>
<td>
<pre># ls -la /usr/src/
total 4
drwxr-xr-x   22 root  wheel     512 Oct 29 13:22 .
drwxr-xr-x   18 root  wheel     512 Oct 29 14:20 ..</pre>
</td>
</tr>
</tbody>
</table>
</div>
<p>Пусто. Значит у нас есть задача сюда положить исходники ядра. Данную операцию можно выполнить как минимум 2мя способами, в нашем случае — это будет через меню sysinstall из диска, так как сети у нас еще нет.</p>
<div>
<table>
<tbody>
<tr>
<td>
<pre>#sysinstall</pre>
</td>
</tr>
</tbody>
</table>
</div>
<p>далее:<br />
Configure, Distributions, src, здесь выбираем «sys» (/usr/src/sys) и выходим из меню, выходим еще раз и у нас спросят откуда ставить — выбираем CD/DVD и жмем «OK»</p>
<p>Второй вариант, занести их через флешь <img src="http://noted.org.ua/wp-includes/images/smilies/icon_smile.gif" alt=":)" /><br />
Но можно и ухитрится, временно поставить какую-нибудь попроще сетевую карточку, что бы появилась сеть и воспользоваться утилитой cvsup (а вдруг уже добавили наше железо в исходники <img src="http://noted.org.ua/wp-includes/images/smilies/icon_wink.gif" alt=";)" /> ):</p>
<p>Создаем файл supfile-src-sys</p>
<div>
<table>
<tbody>
<tr>
<td>
<pre># cat /other/work/supfile-src-sys
#
# Kernel source supfile
#
  *default host=cvsup5.FreeBSD.org
  *default base=/var/db
  *default prefix=/usr
  *default release=cvs tag=RELENG_6_3_0_RELEASE
  *default delete use-rel-suffix
  *default compress
  src-sys</pre>
</td>
</tr>
</tbody>
</table>
</div>
<p>PS. На наше железо стала версия 6.3, если на вашем другое — то tag= должно быть <a href="http://noted.org.ua/redirect.php?http://www.freebsd.org/doc/handbook/cvs-tags.html">другое</a>.</p>
<p>Запустим:</p>
<div>
<table>
<tbody>
<tr>
<td>
<pre># cvsup -g -L 2  /other/work/supfile-src-sys</pre>
</td>
</tr>
</tbody>
</table>
</div>
<p>и спустя несколько минут (5-25), всё зависит от машинки и скорости интернета с узла cvsup5.FreeBSD.org.</p>
<p>перепроверим еще раз папку и /usr/src и убедимся, что теперь она не пуста.</p>
<div>
<table>
<tbody>
<tr>
<td>
<pre># ls -la /usr/src/
total 5
drwxr-xr-x   22 root  wheel     512 Oct 29 13:22 .
drwxr-xr-x   18 root  wheel     512 Oct 29 14:20 ..
drwxr-xr-x   56 root  wheel    1024 Oct 28 10:12 sys</pre>
</td>
</tr>
</tbody>
</table>
</div>
<p>Теперь можем приступать к конфигурации нашего ядра.<br />
Заходим:</p>
<div>
<table>
<tbody>
<tr>
<td>
<pre># cd /usr/src/sys/i386/conf/
также можно зайти по симлинку, кому как удобнее
# cd /sys/i386/conf/

# ls -l | grep GENERIC
-rw-r--r--  1 root  wheel  12472 Oct 28 10:12 GENERIC
-rw-r--r--  1 root  wheel   1745 Oct 28 10:12 GENERIC.hints</pre>
</td>
</tr>
</tbody>
</table>
</div>
<p>далее, делаем копию GENERIC во что нибудь свое.</p>
<p><strong>PS. ВНИМАНИЕ!!!! GENERIC ПРАВИТЬ НЕ НУЖНО. На форумах часто встречаются глупые вопросы, я правлю GENERIC и почему вот у меня нифига не получается. Ругань и прочее..</strong></p>
<div>
<table>
<tbody>
<tr>
<td>
<pre># cp GENERIC MYKERNEL</pre>
</td>
</tr>
</tbody>
</table>
</div>
<p>И уж потом правим MYKERNEL</p>
<div>
<table>
<tbody>
<tr>
<td>
<pre># mcedit MYKERNEL</pre>
</td>
</tr>
</tbody>
</table>
</div>
<p>Вспоминая нашу изначальную задачу — заставить нашу железку работать с суперновыми сетевыми картами, дописываем на диск в наше залитое ядро файлы, которые предоставил производитель. И добавляем соответствующие строки в MYKERNEL (соблюдая инструкцию от производителя)</p>
<p>Попутно, оптимизируем — добавляя необходимое и убирая лишнее..</p>
<div>
<table>
<tbody>
<tr>
<td>
<pre>machine i386        # Тип платформы. 
cpu I586_CPU       # Тип процессора, с которыми будет работать ОС. 
cpu I686_CPU       # Здесь можно указать несколько значений. 
ident	   MYKERNEL # Название файла который мы правим :)
maxusers 32         # Максимальное число пользователей. 

Коментим лишнее
#options 	INET6 # Я обычно коменчу, пока что мы не юзаем IPv6 протокол
#options 	NFSSERVER # Я не собираюсь на такой тачке делать NFSSERVER

options EXT2FS    # Включаем поддержку файловой системы Ext2 (Linux)
device apm0        # Поддержка автоматического управления питанием 
(меняем c #device apm0 at nexus? disable flags 0x20 )</pre>
</td>
</tr>
</tbody>
</table>
</div>
<p>Добавляем стандартный набор, как правило для нашего домашнего роутера он будет выглядеть так:</p>
<div>
<table>
<tbody>
<tr>
<td>
<pre>options         EXT2FS
options         DEVICE_POLLING
options         HZ=1000
#options         IPFILTER
#options         IPFILTER_LOG
options         IPFIREWALL
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=200
options         IPFIREWALL_DEFAULT_TO_ACCEPT
options         IPFIREWALL_FORWARD
options         IPFIREWALL_NAT
options         DUMMYNET
options         IPDIVERT
options         QUOTA
options         LIBALIAS
options         ROUTETABLES=2
options         ACCEPT_FILTER_DATA
#options         TCP_DROP_SYNFIN
#options         ICMP_BANDLIMIT
#options         TCP_RESTRICT_RST
#####NETGRAPH##### Эту часть не обязательно добавлять, мы ее добавляем 
#только в том случае, если будем использовать NETGRAPH.
options         NETGRAPH
options         NETGRAPH_PPP
options         NETGRAPH_PPPOE
options         NETGRAPH_PPTPGRE
options         NETGRAPH_BPF
options         NETGRAPH_ETHER
options         NETGRAPH_IFACE
options         NETGRAPH_VJC
options         NETGRAPH_SOCKET
options         NETGRAPH_KSOCKET
options         NETGRAPH_TEE
options         NETGRAPH_RFC1490
options         NETGRAPH_MPPC_ENCRYPTION
#######Если у Вас на этой машинке есть пишущий привод, то сразу добавим:
device          atapicam
###В секцию: # SCSI peripherals</pre>
</td>
</tr>
</tbody>
</table>
</div>
<p>Коментим по описанному принципу лишнее, только не переусердствуйте (что бы не получилось как у меня в первый раз, я совсем все лишнее отключил <img src="http://noted.org.ua/wp-includes/images/smilies/icon_smile.gif" alt=":)" /> )</p>
<p>Но если всё таки вы переусердствуете, и у вас ничего не запуститься после перезапуска системы — не переживайте, всё нормально, жизнь на этом не остановилась.. У нас есть выход:<br />
Жмем RESET и на этапе загрузчика жмакаем на ESC.<br />
появится запрос, мы в него напишем:<br />
boot kernel.old и нажмем ENTER, тем самым загрузив старое ядро.<br />
<strong>PS. Важно знать!!! После каждой пересборки ядра — в ее процессе создается директория /boot/kernel.old которая за каждым разом заменяется файлами из /boot/kernel. Поэтому, рекомендую сделать такую хитрость: скопируйте себе сразу же рабочее ядро например в директорию /boot/generic:</strong></p>
<div>
<table>
<tbody>
<tr>
<td>
<pre># cd /boot
# cp -r kernel.old generic</pre>
</td>
</tr>
</tbody>
</table>
</div>
<p><strong>Тем самым вы обезопасите себя, если у вас и во второй раз не заведется система, вы просто наберете boot /boot/generic<br />
</strong></p>
<p>Теперь вернемся к нашему процессу сборки.<br />
Проверяем, убеждаемся что броде бы все правильно, лишнее убрано, недостающее — дописано. Переходим к процессу компиляции.</p>
<p>Сейчас рекомендуют делать так:</p>
<div>
<table>
<tbody>
<tr>
<td>
<pre># cd /usr/src
# make buildkernel KERNCONF=MYKERNEL
# make installkernel KERNCONF=MYKERNEL
# shutdown -r now</pre>
</td>
</tr>
</tbody>
</table>
</div>
<p>Раньше было так:</p>
<div>
<table>
<tbody>
<tr>
<td>
<pre># cd /sys/i386/conf/
# config MYKERNEL #При этом вам выдадут дальнейшие инструкции,
 и подскажут о ваших ошибках (если они есть)
# cd ../compile/MYKERNEL
# make cleandepend; make depend &amp;&amp; make install &amp;&amp; reboot
И ждем...</pre>
</td>
</tr>
</tbody>
</table>
</div>
<p>После сборки нового ядра, перезагружаемся и смотрим, завелось или нет, если нет — читаем примечание выше, если да — радуемся и попиваем пивко.</p>
<p>PS. Если вам нужно чего-то еще добавить в ядро, можем пройтись еще раз по уже накатанной дороге, но можем сделать и немного по другому.. Мы можем подгрузится модулем ядра:<br />
(попутно вспомнил анекдот:<br />
&#8212; Любимый, ты борщ умеешь варить?<br />
&#8212; секундочку… kldload borsh, теперь да!!!!)</p>
<p>так вот, для того что бы подгрузить модуль можно пользоваться утилитой kldload, для того что бы просмотреть уже подгруженное: kldstat, а для того что бы отгрузить модуль (забыть про то как варить борщ): kldunload borsh.</p>
<p>Также можно дописать в файл лоадера, что подгружать ядром (не будем же мы всё время ручками это делать)</p>
<div>
<table>
<tbody>
<tr>
<td>
<pre># cat /boot/loader.conf
accf_http_load="YES"
bridge_load="YES"
snd_driver_load="YES"</pre>
</td>
</tr>
</tbody>
</table>
</div>
<p>Удачного и стабильного вам ядра…</p>
<p><em>Источник: <a title="Пересборка ядра FreeBSD" href="http://noted.org.ua/255" rel="bookmark"><span style="color: blue;">http://noted.org.ua/255</span></a></em></p>
]]></content:encoded>
			<wfw:commentRss>https://server-kiev.com/2013/08/freebsd-kernel-compilation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
