https://wiki.archlinux.org/api.php?action=feedcontributions&user=Alligator&feedformat=atomArchWiki - User contributions [en]2024-03-29T04:39:21ZUser contributionsMediaWiki 1.41.0https://wiki.archlinux.org/index.php?title=Bootsplash_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=277086Bootsplash (Русский)2013-09-30T02:12:07Z<p>Alligator: </p>
<hr />
<div>[[Category:Bootsplash (Русский)]]<br />
[[Category:Русский]]<br />
[[Category:Красивости (Русский)]]<br />
[[Category:Загрузка (Русский)]]<br />
Это документ освещает процесс настройки графического экрана загрузки системы при помощи патчей для ядра Linux. Надеюсь, с этим руководством и грамотным изучением man'ов к программам Вы вскоре получите красивую графическую загрузку. Если Вы застряли, почитайте вывод в консоль. Обычно оттуда можно узнать об источнике проблемы.<br />
<br />
== Патчим ядро ==<br />
Первый шаг в настройке красивой графической заставки - наложение на ядро bootsplash-патча. Вам нужно скачать исходники ядра Linux и соответствующий патч для вашего ядра с http://www.kernel.org и ftp://ftp.bootsplash.org/pub/bootsplash/kernel/, примерно так:<br />
<pre><br />
# cd /usr/src<br />
# wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.21.5.tar.bz2<br />
# tar jxvf linux-2.6.21.5.tar.bz2<br />
# ln -s linux-2.6.21.5 linux<br />
# cd linux<br />
# wget ftp://ftp.bootsplash.org/pub/bootsplash/kernel/bootsplash-3.1.6-2.6.21.diff.gz<br />
# gunzip bootsplash-3.1.6-2.6.21.diff.gz<br />
# patch -p1 < bootsplash-3.1.6-2.6.21.diff<br />
</pre><br />
<br />
<br />
Полагаю, что Вы знаете, как настраивать важные опции ядра, для bootsplash'а специфичны <code>FRAMEBUFFER_CONSOLE</code> и <code>FB_VESA</code>.<br />
Их можно найти в следующих пунктах меню конфигурации ядра:<br />
<br />
<code>Device Drivers ---> Graphics support ---> Console display driver support ---> Framebuffer Console support</code><br />
<br />
Также Вам необходимо включить поддержку ramdisk, чтобы ядро отображало красивый загрузочный экран прежде всего остального:<br />
<br />
<code>Device Drivers --> Block devices --> RAM disk support</code><br />
<br />
Теперь соберите Ваше ядро:<br />
<pre><br />
# make -j2<br />
# make modules_install<br />
# make install<br />
</pre><br />
<br />
==Использование утилиты splash==<br />
<br />
Установите свежую версию утилиты splash и создайте образ ramdisk с выбранной темой:<br />
<br />
<pre><br />
# wget ftp://ftp.bootsplash.org/pub/bootsplash/rpm-sources/bootsplash/bootsplash-3.1.tar.bz2<br />
# tar jxvf bootsplash-3.1.tar.bz2<br />
# cd bootsplash-3.1/Utilities<br />
# make splash<br />
# mv splash /usr/local/bin<br />
# /usr/local/bin/splash -s -f /etc/bootsplash/themes/default/1280x800.cfg > /boot/initrd.splash<br />
</pre><br />
<br />
Темы можно скачать с http://bootsplash.org<br />
<br />
==Настройка GRUB==<br />
<br />
Отредактируйте конфигурационный файл [[GRUB (Русский)|GRUB]] так, чтобы загружалось Ваше новое ядро, задайте хорошее разрешение и загрузку ramdisk'а:<br />
<br />
<pre><br />
title Arch Linux<br />
root (hd0,0)<br />
kernel /boot/vmlinuz root=/dev/sda1 video=vesafb:ywrap,mtrr:3,1280x800-16 vga=868 splash=verbose<br />
initrd /boot/initrd.splash<br />
</pre><br />
<br />
==Замечания==<br />
*bootsplash запускается только при 16-битной глубине цвета.<br />
*если Вы не нашли режима для необходимого вам нестандартного разрешения, используйте утилиту <code>vbetest</code> из пакета lrmi.<br />
*строка прогресса в режиме silent не работает без модификации init-скриптов.</div>Alligatorhttps://wiki.archlinux.org/index.php?title=Festival_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=269541Festival (Русский)2013-08-03T03:01:04Z<p>Alligator: /* См. также */</p>
<hr />
<div>[[Category:Русский]]<br />
[[en:Festival]]<br />
[http://www.cstr.ed.ac.uk/projects/festival/ Festival] - это многоязычная система синтеза речи, разработанная CSTR ([http://www.cstr.ed.ac.uk/ Centre for Speech Technology Research]).<br />
<br />
==Установка==<br />
Festival доступен в '''extra''' репозитории:<br />
# pacman -S festival<br />
<br />
Вам также необходимо установить один или несколько голосов, потому что по умолчанию голоса не установлены.<br />
<br />
===American English===<br />
American English voice:<br />
# pacman -S festival-us<br />
<br />
===British English===<br />
British English voice:<br />
# pacman -S festival-english<br />
<br />
===Русский язык===<br />
Голос для русского языка<br />
# yaourt -S festvox-ru<br />
<br />
===Другие голоса===<br />
Также для Festival доступны и другие голоса; некоторые из них вы можете найти в [[AUR]].<br />
<br />
==Проверка и отладка==<br />
Для проверки festival выполните команду:<br />
$ echo "This is an example. Arch is the best." | festival --tts<br />
<br />
Если вы слышите то, что написано в примере, вы успешно установили TTS систему. <br />
<br />
Если вы ничего не слышите, слышите какой-то странный звук или только начало предложения, читайте ниже.<br />
<br />
===Поддержка русского языка===<br />
В файл /usr/share/festival/languages.scm дописать вначале:<br />
(define (language_russian)<br />
"(language_russian)<br />
Set up language parameters for Russian."<br />
(set! male1 voice_msu_ru_nsh_clunits)<br />
(male1)<br />
(Parameter.set 'Language 'russian)<br />
)<br />
<br />
и в этом же файле в define(select_language language) добавить:<br />
((equal? language 'russian)<br />
(language_russian))<br />
<br />
Для проверки выполните команду:<br />
$ echo "Привет" | festival --tts --language russian<br />
<br />
===can't open /dev/dsp===<br />
Если festival возвращает следующую ошибку:<br />
Linux: can't open /dev/dsp<br />
<br />
В зависимости от установленной аудиосистемы (можно проверить, набрав aplay или paplay в терминале), добавьте эти строки в ваш .festivalrc, или в usr/share/festival/festival.scm ([http://ubuntuforums.org/showpost.php?p=4058268&postcount=16 source], [http://snipt.net/alifity/make-festival-work-with-pulseaudio source]):<br />
<br />
Для ALSA:<br />
(Parameter.set 'Audio_Method 'Audio_Command)<br />
(Parameter.set 'Audio_Command "aplay -q -c 1 -t raw -f s16 -r $SR $FILE")<br />
<br />
Для PulseAudio:<br />
(Parameter.set 'Audio_Command "paplay $FILE")<br />
(Parameter.set 'Audio_Method 'Audio_Command)<br />
(Parameter.set 'Audio_Required_Format 'snd)<br />
<br />
===Alsa playing @ wrong speed===<br />
Если решение выше даёт скрипучий (писклявый) голос, можно попробовать следующее:<br />
(Parameter.set 'Audio_Method 'Audio_Command)<br />
(Parameter.set 'Audio_Command "aplay -Dplug:default -f S16_LE -r $SR $FILE")<br />
<br />
== Настройка и использование ==<br />
<br />
=== Интерактивный режим (тестирование голосов и пр.) ===<br />
festival имеет командную строку, которая вы можете использовать для тестов. Несколько примеров (с примерами выводов)<br />
$ festival <br />
[...]<br />
festival> <br />
Список доступных голосов:<br />
festival> (voice.list)<br />
(cstr_us_awb_arctic_multisyn kal_diphone don_diphone)<br />
Установить голос:<br />
festival> (voice_cstr_us_awb_arctic_multisyn)<br />
#<voice 0x1545b90><br />
Сказать:<br />
festival> (SayText '"test this is a test oh no a test bla test")<br />
inserting pause after: t.<br />
Inserting pause<br />
[...]<br />
id _63 ; name t ; <br />
id _65 ; name # ; <br />
#<Utterance 0x7f7c0c144810><br />
Помощь:<br />
festival> help <br />
"The Festival Speech Synthesizer System: Help<br />
Выход: ctrl+d or<br />
festival> (quit)<br />
<br />
=== Чтение текстового файла ===<br />
<br />
festival --tts /path/to/letter.txt<br />
<br />
=== Чтение текстового файла и сохранение в wav ===<br />
<br />
cat letter.txt | text2wave -o letter.wav<br />
<br />
=== Установка голоса по умолчанию ===<br />
Вы можеет установить голос по умолчанию, добавив эти строки в конец вашего .festivalrc или /usr/share/festival/festival.scm<br />
(set! default_voice 'voice_us1_mbrola)<br />
Вы также можете установить голос по умолчанию в {{ic|/usr/share/festival/voices.scm}}. У вас должны быть привилегии суперпользователя и добавьте их в конец файла, просто перечисляя по кругу.<br />
<br />
=== Приложения, которые могут использовать festival ===<br />
<br />
Одним из классических приложений, которые использует festival является ping. Используйте этот скрипт при проверка ping'а до хоста, он вернёт вам результат успешного или неудачного выполнения ping:<br />
<br />
#!/bin/bash<br />
while [ 1 = 1 ]; do<br />
ping -c $1 && (echo "Ping" | festival --tts) || (echo "Fail" | festival --tts)<br />
done<br />
<br />
Заметьте, что синтезатор речи не работает в реальном времени, т.к. ему нужно некоторое время перед воспроизведением.<br />
<br />
==См. также==<br />
[http://ru.festivalspeaker.wikia.com/wiki/%D0%91%D0%B0%D0%BD%D0%BA_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B2_%D0%B4%D0%BB%D1%8F_%D0%B3%D0%BE%D0%BB%D0%BE%D1%81%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D0%B4%D0%B2%D0%B8%D0%B6%D0%BA%D0%B0_Festival Банк скриптов для голосового движка Festival]<br />
<br />
[http://forum.ubuntu.ru/index.php?topic=92123.0 Учим компьютер говорить по-русски / Festival скрипты]<br />
<br />
[http://xakep.ru/magazine/xa/133/082/1.asp Говорящий пингвин. Учим Linux говорить и слушать]</div>Alligatorhttps://wiki.archlinux.org/index.php?title=Festival_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=269540Festival (Русский)2013-08-03T03:00:01Z<p>Alligator: /* См. также */</p>
<hr />
<div>[[Category:Русский]]<br />
[[en:Festival]]<br />
[http://www.cstr.ed.ac.uk/projects/festival/ Festival] - это многоязычная система синтеза речи, разработанная CSTR ([http://www.cstr.ed.ac.uk/ Centre for Speech Technology Research]).<br />
<br />
==Установка==<br />
Festival доступен в '''extra''' репозитории:<br />
# pacman -S festival<br />
<br />
Вам также необходимо установить один или несколько голосов, потому что по умолчанию голоса не установлены.<br />
<br />
===American English===<br />
American English voice:<br />
# pacman -S festival-us<br />
<br />
===British English===<br />
British English voice:<br />
# pacman -S festival-english<br />
<br />
===Русский язык===<br />
Голос для русского языка<br />
# yaourt -S festvox-ru<br />
<br />
===Другие голоса===<br />
Также для Festival доступны и другие голоса; некоторые из них вы можете найти в [[AUR]].<br />
<br />
==Проверка и отладка==<br />
Для проверки festival выполните команду:<br />
$ echo "This is an example. Arch is the best." | festival --tts<br />
<br />
Если вы слышите то, что написано в примере, вы успешно установили TTS систему. <br />
<br />
Если вы ничего не слышите, слышите какой-то странный звук или только начало предложения, читайте ниже.<br />
<br />
===Поддержка русского языка===<br />
В файл /usr/share/festival/languages.scm дописать вначале:<br />
(define (language_russian)<br />
"(language_russian)<br />
Set up language parameters for Russian."<br />
(set! male1 voice_msu_ru_nsh_clunits)<br />
(male1)<br />
(Parameter.set 'Language 'russian)<br />
)<br />
<br />
и в этом же файле в define(select_language language) добавить:<br />
((equal? language 'russian)<br />
(language_russian))<br />
<br />
Для проверки выполните команду:<br />
$ echo "Привет" | festival --tts --language russian<br />
<br />
===can't open /dev/dsp===<br />
Если festival возвращает следующую ошибку:<br />
Linux: can't open /dev/dsp<br />
<br />
В зависимости от установленной аудиосистемы (можно проверить, набрав aplay или paplay в терминале), добавьте эти строки в ваш .festivalrc, или в usr/share/festival/festival.scm ([http://ubuntuforums.org/showpost.php?p=4058268&postcount=16 source], [http://snipt.net/alifity/make-festival-work-with-pulseaudio source]):<br />
<br />
Для ALSA:<br />
(Parameter.set 'Audio_Method 'Audio_Command)<br />
(Parameter.set 'Audio_Command "aplay -q -c 1 -t raw -f s16 -r $SR $FILE")<br />
<br />
Для PulseAudio:<br />
(Parameter.set 'Audio_Command "paplay $FILE")<br />
(Parameter.set 'Audio_Method 'Audio_Command)<br />
(Parameter.set 'Audio_Required_Format 'snd)<br />
<br />
===Alsa playing @ wrong speed===<br />
Если решение выше даёт скрипучий (писклявый) голос, можно попробовать следующее:<br />
(Parameter.set 'Audio_Method 'Audio_Command)<br />
(Parameter.set 'Audio_Command "aplay -Dplug:default -f S16_LE -r $SR $FILE")<br />
<br />
== Настройка и использование ==<br />
<br />
=== Интерактивный режим (тестирование голосов и пр.) ===<br />
festival имеет командную строку, которая вы можете использовать для тестов. Несколько примеров (с примерами выводов)<br />
$ festival <br />
[...]<br />
festival> <br />
Список доступных голосов:<br />
festival> (voice.list)<br />
(cstr_us_awb_arctic_multisyn kal_diphone don_diphone)<br />
Установить голос:<br />
festival> (voice_cstr_us_awb_arctic_multisyn)<br />
#<voice 0x1545b90><br />
Сказать:<br />
festival> (SayText '"test this is a test oh no a test bla test")<br />
inserting pause after: t.<br />
Inserting pause<br />
[...]<br />
id _63 ; name t ; <br />
id _65 ; name # ; <br />
#<Utterance 0x7f7c0c144810><br />
Помощь:<br />
festival> help <br />
"The Festival Speech Synthesizer System: Help<br />
Выход: ctrl+d or<br />
festival> (quit)<br />
<br />
=== Чтение текстового файла ===<br />
<br />
festival --tts /path/to/letter.txt<br />
<br />
=== Чтение текстового файла и сохранение в wav ===<br />
<br />
cat letter.txt | text2wave -o letter.wav<br />
<br />
=== Установка голоса по умолчанию ===<br />
Вы можеет установить голос по умолчанию, добавив эти строки в конец вашего .festivalrc или /usr/share/festival/festival.scm<br />
(set! default_voice 'voice_us1_mbrola)<br />
Вы также можете установить голос по умолчанию в {{ic|/usr/share/festival/voices.scm}}. У вас должны быть привилегии суперпользователя и добавьте их в конец файла, просто перечисляя по кругу.<br />
<br />
=== Приложения, которые могут использовать festival ===<br />
<br />
Одним из классических приложений, которые использует festival является ping. Используйте этот скрипт при проверка ping'а до хоста, он вернёт вам результат успешного или неудачного выполнения ping:<br />
<br />
#!/bin/bash<br />
while [ 1 = 1 ]; do<br />
ping -c $1 && (echo "Ping" | festival --tts) || (echo "Fail" | festival --tts)<br />
done<br />
<br />
Заметьте, что синтезатор речи не работает в реальном времени, т.к. ему нужно некоторое время перед воспроизведением.<br />
<br />
==См. также==<br />
[http://ru.festivalspeaker.wikia.com/wiki/%D0%91%D0%B0%D0%BD%D0%BA_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B2_%D0%B4%D0%BB%D1%8F_%D0%B3%D0%BE%D0%BB%D0%BE%D1%81%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D0%B4%D0%B2%D0%B8%D0%B6%D0%BA%D0%B0_Festival Банк скриптов для голосового движка Festival]<br />
<br />
[http://forum.ubuntu.ru/index.php?topic=92123.0 Учим компьютер говорить по-русски / Festival скрипты]</div>Alligatorhttps://wiki.archlinux.org/index.php?title=Festival_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=269539Festival (Русский)2013-08-03T02:59:14Z<p>Alligator: /* См. также */</p>
<hr />
<div>[[Category:Русский]]<br />
[[en:Festival]]<br />
[http://www.cstr.ed.ac.uk/projects/festival/ Festival] - это многоязычная система синтеза речи, разработанная CSTR ([http://www.cstr.ed.ac.uk/ Centre for Speech Technology Research]).<br />
<br />
==Установка==<br />
Festival доступен в '''extra''' репозитории:<br />
# pacman -S festival<br />
<br />
Вам также необходимо установить один или несколько голосов, потому что по умолчанию голоса не установлены.<br />
<br />
===American English===<br />
American English voice:<br />
# pacman -S festival-us<br />
<br />
===British English===<br />
British English voice:<br />
# pacman -S festival-english<br />
<br />
===Русский язык===<br />
Голос для русского языка<br />
# yaourt -S festvox-ru<br />
<br />
===Другие голоса===<br />
Также для Festival доступны и другие голоса; некоторые из них вы можете найти в [[AUR]].<br />
<br />
==Проверка и отладка==<br />
Для проверки festival выполните команду:<br />
$ echo "This is an example. Arch is the best." | festival --tts<br />
<br />
Если вы слышите то, что написано в примере, вы успешно установили TTS систему. <br />
<br />
Если вы ничего не слышите, слышите какой-то странный звук или только начало предложения, читайте ниже.<br />
<br />
===Поддержка русского языка===<br />
В файл /usr/share/festival/languages.scm дописать вначале:<br />
(define (language_russian)<br />
"(language_russian)<br />
Set up language parameters for Russian."<br />
(set! male1 voice_msu_ru_nsh_clunits)<br />
(male1)<br />
(Parameter.set 'Language 'russian)<br />
)<br />
<br />
и в этом же файле в define(select_language language) добавить:<br />
((equal? language 'russian)<br />
(language_russian))<br />
<br />
Для проверки выполните команду:<br />
$ echo "Привет" | festival --tts --language russian<br />
<br />
===can't open /dev/dsp===<br />
Если festival возвращает следующую ошибку:<br />
Linux: can't open /dev/dsp<br />
<br />
В зависимости от установленной аудиосистемы (можно проверить, набрав aplay или paplay в терминале), добавьте эти строки в ваш .festivalrc, или в usr/share/festival/festival.scm ([http://ubuntuforums.org/showpost.php?p=4058268&postcount=16 source], [http://snipt.net/alifity/make-festival-work-with-pulseaudio source]):<br />
<br />
Для ALSA:<br />
(Parameter.set 'Audio_Method 'Audio_Command)<br />
(Parameter.set 'Audio_Command "aplay -q -c 1 -t raw -f s16 -r $SR $FILE")<br />
<br />
Для PulseAudio:<br />
(Parameter.set 'Audio_Command "paplay $FILE")<br />
(Parameter.set 'Audio_Method 'Audio_Command)<br />
(Parameter.set 'Audio_Required_Format 'snd)<br />
<br />
===Alsa playing @ wrong speed===<br />
Если решение выше даёт скрипучий (писклявый) голос, можно попробовать следующее:<br />
(Parameter.set 'Audio_Method 'Audio_Command)<br />
(Parameter.set 'Audio_Command "aplay -Dplug:default -f S16_LE -r $SR $FILE")<br />
<br />
== Настройка и использование ==<br />
<br />
=== Интерактивный режим (тестирование голосов и пр.) ===<br />
festival имеет командную строку, которая вы можете использовать для тестов. Несколько примеров (с примерами выводов)<br />
$ festival <br />
[...]<br />
festival> <br />
Список доступных голосов:<br />
festival> (voice.list)<br />
(cstr_us_awb_arctic_multisyn kal_diphone don_diphone)<br />
Установить голос:<br />
festival> (voice_cstr_us_awb_arctic_multisyn)<br />
#<voice 0x1545b90><br />
Сказать:<br />
festival> (SayText '"test this is a test oh no a test bla test")<br />
inserting pause after: t.<br />
Inserting pause<br />
[...]<br />
id _63 ; name t ; <br />
id _65 ; name # ; <br />
#<Utterance 0x7f7c0c144810><br />
Помощь:<br />
festival> help <br />
"The Festival Speech Synthesizer System: Help<br />
Выход: ctrl+d or<br />
festival> (quit)<br />
<br />
=== Чтение текстового файла ===<br />
<br />
festival --tts /path/to/letter.txt<br />
<br />
=== Чтение текстового файла и сохранение в wav ===<br />
<br />
cat letter.txt | text2wave -o letter.wav<br />
<br />
=== Установка голоса по умолчанию ===<br />
Вы можеет установить голос по умолчанию, добавив эти строки в конец вашего .festivalrc или /usr/share/festival/festival.scm<br />
(set! default_voice 'voice_us1_mbrola)<br />
Вы также можете установить голос по умолчанию в {{ic|/usr/share/festival/voices.scm}}. У вас должны быть привилегии суперпользователя и добавьте их в конец файла, просто перечисляя по кругу.<br />
<br />
=== Приложения, которые могут использовать festival ===<br />
<br />
Одним из классических приложений, которые использует festival является ping. Используйте этот скрипт при проверка ping'а до хоста, он вернёт вам результат успешного или неудачного выполнения ping:<br />
<br />
#!/bin/bash<br />
while [ 1 = 1 ]; do<br />
ping -c $1 && (echo "Ping" | festival --tts) || (echo "Fail" | festival --tts)<br />
done<br />
<br />
Заметьте, что синтезатор речи не работает в реальном времени, т.к. ему нужно некоторое время перед воспроизведением.<br />
<br />
==См. также==<br />
[http://ru.festivalspeaker.wikia.com/wiki/%D0%91%D0%B0%D0%BD%D0%BA_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B2_%D0%B4%D0%BB%D1%8F_%D0%B3%D0%BE%D0%BB%D0%BE%D1%81%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D0%B4%D0%B2%D0%B8%D0%B6%D0%BA%D0%B0_Festival Банк скриптов для голосового движка Festival]<br />
<br />
[http://forum.ubuntu.ru/index.php?topic=92123.0 Учим компьютер говорить по-русски / Festival скрипты]<br />
<br />
[http://xakep.ru/magazine/xa/133/082/1.asp Говорящий пингвин. Учим Linux говорить и слушать]</div>Alligatorhttps://wiki.archlinux.org/index.php?title=Sudo_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=262043Sudo (Русский)2013-06-09T22:36:54Z<p>Alligator: /* Автодополнение после sudo */</p>
<hr />
<div>[[Category:Безопасность (Русский)]]<br />
[[Category:Русский]]<br />
[[cs:Sudo]]<br />
[[en:Sudo]]<br />
[[es:Sudo]]<br />
[[fr:Sudo]]<br />
[[it:Sudo]]<br />
[[sr:Sudo]]<br />
[[tr:Sudo]]<br />
[[uk:Sudo]]<br />
[[zh-CN:Sudo]]<br />
{{Article summary start}}<br />
{{Article summary text|Установка и настройка sudo.}}<br />
{{Article summary end}}<br />
<br />
== Установка ==<br />
<br />
Для установки sudo введите:<br />
pacman -S sudo<br />
<br />
== Включение sudo для пользователей ==<br />
<br />
Для того, чтобы добавить пользователя как пользователя sudo ("sudoer"), отредактируйте /etc/sudoers в специальной сессии vi. Если вы не знаете как пользоваться vi, наберите следующее:<br />
EDITOR=nano visudo<br />
(Ни в коем случае не редактируйте непосредственно /etc/sudoers). Чтобы дать пользователю привилегии root'а, когда он вводит "sudo" перед командой, добавьте следующую строку:<br />
USER_NAME ALL=(ALL) ALL<br />
где USER_NAME - это имя пользователя.<br />
<br />
== Автодополнение после sudo ==<br />
<br />
По умолчанию автодополнение после команды sudo не работает. Например, если в консоли написать:<br />
fir<br />
и нажать клавишу Tab, то командная оболочка автоматически завершит команду:<br />
firefox<br />
А если добавить в начало sudo:<br />
sudo fir<br />
и нажать Tab, то ничего не произойдёт.<br />
<br />
Чтобы автодополнение заработало, добавьте в файл ~/.bashrc строку:<br />
complete -cf sudo<br />
По аналогии можно включить автодополнение после команд gksu (в среде GNOME) и kdesu (в среде KDE):<br />
complete -cf sudo gksu kdesu<br />
<br />
Либо можно просто установить пакет bash-completion (программируемая автодополнялка) из репозитория extra.<br />
<br />
{{Note|'''Если вы установили bash-completion, перелогинились, но автодополнение не работает сделайте {{ic|/usr/share/bash-completion/bash_completion}} исполняемым.'''}}<br />
<br />
== Время действия введённого пароля ==<br />
<br />
Возможно, вы хотите изменить промежуток времени, в течение которого sudo действует без ввода пароля. Этого легко добиться добавив в /etc/sudoers (visudo) следующее:<br />
Defaults:your_username timestamp_timeout=MINUTES<br />
Это может выглядеть так:<br />
Defaults:foo timestamp_timeout=20<br />
Где sudo для пользователя foo действует без необходимости ввода пароля в течении 20 минут.<br />
<br />
{{Note|'''Если вы хотите чтобы sudo всегда требовал ввода пароля, сделайте timestamp_timeout равным 0.'''}}<br />
<br />
== Краткое обобщение ==<br />
<br />
Подводя итог, следующие пункты будут полезны всем (USER_NAME - имя пользователя):<br />
1. pacman -S sudo<br />
2. добавить "USER_NAME ALL=(ALL) ALL" to /etc/sudoers<br />
3. добавить "complete -cf sudo" to /home/USER_NAME/.bashrc<br />
<br />
== OpenBox выключение/перезагрузка ==<br />
Для начала добавим кнопки в менюшку openbox, с командами sudo halt и sudo reboot, теперь нужно дабавить в конфиг sudo строки <br />
## Uncomment to allow members of group wheel to execute any command<br />
# %wheel ALL=(ALL) ALL<br />
%power ALL = NOPASSWD: /sbin/halt,/sbin/reboot<br />
тем самым пользователи в группе power получили право выполнять эти команды без ввода пароля рута,есть и сторонние прроги позволяющие делать перезагрузку, и выключение, создают кнопочку на нее тыкаете и выходит окошко с тем что сделать, ищите в AUR , это самый простой вариант. Перед этим включите sudo для пользователя<br />
<br />
== Немного развлечения ==<br />
<br />
sudo может ругаться на вас каждый раз, когда вы вводите неверный пароль, вместо того чтобы просто выводить сообщение "Sorry, try again". Для включения этого "пасхального яйца":<br />
<br />
# sudo visudo<br />
<br />
Найдите раздел Defaults line (прибл. строка 18) и добавьте "insults" через запятую, если там уже что-то есть. В итоге это может выглядеть так:<br />
<br />
#Defaults specification<br />
Defaults insults<br />
<br />
{{Box Note |'''Для проверки наберите sudo -K, чтобы закончить текущую сессию и позволить sudo спросить пароль снова'''}}<br />
<br />
== Пароль root'а ==<br />
<br />
Если вам требуется sudo, например для makepkg -s, но вы не хотите рисковать безопасностью, вы можете настроить sudo спрашивать пароль root вместо пароля пользователя.<br />
Добавьте "rootpw" к строке Defaults:<br />
<br />
Defaults timestamp_timeout=0,rootpw<br />
<br />
== Смотрите также ==<br />
<br />
* [[Disable root password and gain su sudo with no password]]</div>Alligatorhttps://wiki.archlinux.org/index.php?title=Android_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=257876Android (Русский)2013-05-19T19:28:39Z<p>Alligator: /* Прописать PATH */</p>
<hr />
<div>[[Category:Русский]]<br />
[[en:Android]]<br />
[[it:Android]]<br />
[[zh-CN:Android]]<br />
В этой статье я постараюсь описать установку android-sdk под arch linux, включая особенности x64 систем.<br />
<br />
== Подготовка. ==<br />
<br />
Для работы нам понадобится [[yaourt]]<br />
<br />
Также проследите, что бы в /etc/pacman.conf были сняты комментарии с следующих строк:<br />
<pre><br />
[multilib]<br />
Include = /etc/pacman.d/mirrorlist<br />
</pre><br />
<br />
Желательно обновить систему:<br />
<pre><br />
yaourt -Syu<br />
</pre><br />
ну или хотя бы синхронизировать репозитории<br />
<pre><br />
yaourt -Sy<br />
</pre><br />
<br />
== Установка android-sdk ==<br />
Тут есть три пути:<br />
<br />
* установить через систему управления пакетами arch linux yaourt.<br />
* установить через Eclipse.<br />
* поставить вручную.<br />
<br />
Последний вариант рассматривать не буду.<br />
<br />
{{Note|android-sdk существует только в варианте x86, в принципе это не проблема для x64, нужно только установить 32-х разрядные версии библиотек.<br />
Обратите на это внимание если выберите второй или третий вариант установки, иначе все установится, но работать не будет.}}<br />
<br />
=== Установка через yaourt. ===<br />
<pre><br />
# yaourt -S android-sdk<br />
</pre><br />
Преимуществом данного метода является то, что yaourt сам проследит и доставит все необходимые зависимости и про библиотеки можно не беспокоиться.<br />
<br />
Если ставили из под root, могут возникнуть трудности с доступом к папкам sdk, для устранения:<br />
<pre><br />
# chown -Rv <имя вашего пользователя> /opt/android-sdk<br />
</pre><br />
<br />
{{Note|На данный момент установлены только базовые компоненты android-sdk, о чем сказано в /opt/android-sdk/SDK Readme.txt}}<br />
<br />
Для установки всех компонентов:<br />
<pre><br />
# cd /opt/android-sdk<br />
#./tools/android<br />
</pre><br />
<br />
==== Настройка Netbeans ====<br />
Если вы пользуетесь IDE Netbeans, загрузите [http://www.nbandroid.org nbandroid]:<br />
<br />
Tools -> Plugins -> Settings<br />
<br />
Добавьте URL: http://kenai.com/projects/nbandroid/downloads/download/updatecenter/updates.xml<br />
<br />
Затем перейдите в '''Available Plugins''' и установите плагины '''Android''' и '''Android Test Runner''' для вашей версии IDE. После установки перейдите:<br />
<br />
Tools -> Options -> Miscellaneous -> Android<br />
<br />
и выберите путь Android SDK (обычно /opt/android-sdk). Доустановить необходимые пакеты и создать AVD можно в:<br />
<br />
Tools -> Android SDK and AVD manager<br />
<br />
Готово!<br />
<br />
=== Установка через Eclipse===<br />
Установка Eclipse:<br />
<pre><br />
#pacman -S eclipse<br />
</pre><br />
<br />
Устанавливаем все необходимые библиотеки:<br />
<pre><br />
# yaourt -S lib32-alsa-lib lib32-openal lib32-libstdc++5 lib32-libxv lib32-ncurses lib32-sdl lib32-zlib swt<br />
</pre><br />
Этот пункт не пройдет если вы не убрали комментарий с [multilib] в /etc/pacman.conf<br />
<br />
Запускаем Eclipse.<br />
<pre><br />
# eclipse<br />
</pre><br />
<br />
Далее идем в<br />
<br />
'''Help => Install New Software => Add'''<br />
<br />
'''Name: Indigo'''<br />
<br />
'''Location: http://download.eclipse.org/releases/indigo/'''<br />
<br />
Немного подождем, затем в последней категории:<br />
<br />
'''Web, XML, Java EE and OSGi Enterprise Development''' <br />
<br />
выбираем последний пункт<br />
<br />
'''WST Server Adapters'''<br />
<br />
Ну и устанавливаем выбранный компонент.<br />
<br />
Теперь опять идем в<br />
<br />
'''Help => Install New Software => Add'''<br />
<br />
'''Name: ADT plugin'''<br />
<br />
'''Location: https://dl-ssl.google.com/android/eclipse/'''<br />
<br />
'''Select All''' <br />
<br />
и заканчиваем установку.<br />
<br />
На панели Eclipse запускаем "Opens the Android SDK Manager"<br />
устанавливаем Tools и нужную нам версию платформы android.<br />
<br />
== Прописать PATH==<br />
В не зависимости от того каким путем Вы установили android-sdk, желательно прописать PATH в .bashrc или .bash_profile<br />
В моем случае это:<br />
<pre><br />
PATH=$PATH:/home/anton/android/android-sdk/tools:/home/anton/android/android-sdk/platform-tools<br />
</pre><br />
<br />
Вот и все, приятной работы!</div>Alligatorhttps://wiki.archlinux.org/index.php?title=Android_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=257875Android (Русский)2013-05-19T19:28:03Z<p>Alligator: /* Прописать PATH */</p>
<hr />
<div>[[Category:Русский]]<br />
[[en:Android]]<br />
[[it:Android]]<br />
[[zh-CN:Android]]<br />
В этой статье я постараюсь описать установку android-sdk под arch linux, включая особенности x64 систем.<br />
<br />
== Подготовка. ==<br />
<br />
Для работы нам понадобится [[yaourt]]<br />
<br />
Также проследите, что бы в /etc/pacman.conf были сняты комментарии с следующих строк:<br />
<pre><br />
[multilib]<br />
Include = /etc/pacman.d/mirrorlist<br />
</pre><br />
<br />
Желательно обновить систему:<br />
<pre><br />
yaourt -Syu<br />
</pre><br />
ну или хотя бы синхронизировать репозитории<br />
<pre><br />
yaourt -Sy<br />
</pre><br />
<br />
== Установка android-sdk ==<br />
Тут есть три пути:<br />
<br />
* установить через систему управления пакетами arch linux yaourt.<br />
* установить через Eclipse.<br />
* поставить вручную.<br />
<br />
Последний вариант рассматривать не буду.<br />
<br />
{{Note|android-sdk существует только в варианте x86, в принципе это не проблема для x64, нужно только установить 32-х разрядные версии библиотек.<br />
Обратите на это внимание если выберите второй или третий вариант установки, иначе все установится, но работать не будет.}}<br />
<br />
=== Установка через yaourt. ===<br />
<pre><br />
# yaourt -S android-sdk<br />
</pre><br />
Преимуществом данного метода является то, что yaourt сам проследит и доставит все необходимые зависимости и про библиотеки можно не беспокоиться.<br />
<br />
Если ставили из под root, могут возникнуть трудности с доступом к папкам sdk, для устранения:<br />
<pre><br />
# chown -Rv <имя вашего пользователя> /opt/android-sdk<br />
</pre><br />
<br />
{{Note|На данный момент установлены только базовые компоненты android-sdk, о чем сказано в /opt/android-sdk/SDK Readme.txt}}<br />
<br />
Для установки всех компонентов:<br />
<pre><br />
# cd /opt/android-sdk<br />
#./tools/android<br />
</pre><br />
<br />
==== Настройка Netbeans ====<br />
Если вы пользуетесь IDE Netbeans, загрузите [http://www.nbandroid.org nbandroid]:<br />
<br />
Tools -> Plugins -> Settings<br />
<br />
Добавьте URL: http://kenai.com/projects/nbandroid/downloads/download/updatecenter/updates.xml<br />
<br />
Затем перейдите в '''Available Plugins''' и установите плагины '''Android''' и '''Android Test Runner''' для вашей версии IDE. После установки перейдите:<br />
<br />
Tools -> Options -> Miscellaneous -> Android<br />
<br />
и выберите путь Android SDK (обычно /opt/android-sdk). Доустановить необходимые пакеты и создать AVD можно в:<br />
<br />
Tools -> Android SDK and AVD manager<br />
<br />
Готово!<br />
<br />
=== Установка через Eclipse===<br />
Установка Eclipse:<br />
<pre><br />
#pacman -S eclipse<br />
</pre><br />
<br />
Устанавливаем все необходимые библиотеки:<br />
<pre><br />
# yaourt -S lib32-alsa-lib lib32-openal lib32-libstdc++5 lib32-libxv lib32-ncurses lib32-sdl lib32-zlib swt<br />
</pre><br />
Этот пункт не пройдет если вы не убрали комментарий с [multilib] в /etc/pacman.conf<br />
<br />
Запускаем Eclipse.<br />
<pre><br />
# eclipse<br />
</pre><br />
<br />
Далее идем в<br />
<br />
'''Help => Install New Software => Add'''<br />
<br />
'''Name: Indigo'''<br />
<br />
'''Location: http://download.eclipse.org/releases/indigo/'''<br />
<br />
Немного подождем, затем в последней категории:<br />
<br />
'''Web, XML, Java EE and OSGi Enterprise Development''' <br />
<br />
выбираем последний пункт<br />
<br />
'''WST Server Adapters'''<br />
<br />
Ну и устанавливаем выбранный компонент.<br />
<br />
Теперь опять идем в<br />
<br />
'''Help => Install New Software => Add'''<br />
<br />
'''Name: ADT plugin'''<br />
<br />
'''Location: https://dl-ssl.google.com/android/eclipse/'''<br />
<br />
'''Select All''' <br />
<br />
и заканчиваем установку.<br />
<br />
На панели Eclipse запускаем "Opens the Android SDK Manager"<br />
устанавливаем Tools и нужную нам версию платформы android.<br />
<br />
== Прописать PATH==<br />
Вне зависимости от того каким путем Вы установили android-sdk, желательно прописать PATH в .bashrc или .bash_profile<br />
В моем случае это:<br />
<pre><br />
PATH=$PATH:/home/anton/android/android-sdk/tools:/home/anton/android/android-sdk/platform-tools<br />
</pre><br />
<br />
Вот и все, приятной работы!</div>Alligatorhttps://wiki.archlinux.org/index.php?title=Network_Time_Protocol_daemon_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=251605Network Time Protocol daemon (Русский)2013-03-22T14:16:58Z<p>Alligator: /* Запуск ntpd */</p>
<hr />
<div>[[Category:Сеть (Русский)]]<br />
[[Category:Демоны и системные службы (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Network Time Protocol daemon]]<br />
[[es:Network Time Protocol daemon]]<br />
[[fr:ntp]]<br />
[[it:Network Time Protocol daemon]]<br />
[[zh-CN:Network Time Protocol daemon]]<br />
Эта статья описывает, как установить и настроить NTPd (Network Time Protocol daemon), наиболее распространенный способ синхронизации [[Time|часов]] в системе GNU/Linux с серверами в сети Интернет при помощи [[Wikipedia:NTP|NTP]]. Если все настроено правильно, Ваш компьютер тоже может выступать в роли сервера синхронизации времени.<br />
<br />
==Установка==<br />
Пакет {{Pkg|ntp}} доступен в репозитории [extra]:<br />
{{bc|# pacman -S ntp}}<br />
<br />
==Настройка==<br />
<br />
Самая первая строка в вашем файле {{ic|/etc/ntp.conf}} определяет серверы, с которыми планируется синхронизироваться.<br />
NTP использует иерархическую систему «часовых уровней». Уровень 1 синхронизован с высокоточными часами, например, с системой GPS, ГЛОНАСС (Единая Государственная шкала времени РФ) или атомным эталоном времени. Уровень 2 синхронизируется с одной из машин уровня 1, и так далее.<br />
<br />
Однако следует учитывать, что уровни не всегда являются показателями точности. Обычно для синхронизации пользовательских машин используются серверы третьего уровня. Если Вы не знаете серверов NTP в Вашем регионе, используйте [http://www.pool.ntp.org/ pool.ntp.org] и выберите сервер в Вашем регионе. Например, <br />
<br />
server 0.it.pool.ntp.org iburst<br />
server 1.it.pool.ntp.org iburst<br />
server 2.it.pool.ntp.org iburst<br />
server 3.it.pool.ntp.org iburst<br />
<br />
Опция 'iburst' рекомендуется, с ее помощью посылается шквал пакетов, если не удается установить соединение с сервером с первого раза. Напротив, опцию 'burst' не используйте никогда без особого разрешения, так как Вы можете попасть в "черный список".<br />
<br />
При настройке своего NTP сервера, нужно добавить ''localhost'' в список серверов, так как в случае потери соединения с сетью Интернет, сервер продолжит синхрозировать время в сети. Для этого добавьте ''localhost'' как сервер десятого уровня при помощи команды {{Ic|fudge}}, чтобы синхронизация не происходила, пока соединение с Интернет доступно:<br />
<br />
server 127.127.1.0<br />
fudge 127.127.1.0 stratum 10<br />
<br />
Затем, определите правила, по которым к Вашему серверу смогут подключаться клиенты (''localhost'' - это тоже клиент) при помощи команды ''restrict''. Также добавьте в файл конфигурации:<br />
<br />
restrict default nomodify nopeer<br />
<br />
Эти настройки не позволят пользователям изменять что-либо. Можете также добавить следующие опции:<br />
<br />
restrict default kod nomodify notrap nopeer noquery<br />
<br />
Теперь нужно указать ntpd, какие подключения к Вашему серверу разрешены; если Вы не конфигурируете сервер NTP, следующей строки будет достаточно:<br />
<br />
restrict 127.0.0.1<br />
<br />
В противном случае, можно добавить больше клиентов:<br />
<br />
restrict 1.2.3.4 nomodify<br />
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap<br />
<br />
Эти строки укажут ''ntpd'', что адресам 1.2.3.4, а также всем адресам подсети 192.168.0.0/24 позволено синхронизировать время с Вашим сервером, но не позволено ничего изменять.<br />
<br />
Если Вы желаете принудительно определить адреса по протоколу IPv6, напишите ''-6'' перед IP-адресом или именем хоста (''-4'' принудительно устанавливает протокол IPv4), например:<br />
<br />
restrict -6 default nomodify nopeer<br />
restrict -6 ::1 # ::1 - это 127.0.0.1 в шестой версии протокола IP<br />
<br />
Наконец, установите файл-буфер (в котором будет находиться погрешность часов системы) и журнал (лог):<br />
<br />
driftfile /var/lib/ntp/ntp.drift<br />
logfile /var/log/ntp.log<br />
<br />
Примерная конфигурация выглядит так:<br />
<br />
{{hc|/etc/ntp.conf|<br />
server 0.it.pool.ntp.org iburst<br />
server 1.it.pool.ntp.org iburst<br />
server 2.it.pool.ntp.org iburst<br />
server 3.it.pool.ntp.org iburst<br />
<br />
restrict default nomodify nopeer<br />
restrict 127.0.0.1<br />
<br />
driftfile /var/lib/ntp/ntp.drift<br />
logfile /var/log/ntp.log<br />
}}<br />
<br />
Вообще, журнал (лог) устанавливать необязательно, но рекомендуется для того, чтобы знать, какие изменения проводит ''ntpd''.<br />
<br />
В заключении, никогда не забывайте читать man: {{Ic|man ntp.conf}}. Это ответит на многие Ваши вопросы. Также можно посмотреть {{Ic|man <nowiki>{ntpd|ntp_auth|ntp_mon|ntp_acc|ntp_clock|ntp_misc}</nowiki>}}).<br />
<br />
{{Gentoo|NTP}}<br />
<br />
==Запуск демона==<br />
===Запуск ntpd===<br />
Если Вы используете sysvinit:<br />
{{bc|# /etc/rc.d/ntpd start}}<br />
<br />
Поместите ''ntpd'' в массив DAEMONS в файле {{ic|/etc/rc.conf}}, чтобы он загружался при старте системы:<br />
<br />
{{hc|/etc/rc.conf|2=<br />
...<br />
<br />
DAEMONS=(... ntpd ...)<br />
}}<br />
<br />
Если Вы используете systemd:<br />
<br />
{{ic|systemctl start ntpd}}<br />
<br />
Для загрузки при старте системы<br />
<br />
{{ic|systemctl enable ntpd}}<br />
<br />
===NetworkManager===<br />
''ntpd'' можно включать/выключать вместе со стартом сетевого соединения с помощью networkmanager-dispatcher-ntpd:<br />
<br />
{{bc|# pacman -S networkmanager-dispatcher-ntpd}}<br />
<br />
===Использование не root-пользователем===<br />
Если программа скомпилирована с флагом ''--enable-linux-caps'', ntpd может запустить не root-пользователь (стандартный пакет в Arch Linux имеет эту опцию).<br />
<br />
{{Note|Перед тем, как выполнять следующие действия, убедитесь, что файл {{ic|/var/lib/ntp/ntp.drift}} существует.}}<br />
<br />
Создайте группу ''ntp'' и пользователя ''ntp'':<br />
<br />
{{bc|# groupadd ntp<br><br />
<nowiki>#</nowiki> useradd -r -d /var/lib/ntp -g ntp -s /bin/false ntp}}<br />
<br />
Смените владельца директории ntp на пользователя ntp:<br />
<br />
{{bc|# chown -R ntp:ntp /var/lib/ntp}}<br />
<br />
Отредактируйте {{ic|/etc/conf.d/ntp-client.conf}} и измените<br />
<br />
NTPD_ARGS="-g"<br />
<br />
на<br />
<br />
NTPD_ARGS="-g -u ntp:ntp"<br />
<br />
Наконец, перезапустите демона:<br />
<br />
{{bc|# /etc/rc.d/ntpd restart}}<br />
<br />
==Синхронизация часов без запуска демона==<br />
Если Вы просто хотите синхронизировать часы без запуска демона ''ntpd'', добавьте в файл {{ic|/etc/rc.local}} следующее:<br />
<br />
ntpd -qg &<br />
<br />
{{Note|<br />
* Если Вы хотите использовать этот метод, убедитесь, что на момент обработки файла {{ic|rc.local}} сетевое соединение уже установлено (например, Вам не следует запускать демон для подключения к сети Интернет в фоновом режиме (знак "@" перед демоном) в файле {{ic|/etc/rc.conf}})<br />
* Аппаратные часы автоматически подстраиваются по часам системы каждый раз, когда Вы выключаете компьютер, через команду в файле {{ic|/etc/rc.shutdown}}<br />
}}<br />
{{Warning|<br />
* Использование этого метода весьма не рекомендуется для серверов, да и для обычных компьютеров, которым приходится работать по 2-3 дня, так как время синхронизируется только один раз при старте системы.<br />
* Запуск "{{Ic|ntpd -qg}}" через событие планировщика задач ''cron'' вообще нужно избегать, если Вы не знаете, к чему приведет мгновенное изменение времени во время работы Ваших программ.<br />
}}<br />
<br />
==Альтернативы==<br />
Доступная альтернатива ''ntpd'' - это [[OpenNTPD]], часть проекта OpenBSD (не поддерживается сообществом Linux).<br />
<br />
==См. также==<br />
* [[Time (Русский)|Время]] - дополнительная информация об аппаратных и системных часах в Linux.<br />
* [http://www.vniiftri.ru/rus/news/91.html ВНИИФТРИ] - список серверов NTP Государственного эталона времени и частоты (ГЭВЧ) Российской Федерации.<br />
<br />
==Внешние источники==<br />
* http://www.ntp.org/<br />
* http://support.ntp.org/<br />
* http://www.pool.ntp.org/<br />
* http://www.eecis.udel.edu/~mills/ntp/html/index.html</div>Alligatorhttps://wiki.archlinux.org/index.php?title=Network_Time_Protocol_daemon_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=251604Network Time Protocol daemon (Русский)2013-03-22T14:16:45Z<p>Alligator: /* Запуск ntpd */</p>
<hr />
<div>[[Category:Сеть (Русский)]]<br />
[[Category:Демоны и системные службы (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Network Time Protocol daemon]]<br />
[[es:Network Time Protocol daemon]]<br />
[[fr:ntp]]<br />
[[it:Network Time Protocol daemon]]<br />
[[zh-CN:Network Time Protocol daemon]]<br />
Эта статья описывает, как установить и настроить NTPd (Network Time Protocol daemon), наиболее распространенный способ синхронизации [[Time|часов]] в системе GNU/Linux с серверами в сети Интернет при помощи [[Wikipedia:NTP|NTP]]. Если все настроено правильно, Ваш компьютер тоже может выступать в роли сервера синхронизации времени.<br />
<br />
==Установка==<br />
Пакет {{Pkg|ntp}} доступен в репозитории [extra]:<br />
{{bc|# pacman -S ntp}}<br />
<br />
==Настройка==<br />
<br />
Самая первая строка в вашем файле {{ic|/etc/ntp.conf}} определяет серверы, с которыми планируется синхронизироваться.<br />
NTP использует иерархическую систему «часовых уровней». Уровень 1 синхронизован с высокоточными часами, например, с системой GPS, ГЛОНАСС (Единая Государственная шкала времени РФ) или атомным эталоном времени. Уровень 2 синхронизируется с одной из машин уровня 1, и так далее.<br />
<br />
Однако следует учитывать, что уровни не всегда являются показателями точности. Обычно для синхронизации пользовательских машин используются серверы третьего уровня. Если Вы не знаете серверов NTP в Вашем регионе, используйте [http://www.pool.ntp.org/ pool.ntp.org] и выберите сервер в Вашем регионе. Например, <br />
<br />
server 0.it.pool.ntp.org iburst<br />
server 1.it.pool.ntp.org iburst<br />
server 2.it.pool.ntp.org iburst<br />
server 3.it.pool.ntp.org iburst<br />
<br />
Опция 'iburst' рекомендуется, с ее помощью посылается шквал пакетов, если не удается установить соединение с сервером с первого раза. Напротив, опцию 'burst' не используйте никогда без особого разрешения, так как Вы можете попасть в "черный список".<br />
<br />
При настройке своего NTP сервера, нужно добавить ''localhost'' в список серверов, так как в случае потери соединения с сетью Интернет, сервер продолжит синхрозировать время в сети. Для этого добавьте ''localhost'' как сервер десятого уровня при помощи команды {{Ic|fudge}}, чтобы синхронизация не происходила, пока соединение с Интернет доступно:<br />
<br />
server 127.127.1.0<br />
fudge 127.127.1.0 stratum 10<br />
<br />
Затем, определите правила, по которым к Вашему серверу смогут подключаться клиенты (''localhost'' - это тоже клиент) при помощи команды ''restrict''. Также добавьте в файл конфигурации:<br />
<br />
restrict default nomodify nopeer<br />
<br />
Эти настройки не позволят пользователям изменять что-либо. Можете также добавить следующие опции:<br />
<br />
restrict default kod nomodify notrap nopeer noquery<br />
<br />
Теперь нужно указать ntpd, какие подключения к Вашему серверу разрешены; если Вы не конфигурируете сервер NTP, следующей строки будет достаточно:<br />
<br />
restrict 127.0.0.1<br />
<br />
В противном случае, можно добавить больше клиентов:<br />
<br />
restrict 1.2.3.4 nomodify<br />
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap<br />
<br />
Эти строки укажут ''ntpd'', что адресам 1.2.3.4, а также всем адресам подсети 192.168.0.0/24 позволено синхронизировать время с Вашим сервером, но не позволено ничего изменять.<br />
<br />
Если Вы желаете принудительно определить адреса по протоколу IPv6, напишите ''-6'' перед IP-адресом или именем хоста (''-4'' принудительно устанавливает протокол IPv4), например:<br />
<br />
restrict -6 default nomodify nopeer<br />
restrict -6 ::1 # ::1 - это 127.0.0.1 в шестой версии протокола IP<br />
<br />
Наконец, установите файл-буфер (в котором будет находиться погрешность часов системы) и журнал (лог):<br />
<br />
driftfile /var/lib/ntp/ntp.drift<br />
logfile /var/log/ntp.log<br />
<br />
Примерная конфигурация выглядит так:<br />
<br />
{{hc|/etc/ntp.conf|<br />
server 0.it.pool.ntp.org iburst<br />
server 1.it.pool.ntp.org iburst<br />
server 2.it.pool.ntp.org iburst<br />
server 3.it.pool.ntp.org iburst<br />
<br />
restrict default nomodify nopeer<br />
restrict 127.0.0.1<br />
<br />
driftfile /var/lib/ntp/ntp.drift<br />
logfile /var/log/ntp.log<br />
}}<br />
<br />
Вообще, журнал (лог) устанавливать необязательно, но рекомендуется для того, чтобы знать, какие изменения проводит ''ntpd''.<br />
<br />
В заключении, никогда не забывайте читать man: {{Ic|man ntp.conf}}. Это ответит на многие Ваши вопросы. Также можно посмотреть {{Ic|man <nowiki>{ntpd|ntp_auth|ntp_mon|ntp_acc|ntp_clock|ntp_misc}</nowiki>}}).<br />
<br />
{{Gentoo|NTP}}<br />
<br />
==Запуск демона==<br />
===Запуск ntpd===<br />
Если Вы используете sysvinit:<br />
{{bc|# /etc/rc.d/ntpd start}}<br />
<br />
Поместите ''ntpd'' в массив DAEMONS в файле {{ic|/etc/rc.conf}}, чтобы он загружался при старте системы:<br />
<br />
{{hc|/etc/rc.conf|2=<br />
...<br />
<br />
DAEMONS=(... ntpd ...)<br />
}}<br />
<br />
<br />
<br />
Если Вы используете systemd:<br />
<br />
{{ic|systemctl start ntpd}}<br />
<br />
Для загрузки при старте системы<br />
<br />
{{ic|systemctl enable ntpd}}<br />
<br />
===NetworkManager===<br />
''ntpd'' можно включать/выключать вместе со стартом сетевого соединения с помощью networkmanager-dispatcher-ntpd:<br />
<br />
{{bc|# pacman -S networkmanager-dispatcher-ntpd}}<br />
<br />
===Использование не root-пользователем===<br />
Если программа скомпилирована с флагом ''--enable-linux-caps'', ntpd может запустить не root-пользователь (стандартный пакет в Arch Linux имеет эту опцию).<br />
<br />
{{Note|Перед тем, как выполнять следующие действия, убедитесь, что файл {{ic|/var/lib/ntp/ntp.drift}} существует.}}<br />
<br />
Создайте группу ''ntp'' и пользователя ''ntp'':<br />
<br />
{{bc|# groupadd ntp<br><br />
<nowiki>#</nowiki> useradd -r -d /var/lib/ntp -g ntp -s /bin/false ntp}}<br />
<br />
Смените владельца директории ntp на пользователя ntp:<br />
<br />
{{bc|# chown -R ntp:ntp /var/lib/ntp}}<br />
<br />
Отредактируйте {{ic|/etc/conf.d/ntp-client.conf}} и измените<br />
<br />
NTPD_ARGS="-g"<br />
<br />
на<br />
<br />
NTPD_ARGS="-g -u ntp:ntp"<br />
<br />
Наконец, перезапустите демона:<br />
<br />
{{bc|# /etc/rc.d/ntpd restart}}<br />
<br />
==Синхронизация часов без запуска демона==<br />
Если Вы просто хотите синхронизировать часы без запуска демона ''ntpd'', добавьте в файл {{ic|/etc/rc.local}} следующее:<br />
<br />
ntpd -qg &<br />
<br />
{{Note|<br />
* Если Вы хотите использовать этот метод, убедитесь, что на момент обработки файла {{ic|rc.local}} сетевое соединение уже установлено (например, Вам не следует запускать демон для подключения к сети Интернет в фоновом режиме (знак "@" перед демоном) в файле {{ic|/etc/rc.conf}})<br />
* Аппаратные часы автоматически подстраиваются по часам системы каждый раз, когда Вы выключаете компьютер, через команду в файле {{ic|/etc/rc.shutdown}}<br />
}}<br />
{{Warning|<br />
* Использование этого метода весьма не рекомендуется для серверов, да и для обычных компьютеров, которым приходится работать по 2-3 дня, так как время синхронизируется только один раз при старте системы.<br />
* Запуск "{{Ic|ntpd -qg}}" через событие планировщика задач ''cron'' вообще нужно избегать, если Вы не знаете, к чему приведет мгновенное изменение времени во время работы Ваших программ.<br />
}}<br />
<br />
==Альтернативы==<br />
Доступная альтернатива ''ntpd'' - это [[OpenNTPD]], часть проекта OpenBSD (не поддерживается сообществом Linux).<br />
<br />
==См. также==<br />
* [[Time (Русский)|Время]] - дополнительная информация об аппаратных и системных часах в Linux.<br />
* [http://www.vniiftri.ru/rus/news/91.html ВНИИФТРИ] - список серверов NTP Государственного эталона времени и частоты (ГЭВЧ) Российской Федерации.<br />
<br />
==Внешние источники==<br />
* http://www.ntp.org/<br />
* http://support.ntp.org/<br />
* http://www.pool.ntp.org/<br />
* http://www.eecis.udel.edu/~mills/ntp/html/index.html</div>Alligatorhttps://wiki.archlinux.org/index.php?title=Network_Time_Protocol_daemon_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=251603Network Time Protocol daemon (Русский)2013-03-22T14:16:07Z<p>Alligator: /* Запуск ntpd */</p>
<hr />
<div>[[Category:Сеть (Русский)]]<br />
[[Category:Демоны и системные службы (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Network Time Protocol daemon]]<br />
[[es:Network Time Protocol daemon]]<br />
[[fr:ntp]]<br />
[[it:Network Time Protocol daemon]]<br />
[[zh-CN:Network Time Protocol daemon]]<br />
Эта статья описывает, как установить и настроить NTPd (Network Time Protocol daemon), наиболее распространенный способ синхронизации [[Time|часов]] в системе GNU/Linux с серверами в сети Интернет при помощи [[Wikipedia:NTP|NTP]]. Если все настроено правильно, Ваш компьютер тоже может выступать в роли сервера синхронизации времени.<br />
<br />
==Установка==<br />
Пакет {{Pkg|ntp}} доступен в репозитории [extra]:<br />
{{bc|# pacman -S ntp}}<br />
<br />
==Настройка==<br />
<br />
Самая первая строка в вашем файле {{ic|/etc/ntp.conf}} определяет серверы, с которыми планируется синхронизироваться.<br />
NTP использует иерархическую систему «часовых уровней». Уровень 1 синхронизован с высокоточными часами, например, с системой GPS, ГЛОНАСС (Единая Государственная шкала времени РФ) или атомным эталоном времени. Уровень 2 синхронизируется с одной из машин уровня 1, и так далее.<br />
<br />
Однако следует учитывать, что уровни не всегда являются показателями точности. Обычно для синхронизации пользовательских машин используются серверы третьего уровня. Если Вы не знаете серверов NTP в Вашем регионе, используйте [http://www.pool.ntp.org/ pool.ntp.org] и выберите сервер в Вашем регионе. Например, <br />
<br />
server 0.it.pool.ntp.org iburst<br />
server 1.it.pool.ntp.org iburst<br />
server 2.it.pool.ntp.org iburst<br />
server 3.it.pool.ntp.org iburst<br />
<br />
Опция 'iburst' рекомендуется, с ее помощью посылается шквал пакетов, если не удается установить соединение с сервером с первого раза. Напротив, опцию 'burst' не используйте никогда без особого разрешения, так как Вы можете попасть в "черный список".<br />
<br />
При настройке своего NTP сервера, нужно добавить ''localhost'' в список серверов, так как в случае потери соединения с сетью Интернет, сервер продолжит синхрозировать время в сети. Для этого добавьте ''localhost'' как сервер десятого уровня при помощи команды {{Ic|fudge}}, чтобы синхронизация не происходила, пока соединение с Интернет доступно:<br />
<br />
server 127.127.1.0<br />
fudge 127.127.1.0 stratum 10<br />
<br />
Затем, определите правила, по которым к Вашему серверу смогут подключаться клиенты (''localhost'' - это тоже клиент) при помощи команды ''restrict''. Также добавьте в файл конфигурации:<br />
<br />
restrict default nomodify nopeer<br />
<br />
Эти настройки не позволят пользователям изменять что-либо. Можете также добавить следующие опции:<br />
<br />
restrict default kod nomodify notrap nopeer noquery<br />
<br />
Теперь нужно указать ntpd, какие подключения к Вашему серверу разрешены; если Вы не конфигурируете сервер NTP, следующей строки будет достаточно:<br />
<br />
restrict 127.0.0.1<br />
<br />
В противном случае, можно добавить больше клиентов:<br />
<br />
restrict 1.2.3.4 nomodify<br />
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap<br />
<br />
Эти строки укажут ''ntpd'', что адресам 1.2.3.4, а также всем адресам подсети 192.168.0.0/24 позволено синхронизировать время с Вашим сервером, но не позволено ничего изменять.<br />
<br />
Если Вы желаете принудительно определить адреса по протоколу IPv6, напишите ''-6'' перед IP-адресом или именем хоста (''-4'' принудительно устанавливает протокол IPv4), например:<br />
<br />
restrict -6 default nomodify nopeer<br />
restrict -6 ::1 # ::1 - это 127.0.0.1 в шестой версии протокола IP<br />
<br />
Наконец, установите файл-буфер (в котором будет находиться погрешность часов системы) и журнал (лог):<br />
<br />
driftfile /var/lib/ntp/ntp.drift<br />
logfile /var/log/ntp.log<br />
<br />
Примерная конфигурация выглядит так:<br />
<br />
{{hc|/etc/ntp.conf|<br />
server 0.it.pool.ntp.org iburst<br />
server 1.it.pool.ntp.org iburst<br />
server 2.it.pool.ntp.org iburst<br />
server 3.it.pool.ntp.org iburst<br />
<br />
restrict default nomodify nopeer<br />
restrict 127.0.0.1<br />
<br />
driftfile /var/lib/ntp/ntp.drift<br />
logfile /var/log/ntp.log<br />
}}<br />
<br />
Вообще, журнал (лог) устанавливать необязательно, но рекомендуется для того, чтобы знать, какие изменения проводит ''ntpd''.<br />
<br />
В заключении, никогда не забывайте читать man: {{Ic|man ntp.conf}}. Это ответит на многие Ваши вопросы. Также можно посмотреть {{Ic|man <nowiki>{ntpd|ntp_auth|ntp_mon|ntp_acc|ntp_clock|ntp_misc}</nowiki>}}).<br />
<br />
{{Gentoo|NTP}}<br />
<br />
==Запуск демона==<br />
===Запуск ntpd===<br />
Если Вы используете sysvinit:<br />
{{bc|# /etc/rc.d/ntpd start}}<br />
<br />
Поместите ''ntpd'' в массив DAEMONS в файле {{ic|/etc/rc.conf}}, чтобы он загружался при старте системы:<br />
<br />
{{hc|/etc/rc.conf|2=<br />
...<br />
<br />
DAEMONS=(... ntpd ...)<br />
}}<br />
<br />
Если Вы используете systemd:<br />
{{ic|systemctl start ntpd}}<br />
Для загрузки при старте системы<br />
{{ic|systemctl enable ntpd}}<br />
<br />
===NetworkManager===<br />
''ntpd'' можно включать/выключать вместе со стартом сетевого соединения с помощью networkmanager-dispatcher-ntpd:<br />
<br />
{{bc|# pacman -S networkmanager-dispatcher-ntpd}}<br />
<br />
===Использование не root-пользователем===<br />
Если программа скомпилирована с флагом ''--enable-linux-caps'', ntpd может запустить не root-пользователь (стандартный пакет в Arch Linux имеет эту опцию).<br />
<br />
{{Note|Перед тем, как выполнять следующие действия, убедитесь, что файл {{ic|/var/lib/ntp/ntp.drift}} существует.}}<br />
<br />
Создайте группу ''ntp'' и пользователя ''ntp'':<br />
<br />
{{bc|# groupadd ntp<br><br />
<nowiki>#</nowiki> useradd -r -d /var/lib/ntp -g ntp -s /bin/false ntp}}<br />
<br />
Смените владельца директории ntp на пользователя ntp:<br />
<br />
{{bc|# chown -R ntp:ntp /var/lib/ntp}}<br />
<br />
Отредактируйте {{ic|/etc/conf.d/ntp-client.conf}} и измените<br />
<br />
NTPD_ARGS="-g"<br />
<br />
на<br />
<br />
NTPD_ARGS="-g -u ntp:ntp"<br />
<br />
Наконец, перезапустите демона:<br />
<br />
{{bc|# /etc/rc.d/ntpd restart}}<br />
<br />
==Синхронизация часов без запуска демона==<br />
Если Вы просто хотите синхронизировать часы без запуска демона ''ntpd'', добавьте в файл {{ic|/etc/rc.local}} следующее:<br />
<br />
ntpd -qg &<br />
<br />
{{Note|<br />
* Если Вы хотите использовать этот метод, убедитесь, что на момент обработки файла {{ic|rc.local}} сетевое соединение уже установлено (например, Вам не следует запускать демон для подключения к сети Интернет в фоновом режиме (знак "@" перед демоном) в файле {{ic|/etc/rc.conf}})<br />
* Аппаратные часы автоматически подстраиваются по часам системы каждый раз, когда Вы выключаете компьютер, через команду в файле {{ic|/etc/rc.shutdown}}<br />
}}<br />
{{Warning|<br />
* Использование этого метода весьма не рекомендуется для серверов, да и для обычных компьютеров, которым приходится работать по 2-3 дня, так как время синхронизируется только один раз при старте системы.<br />
* Запуск "{{Ic|ntpd -qg}}" через событие планировщика задач ''cron'' вообще нужно избегать, если Вы не знаете, к чему приведет мгновенное изменение времени во время работы Ваших программ.<br />
}}<br />
<br />
==Альтернативы==<br />
Доступная альтернатива ''ntpd'' - это [[OpenNTPD]], часть проекта OpenBSD (не поддерживается сообществом Linux).<br />
<br />
==См. также==<br />
* [[Time (Русский)|Время]] - дополнительная информация об аппаратных и системных часах в Linux.<br />
* [http://www.vniiftri.ru/rus/news/91.html ВНИИФТРИ] - список серверов NTP Государственного эталона времени и частоты (ГЭВЧ) Российской Федерации.<br />
<br />
==Внешние источники==<br />
* http://www.ntp.org/<br />
* http://support.ntp.org/<br />
* http://www.pool.ntp.org/<br />
* http://www.eecis.udel.edu/~mills/ntp/html/index.html</div>Alligatorhttps://wiki.archlinux.org/index.php?title=MATE_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=245789MATE (Русский)2013-02-01T01:52:40Z<p>Alligator: /* Без менеджера входа (startx) */</p>
<hr />
<div>[[Category:Desktop environments (Русский)]]<br />
<br />
[[en:MATE]]<br />
[[it:MATE]]<br />
[[zh-CN:MATE]]<br />
Проект MATE Desktop Environment - это форк GNOME 2 и попытка его дальнейшего развития. Более подробная информация [https://bbs.archlinux.org/viewtopic.php?id=121162 находится в этой ветке форума]<br />
<br />
==Получение MATE==<br />
<br />
MATE доступен в AUR ({{AUR|mate-desktop-environment}}), размещён на [https://github.com/Perberos/Mate-Desktop-Environment Github] и на двух зеркалах pacman.<br />
<br />
==Установка==<br />
<br />
Для установки MATE через pacman добавьте одно из следующих зеркал в конфигурационный файл /etc/pacman.conf:<br />
<br />
[mate]<br />
Server = http://packages.mate-desktop.org/repo/archlinux/i686/<br />
Server = http://packages.mate-desktop.org/repo/archlinux/x86_64/<br />
<br />
{{Note|Эти зеркала поддерживаются членами сообщества.}}<br />
<br />
Затем:<br />
<br />
# pacman -Syy<br />
# pacman -S mate<br />
<br />
Очень вероятно, что будут некоторые конфликты файлов при установке. Просто переименуйте проблемные файлы или устанавливайте с флагом --force.<br />
<br />
Вам также потребуется менеджер входа (gdm, kdm, slim и т.п.) и dbus.<br />
<br />
{{Note|Сейчас многие пакеты MATE конфликтуют или замещают некоторые пакеты GNOME.}}<br />
<br />
==Запуск MATE==<br />
<br />
Перед запуском MATE убедитесь, что dbus присутствует в массиве DAEMONS файла /etc/rc.conf.<br />
<br />
===GDM (Old)===<br />
<br />
Если вы используете gdm-old из AUR, просто выберите сессию MATE из списка сессий. При первом запуске MATE убедитесь, что нажали "Только эта сессия" при запросе.<br />
<br />
===Без менеджера входа (startx)===<br />
<br />
Для того, чтобы запустить MATE без менеджера входа, Вам необходимо добавить:<br />
<br />
exec ck-launch-session mate-session<br />
<br />
в файл: ~/.xinitrc и затем выполнить:<br />
<br />
$ startx<br />
<br />
==Ребрендинг основных приложений==<br />
<br />
Важно заметить, что многие основные приложения GNOME были переименованы для MATE, в соответствии с условиями их лицензии. Вот некоторые примеры переименования приложений GNOME -> MATE. <br />
<br />
* Nautilus переименован в '''caja'''<br />
* Metacity переименован в '''marco'''<br />
* Gconf переименован в '''mate-conf'''<br />
<br />
У остальных приложений и основных компонентов с префиксом GNOME (таких, как GNOME Panel, GNOME Menus и т.п.) были просто изменены префиксы на "MATE" (например: MATE Panel и MATE Menus).<br />
<br />
==Дополнительные приложения==<br />
<br />
Ещё не все дополнительные приложения GNOME, написанные на GTK2, были форкнуты. Следующие приложения '''доступны''' в MATE:<br />
<br />
* Totem (mate-video-player)<br />
* Eye of GNOME (mate-image-viewer)<br />
* Gedit (mate-text-editor)<br />
* File Roller (mate-extract)<br />
* GNOME Panel applets (mate-applets)<br />
* GNOME Terminal (mate-terminal)<br />
<br />
Если вы используете NetworkManager для подключения к интернету, то можете установить {{AUR|network-manager-applet-gtk2}} из AUR, чтобы иметь возможность использовать сетевой апплет (nm-applet) на GTK2 для панели GNOME. Вам необходимо изменить PKGBUILD так, чтобы он зависел от mate-bluetooth вместо gnome-bluetooth, чтобы предотвратить рекурсивные зависимости от gnome-desktop.<br />
<br />
==Использование Compiz Fusion без Emerald==<br />
<br />
Если вы хотите использовать Marco с [[Compiz Fusion]], установите и запустите Compiz Fusion как обычно и установите пакет ''gtk-window-decorator'', затем выполните следующие команды для создания символических ссылок:<br />
<br />
# ln -s /usr/lib/libmarco-private.so.0 /usr/lib/libmetacity-private.so.0<br />
<br />
Включите плагин декорации окон в менеджере настроек Compiz Fusion и выполните в командной строке:<br />
<br />
gtk-window-decorator --replace<br />
<br />
Тем не менее, без перекомпиляции gtk-window-decorator, необходимые ключи mateconf не будут созданы и вы будете привязанны к основным декорациям Cairo. Возможно создать эти ключи самостоятельно.<br />
<br />
==Известные проблемы==<br />
<br />
===Случаи бесконечного перезапуска файлового менеджера===<br />
<br />
После входа в систему вы можете обнаружить, что файловый менеджер Caja постоянно перезапускается и никогда не завершается. Временное исправление проблемы делается с помощью следующей команды:<br />
<br />
# ln -s /usr/lib/libgnutls.so /usr/lib/libgnutls.so.26<br />
<br />
После этого перезайдите в систему.<br />
<br />
Это также может исправить проблему с добавлением апплета часов на панель.<br />
<br />
===Qt-приложения не стилизованы под GTK2===<br />
<br />
Вы можете обнаружить, что приложения, написанные на Qt4, не наследуют темы GTK2 как должны. Это может быть исправлено просто - установкой libgnomeui с флагом --force. Вероятно, это будет исправлено в течение развития проекта MATE.<br />
<br />
===Evolution Email не работает===<br />
<br />
Пожалуйста, посмотрите [[Evolution#Using_Evolution_Outside_Of_Gnome]].<br />
<br />
===Не работает отправка файлов по Bluetooth===<br />
<br />
Отправка файлов при использовании mate-bluetooth-applet может завершаться с ошибкой <br />
The name.org.openobex.client was not provided any .service files". <br />
Чтобы это исправить, достаточно понизить версию bluez до 4.56-1 с помощью downgrade (доступно в AUR)</div>Alligatorhttps://wiki.archlinux.org/index.php?title=Kernel_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=242048Kernel (Русский)2012-12-29T00:35:57Z<p>Alligator: </p>
<hr />
<div>[[Category:Kernel (Русский)]]<br />
[[cs:Kernel Compilation]]<br />
[[es:Kernel Compilation]]<br />
[[it:Kernels]]<br />
[[zh-CN:Kernels]]<br />
{{Article summary start}}<br />
{{Article summary text|This article discusses kernels in Arch, kernel patches and kernel compilation.}}<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|Kernel modules}}<br />
{{Article summary wiki|Kernel Panics}}<br />
{{Article summary wiki|Linux-ck}}<br />
{{Article summary wiki|sysctl}}<br />
{{Article summary end}}<br />
<br />
Из [http://ru.wikipedia.org/wiki/Ядро_операционной_системы Wikipedia]:<br />
:''Ядро́ — центральная часть операционной системы (ОС), обеспечивающая приложениям координированный доступ к ресурсам компьютера, таким как процессорное время, память, внешнее аппаратное обеспечение, внешнее устройство ввода и вывода информации. Также обычно ядро предоставляет сервисы файловой системы и сетевых протоколов.''<br />
<br />
Существуют различные альтернативные доступные ядра Arch Linux в дополнение к магистральным Linux ядрам. В этой статье перечислены некоторые из вариантов, имеющихся в хранилищах, с кратким описанием каждого из них. Существует также описание патчей, которые могут быть применены к ядру. Статья заканчивается обзором пользовательской компиляции ядра со ссылками на различные методы.<br />
<br />
==Precompiled kernels==<br />
===Official packages===<br />
;{{Pkg|linux}}<br />
:Ядро Linux из репозитория [core]. Vanilla kernel из [https://projects.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/linux&id=ef9aa5b9e58936788a9e65e364f00a3cf6497230 three patches applied] (по состоянию на 3.1.3-1).<br />
<br />
;{{Pkg|linux-lts}}<br />
:Версия ядра Linux и модулей с долгосрочной поддержкой (LTS - Long Term Support) из репозитория [core].<br />
<br />
===AUR packages===<br />
;{{AUR|linux-bfs}}<br />
:Ядро Linux и модули с [[Wikipedia:Brain_Fuck_Scheduler|Brain Fuck Scheduler]] (BFS) - созданные Con Kolivas для PC с меньшим, чем 4096 ядрами и BFQ I/O scheduler в качестве дополнительного.<br />
<br />
;{{AUR|linux-ck}}<br />
:Ядро Linux собранное с набором патчей от Con Kolivas.<br />
:Additional options which can be toggled on/off in the [[PKGBUILD]] include: BFQ scheduler, nconfig, localmodconfig and use running kernel's config.<br />
<br />
:Эти патчи предназначены для улучшения отклика системы с особым упором на PC, но подходит для любой рабочей нагрузки. Ck патчи включают BFS.<br />
<br />
<br />
:За дополнительной информацией и инструкциями по установке, обратитесь к основной статье [[linux-ck]].<br />
<br />
;{{AUR|linux-eee-ck}}<br />
:The Linux Kernel and modules for the Asus Eee PC 701, built with Con Kolivas' ck1 patchset.<br />
<br />
;{{AUR|linux-fbcondecor}}<br />
:The Linux Kernel and modules with fbcondecor support.<br />
<br />
;{{AUR|linux-grsec}}<br />
:The Linux Kernel and modules with grsecurity and PaX patches for increased security.<br />
<br />
;{{AUR|linux-ice}}<br />
:The Linux Kernel and modules with gentoo-sources patchset and TuxOnIce support.<br />
<br />
;{{AUR|linux-lqx}}<br />
:[http://liquorix.net Liquorix] is a distro kernel replacement built using the best configuration and kernel sources for desktop, multimedia, and gaming workloads, often used as a Debian Linux performance replacement kernel. damentz, the maintainer of the Liquorix patchset, is a developer for the Zen patchset as well, so many of the improvements there are found in this patchset.<br />
<br />
;{{AUR|linux-pax}}<br />
:The Linux Kernel and modules with PaX patches for increased security.<br />
<br />
;{{AUR|linux-pf}}<br />
:Linux kernel and modules with the [http://pf.natalenko.name/ pf-kernel] patchset [-ck patchset (BFS included), TuxOnIce, BFQ], aufs2 and squashfs-lzma.<br />
<br />
;{{AUR|linux-vanilla}}<br />
:The Linux vanilla kernel and modules without Arch Linux patches.<br />
<br />
;{{AUR|linux-zen}}<br />
:The [http://zen-kernel.org Zen Kernel] is a the result of a collaborative effort of kernel hackers to provide the best Linux kernel possible for every day systems.<br />
<br />
;{{AUR|kernel-netbook}}<br />
:Static kernel for netbooks with Intel Atom N270/N280/N450/N550 such as the Eee PC with the add-on of external firmware ({{AUR|broadcom-wl}}) and patchset (BFS + TuxOnIce + BFQ optional) - Only Intel GPU<br />
<br />
;{{AUR|linux-lts-tresor}}<br />
:The stable LTS Linux Kernel and modules with integrated [http://www1.informatik.uni-erlangen.de/tresor TRESOR]<br />
<br />
==Patches and Patchsets==<br />
<br />
There are lots of reasons to patch your kernel, the major ones are for performance or support for non-mainline features such as reiser4 file system support. Other reasons might include fun and to see how it is done and what the improvements are.<br />
<br />
However, it is important to note that the best way to increase the speed of your system is to first tailor your kernel to your system, especially the architecture and processor type. For this reason using pre-packaged versions of custom kernels with generic architecture settings is not recommended or really worth it. A further benefit is that you can reduce the size of your kernel (and therefore build time) by not including support for things you do not have or use. For example, I always start with the stock kernel config when a new kernel version is released and I remove support for things like bluetooth, video4linux, 1000Mbit ethernet, etc. Stuff '''I''' know I won't use '''before''' I build my next kernel! However, this page is not about customizing your kernel config but I would recommend that as a first step to be combined with a patchset later.<br />
<br />
===How to install===<br />
<br />
The installation process of custom kernel packages relies on the Arch Build System (ABS). If you haven't built any custom packages yet you may consult the following articles: [[Arch Build System]] and [[Creating Packages]].<br />
<br />
If you haven't actually patched or customized a kernel before it is not that hard and there are many PKGBUILDs on the forum for individual patchsets. However, I would advise you to start from scratch with a bit of research on the benefits of each patchset rather than jumping on the nearest bandwagon! This way you'll learn much more about what you are doing rather than just choosing a kernel at startup and wondering what it actually does.<br />
<br />
See [[#Compilation]].<br />
<br />
===Major patchsets===<br />
<br />
First of all it is important to note that patchsets are developed by a variety of people. Some of these people are actually involved in the production of the linux kernel and others are hobbyists, which may reflect its level of reliability and stability.<br />
<br />
It is also worth noting that some patchsets are built on the back of other patchsets (which may or may not be reflected in the title of the patch). Patchsets (and kernel updates) can be released '''very''' frequently and often it is not worth keeping up with ALL of them so do not go crazy, unless you make it your hobby!<br />
<br />
You can search google for more sets - remember to use quotes {{ic|"-nitro"}} for example otherwise google will deliberately '''NOT''' show the results you want!<br />
<br />
{{note|This section is for '''information only''' - clearly no guarantees of stability or reliability are implied by inclusion on this page.}}<br />
<br />
====-ck ====<br />
<br />
These are patches designed to improve system responsiveness with specific emphasis on the desktop, but suitable to any workload. The patches are created and maintained by Con Kolivas, his site is at http://users.on.net/~ckolivas/kernel/. Con maintains a full set but also provides the patches broken down so you can add only those you prefer.<br />
<br />
The -ck patches can be found at http://ck.kolivas.org/patches/3.0/<br />
<br />
====-rt====<br />
<br />
This patchset is maintained by a small group of core developers, led by Ingo Molnar. This patch allows nearly all of the kernel to be preempted, with the exception of a few very small regions of code ("raw_spinlock critical regions"). This is done by replacing most kernel spinlocks with mutexes that support priority inheritance, as well as moving all interrupt and software interrupts to kernel threads. <br />
<br />
It further incorporates high resolution timers - a patch set, which is independently maintained.<br />
<br />
[as said from the [http://rt.wiki.kernel.org/index.php/CONFIG_PREEMPT_RT_Patch Real-Time Linux Wiki]]<br />
<br />
patch at http://www.kernel.org/pub/linux/kernel/projects/rt/<br />
<br />
====-bld====<br />
<br />
BLD is best described as a O(1) CPU picking technique. Which is done by reordering CPU runqueues based on runqueue loads. In other words, it keeps the scheduler aware of the load changes, which helps scheduler to keep runqueues in an order. This technique doesn't depend on scheduler ticks. The two most simple things in this technique are: load tracking and runqueue ordering; these are relatively simpler operations. Load tracking will be done whenever a load change happens on the system and based on this load change runqueue will be ordered. So, if we have an ordered runqueue from lowest to highest, then picking the less (or even busiest) runqueue is easy. Scheduler can pick the lowest runqueue without calculation and comparison at the time of placing a task in a runqueue. And while trying to distribute load at sched_exec and sched_fork our best choice is to pick the lowest busiest runqueue of the system. And in this way, system remains balanced without doing any load balancing. At the time of try_to_wake_up picking the idlest runqueue is topmost priority but it has been done as per domain basis to utilize CPU cache properly and it's an area where more concentration is requires.<br />
<br />
Google code Webpage: http://code.google.com/p/bld/<br />
<br />
Patches are only available for 3.3-rc3, 3.4-rc4 and 3.5.0.<br />
<br />
{{Warning|This scheduler is highly in development.}}<br />
<br />
====-grsecurity====<br />
<br />
Grsecurity is a security focused patchset. It adds numerous security related features such as Role-Based Access Control and utilizes features of the PaX project. It can be used on a desktop but a public server would receive the greatest benefit. Some applications are incompatible with the additional security measures implemented by this patchset. If this occurs, consider using a lower security level.<br />
<br />
The -grsecurity patches can be found at http://grsecurity.net<br />
<br />
====Tiny-Patches====<br />
The goal of [http://elinux.org/Linux_Tiny Linux Tiny] is to reduce its memory and disk footprint, as well as to add features to aid working on small systems. Target users are developers of embedded system and users of small or legacy machines such as 386s.<br />
<br />
Patch releases against the mainstream Linux kernel have been discontinued. The developers chose to focus on a few patches and spend their time trying to get them merged into the mainline kernel.<br />
<br />
====-pf====<br />
{{AUR|pf-kernel}} is yet another Linux kernel fork which provides you with a handful of awesome features not merged into mainline. It is based on neither existing Linux fork nor patchset, although some unofficial ports may be used if required patches haven't been released officially.<br />
The most prominent patches of linux-pf are TuxOnIce, the CK patchset (most notably BFS), AUFS3, LinuxIMQ, l7 filter and BFQ.<br />
<br />
===Individual patches===<br />
<br />
These are patches which can be simply included in any build of a vanilla kernel or incorporated (probably with some major tweaking) into another patchset. I have included some common ones for starters.<br />
<br />
====Reiser4====<br />
<br />
[[Reiser4]]<br />
<br />
====Gensplash/fbsplash====<br />
[[Gensplash]] - http://dev.gentoo.org/~spock/projects/<br />
<br />
== Compilation ==<br />
Arch Linux provides for several methods of kernel compilation.<br />
<br />
=== Using the Arch Build System (recommended) ===<br />
Using the [[Arch Build System]] is recommended to take advantage of the high quality of the existing {{Pkg|linux}} [[PKGBUILD]] and the benefits of [[Wikipedia:Package management system|package management]]. The PKGBUILD is structured so that you can stop the build after the source is downloaded and configure the kernel.<br />
<br />
See [[Kernels/Compilation/Arch Build System]].<br />
<br />
=== Traditional ===<br />
This method involves manually downloading a source tarball, and building in your home directory as normal user. Once configured, two compilation/installation methods are offered; the traditional manual method as well as makepkg/pacman.<br />
<br />
An advantage of the traditional method is that it will work on other Linux distributions. <br />
<br />
See [[Kernels/Compilation/Traditional]].<br />
<br />
===Proprietary NVIDIA driver===<br />
See [[NVIDIA#Alternate install: custom kernel]] for instructions on using the proprietary NVIDIA driver with a custom kernel.<br />
<br />
== See also ==<br />
*[http://www.kroah.com/lkn/ O'Reilly - Linux Kernel in a Nutshell] (free ebook)</div>Alligatorhttps://wiki.archlinux.org/index.php?title=Kernel_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=242046Kernel (Русский)2012-12-28T23:58:03Z<p>Alligator: </p>
<hr />
<div>[[Category:Kernel]]<br />
[[cs:Kernel Compilation]]<br />
[[es:Kernel Compilation]]<br />
[[it:Kernels]]<br />
[[zh-CN:Kernels]]<br />
{{Article summary start}}<br />
{{Article summary text|This article discusses kernels in Arch, kernel patches and kernel compilation.}}<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|Kernel modules}}<br />
{{Article summary wiki|Kernel Panics}}<br />
{{Article summary wiki|Linux-ck}}<br />
{{Article summary wiki|sysctl}}<br />
{{Article summary end}}<br />
<br />
Из [http://ru.wikipedia.org/wiki/Ядро_операционной_системы Wikipedia]:<br />
:''Ядро́ — центральная часть операционной системы (ОС), обеспечивающая приложениям координированный доступ к ресурсам компьютера, таким как процессорное время, память, внешнее аппаратное обеспечение, внешнее устройство ввода и вывода информации. Также обычно ядро предоставляет сервисы файловой системы и сетевых протоколов.''<br />
<br />
There are various alternative kernels available for Arch Linux in addition to the mainline Linux kernel. This article lists some of the options available in the repositories with a brief description of each. There is also a description of patches that can be applied to the system's kernel. The article ends with an overview of custom kernel compilation with links to various methods.<br />
<br />
==Precompiled kernels==<br />
===Official packages===<br />
;{{Pkg|linux}}<br />
:The Linux kernel and modules from the [core] repository. Vanilla kernel with [https://projects.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/linux&id=ef9aa5b9e58936788a9e65e364f00a3cf6497230 three patches applied] (as of 3.1.3-1).<br />
<br />
;{{Pkg|linux-lts}}<br />
:Long term support (LTS) Linux kernel and modules from the [core] repository.<br />
<br />
===AUR packages===<br />
;{{AUR|linux-bfs}}<br />
:Linux kernel and modules with the [[Wikipedia:Brain_Fuck_Scheduler|Brain Fuck Scheduler]] (BFS) - created by Con Kolivas for desktop computers with fewer than 4096 cores, with BFQ I/O scheduler as optional.<br />
<br />
;{{AUR|linux-ck}}<br />
:Linux Kernel built with Con Kolivas' ck1 patchset.<br />
:Additional options which can be toggled on/off in the [[PKGBUILD]] include: BFQ scheduler, nconfig, localmodconfig and use running kernel's config.<br />
:These are patches designed to improve system responsiveness with specific emphasis on the desktop, but suitable to any workload. The ck patches include BFS.<br />
:For further information and installation instructions, please read the [[linux-ck]] main article.<br />
<br />
;{{AUR|linux-eee-ck}}<br />
:The Linux Kernel and modules for the Asus Eee PC 701, built with Con Kolivas' ck1 patchset.<br />
<br />
;{{AUR|linux-fbcondecor}}<br />
:The Linux Kernel and modules with fbcondecor support.<br />
<br />
;{{AUR|linux-grsec}}<br />
:The Linux Kernel and modules with grsecurity and PaX patches for increased security.<br />
<br />
;{{AUR|linux-ice}}<br />
:The Linux Kernel and modules with gentoo-sources patchset and TuxOnIce support.<br />
<br />
;{{AUR|linux-lqx}}<br />
:[http://liquorix.net Liquorix] is a distro kernel replacement built using the best configuration and kernel sources for desktop, multimedia, and gaming workloads, often used as a Debian Linux performance replacement kernel. damentz, the maintainer of the Liquorix patchset, is a developer for the Zen patchset as well, so many of the improvements there are found in this patchset.<br />
<br />
;{{AUR|linux-pax}}<br />
:The Linux Kernel and modules with PaX patches for increased security.<br />
<br />
;{{AUR|linux-pf}}<br />
:Linux kernel and modules with the [http://pf.natalenko.name/ pf-kernel] patchset [-ck patchset (BFS included), TuxOnIce, BFQ], aufs2 and squashfs-lzma.<br />
<br />
;{{AUR|linux-vanilla}}<br />
:The Linux vanilla kernel and modules without Arch Linux patches.<br />
<br />
;{{AUR|linux-zen}}<br />
:The [http://zen-kernel.org Zen Kernel] is a the result of a collaborative effort of kernel hackers to provide the best Linux kernel possible for every day systems.<br />
<br />
;{{AUR|kernel-netbook}}<br />
:Static kernel for netbooks with Intel Atom N270/N280/N450/N550 such as the Eee PC with the add-on of external firmware ({{AUR|broadcom-wl}}) and patchset (BFS + TuxOnIce + BFQ optional) - Only Intel GPU<br />
<br />
;{{AUR|linux-lts-tresor}}<br />
:The stable LTS Linux Kernel and modules with integrated [http://www1.informatik.uni-erlangen.de/tresor TRESOR]<br />
<br />
==Patches and Patchsets==<br />
<br />
There are lots of reasons to patch your kernel, the major ones are for performance or support for non-mainline features such as reiser4 file system support. Other reasons might include fun and to see how it is done and what the improvements are.<br />
<br />
However, it is important to note that the best way to increase the speed of your system is to first tailor your kernel to your system, especially the architecture and processor type. For this reason using pre-packaged versions of custom kernels with generic architecture settings is not recommended or really worth it. A further benefit is that you can reduce the size of your kernel (and therefore build time) by not including support for things you do not have or use. For example, I always start with the stock kernel config when a new kernel version is released and I remove support for things like bluetooth, video4linux, 1000Mbit ethernet, etc. Stuff '''I''' know I won't use '''before''' I build my next kernel! However, this page is not about customizing your kernel config but I would recommend that as a first step to be combined with a patchset later.<br />
<br />
===How to install===<br />
<br />
The installation process of custom kernel packages relies on the Arch Build System (ABS). If you haven't built any custom packages yet you may consult the following articles: [[Arch Build System]] and [[Creating Packages]].<br />
<br />
If you haven't actually patched or customized a kernel before it is not that hard and there are many PKGBUILDs on the forum for individual patchsets. However, I would advise you to start from scratch with a bit of research on the benefits of each patchset rather than jumping on the nearest bandwagon! This way you'll learn much more about what you are doing rather than just choosing a kernel at startup and wondering what it actually does.<br />
<br />
See [[#Compilation]].<br />
<br />
===Major patchsets===<br />
<br />
First of all it is important to note that patchsets are developed by a variety of people. Some of these people are actually involved in the production of the linux kernel and others are hobbyists, which may reflect its level of reliability and stability.<br />
<br />
It is also worth noting that some patchsets are built on the back of other patchsets (which may or may not be reflected in the title of the patch). Patchsets (and kernel updates) can be released '''very''' frequently and often it is not worth keeping up with ALL of them so do not go crazy, unless you make it your hobby!<br />
<br />
You can search google for more sets - remember to use quotes {{ic|"-nitro"}} for example otherwise google will deliberately '''NOT''' show the results you want!<br />
<br />
{{note|This section is for '''information only''' - clearly no guarantees of stability or reliability are implied by inclusion on this page.}}<br />
<br />
====-ck ====<br />
<br />
These are patches designed to improve system responsiveness with specific emphasis on the desktop, but suitable to any workload. The patches are created and maintained by Con Kolivas, his site is at http://users.on.net/~ckolivas/kernel/. Con maintains a full set but also provides the patches broken down so you can add only those you prefer.<br />
<br />
The -ck patches can be found at http://ck.kolivas.org/patches/3.0/<br />
<br />
====-rt====<br />
<br />
This patchset is maintained by a small group of core developers, led by Ingo Molnar. This patch allows nearly all of the kernel to be preempted, with the exception of a few very small regions of code ("raw_spinlock critical regions"). This is done by replacing most kernel spinlocks with mutexes that support priority inheritance, as well as moving all interrupt and software interrupts to kernel threads. <br />
<br />
It further incorporates high resolution timers - a patch set, which is independently maintained.<br />
<br />
[as said from the [http://rt.wiki.kernel.org/index.php/CONFIG_PREEMPT_RT_Patch Real-Time Linux Wiki]]<br />
<br />
patch at http://www.kernel.org/pub/linux/kernel/projects/rt/<br />
<br />
====-bld====<br />
<br />
BLD is best described as a O(1) CPU picking technique. Which is done by reordering CPU runqueues based on runqueue loads. In other words, it keeps the scheduler aware of the load changes, which helps scheduler to keep runqueues in an order. This technique doesn't depend on scheduler ticks. The two most simple things in this technique are: load tracking and runqueue ordering; these are relatively simpler operations. Load tracking will be done whenever a load change happens on the system and based on this load change runqueue will be ordered. So, if we have an ordered runqueue from lowest to highest, then picking the less (or even busiest) runqueue is easy. Scheduler can pick the lowest runqueue without calculation and comparison at the time of placing a task in a runqueue. And while trying to distribute load at sched_exec and sched_fork our best choice is to pick the lowest busiest runqueue of the system. And in this way, system remains balanced without doing any load balancing. At the time of try_to_wake_up picking the idlest runqueue is topmost priority but it has been done as per domain basis to utilize CPU cache properly and it's an area where more concentration is requires.<br />
<br />
Google code Webpage: http://code.google.com/p/bld/<br />
<br />
Patches are only available for 3.3-rc3, 3.4-rc4 and 3.5.0.<br />
<br />
{{Warning|This scheduler is highly in development.}}<br />
<br />
====-grsecurity====<br />
<br />
Grsecurity is a security focused patchset. It adds numerous security related features such as Role-Based Access Control and utilizes features of the PaX project. It can be used on a desktop but a public server would receive the greatest benefit. Some applications are incompatible with the additional security measures implemented by this patchset. If this occurs, consider using a lower security level.<br />
<br />
The -grsecurity patches can be found at http://grsecurity.net<br />
<br />
====Tiny-Patches====<br />
The goal of [http://elinux.org/Linux_Tiny Linux Tiny] is to reduce its memory and disk footprint, as well as to add features to aid working on small systems. Target users are developers of embedded system and users of small or legacy machines such as 386s.<br />
<br />
Patch releases against the mainstream Linux kernel have been discontinued. The developers chose to focus on a few patches and spend their time trying to get them merged into the mainline kernel.<br />
<br />
====-pf====<br />
{{AUR|pf-kernel}} is yet another Linux kernel fork which provides you with a handful of awesome features not merged into mainline. It is based on neither existing Linux fork nor patchset, although some unofficial ports may be used if required patches haven't been released officially.<br />
The most prominent patches of linux-pf are TuxOnIce, the CK patchset (most notably BFS), AUFS3, LinuxIMQ, l7 filter and BFQ.<br />
<br />
===Individual patches===<br />
<br />
These are patches which can be simply included in any build of a vanilla kernel or incorporated (probably with some major tweaking) into another patchset. I have included some common ones for starters.<br />
<br />
====Reiser4====<br />
<br />
[[Reiser4]]<br />
<br />
====Gensplash/fbsplash====<br />
[[Gensplash]] - http://dev.gentoo.org/~spock/projects/<br />
<br />
== Compilation ==<br />
Arch Linux provides for several methods of kernel compilation.<br />
<br />
=== Using the Arch Build System (recommended) ===<br />
Using the [[Arch Build System]] is recommended to take advantage of the high quality of the existing {{Pkg|linux}} [[PKGBUILD]] and the benefits of [[Wikipedia:Package management system|package management]]. The PKGBUILD is structured so that you can stop the build after the source is downloaded and configure the kernel.<br />
<br />
See [[Kernels/Compilation/Arch Build System]].<br />
<br />
=== Traditional ===<br />
This method involves manually downloading a source tarball, and building in your home directory as normal user. Once configured, two compilation/installation methods are offered; the traditional manual method as well as makepkg/pacman.<br />
<br />
An advantage of the traditional method is that it will work on other Linux distributions. <br />
<br />
See [[Kernels/Compilation/Traditional]].<br />
<br />
===Proprietary NVIDIA driver===<br />
See [[NVIDIA#Alternate install: custom kernel]] for instructions on using the proprietary NVIDIA driver with a custom kernel.<br />
<br />
== See also ==<br />
*[http://www.kroah.com/lkn/ O'Reilly - Linux Kernel in a Nutshell] (free ebook)</div>Alligatorhttps://wiki.archlinux.org/index.php?title=Kernel_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=242045Kernel (Русский)2012-12-28T23:49:20Z<p>Alligator: Created page with "Category:Kernel cs:Kernel Compilation es:Kernel Compilation it:Kernels zh-CN:Kernels {{Article summary start}} {{Article summary text|This article discusse..."</p>
<hr />
<div>[[Category:Kernel]]<br />
[[cs:Kernel Compilation]]<br />
[[es:Kernel Compilation]]<br />
[[it:Kernels]]<br />
[[zh-CN:Kernels]]<br />
{{Article summary start}}<br />
{{Article summary text|This article discusses kernels in Arch, kernel patches and kernel compilation.}}<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|Kernel modules}}<br />
{{Article summary wiki|Kernel Panics}}<br />
{{Article summary wiki|Linux-ck}}<br />
{{Article summary wiki|sysctl}}<br />
{{Article summary end}}<br />
<br />
From [[Wikipedia:Kernel (computing)|Wikipedia]]:<br />
:''the kernel is the main component of most computer operating systems; it is a bridge between applications and the actual data processing done at the hardware level. The kernel's responsibilities include managing the system's resources (the communication between hardware and software components).''<br />
<br />
There are various alternative kernels available for Arch Linux in addition to the mainline Linux kernel. This article lists some of the options available in the repositories with a brief description of each. There is also a description of patches that can be applied to the system's kernel. The article ends with an overview of custom kernel compilation with links to various methods.<br />
<br />
==Precompiled kernels==<br />
===Official packages===<br />
;{{Pkg|linux}}<br />
:The Linux kernel and modules from the [core] repository. Vanilla kernel with [https://projects.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/linux&id=ef9aa5b9e58936788a9e65e364f00a3cf6497230 three patches applied] (as of 3.1.3-1).<br />
<br />
;{{Pkg|linux-lts}}<br />
:Long term support (LTS) Linux kernel and modules from the [core] repository.<br />
<br />
===AUR packages===<br />
;{{AUR|linux-bfs}}<br />
:Linux kernel and modules with the [[Wikipedia:Brain_Fuck_Scheduler|Brain Fuck Scheduler]] (BFS) - created by Con Kolivas for desktop computers with fewer than 4096 cores, with BFQ I/O scheduler as optional.<br />
<br />
;{{AUR|linux-ck}}<br />
:Linux Kernel built with Con Kolivas' ck1 patchset.<br />
:Additional options which can be toggled on/off in the [[PKGBUILD]] include: BFQ scheduler, nconfig, localmodconfig and use running kernel's config.<br />
:These are patches designed to improve system responsiveness with specific emphasis on the desktop, but suitable to any workload. The ck patches include BFS.<br />
:For further information and installation instructions, please read the [[linux-ck]] main article.<br />
<br />
;{{AUR|linux-eee-ck}}<br />
:The Linux Kernel and modules for the Asus Eee PC 701, built with Con Kolivas' ck1 patchset.<br />
<br />
;{{AUR|linux-fbcondecor}}<br />
:The Linux Kernel and modules with fbcondecor support.<br />
<br />
;{{AUR|linux-grsec}}<br />
:The Linux Kernel and modules with grsecurity and PaX patches for increased security.<br />
<br />
;{{AUR|linux-ice}}<br />
:The Linux Kernel and modules with gentoo-sources patchset and TuxOnIce support.<br />
<br />
;{{AUR|linux-lqx}}<br />
:[http://liquorix.net Liquorix] is a distro kernel replacement built using the best configuration and kernel sources for desktop, multimedia, and gaming workloads, often used as a Debian Linux performance replacement kernel. damentz, the maintainer of the Liquorix patchset, is a developer for the Zen patchset as well, so many of the improvements there are found in this patchset.<br />
<br />
;{{AUR|linux-pax}}<br />
:The Linux Kernel and modules with PaX patches for increased security.<br />
<br />
;{{AUR|linux-pf}}<br />
:Linux kernel and modules with the [http://pf.natalenko.name/ pf-kernel] patchset [-ck patchset (BFS included), TuxOnIce, BFQ], aufs2 and squashfs-lzma.<br />
<br />
;{{AUR|linux-vanilla}}<br />
:The Linux vanilla kernel and modules without Arch Linux patches.<br />
<br />
;{{AUR|linux-zen}}<br />
:The [http://zen-kernel.org Zen Kernel] is a the result of a collaborative effort of kernel hackers to provide the best Linux kernel possible for every day systems.<br />
<br />
;{{AUR|kernel-netbook}}<br />
:Static kernel for netbooks with Intel Atom N270/N280/N450/N550 such as the Eee PC with the add-on of external firmware ({{AUR|broadcom-wl}}) and patchset (BFS + TuxOnIce + BFQ optional) - Only Intel GPU<br />
<br />
;{{AUR|linux-lts-tresor}}<br />
:The stable LTS Linux Kernel and modules with integrated [http://www1.informatik.uni-erlangen.de/tresor TRESOR]<br />
<br />
==Patches and Patchsets==<br />
<br />
There are lots of reasons to patch your kernel, the major ones are for performance or support for non-mainline features such as reiser4 file system support. Other reasons might include fun and to see how it is done and what the improvements are.<br />
<br />
However, it is important to note that the best way to increase the speed of your system is to first tailor your kernel to your system, especially the architecture and processor type. For this reason using pre-packaged versions of custom kernels with generic architecture settings is not recommended or really worth it. A further benefit is that you can reduce the size of your kernel (and therefore build time) by not including support for things you do not have or use. For example, I always start with the stock kernel config when a new kernel version is released and I remove support for things like bluetooth, video4linux, 1000Mbit ethernet, etc. Stuff '''I''' know I won't use '''before''' I build my next kernel! However, this page is not about customizing your kernel config but I would recommend that as a first step to be combined with a patchset later.<br />
<br />
===How to install===<br />
<br />
The installation process of custom kernel packages relies on the Arch Build System (ABS). If you haven't built any custom packages yet you may consult the following articles: [[Arch Build System]] and [[Creating Packages]].<br />
<br />
If you haven't actually patched or customized a kernel before it is not that hard and there are many PKGBUILDs on the forum for individual patchsets. However, I would advise you to start from scratch with a bit of research on the benefits of each patchset rather than jumping on the nearest bandwagon! This way you'll learn much more about what you are doing rather than just choosing a kernel at startup and wondering what it actually does.<br />
<br />
See [[#Compilation]].<br />
<br />
===Major patchsets===<br />
<br />
First of all it is important to note that patchsets are developed by a variety of people. Some of these people are actually involved in the production of the linux kernel and others are hobbyists, which may reflect its level of reliability and stability.<br />
<br />
It is also worth noting that some patchsets are built on the back of other patchsets (which may or may not be reflected in the title of the patch). Patchsets (and kernel updates) can be released '''very''' frequently and often it is not worth keeping up with ALL of them so do not go crazy, unless you make it your hobby!<br />
<br />
You can search google for more sets - remember to use quotes {{ic|"-nitro"}} for example otherwise google will deliberately '''NOT''' show the results you want!<br />
<br />
{{note|This section is for '''information only''' - clearly no guarantees of stability or reliability are implied by inclusion on this page.}}<br />
<br />
====-ck ====<br />
<br />
These are patches designed to improve system responsiveness with specific emphasis on the desktop, but suitable to any workload. The patches are created and maintained by Con Kolivas, his site is at http://users.on.net/~ckolivas/kernel/. Con maintains a full set but also provides the patches broken down so you can add only those you prefer.<br />
<br />
The -ck patches can be found at http://ck.kolivas.org/patches/3.0/<br />
<br />
====-rt====<br />
<br />
This patchset is maintained by a small group of core developers, led by Ingo Molnar. This patch allows nearly all of the kernel to be preempted, with the exception of a few very small regions of code ("raw_spinlock critical regions"). This is done by replacing most kernel spinlocks with mutexes that support priority inheritance, as well as moving all interrupt and software interrupts to kernel threads. <br />
<br />
It further incorporates high resolution timers - a patch set, which is independently maintained.<br />
<br />
[as said from the [http://rt.wiki.kernel.org/index.php/CONFIG_PREEMPT_RT_Patch Real-Time Linux Wiki]]<br />
<br />
patch at http://www.kernel.org/pub/linux/kernel/projects/rt/<br />
<br />
====-bld====<br />
<br />
BLD is best described as a O(1) CPU picking technique. Which is done by reordering CPU runqueues based on runqueue loads. In other words, it keeps the scheduler aware of the load changes, which helps scheduler to keep runqueues in an order. This technique doesn't depend on scheduler ticks. The two most simple things in this technique are: load tracking and runqueue ordering; these are relatively simpler operations. Load tracking will be done whenever a load change happens on the system and based on this load change runqueue will be ordered. So, if we have an ordered runqueue from lowest to highest, then picking the less (or even busiest) runqueue is easy. Scheduler can pick the lowest runqueue without calculation and comparison at the time of placing a task in a runqueue. And while trying to distribute load at sched_exec and sched_fork our best choice is to pick the lowest busiest runqueue of the system. And in this way, system remains balanced without doing any load balancing. At the time of try_to_wake_up picking the idlest runqueue is topmost priority but it has been done as per domain basis to utilize CPU cache properly and it's an area where more concentration is requires.<br />
<br />
Google code Webpage: http://code.google.com/p/bld/<br />
<br />
Patches are only available for 3.3-rc3, 3.4-rc4 and 3.5.0.<br />
<br />
{{Warning|This scheduler is highly in development.}}<br />
<br />
====-grsecurity====<br />
<br />
Grsecurity is a security focused patchset. It adds numerous security related features such as Role-Based Access Control and utilizes features of the PaX project. It can be used on a desktop but a public server would receive the greatest benefit. Some applications are incompatible with the additional security measures implemented by this patchset. If this occurs, consider using a lower security level.<br />
<br />
The -grsecurity patches can be found at http://grsecurity.net<br />
<br />
====Tiny-Patches====<br />
The goal of [http://elinux.org/Linux_Tiny Linux Tiny] is to reduce its memory and disk footprint, as well as to add features to aid working on small systems. Target users are developers of embedded system and users of small or legacy machines such as 386s.<br />
<br />
Patch releases against the mainstream Linux kernel have been discontinued. The developers chose to focus on a few patches and spend their time trying to get them merged into the mainline kernel.<br />
<br />
====-pf====<br />
{{AUR|pf-kernel}} is yet another Linux kernel fork which provides you with a handful of awesome features not merged into mainline. It is based on neither existing Linux fork nor patchset, although some unofficial ports may be used if required patches haven't been released officially.<br />
The most prominent patches of linux-pf are TuxOnIce, the CK patchset (most notably BFS), AUFS3, LinuxIMQ, l7 filter and BFQ.<br />
<br />
===Individual patches===<br />
<br />
These are patches which can be simply included in any build of a vanilla kernel or incorporated (probably with some major tweaking) into another patchset. I have included some common ones for starters.<br />
<br />
====Reiser4====<br />
<br />
[[Reiser4]]<br />
<br />
====Gensplash/fbsplash====<br />
[[Gensplash]] - http://dev.gentoo.org/~spock/projects/<br />
<br />
== Compilation ==<br />
Arch Linux provides for several methods of kernel compilation.<br />
<br />
=== Using the Arch Build System (recommended) ===<br />
Using the [[Arch Build System]] is recommended to take advantage of the high quality of the existing {{Pkg|linux}} [[PKGBUILD]] and the benefits of [[Wikipedia:Package management system|package management]]. The PKGBUILD is structured so that you can stop the build after the source is downloaded and configure the kernel.<br />
<br />
See [[Kernels/Compilation/Arch Build System]].<br />
<br />
=== Traditional ===<br />
This method involves manually downloading a source tarball, and building in your home directory as normal user. Once configured, two compilation/installation methods are offered; the traditional manual method as well as makepkg/pacman.<br />
<br />
An advantage of the traditional method is that it will work on other Linux distributions. <br />
<br />
See [[Kernels/Compilation/Traditional]].<br />
<br />
===Proprietary NVIDIA driver===<br />
See [[NVIDIA#Alternate install: custom kernel]] for instructions on using the proprietary NVIDIA driver with a custom kernel.<br />
<br />
== See also ==<br />
*[http://www.kroah.com/lkn/ O'Reilly - Linux Kernel in a Nutshell] (free ebook)</div>Alligatorhttps://wiki.archlinux.org/index.php?title=SELinux_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=236660SELinux (Русский)2012-11-24T20:41:45Z<p>Alligator: </p>
<hr />
<div>[[en:SELinux]]<br />
[[Category:Security (Русский)]]<br />
[[Category:Kernel (Русский)]]<br />
Security-Enhanced Linux (SELinux) это функция Linux, которая обеспечивает множество политик безопасности, включая U.S. Обязательные средства управления доступом (MAC, Mandatory Access Controls) стиля министерства обороны, с помощью Linux Security Modules (LSM) в ядре Linux. Это не дистрибутив Linux, а скорее ряд модификаций, которые могут быть применены к Unix-подобным операционным системам, таким как Linux и BSD. Её архитектура стремится оптимизировать объем программного обеспечения, обвиненного в осуществлении политики безопасности, которое является близко выровненное Trusted Computer System Evaluation Criteria (TCSEC, называемый Оранжевой книгой) требование для минимизации достоверной вычислительной базы (TCB) (применимый к классам B3 и A1 оценки), но довольно не связано с наименьшим количеством требования полномочия (B2, B3, A1), как часто требуется. Зародышевые понятия базовый SELinux могут быть прослежены до нескольких более ранних проектов американским Агентством национальной безопасности (NSA). [1]<br />
<br />
Для выполнения SELinux под дистрибутивом Linux требуется: включить SELinux в ядро, инструменты SELinux Userspace и библиотеки, и SELinux Policies (главным образом на основе Reference Policy). Некоторые общие программы Linux должны также исправляться/компилироваться с функциями SELinux.<br />
<br />
==Обязательные требования==<br />
<br />
Поддерживаются только файловые системы ext2, ext3, ext4, JFS и XFS.<br />
<br />
{{Note| This is probably not needed anymore:}}<br />
<br />
Пользователи XFS должны использовать 512 байтов inodes (значение по умолчанию 256). Использование SELinux расширяло атрибуты для того, чтобы сохранить метки безопасности в файлах. XFS хранит это в inode, и если inode слишком маленький, должен использоваться дополнительный блок, который тратит впустую много пространства и подвергается потерям производительности.<br />
<br />
# mkfs.xfs -i size=512 /dev/sda1 (for example)<br />
<br />
==Установка необходимых пакетов==<br />
<br />
Должны быть установлены по крайней мере {{AUR|linux-selinux}}, {{AUR|selinux-pam}}, {{AUR|selinux-usr-policycoreutils}} и {{AUR|selinux-refpolicy-src}} из [[AUR]]. Рекомендуется установить все пакеты, требуемые SELinux.<br />
<br />
При установке из [[AUR (Русский)]], можете использовать [[AUR helper (Русский)]] или загружать tarballs из AUR вручную и собирать с {{ic|makepkg}}. При замене пакетов pam и coreutils будьте особо внимательны, поскольку они жизненно важны для системы. Приготовьте Live CD или Live USB на случай, если придётся переустановить систему.<br />
<br />
<br />
{{Warning| Установливая, например, selinux-pam пакетный менеджер ([[pacman]]) сообщит о конфликте и предложит удалить pam. Согласитесь и [[pacman]] сам удалит, и установит требуемые пакеты. При замене обращайте внимание на любые ошибки, если они будут.}}<br />
<br />
===Описание пакета===<br />
<br />
Все пакеты, принадлежащие к SELinux находятся в группе ''selinux''. В ''selinux-userspace'' пакеты пользователтского пространства SELinux. В ''selinux-policies'' находятся пакеты политик SELinux. Остальные пакеты находятся в ''selinux-extras''.<br />
<br />
====SELinux aware system utils====<br />
<br />
;{{AUR|linux-selinux}}<br />
:Активирует поддержку [[SELinux]] ядром. Компиляция модулей подобно Virtualbox.<br />
<br />
;{{AUR|selinux-coreutils}}<br />
:Компиляция пакета [[coreutils]] с включенной поддержкой SELinux.<br />
<br />
;{{AUR|selinux-flex}}<br />
:Версия flex, необходимая только для сборки checkpolicy. Текущий flex имеет ошибку, вызывающую отказ в выполнении команды checkmodule.<br />
<br />
;{{AUR|selinux-pam}}<br />
:Пакет PAM с pam_selinux.so.<br />
<br />
;{{AUR|selinux-sysvinit}}<br />
:sysvinit загружает политики при старте системы. Будьте осторожны; если политика SELinux не сможет быть загружена это перестанет работать!<br />
<br />
;{{AUR|selinux-util-linux}}<br />
:Версия util-linux, скомпилированная с включенной поддержкой SELinux.<br />
<br />
;{{AUR|selinux-udev}} сделал устаревшим {{AUR|selinux-sysvinit}}<br />
:Версия [[udev]], скомпилированная с включенной поддержкой SELinux для маркировки файлов в {{ic|/dev}} для правильной работы. Функциональность [[udev]] теперь обеспечена selinux-sysvinit-tools [http://www.archlinux.org/news/systemd-tools-replaces-udev/], которая является частью {{AUR|selinux-sysvinit}} splitpackage.<br />
<br />
;{{AUR|selinux-findutils}}<br />
:Пропатченная версия findutils с активированной поддержкой SELinux, необходимая для поиска файлов в указанном возможном контексте безопасности.<br />
<br />
;{{AUR|selinux-sudo}}<br />
:Версия [[sudo]] с активированной поддержкой SELinux, для корректной устанавки контекста безопасности.<br />
<br />
;{{AUR|selinux-procps}}<br />
:Исправления пакета procps на основе некоторых патчей Fedora.<br />
<br />
;{{AUR|selinux-psmisc}}<br />
:Версия psmisc с активированной поддержкой SELinux. Добавляет опцию {{ic|-Z}} к {{ic|killall}}.<br />
<br />
;{{AUR|selinux-shadow}}<br />
:Версия shadow с активированной поддержкой SELinux. Содержит изменённый {{ic|/etc/pam.d/login}} для корректной установки контекста безопасности после входа в систему.<br />
<br />
;{{AUR|selinux-cronie}}<br />
:Vixie cron из дистрибутива Fedora с активированной поддержкой SELinux.<br />
<br />
;{{AUR|selinux-logrotate}}<br />
:Версия [[logrotate]] с активированной поддержкой SELinux.<br />
<br />
;{{AUR|selinux-openssh}}<br />
:Версия [[OpenSSH]] с активированной поддержкой SELinux, для установки контекста безопасности в течение многих сеансов пользователя.<br />
<br />
====Пространство пользователя SELinux====<br />
;{{AUR|selinux-usr-checkpolicy}}<br />
:Tools to build SELinux policy<br />
<br />
;{{AUR|selinux-usr-libselinux}}<br />
:Library for security-aware applications. Python bindings needed for ''semanage'' and ''setools'' now included.<br />
<br />
;{{AUR|selinux-usr-libsemanage}}<br />
:Library for policy management. Python bindings needed for ''semanage'' and ''setools'' now included.<br />
<br />
;{{AUR|selinux-usr-libsepol}}<br />
:Library for binary policy manipulation.<br />
<br />
;{{AUR|selinux-usr-policycoreutils}}<br />
:SELinux core utils such as newrole, setfiles, etc.<br />
<br />
;{{AUR|selinux-usr-sepolgen}}<br />
:A Python library for parsing and modifying policy source.<br />
<br />
====Политики SELinux====<br />
<br />
;{{AUR|selinux-refpolicy}}<br />
:Precompiled modular-otherways-vanilla Reference policy with headers and documentation but without sources.<br />
<br />
;{{AUR|selinux-refpolicy-src}}<br />
:Reference policy sources<br />
<br />
;{{AUR|selinux-refpolicy-arch}}<br />
:Precompiled modular Reference policy with headers and documentation but without sources. Development Arch Linux Refpolicy patch included, but for now [February 2011] it only fixes some issues with {{ic|/etc/rc.d/*}} labeling.<br />
<br />
====Другие утилиты SELinux====<br />
<br />
;{{AUR|selinux-setools}}<br />
:CLI and GUI tools to manage SELinux<br />
<br />
;{{AUR|audit}}<br />
:User space utilities for storing and searching the audit records generated by the audit subsystem in the Linux kernel. SELinux (AVC) will log all denials using audit. Very useful in troubleshooting SELinux. Also audit2allow use log from this program.<br />
<br />
{{Note|If using proprietary drivers, such as [[NVIDIA]] graphics drivers, you may need to [[NVIDIA#Alternate install: custom kernel|rebuild them]] for custom kernels.}}<br />
<br />
==Configuration==<br />
<br />
После установки всех необходимых пакетов их необходимо настроить.<br />
<br />
===Changing boot loader configuration===<br />
<br />
Добавьте в конфигурационный файл [[GRUB]] {{ic|/boot/grub/menu.lst}} следующие строки:<br />
<br />
# (1) Arch Linux<br />
title Arch Linux (SELinux)<br />
root (hd0,0)<br />
kernel '''vmlinuz-linux-selinux''' root=/dev/sda5 ro vga=775<br />
initrd '''initramfs-linux-selinux.img'''<br />
<br />
===Mounting selinuxfs===<br />
<br />
Добавьте в {{ic|/etc/fstab}}:<br />
<br />
none /selinux selinuxfs noauto 0 0<br />
<br />
Создайте папку /selinux:<br />
<br />
mkdir /selinux<br />
<br />
===Main SELinux configuration file===<br />
<br />
Основной конфигурационный файл SELLinux ({{ic|/etc/selinux/config}}) является частью пакета {{AUR|selinux-refpolicy}}, доступного из [[Arch User Repository|AUR]]. Его содержимое по умолчанию:<br />
<br />
# This file controls the state of SELinux on the system.<br />
# SELINUX= can take one of these three values:<br />
# enforcing - SELinux security policy is enforced.<br />
# permissive - SELinux prints warnings <br />
# instead of enforcing.<br />
# disabled - No SELinux policy is loaded.<br />
SELINUX=permissive<br />
# SELINUXTYPE= takes the name of SELinux policy to<br />
# be used. Current options are:<br />
# refpolicy (vanilla reference policy)<br />
# refpolicy-arch (reference policy with <br />
# Arch Linux patch)<br />
SELINUXTYPE=refpolicy<br />
<br />
{{Note|Опция {{ic|SELINUX<nowiki>=</nowiki>permissive}} подходит только для конфигурации. Это не увеличивает безопасность и после настройки измените её на {{ic|SELINUX<nowiki>=</nowiki>enforcing}}. Опция {{ic|SELINUXTYPE<nowiki>=</nowiki>refpolicy}} устанавливает имя используемой политики. Измените его на имя вашей политики. Если вы решили скомпилировать политику из исходников, вы должны самостоятельно создать файл.}}<br />
<br />
===Set up PAM===<br />
<br />
Correctly set-up PAM is important to get a proper security context after login. If you installed {{AUR|selinux-shadow}} from the [[Arch User Repository|AUR]], there should be the following lines in {{ic|/etc/pam.d/login}}:<br />
<br />
# pam_selinux.so close should be the first session rule<br />
session required pam_selinux.so close<br />
# pam_selinux.so open should only be followed by sessions to be executed in the user context<br />
session required pam_selinux.so open<br />
<br />
If not, add them to the file. Similarly for logging in via SSH in {{ic|/etc/pam.d/sshd}}, which is part of {{AUR|selinux-openssh}} package.<br />
<br />
If you want to use SELinux with GUI, you should add the aforementioned lines to other files such as {{ic|/etc/pam.d/kde}}, {{ic|/etc/pam.d/kde-np}}, ... depending on your login manager.<br />
<br />
{{Note|Running SELinux with GUI applications in Arch Linux is not much supported at the time being.}}<br />
<br />
==Reference policy==<br />
<br />
There are currently two possible ways of installing reference policy: From a pre-compiled package ({{AUR|selinux-refpolicy}}) or from a source package ({{AUR|selinux-refpolicy-src}}).<br />
<br />
{{Note| It is possible to have both the source and the binary package installed. If you plan to build from source in that case, you should probably change the name of policy in {{ic|build.conf}} to avoid overwriting of selinux-refpolicy package files.}}<br />
<br />
===Installing a precompiled refpolicy===<br />
<br />
Install {{AUR|selinux-refpolicy}} from AUR. This is a modular-otherways-vanilla refpolicy. This package includes policy headers (you can therefore compile your own modules), policy documentation and an install script which will load the policy for you and relabel your filesystem (which will likely take some time). It does not include the sources though.<br />
<br />
This package also includes the main SELinux configuration file ({{ic|/etc/selinux/config}}) defaulting to refpolicy and permissive SELinux enforcement for testing purposes.<br />
<br />
You should verify that the policy was correctly loaded, that is if the file {{ic|/etc/selinux/refpolicy/policy/policy.24}} has non-zero size. If so and if you have installed {{AUR|selinux-sysvinit}} and other needed packages, you are ready to reboot and make sure that everything works.<br />
<br />
{{Warning| On newer kernels (eg. 3.0) policy in file {{ic|/etc/selinux/refpolicy/policy/policy.24}} has zero bytes size, because it is used new version of policy from file: {{ic|/etc/selinux/refpolicy/policy/policy.26}}}}<br />
<br />
In case the policy was not correctly loaded you can as root use the following command inside of the {{ic|/usr/share/selinux/refpolicy}} directory to do so:<br />
<br />
/bin/ls *.pp | /bin/grep -Ev "base.pp|enableaudit.pp" | /usr/bin/xargs /usr/sbin/semodule -s refpolicy -b base.pp -i<br />
<br />
To manually relabel your filesystem you can as root use:<br />
<br />
/sbin/restorecon -r /<br />
<br />
===Installing refpolicy from a source package===<br />
<br />
Install {{AUR|selinux-refpolicy-src}} from AUR. Edit the file {{ic|/etc/selinux/refpolicy/src/policy/build.conf}} to your liking. <br />
<br />
{{Note|Build configuration file {{ic|build.conf}} is overwritten on every selinux-refpolicy-src package upgrade, so backup your configuration.}}<br />
<br />
To build, install and load policy from source do the following. (For other possibilities consult the README file located in {{ic|/etc/selinux/refpolicy/src/policy/}}.)<br />
<br />
cd /etc/selinux/refpolicy/src/policy<br />
make bare<br />
make conf <br />
make load<br />
<br />
Copy or link the compiled binary policy to {{ic|/etc/policy.bin}} for sysvinit to find and install selinux-sysvinit:<br />
<br />
ln -s /etc/selinux/refpolicy/policy/policy.21 /etc/policy.bin<br />
<br />
At this moment files do not have any context, so you should relabel the whole filesystem, which will take a while:<br />
<br />
make relabel<br />
<br />
Create the main SELinux configuration file ({{ic|/etc/selinux/config}}) according to the example in related section.<br />
<br />
Now you are ready to reboot and make sure that everything works.<br />
<br />
==Post-installation steps==<br />
<br />
{{Warning| Если ''selinux-sysvinit'' не установлен, то SELinux не сможет запуститься и {{ic|/selinux}} не будет смонтирован.}}<br />
<br />
Выполните {{ic|sestatus}} чтобы убедиться, что SELinux работает. Должно получиться что-то вроде этого:<br />
<br />
SELinux status: enabled<br />
SELinuxfs mount: /selinux<br />
Current mode: permissive<br />
Mode from config file: permissive<br />
Policy version: 26<br />
Policy from config file: refpolicy<br />
<br />
To maintain correct context, you can use ''restorecond'':<br />
<br />
touch /etc/rc.d/restorecond<br />
chmod ugo+x /etc/rc.d/restorecond<br />
<br />
Which should contain:<br />
<br />
#!/bin/sh<br />
restorecond<br />
<br />
{{Note|Не забудьте добавить {{ic|restorecond}} в список {{ic|DAEMONS}} вашего {{ic|/etc/rc.conf}}.}}<br />
<br />
Чтобы переключиться на осуществление режима без перезагрузки, можете использовать:<br />
<br />
echo 1 > /selinux/enforce<br />
<br />
{{Note|Если {{ic|SELINUX<nowiki>=</nowiki>enforcing}} в {{ic|/etc/selinux/config}} не работает, создайте {{ic|/etc/rc.d/selinux-enforce}} содержащий предыдущую команду так же как с restorecond демоном.}}<br />
<br />
==Useful tools==<br />
<br />
There are some tools/commands that can greatly help with SELinux. <br />
<br />
;restorecon: Restores the context of a file/directory (or recursively with {{ic|-R}}) based on any policy rules <br />
;rlpkg: Relabels any files belonging to that Gentoo package to their proper security context (if they have one) <br />
;chcon: Change the context on a specific file <br />
;audit2allow: Reads in log messages from the AVC log file and tells you what rules would fix the error. Do not just add these rules without looking at them though, they cannot detect errors in other places (e.g. the application is running in the wrong context in the first place), or sometimes things will generate error messages but may maintain functionality so it would be better to add dontaudit to just ignore the access attempts.<br />
<br />
==References==<br />
*[http://en.wikipedia.org/wiki/Security-Enhanced_Linux Security Enhanced Linux]<br />
*[http://www.gentoo.org/proj/en/hardened/selinux/selinux-handbook.xml Gentoo SELinux Handbook]<br />
*[http://fedoraproject.org/wiki/SELinux Fedora Project's SELinux Wiki]<br />
*[http://www.nsa.gov/research/selinux/index.shtml NSA's Official SELinux Homepage]<br />
*[http://oss.tresys.com/projects/refpolicy Reference Policy Homepage]<br />
*[http://userspace.selinuxproject.org/trac/ SELinux Userspace Homepage]<br />
*[http://oss.tresys.com/projects/setools SETools Homepage]<br />
<br />
== See also ==<br />
* [[AppArmor]] (Similar to SELinux, much easier to configure, less features.)</div>Alligatorhttps://wiki.archlinux.org/index.php?title=SELinux_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=211404SELinux (Русский)2012-06-27T20:37:34Z<p>Alligator: /* Установка необходимых пакетов */</p>
<hr />
<div>[[en:SELinux]]<br />
[[Category:Security (Русский)]]<br />
[[Category:Kernel (Русский)]]<br />
Security-Enhanced Linux (SELinux) это функция Linux, которая обеспечивает множество политик безопасности, включая США. Обязательные средства управления доступом (MAC, Mandatory Access Controls) стиля министерства обороны, с помощью Linux Security Modules (LSM) в ядре Linux. Это не дистрибутив Linux, а скорее ряд модификаций, которые могут быть применены к Unix-подобным операционным системам, таким как Linux и BSD. Её архитектура стремится оптимизировать объем программного обеспечения, обвиненного в осуществлении политики безопасности, которое является близко выровненное Trusted Computer System Evaluation Criteria (TCSEC, называемый Оранжевой книгой) требование для минимизации достоверной вычислительной базы (TCB) (применимый к классам B3 и A1 оценки), но довольно не связано с наименьшим количеством требования полномочия (B2, B3, A1), как часто требуется. Зародышевые понятия базовый SELinux могут быть прослежены до нескольких более ранних проектов американским Агентством национальной безопасности (NSA). [1]<br />
<br />
Для выполнения SELinux под дистрибутивом Linux требуется: включить SELinux в ядро, инструменты SELinux Userspace и библиотеки, и SELinux Policies (главным образом на основе Reference Policy). Некоторые общие программы Linux должны также исправляться/компилироваться с функциями SELinux.<br />
<br />
==Обязательные требования==<br />
<br />
Поддерживаются только файловые системы ext2, ext3, ext4, JFS и XFS.<br />
<br />
{{Note| This is probably not needed anymore:}}<br />
<br />
Пользователи XFS должны использовать 512 байтов inodes (значение по умолчанию 256). Использование SELinux расширяло атрибуты для того, чтобы сохранить метки безопасности в файлах. XFS хранит это в inode, и если inode слишком маленький, должен использоваться дополнительный блок, который тратит впустую много пространства и подвергается потерям производительности.<br />
<br />
# mkfs.xfs -i size=512 /dev/sda1 (for example)<br />
<br />
==Установка необходимых пакетов==<br />
<br />
Должны быть установлены по крайней мере {{AUR|linux-selinux}}, {{AUR|selinux-pam}}, {{AUR|selinux-usr-policycoreutils}} и {{AUR|selinux-refpolicy-src}} из [[AUR]]. Рекомендуется установить все пакеты, требуемые SELinux.<br />
<br />
При установке из [[AUR (Русский)]], можете использовать [[AUR helper (Русский)]] или загружать tarballs из AUR вручную и собирать с {{ic|makepkg}}. При замене пакетов pam и coreutils будьте особо внимательны, поскольку они жизненно важны для системы. Приготовьте Live CD или Live USB на случай, если придётся переустановить систему.<br />
<br />
<br />
{{Warning| Установливая, например, selinux-pam пакетный менеджер ([[pacman]]) сообщит о конфликте и предложит удалить pam. Согласитесь и [[pacman]] сам удалит, и установит требуемые пакеты. При замене обращайте внимание на любые ошибки, если они будут.}}<br />
<br />
===Описание пакета===<br />
<br />
Все пакеты, принадлежащие к SELinux находятся в группе ''selinux''. В ''selinux-userspace'' пакеты пользователтского пространства SELinux. В ''selinux-policies'' находятся пакеты политик SELinux. Остальные пакеты находятся в ''selinux-extras''.<br />
<br />
====SELinux aware system utils====<br />
<br />
;{{AUR|linux-selinux}}<br />
:Активирует поддержку [[SELinux]] ядром. Компиляция модулей подобно Virtualbox.<br />
<br />
;{{AUR|selinux-coreutils}}<br />
:Компиляция пакета [[coreutils]] с включенной поддержкой SELinux.<br />
<br />
;{{AUR|selinux-flex}}<br />
:Версия flex, необходимая только для сборки checkpolicy. Текущий flex имеет ошибку, вызывающую отказ в выполнении команды checkmodule.<br />
<br />
;{{AUR|selinux-pam}}<br />
:Пакет PAM с pam_selinux.so.<br />
<br />
;{{AUR|selinux-sysvinit}}<br />
:sysvinit загружает политики при старте системы. Будьте осторожны; если политика SELinux не сможет быть загружена это перестанет работать!<br />
<br />
;{{AUR|selinux-util-linux}}<br />
:Версия util-linux, скомпилированная с включенной поддержкой SELinux.<br />
<br />
;{{AUR|selinux-udev}} сделал устаревшим {{AUR|selinux-sysvinit}}<br />
:Версия [[udev]], скомпилированная с включенной поддержкой SELinux для маркировки файлов в {{ic|/dev}} для правильной работы. Функциональность [[udev]] теперь обеспечена selinux-sysvinit-tools [http://www.archlinux.org/news/systemd-tools-replaces-udev/], которая является частью {{AUR|selinux-sysvinit}} splitpackage.<br />
<br />
;{{AUR|selinux-findutils}}<br />
:Пропатченная версия findutils с активированной поддержкой SELinux, необходимая для поиска файлов в указанном возможном контексте безопасности.<br />
<br />
;{{AUR|selinux-sudo}}<br />
:Версия [[sudo]] с активированной поддержкой SELinux, для корректной устанавки контекста безопасности.<br />
<br />
;{{AUR|selinux-procps}}<br />
:Исправления пакета procps на основе некоторых патчей Fedora.<br />
<br />
;{{AUR|selinux-psmisc}}<br />
:Версия psmisc с активированной поддержкой SELinux. Добавляет опцию {{ic|-Z}} к {{ic|killall}}.<br />
<br />
;{{AUR|selinux-shadow}}<br />
:Версия shadow с активированной поддержкой SELinux. Содержит изменённый {{ic|/etc/pam.d/login}} для корректной установки контекста безопасности после входа в систему.<br />
<br />
;{{AUR|selinux-cronie}}<br />
:Vixie cron из дистрибутива Fedora с активированной поддержкой SELinux.<br />
<br />
;{{AUR|selinux-logrotate}}<br />
:Версия [[logrotate]] с активированной поддержкой SELinux.<br />
<br />
;{{AUR|selinux-openssh}}<br />
:Версия [[OpenSSH]] с активированной поддержкой SELinux, для установки контекста безопасности в течение многих сеансов пользователя.<br />
<br />
====Пространство пользователя SELinux====<br />
;{{AUR|selinux-usr-checkpolicy}}<br />
:Tools to build SELinux policy<br />
<br />
;{{AUR|selinux-usr-libselinux}}<br />
:Library for security-aware applications. Python bindings needed for ''semanage'' and ''setools'' now included.<br />
<br />
;{{AUR|selinux-usr-libsemanage}}<br />
:Library for policy management. Python bindings needed for ''semanage'' and ''setools'' now included.<br />
<br />
;{{AUR|selinux-usr-libsepol}}<br />
:Library for binary policy manipulation.<br />
<br />
;{{AUR|selinux-usr-policycoreutils}}<br />
:SELinux core utils such as newrole, setfiles, etc.<br />
<br />
;{{AUR|selinux-usr-sepolgen}}<br />
:A Python library for parsing and modifying policy source.<br />
<br />
====Политики SELinux====<br />
<br />
;{{AUR|selinux-refpolicy}}<br />
:Precompiled modular-otherways-vanilla Reference policy with headers and documentation but without sources.<br />
<br />
;{{AUR|selinux-refpolicy-src}}<br />
:Reference policy sources<br />
<br />
;{{AUR|selinux-refpolicy-arch}}<br />
:Precompiled modular Reference policy with headers and documentation but without sources. Development Arch Linux Refpolicy patch included, but for now [February 2011] it only fixes some issues with {{ic|/etc/rc.d/*}} labeling.<br />
<br />
====Другие утилиты SELinux====<br />
<br />
;{{AUR|selinux-setools}}<br />
:CLI and GUI tools to manage SELinux<br />
<br />
;{{AUR|audit}}<br />
:User space utilities for storing and searching the audit records generated by the audit subsystem in the Linux kernel. SELinux (AVC) will log all denials using audit. Very useful in troubleshooting SELinux. Also audit2allow use log from this program.<br />
<br />
{{Note|If using proprietary drivers, such as [[NVIDIA]] graphics drivers, you may need to [[NVIDIA#Alternate install: custom kernel|rebuild them]] for custom kernels.}}<br />
<br />
==Configuration==<br />
<br />
После установки всех необходимых пакетов их необходимо настроить.<br />
<br />
===Changing boot loader configuration===<br />
<br />
Добавьте в конфигурационный файл [[GRUB]] {{ic|/boot/grub/menu.lst}} следующие строки:<br />
<br />
# (1) Arch Linux<br />
title Arch Linux (SELinux)<br />
root (hd0,0)<br />
kernel '''vmlinuz-linux-selinux''' root=/dev/sda5 ro vga=775<br />
initrd '''initramfs-linux-selinux.img'''<br />
<br />
===Mounting selinuxfs===<br />
<br />
Добавьте в {{ic|/etc/fstab}}:<br />
<br />
none /selinux selinuxfs noauto 0 0<br />
<br />
Создайте папку /selinux:<br />
<br />
mkdir /selinux<br />
<br />
===Main SELinux configuration file===<br />
<br />
Основной конфигурационный файл SELLinux ({{ic|/etc/selinux/config}}) является частью пакета {{AUR|selinux-refpolicy}}, доступного из [[Arch User Repository|AUR]]. Его содержимое по умолчанию:<br />
<br />
# This file controls the state of SELinux on the system.<br />
# SELINUX= can take one of these three values:<br />
# enforcing - SELinux security policy is enforced.<br />
# permissive - SELinux prints warnings <br />
# instead of enforcing.<br />
# disabled - No SELinux policy is loaded.<br />
SELINUX=permissive<br />
# SELINUXTYPE= takes the name of SELinux policy to<br />
# be used. Current options are:<br />
# refpolicy (vanilla reference policy)<br />
# refpolicy-arch (reference policy with <br />
# Arch Linux patch)<br />
SELINUXTYPE=refpolicy<br />
<br />
{{Note|Опция {{ic|SELINUX<nowiki>=</nowiki>permissive}} подходит только для конфигурации. Это не увеличивает безопасность и после настройки измените её на {{ic|SELINUX<nowiki>=</nowiki>enforcing}}. Опция {{ic|SELINUXTYPE<nowiki>=</nowiki>refpolicy}} устанавливает имя используемой политики. Измените его на имя вашей политики. Если вы решили скомпилировать политику из исходников, вы должны самостоятельно создать файл.}}<br />
<br />
===Set up PAM===<br />
<br />
Correctly set-up PAM is important to get a proper security context after login. If you installed {{AUR|selinux-shadow}} from the [[Arch User Repository|AUR]], there should be the following lines in {{ic|/etc/pam.d/login}}:<br />
<br />
# pam_selinux.so close should be the first session rule<br />
session required pam_selinux.so close<br />
# pam_selinux.so open should only be followed by sessions to be executed in the user context<br />
session required pam_selinux.so open<br />
<br />
If not, add them to the file. Similarly for logging in via SSH in {{ic|/etc/pam.d/sshd}}, which is part of {{AUR|selinux-openssh}} package.<br />
<br />
If you want to use SELinux with GUI, you should add the aforementioned lines to other files such as {{ic|/etc/pam.d/kde}}, {{ic|/etc/pam.d/kde-np}}, ... depending on your login manager.<br />
<br />
{{Note|Running SELinux with GUI applications in Arch Linux is not much supported at the time being.}}<br />
<br />
==Reference policy==<br />
<br />
There are currently two possible ways of installing reference policy: From a pre-compiled package ({{AUR|selinux-refpolicy}}) or from a source package ({{AUR|selinux-refpolicy-src}}).<br />
<br />
{{Note| It is possible to have both the source and the binary package installed. If you plan to build from source in that case, you should probably change the name of policy in {{ic|build.conf}} to avoid overwriting of selinux-refpolicy package files.}}<br />
<br />
===Installing a precompiled refpolicy===<br />
<br />
Install {{AUR|selinux-refpolicy}} from AUR. This is a modular-otherways-vanilla refpolicy. This package includes policy headers (you can therefore compile your own modules), policy documentation and an install script which will load the policy for you and relabel your filesystem (which will likely take some time). It does not include the sources though.<br />
<br />
This package also includes the main SELinux configuration file ({{ic|/etc/selinux/config}}) defaulting to refpolicy and permissive SELinux enforcement for testing purposes.<br />
<br />
You should verify that the policy was correctly loaded, that is if the file {{ic|/etc/selinux/refpolicy/policy/policy.24}} has non-zero size. If so and if you have installed {{AUR|selinux-sysvinit}} and other needed packages, you are ready to reboot and make sure that everything works.<br />
<br />
{{Warning| On newer kernels (eg. 3.0) policy in file {{ic|/etc/selinux/refpolicy/policy/policy.24}} has zero bytes size, because it is used new version of policy from file: {{ic|/etc/selinux/refpolicy/policy/policy.26}}}}<br />
<br />
In case the policy was not correctly loaded you can as root use the following command inside of the {{ic|/usr/share/selinux/refpolicy}} directory to do so:<br />
<br />
/bin/ls *.pp | /bin/grep -Ev "base.pp|enableaudit.pp" | /usr/bin/xargs /usr/sbin/semodule -s refpolicy -b base.pp -i<br />
<br />
To manually relabel your filesystem you can as root use:<br />
<br />
/sbin/restorecon -r /<br />
<br />
===Installing refpolicy from a source package===<br />
<br />
Install {{AUR|selinux-refpolicy-src}} from AUR. Edit the file {{ic|/etc/selinux/refpolicy/src/policy/build.conf}} to your liking. <br />
<br />
{{Note|Build configuration file {{ic|build.conf}} is overwritten on every selinux-refpolicy-src package upgrade, so backup your configuration.}}<br />
<br />
To build, install and load policy from source do the following. (For other possibilities consult the README file located in {{ic|/etc/selinux/refpolicy/src/policy/}}.)<br />
<br />
cd /etc/selinux/refpolicy/src/policy<br />
make bare<br />
make conf <br />
make load<br />
<br />
Copy or link the compiled binary policy to {{ic|/etc/policy.bin}} for sysvinit to find and install selinux-sysvinit:<br />
<br />
ln -s /etc/selinux/refpolicy/policy/policy.21 /etc/policy.bin<br />
<br />
At this moment files do not have any context, so you should relabel the whole filesystem, which will take a while:<br />
<br />
make relabel<br />
<br />
Create the main SELinux configuration file ({{ic|/etc/selinux/config}}) according to the example in related section.<br />
<br />
Now you are ready to reboot and make sure that everything works.<br />
<br />
==Post-installation steps==<br />
<br />
{{Warning| Если ''selinux-sysvinit'' не установлен, то SELinux не сможет запуститься и {{ic|/selinux}} не будет смонтирован.}}<br />
<br />
Выполните {{ic|sestatus}} чтобы убедиться, что SELinux работает. Должно получиться что-то вроде этого:<br />
<br />
SELinux status: enabled<br />
SELinuxfs mount: /selinux<br />
Current mode: permissive<br />
Mode from config file: permissive<br />
Policy version: 26<br />
Policy from config file: refpolicy<br />
<br />
To maintain correct context, you can use ''restorecond'':<br />
<br />
touch /etc/rc.d/restorecond<br />
chmod ugo+x /etc/rc.d/restorecond<br />
<br />
Which should contain:<br />
<br />
#!/bin/sh<br />
restorecond<br />
<br />
{{Note|Не забудьте добавить {{ic|restorecond}} в список {{ic|DAEMONS}} вашего {{ic|/etc/rc.conf}}.}}<br />
<br />
Чтобы переключиться на осуществление режима без перезагрузки, можете использовать:<br />
<br />
echo 1 > /selinux/enforce<br />
<br />
{{Note|Если {{ic|SELINUX<nowiki>=</nowiki>enforcing}} в {{ic|/etc/selinux/config}} не работает, создайте {{ic|/etc/rc.d/selinux-enforce}} содержащий предыдущую команду так же как с restorecond демоном.}}<br />
<br />
==Useful tools==<br />
<br />
There are some tools/commands that can greatly help with SELinux. <br />
<br />
;restorecon: Restores the context of a file/directory (or recursively with {{ic|-R}}) based on any policy rules <br />
;rlpkg: Relabels any files belonging to that Gentoo package to their proper security context (if they have one) <br />
;chcon: Change the context on a specific file <br />
;audit2allow: Reads in log messages from the AVC log file and tells you what rules would fix the error. Do not just add these rules without looking at them though, they cannot detect errors in other places (e.g. the application is running in the wrong context in the first place), or sometimes things will generate error messages but may maintain functionality so it would be better to add dontaudit to just ignore the access attempts.<br />
<br />
==References==<br />
*[http://en.wikipedia.org/wiki/Security-Enhanced_Linux Security Enhanced Linux]<br />
*[http://www.gentoo.org/proj/en/hardened/selinux/selinux-handbook.xml Gentoo SELinux Handbook]<br />
*[http://fedoraproject.org/wiki/SELinux Fedora Project's SELinux Wiki]<br />
*[http://www.nsa.gov/research/selinux/index.shtml NSA's Official SELinux Homepage]<br />
*[http://oss.tresys.com/projects/refpolicy Reference Policy Homepage]<br />
*[http://userspace.selinuxproject.org/trac/ SELinux Userspace Homepage]<br />
*[http://oss.tresys.com/projects/setools SETools Homepage]<br />
<br />
== See also ==<br />
* [[AppArmor]] (Similar to SELinux, much easier to configure, less features.)</div>Alligatorhttps://wiki.archlinux.org/index.php?title=SELinux_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=211403SELinux (Русский)2012-06-27T20:36:43Z<p>Alligator: /* Установка необходимых пакетов (Изменил Warning на более удобный и менее опасный метод замены пакетов) */</p>
<hr />
<div>[[en:SELinux]]<br />
[[Category:Security (Русский)]]<br />
[[Category:Kernel (Русский)]]<br />
Security-Enhanced Linux (SELinux) это функция Linux, которая обеспечивает множество политик безопасности, включая США. Обязательные средства управления доступом (MAC, Mandatory Access Controls) стиля министерства обороны, с помощью Linux Security Modules (LSM) в ядре Linux. Это не дистрибутив Linux, а скорее ряд модификаций, которые могут быть применены к Unix-подобным операционным системам, таким как Linux и BSD. Её архитектура стремится оптимизировать объем программного обеспечения, обвиненного в осуществлении политики безопасности, которое является близко выровненное Trusted Computer System Evaluation Criteria (TCSEC, называемый Оранжевой книгой) требование для минимизации достоверной вычислительной базы (TCB) (применимый к классам B3 и A1 оценки), но довольно не связано с наименьшим количеством требования полномочия (B2, B3, A1), как часто требуется. Зародышевые понятия базовый SELinux могут быть прослежены до нескольких более ранних проектов американским Агентством национальной безопасности (NSA). [1]<br />
<br />
Для выполнения SELinux под дистрибутивом Linux требуется: включить SELinux в ядро, инструменты SELinux Userspace и библиотеки, и SELinux Policies (главным образом на основе Reference Policy). Некоторые общие программы Linux должны также исправляться/компилироваться с функциями SELinux.<br />
<br />
==Обязательные требования==<br />
<br />
Поддерживаются только файловые системы ext2, ext3, ext4, JFS и XFS.<br />
<br />
{{Note| This is probably not needed anymore:}}<br />
<br />
Пользователи XFS должны использовать 512 байтов inodes (значение по умолчанию 256). Использование SELinux расширяло атрибуты для того, чтобы сохранить метки безопасности в файлах. XFS хранит это в inode, и если inode слишком маленький, должен использоваться дополнительный блок, который тратит впустую много пространства и подвергается потерям производительности.<br />
<br />
# mkfs.xfs -i size=512 /dev/sda1 (for example)<br />
<br />
==Установка необходимых пакетов==<br />
<br />
Должны быть установлены по крайней мере {{AUR|linux-selinux}}, {{AUR|selinux-pam}}, {{AUR|selinux-usr-policycoreutils}} и {{AUR|selinux-refpolicy-src}} из [[AUR]]. Рекомендуется установить все пакеты, требуемые SELinux.<br />
<br />
При установке из [[AUR (Русский)]], можете использовать [[AUR helper (Русский)]] или загружать tarballs из AUR вручную и собирать с {{ic|makepkg}}. При замене пакетов pam и coreutils будьте особо внимательны, поскольку они жизненно важны для системы. Приготовьте Live CD или Live USB на случай, если придётся переустановить систему.<br />
<br />
<br />
{{Warning| Установливая, например, selinux-pam пакетный менеджер (pacman) сообщит о конфликте и предложит удалить pam. Согласитесь и [[pacman]] сам удалит, и установит требуемые пакеты. При замене обращайте внимание на любые ошибки, если они будут.}}<br />
<br />
===Описание пакета===<br />
<br />
Все пакеты, принадлежащие к SELinux находятся в группе ''selinux''. В ''selinux-userspace'' пакеты пользователтского пространства SELinux. В ''selinux-policies'' находятся пакеты политик SELinux. Остальные пакеты находятся в ''selinux-extras''.<br />
<br />
====SELinux aware system utils====<br />
<br />
;{{AUR|linux-selinux}}<br />
:Активирует поддержку [[SELinux]] ядром. Компиляция модулей подобно Virtualbox.<br />
<br />
;{{AUR|selinux-coreutils}}<br />
:Компиляция пакета [[coreutils]] с включенной поддержкой SELinux.<br />
<br />
;{{AUR|selinux-flex}}<br />
:Версия flex, необходимая только для сборки checkpolicy. Текущий flex имеет ошибку, вызывающую отказ в выполнении команды checkmodule.<br />
<br />
;{{AUR|selinux-pam}}<br />
:Пакет PAM с pam_selinux.so.<br />
<br />
;{{AUR|selinux-sysvinit}}<br />
:sysvinit загружает политики при старте системы. Будьте осторожны; если политика SELinux не сможет быть загружена это перестанет работать!<br />
<br />
;{{AUR|selinux-util-linux}}<br />
:Версия util-linux, скомпилированная с включенной поддержкой SELinux.<br />
<br />
;{{AUR|selinux-udev}} сделал устаревшим {{AUR|selinux-sysvinit}}<br />
:Версия [[udev]], скомпилированная с включенной поддержкой SELinux для маркировки файлов в {{ic|/dev}} для правильной работы. Функциональность [[udev]] теперь обеспечена selinux-sysvinit-tools [http://www.archlinux.org/news/systemd-tools-replaces-udev/], которая является частью {{AUR|selinux-sysvinit}} splitpackage.<br />
<br />
;{{AUR|selinux-findutils}}<br />
:Пропатченная версия findutils с активированной поддержкой SELinux, необходимая для поиска файлов в указанном возможном контексте безопасности.<br />
<br />
;{{AUR|selinux-sudo}}<br />
:Версия [[sudo]] с активированной поддержкой SELinux, для корректной устанавки контекста безопасности.<br />
<br />
;{{AUR|selinux-procps}}<br />
:Исправления пакета procps на основе некоторых патчей Fedora.<br />
<br />
;{{AUR|selinux-psmisc}}<br />
:Версия psmisc с активированной поддержкой SELinux. Добавляет опцию {{ic|-Z}} к {{ic|killall}}.<br />
<br />
;{{AUR|selinux-shadow}}<br />
:Версия shadow с активированной поддержкой SELinux. Содержит изменённый {{ic|/etc/pam.d/login}} для корректной установки контекста безопасности после входа в систему.<br />
<br />
;{{AUR|selinux-cronie}}<br />
:Vixie cron из дистрибутива Fedora с активированной поддержкой SELinux.<br />
<br />
;{{AUR|selinux-logrotate}}<br />
:Версия [[logrotate]] с активированной поддержкой SELinux.<br />
<br />
;{{AUR|selinux-openssh}}<br />
:Версия [[OpenSSH]] с активированной поддержкой SELinux, для установки контекста безопасности в течение многих сеансов пользователя.<br />
<br />
====Пространство пользователя SELinux====<br />
;{{AUR|selinux-usr-checkpolicy}}<br />
:Tools to build SELinux policy<br />
<br />
;{{AUR|selinux-usr-libselinux}}<br />
:Library for security-aware applications. Python bindings needed for ''semanage'' and ''setools'' now included.<br />
<br />
;{{AUR|selinux-usr-libsemanage}}<br />
:Library for policy management. Python bindings needed for ''semanage'' and ''setools'' now included.<br />
<br />
;{{AUR|selinux-usr-libsepol}}<br />
:Library for binary policy manipulation.<br />
<br />
;{{AUR|selinux-usr-policycoreutils}}<br />
:SELinux core utils such as newrole, setfiles, etc.<br />
<br />
;{{AUR|selinux-usr-sepolgen}}<br />
:A Python library for parsing and modifying policy source.<br />
<br />
====Политики SELinux====<br />
<br />
;{{AUR|selinux-refpolicy}}<br />
:Precompiled modular-otherways-vanilla Reference policy with headers and documentation but without sources.<br />
<br />
;{{AUR|selinux-refpolicy-src}}<br />
:Reference policy sources<br />
<br />
;{{AUR|selinux-refpolicy-arch}}<br />
:Precompiled modular Reference policy with headers and documentation but without sources. Development Arch Linux Refpolicy patch included, but for now [February 2011] it only fixes some issues with {{ic|/etc/rc.d/*}} labeling.<br />
<br />
====Другие утилиты SELinux====<br />
<br />
;{{AUR|selinux-setools}}<br />
:CLI and GUI tools to manage SELinux<br />
<br />
;{{AUR|audit}}<br />
:User space utilities for storing and searching the audit records generated by the audit subsystem in the Linux kernel. SELinux (AVC) will log all denials using audit. Very useful in troubleshooting SELinux. Also audit2allow use log from this program.<br />
<br />
{{Note|If using proprietary drivers, such as [[NVIDIA]] graphics drivers, you may need to [[NVIDIA#Alternate install: custom kernel|rebuild them]] for custom kernels.}}<br />
<br />
==Configuration==<br />
<br />
После установки всех необходимых пакетов их необходимо настроить.<br />
<br />
===Changing boot loader configuration===<br />
<br />
Добавьте в конфигурационный файл [[GRUB]] {{ic|/boot/grub/menu.lst}} следующие строки:<br />
<br />
# (1) Arch Linux<br />
title Arch Linux (SELinux)<br />
root (hd0,0)<br />
kernel '''vmlinuz-linux-selinux''' root=/dev/sda5 ro vga=775<br />
initrd '''initramfs-linux-selinux.img'''<br />
<br />
===Mounting selinuxfs===<br />
<br />
Добавьте в {{ic|/etc/fstab}}:<br />
<br />
none /selinux selinuxfs noauto 0 0<br />
<br />
Создайте папку /selinux:<br />
<br />
mkdir /selinux<br />
<br />
===Main SELinux configuration file===<br />
<br />
Основной конфигурационный файл SELLinux ({{ic|/etc/selinux/config}}) является частью пакета {{AUR|selinux-refpolicy}}, доступного из [[Arch User Repository|AUR]]. Его содержимое по умолчанию:<br />
<br />
# This file controls the state of SELinux on the system.<br />
# SELINUX= can take one of these three values:<br />
# enforcing - SELinux security policy is enforced.<br />
# permissive - SELinux prints warnings <br />
# instead of enforcing.<br />
# disabled - No SELinux policy is loaded.<br />
SELINUX=permissive<br />
# SELINUXTYPE= takes the name of SELinux policy to<br />
# be used. Current options are:<br />
# refpolicy (vanilla reference policy)<br />
# refpolicy-arch (reference policy with <br />
# Arch Linux patch)<br />
SELINUXTYPE=refpolicy<br />
<br />
{{Note|Опция {{ic|SELINUX<nowiki>=</nowiki>permissive}} подходит только для конфигурации. Это не увеличивает безопасность и после настройки измените её на {{ic|SELINUX<nowiki>=</nowiki>enforcing}}. Опция {{ic|SELINUXTYPE<nowiki>=</nowiki>refpolicy}} устанавливает имя используемой политики. Измените его на имя вашей политики. Если вы решили скомпилировать политику из исходников, вы должны самостоятельно создать файл.}}<br />
<br />
===Set up PAM===<br />
<br />
Correctly set-up PAM is important to get a proper security context after login. If you installed {{AUR|selinux-shadow}} from the [[Arch User Repository|AUR]], there should be the following lines in {{ic|/etc/pam.d/login}}:<br />
<br />
# pam_selinux.so close should be the first session rule<br />
session required pam_selinux.so close<br />
# pam_selinux.so open should only be followed by sessions to be executed in the user context<br />
session required pam_selinux.so open<br />
<br />
If not, add them to the file. Similarly for logging in via SSH in {{ic|/etc/pam.d/sshd}}, which is part of {{AUR|selinux-openssh}} package.<br />
<br />
If you want to use SELinux with GUI, you should add the aforementioned lines to other files such as {{ic|/etc/pam.d/kde}}, {{ic|/etc/pam.d/kde-np}}, ... depending on your login manager.<br />
<br />
{{Note|Running SELinux with GUI applications in Arch Linux is not much supported at the time being.}}<br />
<br />
==Reference policy==<br />
<br />
There are currently two possible ways of installing reference policy: From a pre-compiled package ({{AUR|selinux-refpolicy}}) or from a source package ({{AUR|selinux-refpolicy-src}}).<br />
<br />
{{Note| It is possible to have both the source and the binary package installed. If you plan to build from source in that case, you should probably change the name of policy in {{ic|build.conf}} to avoid overwriting of selinux-refpolicy package files.}}<br />
<br />
===Installing a precompiled refpolicy===<br />
<br />
Install {{AUR|selinux-refpolicy}} from AUR. This is a modular-otherways-vanilla refpolicy. This package includes policy headers (you can therefore compile your own modules), policy documentation and an install script which will load the policy for you and relabel your filesystem (which will likely take some time). It does not include the sources though.<br />
<br />
This package also includes the main SELinux configuration file ({{ic|/etc/selinux/config}}) defaulting to refpolicy and permissive SELinux enforcement for testing purposes.<br />
<br />
You should verify that the policy was correctly loaded, that is if the file {{ic|/etc/selinux/refpolicy/policy/policy.24}} has non-zero size. If so and if you have installed {{AUR|selinux-sysvinit}} and other needed packages, you are ready to reboot and make sure that everything works.<br />
<br />
{{Warning| On newer kernels (eg. 3.0) policy in file {{ic|/etc/selinux/refpolicy/policy/policy.24}} has zero bytes size, because it is used new version of policy from file: {{ic|/etc/selinux/refpolicy/policy/policy.26}}}}<br />
<br />
In case the policy was not correctly loaded you can as root use the following command inside of the {{ic|/usr/share/selinux/refpolicy}} directory to do so:<br />
<br />
/bin/ls *.pp | /bin/grep -Ev "base.pp|enableaudit.pp" | /usr/bin/xargs /usr/sbin/semodule -s refpolicy -b base.pp -i<br />
<br />
To manually relabel your filesystem you can as root use:<br />
<br />
/sbin/restorecon -r /<br />
<br />
===Installing refpolicy from a source package===<br />
<br />
Install {{AUR|selinux-refpolicy-src}} from AUR. Edit the file {{ic|/etc/selinux/refpolicy/src/policy/build.conf}} to your liking. <br />
<br />
{{Note|Build configuration file {{ic|build.conf}} is overwritten on every selinux-refpolicy-src package upgrade, so backup your configuration.}}<br />
<br />
To build, install and load policy from source do the following. (For other possibilities consult the README file located in {{ic|/etc/selinux/refpolicy/src/policy/}}.)<br />
<br />
cd /etc/selinux/refpolicy/src/policy<br />
make bare<br />
make conf <br />
make load<br />
<br />
Copy or link the compiled binary policy to {{ic|/etc/policy.bin}} for sysvinit to find and install selinux-sysvinit:<br />
<br />
ln -s /etc/selinux/refpolicy/policy/policy.21 /etc/policy.bin<br />
<br />
At this moment files do not have any context, so you should relabel the whole filesystem, which will take a while:<br />
<br />
make relabel<br />
<br />
Create the main SELinux configuration file ({{ic|/etc/selinux/config}}) according to the example in related section.<br />
<br />
Now you are ready to reboot and make sure that everything works.<br />
<br />
==Post-installation steps==<br />
<br />
{{Warning| Если ''selinux-sysvinit'' не установлен, то SELinux не сможет запуститься и {{ic|/selinux}} не будет смонтирован.}}<br />
<br />
Выполните {{ic|sestatus}} чтобы убедиться, что SELinux работает. Должно получиться что-то вроде этого:<br />
<br />
SELinux status: enabled<br />
SELinuxfs mount: /selinux<br />
Current mode: permissive<br />
Mode from config file: permissive<br />
Policy version: 26<br />
Policy from config file: refpolicy<br />
<br />
To maintain correct context, you can use ''restorecond'':<br />
<br />
touch /etc/rc.d/restorecond<br />
chmod ugo+x /etc/rc.d/restorecond<br />
<br />
Which should contain:<br />
<br />
#!/bin/sh<br />
restorecond<br />
<br />
{{Note|Не забудьте добавить {{ic|restorecond}} в список {{ic|DAEMONS}} вашего {{ic|/etc/rc.conf}}.}}<br />
<br />
Чтобы переключиться на осуществление режима без перезагрузки, можете использовать:<br />
<br />
echo 1 > /selinux/enforce<br />
<br />
{{Note|Если {{ic|SELINUX<nowiki>=</nowiki>enforcing}} в {{ic|/etc/selinux/config}} не работает, создайте {{ic|/etc/rc.d/selinux-enforce}} содержащий предыдущую команду так же как с restorecond демоном.}}<br />
<br />
==Useful tools==<br />
<br />
There are some tools/commands that can greatly help with SELinux. <br />
<br />
;restorecon: Restores the context of a file/directory (or recursively with {{ic|-R}}) based on any policy rules <br />
;rlpkg: Relabels any files belonging to that Gentoo package to their proper security context (if they have one) <br />
;chcon: Change the context on a specific file <br />
;audit2allow: Reads in log messages from the AVC log file and tells you what rules would fix the error. Do not just add these rules without looking at them though, they cannot detect errors in other places (e.g. the application is running in the wrong context in the first place), or sometimes things will generate error messages but may maintain functionality so it would be better to add dontaudit to just ignore the access attempts.<br />
<br />
==References==<br />
*[http://en.wikipedia.org/wiki/Security-Enhanced_Linux Security Enhanced Linux]<br />
*[http://www.gentoo.org/proj/en/hardened/selinux/selinux-handbook.xml Gentoo SELinux Handbook]<br />
*[http://fedoraproject.org/wiki/SELinux Fedora Project's SELinux Wiki]<br />
*[http://www.nsa.gov/research/selinux/index.shtml NSA's Official SELinux Homepage]<br />
*[http://oss.tresys.com/projects/refpolicy Reference Policy Homepage]<br />
*[http://userspace.selinuxproject.org/trac/ SELinux Userspace Homepage]<br />
*[http://oss.tresys.com/projects/setools SETools Homepage]<br />
<br />
== See also ==<br />
* [[AppArmor]] (Similar to SELinux, much easier to configure, less features.)</div>Alligatorhttps://wiki.archlinux.org/index.php?title=SELinux_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=211400SELinux (Русский)2012-06-27T18:33:44Z<p>Alligator: /* Package description */</p>
<hr />
<div>[[en:SELinux]]<br />
[[Category:Security (Русский)]]<br />
[[Category:Kernel (Русский)]]<br />
Security-Enhanced Linux (SELinux) это функция Linux, которая обеспечивает множество политик безопасности, включая США. Обязательные средства управления доступом (MAC, Mandatory Access Controls) стиля министерства обороны, с помощью Linux Security Modules (LSM) в ядре Linux. Это не дистрибутив Linux, а скорее ряд модификаций, которые могут быть применены к Unix-подобным операционным системам, таким как Linux и BSD. Её архитектура стремится оптимизировать объем программного обеспечения, обвиненного в осуществлении политики безопасности, которое является близко выровненное Trusted Computer System Evaluation Criteria (TCSEC, называемый Оранжевой книгой) требование для минимизации достоверной вычислительной базы (TCB) (применимый к классам B3 и A1 оценки), но довольно не связано с наименьшим количеством требования полномочия (B2, B3, A1), как часто требуется. Зародышевые понятия базовый SELinux могут быть прослежены до нескольких более ранних проектов американским Агентством национальной безопасности (NSA). [1]<br />
<br />
Для выполнения SELinux под дистрибутивом Linux требуется: включить SELinux в ядро, инструменты SELinux Userspace и библиотеки, и SELinux Policies (главным образом на основе Reference Policy). Некоторые общие программы Linux должны также исправляться/компилироваться с функциями SELinux.<br />
<br />
==Обязательные требования==<br />
<br />
Поддерживаются только файловые системы ext2, ext3, ext4, JFS и XFS.<br />
<br />
{{Note| This is probably not needed anymore:}}<br />
<br />
Пользователи XFS должны использовать 512 байтов inodes (значение по умолчанию 256). Использование SELinux расширяло атрибуты для того, чтобы сохранить метки безопасности в файлах. XFS хранит это в inode, и если inode слишком маленький, должен использоваться дополнительный блок, который тратит впустую много пространства и подвергается потерям производительности.<br />
<br />
# mkfs.xfs -i size=512 /dev/sda1 (for example)<br />
<br />
==Установка необходимых пакетов==<br />
<br />
Должны быть установлены по крайней мере {{AUR|linux-selinux}}, {{AUR|selinux-pam}}, {{AUR|selinux-usr-policycoreutils}} и {{AUR|selinux-refpolicy-src}} из [[AUR]]. Рекомендуется установить все пакеты, требуемые SELinux.<br />
<br />
При установке из [[AUR (Русский)]], можете использовать [[AUR helper (Русский)]] или загружать tarballs из AUR вручную и собирать с {{ic|makepkg}}. При замене пакетов pam и coreutils будьте особо внимательны, поскольку они жизненно важны для системы. Приготовьте Live CD или Live USB на случай, если придётся переустановить систему.<br />
<br />
{{Warning| Do '''not''' remove {{Pkg|pam}} via sudo, as PAM is what takes care of authentication, and you just removed it. Instead first ''su'' to root and then do:<br />
pacman -Rdd pam<br />
pacman -U selinux-pam<br />
Doing {{ic|pacman -Rdd coreutils}}, {{ic|pacman -U selinux-coreutils}} may also cause you troubles, so maybe the best way is to install the {{ic|selinux-*}} packages from a live CD chroot to your system.}}<br />
<br />
{{Warning| Do '''not''' install {{AUR|selinux-sysvinit}} package unless everything is set up, as you may end up with an unbootable system. Or, do not reboot unless you have everything set up.}}<br />
<br />
===Описание пакета===<br />
<br />
Все пакеты, принадлежащие к SELinux находятся в группе ''selinux''. В ''selinux-userspace'' пакеты пользователтского пространства SELinux. В ''selinux-policies'' находятся пакеты политик SELinux. Остальные пакеты находятся в ''selinux-extras''.<br />
<br />
====SELinux aware system utils====<br />
<br />
;{{AUR|linux-selinux}}<br />
:Активирует поддержку [[SELinux]] ядром. Компиляция модулей подобно Virtualbox.<br />
<br />
;{{AUR|selinux-coreutils}}<br />
:Компиляция пакета [[coreutils]] с включенной поддержкой SELinux.<br />
<br />
;{{AUR|selinux-flex}}<br />
:Версия flex, необходимая только для сборки checkpolicy. Текущий flex имеет ошибку, вызывающую отказ в выполнении команды checkmodule.<br />
<br />
;{{AUR|selinux-pam}}<br />
:Пакет PAM с pam_selinux.so.<br />
<br />
;{{AUR|selinux-sysvinit}}<br />
:sysvinit загружает политики при старте системы. Будьте осторожны; если политика SELinux не сможет быть загружена это перестанет работать!<br />
<br />
;{{AUR|selinux-util-linux}}<br />
:Версия util-linux, скомпилированная с включенной поддержкой SELinux.<br />
<br />
;{{AUR|selinux-udev}} сделал устаревшим {{AUR|selinux-sysvinit}}<br />
:Версия [[udev]], скомпилированная с включенной поддержкой SELinux для маркировки файлов в {{ic|/dev}} для правильной работы. Функциональность [[udev]] теперь обеспечена selinux-sysvinit-tools [http://www.archlinux.org/news/systemd-tools-replaces-udev/], которая является частью {{AUR|selinux-sysvinit}} splitpackage.<br />
<br />
;{{AUR|selinux-findutils}}<br />
:Пропатченная версия findutils с активированной поддержкой SELinux, необходимая для поиска файлов в указанном возможном контексте безопасности.<br />
<br />
;{{AUR|selinux-sudo}}<br />
:Версия [[sudo]] с активированной поддержкой SELinux, для корректной устанавки контекста безопасности.<br />
<br />
;{{AUR|selinux-procps}}<br />
:Исправления пакета procps на основе некоторых патчей Fedora.<br />
<br />
;{{AUR|selinux-psmisc}}<br />
:Версия psmisc с активированной поддержкой SELinux. Добавляет опцию {{ic|-Z}} к {{ic|killall}}.<br />
<br />
;{{AUR|selinux-shadow}}<br />
:Версия shadow с активированной поддержкой SELinux. Содержит изменённый {{ic|/etc/pam.d/login}} для корректной установки контекста безопасности после входа в систему.<br />
<br />
;{{AUR|selinux-cronie}}<br />
:Vixie cron из дистрибутива Fedora с активированной поддержкой SELinux.<br />
<br />
;{{AUR|selinux-logrotate}}<br />
:Версия [[logrotate]] с активированной поддержкой SELinux.<br />
<br />
;{{AUR|selinux-openssh}}<br />
:Версия [[OpenSSH]] с активированной поддержкой SELinux, для установки контекста безопасности в течение многих сеансов пользователя.<br />
<br />
====Пространство пользователя SELinux====<br />
;{{AUR|selinux-usr-checkpolicy}}<br />
:Tools to build SELinux policy<br />
<br />
;{{AUR|selinux-usr-libselinux}}<br />
:Library for security-aware applications. Python bindings needed for ''semanage'' and ''setools'' now included.<br />
<br />
;{{AUR|selinux-usr-libsemanage}}<br />
:Library for policy management. Python bindings needed for ''semanage'' and ''setools'' now included.<br />
<br />
;{{AUR|selinux-usr-libsepol}}<br />
:Library for binary policy manipulation.<br />
<br />
;{{AUR|selinux-usr-policycoreutils}}<br />
:SELinux core utils such as newrole, setfiles, etc.<br />
<br />
;{{AUR|selinux-usr-sepolgen}}<br />
:A Python library for parsing and modifying policy source.<br />
<br />
====Политики SELinux====<br />
<br />
;{{AUR|selinux-refpolicy}}<br />
:Precompiled modular-otherways-vanilla Reference policy with headers and documentation but without sources.<br />
<br />
;{{AUR|selinux-refpolicy-src}}<br />
:Reference policy sources<br />
<br />
;{{AUR|selinux-refpolicy-arch}}<br />
:Precompiled modular Reference policy with headers and documentation but without sources. Development Arch Linux Refpolicy patch included, but for now [February 2011] it only fixes some issues with {{ic|/etc/rc.d/*}} labeling.<br />
<br />
====Другие утилиты SELinux====<br />
<br />
;{{AUR|selinux-setools}}<br />
:CLI and GUI tools to manage SELinux<br />
<br />
;{{AUR|audit}}<br />
:User space utilities for storing and searching the audit records generated by the audit subsystem in the Linux kernel. SELinux (AVC) will log all denials using audit. Very useful in troubleshooting SELinux. Also audit2allow use log from this program.<br />
<br />
{{Note|If using proprietary drivers, such as [[NVIDIA]] graphics drivers, you may need to [[NVIDIA#Alternate install: custom kernel|rebuild them]] for custom kernels.}}<br />
<br />
==Configuration==<br />
<br />
После установки всех необходимых пакетов их необходимо настроить.<br />
<br />
===Changing boot loader configuration===<br />
<br />
Добавьте в конфигурационный файл [[GRUB]] {{ic|/boot/grub/menu.lst}} следующие строки:<br />
<br />
# (1) Arch Linux<br />
title Arch Linux (SELinux)<br />
root (hd0,0)<br />
kernel '''vmlinuz-linux-selinux''' root=/dev/sda5 ro vga=775<br />
initrd '''initramfs-linux-selinux.img'''<br />
<br />
===Mounting selinuxfs===<br />
<br />
Добавьте в {{ic|/etc/fstab}}:<br />
<br />
none /selinux selinuxfs noauto 0 0<br />
<br />
Создайте папку /selinux:<br />
<br />
mkdir /selinux<br />
<br />
===Main SELinux configuration file===<br />
<br />
Основной конфигурационный файл SELLinux ({{ic|/etc/selinux/config}}) является частью пакета {{AUR|selinux-refpolicy}}, доступного из [[Arch User Repository|AUR]]. Его содержимое по умолчанию:<br />
<br />
# This file controls the state of SELinux on the system.<br />
# SELINUX= can take one of these three values:<br />
# enforcing - SELinux security policy is enforced.<br />
# permissive - SELinux prints warnings <br />
# instead of enforcing.<br />
# disabled - No SELinux policy is loaded.<br />
SELINUX=permissive<br />
# SELINUXTYPE= takes the name of SELinux policy to<br />
# be used. Current options are:<br />
# refpolicy (vanilla reference policy)<br />
# refpolicy-arch (reference policy with <br />
# Arch Linux patch)<br />
SELINUXTYPE=refpolicy<br />
<br />
{{Note|Опция {{ic|SELINUX<nowiki>=</nowiki>permissive}} подходит только для конфигурации. Это не увеличивает безопасность и после настройки измените её на {{ic|SELINUX<nowiki>=</nowiki>enforcing}}. Опция {{ic|SELINUXTYPE<nowiki>=</nowiki>refpolicy}} устанавливает имя используемой политики. Измените его на имя вашей политики. Если вы решили скомпилировать политику из исходников, вы должны самостоятельно создать файл.}}<br />
<br />
===Set up PAM===<br />
<br />
Correctly set-up PAM is important to get a proper security context after login. If you installed {{AUR|selinux-shadow}} from the [[Arch User Repository|AUR]], there should be the following lines in {{ic|/etc/pam.d/login}}:<br />
<br />
# pam_selinux.so close should be the first session rule<br />
session required pam_selinux.so close<br />
# pam_selinux.so open should only be followed by sessions to be executed in the user context<br />
session required pam_selinux.so open<br />
<br />
If not, add them to the file. Similarly for logging in via SSH in {{ic|/etc/pam.d/sshd}}, which is part of {{AUR|selinux-openssh}} package.<br />
<br />
If you want to use SELinux with GUI, you should add the aforementioned lines to other files such as {{ic|/etc/pam.d/kde}}, {{ic|/etc/pam.d/kde-np}}, ... depending on your login manager.<br />
<br />
{{Note|Running SELinux with GUI applications in Arch Linux is not much supported at the time being.}}<br />
<br />
==Reference policy==<br />
<br />
There are currently two possible ways of installing reference policy: From a pre-compiled package ({{AUR|selinux-refpolicy}}) or from a source package ({{AUR|selinux-refpolicy-src}}).<br />
<br />
{{Note| It is possible to have both the source and the binary package installed. If you plan to build from source in that case, you should probably change the name of policy in {{ic|build.conf}} to avoid overwriting of selinux-refpolicy package files.}}<br />
<br />
===Installing a precompiled refpolicy===<br />
<br />
Install {{AUR|selinux-refpolicy}} from AUR. This is a modular-otherways-vanilla refpolicy. This package includes policy headers (you can therefore compile your own modules), policy documentation and an install script which will load the policy for you and relabel your filesystem (which will likely take some time). It does not include the sources though.<br />
<br />
This package also includes the main SELinux configuration file ({{ic|/etc/selinux/config}}) defaulting to refpolicy and permissive SELinux enforcement for testing purposes.<br />
<br />
You should verify that the policy was correctly loaded, that is if the file {{ic|/etc/selinux/refpolicy/policy/policy.24}} has non-zero size. If so and if you have installed {{AUR|selinux-sysvinit}} and other needed packages, you are ready to reboot and make sure that everything works.<br />
<br />
{{Warning| On newer kernels (eg. 3.0) policy in file {{ic|/etc/selinux/refpolicy/policy/policy.24}} has zero bytes size, because it is used new version of policy from file: {{ic|/etc/selinux/refpolicy/policy/policy.26}}}}<br />
<br />
In case the policy was not correctly loaded you can as root use the following command inside of the {{ic|/usr/share/selinux/refpolicy}} directory to do so:<br />
<br />
/bin/ls *.pp | /bin/grep -Ev "base.pp|enableaudit.pp" | /usr/bin/xargs /usr/sbin/semodule -s refpolicy -b base.pp -i<br />
<br />
To manually relabel your filesystem you can as root use:<br />
<br />
/sbin/restorecon -r /<br />
<br />
===Installing refpolicy from a source package===<br />
<br />
Install {{AUR|selinux-refpolicy-src}} from AUR. Edit the file {{ic|/etc/selinux/refpolicy/src/policy/build.conf}} to your liking. <br />
<br />
{{Note|Build configuration file {{ic|build.conf}} is overwritten on every selinux-refpolicy-src package upgrade, so backup your configuration.}}<br />
<br />
To build, install and load policy from source do the following. (For other possibilities consult the README file located in {{ic|/etc/selinux/refpolicy/src/policy/}}.)<br />
<br />
cd /etc/selinux/refpolicy/src/policy<br />
make bare<br />
make conf <br />
make load<br />
<br />
Copy or link the compiled binary policy to {{ic|/etc/policy.bin}} for sysvinit to find and install selinux-sysvinit:<br />
<br />
ln -s /etc/selinux/refpolicy/policy/policy.21 /etc/policy.bin<br />
<br />
At this moment files do not have any context, so you should relabel the whole filesystem, which will take a while:<br />
<br />
make relabel<br />
<br />
Create the main SELinux configuration file ({{ic|/etc/selinux/config}}) according to the example in related section.<br />
<br />
Now you are ready to reboot and make sure that everything works.<br />
<br />
==Post-installation steps==<br />
<br />
{{Warning| Если ''selinux-sysvinit'' не установлен, то SELinux не сможет запуститься и {{ic|/selinux}} не будет смонтирован.}}<br />
<br />
Выполните {{ic|sestatus}} чтобы убедиться, что SELinux работает. Должно получиться что-то вроде этого:<br />
<br />
SELinux status: enabled<br />
SELinuxfs mount: /selinux<br />
Current mode: permissive<br />
Mode from config file: permissive<br />
Policy version: 26<br />
Policy from config file: refpolicy<br />
<br />
To maintain correct context, you can use ''restorecond'':<br />
<br />
touch /etc/rc.d/restorecond<br />
chmod ugo+x /etc/rc.d/restorecond<br />
<br />
Which should contain:<br />
<br />
#!/bin/sh<br />
restorecond<br />
<br />
{{Note|Не забудьте добавить {{ic|restorecond}} в список {{ic|DAEMONS}} вашего {{ic|/etc/rc.conf}}.}}<br />
<br />
Чтобы переключиться на осуществление режима без перезагрузки, можете использовать:<br />
<br />
echo 1 > /selinux/enforce<br />
<br />
{{Note|Если {{ic|SELINUX<nowiki>=</nowiki>enforcing}} в {{ic|/etc/selinux/config}} не работает, создайте {{ic|/etc/rc.d/selinux-enforce}} содержащий предыдущую команду так же как с restorecond демоном.}}<br />
<br />
==Useful tools==<br />
<br />
There are some tools/commands that can greatly help with SELinux. <br />
<br />
;restorecon: Restores the context of a file/directory (or recursively with {{ic|-R}}) based on any policy rules <br />
;rlpkg: Relabels any files belonging to that Gentoo package to their proper security context (if they have one) <br />
;chcon: Change the context on a specific file <br />
;audit2allow: Reads in log messages from the AVC log file and tells you what rules would fix the error. Do not just add these rules without looking at them though, they cannot detect errors in other places (e.g. the application is running in the wrong context in the first place), or sometimes things will generate error messages but may maintain functionality so it would be better to add dontaudit to just ignore the access attempts.<br />
<br />
==References==<br />
*[http://en.wikipedia.org/wiki/Security-Enhanced_Linux Security Enhanced Linux]<br />
*[http://www.gentoo.org/proj/en/hardened/selinux/selinux-handbook.xml Gentoo SELinux Handbook]<br />
*[http://fedoraproject.org/wiki/SELinux Fedora Project's SELinux Wiki]<br />
*[http://www.nsa.gov/research/selinux/index.shtml NSA's Official SELinux Homepage]<br />
*[http://oss.tresys.com/projects/refpolicy Reference Policy Homepage]<br />
*[http://userspace.selinuxproject.org/trac/ SELinux Userspace Homepage]<br />
*[http://oss.tresys.com/projects/setools SETools Homepage]<br />
<br />
== See also ==<br />
* [[AppArmor]] (Similar to SELinux, much easier to configure, less features.)</div>Alligatorhttps://wiki.archlinux.org/index.php?title=SELinux_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=211399SELinux (Русский)2012-06-27T18:18:56Z<p>Alligator: /* SELinux aware system utils */</p>
<hr />
<div>[[en:SELinux]]<br />
[[Category:Security (Русский)]]<br />
[[Category:Kernel (Русский)]]<br />
Security-Enhanced Linux (SELinux) это функция Linux, которая обеспечивает множество политик безопасности, включая США. Обязательные средства управления доступом (MAC, Mandatory Access Controls) стиля министерства обороны, с помощью Linux Security Modules (LSM) в ядре Linux. Это не дистрибутив Linux, а скорее ряд модификаций, которые могут быть применены к Unix-подобным операционным системам, таким как Linux и BSD. Её архитектура стремится оптимизировать объем программного обеспечения, обвиненного в осуществлении политики безопасности, которое является близко выровненное Trusted Computer System Evaluation Criteria (TCSEC, называемый Оранжевой книгой) требование для минимизации достоверной вычислительной базы (TCB) (применимый к классам B3 и A1 оценки), но довольно не связано с наименьшим количеством требования полномочия (B2, B3, A1), как часто требуется. Зародышевые понятия базовый SELinux могут быть прослежены до нескольких более ранних проектов американским Агентством национальной безопасности (NSA). [1]<br />
<br />
Для выполнения SELinux под дистрибутивом Linux требуется: включить SELinux в ядро, инструменты SELinux Userspace и библиотеки, и SELinux Policies (главным образом на основе Reference Policy). Некоторые общие программы Linux должны также исправляться/компилироваться с функциями SELinux.<br />
<br />
==Обязательные требования==<br />
<br />
Поддерживаются только файловые системы ext2, ext3, ext4, JFS и XFS.<br />
<br />
{{Note| This is probably not needed anymore:}}<br />
<br />
Пользователи XFS должны использовать 512 байтов inodes (значение по умолчанию 256). Использование SELinux расширяло атрибуты для того, чтобы сохранить метки безопасности в файлах. XFS хранит это в inode, и если inode слишком маленький, должен использоваться дополнительный блок, который тратит впустую много пространства и подвергается потерям производительности.<br />
<br />
# mkfs.xfs -i size=512 /dev/sda1 (for example)<br />
<br />
==Установка необходимых пакетов==<br />
<br />
Должны быть установлены по крайней мере {{AUR|linux-selinux}}, {{AUR|selinux-pam}}, {{AUR|selinux-usr-policycoreutils}} и {{AUR|selinux-refpolicy-src}} из [[AUR]]. Рекомендуется установить все пакеты, требуемые SELinux.<br />
<br />
При установке из [[AUR (Русский)]], можете использовать [[AUR helper (Русский)]] или загружать tarballs из AUR вручную и собирать с {{ic|makepkg}}. При замене пакетов pam и coreutils будьте особо внимательны, поскольку они жизненно важны для системы. Приготовьте Live CD или Live USB на случай, если придётся переустановить систему.<br />
<br />
{{Warning| Do '''not''' remove {{Pkg|pam}} via sudo, as PAM is what takes care of authentication, and you just removed it. Instead first ''su'' to root and then do:<br />
pacman -Rdd pam<br />
pacman -U selinux-pam<br />
Doing {{ic|pacman -Rdd coreutils}}, {{ic|pacman -U selinux-coreutils}} may also cause you troubles, so maybe the best way is to install the {{ic|selinux-*}} packages from a live CD chroot to your system.}}<br />
<br />
{{Warning| Do '''not''' install {{AUR|selinux-sysvinit}} package unless everything is set up, as you may end up with an unbootable system. Or, do not reboot unless you have everything set up.}}<br />
<br />
===Package description===<br />
<br />
Все пакеты, принадлежащие к SELinux находятся в группе ''selinux''. В ''selinux-userspace'' пакеты пользователтского пространства SELinux. В ''selinux-policies'' находятся пакеты политик SELinux. Остальные пакеты находятся в ''selinux-extras''.<br />
<br />
====SELinux aware system utils====<br />
<br />
;{{AUR|linux-selinux}}<br />
:Активирует поддержку [[SELinux]] ядром. Компиляция модулей подобно Virtualbox.<br />
<br />
;{{AUR|selinux-coreutils}}<br />
:Компиляция пакета [[coreutils]] с включенной поддержкой SELinux.<br />
<br />
;{{AUR|selinux-flex}}<br />
:Версия flex, необходимая только для сборки checkpolicy. Текущий flex имеет ошибку, вызывающую отказ в выполнении команды checkmodule.<br />
<br />
;{{AUR|selinux-pam}}<br />
:Пакет PAM с pam_selinux.so.<br />
<br />
;{{AUR|selinux-sysvinit}}<br />
:sysvinit загружает политики при старте системы. Будьте осторожны; если политика SELinux не сможет быть загружена это перестанет работать!<br />
<br />
;{{AUR|selinux-util-linux}}<br />
:Версия util-linux, скомпилированная с включенной поддержкой SELinux.<br />
<br />
;{{AUR|selinux-udev}} сделал устаревшим {{AUR|selinux-sysvinit}}<br />
:Версия [[udev]], скомпилированная с включенной поддержкой SELinux для маркировки файлов в {{ic|/dev}} для правильной работы. Функциональность [[udev]] теперь обеспечена selinux-sysvinit-tools [http://www.archlinux.org/news/systemd-tools-replaces-udev/], которая является частью {{AUR|selinux-sysvinit}} splitpackage.<br />
<br />
;{{AUR|selinux-findutils}}<br />
:Пропатченная версия findutils с активированной поддержкой SELinux, необходимая для поиска файлов в указанном возможном контексте безопасности.<br />
<br />
;{{AUR|selinux-sudo}}<br />
:Версия [[sudo]] с активированной поддержкой SELinux, для корректной устанавки контекста безопасности.<br />
<br />
;{{AUR|selinux-procps}}<br />
:Исправления пакета procps на основе некоторых патчей Fedora.<br />
<br />
;{{AUR|selinux-psmisc}}<br />
:Версия psmisc с активированной поддержкой SELinux. Добавляет опцию {{ic|-Z}} к {{ic|killall}}.<br />
<br />
;{{AUR|selinux-shadow}}<br />
:Версия shadow с активированной поддержкой SELinux. Содержит изменённый {{ic|/etc/pam.d/login}} для корректной установки контекста безопасности после входа в систему.<br />
<br />
;{{AUR|selinux-cronie}}<br />
:Vixie cron из дистрибутива Fedora с активированной поддержкой SELinux.<br />
<br />
;{{AUR|selinux-logrotate}}<br />
:Версия [[logrotate]] с активированной поддержкой SELinux.<br />
<br />
;{{AUR|selinux-openssh}}<br />
:Версия [[OpenSSH]] с активированной поддержкой SELinux, для установки контекста безопасности в течение многих сеансов пользователя.<br />
<br />
====SELinux userspace====<br />
;{{AUR|selinux-usr-checkpolicy}}<br />
:Tools to build SELinux policy<br />
<br />
;{{AUR|selinux-usr-libselinux}}<br />
:Library for security-aware applications. Python bindings needed for ''semanage'' and ''setools'' now included.<br />
<br />
;{{AUR|selinux-usr-libsemanage}}<br />
:Library for policy management. Python bindings needed for ''semanage'' and ''setools'' now included.<br />
<br />
;{{AUR|selinux-usr-libsepol}}<br />
:Library for binary policy manipulation.<br />
<br />
;{{AUR|selinux-usr-policycoreutils}}<br />
:SELinux core utils such as newrole, setfiles, etc.<br />
<br />
;{{AUR|selinux-usr-sepolgen}}<br />
:A Python library for parsing and modifying policy source.<br />
<br />
====SELinux policy====<br />
<br />
;{{AUR|selinux-refpolicy}}<br />
:Precompiled modular-otherways-vanilla Reference policy with headers and documentation but without sources.<br />
<br />
;{{AUR|selinux-refpolicy-src}}<br />
:Reference policy sources<br />
<br />
;{{AUR|selinux-refpolicy-arch}}<br />
:Precompiled modular Reference policy with headers and documentation but without sources. Development Arch Linux Refpolicy patch included, but for now [February 2011] it only fixes some issues with {{ic|/etc/rc.d/*}} labeling.<br />
<br />
====Other SELinux tools====<br />
<br />
;{{AUR|selinux-setools}}<br />
:CLI and GUI tools to manage SELinux<br />
<br />
;{{AUR|audit}}<br />
:User space utilities for storing and searching the audit records generated by the audit subsystem in the Linux kernel. SELinux (AVC) will log all denials using audit. Very useful in troubleshooting SELinux. Also audit2allow use log from this program.<br />
<br />
{{Note|If using proprietary drivers, such as [[NVIDIA]] graphics drivers, you may need to [[NVIDIA#Alternate install: custom kernel|rebuild them]] for custom kernels.}}<br />
<br />
==Configuration==<br />
<br />
После установки всех необходимых пакетов их необходимо настроить.<br />
<br />
===Changing boot loader configuration===<br />
<br />
Добавьте в конфигурационный файл [[GRUB]] {{ic|/boot/grub/menu.lst}} следующие строки:<br />
<br />
# (1) Arch Linux<br />
title Arch Linux (SELinux)<br />
root (hd0,0)<br />
kernel '''vmlinuz-linux-selinux''' root=/dev/sda5 ro vga=775<br />
initrd '''initramfs-linux-selinux.img'''<br />
<br />
===Mounting selinuxfs===<br />
<br />
Добавьте в {{ic|/etc/fstab}}:<br />
<br />
none /selinux selinuxfs noauto 0 0<br />
<br />
Создайте папку /selinux:<br />
<br />
mkdir /selinux<br />
<br />
===Main SELinux configuration file===<br />
<br />
Основной конфигурационный файл SELLinux ({{ic|/etc/selinux/config}}) является частью пакета {{AUR|selinux-refpolicy}}, доступного из [[Arch User Repository|AUR]]. Его содержимое по умолчанию:<br />
<br />
# This file controls the state of SELinux on the system.<br />
# SELINUX= can take one of these three values:<br />
# enforcing - SELinux security policy is enforced.<br />
# permissive - SELinux prints warnings <br />
# instead of enforcing.<br />
# disabled - No SELinux policy is loaded.<br />
SELINUX=permissive<br />
# SELINUXTYPE= takes the name of SELinux policy to<br />
# be used. Current options are:<br />
# refpolicy (vanilla reference policy)<br />
# refpolicy-arch (reference policy with <br />
# Arch Linux patch)<br />
SELINUXTYPE=refpolicy<br />
<br />
{{Note|Опция {{ic|SELINUX<nowiki>=</nowiki>permissive}} подходит только для конфигурации. Это не увеличивает безопасность и после настройки измените её на {{ic|SELINUX<nowiki>=</nowiki>enforcing}}. Опция {{ic|SELINUXTYPE<nowiki>=</nowiki>refpolicy}} устанавливает имя используемой политики. Измените его на имя вашей политики. Если вы решили скомпилировать политику из исходников, вы должны самостоятельно создать файл.}}<br />
<br />
===Set up PAM===<br />
<br />
Correctly set-up PAM is important to get a proper security context after login. If you installed {{AUR|selinux-shadow}} from the [[Arch User Repository|AUR]], there should be the following lines in {{ic|/etc/pam.d/login}}:<br />
<br />
# pam_selinux.so close should be the first session rule<br />
session required pam_selinux.so close<br />
# pam_selinux.so open should only be followed by sessions to be executed in the user context<br />
session required pam_selinux.so open<br />
<br />
If not, add them to the file. Similarly for logging in via SSH in {{ic|/etc/pam.d/sshd}}, which is part of {{AUR|selinux-openssh}} package.<br />
<br />
If you want to use SELinux with GUI, you should add the aforementioned lines to other files such as {{ic|/etc/pam.d/kde}}, {{ic|/etc/pam.d/kde-np}}, ... depending on your login manager.<br />
<br />
{{Note|Running SELinux with GUI applications in Arch Linux is not much supported at the time being.}}<br />
<br />
==Reference policy==<br />
<br />
There are currently two possible ways of installing reference policy: From a pre-compiled package ({{AUR|selinux-refpolicy}}) or from a source package ({{AUR|selinux-refpolicy-src}}).<br />
<br />
{{Note| It is possible to have both the source and the binary package installed. If you plan to build from source in that case, you should probably change the name of policy in {{ic|build.conf}} to avoid overwriting of selinux-refpolicy package files.}}<br />
<br />
===Installing a precompiled refpolicy===<br />
<br />
Install {{AUR|selinux-refpolicy}} from AUR. This is a modular-otherways-vanilla refpolicy. This package includes policy headers (you can therefore compile your own modules), policy documentation and an install script which will load the policy for you and relabel your filesystem (which will likely take some time). It does not include the sources though.<br />
<br />
This package also includes the main SELinux configuration file ({{ic|/etc/selinux/config}}) defaulting to refpolicy and permissive SELinux enforcement for testing purposes.<br />
<br />
You should verify that the policy was correctly loaded, that is if the file {{ic|/etc/selinux/refpolicy/policy/policy.24}} has non-zero size. If so and if you have installed {{AUR|selinux-sysvinit}} and other needed packages, you are ready to reboot and make sure that everything works.<br />
<br />
{{Warning| On newer kernels (eg. 3.0) policy in file {{ic|/etc/selinux/refpolicy/policy/policy.24}} has zero bytes size, because it is used new version of policy from file: {{ic|/etc/selinux/refpolicy/policy/policy.26}}}}<br />
<br />
In case the policy was not correctly loaded you can as root use the following command inside of the {{ic|/usr/share/selinux/refpolicy}} directory to do so:<br />
<br />
/bin/ls *.pp | /bin/grep -Ev "base.pp|enableaudit.pp" | /usr/bin/xargs /usr/sbin/semodule -s refpolicy -b base.pp -i<br />
<br />
To manually relabel your filesystem you can as root use:<br />
<br />
/sbin/restorecon -r /<br />
<br />
===Installing refpolicy from a source package===<br />
<br />
Install {{AUR|selinux-refpolicy-src}} from AUR. Edit the file {{ic|/etc/selinux/refpolicy/src/policy/build.conf}} to your liking. <br />
<br />
{{Note|Build configuration file {{ic|build.conf}} is overwritten on every selinux-refpolicy-src package upgrade, so backup your configuration.}}<br />
<br />
To build, install and load policy from source do the following. (For other possibilities consult the README file located in {{ic|/etc/selinux/refpolicy/src/policy/}}.)<br />
<br />
cd /etc/selinux/refpolicy/src/policy<br />
make bare<br />
make conf <br />
make load<br />
<br />
Copy or link the compiled binary policy to {{ic|/etc/policy.bin}} for sysvinit to find and install selinux-sysvinit:<br />
<br />
ln -s /etc/selinux/refpolicy/policy/policy.21 /etc/policy.bin<br />
<br />
At this moment files do not have any context, so you should relabel the whole filesystem, which will take a while:<br />
<br />
make relabel<br />
<br />
Create the main SELinux configuration file ({{ic|/etc/selinux/config}}) according to the example in related section.<br />
<br />
Now you are ready to reboot and make sure that everything works.<br />
<br />
==Post-installation steps==<br />
<br />
{{Warning| Если ''selinux-sysvinit'' не установлен, то SELinux не сможет запуститься и {{ic|/selinux}} не будет смонтирован.}}<br />
<br />
Выполните {{ic|sestatus}} чтобы убедиться, что SELinux работает. Должно получиться что-то вроде этого:<br />
<br />
SELinux status: enabled<br />
SELinuxfs mount: /selinux<br />
Current mode: permissive<br />
Mode from config file: permissive<br />
Policy version: 26<br />
Policy from config file: refpolicy<br />
<br />
To maintain correct context, you can use ''restorecond'':<br />
<br />
touch /etc/rc.d/restorecond<br />
chmod ugo+x /etc/rc.d/restorecond<br />
<br />
Which should contain:<br />
<br />
#!/bin/sh<br />
restorecond<br />
<br />
{{Note|Не забудьте добавить {{ic|restorecond}} в список {{ic|DAEMONS}} вашего {{ic|/etc/rc.conf}}.}}<br />
<br />
Чтобы переключиться на осуществление режима без перезагрузки, можете использовать:<br />
<br />
echo 1 > /selinux/enforce<br />
<br />
{{Note|Если {{ic|SELINUX<nowiki>=</nowiki>enforcing}} в {{ic|/etc/selinux/config}} не работает, создайте {{ic|/etc/rc.d/selinux-enforce}} содержащий предыдущую команду так же как с restorecond демоном.}}<br />
<br />
==Useful tools==<br />
<br />
There are some tools/commands that can greatly help with SELinux. <br />
<br />
;restorecon: Restores the context of a file/directory (or recursively with {{ic|-R}}) based on any policy rules <br />
;rlpkg: Relabels any files belonging to that Gentoo package to their proper security context (if they have one) <br />
;chcon: Change the context on a specific file <br />
;audit2allow: Reads in log messages from the AVC log file and tells you what rules would fix the error. Do not just add these rules without looking at them though, they cannot detect errors in other places (e.g. the application is running in the wrong context in the first place), or sometimes things will generate error messages but may maintain functionality so it would be better to add dontaudit to just ignore the access attempts.<br />
<br />
==References==<br />
*[http://en.wikipedia.org/wiki/Security-Enhanced_Linux Security Enhanced Linux]<br />
*[http://www.gentoo.org/proj/en/hardened/selinux/selinux-handbook.xml Gentoo SELinux Handbook]<br />
*[http://fedoraproject.org/wiki/SELinux Fedora Project's SELinux Wiki]<br />
*[http://www.nsa.gov/research/selinux/index.shtml NSA's Official SELinux Homepage]<br />
*[http://oss.tresys.com/projects/refpolicy Reference Policy Homepage]<br />
*[http://userspace.selinuxproject.org/trac/ SELinux Userspace Homepage]<br />
*[http://oss.tresys.com/projects/setools SETools Homepage]<br />
<br />
== See also ==<br />
* [[AppArmor]] (Similar to SELinux, much easier to configure, less features.)</div>Alligatorhttps://wiki.archlinux.org/index.php?title=SELinux_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=211398SELinux (Русский)2012-06-27T18:18:00Z<p>Alligator: /* SELinux aware system utils */</p>
<hr />
<div>[[en:SELinux]]<br />
[[Category:Security (Русский)]]<br />
[[Category:Kernel (Русский)]]<br />
Security-Enhanced Linux (SELinux) это функция Linux, которая обеспечивает множество политик безопасности, включая США. Обязательные средства управления доступом (MAC, Mandatory Access Controls) стиля министерства обороны, с помощью Linux Security Modules (LSM) в ядре Linux. Это не дистрибутив Linux, а скорее ряд модификаций, которые могут быть применены к Unix-подобным операционным системам, таким как Linux и BSD. Её архитектура стремится оптимизировать объем программного обеспечения, обвиненного в осуществлении политики безопасности, которое является близко выровненное Trusted Computer System Evaluation Criteria (TCSEC, называемый Оранжевой книгой) требование для минимизации достоверной вычислительной базы (TCB) (применимый к классам B3 и A1 оценки), но довольно не связано с наименьшим количеством требования полномочия (B2, B3, A1), как часто требуется. Зародышевые понятия базовый SELinux могут быть прослежены до нескольких более ранних проектов американским Агентством национальной безопасности (NSA). [1]<br />
<br />
Для выполнения SELinux под дистрибутивом Linux требуется: включить SELinux в ядро, инструменты SELinux Userspace и библиотеки, и SELinux Policies (главным образом на основе Reference Policy). Некоторые общие программы Linux должны также исправляться/компилироваться с функциями SELinux.<br />
<br />
==Обязательные требования==<br />
<br />
Поддерживаются только файловые системы ext2, ext3, ext4, JFS и XFS.<br />
<br />
{{Note| This is probably not needed anymore:}}<br />
<br />
Пользователи XFS должны использовать 512 байтов inodes (значение по умолчанию 256). Использование SELinux расширяло атрибуты для того, чтобы сохранить метки безопасности в файлах. XFS хранит это в inode, и если inode слишком маленький, должен использоваться дополнительный блок, который тратит впустую много пространства и подвергается потерям производительности.<br />
<br />
# mkfs.xfs -i size=512 /dev/sda1 (for example)<br />
<br />
==Установка необходимых пакетов==<br />
<br />
Должны быть установлены по крайней мере {{AUR|linux-selinux}}, {{AUR|selinux-pam}}, {{AUR|selinux-usr-policycoreutils}} и {{AUR|selinux-refpolicy-src}} из [[AUR]]. Рекомендуется установить все пакеты, требуемые SELinux.<br />
<br />
При установке из [[AUR (Русский)]], можете использовать [[AUR helper (Русский)]] или загружать tarballs из AUR вручную и собирать с {{ic|makepkg}}. При замене пакетов pam и coreutils будьте особо внимательны, поскольку они жизненно важны для системы. Приготовьте Live CD или Live USB на случай, если придётся переустановить систему.<br />
<br />
{{Warning| Do '''not''' remove {{Pkg|pam}} via sudo, as PAM is what takes care of authentication, and you just removed it. Instead first ''su'' to root and then do:<br />
pacman -Rdd pam<br />
pacman -U selinux-pam<br />
Doing {{ic|pacman -Rdd coreutils}}, {{ic|pacman -U selinux-coreutils}} may also cause you troubles, so maybe the best way is to install the {{ic|selinux-*}} packages from a live CD chroot to your system.}}<br />
<br />
{{Warning| Do '''not''' install {{AUR|selinux-sysvinit}} package unless everything is set up, as you may end up with an unbootable system. Or, do not reboot unless you have everything set up.}}<br />
<br />
===Package description===<br />
<br />
Все пакеты, принадлежащие к SELinux находятся в группе ''selinux''. В ''selinux-userspace'' пакеты пользователтского пространства SELinux. В ''selinux-policies'' находятся пакеты политик SELinux. Остальные пакеты находятся в ''selinux-extras''.<br />
<br />
====SELinux aware system utils====<br />
<br />
;{{AUR|linux-selinux}}<br />
:Активирует поддержку [[SELinux]] ядром. Компиляция модулей подобно Virtualbox.<br />
<br />
;{{AUR|selinux-coreutils}}<br />
:Компиляция пакета [[coreutils]] с включенной поддержкой SELinux.<br />
<br />
;{{AUR|selinux-flex}}<br />
Версия flex, необходимая только для сборки checkpolicy. Текущий flex имеет ошибку, вызывающую отказ в выполнении команды checkmodule.<br />
<br />
;{{AUR|selinux-pam}}<br />
:Пакет PAM с pam_selinux.so.<br />
<br />
;{{AUR|selinux-sysvinit}}<br />
:sysvinit загружает политики при старте системы. Будьте осторожны; если политика SELinux не сможет быть загружена это перестанет работать!<br />
<br />
;{{AUR|selinux-util-linux}}<br />
:Версия util-linux, скомпилированная с включенной поддержкой SELinux.<br />
<br />
;{{AUR|selinux-udev}} сделал устаревшим {{AUR|selinux-sysvinit}}<br />
:Версия [[udev]], скомпилированная с включенной поддержкой SELinux для маркировки файлов в {{ic|/dev}} для правильной работы. Функциональность [[udev]] теперь обеспечена selinux-sysvinit-tools [http://www.archlinux.org/news/systemd-tools-replaces-udev/], которая является частью {{AUR|selinux-sysvinit}} splitpackage.<br />
<br />
;{{AUR|selinux-findutils}}<br />
Пропатченная версия findutils с активированной поддержкой SELinux, необходимая для поиска файлов в указанном возможном контексте безопасности.<br />
<br />
;{{AUR|selinux-sudo}}<br />
Версия [[sudo]] с активированной поддержкой SELinux, для корректной устанавки контекста безопасности.<br />
<br />
;{{AUR|selinux-procps}}<br />
:Исправления пакета procps на основе некоторых патчей Fedora.<br />
<br />
;{{AUR|selinux-psmisc}}<br />
:Версия psmisc с активированной поддержкой SELinux. Добавляет опцию {{ic|-Z}} к {{ic|killall}}.<br />
<br />
;{{AUR|selinux-shadow}}<br />
:Версия shadow с активированной поддержкой SELinux. Содержит изменённый {{ic|/etc/pam.d/login}} для корректной установки контекста безопасности после входа в систему.<br />
<br />
;{{AUR|selinux-cronie}}<br />
:Vixie cron из дистрибутива Fedora с активированной поддержкой SELinux.<br />
<br />
;{{AUR|selinux-logrotate}}<br />
:Версия [[logrotate]] с активированной поддержкой SELinux.<br />
<br />
;{{AUR|selinux-openssh}}<br />
:Версия [[OpenSSH]] с активированной поддержкой SELinux, для установки контекста безопасности в течение многих сеансов пользователя.<br />
<br />
====SELinux userspace====<br />
;{{AUR|selinux-usr-checkpolicy}}<br />
:Tools to build SELinux policy<br />
<br />
;{{AUR|selinux-usr-libselinux}}<br />
:Library for security-aware applications. Python bindings needed for ''semanage'' and ''setools'' now included.<br />
<br />
;{{AUR|selinux-usr-libsemanage}}<br />
:Library for policy management. Python bindings needed for ''semanage'' and ''setools'' now included.<br />
<br />
;{{AUR|selinux-usr-libsepol}}<br />
:Library for binary policy manipulation.<br />
<br />
;{{AUR|selinux-usr-policycoreutils}}<br />
:SELinux core utils such as newrole, setfiles, etc.<br />
<br />
;{{AUR|selinux-usr-sepolgen}}<br />
:A Python library for parsing and modifying policy source.<br />
<br />
====SELinux policy====<br />
<br />
;{{AUR|selinux-refpolicy}}<br />
:Precompiled modular-otherways-vanilla Reference policy with headers and documentation but without sources.<br />
<br />
;{{AUR|selinux-refpolicy-src}}<br />
:Reference policy sources<br />
<br />
;{{AUR|selinux-refpolicy-arch}}<br />
:Precompiled modular Reference policy with headers and documentation but without sources. Development Arch Linux Refpolicy patch included, but for now [February 2011] it only fixes some issues with {{ic|/etc/rc.d/*}} labeling.<br />
<br />
====Other SELinux tools====<br />
<br />
;{{AUR|selinux-setools}}<br />
:CLI and GUI tools to manage SELinux<br />
<br />
;{{AUR|audit}}<br />
:User space utilities for storing and searching the audit records generated by the audit subsystem in the Linux kernel. SELinux (AVC) will log all denials using audit. Very useful in troubleshooting SELinux. Also audit2allow use log from this program.<br />
<br />
{{Note|If using proprietary drivers, such as [[NVIDIA]] graphics drivers, you may need to [[NVIDIA#Alternate install: custom kernel|rebuild them]] for custom kernels.}}<br />
<br />
==Configuration==<br />
<br />
После установки всех необходимых пакетов их необходимо настроить.<br />
<br />
===Changing boot loader configuration===<br />
<br />
Добавьте в конфигурационный файл [[GRUB]] {{ic|/boot/grub/menu.lst}} следующие строки:<br />
<br />
# (1) Arch Linux<br />
title Arch Linux (SELinux)<br />
root (hd0,0)<br />
kernel '''vmlinuz-linux-selinux''' root=/dev/sda5 ro vga=775<br />
initrd '''initramfs-linux-selinux.img'''<br />
<br />
===Mounting selinuxfs===<br />
<br />
Добавьте в {{ic|/etc/fstab}}:<br />
<br />
none /selinux selinuxfs noauto 0 0<br />
<br />
Создайте папку /selinux:<br />
<br />
mkdir /selinux<br />
<br />
===Main SELinux configuration file===<br />
<br />
Основной конфигурационный файл SELLinux ({{ic|/etc/selinux/config}}) является частью пакета {{AUR|selinux-refpolicy}}, доступного из [[Arch User Repository|AUR]]. Его содержимое по умолчанию:<br />
<br />
# This file controls the state of SELinux on the system.<br />
# SELINUX= can take one of these three values:<br />
# enforcing - SELinux security policy is enforced.<br />
# permissive - SELinux prints warnings <br />
# instead of enforcing.<br />
# disabled - No SELinux policy is loaded.<br />
SELINUX=permissive<br />
# SELINUXTYPE= takes the name of SELinux policy to<br />
# be used. Current options are:<br />
# refpolicy (vanilla reference policy)<br />
# refpolicy-arch (reference policy with <br />
# Arch Linux patch)<br />
SELINUXTYPE=refpolicy<br />
<br />
{{Note|Опция {{ic|SELINUX<nowiki>=</nowiki>permissive}} подходит только для конфигурации. Это не увеличивает безопасность и после настройки измените её на {{ic|SELINUX<nowiki>=</nowiki>enforcing}}. Опция {{ic|SELINUXTYPE<nowiki>=</nowiki>refpolicy}} устанавливает имя используемой политики. Измените его на имя вашей политики. Если вы решили скомпилировать политику из исходников, вы должны самостоятельно создать файл.}}<br />
<br />
===Set up PAM===<br />
<br />
Correctly set-up PAM is important to get a proper security context after login. If you installed {{AUR|selinux-shadow}} from the [[Arch User Repository|AUR]], there should be the following lines in {{ic|/etc/pam.d/login}}:<br />
<br />
# pam_selinux.so close should be the first session rule<br />
session required pam_selinux.so close<br />
# pam_selinux.so open should only be followed by sessions to be executed in the user context<br />
session required pam_selinux.so open<br />
<br />
If not, add them to the file. Similarly for logging in via SSH in {{ic|/etc/pam.d/sshd}}, which is part of {{AUR|selinux-openssh}} package.<br />
<br />
If you want to use SELinux with GUI, you should add the aforementioned lines to other files such as {{ic|/etc/pam.d/kde}}, {{ic|/etc/pam.d/kde-np}}, ... depending on your login manager.<br />
<br />
{{Note|Running SELinux with GUI applications in Arch Linux is not much supported at the time being.}}<br />
<br />
==Reference policy==<br />
<br />
There are currently two possible ways of installing reference policy: From a pre-compiled package ({{AUR|selinux-refpolicy}}) or from a source package ({{AUR|selinux-refpolicy-src}}).<br />
<br />
{{Note| It is possible to have both the source and the binary package installed. If you plan to build from source in that case, you should probably change the name of policy in {{ic|build.conf}} to avoid overwriting of selinux-refpolicy package files.}}<br />
<br />
===Installing a precompiled refpolicy===<br />
<br />
Install {{AUR|selinux-refpolicy}} from AUR. This is a modular-otherways-vanilla refpolicy. This package includes policy headers (you can therefore compile your own modules), policy documentation and an install script which will load the policy for you and relabel your filesystem (which will likely take some time). It does not include the sources though.<br />
<br />
This package also includes the main SELinux configuration file ({{ic|/etc/selinux/config}}) defaulting to refpolicy and permissive SELinux enforcement for testing purposes.<br />
<br />
You should verify that the policy was correctly loaded, that is if the file {{ic|/etc/selinux/refpolicy/policy/policy.24}} has non-zero size. If so and if you have installed {{AUR|selinux-sysvinit}} and other needed packages, you are ready to reboot and make sure that everything works.<br />
<br />
{{Warning| On newer kernels (eg. 3.0) policy in file {{ic|/etc/selinux/refpolicy/policy/policy.24}} has zero bytes size, because it is used new version of policy from file: {{ic|/etc/selinux/refpolicy/policy/policy.26}}}}<br />
<br />
In case the policy was not correctly loaded you can as root use the following command inside of the {{ic|/usr/share/selinux/refpolicy}} directory to do so:<br />
<br />
/bin/ls *.pp | /bin/grep -Ev "base.pp|enableaudit.pp" | /usr/bin/xargs /usr/sbin/semodule -s refpolicy -b base.pp -i<br />
<br />
To manually relabel your filesystem you can as root use:<br />
<br />
/sbin/restorecon -r /<br />
<br />
===Installing refpolicy from a source package===<br />
<br />
Install {{AUR|selinux-refpolicy-src}} from AUR. Edit the file {{ic|/etc/selinux/refpolicy/src/policy/build.conf}} to your liking. <br />
<br />
{{Note|Build configuration file {{ic|build.conf}} is overwritten on every selinux-refpolicy-src package upgrade, so backup your configuration.}}<br />
<br />
To build, install and load policy from source do the following. (For other possibilities consult the README file located in {{ic|/etc/selinux/refpolicy/src/policy/}}.)<br />
<br />
cd /etc/selinux/refpolicy/src/policy<br />
make bare<br />
make conf <br />
make load<br />
<br />
Copy or link the compiled binary policy to {{ic|/etc/policy.bin}} for sysvinit to find and install selinux-sysvinit:<br />
<br />
ln -s /etc/selinux/refpolicy/policy/policy.21 /etc/policy.bin<br />
<br />
At this moment files do not have any context, so you should relabel the whole filesystem, which will take a while:<br />
<br />
make relabel<br />
<br />
Create the main SELinux configuration file ({{ic|/etc/selinux/config}}) according to the example in related section.<br />
<br />
Now you are ready to reboot and make sure that everything works.<br />
<br />
==Post-installation steps==<br />
<br />
{{Warning| Если ''selinux-sysvinit'' не установлен, то SELinux не сможет запуститься и {{ic|/selinux}} не будет смонтирован.}}<br />
<br />
Выполните {{ic|sestatus}} чтобы убедиться, что SELinux работает. Должно получиться что-то вроде этого:<br />
<br />
SELinux status: enabled<br />
SELinuxfs mount: /selinux<br />
Current mode: permissive<br />
Mode from config file: permissive<br />
Policy version: 26<br />
Policy from config file: refpolicy<br />
<br />
To maintain correct context, you can use ''restorecond'':<br />
<br />
touch /etc/rc.d/restorecond<br />
chmod ugo+x /etc/rc.d/restorecond<br />
<br />
Which should contain:<br />
<br />
#!/bin/sh<br />
restorecond<br />
<br />
{{Note|Не забудьте добавить {{ic|restorecond}} в список {{ic|DAEMONS}} вашего {{ic|/etc/rc.conf}}.}}<br />
<br />
Чтобы переключиться на осуществление режима без перезагрузки, можете использовать:<br />
<br />
echo 1 > /selinux/enforce<br />
<br />
{{Note|Если {{ic|SELINUX<nowiki>=</nowiki>enforcing}} в {{ic|/etc/selinux/config}} не работает, создайте {{ic|/etc/rc.d/selinux-enforce}} содержащий предыдущую команду так же как с restorecond демоном.}}<br />
<br />
==Useful tools==<br />
<br />
There are some tools/commands that can greatly help with SELinux. <br />
<br />
;restorecon: Restores the context of a file/directory (or recursively with {{ic|-R}}) based on any policy rules <br />
;rlpkg: Relabels any files belonging to that Gentoo package to their proper security context (if they have one) <br />
;chcon: Change the context on a specific file <br />
;audit2allow: Reads in log messages from the AVC log file and tells you what rules would fix the error. Do not just add these rules without looking at them though, they cannot detect errors in other places (e.g. the application is running in the wrong context in the first place), or sometimes things will generate error messages but may maintain functionality so it would be better to add dontaudit to just ignore the access attempts.<br />
<br />
==References==<br />
*[http://en.wikipedia.org/wiki/Security-Enhanced_Linux Security Enhanced Linux]<br />
*[http://www.gentoo.org/proj/en/hardened/selinux/selinux-handbook.xml Gentoo SELinux Handbook]<br />
*[http://fedoraproject.org/wiki/SELinux Fedora Project's SELinux Wiki]<br />
*[http://www.nsa.gov/research/selinux/index.shtml NSA's Official SELinux Homepage]<br />
*[http://oss.tresys.com/projects/refpolicy Reference Policy Homepage]<br />
*[http://userspace.selinuxproject.org/trac/ SELinux Userspace Homepage]<br />
*[http://oss.tresys.com/projects/setools SETools Homepage]<br />
<br />
== See also ==<br />
* [[AppArmor]] (Similar to SELinux, much easier to configure, less features.)</div>Alligatorhttps://wiki.archlinux.org/index.php?title=SELinux_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=211397SELinux (Русский)2012-06-27T17:48:14Z<p>Alligator: /* Main SELinux configuration file */</p>
<hr />
<div>[[en:SELinux]]<br />
[[Category:Security (Русский)]]<br />
[[Category:Kernel (Русский)]]<br />
Security-Enhanced Linux (SELinux) это функция Linux, которая обеспечивает множество политик безопасности, включая США. Обязательные средства управления доступом (MAC, Mandatory Access Controls) стиля министерства обороны, с помощью Linux Security Modules (LSM) в ядре Linux. Это не дистрибутив Linux, а скорее ряд модификаций, которые могут быть применены к Unix-подобным операционным системам, таким как Linux и BSD. Её архитектура стремится оптимизировать объем программного обеспечения, обвиненного в осуществлении политики безопасности, которое является близко выровненное Trusted Computer System Evaluation Criteria (TCSEC, называемый Оранжевой книгой) требование для минимизации достоверной вычислительной базы (TCB) (применимый к классам B3 и A1 оценки), но довольно не связано с наименьшим количеством требования полномочия (B2, B3, A1), как часто требуется. Зародышевые понятия базовый SELinux могут быть прослежены до нескольких более ранних проектов американским Агентством национальной безопасности (NSA). [1]<br />
<br />
Для выполнения SELinux под дистрибутивом Linux требуется: включить SELinux в ядро, инструменты SELinux Userspace и библиотеки, и SELinux Policies (главным образом на основе Reference Policy). Некоторые общие программы Linux должны также исправляться/компилироваться с функциями SELinux.<br />
<br />
==Обязательные требования==<br />
<br />
Поддерживаются только файловые системы ext2, ext3, ext4, JFS и XFS.<br />
<br />
{{Note| This is probably not needed anymore:}}<br />
<br />
Пользователи XFS должны использовать 512 байтов inodes (значение по умолчанию 256). Использование SELinux расширяло атрибуты для того, чтобы сохранить метки безопасности в файлах. XFS хранит это в inode, и если inode слишком маленький, должен использоваться дополнительный блок, который тратит впустую много пространства и подвергается потерям производительности.<br />
<br />
# mkfs.xfs -i size=512 /dev/sda1 (for example)<br />
<br />
==Установка необходимых пакетов==<br />
<br />
Должны быть установлены по крайней мере {{AUR|linux-selinux}}, {{AUR|selinux-pam}}, {{AUR|selinux-usr-policycoreutils}} и {{AUR|selinux-refpolicy-src}} из [[AUR]]. Рекомендуется установить все пакеты, требуемые SELinux.<br />
<br />
При установке из [[AUR (Русский)]], можете использовать [[AUR helper (Русский)]] или загружать tarballs из AUR вручную и собирать с {{ic|makepkg}}. При замене пакетов pam и coreutils будьте особо внимательны, поскольку они жизненно важны для системы. Приготовьте Live CD или Live USB на случай, если придётся переустановить систему.<br />
<br />
{{Warning| Do '''not''' remove {{Pkg|pam}} via sudo, as PAM is what takes care of authentication, and you just removed it. Instead first ''su'' to root and then do:<br />
pacman -Rdd pam<br />
pacman -U selinux-pam<br />
Doing {{ic|pacman -Rdd coreutils}}, {{ic|pacman -U selinux-coreutils}} may also cause you troubles, so maybe the best way is to install the {{ic|selinux-*}} packages from a live CD chroot to your system.}}<br />
<br />
{{Warning| Do '''not''' install {{AUR|selinux-sysvinit}} package unless everything is set up, as you may end up with an unbootable system. Or, do not reboot unless you have everything set up.}}<br />
<br />
===Package description===<br />
<br />
Все пакеты, принадлежащие к SELinux находятся в группе ''selinux''. В ''selinux-userspace'' пакеты пользователтского пространства SELinux. В ''selinux-policies'' находятся пакеты политик SELinux. Остальные пакеты находятся в ''selinux-extras''.<br />
<br />
====SELinux aware system utils====<br />
<br />
;{{AUR|linux-selinux}}<br />
:Активирует поддержку [[SELinux]] ядром. Компиляция модулей подобно Virtualbox.<br />
<br />
;{{AUR|selinux-coreutils}}<br />
:Компиляция пакета [[coreutils]] с включенной поддержкой SELinux.<br />
<br />
;{{AUR|selinux-flex}}<br />
Версия flex, необходимая только для сборки checkpolicy. Текущий flex имеет ошибку, вызывающую отказ в выполнении команды checkmodule.<br />
<br />
;{{AUR|selinux-pam}}<br />
:Пакет PAM с pam_selinux.so.<br />
<br />
;{{AUR|selinux-sysvinit}}<br />
:sysvinit загружает политики при старте системы. Будьте осторожны; если политика SELinux не сможет быть загружена это перестанет работать!<br />
<br />
;{{AUR|selinux-util-linux}}<br />
:Версия util-linux, скомпилированная с включенной поддержкой SELinux.<br />
<br />
;{{AUR|selinux-udev}} made obsolete by {{AUR|selinux-sysvinit}}<br />
:Версия [[udev]], скомпилированная с включенной поддержкой SELinux для маркировки файлов в {{ic|/dev}} для правильной работы. Функциональность [[udev]] теперь обеспечена selinux-sysvinit-tools [http://www.archlinux.org/news/systemd-tools-replaces-udev/], которая является частью {{AUR|selinux-sysvinit}} splitpackage.<br />
<br />
;{{AUR|selinux-findutils}}<br />
Пропатченная версия findutils с активированной поддержкой SELinux, необходимая для поиска файлов в указанном возможном контексте безопасности.<br />
<br />
;{{AUR|selinux-sudo}}<br />
Версия [[sudo]] с активированной поддержкой SELinux, для корректной устанавки контекста безопасности.<br />
<br />
;{{AUR|selinux-procps}}<br />
:Procps package with SELinux patch based on some Fedora patches.<br />
<br />
;{{AUR|selinux-psmisc}}<br />
:Psmisc package compiled with SELinux support; for example, it adds the {{ic|-Z}} option to {{ic|killall}}.<br />
<br />
;{{AUR|selinux-shadow}}<br />
:Shadow package compiled with SELinux support; contains a modified {{ic|/etc/pam.d/login}} file to set correct security context for user after login.<br />
<br />
;{{AUR|selinux-cronie}}<br />
:Fedora fork of Vixie cron with SELinux enabled.<br />
<br />
;{{AUR|selinux-logrotate}}<br />
:Logrotate package compiled with SELinux support.<br />
<br />
;{{AUR|selinux-openssh}}<br />
:OpenSSH package compiled with SELinux support to set security context for user sessions.<br />
<br />
====SELinux userspace====<br />
;{{AUR|selinux-usr-checkpolicy}}<br />
:Tools to build SELinux policy<br />
<br />
;{{AUR|selinux-usr-libselinux}}<br />
:Library for security-aware applications. Python bindings needed for ''semanage'' and ''setools'' now included.<br />
<br />
;{{AUR|selinux-usr-libsemanage}}<br />
:Library for policy management. Python bindings needed for ''semanage'' and ''setools'' now included.<br />
<br />
;{{AUR|selinux-usr-libsepol}}<br />
:Library for binary policy manipulation.<br />
<br />
;{{AUR|selinux-usr-policycoreutils}}<br />
:SELinux core utils such as newrole, setfiles, etc.<br />
<br />
;{{AUR|selinux-usr-sepolgen}}<br />
:A Python library for parsing and modifying policy source.<br />
<br />
====SELinux policy====<br />
<br />
;{{AUR|selinux-refpolicy}}<br />
:Precompiled modular-otherways-vanilla Reference policy with headers and documentation but without sources.<br />
<br />
;{{AUR|selinux-refpolicy-src}}<br />
:Reference policy sources<br />
<br />
;{{AUR|selinux-refpolicy-arch}}<br />
:Precompiled modular Reference policy with headers and documentation but without sources. Development Arch Linux Refpolicy patch included, but for now [February 2011] it only fixes some issues with {{ic|/etc/rc.d/*}} labeling.<br />
<br />
====Other SELinux tools====<br />
<br />
;{{AUR|selinux-setools}}<br />
:CLI and GUI tools to manage SELinux<br />
<br />
;{{AUR|audit}}<br />
:User space utilities for storing and searching the audit records generated by the audit subsystem in the Linux kernel. SELinux (AVC) will log all denials using audit. Very useful in troubleshooting SELinux. Also audit2allow use log from this program.<br />
<br />
{{Note|If using proprietary drivers, such as [[NVIDIA]] graphics drivers, you may need to [[NVIDIA#Alternate install: custom kernel|rebuild them]] for custom kernels.}}<br />
<br />
==Configuration==<br />
<br />
После установки всех необходимых пакетов их необходимо настроить.<br />
<br />
===Changing boot loader configuration===<br />
<br />
Добавьте в конфигурационный файл [[GRUB]] {{ic|/boot/grub/menu.lst}} следующие строки:<br />
<br />
# (1) Arch Linux<br />
title Arch Linux (SELinux)<br />
root (hd0,0)<br />
kernel '''vmlinuz-linux-selinux''' root=/dev/sda5 ro vga=775<br />
initrd '''initramfs-linux-selinux.img'''<br />
<br />
===Mounting selinuxfs===<br />
<br />
Добавьте в {{ic|/etc/fstab}}:<br />
<br />
none /selinux selinuxfs noauto 0 0<br />
<br />
Создайте папку /selinux:<br />
<br />
mkdir /selinux<br />
<br />
===Main SELinux configuration file===<br />
<br />
Основной конфигурационный файл SELLinux ({{ic|/etc/selinux/config}}) является частью пакета {{AUR|selinux-refpolicy}}, доступного из [[Arch User Repository|AUR]]. Его содержимое по умолчанию:<br />
<br />
# This file controls the state of SELinux on the system.<br />
# SELINUX= can take one of these three values:<br />
# enforcing - SELinux security policy is enforced.<br />
# permissive - SELinux prints warnings <br />
# instead of enforcing.<br />
# disabled - No SELinux policy is loaded.<br />
SELINUX=permissive<br />
# SELINUXTYPE= takes the name of SELinux policy to<br />
# be used. Current options are:<br />
# refpolicy (vanilla reference policy)<br />
# refpolicy-arch (reference policy with <br />
# Arch Linux patch)<br />
SELINUXTYPE=refpolicy<br />
<br />
{{Note|Опция {{ic|SELINUX<nowiki>=</nowiki>permissive}} подходит только для конфигурации. Это не увеличивает безопасность и после настройки измените её на {{ic|SELINUX<nowiki>=</nowiki>enforcing}}. Опция {{ic|SELINUXTYPE<nowiki>=</nowiki>refpolicy}} устанавливает имя используемой политики. Измените его на имя вашей политики. Если вы решили скомпилировать политику из исходников, вы должны самостоятельно создать файл.}}<br />
<br />
===Set up PAM===<br />
<br />
Correctly set-up PAM is important to get a proper security context after login. If you installed {{AUR|selinux-shadow}} from the [[Arch User Repository|AUR]], there should be the following lines in {{ic|/etc/pam.d/login}}:<br />
<br />
# pam_selinux.so close should be the first session rule<br />
session required pam_selinux.so close<br />
# pam_selinux.so open should only be followed by sessions to be executed in the user context<br />
session required pam_selinux.so open<br />
<br />
If not, add them to the file. Similarly for logging in via SSH in {{ic|/etc/pam.d/sshd}}, which is part of {{AUR|selinux-openssh}} package.<br />
<br />
If you want to use SELinux with GUI, you should add the aforementioned lines to other files such as {{ic|/etc/pam.d/kde}}, {{ic|/etc/pam.d/kde-np}}, ... depending on your login manager.<br />
<br />
{{Note|Running SELinux with GUI applications in Arch Linux is not much supported at the time being.}}<br />
<br />
==Reference policy==<br />
<br />
There are currently two possible ways of installing reference policy: From a pre-compiled package ({{AUR|selinux-refpolicy}}) or from a source package ({{AUR|selinux-refpolicy-src}}).<br />
<br />
{{Note| It is possible to have both the source and the binary package installed. If you plan to build from source in that case, you should probably change the name of policy in {{ic|build.conf}} to avoid overwriting of selinux-refpolicy package files.}}<br />
<br />
===Installing a precompiled refpolicy===<br />
<br />
Install {{AUR|selinux-refpolicy}} from AUR. This is a modular-otherways-vanilla refpolicy. This package includes policy headers (you can therefore compile your own modules), policy documentation and an install script which will load the policy for you and relabel your filesystem (which will likely take some time). It does not include the sources though.<br />
<br />
This package also includes the main SELinux configuration file ({{ic|/etc/selinux/config}}) defaulting to refpolicy and permissive SELinux enforcement for testing purposes.<br />
<br />
You should verify that the policy was correctly loaded, that is if the file {{ic|/etc/selinux/refpolicy/policy/policy.24}} has non-zero size. If so and if you have installed {{AUR|selinux-sysvinit}} and other needed packages, you are ready to reboot and make sure that everything works.<br />
<br />
{{Warning| On newer kernels (eg. 3.0) policy in file {{ic|/etc/selinux/refpolicy/policy/policy.24}} has zero bytes size, because it is used new version of policy from file: {{ic|/etc/selinux/refpolicy/policy/policy.26}}}}<br />
<br />
In case the policy was not correctly loaded you can as root use the following command inside of the {{ic|/usr/share/selinux/refpolicy}} directory to do so:<br />
<br />
/bin/ls *.pp | /bin/grep -Ev "base.pp|enableaudit.pp" | /usr/bin/xargs /usr/sbin/semodule -s refpolicy -b base.pp -i<br />
<br />
To manually relabel your filesystem you can as root use:<br />
<br />
/sbin/restorecon -r /<br />
<br />
===Installing refpolicy from a source package===<br />
<br />
Install {{AUR|selinux-refpolicy-src}} from AUR. Edit the file {{ic|/etc/selinux/refpolicy/src/policy/build.conf}} to your liking. <br />
<br />
{{Note|Build configuration file {{ic|build.conf}} is overwritten on every selinux-refpolicy-src package upgrade, so backup your configuration.}}<br />
<br />
To build, install and load policy from source do the following. (For other possibilities consult the README file located in {{ic|/etc/selinux/refpolicy/src/policy/}}.)<br />
<br />
cd /etc/selinux/refpolicy/src/policy<br />
make bare<br />
make conf <br />
make load<br />
<br />
Copy or link the compiled binary policy to {{ic|/etc/policy.bin}} for sysvinit to find and install selinux-sysvinit:<br />
<br />
ln -s /etc/selinux/refpolicy/policy/policy.21 /etc/policy.bin<br />
<br />
At this moment files do not have any context, so you should relabel the whole filesystem, which will take a while:<br />
<br />
make relabel<br />
<br />
Create the main SELinux configuration file ({{ic|/etc/selinux/config}}) according to the example in related section.<br />
<br />
Now you are ready to reboot and make sure that everything works.<br />
<br />
==Post-installation steps==<br />
<br />
{{Warning| Если ''selinux-sysvinit'' не установлен, то SELinux не сможет запуститься и {{ic|/selinux}} не будет смонтирован.}}<br />
<br />
Выполните {{ic|sestatus}} чтобы убедиться, что SELinux работает. Должно получиться что-то вроде этого:<br />
<br />
SELinux status: enabled<br />
SELinuxfs mount: /selinux<br />
Current mode: permissive<br />
Mode from config file: permissive<br />
Policy version: 26<br />
Policy from config file: refpolicy<br />
<br />
To maintain correct context, you can use ''restorecond'':<br />
<br />
touch /etc/rc.d/restorecond<br />
chmod ugo+x /etc/rc.d/restorecond<br />
<br />
Which should contain:<br />
<br />
#!/bin/sh<br />
restorecond<br />
<br />
{{Note|Не забудьте добавить {{ic|restorecond}} в список {{ic|DAEMONS}} вашего {{ic|/etc/rc.conf}}.}}<br />
<br />
Чтобы переключиться на осуществление режима без перезагрузки, можете использовать:<br />
<br />
echo 1 > /selinux/enforce<br />
<br />
{{Note|Если {{ic|SELINUX<nowiki>=</nowiki>enforcing}} в {{ic|/etc/selinux/config}} не работает, создайте {{ic|/etc/rc.d/selinux-enforce}} содержащий предыдущую команду так же как с restorecond демоном.}}<br />
<br />
==Useful tools==<br />
<br />
There are some tools/commands that can greatly help with SELinux. <br />
<br />
;restorecon: Restores the context of a file/directory (or recursively with {{ic|-R}}) based on any policy rules <br />
;rlpkg: Relabels any files belonging to that Gentoo package to their proper security context (if they have one) <br />
;chcon: Change the context on a specific file <br />
;audit2allow: Reads in log messages from the AVC log file and tells you what rules would fix the error. Do not just add these rules without looking at them though, they cannot detect errors in other places (e.g. the application is running in the wrong context in the first place), or sometimes things will generate error messages but may maintain functionality so it would be better to add dontaudit to just ignore the access attempts.<br />
<br />
==References==<br />
*[http://en.wikipedia.org/wiki/Security-Enhanced_Linux Security Enhanced Linux]<br />
*[http://www.gentoo.org/proj/en/hardened/selinux/selinux-handbook.xml Gentoo SELinux Handbook]<br />
*[http://fedoraproject.org/wiki/SELinux Fedora Project's SELinux Wiki]<br />
*[http://www.nsa.gov/research/selinux/index.shtml NSA's Official SELinux Homepage]<br />
*[http://oss.tresys.com/projects/refpolicy Reference Policy Homepage]<br />
*[http://userspace.selinuxproject.org/trac/ SELinux Userspace Homepage]<br />
*[http://oss.tresys.com/projects/setools SETools Homepage]<br />
<br />
== See also ==<br />
* [[AppArmor]] (Similar to SELinux, much easier to configure, less features.)</div>Alligatorhttps://wiki.archlinux.org/index.php?title=SELinux_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=211396SELinux (Русский)2012-06-27T17:47:18Z<p>Alligator: /* Configuration */</p>
<hr />
<div>[[en:SELinux]]<br />
[[Category:Security (Русский)]]<br />
[[Category:Kernel (Русский)]]<br />
Security-Enhanced Linux (SELinux) это функция Linux, которая обеспечивает множество политик безопасности, включая США. Обязательные средства управления доступом (MAC, Mandatory Access Controls) стиля министерства обороны, с помощью Linux Security Modules (LSM) в ядре Linux. Это не дистрибутив Linux, а скорее ряд модификаций, которые могут быть применены к Unix-подобным операционным системам, таким как Linux и BSD. Её архитектура стремится оптимизировать объем программного обеспечения, обвиненного в осуществлении политики безопасности, которое является близко выровненное Trusted Computer System Evaluation Criteria (TCSEC, называемый Оранжевой книгой) требование для минимизации достоверной вычислительной базы (TCB) (применимый к классам B3 и A1 оценки), но довольно не связано с наименьшим количеством требования полномочия (B2, B3, A1), как часто требуется. Зародышевые понятия базовый SELinux могут быть прослежены до нескольких более ранних проектов американским Агентством национальной безопасности (NSA). [1]<br />
<br />
Для выполнения SELinux под дистрибутивом Linux требуется: включить SELinux в ядро, инструменты SELinux Userspace и библиотеки, и SELinux Policies (главным образом на основе Reference Policy). Некоторые общие программы Linux должны также исправляться/компилироваться с функциями SELinux.<br />
<br />
==Обязательные требования==<br />
<br />
Поддерживаются только файловые системы ext2, ext3, ext4, JFS и XFS.<br />
<br />
{{Note| This is probably not needed anymore:}}<br />
<br />
Пользователи XFS должны использовать 512 байтов inodes (значение по умолчанию 256). Использование SELinux расширяло атрибуты для того, чтобы сохранить метки безопасности в файлах. XFS хранит это в inode, и если inode слишком маленький, должен использоваться дополнительный блок, который тратит впустую много пространства и подвергается потерям производительности.<br />
<br />
# mkfs.xfs -i size=512 /dev/sda1 (for example)<br />
<br />
==Установка необходимых пакетов==<br />
<br />
Должны быть установлены по крайней мере {{AUR|linux-selinux}}, {{AUR|selinux-pam}}, {{AUR|selinux-usr-policycoreutils}} и {{AUR|selinux-refpolicy-src}} из [[AUR]]. Рекомендуется установить все пакеты, требуемые SELinux.<br />
<br />
При установке из [[AUR (Русский)]], можете использовать [[AUR helper (Русский)]] или загружать tarballs из AUR вручную и собирать с {{ic|makepkg}}. При замене пакетов pam и coreutils будьте особо внимательны, поскольку они жизненно важны для системы. Приготовьте Live CD или Live USB на случай, если придётся переустановить систему.<br />
<br />
{{Warning| Do '''not''' remove {{Pkg|pam}} via sudo, as PAM is what takes care of authentication, and you just removed it. Instead first ''su'' to root and then do:<br />
pacman -Rdd pam<br />
pacman -U selinux-pam<br />
Doing {{ic|pacman -Rdd coreutils}}, {{ic|pacman -U selinux-coreutils}} may also cause you troubles, so maybe the best way is to install the {{ic|selinux-*}} packages from a live CD chroot to your system.}}<br />
<br />
{{Warning| Do '''not''' install {{AUR|selinux-sysvinit}} package unless everything is set up, as you may end up with an unbootable system. Or, do not reboot unless you have everything set up.}}<br />
<br />
===Package description===<br />
<br />
Все пакеты, принадлежащие к SELinux находятся в группе ''selinux''. В ''selinux-userspace'' пакеты пользователтского пространства SELinux. В ''selinux-policies'' находятся пакеты политик SELinux. Остальные пакеты находятся в ''selinux-extras''.<br />
<br />
====SELinux aware system utils====<br />
<br />
;{{AUR|linux-selinux}}<br />
:Активирует поддержку [[SELinux]] ядром. Компиляция модулей подобно Virtualbox.<br />
<br />
;{{AUR|selinux-coreutils}}<br />
:Компиляция пакета [[coreutils]] с включенной поддержкой SELinux.<br />
<br />
;{{AUR|selinux-flex}}<br />
Версия flex, необходимая только для сборки checkpolicy. Текущий flex имеет ошибку, вызывающую отказ в выполнении команды checkmodule.<br />
<br />
;{{AUR|selinux-pam}}<br />
:Пакет PAM с pam_selinux.so.<br />
<br />
;{{AUR|selinux-sysvinit}}<br />
:sysvinit загружает политики при старте системы. Будьте осторожны; если политика SELinux не сможет быть загружена это перестанет работать!<br />
<br />
;{{AUR|selinux-util-linux}}<br />
:Версия util-linux, скомпилированная с включенной поддержкой SELinux.<br />
<br />
;{{AUR|selinux-udev}} made obsolete by {{AUR|selinux-sysvinit}}<br />
:Версия [[udev]], скомпилированная с включенной поддержкой SELinux для маркировки файлов в {{ic|/dev}} для правильной работы. Функциональность [[udev]] теперь обеспечена selinux-sysvinit-tools [http://www.archlinux.org/news/systemd-tools-replaces-udev/], которая является частью {{AUR|selinux-sysvinit}} splitpackage.<br />
<br />
;{{AUR|selinux-findutils}}<br />
Пропатченная версия findutils с активированной поддержкой SELinux, необходимая для поиска файлов в указанном возможном контексте безопасности.<br />
<br />
;{{AUR|selinux-sudo}}<br />
Версия [[sudo]] с активированной поддержкой SELinux, для корректной устанавки контекста безопасности.<br />
<br />
;{{AUR|selinux-procps}}<br />
:Procps package with SELinux patch based on some Fedora patches.<br />
<br />
;{{AUR|selinux-psmisc}}<br />
:Psmisc package compiled with SELinux support; for example, it adds the {{ic|-Z}} option to {{ic|killall}}.<br />
<br />
;{{AUR|selinux-shadow}}<br />
:Shadow package compiled with SELinux support; contains a modified {{ic|/etc/pam.d/login}} file to set correct security context for user after login.<br />
<br />
;{{AUR|selinux-cronie}}<br />
:Fedora fork of Vixie cron with SELinux enabled.<br />
<br />
;{{AUR|selinux-logrotate}}<br />
:Logrotate package compiled with SELinux support.<br />
<br />
;{{AUR|selinux-openssh}}<br />
:OpenSSH package compiled with SELinux support to set security context for user sessions.<br />
<br />
====SELinux userspace====<br />
;{{AUR|selinux-usr-checkpolicy}}<br />
:Tools to build SELinux policy<br />
<br />
;{{AUR|selinux-usr-libselinux}}<br />
:Library for security-aware applications. Python bindings needed for ''semanage'' and ''setools'' now included.<br />
<br />
;{{AUR|selinux-usr-libsemanage}}<br />
:Library for policy management. Python bindings needed for ''semanage'' and ''setools'' now included.<br />
<br />
;{{AUR|selinux-usr-libsepol}}<br />
:Library for binary policy manipulation.<br />
<br />
;{{AUR|selinux-usr-policycoreutils}}<br />
:SELinux core utils such as newrole, setfiles, etc.<br />
<br />
;{{AUR|selinux-usr-sepolgen}}<br />
:A Python library for parsing and modifying policy source.<br />
<br />
====SELinux policy====<br />
<br />
;{{AUR|selinux-refpolicy}}<br />
:Precompiled modular-otherways-vanilla Reference policy with headers and documentation but without sources.<br />
<br />
;{{AUR|selinux-refpolicy-src}}<br />
:Reference policy sources<br />
<br />
;{{AUR|selinux-refpolicy-arch}}<br />
:Precompiled modular Reference policy with headers and documentation but without sources. Development Arch Linux Refpolicy patch included, but for now [February 2011] it only fixes some issues with {{ic|/etc/rc.d/*}} labeling.<br />
<br />
====Other SELinux tools====<br />
<br />
;{{AUR|selinux-setools}}<br />
:CLI and GUI tools to manage SELinux<br />
<br />
;{{AUR|audit}}<br />
:User space utilities for storing and searching the audit records generated by the audit subsystem in the Linux kernel. SELinux (AVC) will log all denials using audit. Very useful in troubleshooting SELinux. Also audit2allow use log from this program.<br />
<br />
{{Note|If using proprietary drivers, such as [[NVIDIA]] graphics drivers, you may need to [[NVIDIA#Alternate install: custom kernel|rebuild them]] for custom kernels.}}<br />
<br />
==Configuration==<br />
<br />
После установки всех необходимых пакетов их необходимо настроить.<br />
<br />
===Changing boot loader configuration===<br />
<br />
Добавьте в конфигурационный файл [[GRUB]] {{ic|/boot/grub/menu.lst}} следующие строки:<br />
<br />
# (1) Arch Linux<br />
title Arch Linux (SELinux)<br />
root (hd0,0)<br />
kernel '''vmlinuz-linux-selinux''' root=/dev/sda5 ro vga=775<br />
initrd '''initramfs-linux-selinux.img'''<br />
<br />
===Mounting selinuxfs===<br />
<br />
Добавьте в {{ic|/etc/fstab}}:<br />
<br />
none /selinux selinuxfs noauto 0 0<br />
<br />
Создайте папку /selinux:<br />
<br />
mkdir /selinux<br />
<br />
===Main SELinux configuration file===<br />
<br />
Основной конфигурационный файл SELLinux ({{ic|/etc/selinux/config}}) является частью пакета {{AUR|selinux-refpolicy}}, доступного из [[Arch User Repository|AUR]]. Его содержимое по умолчанию:<br />
<br />
# This file controls the state of SELinux on the system.<br />
# SELINUX= can take one of these three values:<br />
# enforcing - SELinux security policy is enforced.<br />
# permissive - SELinux prints warnings <br />
# instead of enforcing.<br />
# disabled - No SELinux policy is loaded.<br />
SELINUX=permissive<br />
# SELINUXTYPE= takes the name of SELinux policy to<br />
# be used. Current options are:<br />
# refpolicy (vanilla reference policy)<br />
# refpolicy-arch (reference policy with <br />
# Arch Linux patch)<br />
SELINUXTYPE=refpolicy<br />
<br />
{{Note|Опция {{ic|SELINUX<nowiki>=</nowiki>permissive}} подходит только на время конфигурации. Это не увеличивает безопасность и после настройки измените на {{ic|SELINUX<nowiki>=</nowiki>enforcing}}. Опция {{ic|SELINUXTYPE<nowiki>=</nowiki>refpolicy}} устанавливает имя используемой политики. Измените его на имя вашей политики. Если вы решили скомпилировать политику из исходников, вы должны самостоятельно создать файл.}}<br />
<br />
===Set up PAM===<br />
<br />
Correctly set-up PAM is important to get a proper security context after login. If you installed {{AUR|selinux-shadow}} from the [[Arch User Repository|AUR]], there should be the following lines in {{ic|/etc/pam.d/login}}:<br />
<br />
# pam_selinux.so close should be the first session rule<br />
session required pam_selinux.so close<br />
# pam_selinux.so open should only be followed by sessions to be executed in the user context<br />
session required pam_selinux.so open<br />
<br />
If not, add them to the file. Similarly for logging in via SSH in {{ic|/etc/pam.d/sshd}}, which is part of {{AUR|selinux-openssh}} package.<br />
<br />
If you want to use SELinux with GUI, you should add the aforementioned lines to other files such as {{ic|/etc/pam.d/kde}}, {{ic|/etc/pam.d/kde-np}}, ... depending on your login manager.<br />
<br />
{{Note|Running SELinux with GUI applications in Arch Linux is not much supported at the time being.}}<br />
<br />
==Reference policy==<br />
<br />
There are currently two possible ways of installing reference policy: From a pre-compiled package ({{AUR|selinux-refpolicy}}) or from a source package ({{AUR|selinux-refpolicy-src}}).<br />
<br />
{{Note| It is possible to have both the source and the binary package installed. If you plan to build from source in that case, you should probably change the name of policy in {{ic|build.conf}} to avoid overwriting of selinux-refpolicy package files.}}<br />
<br />
===Installing a precompiled refpolicy===<br />
<br />
Install {{AUR|selinux-refpolicy}} from AUR. This is a modular-otherways-vanilla refpolicy. This package includes policy headers (you can therefore compile your own modules), policy documentation and an install script which will load the policy for you and relabel your filesystem (which will likely take some time). It does not include the sources though.<br />
<br />
This package also includes the main SELinux configuration file ({{ic|/etc/selinux/config}}) defaulting to refpolicy and permissive SELinux enforcement for testing purposes.<br />
<br />
You should verify that the policy was correctly loaded, that is if the file {{ic|/etc/selinux/refpolicy/policy/policy.24}} has non-zero size. If so and if you have installed {{AUR|selinux-sysvinit}} and other needed packages, you are ready to reboot and make sure that everything works.<br />
<br />
{{Warning| On newer kernels (eg. 3.0) policy in file {{ic|/etc/selinux/refpolicy/policy/policy.24}} has zero bytes size, because it is used new version of policy from file: {{ic|/etc/selinux/refpolicy/policy/policy.26}}}}<br />
<br />
In case the policy was not correctly loaded you can as root use the following command inside of the {{ic|/usr/share/selinux/refpolicy}} directory to do so:<br />
<br />
/bin/ls *.pp | /bin/grep -Ev "base.pp|enableaudit.pp" | /usr/bin/xargs /usr/sbin/semodule -s refpolicy -b base.pp -i<br />
<br />
To manually relabel your filesystem you can as root use:<br />
<br />
/sbin/restorecon -r /<br />
<br />
===Installing refpolicy from a source package===<br />
<br />
Install {{AUR|selinux-refpolicy-src}} from AUR. Edit the file {{ic|/etc/selinux/refpolicy/src/policy/build.conf}} to your liking. <br />
<br />
{{Note|Build configuration file {{ic|build.conf}} is overwritten on every selinux-refpolicy-src package upgrade, so backup your configuration.}}<br />
<br />
To build, install and load policy from source do the following. (For other possibilities consult the README file located in {{ic|/etc/selinux/refpolicy/src/policy/}}.)<br />
<br />
cd /etc/selinux/refpolicy/src/policy<br />
make bare<br />
make conf <br />
make load<br />
<br />
Copy or link the compiled binary policy to {{ic|/etc/policy.bin}} for sysvinit to find and install selinux-sysvinit:<br />
<br />
ln -s /etc/selinux/refpolicy/policy/policy.21 /etc/policy.bin<br />
<br />
At this moment files do not have any context, so you should relabel the whole filesystem, which will take a while:<br />
<br />
make relabel<br />
<br />
Create the main SELinux configuration file ({{ic|/etc/selinux/config}}) according to the example in related section.<br />
<br />
Now you are ready to reboot and make sure that everything works.<br />
<br />
==Post-installation steps==<br />
<br />
{{Warning| Если ''selinux-sysvinit'' не установлен, то SELinux не сможет запуститься и {{ic|/selinux}} не будет смонтирован.}}<br />
<br />
Выполните {{ic|sestatus}} чтобы убедиться, что SELinux работает. Должно получиться что-то вроде этого:<br />
<br />
SELinux status: enabled<br />
SELinuxfs mount: /selinux<br />
Current mode: permissive<br />
Mode from config file: permissive<br />
Policy version: 26<br />
Policy from config file: refpolicy<br />
<br />
To maintain correct context, you can use ''restorecond'':<br />
<br />
touch /etc/rc.d/restorecond<br />
chmod ugo+x /etc/rc.d/restorecond<br />
<br />
Which should contain:<br />
<br />
#!/bin/sh<br />
restorecond<br />
<br />
{{Note|Не забудьте добавить {{ic|restorecond}} в список {{ic|DAEMONS}} вашего {{ic|/etc/rc.conf}}.}}<br />
<br />
Чтобы переключиться на осуществление режима без перезагрузки, можете использовать:<br />
<br />
echo 1 > /selinux/enforce<br />
<br />
{{Note|Если {{ic|SELINUX<nowiki>=</nowiki>enforcing}} в {{ic|/etc/selinux/config}} не работает, создайте {{ic|/etc/rc.d/selinux-enforce}} содержащий предыдущую команду так же как с restorecond демоном.}}<br />
<br />
==Useful tools==<br />
<br />
There are some tools/commands that can greatly help with SELinux. <br />
<br />
;restorecon: Restores the context of a file/directory (or recursively with {{ic|-R}}) based on any policy rules <br />
;rlpkg: Relabels any files belonging to that Gentoo package to their proper security context (if they have one) <br />
;chcon: Change the context on a specific file <br />
;audit2allow: Reads in log messages from the AVC log file and tells you what rules would fix the error. Do not just add these rules without looking at them though, they cannot detect errors in other places (e.g. the application is running in the wrong context in the first place), or sometimes things will generate error messages but may maintain functionality so it would be better to add dontaudit to just ignore the access attempts.<br />
<br />
==References==<br />
*[http://en.wikipedia.org/wiki/Security-Enhanced_Linux Security Enhanced Linux]<br />
*[http://www.gentoo.org/proj/en/hardened/selinux/selinux-handbook.xml Gentoo SELinux Handbook]<br />
*[http://fedoraproject.org/wiki/SELinux Fedora Project's SELinux Wiki]<br />
*[http://www.nsa.gov/research/selinux/index.shtml NSA's Official SELinux Homepage]<br />
*[http://oss.tresys.com/projects/refpolicy Reference Policy Homepage]<br />
*[http://userspace.selinuxproject.org/trac/ SELinux Userspace Homepage]<br />
*[http://oss.tresys.com/projects/setools SETools Homepage]<br />
<br />
== See also ==<br />
* [[AppArmor]] (Similar to SELinux, much easier to configure, less features.)</div>Alligatorhttps://wiki.archlinux.org/index.php?title=SELinux_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=211394SELinux (Русский)2012-06-27T16:17:54Z<p>Alligator: /* Package description */</p>
<hr />
<div>[[en:SELinux]]<br />
[[Category:Security (Русский)]]<br />
[[Category:Kernel (Русский)]]<br />
Security-Enhanced Linux (SELinux) это функция Linux, которая обеспечивает множество политик безопасности, включая США. Обязательные средства управления доступом (MAC, Mandatory Access Controls) стиля министерства обороны, с помощью Linux Security Modules (LSM) в ядре Linux. Это не дистрибутив Linux, а скорее ряд модификаций, которые могут быть применены к Unix-подобным операционным системам, таким как Linux и BSD. Её архитектура стремится оптимизировать объем программного обеспечения, обвиненного в осуществлении политики безопасности, которое является близко выровненное Trusted Computer System Evaluation Criteria (TCSEC, называемый Оранжевой книгой) требование для минимизации достоверной вычислительной базы (TCB) (применимый к классам B3 и A1 оценки), но довольно не связано с наименьшим количеством требования полномочия (B2, B3, A1), как часто требуется. Зародышевые понятия базовый SELinux могут быть прослежены до нескольких более ранних проектов американским Агентством национальной безопасности (NSA). [1]<br />
<br />
Для выполнения SELinux под дистрибутивом Linux требуется: включить SELinux в ядро, инструменты SELinux Userspace и библиотеки, и SELinux Policies (главным образом на основе Reference Policy). Некоторые общие программы Linux должны также исправляться/компилироваться с функциями SELinux.<br />
<br />
==Обязательные требования==<br />
<br />
Поддерживаются только файловые системы ext2, ext3, ext4, JFS и XFS.<br />
<br />
{{Note| This is probably not needed anymore:}}<br />
<br />
Пользователи XFS должны использовать 512 байтов inodes (значение по умолчанию 256). Использование SELinux расширяло атрибуты для того, чтобы сохранить метки безопасности в файлах. XFS хранит это в inode, и если inode слишком маленький, должен использоваться дополнительный блок, который тратит впустую много пространства и подвергается потерям производительности.<br />
<br />
# mkfs.xfs -i size=512 /dev/sda1 (for example)<br />
<br />
==Установка необходимых пакетов==<br />
<br />
Должны быть установлены по крайней мере {{AUR|linux-selinux}}, {{AUR|selinux-pam}}, {{AUR|selinux-usr-policycoreutils}} и {{AUR|selinux-refpolicy-src}} из [[AUR]]. Рекомендуется установить все пакеты, требуемые SELinux.<br />
<br />
При установке из [[AUR (Русский)]], можете использовать [[AUR helper (Русский)]] или загружать tarballs из AUR вручную и собирать с {{ic|makepkg}}. При замене пакетов pam и coreutils будьте особо внимательны, поскольку они жизненно важны для системы. Приготовьте Live CD или Live USB на случай, если придётся переустановить систему.<br />
<br />
{{Warning| Do '''not''' remove {{Pkg|pam}} via sudo, as PAM is what takes care of authentication, and you just removed it. Instead first ''su'' to root and then do:<br />
pacman -Rdd pam<br />
pacman -U selinux-pam<br />
Doing {{ic|pacman -Rdd coreutils}}, {{ic|pacman -U selinux-coreutils}} may also cause you troubles, so maybe the best way is to install the {{ic|selinux-*}} packages from a live CD chroot to your system.}}<br />
<br />
{{Warning| Do '''not''' install {{AUR|selinux-sysvinit}} package unless everything is set up, as you may end up with an unbootable system. Or, do not reboot unless you have everything set up.}}<br />
<br />
===Package description===<br />
<br />
Все пакеты, принадлежащие к SELinux находятся в группе ''selinux''. В ''selinux-userspace'' пакеты пользователтского пространства SELinux. В ''selinux-policies'' находятся пакеты политик SELinux. Остальные пакеты находятся в ''selinux-extras''.<br />
<br />
====SELinux aware system utils====<br />
<br />
;{{AUR|linux-selinux}}<br />
:Активирует поддержку [[SELinux]] ядром. Компиляция модулей подобно Virtualbox.<br />
<br />
;{{AUR|selinux-coreutils}}<br />
:Компиляция пакета [[coreutils]] с включенной поддержкой SELinux.<br />
<br />
;{{AUR|selinux-flex}}<br />
Версия flex, необходимая только для сборки checkpolicy. Текущий flex имеет ошибку, вызывающую отказ в выполнении команды checkmodule.<br />
<br />
;{{AUR|selinux-pam}}<br />
:Пакет PAM с pam_selinux.so.<br />
<br />
;{{AUR|selinux-sysvinit}}<br />
:sysvinit загружает политики при старте системы. Будьте осторожны; если политика SELinux не сможет быть загружена это перестанет работать!<br />
<br />
;{{AUR|selinux-util-linux}}<br />
:Версия util-linux, скомпилированная с включенной поддержкой SELinux.<br />
<br />
;{{AUR|selinux-udev}} made obsolete by {{AUR|selinux-sysvinit}}<br />
:Версия [[udev]], скомпилированная с включенной поддержкой SELinux для маркировки файлов в {{ic|/dev}} для правильной работы. Функциональность [[udev]] теперь обеспечена selinux-sysvinit-tools [http://www.archlinux.org/news/systemd-tools-replaces-udev/], которая является частью {{AUR|selinux-sysvinit}} splitpackage.<br />
<br />
;{{AUR|selinux-findutils}}<br />
Пропатченная версия findutils с активированной поддержкой SELinux, необходимая для поиска файлов в указанном возможном контексте безопасности.<br />
<br />
;{{AUR|selinux-sudo}}<br />
Версия [[sudo]] с активированной поддержкой SELinux, для корректной устанавки контекста безопасности.<br />
<br />
;{{AUR|selinux-procps}}<br />
:Procps package with SELinux patch based on some Fedora patches.<br />
<br />
;{{AUR|selinux-psmisc}}<br />
:Psmisc package compiled with SELinux support; for example, it adds the {{ic|-Z}} option to {{ic|killall}}.<br />
<br />
;{{AUR|selinux-shadow}}<br />
:Shadow package compiled with SELinux support; contains a modified {{ic|/etc/pam.d/login}} file to set correct security context for user after login.<br />
<br />
;{{AUR|selinux-cronie}}<br />
:Fedora fork of Vixie cron with SELinux enabled.<br />
<br />
;{{AUR|selinux-logrotate}}<br />
:Logrotate package compiled with SELinux support.<br />
<br />
;{{AUR|selinux-openssh}}<br />
:OpenSSH package compiled with SELinux support to set security context for user sessions.<br />
<br />
====SELinux userspace====<br />
;{{AUR|selinux-usr-checkpolicy}}<br />
:Tools to build SELinux policy<br />
<br />
;{{AUR|selinux-usr-libselinux}}<br />
:Library for security-aware applications. Python bindings needed for ''semanage'' and ''setools'' now included.<br />
<br />
;{{AUR|selinux-usr-libsemanage}}<br />
:Library for policy management. Python bindings needed for ''semanage'' and ''setools'' now included.<br />
<br />
;{{AUR|selinux-usr-libsepol}}<br />
:Library for binary policy manipulation.<br />
<br />
;{{AUR|selinux-usr-policycoreutils}}<br />
:SELinux core utils such as newrole, setfiles, etc.<br />
<br />
;{{AUR|selinux-usr-sepolgen}}<br />
:A Python library for parsing and modifying policy source.<br />
<br />
====SELinux policy====<br />
<br />
;{{AUR|selinux-refpolicy}}<br />
:Precompiled modular-otherways-vanilla Reference policy with headers and documentation but without sources.<br />
<br />
;{{AUR|selinux-refpolicy-src}}<br />
:Reference policy sources<br />
<br />
;{{AUR|selinux-refpolicy-arch}}<br />
:Precompiled modular Reference policy with headers and documentation but without sources. Development Arch Linux Refpolicy patch included, but for now [February 2011] it only fixes some issues with {{ic|/etc/rc.d/*}} labeling.<br />
<br />
====Other SELinux tools====<br />
<br />
;{{AUR|selinux-setools}}<br />
:CLI and GUI tools to manage SELinux<br />
<br />
;{{AUR|audit}}<br />
:User space utilities for storing and searching the audit records generated by the audit subsystem in the Linux kernel. SELinux (AVC) will log all denials using audit. Very useful in troubleshooting SELinux. Also audit2allow use log from this program.<br />
<br />
{{Note|If using proprietary drivers, such as [[NVIDIA]] graphics drivers, you may need to [[NVIDIA#Alternate install: custom kernel|rebuild them]] for custom kernels.}}<br />
<br />
==Configuration==<br />
<br />
After the installation of needed packages, you have to set up a few things so that SELinux can be used.<br />
<br />
===Changing boot loader configuration===<br />
<br />
You have to manually change [[GRUB]]'s {{ic|/boot/grub/menu.lst}} so that the custom kernel is booted, e.g.:<br />
<br />
# (1) Arch Linux<br />
title Arch Linux (SELinux)<br />
root (hd0,4)<br />
kernel /boot/'''vmlinuz-linux-selinux''' root=/dev/sda5 ro vga=775<br />
initrd /boot/'''initramfs-linux-selinux.img'''<br />
<br />
===Mounting selinuxfs===<br />
<br />
Add following to {{ic|/etc/fstab}}:<br />
<br />
none /selinux selinuxfs noauto 0 0<br />
<br />
Do not forget to create the mount point:<br />
<br />
mkdir /selinux<br />
<br />
===Main SELinux configuration file===<br />
Main SELinux configuration file ({{ic|/etc/selinux/config}}) is part of the {{AUR|selinux-refpolicy}} package currently in the [[Arch User Repository|AUR]]. It has default contents as follows:<br />
<br />
# This file controls the state of SELinux on the system.<br />
# SELINUX= can take one of these three values:<br />
# enforcing - SELinux security policy is enforced.<br />
# permissive - SELinux prints warnings <br />
# instead of enforcing.<br />
# disabled - No SELinux policy is loaded.<br />
SELINUX=permissive<br />
# SELINUXTYPE= takes the name of SELinux policy to<br />
# be used. Current options are:<br />
# refpolicy (vanilla reference policy)<br />
# refpolicy-arch (reference policy with <br />
# Arch Linux patch)<br />
SELINUXTYPE=refpolicy<br />
<br />
{{Note|Option {{ic|SELINUX<nowiki>=</nowiki>permissive}} is suitable only for testing. It gives no security. When everything is set up and working, you should change it to {{ic|SELINUX<nowiki>=</nowiki>enforcing}}. Option {{ic|SELINUXTYPE<nowiki>=</nowiki>refpolicy}} specifies the name of used policy. Change it if you choose another name for your policy. If you plan to compile policy from source, you have to create the file yourself.}}<br />
<br />
===Set up PAM===<br />
<br />
Correctly set-up PAM is important to get a proper security context after login. If you installed {{AUR|selinux-shadow}} from the [[Arch User Repository|AUR]], there should be the following lines in {{ic|/etc/pam.d/login}}:<br />
<br />
# pam_selinux.so close should be the first session rule<br />
session required pam_selinux.so close<br />
# pam_selinux.so open should only be followed by sessions to be executed in the user context<br />
session required pam_selinux.so open<br />
<br />
If not, add them to the file. Similarly for logging in via SSH in {{ic|/etc/pam.d/sshd}}, which is part of {{AUR|selinux-openssh}} package.<br />
<br />
If you want to use SELinux with GUI, you should add the aforementioned lines to other files such as {{ic|/etc/pam.d/kde}}, {{ic|/etc/pam.d/kde-np}}, ... depending on your login manager.<br />
<br />
{{Note|Running SELinux with GUI applications in Arch Linux is not much supported at the time being.}}<br />
<br />
==Reference policy==<br />
<br />
There are currently two possible ways of installing reference policy: From a pre-compiled package ({{AUR|selinux-refpolicy}}) or from a source package ({{AUR|selinux-refpolicy-src}}).<br />
<br />
{{Note| It is possible to have both the source and the binary package installed. If you plan to build from source in that case, you should probably change the name of policy in {{ic|build.conf}} to avoid overwriting of selinux-refpolicy package files.}}<br />
<br />
===Installing a precompiled refpolicy===<br />
<br />
Install {{AUR|selinux-refpolicy}} from AUR. This is a modular-otherways-vanilla refpolicy. This package includes policy headers (you can therefore compile your own modules), policy documentation and an install script which will load the policy for you and relabel your filesystem (which will likely take some time). It does not include the sources though.<br />
<br />
This package also includes the main SELinux configuration file ({{ic|/etc/selinux/config}}) defaulting to refpolicy and permissive SELinux enforcement for testing purposes.<br />
<br />
You should verify that the policy was correctly loaded, that is if the file {{ic|/etc/selinux/refpolicy/policy/policy.24}} has non-zero size. If so and if you have installed {{AUR|selinux-sysvinit}} and other needed packages, you are ready to reboot and make sure that everything works.<br />
<br />
{{Warning| On newer kernels (eg. 3.0) policy in file {{ic|/etc/selinux/refpolicy/policy/policy.24}} has zero bytes size, because it is used new version of policy from file: {{ic|/etc/selinux/refpolicy/policy/policy.26}}}}<br />
<br />
In case the policy was not correctly loaded you can as root use the following command inside of the {{ic|/usr/share/selinux/refpolicy}} directory to do so:<br />
<br />
/bin/ls *.pp | /bin/grep -Ev "base.pp|enableaudit.pp" | /usr/bin/xargs /usr/sbin/semodule -s refpolicy -b base.pp -i<br />
<br />
To manually relabel your filesystem you can as root use:<br />
<br />
/sbin/restorecon -r /<br />
<br />
===Installing refpolicy from a source package===<br />
<br />
Install {{AUR|selinux-refpolicy-src}} from AUR. Edit the file {{ic|/etc/selinux/refpolicy/src/policy/build.conf}} to your liking. <br />
<br />
{{Note|Build configuration file {{ic|build.conf}} is overwritten on every selinux-refpolicy-src package upgrade, so backup your configuration.}}<br />
<br />
To build, install and load policy from source do the following. (For other possibilities consult the README file located in {{ic|/etc/selinux/refpolicy/src/policy/}}.)<br />
<br />
cd /etc/selinux/refpolicy/src/policy<br />
make bare<br />
make conf <br />
make load<br />
<br />
Copy or link the compiled binary policy to {{ic|/etc/policy.bin}} for sysvinit to find and install selinux-sysvinit:<br />
<br />
ln -s /etc/selinux/refpolicy/policy/policy.21 /etc/policy.bin<br />
<br />
At this moment files do not have any context, so you should relabel the whole filesystem, which will take a while:<br />
<br />
make relabel<br />
<br />
Create the main SELinux configuration file ({{ic|/etc/selinux/config}}) according to the example in related section.<br />
<br />
Now you are ready to reboot and make sure that everything works.<br />
<br />
==Post-installation steps==<br />
<br />
{{Warning| Если ''selinux-sysvinit'' не установлен, то SELinux не сможет запуститься и {{ic|/selinux}} не будет смонтирован.}}<br />
<br />
Выполните {{ic|sestatus}} чтобы убедиться, что SELinux работает. Должно получиться что-то вроде этого:<br />
<br />
SELinux status: enabled<br />
SELinuxfs mount: /selinux<br />
Current mode: permissive<br />
Mode from config file: permissive<br />
Policy version: 26<br />
Policy from config file: refpolicy<br />
<br />
To maintain correct context, you can use ''restorecond'':<br />
<br />
touch /etc/rc.d/restorecond<br />
chmod ugo+x /etc/rc.d/restorecond<br />
<br />
Which should contain:<br />
<br />
#!/bin/sh<br />
restorecond<br />
<br />
{{Note|Не забудьте добавить {{ic|restorecond}} в список {{ic|DAEMONS}} вашего {{ic|/etc/rc.conf}}.}}<br />
<br />
Чтобы переключиться на осуществление режима без перезагрузки, можете использовать:<br />
<br />
echo 1 > /selinux/enforce<br />
<br />
{{Note|Если {{ic|SELINUX<nowiki>=</nowiki>enforcing}} в {{ic|/etc/selinux/config}} не работает, создайте {{ic|/etc/rc.d/selinux-enforce}} содержащий предыдущую команду так же как с restorecond демоном.}}<br />
<br />
==Useful tools==<br />
<br />
There are some tools/commands that can greatly help with SELinux. <br />
<br />
;restorecon: Restores the context of a file/directory (or recursively with {{ic|-R}}) based on any policy rules <br />
;rlpkg: Relabels any files belonging to that Gentoo package to their proper security context (if they have one) <br />
;chcon: Change the context on a specific file <br />
;audit2allow: Reads in log messages from the AVC log file and tells you what rules would fix the error. Do not just add these rules without looking at them though, they cannot detect errors in other places (e.g. the application is running in the wrong context in the first place), or sometimes things will generate error messages but may maintain functionality so it would be better to add dontaudit to just ignore the access attempts.<br />
<br />
==References==<br />
*[http://en.wikipedia.org/wiki/Security-Enhanced_Linux Security Enhanced Linux]<br />
*[http://www.gentoo.org/proj/en/hardened/selinux/selinux-handbook.xml Gentoo SELinux Handbook]<br />
*[http://fedoraproject.org/wiki/SELinux Fedora Project's SELinux Wiki]<br />
*[http://www.nsa.gov/research/selinux/index.shtml NSA's Official SELinux Homepage]<br />
*[http://oss.tresys.com/projects/refpolicy Reference Policy Homepage]<br />
*[http://userspace.selinuxproject.org/trac/ SELinux Userspace Homepage]<br />
*[http://oss.tresys.com/projects/setools SETools Homepage]<br />
<br />
== See also ==<br />
* [[AppArmor]] (Similar to SELinux, much easier to configure, less features.)</div>Alligatorhttps://wiki.archlinux.org/index.php?title=SELinux_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=211326SELinux (Русский)2012-06-26T23:19:58Z<p>Alligator: /* Post-installation steps */</p>
<hr />
<div>[[Category:Security]]<br />
[[Category:Kernel]]<br />
<br />
Security-Enhanced Linux (SELinux) это функция Linux, которая обеспечивает множество политик безопасности, включая США. Обязательные средства управления доступом (MAC, Mandatory Access Controls) стиля министерства обороны, с помощью Linux Security Modules (LSM) в ядре Linux. Это не дистрибутив Linux, а скорее ряд модификаций, которые могут быть применены к Unix-подобным операционным системам, таким как Linux и BSD. Её архитектура стремится оптимизировать объем программного обеспечения, обвиненного в осуществлении политики безопасности, которое является близко выровненное Trusted Computer System Evaluation Criteria (TCSEC, называемый Оранжевой книгой) требование для минимизации достоверной вычислительной базы (TCB) (применимый к классам B3 и A1 оценки), но довольно не связано с наименьшим количеством требования полномочия (B2, B3, A1), как часто требуется. Зародышевые понятия базовый SELinux могут быть прослежены до нескольких более ранних проектов американским Агентством национальной безопасности (NSA). [1]<br />
<br />
Для выполнения SELinux под дистрибутивом Linux требуется: включить SELinux в ядро, инструменты SELinux Userspace и библиотеки, и SELinux Policies (главным образом на основе Reference Policy). Некоторые общие программы Linux должны также исправляться/компилироваться с функциями SELinux.<br />
<br />
==Обязательные требования==<br />
<br />
Поддерживаются только файловые системы ext2, ext3, ext4, JFS и XFS.<br />
<br />
{{Note| This is probably not needed anymore:}}<br />
<br />
Пользователи XFS должны использовать 512 байтов inodes (значение по умолчанию 256). Использование SELinux расширяло атрибуты для того, чтобы сохранить метки безопасности в файлах. XFS хранит это в inode, и если inode слишком маленький, должен использоваться дополнительный блок, который тратит впустую много пространства и подвергается потерям производительности.<br />
<br />
# mkfs.xfs -i size=512 /dev/sda1 (for example)<br />
<br />
==Установка необходимых пакетов==<br />
<br />
Должны быть установлены по крайней мере {{AUR|linux-selinux}}, {{AUR|selinux-pam}}, {{AUR|selinux-usr-policycoreutils}} и {{AUR|selinux-refpolicy-src}} из [[AUR]]. Рекомендуется установить все пакеты, требуемые SELinux.<br />
<br />
При установке из [[AUR (Русский)]], можете использовать [[AUR helper (Русский)]] или загружать tarballs из AUR вручную и собирать с {{ic|makepkg}}. При замене пакетов pam и coreutils будьте особо внимательны, поскольку они жизненно важны для системы. Приготовьте Live CD или Live USB на случай, если придётся переустановить систему.<br />
<br />
{{Warning| Do '''not''' remove {{Pkg|pam}} via sudo, as PAM is what takes care of authentication, and you just removed it. Instead first ''su'' to root and then do:<br />
pacman -Rdd pam<br />
pacman -U selinux-pam<br />
Doing {{ic|pacman -Rdd coreutils}}, {{ic|pacman -U selinux-coreutils}} may also cause you troubles, so maybe the best way is to install the {{ic|selinux-*}} packages from a live CD chroot to your system.}}<br />
<br />
{{Warning| Do '''not''' install {{AUR|selinux-sysvinit}} package unless everything is set up, as you may end up with an unbootable system. Or, do not reboot unless you have everything set up.}}<br />
<br />
===Package description===<br />
<br />
All SELinux related packages belong to the ''selinux'' group. Group ''selinux-system-utilities'' is used for modified packages from the {{ic|[core]}} repository. Group ''selinux-userspace'' contains packages from SELinux Userspace project. Security policies belong to ''selinux-policies'' group. Other packages are in ''selinux-extras'' group.<br />
<br />
====SELinux aware system utils====<br />
<br />
;{{AUR|linux-selinux}}<br />
:SELinux enabled kernel. Compiling custom modules like virtualbox works.<br />
<br />
;{{AUR|selinux-coreutils}}<br />
:Modified coreutils package compiled with SELinux support enabled.<br />
<br />
;{{AUR|selinux-flex}}<br />
:Flex version needed only to build checkpolicy. Current flex has error causing failure in checkmodule command.<br />
<br />
;{{AUR|selinux-pam}}<br />
:PAM package with pam_selinux.so.<br />
<br />
;{{AUR|selinux-sysvinit}}<br />
:Sysvinit which loads policy at startup. Be careful; it fails if SELinux policy cannot be loaded!<br />
<br />
;{{AUR|selinux-util-linux}}<br />
:Modified util-linux package compiled with SELinux support enabled.<br />
<br />
;{{AUR|selinux-udev}} made obsolete by {{AUR|selinux-sysvinit}}<br />
:Modified [[udev]] package compiled with SELinux support enabled for labeling of files in {{ic|/dev}} to work correctly. The udev functionality is now provided by selinux-sysvinit-tools [http://www.archlinux.org/news/systemd-tools-replaces-udev/] which is part of the {{AUR|selinux-sysvinit}} splitpackage.<br />
<br />
;{{AUR|selinux-findutils}}<br />
:Patched findutils package compiled with SELinux support to make searching of files with specified security context possible.<br />
<br />
;{{AUR|selinux-sudo}}<br />
:Modified [[sudo]] package compiled with SELinux support which sets security context correctly.<br />
<br />
;{{AUR|selinux-procps}}<br />
:Procps package with SELinux patch based on some Fedora patches.<br />
<br />
;{{AUR|selinux-psmisc}}<br />
:Psmisc package compiled with SELinux support; for example, it adds the {{ic|-Z}} option to {{ic|killall}}.<br />
<br />
;{{AUR|selinux-shadow}}<br />
:Shadow package compiled with SELinux support; contains a modified {{ic|/etc/pam.d/login}} file to set correct security context for user after login.<br />
<br />
;{{AUR|selinux-cronie}}<br />
:Fedora fork of Vixie cron with SELinux enabled.<br />
<br />
;{{AUR|selinux-logrotate}}<br />
:Logrotate package compiled with SELinux support.<br />
<br />
;{{AUR|selinux-openssh}}<br />
:OpenSSH package compiled with SELinux support to set security context for user sessions.<br />
<br />
====SELinux userspace====<br />
;{{AUR|selinux-usr-checkpolicy}}<br />
:Tools to build SELinux policy<br />
<br />
;{{AUR|selinux-usr-libselinux}}<br />
:Library for security-aware applications. Python bindings needed for ''semanage'' and ''setools'' now included.<br />
<br />
;{{AUR|selinux-usr-libsemanage}}<br />
:Library for policy management. Python bindings needed for ''semanage'' and ''setools'' now included.<br />
<br />
;{{AUR|selinux-usr-libsepol}}<br />
:Library for binary policy manipulation.<br />
<br />
;{{AUR|selinux-usr-policycoreutils}}<br />
:SELinux core utils such as newrole, setfiles, etc.<br />
<br />
;{{AUR|selinux-usr-sepolgen}}<br />
:A Python library for parsing and modifying policy source.<br />
<br />
====SELinux policy====<br />
<br />
;{{AUR|selinux-refpolicy}}<br />
:Precompiled modular-otherways-vanilla Reference policy with headers and documentation but without sources.<br />
<br />
;{{AUR|selinux-refpolicy-src}}<br />
:Reference policy sources<br />
<br />
;{{AUR|selinux-refpolicy-arch}}<br />
:Precompiled modular Reference policy with headers and documentation but without sources. Development Arch Linux Refpolicy patch included, but for now [February 2011] it only fixes some issues with {{ic|/etc/rc.d/*}} labeling.<br />
<br />
====Other SELinux tools====<br />
<br />
;{{AUR|selinux-setools}}<br />
:CLI and GUI tools to manage SELinux<br />
<br />
;{{AUR|audit}}<br />
:User space utilities for storing and searching the audit records generated by the audit subsystem in the Linux kernel. SELinux (AVC) will log all denials using audit. Very useful in troubleshooting SELinux. Also audit2allow use log from this program.<br />
<br />
{{Note|If using proprietary drivers, such as [[NVIDIA]] graphics drivers, you may need to [[NVIDIA#Alternate install: custom kernel|rebuild them]] for custom kernels.}}<br />
<br />
==Configuration==<br />
<br />
After the installation of needed packages, you have to set up a few things so that SELinux can be used.<br />
<br />
===Changing boot loader configuration===<br />
<br />
You have to manually change [[GRUB]]'s {{ic|/boot/grub/menu.lst}} so that the custom kernel is booted, e.g.:<br />
<br />
# (1) Arch Linux<br />
title Arch Linux (SELinux)<br />
root (hd0,4)<br />
kernel /boot/'''vmlinuz-linux-selinux''' root=/dev/sda5 ro vga=775<br />
initrd /boot/'''initramfs-linux-selinux.img'''<br />
<br />
===Mounting selinuxfs===<br />
<br />
Add following to {{ic|/etc/fstab}}:<br />
<br />
none /selinux selinuxfs noauto 0 0<br />
<br />
Do not forget to create the mount point:<br />
<br />
mkdir /selinux<br />
<br />
===Main SELinux configuration file===<br />
Main SELinux configuration file ({{ic|/etc/selinux/config}}) is part of the {{AUR|selinux-refpolicy}} package currently in the [[Arch User Repository|AUR]]. It has default contents as follows:<br />
<br />
# This file controls the state of SELinux on the system.<br />
# SELINUX= can take one of these three values:<br />
# enforcing - SELinux security policy is enforced.<br />
# permissive - SELinux prints warnings <br />
# instead of enforcing.<br />
# disabled - No SELinux policy is loaded.<br />
SELINUX=permissive<br />
# SELINUXTYPE= takes the name of SELinux policy to<br />
# be used. Current options are:<br />
# refpolicy (vanilla reference policy)<br />
# refpolicy-arch (reference policy with <br />
# Arch Linux patch)<br />
SELINUXTYPE=refpolicy<br />
<br />
{{Note|Option {{ic|SELINUX<nowiki>=</nowiki>permissive}} is suitable only for testing. It gives no security. When everything is set up and working, you should change it to {{ic|SELINUX<nowiki>=</nowiki>enforcing}}. Option {{ic|SELINUXTYPE<nowiki>=</nowiki>refpolicy}} specifies the name of used policy. Change it if you choose another name for your policy. If you plan to compile policy from source, you have to create the file yourself.}}<br />
<br />
===Set up PAM===<br />
<br />
Correctly set-up PAM is important to get a proper security context after login. If you installed {{AUR|selinux-shadow}} from the [[Arch User Repository|AUR]], there should be the following lines in {{ic|/etc/pam.d/login}}:<br />
<br />
# pam_selinux.so close should be the first session rule<br />
session required pam_selinux.so close<br />
# pam_selinux.so open should only be followed by sessions to be executed in the user context<br />
session required pam_selinux.so open<br />
<br />
If not, add them to the file. Similarly for logging in via SSH in {{ic|/etc/pam.d/sshd}}, which is part of {{AUR|selinux-openssh}} package.<br />
<br />
If you want to use SELinux with GUI, you should add the aforementioned lines to other files such as {{ic|/etc/pam.d/kde}}, {{ic|/etc/pam.d/kde-np}}, ... depending on your login manager.<br />
<br />
{{Note|Running SELinux with GUI applications in Arch Linux is not much supported at the time being.}}<br />
<br />
==Reference policy==<br />
<br />
There are currently two possible ways of installing reference policy: From a pre-compiled package ({{AUR|selinux-refpolicy}}) or from a source package ({{AUR|selinux-refpolicy-src}}).<br />
<br />
{{Note| It is possible to have both the source and the binary package installed. If you plan to build from source in that case, you should probably change the name of policy in {{ic|build.conf}} to avoid overwriting of selinux-refpolicy package files.}}<br />
<br />
===Installing a precompiled refpolicy===<br />
<br />
Install {{AUR|selinux-refpolicy}} from AUR. This is a modular-otherways-vanilla refpolicy. This package includes policy headers (you can therefore compile your own modules), policy documentation and an install script which will load the policy for you and relabel your filesystem (which will likely take some time). It does not include the sources though.<br />
<br />
This package also includes the main SELinux configuration file ({{ic|/etc/selinux/config}}) defaulting to refpolicy and permissive SELinux enforcement for testing purposes.<br />
<br />
You should verify that the policy was correctly loaded, that is if the file {{ic|/etc/selinux/refpolicy/policy/policy.24}} has non-zero size. If so and if you have installed {{AUR|selinux-sysvinit}} and other needed packages, you are ready to reboot and make sure that everything works.<br />
<br />
{{Warning| On newer kernels (eg. 3.0) policy in file {{ic|/etc/selinux/refpolicy/policy/policy.24}} has zero bytes size, because it is used new version of policy from file: {{ic|/etc/selinux/refpolicy/policy/policy.26}}}}<br />
<br />
In case the policy was not correctly loaded you can as root use the following command inside of the {{ic|/usr/share/selinux/refpolicy}} directory to do so:<br />
<br />
/bin/ls *.pp | /bin/grep -Ev "base.pp|enableaudit.pp" | /usr/bin/xargs /usr/sbin/semodule -s refpolicy -b base.pp -i<br />
<br />
To manually relabel your filesystem you can as root use:<br />
<br />
/sbin/restorecon -r /<br />
<br />
===Installing refpolicy from a source package===<br />
<br />
Install {{AUR|selinux-refpolicy-src}} from AUR. Edit the file {{ic|/etc/selinux/refpolicy/src/policy/build.conf}} to your liking. <br />
<br />
{{Note|Build configuration file {{ic|build.conf}} is overwritten on every selinux-refpolicy-src package upgrade, so backup your configuration.}}<br />
<br />
To build, install and load policy from source do the following. (For other possibilities consult the README file located in {{ic|/etc/selinux/refpolicy/src/policy/}}.)<br />
<br />
cd /etc/selinux/refpolicy/src/policy<br />
make bare<br />
make conf <br />
make load<br />
<br />
Copy or link the compiled binary policy to {{ic|/etc/policy.bin}} for sysvinit to find and install selinux-sysvinit:<br />
<br />
ln -s /etc/selinux/refpolicy/policy/policy.21 /etc/policy.bin<br />
<br />
At this moment files do not have any context, so you should relabel the whole filesystem, which will take a while:<br />
<br />
make relabel<br />
<br />
Create the main SELinux configuration file ({{ic|/etc/selinux/config}}) according to the example in related section.<br />
<br />
Now you are ready to reboot and make sure that everything works.<br />
<br />
==Post-installation steps==<br />
<br />
{{Warning| Если ''selinux-sysvinit'' не установлен, то SELinux не сможет запуститься и {{ic|/selinux}} не будет смонтирован.}}<br />
<br />
Выполните {{ic|sestatus}} чтобы убедиться, что SELinux работает. Должно получиться что-то вроде этого:<br />
<br />
SELinux status: enabled<br />
SELinuxfs mount: /selinux<br />
Current mode: permissive<br />
Mode from config file: permissive<br />
Policy version: 26<br />
Policy from config file: refpolicy<br />
<br />
To maintain correct context, you can use ''restorecond'':<br />
<br />
touch /etc/rc.d/restorecond<br />
chmod ugo+x /etc/rc.d/restorecond<br />
<br />
Which should contain:<br />
<br />
#!/bin/sh<br />
restorecond<br />
<br />
{{Note|Не забудьте добавить {{ic|restorecond}} в список {{ic|DAEMONS}} вашего {{ic|/etc/rc.conf}}.}}<br />
<br />
Чтобы переключиться на осуществление режима без перезагрузки, можете использовать:<br />
<br />
echo 1 > /selinux/enforce<br />
<br />
{{Note|Если {{ic|SELINUX<nowiki>=</nowiki>enforcing}} в {{ic|/etc/selinux/config}} не работает, создайте {{ic|/etc/rc.d/selinux-enforce}} содержащий предыдущую команду так же как с restorecond демоном.}}<br />
<br />
==Useful tools==<br />
<br />
There are some tools/commands that can greatly help with SELinux. <br />
<br />
;restorecon: Restores the context of a file/directory (or recursively with {{ic|-R}}) based on any policy rules <br />
;rlpkg: Relabels any files belonging to that Gentoo package to their proper security context (if they have one) <br />
;chcon: Change the context on a specific file <br />
;audit2allow: Reads in log messages from the AVC log file and tells you what rules would fix the error. Do not just add these rules without looking at them though, they cannot detect errors in other places (e.g. the application is running in the wrong context in the first place), or sometimes things will generate error messages but may maintain functionality so it would be better to add dontaudit to just ignore the access attempts.<br />
<br />
==References==<br />
*[http://en.wikipedia.org/wiki/Security-Enhanced_Linux Security Enhanced Linux]<br />
*[http://www.gentoo.org/proj/en/hardened/selinux/selinux-handbook.xml Gentoo SELinux Handbook]<br />
*[http://fedoraproject.org/wiki/SELinux Fedora Project's SELinux Wiki]<br />
*[http://www.nsa.gov/research/selinux/index.shtml NSA's Official SELinux Homepage]<br />
*[http://oss.tresys.com/projects/refpolicy Reference Policy Homepage]<br />
*[http://userspace.selinuxproject.org/trac/ SELinux Userspace Homepage]<br />
*[http://oss.tresys.com/projects/setools SETools Homepage]<br />
<br />
== See also ==<br />
* [[AppArmor]] (Similar to SELinux, much easier to configure, less features.)</div>Alligatorhttps://wiki.archlinux.org/index.php?title=SELinux_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=211325SELinux (Русский)2012-06-26T22:57:24Z<p>Alligator: /* Post-installation steps */</p>
<hr />
<div>[[Category:Security]]<br />
[[Category:Kernel]]<br />
<br />
Security-Enhanced Linux (SELinux) это функция Linux, которая обеспечивает множество политик безопасности, включая США. Обязательные средства управления доступом (MAC, Mandatory Access Controls) стиля министерства обороны, с помощью Linux Security Modules (LSM) в ядре Linux. Это не дистрибутив Linux, а скорее ряд модификаций, которые могут быть применены к Unix-подобным операционным системам, таким как Linux и BSD. Её архитектура стремится оптимизировать объем программного обеспечения, обвиненного в осуществлении политики безопасности, которое является близко выровненное Trusted Computer System Evaluation Criteria (TCSEC, называемый Оранжевой книгой) требование для минимизации достоверной вычислительной базы (TCB) (применимый к классам B3 и A1 оценки), но довольно не связано с наименьшим количеством требования полномочия (B2, B3, A1), как часто требуется. Зародышевые понятия базовый SELinux могут быть прослежены до нескольких более ранних проектов американским Агентством национальной безопасности (NSA). [1]<br />
<br />
Для выполнения SELinux под дистрибутивом Linux требуется: включить SELinux в ядро, инструменты SELinux Userspace и библиотеки, и SELinux Policies (главным образом на основе Reference Policy). Некоторые общие программы Linux должны также исправляться/компилироваться с функциями SELinux.<br />
<br />
==Обязательные требования==<br />
<br />
Поддерживаются только файловые системы ext2, ext3, ext4, JFS и XFS.<br />
<br />
{{Note| This is probably not needed anymore:}}<br />
<br />
Пользователи XFS должны использовать 512 байтов inodes (значение по умолчанию 256). Использование SELinux расширяло атрибуты для того, чтобы сохранить метки безопасности в файлах. XFS хранит это в inode, и если inode слишком маленький, должен использоваться дополнительный блок, который тратит впустую много пространства и подвергается потерям производительности.<br />
<br />
# mkfs.xfs -i size=512 /dev/sda1 (for example)<br />
<br />
==Установка необходимых пакетов==<br />
<br />
Должны быть установлены по крайней мере {{AUR|linux-selinux}}, {{AUR|selinux-pam}}, {{AUR|selinux-usr-policycoreutils}} и {{AUR|selinux-refpolicy-src}} из [[AUR]]. Рекомендуется установить все пакеты, требуемые SELinux.<br />
<br />
При установке из [[AUR (Русский)]], можете использовать [[AUR helper (Русский)]] или загружать tarballs из AUR вручную и собирать с {{ic|makepkg}}. При замене пакетов pam и coreutils будьте особо внимательны, поскольку они жизненно важны для системы. Приготовьте Live CD или Live USB на случай, если придётся переустановить систему.<br />
<br />
{{Warning| Do '''not''' remove {{Pkg|pam}} via sudo, as PAM is what takes care of authentication, and you just removed it. Instead first ''su'' to root and then do:<br />
pacman -Rdd pam<br />
pacman -U selinux-pam<br />
Doing {{ic|pacman -Rdd coreutils}}, {{ic|pacman -U selinux-coreutils}} may also cause you troubles, so maybe the best way is to install the {{ic|selinux-*}} packages from a live CD chroot to your system.}}<br />
<br />
{{Warning| Do '''not''' install {{AUR|selinux-sysvinit}} package unless everything is set up, as you may end up with an unbootable system. Or, do not reboot unless you have everything set up.}}<br />
<br />
===Package description===<br />
<br />
All SELinux related packages belong to the ''selinux'' group. Group ''selinux-system-utilities'' is used for modified packages from the {{ic|[core]}} repository. Group ''selinux-userspace'' contains packages from SELinux Userspace project. Security policies belong to ''selinux-policies'' group. Other packages are in ''selinux-extras'' group.<br />
<br />
====SELinux aware system utils====<br />
<br />
;{{AUR|linux-selinux}}<br />
:SELinux enabled kernel. Compiling custom modules like virtualbox works.<br />
<br />
;{{AUR|selinux-coreutils}}<br />
:Modified coreutils package compiled with SELinux support enabled.<br />
<br />
;{{AUR|selinux-flex}}<br />
:Flex version needed only to build checkpolicy. Current flex has error causing failure in checkmodule command.<br />
<br />
;{{AUR|selinux-pam}}<br />
:PAM package with pam_selinux.so.<br />
<br />
;{{AUR|selinux-sysvinit}}<br />
:Sysvinit which loads policy at startup. Be careful; it fails if SELinux policy cannot be loaded!<br />
<br />
;{{AUR|selinux-util-linux}}<br />
:Modified util-linux package compiled with SELinux support enabled.<br />
<br />
;{{AUR|selinux-udev}} made obsolete by {{AUR|selinux-sysvinit}}<br />
:Modified [[udev]] package compiled with SELinux support enabled for labeling of files in {{ic|/dev}} to work correctly. The udev functionality is now provided by selinux-sysvinit-tools [http://www.archlinux.org/news/systemd-tools-replaces-udev/] which is part of the {{AUR|selinux-sysvinit}} splitpackage.<br />
<br />
;{{AUR|selinux-findutils}}<br />
:Patched findutils package compiled with SELinux support to make searching of files with specified security context possible.<br />
<br />
;{{AUR|selinux-sudo}}<br />
:Modified [[sudo]] package compiled with SELinux support which sets security context correctly.<br />
<br />
;{{AUR|selinux-procps}}<br />
:Procps package with SELinux patch based on some Fedora patches.<br />
<br />
;{{AUR|selinux-psmisc}}<br />
:Psmisc package compiled with SELinux support; for example, it adds the {{ic|-Z}} option to {{ic|killall}}.<br />
<br />
;{{AUR|selinux-shadow}}<br />
:Shadow package compiled with SELinux support; contains a modified {{ic|/etc/pam.d/login}} file to set correct security context for user after login.<br />
<br />
;{{AUR|selinux-cronie}}<br />
:Fedora fork of Vixie cron with SELinux enabled.<br />
<br />
;{{AUR|selinux-logrotate}}<br />
:Logrotate package compiled with SELinux support.<br />
<br />
;{{AUR|selinux-openssh}}<br />
:OpenSSH package compiled with SELinux support to set security context for user sessions.<br />
<br />
====SELinux userspace====<br />
;{{AUR|selinux-usr-checkpolicy}}<br />
:Tools to build SELinux policy<br />
<br />
;{{AUR|selinux-usr-libselinux}}<br />
:Library for security-aware applications. Python bindings needed for ''semanage'' and ''setools'' now included.<br />
<br />
;{{AUR|selinux-usr-libsemanage}}<br />
:Library for policy management. Python bindings needed for ''semanage'' and ''setools'' now included.<br />
<br />
;{{AUR|selinux-usr-libsepol}}<br />
:Library for binary policy manipulation.<br />
<br />
;{{AUR|selinux-usr-policycoreutils}}<br />
:SELinux core utils such as newrole, setfiles, etc.<br />
<br />
;{{AUR|selinux-usr-sepolgen}}<br />
:A Python library for parsing and modifying policy source.<br />
<br />
====SELinux policy====<br />
<br />
;{{AUR|selinux-refpolicy}}<br />
:Precompiled modular-otherways-vanilla Reference policy with headers and documentation but without sources.<br />
<br />
;{{AUR|selinux-refpolicy-src}}<br />
:Reference policy sources<br />
<br />
;{{AUR|selinux-refpolicy-arch}}<br />
:Precompiled modular Reference policy with headers and documentation but without sources. Development Arch Linux Refpolicy patch included, but for now [February 2011] it only fixes some issues with {{ic|/etc/rc.d/*}} labeling.<br />
<br />
====Other SELinux tools====<br />
<br />
;{{AUR|selinux-setools}}<br />
:CLI and GUI tools to manage SELinux<br />
<br />
;{{AUR|audit}}<br />
:User space utilities for storing and searching the audit records generated by the audit subsystem in the Linux kernel. SELinux (AVC) will log all denials using audit. Very useful in troubleshooting SELinux. Also audit2allow use log from this program.<br />
<br />
{{Note|If using proprietary drivers, such as [[NVIDIA]] graphics drivers, you may need to [[NVIDIA#Alternate install: custom kernel|rebuild them]] for custom kernels.}}<br />
<br />
==Configuration==<br />
<br />
After the installation of needed packages, you have to set up a few things so that SELinux can be used.<br />
<br />
===Changing boot loader configuration===<br />
<br />
You have to manually change [[GRUB]]'s {{ic|/boot/grub/menu.lst}} so that the custom kernel is booted, e.g.:<br />
<br />
# (1) Arch Linux<br />
title Arch Linux (SELinux)<br />
root (hd0,4)<br />
kernel /boot/'''vmlinuz-linux-selinux''' root=/dev/sda5 ro vga=775<br />
initrd /boot/'''initramfs-linux-selinux.img'''<br />
<br />
===Mounting selinuxfs===<br />
<br />
Add following to {{ic|/etc/fstab}}:<br />
<br />
none /selinux selinuxfs noauto 0 0<br />
<br />
Do not forget to create the mount point:<br />
<br />
mkdir /selinux<br />
<br />
===Main SELinux configuration file===<br />
Main SELinux configuration file ({{ic|/etc/selinux/config}}) is part of the {{AUR|selinux-refpolicy}} package currently in the [[Arch User Repository|AUR]]. It has default contents as follows:<br />
<br />
# This file controls the state of SELinux on the system.<br />
# SELINUX= can take one of these three values:<br />
# enforcing - SELinux security policy is enforced.<br />
# permissive - SELinux prints warnings <br />
# instead of enforcing.<br />
# disabled - No SELinux policy is loaded.<br />
SELINUX=permissive<br />
# SELINUXTYPE= takes the name of SELinux policy to<br />
# be used. Current options are:<br />
# refpolicy (vanilla reference policy)<br />
# refpolicy-arch (reference policy with <br />
# Arch Linux patch)<br />
SELINUXTYPE=refpolicy<br />
<br />
{{Note|Option {{ic|SELINUX<nowiki>=</nowiki>permissive}} is suitable only for testing. It gives no security. When everything is set up and working, you should change it to {{ic|SELINUX<nowiki>=</nowiki>enforcing}}. Option {{ic|SELINUXTYPE<nowiki>=</nowiki>refpolicy}} specifies the name of used policy. Change it if you choose another name for your policy. If you plan to compile policy from source, you have to create the file yourself.}}<br />
<br />
===Set up PAM===<br />
<br />
Correctly set-up PAM is important to get a proper security context after login. If you installed {{AUR|selinux-shadow}} from the [[Arch User Repository|AUR]], there should be the following lines in {{ic|/etc/pam.d/login}}:<br />
<br />
# pam_selinux.so close should be the first session rule<br />
session required pam_selinux.so close<br />
# pam_selinux.so open should only be followed by sessions to be executed in the user context<br />
session required pam_selinux.so open<br />
<br />
If not, add them to the file. Similarly for logging in via SSH in {{ic|/etc/pam.d/sshd}}, which is part of {{AUR|selinux-openssh}} package.<br />
<br />
If you want to use SELinux with GUI, you should add the aforementioned lines to other files such as {{ic|/etc/pam.d/kde}}, {{ic|/etc/pam.d/kde-np}}, ... depending on your login manager.<br />
<br />
{{Note|Running SELinux with GUI applications in Arch Linux is not much supported at the time being.}}<br />
<br />
==Reference policy==<br />
<br />
There are currently two possible ways of installing reference policy: From a pre-compiled package ({{AUR|selinux-refpolicy}}) or from a source package ({{AUR|selinux-refpolicy-src}}).<br />
<br />
{{Note| It is possible to have both the source and the binary package installed. If you plan to build from source in that case, you should probably change the name of policy in {{ic|build.conf}} to avoid overwriting of selinux-refpolicy package files.}}<br />
<br />
===Installing a precompiled refpolicy===<br />
<br />
Install {{AUR|selinux-refpolicy}} from AUR. This is a modular-otherways-vanilla refpolicy. This package includes policy headers (you can therefore compile your own modules), policy documentation and an install script which will load the policy for you and relabel your filesystem (which will likely take some time). It does not include the sources though.<br />
<br />
This package also includes the main SELinux configuration file ({{ic|/etc/selinux/config}}) defaulting to refpolicy and permissive SELinux enforcement for testing purposes.<br />
<br />
You should verify that the policy was correctly loaded, that is if the file {{ic|/etc/selinux/refpolicy/policy/policy.24}} has non-zero size. If so and if you have installed {{AUR|selinux-sysvinit}} and other needed packages, you are ready to reboot and make sure that everything works.<br />
<br />
{{Warning| On newer kernels (eg. 3.0) policy in file {{ic|/etc/selinux/refpolicy/policy/policy.24}} has zero bytes size, because it is used new version of policy from file: {{ic|/etc/selinux/refpolicy/policy/policy.26}}}}<br />
<br />
In case the policy was not correctly loaded you can as root use the following command inside of the {{ic|/usr/share/selinux/refpolicy}} directory to do so:<br />
<br />
/bin/ls *.pp | /bin/grep -Ev "base.pp|enableaudit.pp" | /usr/bin/xargs /usr/sbin/semodule -s refpolicy -b base.pp -i<br />
<br />
To manually relabel your filesystem you can as root use:<br />
<br />
/sbin/restorecon -r /<br />
<br />
===Installing refpolicy from a source package===<br />
<br />
Install {{AUR|selinux-refpolicy-src}} from AUR. Edit the file {{ic|/etc/selinux/refpolicy/src/policy/build.conf}} to your liking. <br />
<br />
{{Note|Build configuration file {{ic|build.conf}} is overwritten on every selinux-refpolicy-src package upgrade, so backup your configuration.}}<br />
<br />
To build, install and load policy from source do the following. (For other possibilities consult the README file located in {{ic|/etc/selinux/refpolicy/src/policy/}}.)<br />
<br />
cd /etc/selinux/refpolicy/src/policy<br />
make bare<br />
make conf <br />
make load<br />
<br />
Copy or link the compiled binary policy to {{ic|/etc/policy.bin}} for sysvinit to find and install selinux-sysvinit:<br />
<br />
ln -s /etc/selinux/refpolicy/policy/policy.21 /etc/policy.bin<br />
<br />
At this moment files do not have any context, so you should relabel the whole filesystem, which will take a while:<br />
<br />
make relabel<br />
<br />
Create the main SELinux configuration file ({{ic|/etc/selinux/config}}) according to the example in related section.<br />
<br />
Now you are ready to reboot and make sure that everything works.<br />
<br />
==Post-installation steps==<br />
{{Warning| If you did not install ''selinux-sysvinit'', then you will see SELinux in disabled mode, and {{ic|/selinux}} will not be mounted.}}<br />
<br />
You can check that SELinux is working with {{ic|sestatus}}. You should get something like:<br />
<br />
SELinux status: enabled<br />
SELinuxfs mount: /selinux<br />
Current mode: permissive<br />
Mode from config file: enforcing<br />
Policy version: 26<br />
Policy from config file: refpolicy<br />
<br />
To maintain correct context, you can use ''restorecond'':<br />
<br />
touch /etc/rc.d/restorecond<br />
chmod ugo+x /etc/rc.d/restorecond<br />
<br />
Which should contain:<br />
<br />
#!/bin/sh<br />
restorecond<br />
<br />
{{Note|Do not forget to add {{ic|restorecond}} into your {{ic|DAEMONS}} array in {{ic|/etc/rc.conf}}.}}<br />
<br />
To switch to enforcing mode without reboot, you can use:<br />
<br />
echo 1 >/selinux/enforce<br />
<br />
{{Note|If setting {{ic|SELINUX<nowiki>=</nowiki>enforcing}} in {{ic|/etc/selinux/config}} does not work for you, create {{ic|/etc/rc.d/selinux-enforce}} containing the preceding command similarly as with restorecond daemon.}}<br />
<br />
==Useful tools==<br />
<br />
There are some tools/commands that can greatly help with SELinux. <br />
<br />
;restorecon: Restores the context of a file/directory (or recursively with {{ic|-R}}) based on any policy rules <br />
;rlpkg: Relabels any files belonging to that Gentoo package to their proper security context (if they have one) <br />
;chcon: Change the context on a specific file <br />
;audit2allow: Reads in log messages from the AVC log file and tells you what rules would fix the error. Do not just add these rules without looking at them though, they cannot detect errors in other places (e.g. the application is running in the wrong context in the first place), or sometimes things will generate error messages but may maintain functionality so it would be better to add dontaudit to just ignore the access attempts.<br />
<br />
==References==<br />
*[http://en.wikipedia.org/wiki/Security-Enhanced_Linux Security Enhanced Linux]<br />
*[http://www.gentoo.org/proj/en/hardened/selinux/selinux-handbook.xml Gentoo SELinux Handbook]<br />
*[http://fedoraproject.org/wiki/SELinux Fedora Project's SELinux Wiki]<br />
*[http://www.nsa.gov/research/selinux/index.shtml NSA's Official SELinux Homepage]<br />
*[http://oss.tresys.com/projects/refpolicy Reference Policy Homepage]<br />
*[http://userspace.selinuxproject.org/trac/ SELinux Userspace Homepage]<br />
*[http://oss.tresys.com/projects/setools SETools Homepage]<br />
<br />
== See also ==<br />
* [[AppArmor]] (Similar to SELinux, much easier to configure, less features.)</div>Alligatorhttps://wiki.archlinux.org/index.php?title=SELinux_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=211306SELinux (Русский)2012-06-26T17:25:49Z<p>Alligator: /* Установка необходимых пакетов */</p>
<hr />
<div>[[Category:Security]]<br />
[[Category:Kernel]]<br />
<br />
Security-Enhanced Linux (SELinux) это функция Linux, которая обеспечивает множество политик безопасности, включая США. Обязательные средства управления доступом (MAC, Mandatory Access Controls) стиля министерства обороны, с помощью Linux Security Modules (LSM) в ядре Linux. Это не дистрибутив Linux, а скорее ряд модификаций, которые могут быть применены к Unix-подобным операционным системам, таким как Linux и BSD. Её архитектура стремится оптимизировать объем программного обеспечения, обвиненного в осуществлении политики безопасности, которое является близко выровненное Trusted Computer System Evaluation Criteria (TCSEC, называемый Оранжевой книгой) требование для минимизации достоверной вычислительной базы (TCB) (применимый к классам B3 и A1 оценки), но довольно не связано с наименьшим количеством требования полномочия (B2, B3, A1), как часто требуется. Зародышевые понятия базовый SELinux могут быть прослежены до нескольких более ранних проектов американским Агентством национальной безопасности (NSA). [1]<br />
<br />
Для выполнения SELinux под дистрибутивом Linux требуется: включить SELinux в ядро, инструменты SELinux Userspace и библиотеки, и SELinux Policies (главным образом на основе Reference Policy). Некоторые общие программы Linux должны также исправляться/компилироваться с функциями SELinux.<br />
<br />
==Обязательные требования==<br />
<br />
Поддерживаются только файловые системы ext2, ext3, ext4, JFS и XFS.<br />
<br />
{{Note| This is probably not needed anymore:}}<br />
<br />
Пользователи XFS должны использовать 512 байтов inodes (значение по умолчанию 256). Использование SELinux расширяло атрибуты для того, чтобы сохранить метки безопасности в файлах. XFS хранит это в inode, и если inode слишком маленький, должен использоваться дополнительный блок, который тратит впустую много пространства и подвергается потерям производительности.<br />
<br />
# mkfs.xfs -i size=512 /dev/sda1 (for example)<br />
<br />
==Установка необходимых пакетов==<br />
<br />
Должны быть установлены по крайней мере {{AUR|linux-selinux}}, {{AUR|selinux-pam}}, {{AUR|selinux-usr-policycoreutils}} и {{AUR|selinux-refpolicy-src}} из [[AUR]]. Рекомендуется установить все пакеты, требуемые SELinux.<br />
<br />
При установке из [[AUR (Русский)]], можете использовать [[AUR helper (Русский)]] или загружать tarballs из AUR вручную и собирать с {{ic|makepkg}}. При замене пакетов pam и coreutils будьте особо внимательны, поскольку они жизненно важны для системы. Приготовьте Live CD или Live USB на случай, если придётся переустановить систему.<br />
<br />
{{Warning| Do '''not''' remove {{Pkg|pam}} via sudo, as PAM is what takes care of authentication, and you just removed it. Instead first ''su'' to root and then do:<br />
pacman -Rdd pam<br />
pacman -U selinux-pam<br />
Doing {{ic|pacman -Rdd coreutils}}, {{ic|pacman -U selinux-coreutils}} may also cause you troubles, so maybe the best way is to install the {{ic|selinux-*}} packages from a live CD chroot to your system.}}<br />
<br />
{{Warning| Do '''not''' install {{AUR|selinux-sysvinit}} package unless everything is set up, as you may end up with an unbootable system. Or, do not reboot unless you have everything set up.}}<br />
<br />
===Package description===<br />
<br />
All SELinux related packages belong to the ''selinux'' group. Group ''selinux-system-utilities'' is used for modified packages from the {{ic|[core]}} repository. Group ''selinux-userspace'' contains packages from SELinux Userspace project. Security policies belong to ''selinux-policies'' group. Other packages are in ''selinux-extras'' group.<br />
<br />
====SELinux aware system utils====<br />
<br />
;{{AUR|linux-selinux}}<br />
:SELinux enabled kernel. Compiling custom modules like virtualbox works.<br />
<br />
;{{AUR|selinux-coreutils}}<br />
:Modified coreutils package compiled with SELinux support enabled.<br />
<br />
;{{AUR|selinux-flex}}<br />
:Flex version needed only to build checkpolicy. Current flex has error causing failure in checkmodule command.<br />
<br />
;{{AUR|selinux-pam}}<br />
:PAM package with pam_selinux.so.<br />
<br />
;{{AUR|selinux-sysvinit}}<br />
:Sysvinit which loads policy at startup. Be careful; it fails if SELinux policy cannot be loaded!<br />
<br />
;{{AUR|selinux-util-linux}}<br />
:Modified util-linux package compiled with SELinux support enabled.<br />
<br />
;{{AUR|selinux-udev}} made obsolete by {{AUR|selinux-sysvinit}}<br />
:Modified [[udev]] package compiled with SELinux support enabled for labeling of files in {{ic|/dev}} to work correctly. The udev functionality is now provided by selinux-sysvinit-tools [http://www.archlinux.org/news/systemd-tools-replaces-udev/] which is part of the {{AUR|selinux-sysvinit}} splitpackage.<br />
<br />
;{{AUR|selinux-findutils}}<br />
:Patched findutils package compiled with SELinux support to make searching of files with specified security context possible.<br />
<br />
;{{AUR|selinux-sudo}}<br />
:Modified [[sudo]] package compiled with SELinux support which sets security context correctly.<br />
<br />
;{{AUR|selinux-procps}}<br />
:Procps package with SELinux patch based on some Fedora patches.<br />
<br />
;{{AUR|selinux-psmisc}}<br />
:Psmisc package compiled with SELinux support; for example, it adds the {{ic|-Z}} option to {{ic|killall}}.<br />
<br />
;{{AUR|selinux-shadow}}<br />
:Shadow package compiled with SELinux support; contains a modified {{ic|/etc/pam.d/login}} file to set correct security context for user after login.<br />
<br />
;{{AUR|selinux-cronie}}<br />
:Fedora fork of Vixie cron with SELinux enabled.<br />
<br />
;{{AUR|selinux-logrotate}}<br />
:Logrotate package compiled with SELinux support.<br />
<br />
;{{AUR|selinux-openssh}}<br />
:OpenSSH package compiled with SELinux support to set security context for user sessions.<br />
<br />
====SELinux userspace====<br />
;{{AUR|selinux-usr-checkpolicy}}<br />
:Tools to build SELinux policy<br />
<br />
;{{AUR|selinux-usr-libselinux}}<br />
:Library for security-aware applications. Python bindings needed for ''semanage'' and ''setools'' now included.<br />
<br />
;{{AUR|selinux-usr-libsemanage}}<br />
:Library for policy management. Python bindings needed for ''semanage'' and ''setools'' now included.<br />
<br />
;{{AUR|selinux-usr-libsepol}}<br />
:Library for binary policy manipulation.<br />
<br />
;{{AUR|selinux-usr-policycoreutils}}<br />
:SELinux core utils such as newrole, setfiles, etc.<br />
<br />
;{{AUR|selinux-usr-sepolgen}}<br />
:A Python library for parsing and modifying policy source.<br />
<br />
====SELinux policy====<br />
<br />
;{{AUR|selinux-refpolicy}}<br />
:Precompiled modular-otherways-vanilla Reference policy with headers and documentation but without sources.<br />
<br />
;{{AUR|selinux-refpolicy-src}}<br />
:Reference policy sources<br />
<br />
;{{AUR|selinux-refpolicy-arch}}<br />
:Precompiled modular Reference policy with headers and documentation but without sources. Development Arch Linux Refpolicy patch included, but for now [February 2011] it only fixes some issues with {{ic|/etc/rc.d/*}} labeling.<br />
<br />
====Other SELinux tools====<br />
<br />
;{{AUR|selinux-setools}}<br />
:CLI and GUI tools to manage SELinux<br />
<br />
;{{AUR|audit}}<br />
:User space utilities for storing and searching the audit records generated by the audit subsystem in the Linux kernel. SELinux (AVC) will log all denials using audit. Very useful in troubleshooting SELinux. Also audit2allow use log from this program.<br />
<br />
{{Note|If using proprietary drivers, such as [[NVIDIA]] graphics drivers, you may need to [[NVIDIA#Alternate install: custom kernel|rebuild them]] for custom kernels.}}<br />
<br />
==Configuration==<br />
<br />
After the installation of needed packages, you have to set up a few things so that SELinux can be used.<br />
<br />
===Changing boot loader configuration===<br />
<br />
You have to manually change [[GRUB]]'s {{ic|/boot/grub/menu.lst}} so that the custom kernel is booted, e.g.:<br />
<br />
# (1) Arch Linux<br />
title Arch Linux (SELinux)<br />
root (hd0,4)<br />
kernel /boot/'''vmlinuz-linux-selinux''' root=/dev/sda5 ro vga=775<br />
initrd /boot/'''initramfs-linux-selinux.img'''<br />
<br />
===Mounting selinuxfs===<br />
<br />
Add following to {{ic|/etc/fstab}}:<br />
<br />
none /selinux selinuxfs noauto 0 0<br />
<br />
Do not forget to create the mount point:<br />
<br />
mkdir /selinux<br />
<br />
===Main SELinux configuration file===<br />
Main SELinux configuration file ({{ic|/etc/selinux/config}}) is part of the {{AUR|selinux-refpolicy}} package currently in the [[Arch User Repository|AUR]]. It has default contents as follows:<br />
<br />
# This file controls the state of SELinux on the system.<br />
# SELINUX= can take one of these three values:<br />
# enforcing - SELinux security policy is enforced.<br />
# permissive - SELinux prints warnings <br />
# instead of enforcing.<br />
# disabled - No SELinux policy is loaded.<br />
SELINUX=permissive<br />
# SELINUXTYPE= takes the name of SELinux policy to<br />
# be used. Current options are:<br />
# refpolicy (vanilla reference policy)<br />
# refpolicy-arch (reference policy with <br />
# Arch Linux patch)<br />
SELINUXTYPE=refpolicy<br />
<br />
{{Note|Option {{ic|SELINUX<nowiki>=</nowiki>permissive}} is suitable only for testing. It gives no security. When everything is set up and working, you should change it to {{ic|SELINUX<nowiki>=</nowiki>enforcing}}. Option {{ic|SELINUXTYPE<nowiki>=</nowiki>refpolicy}} specifies the name of used policy. Change it if you choose another name for your policy. If you plan to compile policy from source, you have to create the file yourself.}}<br />
<br />
===Set up PAM===<br />
<br />
Correctly set-up PAM is important to get a proper security context after login. If you installed {{AUR|selinux-shadow}} from the [[Arch User Repository|AUR]], there should be the following lines in {{ic|/etc/pam.d/login}}:<br />
<br />
# pam_selinux.so close should be the first session rule<br />
session required pam_selinux.so close<br />
# pam_selinux.so open should only be followed by sessions to be executed in the user context<br />
session required pam_selinux.so open<br />
<br />
If not, add them to the file. Similarly for logging in via SSH in {{ic|/etc/pam.d/sshd}}, which is part of {{AUR|selinux-openssh}} package.<br />
<br />
If you want to use SELinux with GUI, you should add the aforementioned lines to other files such as {{ic|/etc/pam.d/kde}}, {{ic|/etc/pam.d/kde-np}}, ... depending on your login manager.<br />
<br />
{{Note|Running SELinux with GUI applications in Arch Linux is not much supported at the time being.}}<br />
<br />
==Reference policy==<br />
<br />
There are currently two possible ways of installing reference policy: From a pre-compiled package ({{AUR|selinux-refpolicy}}) or from a source package ({{AUR|selinux-refpolicy-src}}).<br />
<br />
{{Note| It is possible to have both the source and the binary package installed. If you plan to build from source in that case, you should probably change the name of policy in {{ic|build.conf}} to avoid overwriting of selinux-refpolicy package files.}}<br />
<br />
===Installing a precompiled refpolicy===<br />
<br />
Install {{AUR|selinux-refpolicy}} from AUR. This is a modular-otherways-vanilla refpolicy. This package includes policy headers (you can therefore compile your own modules), policy documentation and an install script which will load the policy for you and relabel your filesystem (which will likely take some time). It does not include the sources though.<br />
<br />
This package also includes the main SELinux configuration file ({{ic|/etc/selinux/config}}) defaulting to refpolicy and permissive SELinux enforcement for testing purposes.<br />
<br />
You should verify that the policy was correctly loaded, that is if the file {{ic|/etc/selinux/refpolicy/policy/policy.24}} has non-zero size. If so and if you have installed {{AUR|selinux-sysvinit}} and other needed packages, you are ready to reboot and make sure that everything works.<br />
<br />
{{Warning| On newer kernels (eg. 3.0) policy in file {{ic|/etc/selinux/refpolicy/policy/policy.24}} has zero bytes size, because it is used new version of policy from file: {{ic|/etc/selinux/refpolicy/policy/policy.26}}}}<br />
<br />
In case the policy was not correctly loaded you can as root use the following command inside of the {{ic|/usr/share/selinux/refpolicy}} directory to do so:<br />
<br />
/bin/ls *.pp | /bin/grep -Ev "base.pp|enableaudit.pp" | /usr/bin/xargs /usr/sbin/semodule -s refpolicy -b base.pp -i<br />
<br />
To manually relabel your filesystem you can as root use:<br />
<br />
/sbin/restorecon -r /<br />
<br />
===Installing refpolicy from a source package===<br />
<br />
Install {{AUR|selinux-refpolicy-src}} from AUR. Edit the file {{ic|/etc/selinux/refpolicy/src/policy/build.conf}} to your liking. <br />
<br />
{{Note|Build configuration file {{ic|build.conf}} is overwritten on every selinux-refpolicy-src package upgrade, so backup your configuration.}}<br />
<br />
To build, install and load policy from source do the following. (For other possibilities consult the README file located in {{ic|/etc/selinux/refpolicy/src/policy/}}.)<br />
<br />
cd /etc/selinux/refpolicy/src/policy<br />
make bare<br />
make conf <br />
make load<br />
<br />
Copy or link the compiled binary policy to {{ic|/etc/policy.bin}} for sysvinit to find and install selinux-sysvinit:<br />
<br />
ln -s /etc/selinux/refpolicy/policy/policy.21 /etc/policy.bin<br />
<br />
At this moment files do not have any context, so you should relabel the whole filesystem, which will take a while:<br />
<br />
make relabel<br />
<br />
Create the main SELinux configuration file ({{ic|/etc/selinux/config}}) according to the example in related section.<br />
<br />
Now you are ready to reboot and make sure that everything works.<br />
<br />
==Post-installation steps==<br />
{{Warning| If you did not install ''selinux-sysvinit'', then you will see SELinux in disabled mode, and {{ic|/selinux}} will not be mounted.}}<br />
<br />
You can check that SELinux is working with {{ic|sestatus}}. You should get something like:<br />
<br />
SELinux status: enabled<br />
SELinuxfs mount: /selinux<br />
Current mode: permissive<br />
Mode from config file: enforcing<br />
Policy version: 24<br />
Policy from config file: refpolicy<br />
<br />
To maintain correct context, you can use ''restorecond'':<br />
<br />
touch /etc/rc.d/restorecond<br />
chmod ugo+x /etc/rc.d/restorecond<br />
<br />
Which should contain:<br />
<br />
#!/bin/sh<br />
restorecond<br />
<br />
{{Note|Do not forget to add {{ic|restorecond}} into your {{ic|DAEMONS}} array in {{ic|/etc/rc.conf}}.}}<br />
<br />
To switch to enforcing mode without reboot, you can use:<br />
<br />
echo 1 >/selinux/enforce<br />
<br />
{{Note|If setting {{ic|SELINUX<nowiki>=</nowiki>enforcing}} in {{ic|/etc/selinux/config}} does not work for you, create {{ic|/etc/rc.d/selinux-enforce}} containing the preceding command similarly as with restorecond daemon.}}<br />
<br />
==Useful tools==<br />
<br />
There are some tools/commands that can greatly help with SELinux. <br />
<br />
;restorecon: Restores the context of a file/directory (or recursively with {{ic|-R}}) based on any policy rules <br />
;rlpkg: Relabels any files belonging to that Gentoo package to their proper security context (if they have one) <br />
;chcon: Change the context on a specific file <br />
;audit2allow: Reads in log messages from the AVC log file and tells you what rules would fix the error. Do not just add these rules without looking at them though, they cannot detect errors in other places (e.g. the application is running in the wrong context in the first place), or sometimes things will generate error messages but may maintain functionality so it would be better to add dontaudit to just ignore the access attempts.<br />
<br />
==References==<br />
*[http://en.wikipedia.org/wiki/Security-Enhanced_Linux Security Enhanced Linux]<br />
*[http://www.gentoo.org/proj/en/hardened/selinux/selinux-handbook.xml Gentoo SELinux Handbook]<br />
*[http://fedoraproject.org/wiki/SELinux Fedora Project's SELinux Wiki]<br />
*[http://www.nsa.gov/research/selinux/index.shtml NSA's Official SELinux Homepage]<br />
*[http://oss.tresys.com/projects/refpolicy Reference Policy Homepage]<br />
*[http://userspace.selinuxproject.org/trac/ SELinux Userspace Homepage]<br />
*[http://oss.tresys.com/projects/setools SETools Homepage]<br />
<br />
== See also ==<br />
* [[AppArmor]] (Similar to SELinux, much easier to configure, less features.)</div>Alligatorhttps://wiki.archlinux.org/index.php?title=SELinux_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=211305SELinux (Русский)2012-06-26T17:24:08Z<p>Alligator: /* Установка необходимых пакетов */</p>
<hr />
<div>[[Category:Security]]<br />
[[Category:Kernel]]<br />
<br />
Security-Enhanced Linux (SELinux) это функция Linux, которая обеспечивает множество политик безопасности, включая США. Обязательные средства управления доступом (MAC, Mandatory Access Controls) стиля министерства обороны, с помощью Linux Security Modules (LSM) в ядре Linux. Это не дистрибутив Linux, а скорее ряд модификаций, которые могут быть применены к Unix-подобным операционным системам, таким как Linux и BSD. Её архитектура стремится оптимизировать объем программного обеспечения, обвиненного в осуществлении политики безопасности, которое является близко выровненное Trusted Computer System Evaluation Criteria (TCSEC, называемый Оранжевой книгой) требование для минимизации достоверной вычислительной базы (TCB) (применимый к классам B3 и A1 оценки), но довольно не связано с наименьшим количеством требования полномочия (B2, B3, A1), как часто требуется. Зародышевые понятия базовый SELinux могут быть прослежены до нескольких более ранних проектов американским Агентством национальной безопасности (NSA). [1]<br />
<br />
Для выполнения SELinux под дистрибутивом Linux требуется: включить SELinux в ядро, инструменты SELinux Userspace и библиотеки, и SELinux Policies (главным образом на основе Reference Policy). Некоторые общие программы Linux должны также исправляться/компилироваться с функциями SELinux.<br />
<br />
==Обязательные требования==<br />
<br />
Поддерживаются только файловые системы ext2, ext3, ext4, JFS и XFS.<br />
<br />
{{Note| This is probably not needed anymore:}}<br />
<br />
Пользователи XFS должны использовать 512 байтов inodes (значение по умолчанию 256). Использование SELinux расширяло атрибуты для того, чтобы сохранить метки безопасности в файлах. XFS хранит это в inode, и если inode слишком маленький, должен использоваться дополнительный блок, который тратит впустую много пространства и подвергается потерям производительности.<br />
<br />
# mkfs.xfs -i size=512 /dev/sda1 (for example)<br />
<br />
==Установка необходимых пакетов==<br />
<br />
Должны быть установлены по крайней мере {{AUR|linux-selinux}}, {{AUR|selinux-pam}}, {{AUR|selinux-usr-policycoreutils}} и {{AUR|selinux-refpolicy-src}} из [[AUR]]. Рекомендуется установить все пакеты, требуемые SELinux.<br />
<br />
При установке из [[AUR]], можете использовать [[AUR helper (Русский)]] или загружать tarballs из AUR вручную и собирать с {{ic|makepkg}}. При замене пакетов pam и coreutils будьте особо внимательны, поскольку они жизненно важны для системы. Приготовьте Live CD или Live USB на случай, если придётся переустановить систему.<br />
<br />
{{Warning| Do '''not''' remove {{Pkg|pam}} via sudo, as PAM is what takes care of authentication, and you just removed it. Instead first ''su'' to root and then do:<br />
pacman -Rdd pam<br />
pacman -U selinux-pam<br />
Doing {{ic|pacman -Rdd coreutils}}, {{ic|pacman -U selinux-coreutils}} may also cause you troubles, so maybe the best way is to install the {{ic|selinux-*}} packages from a live CD chroot to your system.}}<br />
<br />
{{Warning| Do '''not''' install {{AUR|selinux-sysvinit}} package unless everything is set up, as you may end up with an unbootable system. Or, do not reboot unless you have everything set up.}}<br />
<br />
===Package description===<br />
<br />
All SELinux related packages belong to the ''selinux'' group. Group ''selinux-system-utilities'' is used for modified packages from the {{ic|[core]}} repository. Group ''selinux-userspace'' contains packages from SELinux Userspace project. Security policies belong to ''selinux-policies'' group. Other packages are in ''selinux-extras'' group.<br />
<br />
====SELinux aware system utils====<br />
<br />
;{{AUR|linux-selinux}}<br />
:SELinux enabled kernel. Compiling custom modules like virtualbox works.<br />
<br />
;{{AUR|selinux-coreutils}}<br />
:Modified coreutils package compiled with SELinux support enabled.<br />
<br />
;{{AUR|selinux-flex}}<br />
:Flex version needed only to build checkpolicy. Current flex has error causing failure in checkmodule command.<br />
<br />
;{{AUR|selinux-pam}}<br />
:PAM package with pam_selinux.so.<br />
<br />
;{{AUR|selinux-sysvinit}}<br />
:Sysvinit which loads policy at startup. Be careful; it fails if SELinux policy cannot be loaded!<br />
<br />
;{{AUR|selinux-util-linux}}<br />
:Modified util-linux package compiled with SELinux support enabled.<br />
<br />
;{{AUR|selinux-udev}} made obsolete by {{AUR|selinux-sysvinit}}<br />
:Modified [[udev]] package compiled with SELinux support enabled for labeling of files in {{ic|/dev}} to work correctly. The udev functionality is now provided by selinux-sysvinit-tools [http://www.archlinux.org/news/systemd-tools-replaces-udev/] which is part of the {{AUR|selinux-sysvinit}} splitpackage.<br />
<br />
;{{AUR|selinux-findutils}}<br />
:Patched findutils package compiled with SELinux support to make searching of files with specified security context possible.<br />
<br />
;{{AUR|selinux-sudo}}<br />
:Modified [[sudo]] package compiled with SELinux support which sets security context correctly.<br />
<br />
;{{AUR|selinux-procps}}<br />
:Procps package with SELinux patch based on some Fedora patches.<br />
<br />
;{{AUR|selinux-psmisc}}<br />
:Psmisc package compiled with SELinux support; for example, it adds the {{ic|-Z}} option to {{ic|killall}}.<br />
<br />
;{{AUR|selinux-shadow}}<br />
:Shadow package compiled with SELinux support; contains a modified {{ic|/etc/pam.d/login}} file to set correct security context for user after login.<br />
<br />
;{{AUR|selinux-cronie}}<br />
:Fedora fork of Vixie cron with SELinux enabled.<br />
<br />
;{{AUR|selinux-logrotate}}<br />
:Logrotate package compiled with SELinux support.<br />
<br />
;{{AUR|selinux-openssh}}<br />
:OpenSSH package compiled with SELinux support to set security context for user sessions.<br />
<br />
====SELinux userspace====<br />
;{{AUR|selinux-usr-checkpolicy}}<br />
:Tools to build SELinux policy<br />
<br />
;{{AUR|selinux-usr-libselinux}}<br />
:Library for security-aware applications. Python bindings needed for ''semanage'' and ''setools'' now included.<br />
<br />
;{{AUR|selinux-usr-libsemanage}}<br />
:Library for policy management. Python bindings needed for ''semanage'' and ''setools'' now included.<br />
<br />
;{{AUR|selinux-usr-libsepol}}<br />
:Library for binary policy manipulation.<br />
<br />
;{{AUR|selinux-usr-policycoreutils}}<br />
:SELinux core utils such as newrole, setfiles, etc.<br />
<br />
;{{AUR|selinux-usr-sepolgen}}<br />
:A Python library for parsing and modifying policy source.<br />
<br />
====SELinux policy====<br />
<br />
;{{AUR|selinux-refpolicy}}<br />
:Precompiled modular-otherways-vanilla Reference policy with headers and documentation but without sources.<br />
<br />
;{{AUR|selinux-refpolicy-src}}<br />
:Reference policy sources<br />
<br />
;{{AUR|selinux-refpolicy-arch}}<br />
:Precompiled modular Reference policy with headers and documentation but without sources. Development Arch Linux Refpolicy patch included, but for now [February 2011] it only fixes some issues with {{ic|/etc/rc.d/*}} labeling.<br />
<br />
====Other SELinux tools====<br />
<br />
;{{AUR|selinux-setools}}<br />
:CLI and GUI tools to manage SELinux<br />
<br />
;{{AUR|audit}}<br />
:User space utilities for storing and searching the audit records generated by the audit subsystem in the Linux kernel. SELinux (AVC) will log all denials using audit. Very useful in troubleshooting SELinux. Also audit2allow use log from this program.<br />
<br />
{{Note|If using proprietary drivers, such as [[NVIDIA]] graphics drivers, you may need to [[NVIDIA#Alternate install: custom kernel|rebuild them]] for custom kernels.}}<br />
<br />
==Configuration==<br />
<br />
After the installation of needed packages, you have to set up a few things so that SELinux can be used.<br />
<br />
===Changing boot loader configuration===<br />
<br />
You have to manually change [[GRUB]]'s {{ic|/boot/grub/menu.lst}} so that the custom kernel is booted, e.g.:<br />
<br />
# (1) Arch Linux<br />
title Arch Linux (SELinux)<br />
root (hd0,4)<br />
kernel /boot/'''vmlinuz-linux-selinux''' root=/dev/sda5 ro vga=775<br />
initrd /boot/'''initramfs-linux-selinux.img'''<br />
<br />
===Mounting selinuxfs===<br />
<br />
Add following to {{ic|/etc/fstab}}:<br />
<br />
none /selinux selinuxfs noauto 0 0<br />
<br />
Do not forget to create the mount point:<br />
<br />
mkdir /selinux<br />
<br />
===Main SELinux configuration file===<br />
Main SELinux configuration file ({{ic|/etc/selinux/config}}) is part of the {{AUR|selinux-refpolicy}} package currently in the [[Arch User Repository|AUR]]. It has default contents as follows:<br />
<br />
# This file controls the state of SELinux on the system.<br />
# SELINUX= can take one of these three values:<br />
# enforcing - SELinux security policy is enforced.<br />
# permissive - SELinux prints warnings <br />
# instead of enforcing.<br />
# disabled - No SELinux policy is loaded.<br />
SELINUX=permissive<br />
# SELINUXTYPE= takes the name of SELinux policy to<br />
# be used. Current options are:<br />
# refpolicy (vanilla reference policy)<br />
# refpolicy-arch (reference policy with <br />
# Arch Linux patch)<br />
SELINUXTYPE=refpolicy<br />
<br />
{{Note|Option {{ic|SELINUX<nowiki>=</nowiki>permissive}} is suitable only for testing. It gives no security. When everything is set up and working, you should change it to {{ic|SELINUX<nowiki>=</nowiki>enforcing}}. Option {{ic|SELINUXTYPE<nowiki>=</nowiki>refpolicy}} specifies the name of used policy. Change it if you choose another name for your policy. If you plan to compile policy from source, you have to create the file yourself.}}<br />
<br />
===Set up PAM===<br />
<br />
Correctly set-up PAM is important to get a proper security context after login. If you installed {{AUR|selinux-shadow}} from the [[Arch User Repository|AUR]], there should be the following lines in {{ic|/etc/pam.d/login}}:<br />
<br />
# pam_selinux.so close should be the first session rule<br />
session required pam_selinux.so close<br />
# pam_selinux.so open should only be followed by sessions to be executed in the user context<br />
session required pam_selinux.so open<br />
<br />
If not, add them to the file. Similarly for logging in via SSH in {{ic|/etc/pam.d/sshd}}, which is part of {{AUR|selinux-openssh}} package.<br />
<br />
If you want to use SELinux with GUI, you should add the aforementioned lines to other files such as {{ic|/etc/pam.d/kde}}, {{ic|/etc/pam.d/kde-np}}, ... depending on your login manager.<br />
<br />
{{Note|Running SELinux with GUI applications in Arch Linux is not much supported at the time being.}}<br />
<br />
==Reference policy==<br />
<br />
There are currently two possible ways of installing reference policy: From a pre-compiled package ({{AUR|selinux-refpolicy}}) or from a source package ({{AUR|selinux-refpolicy-src}}).<br />
<br />
{{Note| It is possible to have both the source and the binary package installed. If you plan to build from source in that case, you should probably change the name of policy in {{ic|build.conf}} to avoid overwriting of selinux-refpolicy package files.}}<br />
<br />
===Installing a precompiled refpolicy===<br />
<br />
Install {{AUR|selinux-refpolicy}} from AUR. This is a modular-otherways-vanilla refpolicy. This package includes policy headers (you can therefore compile your own modules), policy documentation and an install script which will load the policy for you and relabel your filesystem (which will likely take some time). It does not include the sources though.<br />
<br />
This package also includes the main SELinux configuration file ({{ic|/etc/selinux/config}}) defaulting to refpolicy and permissive SELinux enforcement for testing purposes.<br />
<br />
You should verify that the policy was correctly loaded, that is if the file {{ic|/etc/selinux/refpolicy/policy/policy.24}} has non-zero size. If so and if you have installed {{AUR|selinux-sysvinit}} and other needed packages, you are ready to reboot and make sure that everything works.<br />
<br />
{{Warning| On newer kernels (eg. 3.0) policy in file {{ic|/etc/selinux/refpolicy/policy/policy.24}} has zero bytes size, because it is used new version of policy from file: {{ic|/etc/selinux/refpolicy/policy/policy.26}}}}<br />
<br />
In case the policy was not correctly loaded you can as root use the following command inside of the {{ic|/usr/share/selinux/refpolicy}} directory to do so:<br />
<br />
/bin/ls *.pp | /bin/grep -Ev "base.pp|enableaudit.pp" | /usr/bin/xargs /usr/sbin/semodule -s refpolicy -b base.pp -i<br />
<br />
To manually relabel your filesystem you can as root use:<br />
<br />
/sbin/restorecon -r /<br />
<br />
===Installing refpolicy from a source package===<br />
<br />
Install {{AUR|selinux-refpolicy-src}} from AUR. Edit the file {{ic|/etc/selinux/refpolicy/src/policy/build.conf}} to your liking. <br />
<br />
{{Note|Build configuration file {{ic|build.conf}} is overwritten on every selinux-refpolicy-src package upgrade, so backup your configuration.}}<br />
<br />
To build, install and load policy from source do the following. (For other possibilities consult the README file located in {{ic|/etc/selinux/refpolicy/src/policy/}}.)<br />
<br />
cd /etc/selinux/refpolicy/src/policy<br />
make bare<br />
make conf <br />
make load<br />
<br />
Copy or link the compiled binary policy to {{ic|/etc/policy.bin}} for sysvinit to find and install selinux-sysvinit:<br />
<br />
ln -s /etc/selinux/refpolicy/policy/policy.21 /etc/policy.bin<br />
<br />
At this moment files do not have any context, so you should relabel the whole filesystem, which will take a while:<br />
<br />
make relabel<br />
<br />
Create the main SELinux configuration file ({{ic|/etc/selinux/config}}) according to the example in related section.<br />
<br />
Now you are ready to reboot and make sure that everything works.<br />
<br />
==Post-installation steps==<br />
{{Warning| If you did not install ''selinux-sysvinit'', then you will see SELinux in disabled mode, and {{ic|/selinux}} will not be mounted.}}<br />
<br />
You can check that SELinux is working with {{ic|sestatus}}. You should get something like:<br />
<br />
SELinux status: enabled<br />
SELinuxfs mount: /selinux<br />
Current mode: permissive<br />
Mode from config file: enforcing<br />
Policy version: 24<br />
Policy from config file: refpolicy<br />
<br />
To maintain correct context, you can use ''restorecond'':<br />
<br />
touch /etc/rc.d/restorecond<br />
chmod ugo+x /etc/rc.d/restorecond<br />
<br />
Which should contain:<br />
<br />
#!/bin/sh<br />
restorecond<br />
<br />
{{Note|Do not forget to add {{ic|restorecond}} into your {{ic|DAEMONS}} array in {{ic|/etc/rc.conf}}.}}<br />
<br />
To switch to enforcing mode without reboot, you can use:<br />
<br />
echo 1 >/selinux/enforce<br />
<br />
{{Note|If setting {{ic|SELINUX<nowiki>=</nowiki>enforcing}} in {{ic|/etc/selinux/config}} does not work for you, create {{ic|/etc/rc.d/selinux-enforce}} containing the preceding command similarly as with restorecond daemon.}}<br />
<br />
==Useful tools==<br />
<br />
There are some tools/commands that can greatly help with SELinux. <br />
<br />
;restorecon: Restores the context of a file/directory (or recursively with {{ic|-R}}) based on any policy rules <br />
;rlpkg: Relabels any files belonging to that Gentoo package to their proper security context (if they have one) <br />
;chcon: Change the context on a specific file <br />
;audit2allow: Reads in log messages from the AVC log file and tells you what rules would fix the error. Do not just add these rules without looking at them though, they cannot detect errors in other places (e.g. the application is running in the wrong context in the first place), or sometimes things will generate error messages but may maintain functionality so it would be better to add dontaudit to just ignore the access attempts.<br />
<br />
==References==<br />
*[http://en.wikipedia.org/wiki/Security-Enhanced_Linux Security Enhanced Linux]<br />
*[http://www.gentoo.org/proj/en/hardened/selinux/selinux-handbook.xml Gentoo SELinux Handbook]<br />
*[http://fedoraproject.org/wiki/SELinux Fedora Project's SELinux Wiki]<br />
*[http://www.nsa.gov/research/selinux/index.shtml NSA's Official SELinux Homepage]<br />
*[http://oss.tresys.com/projects/refpolicy Reference Policy Homepage]<br />
*[http://userspace.selinuxproject.org/trac/ SELinux Userspace Homepage]<br />
*[http://oss.tresys.com/projects/setools SETools Homepage]<br />
<br />
== See also ==<br />
* [[AppArmor]] (Similar to SELinux, much easier to configure, less features.)</div>Alligatorhttps://wiki.archlinux.org/index.php?title=SELinux_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=211304SELinux (Русский)2012-06-26T17:21:06Z<p>Alligator: /* Установка необходимых пакетов */</p>
<hr />
<div>[[Category:Security]]<br />
[[Category:Kernel]]<br />
<br />
Security-Enhanced Linux (SELinux) это функция Linux, которая обеспечивает множество политик безопасности, включая США. Обязательные средства управления доступом (MAC, Mandatory Access Controls) стиля министерства обороны, с помощью Linux Security Modules (LSM) в ядре Linux. Это не дистрибутив Linux, а скорее ряд модификаций, которые могут быть применены к Unix-подобным операционным системам, таким как Linux и BSD. Её архитектура стремится оптимизировать объем программного обеспечения, обвиненного в осуществлении политики безопасности, которое является близко выровненное Trusted Computer System Evaluation Criteria (TCSEC, называемый Оранжевой книгой) требование для минимизации достоверной вычислительной базы (TCB) (применимый к классам B3 и A1 оценки), но довольно не связано с наименьшим количеством требования полномочия (B2, B3, A1), как часто требуется. Зародышевые понятия базовый SELinux могут быть прослежены до нескольких более ранних проектов американским Агентством национальной безопасности (NSA). [1]<br />
<br />
Для выполнения SELinux под дистрибутивом Linux требуется: включить SELinux в ядро, инструменты SELinux Userspace и библиотеки, и SELinux Policies (главным образом на основе Reference Policy). Некоторые общие программы Linux должны также исправляться/компилироваться с функциями SELinux.<br />
<br />
==Обязательные требования==<br />
<br />
Поддерживаются только файловые системы ext2, ext3, ext4, JFS и XFS.<br />
<br />
{{Note| This is probably not needed anymore:}}<br />
<br />
Пользователи XFS должны использовать 512 байтов inodes (значение по умолчанию 256). Использование SELinux расширяло атрибуты для того, чтобы сохранить метки безопасности в файлах. XFS хранит это в inode, и если inode слишком маленький, должен использоваться дополнительный блок, который тратит впустую много пространства и подвергается потерям производительности.<br />
<br />
# mkfs.xfs -i size=512 /dev/sda1 (for example)<br />
<br />
==Установка необходимых пакетов==<br />
<br />
Должны быть установлены по крайней мере {{AUR|linux-selinux}}, {{AUR|selinux-pam}}, {{AUR|selinux-usr-policycoreutils}} и {{AUR|selinux-refpolicy-src}} из [[AUR]]. Рекомендуется установить все пакеты, требуемые SELinux.<br />
<br />
При установке из [[AUR]], можете использовать [[AUR helper]] или загружать tarballs из AUR вручную и собирать с {{ic|makepkg}}. При замене пакетов pam и coreutils будьте особо внимательны, поскольку они жизненно важны для системы. Приготовьте Live CD или Live USB на случай, если придётся переустановить систему.<br />
<br />
{{Warning| Do '''not''' remove {{Pkg|pam}} via sudo, as PAM is what takes care of authentication, and you just removed it. Instead first ''su'' to root and then do:<br />
pacman -Rdd pam<br />
pacman -U selinux-pam<br />
Doing {{ic|pacman -Rdd coreutils}}, {{ic|pacman -U selinux-coreutils}} may also cause you troubles, so maybe the best way is to install the {{ic|selinux-*}} packages from a live CD chroot to your system.}}<br />
<br />
{{Warning| Do '''not''' install {{AUR|selinux-sysvinit}} package unless everything is set up, as you may end up with an unbootable system. Or, do not reboot unless you have everything set up.}}<br />
<br />
===Package description===<br />
<br />
All SELinux related packages belong to the ''selinux'' group. Group ''selinux-system-utilities'' is used for modified packages from the {{ic|[core]}} repository. Group ''selinux-userspace'' contains packages from SELinux Userspace project. Security policies belong to ''selinux-policies'' group. Other packages are in ''selinux-extras'' group.<br />
<br />
====SELinux aware system utils====<br />
<br />
;{{AUR|linux-selinux}}<br />
:SELinux enabled kernel. Compiling custom modules like virtualbox works.<br />
<br />
;{{AUR|selinux-coreutils}}<br />
:Modified coreutils package compiled with SELinux support enabled.<br />
<br />
;{{AUR|selinux-flex}}<br />
:Flex version needed only to build checkpolicy. Current flex has error causing failure in checkmodule command.<br />
<br />
;{{AUR|selinux-pam}}<br />
:PAM package with pam_selinux.so.<br />
<br />
;{{AUR|selinux-sysvinit}}<br />
:Sysvinit which loads policy at startup. Be careful; it fails if SELinux policy cannot be loaded!<br />
<br />
;{{AUR|selinux-util-linux}}<br />
:Modified util-linux package compiled with SELinux support enabled.<br />
<br />
;{{AUR|selinux-udev}} made obsolete by {{AUR|selinux-sysvinit}}<br />
:Modified [[udev]] package compiled with SELinux support enabled for labeling of files in {{ic|/dev}} to work correctly. The udev functionality is now provided by selinux-sysvinit-tools [http://www.archlinux.org/news/systemd-tools-replaces-udev/] which is part of the {{AUR|selinux-sysvinit}} splitpackage.<br />
<br />
;{{AUR|selinux-findutils}}<br />
:Patched findutils package compiled with SELinux support to make searching of files with specified security context possible.<br />
<br />
;{{AUR|selinux-sudo}}<br />
:Modified [[sudo]] package compiled with SELinux support which sets security context correctly.<br />
<br />
;{{AUR|selinux-procps}}<br />
:Procps package with SELinux patch based on some Fedora patches.<br />
<br />
;{{AUR|selinux-psmisc}}<br />
:Psmisc package compiled with SELinux support; for example, it adds the {{ic|-Z}} option to {{ic|killall}}.<br />
<br />
;{{AUR|selinux-shadow}}<br />
:Shadow package compiled with SELinux support; contains a modified {{ic|/etc/pam.d/login}} file to set correct security context for user after login.<br />
<br />
;{{AUR|selinux-cronie}}<br />
:Fedora fork of Vixie cron with SELinux enabled.<br />
<br />
;{{AUR|selinux-logrotate}}<br />
:Logrotate package compiled with SELinux support.<br />
<br />
;{{AUR|selinux-openssh}}<br />
:OpenSSH package compiled with SELinux support to set security context for user sessions.<br />
<br />
====SELinux userspace====<br />
;{{AUR|selinux-usr-checkpolicy}}<br />
:Tools to build SELinux policy<br />
<br />
;{{AUR|selinux-usr-libselinux}}<br />
:Library for security-aware applications. Python bindings needed for ''semanage'' and ''setools'' now included.<br />
<br />
;{{AUR|selinux-usr-libsemanage}}<br />
:Library for policy management. Python bindings needed for ''semanage'' and ''setools'' now included.<br />
<br />
;{{AUR|selinux-usr-libsepol}}<br />
:Library for binary policy manipulation.<br />
<br />
;{{AUR|selinux-usr-policycoreutils}}<br />
:SELinux core utils such as newrole, setfiles, etc.<br />
<br />
;{{AUR|selinux-usr-sepolgen}}<br />
:A Python library for parsing and modifying policy source.<br />
<br />
====SELinux policy====<br />
<br />
;{{AUR|selinux-refpolicy}}<br />
:Precompiled modular-otherways-vanilla Reference policy with headers and documentation but without sources.<br />
<br />
;{{AUR|selinux-refpolicy-src}}<br />
:Reference policy sources<br />
<br />
;{{AUR|selinux-refpolicy-arch}}<br />
:Precompiled modular Reference policy with headers and documentation but without sources. Development Arch Linux Refpolicy patch included, but for now [February 2011] it only fixes some issues with {{ic|/etc/rc.d/*}} labeling.<br />
<br />
====Other SELinux tools====<br />
<br />
;{{AUR|selinux-setools}}<br />
:CLI and GUI tools to manage SELinux<br />
<br />
;{{AUR|audit}}<br />
:User space utilities for storing and searching the audit records generated by the audit subsystem in the Linux kernel. SELinux (AVC) will log all denials using audit. Very useful in troubleshooting SELinux. Also audit2allow use log from this program.<br />
<br />
{{Note|If using proprietary drivers, such as [[NVIDIA]] graphics drivers, you may need to [[NVIDIA#Alternate install: custom kernel|rebuild them]] for custom kernels.}}<br />
<br />
==Configuration==<br />
<br />
After the installation of needed packages, you have to set up a few things so that SELinux can be used.<br />
<br />
===Changing boot loader configuration===<br />
<br />
You have to manually change [[GRUB]]'s {{ic|/boot/grub/menu.lst}} so that the custom kernel is booted, e.g.:<br />
<br />
# (1) Arch Linux<br />
title Arch Linux (SELinux)<br />
root (hd0,4)<br />
kernel /boot/'''vmlinuz-linux-selinux''' root=/dev/sda5 ro vga=775<br />
initrd /boot/'''initramfs-linux-selinux.img'''<br />
<br />
===Mounting selinuxfs===<br />
<br />
Add following to {{ic|/etc/fstab}}:<br />
<br />
none /selinux selinuxfs noauto 0 0<br />
<br />
Do not forget to create the mount point:<br />
<br />
mkdir /selinux<br />
<br />
===Main SELinux configuration file===<br />
Main SELinux configuration file ({{ic|/etc/selinux/config}}) is part of the {{AUR|selinux-refpolicy}} package currently in the [[Arch User Repository|AUR]]. It has default contents as follows:<br />
<br />
# This file controls the state of SELinux on the system.<br />
# SELINUX= can take one of these three values:<br />
# enforcing - SELinux security policy is enforced.<br />
# permissive - SELinux prints warnings <br />
# instead of enforcing.<br />
# disabled - No SELinux policy is loaded.<br />
SELINUX=permissive<br />
# SELINUXTYPE= takes the name of SELinux policy to<br />
# be used. Current options are:<br />
# refpolicy (vanilla reference policy)<br />
# refpolicy-arch (reference policy with <br />
# Arch Linux patch)<br />
SELINUXTYPE=refpolicy<br />
<br />
{{Note|Option {{ic|SELINUX<nowiki>=</nowiki>permissive}} is suitable only for testing. It gives no security. When everything is set up and working, you should change it to {{ic|SELINUX<nowiki>=</nowiki>enforcing}}. Option {{ic|SELINUXTYPE<nowiki>=</nowiki>refpolicy}} specifies the name of used policy. Change it if you choose another name for your policy. If you plan to compile policy from source, you have to create the file yourself.}}<br />
<br />
===Set up PAM===<br />
<br />
Correctly set-up PAM is important to get a proper security context after login. If you installed {{AUR|selinux-shadow}} from the [[Arch User Repository|AUR]], there should be the following lines in {{ic|/etc/pam.d/login}}:<br />
<br />
# pam_selinux.so close should be the first session rule<br />
session required pam_selinux.so close<br />
# pam_selinux.so open should only be followed by sessions to be executed in the user context<br />
session required pam_selinux.so open<br />
<br />
If not, add them to the file. Similarly for logging in via SSH in {{ic|/etc/pam.d/sshd}}, which is part of {{AUR|selinux-openssh}} package.<br />
<br />
If you want to use SELinux with GUI, you should add the aforementioned lines to other files such as {{ic|/etc/pam.d/kde}}, {{ic|/etc/pam.d/kde-np}}, ... depending on your login manager.<br />
<br />
{{Note|Running SELinux with GUI applications in Arch Linux is not much supported at the time being.}}<br />
<br />
==Reference policy==<br />
<br />
There are currently two possible ways of installing reference policy: From a pre-compiled package ({{AUR|selinux-refpolicy}}) or from a source package ({{AUR|selinux-refpolicy-src}}).<br />
<br />
{{Note| It is possible to have both the source and the binary package installed. If you plan to build from source in that case, you should probably change the name of policy in {{ic|build.conf}} to avoid overwriting of selinux-refpolicy package files.}}<br />
<br />
===Installing a precompiled refpolicy===<br />
<br />
Install {{AUR|selinux-refpolicy}} from AUR. This is a modular-otherways-vanilla refpolicy. This package includes policy headers (you can therefore compile your own modules), policy documentation and an install script which will load the policy for you and relabel your filesystem (which will likely take some time). It does not include the sources though.<br />
<br />
This package also includes the main SELinux configuration file ({{ic|/etc/selinux/config}}) defaulting to refpolicy and permissive SELinux enforcement for testing purposes.<br />
<br />
You should verify that the policy was correctly loaded, that is if the file {{ic|/etc/selinux/refpolicy/policy/policy.24}} has non-zero size. If so and if you have installed {{AUR|selinux-sysvinit}} and other needed packages, you are ready to reboot and make sure that everything works.<br />
<br />
{{Warning| On newer kernels (eg. 3.0) policy in file {{ic|/etc/selinux/refpolicy/policy/policy.24}} has zero bytes size, because it is used new version of policy from file: {{ic|/etc/selinux/refpolicy/policy/policy.26}}}}<br />
<br />
In case the policy was not correctly loaded you can as root use the following command inside of the {{ic|/usr/share/selinux/refpolicy}} directory to do so:<br />
<br />
/bin/ls *.pp | /bin/grep -Ev "base.pp|enableaudit.pp" | /usr/bin/xargs /usr/sbin/semodule -s refpolicy -b base.pp -i<br />
<br />
To manually relabel your filesystem you can as root use:<br />
<br />
/sbin/restorecon -r /<br />
<br />
===Installing refpolicy from a source package===<br />
<br />
Install {{AUR|selinux-refpolicy-src}} from AUR. Edit the file {{ic|/etc/selinux/refpolicy/src/policy/build.conf}} to your liking. <br />
<br />
{{Note|Build configuration file {{ic|build.conf}} is overwritten on every selinux-refpolicy-src package upgrade, so backup your configuration.}}<br />
<br />
To build, install and load policy from source do the following. (For other possibilities consult the README file located in {{ic|/etc/selinux/refpolicy/src/policy/}}.)<br />
<br />
cd /etc/selinux/refpolicy/src/policy<br />
make bare<br />
make conf <br />
make load<br />
<br />
Copy or link the compiled binary policy to {{ic|/etc/policy.bin}} for sysvinit to find and install selinux-sysvinit:<br />
<br />
ln -s /etc/selinux/refpolicy/policy/policy.21 /etc/policy.bin<br />
<br />
At this moment files do not have any context, so you should relabel the whole filesystem, which will take a while:<br />
<br />
make relabel<br />
<br />
Create the main SELinux configuration file ({{ic|/etc/selinux/config}}) according to the example in related section.<br />
<br />
Now you are ready to reboot and make sure that everything works.<br />
<br />
==Post-installation steps==<br />
{{Warning| If you did not install ''selinux-sysvinit'', then you will see SELinux in disabled mode, and {{ic|/selinux}} will not be mounted.}}<br />
<br />
You can check that SELinux is working with {{ic|sestatus}}. You should get something like:<br />
<br />
SELinux status: enabled<br />
SELinuxfs mount: /selinux<br />
Current mode: permissive<br />
Mode from config file: enforcing<br />
Policy version: 24<br />
Policy from config file: refpolicy<br />
<br />
To maintain correct context, you can use ''restorecond'':<br />
<br />
touch /etc/rc.d/restorecond<br />
chmod ugo+x /etc/rc.d/restorecond<br />
<br />
Which should contain:<br />
<br />
#!/bin/sh<br />
restorecond<br />
<br />
{{Note|Do not forget to add {{ic|restorecond}} into your {{ic|DAEMONS}} array in {{ic|/etc/rc.conf}}.}}<br />
<br />
To switch to enforcing mode without reboot, you can use:<br />
<br />
echo 1 >/selinux/enforce<br />
<br />
{{Note|If setting {{ic|SELINUX<nowiki>=</nowiki>enforcing}} in {{ic|/etc/selinux/config}} does not work for you, create {{ic|/etc/rc.d/selinux-enforce}} containing the preceding command similarly as with restorecond daemon.}}<br />
<br />
==Useful tools==<br />
<br />
There are some tools/commands that can greatly help with SELinux. <br />
<br />
;restorecon: Restores the context of a file/directory (or recursively with {{ic|-R}}) based on any policy rules <br />
;rlpkg: Relabels any files belonging to that Gentoo package to their proper security context (if they have one) <br />
;chcon: Change the context on a specific file <br />
;audit2allow: Reads in log messages from the AVC log file and tells you what rules would fix the error. Do not just add these rules without looking at them though, they cannot detect errors in other places (e.g. the application is running in the wrong context in the first place), or sometimes things will generate error messages but may maintain functionality so it would be better to add dontaudit to just ignore the access attempts.<br />
<br />
==References==<br />
*[http://en.wikipedia.org/wiki/Security-Enhanced_Linux Security Enhanced Linux]<br />
*[http://www.gentoo.org/proj/en/hardened/selinux/selinux-handbook.xml Gentoo SELinux Handbook]<br />
*[http://fedoraproject.org/wiki/SELinux Fedora Project's SELinux Wiki]<br />
*[http://www.nsa.gov/research/selinux/index.shtml NSA's Official SELinux Homepage]<br />
*[http://oss.tresys.com/projects/refpolicy Reference Policy Homepage]<br />
*[http://userspace.selinuxproject.org/trac/ SELinux Userspace Homepage]<br />
*[http://oss.tresys.com/projects/setools SETools Homepage]<br />
<br />
== See also ==<br />
* [[AppArmor]] (Similar to SELinux, much easier to configure, less features.)</div>Alligatorhttps://wiki.archlinux.org/index.php?title=SELinux_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=211303SELinux (Русский)2012-06-26T17:19:50Z<p>Alligator: /* Установка необходимых пакетов */</p>
<hr />
<div>[[Category:Security]]<br />
[[Category:Kernel]]<br />
<br />
Security-Enhanced Linux (SELinux) это функция Linux, которая обеспечивает множество политик безопасности, включая США. Обязательные средства управления доступом (MAC, Mandatory Access Controls) стиля министерства обороны, с помощью Linux Security Modules (LSM) в ядре Linux. Это не дистрибутив Linux, а скорее ряд модификаций, которые могут быть применены к Unix-подобным операционным системам, таким как Linux и BSD. Её архитектура стремится оптимизировать объем программного обеспечения, обвиненного в осуществлении политики безопасности, которое является близко выровненное Trusted Computer System Evaluation Criteria (TCSEC, называемый Оранжевой книгой) требование для минимизации достоверной вычислительной базы (TCB) (применимый к классам B3 и A1 оценки), но довольно не связано с наименьшим количеством требования полномочия (B2, B3, A1), как часто требуется. Зародышевые понятия базовый SELinux могут быть прослежены до нескольких более ранних проектов американским Агентством национальной безопасности (NSA). [1]<br />
<br />
Для выполнения SELinux под дистрибутивом Linux требуется: включить SELinux в ядро, инструменты SELinux Userspace и библиотеки, и SELinux Policies (главным образом на основе Reference Policy). Некоторые общие программы Linux должны также исправляться/компилироваться с функциями SELinux.<br />
<br />
==Обязательные требования==<br />
<br />
Поддерживаются только файловые системы ext2, ext3, ext4, JFS и XFS.<br />
<br />
{{Note| This is probably not needed anymore:}}<br />
<br />
Пользователи XFS должны использовать 512 байтов inodes (значение по умолчанию 256). Использование SELinux расширяло атрибуты для того, чтобы сохранить метки безопасности в файлах. XFS хранит это в inode, и если inode слишком маленький, должен использоваться дополнительный блок, который тратит впустую много пространства и подвергается потерям производительности.<br />
<br />
# mkfs.xfs -i size=512 /dev/sda1 (for example)<br />
<br />
==Установка необходимых пакетов==<br />
<br />
Должны быть установлены по крайней мере {{AUR|linux-selinux}}, {{AUR|selinux-pam}}, {{AUR|selinux-usr-policycoreutils}} и {{AUR|selinux-refpolicy-src}} из [[AUR]]. Рекомендуется установить все пакеты, требуемые SELinux.<br />
<br />
При установке из [[AUR]], можете использовать [[помощник AUR]] или загружать tarballs из AUR вручную и собирать с {{ic|makepkg}}. При замене пакетов pam и coreutils будьте особо внимательны, поскольку они жизненно важны для системы. Приготовьте Live CD или Live USB на случай, если придётся переустановить систему.<br />
<br />
{{Warning| Do '''not''' remove {{Pkg|pam}} via sudo, as PAM is what takes care of authentication, and you just removed it. Instead first ''su'' to root and then do:<br />
pacman -Rdd pam<br />
pacman -U selinux-pam<br />
Doing {{ic|pacman -Rdd coreutils}}, {{ic|pacman -U selinux-coreutils}} may also cause you troubles, so maybe the best way is to install the {{ic|selinux-*}} packages from a live CD chroot to your system.}}<br />
<br />
{{Warning| Do '''not''' install {{AUR|selinux-sysvinit}} package unless everything is set up, as you may end up with an unbootable system. Or, do not reboot unless you have everything set up.}}<br />
<br />
===Package description===<br />
<br />
All SELinux related packages belong to the ''selinux'' group. Group ''selinux-system-utilities'' is used for modified packages from the {{ic|[core]}} repository. Group ''selinux-userspace'' contains packages from SELinux Userspace project. Security policies belong to ''selinux-policies'' group. Other packages are in ''selinux-extras'' group.<br />
<br />
====SELinux aware system utils====<br />
<br />
;{{AUR|linux-selinux}}<br />
:SELinux enabled kernel. Compiling custom modules like virtualbox works.<br />
<br />
;{{AUR|selinux-coreutils}}<br />
:Modified coreutils package compiled with SELinux support enabled.<br />
<br />
;{{AUR|selinux-flex}}<br />
:Flex version needed only to build checkpolicy. Current flex has error causing failure in checkmodule command.<br />
<br />
;{{AUR|selinux-pam}}<br />
:PAM package with pam_selinux.so.<br />
<br />
;{{AUR|selinux-sysvinit}}<br />
:Sysvinit which loads policy at startup. Be careful; it fails if SELinux policy cannot be loaded!<br />
<br />
;{{AUR|selinux-util-linux}}<br />
:Modified util-linux package compiled with SELinux support enabled.<br />
<br />
;{{AUR|selinux-udev}} made obsolete by {{AUR|selinux-sysvinit}}<br />
:Modified [[udev]] package compiled with SELinux support enabled for labeling of files in {{ic|/dev}} to work correctly. The udev functionality is now provided by selinux-sysvinit-tools [http://www.archlinux.org/news/systemd-tools-replaces-udev/] which is part of the {{AUR|selinux-sysvinit}} splitpackage.<br />
<br />
;{{AUR|selinux-findutils}}<br />
:Patched findutils package compiled with SELinux support to make searching of files with specified security context possible.<br />
<br />
;{{AUR|selinux-sudo}}<br />
:Modified [[sudo]] package compiled with SELinux support which sets security context correctly.<br />
<br />
;{{AUR|selinux-procps}}<br />
:Procps package with SELinux patch based on some Fedora patches.<br />
<br />
;{{AUR|selinux-psmisc}}<br />
:Psmisc package compiled with SELinux support; for example, it adds the {{ic|-Z}} option to {{ic|killall}}.<br />
<br />
;{{AUR|selinux-shadow}}<br />
:Shadow package compiled with SELinux support; contains a modified {{ic|/etc/pam.d/login}} file to set correct security context for user after login.<br />
<br />
;{{AUR|selinux-cronie}}<br />
:Fedora fork of Vixie cron with SELinux enabled.<br />
<br />
;{{AUR|selinux-logrotate}}<br />
:Logrotate package compiled with SELinux support.<br />
<br />
;{{AUR|selinux-openssh}}<br />
:OpenSSH package compiled with SELinux support to set security context for user sessions.<br />
<br />
====SELinux userspace====<br />
;{{AUR|selinux-usr-checkpolicy}}<br />
:Tools to build SELinux policy<br />
<br />
;{{AUR|selinux-usr-libselinux}}<br />
:Library for security-aware applications. Python bindings needed for ''semanage'' and ''setools'' now included.<br />
<br />
;{{AUR|selinux-usr-libsemanage}}<br />
:Library for policy management. Python bindings needed for ''semanage'' and ''setools'' now included.<br />
<br />
;{{AUR|selinux-usr-libsepol}}<br />
:Library for binary policy manipulation.<br />
<br />
;{{AUR|selinux-usr-policycoreutils}}<br />
:SELinux core utils such as newrole, setfiles, etc.<br />
<br />
;{{AUR|selinux-usr-sepolgen}}<br />
:A Python library for parsing and modifying policy source.<br />
<br />
====SELinux policy====<br />
<br />
;{{AUR|selinux-refpolicy}}<br />
:Precompiled modular-otherways-vanilla Reference policy with headers and documentation but without sources.<br />
<br />
;{{AUR|selinux-refpolicy-src}}<br />
:Reference policy sources<br />
<br />
;{{AUR|selinux-refpolicy-arch}}<br />
:Precompiled modular Reference policy with headers and documentation but without sources. Development Arch Linux Refpolicy patch included, but for now [February 2011] it only fixes some issues with {{ic|/etc/rc.d/*}} labeling.<br />
<br />
====Other SELinux tools====<br />
<br />
;{{AUR|selinux-setools}}<br />
:CLI and GUI tools to manage SELinux<br />
<br />
;{{AUR|audit}}<br />
:User space utilities for storing and searching the audit records generated by the audit subsystem in the Linux kernel. SELinux (AVC) will log all denials using audit. Very useful in troubleshooting SELinux. Also audit2allow use log from this program.<br />
<br />
{{Note|If using proprietary drivers, such as [[NVIDIA]] graphics drivers, you may need to [[NVIDIA#Alternate install: custom kernel|rebuild them]] for custom kernels.}}<br />
<br />
==Configuration==<br />
<br />
After the installation of needed packages, you have to set up a few things so that SELinux can be used.<br />
<br />
===Changing boot loader configuration===<br />
<br />
You have to manually change [[GRUB]]'s {{ic|/boot/grub/menu.lst}} so that the custom kernel is booted, e.g.:<br />
<br />
# (1) Arch Linux<br />
title Arch Linux (SELinux)<br />
root (hd0,4)<br />
kernel /boot/'''vmlinuz-linux-selinux''' root=/dev/sda5 ro vga=775<br />
initrd /boot/'''initramfs-linux-selinux.img'''<br />
<br />
===Mounting selinuxfs===<br />
<br />
Add following to {{ic|/etc/fstab}}:<br />
<br />
none /selinux selinuxfs noauto 0 0<br />
<br />
Do not forget to create the mount point:<br />
<br />
mkdir /selinux<br />
<br />
===Main SELinux configuration file===<br />
Main SELinux configuration file ({{ic|/etc/selinux/config}}) is part of the {{AUR|selinux-refpolicy}} package currently in the [[Arch User Repository|AUR]]. It has default contents as follows:<br />
<br />
# This file controls the state of SELinux on the system.<br />
# SELINUX= can take one of these three values:<br />
# enforcing - SELinux security policy is enforced.<br />
# permissive - SELinux prints warnings <br />
# instead of enforcing.<br />
# disabled - No SELinux policy is loaded.<br />
SELINUX=permissive<br />
# SELINUXTYPE= takes the name of SELinux policy to<br />
# be used. Current options are:<br />
# refpolicy (vanilla reference policy)<br />
# refpolicy-arch (reference policy with <br />
# Arch Linux patch)<br />
SELINUXTYPE=refpolicy<br />
<br />
{{Note|Option {{ic|SELINUX<nowiki>=</nowiki>permissive}} is suitable only for testing. It gives no security. When everything is set up and working, you should change it to {{ic|SELINUX<nowiki>=</nowiki>enforcing}}. Option {{ic|SELINUXTYPE<nowiki>=</nowiki>refpolicy}} specifies the name of used policy. Change it if you choose another name for your policy. If you plan to compile policy from source, you have to create the file yourself.}}<br />
<br />
===Set up PAM===<br />
<br />
Correctly set-up PAM is important to get a proper security context after login. If you installed {{AUR|selinux-shadow}} from the [[Arch User Repository|AUR]], there should be the following lines in {{ic|/etc/pam.d/login}}:<br />
<br />
# pam_selinux.so close should be the first session rule<br />
session required pam_selinux.so close<br />
# pam_selinux.so open should only be followed by sessions to be executed in the user context<br />
session required pam_selinux.so open<br />
<br />
If not, add them to the file. Similarly for logging in via SSH in {{ic|/etc/pam.d/sshd}}, which is part of {{AUR|selinux-openssh}} package.<br />
<br />
If you want to use SELinux with GUI, you should add the aforementioned lines to other files such as {{ic|/etc/pam.d/kde}}, {{ic|/etc/pam.d/kde-np}}, ... depending on your login manager.<br />
<br />
{{Note|Running SELinux with GUI applications in Arch Linux is not much supported at the time being.}}<br />
<br />
==Reference policy==<br />
<br />
There are currently two possible ways of installing reference policy: From a pre-compiled package ({{AUR|selinux-refpolicy}}) or from a source package ({{AUR|selinux-refpolicy-src}}).<br />
<br />
{{Note| It is possible to have both the source and the binary package installed. If you plan to build from source in that case, you should probably change the name of policy in {{ic|build.conf}} to avoid overwriting of selinux-refpolicy package files.}}<br />
<br />
===Installing a precompiled refpolicy===<br />
<br />
Install {{AUR|selinux-refpolicy}} from AUR. This is a modular-otherways-vanilla refpolicy. This package includes policy headers (you can therefore compile your own modules), policy documentation and an install script which will load the policy for you and relabel your filesystem (which will likely take some time). It does not include the sources though.<br />
<br />
This package also includes the main SELinux configuration file ({{ic|/etc/selinux/config}}) defaulting to refpolicy and permissive SELinux enforcement for testing purposes.<br />
<br />
You should verify that the policy was correctly loaded, that is if the file {{ic|/etc/selinux/refpolicy/policy/policy.24}} has non-zero size. If so and if you have installed {{AUR|selinux-sysvinit}} and other needed packages, you are ready to reboot and make sure that everything works.<br />
<br />
{{Warning| On newer kernels (eg. 3.0) policy in file {{ic|/etc/selinux/refpolicy/policy/policy.24}} has zero bytes size, because it is used new version of policy from file: {{ic|/etc/selinux/refpolicy/policy/policy.26}}}}<br />
<br />
In case the policy was not correctly loaded you can as root use the following command inside of the {{ic|/usr/share/selinux/refpolicy}} directory to do so:<br />
<br />
/bin/ls *.pp | /bin/grep -Ev "base.pp|enableaudit.pp" | /usr/bin/xargs /usr/sbin/semodule -s refpolicy -b base.pp -i<br />
<br />
To manually relabel your filesystem you can as root use:<br />
<br />
/sbin/restorecon -r /<br />
<br />
===Installing refpolicy from a source package===<br />
<br />
Install {{AUR|selinux-refpolicy-src}} from AUR. Edit the file {{ic|/etc/selinux/refpolicy/src/policy/build.conf}} to your liking. <br />
<br />
{{Note|Build configuration file {{ic|build.conf}} is overwritten on every selinux-refpolicy-src package upgrade, so backup your configuration.}}<br />
<br />
To build, install and load policy from source do the following. (For other possibilities consult the README file located in {{ic|/etc/selinux/refpolicy/src/policy/}}.)<br />
<br />
cd /etc/selinux/refpolicy/src/policy<br />
make bare<br />
make conf <br />
make load<br />
<br />
Copy or link the compiled binary policy to {{ic|/etc/policy.bin}} for sysvinit to find and install selinux-sysvinit:<br />
<br />
ln -s /etc/selinux/refpolicy/policy/policy.21 /etc/policy.bin<br />
<br />
At this moment files do not have any context, so you should relabel the whole filesystem, which will take a while:<br />
<br />
make relabel<br />
<br />
Create the main SELinux configuration file ({{ic|/etc/selinux/config}}) according to the example in related section.<br />
<br />
Now you are ready to reboot and make sure that everything works.<br />
<br />
==Post-installation steps==<br />
{{Warning| If you did not install ''selinux-sysvinit'', then you will see SELinux in disabled mode, and {{ic|/selinux}} will not be mounted.}}<br />
<br />
You can check that SELinux is working with {{ic|sestatus}}. You should get something like:<br />
<br />
SELinux status: enabled<br />
SELinuxfs mount: /selinux<br />
Current mode: permissive<br />
Mode from config file: enforcing<br />
Policy version: 24<br />
Policy from config file: refpolicy<br />
<br />
To maintain correct context, you can use ''restorecond'':<br />
<br />
touch /etc/rc.d/restorecond<br />
chmod ugo+x /etc/rc.d/restorecond<br />
<br />
Which should contain:<br />
<br />
#!/bin/sh<br />
restorecond<br />
<br />
{{Note|Do not forget to add {{ic|restorecond}} into your {{ic|DAEMONS}} array in {{ic|/etc/rc.conf}}.}}<br />
<br />
To switch to enforcing mode without reboot, you can use:<br />
<br />
echo 1 >/selinux/enforce<br />
<br />
{{Note|If setting {{ic|SELINUX<nowiki>=</nowiki>enforcing}} in {{ic|/etc/selinux/config}} does not work for you, create {{ic|/etc/rc.d/selinux-enforce}} containing the preceding command similarly as with restorecond daemon.}}<br />
<br />
==Useful tools==<br />
<br />
There are some tools/commands that can greatly help with SELinux. <br />
<br />
;restorecon: Restores the context of a file/directory (or recursively with {{ic|-R}}) based on any policy rules <br />
;rlpkg: Relabels any files belonging to that Gentoo package to their proper security context (if they have one) <br />
;chcon: Change the context on a specific file <br />
;audit2allow: Reads in log messages from the AVC log file and tells you what rules would fix the error. Do not just add these rules without looking at them though, they cannot detect errors in other places (e.g. the application is running in the wrong context in the first place), or sometimes things will generate error messages but may maintain functionality so it would be better to add dontaudit to just ignore the access attempts.<br />
<br />
==References==<br />
*[http://en.wikipedia.org/wiki/Security-Enhanced_Linux Security Enhanced Linux]<br />
*[http://www.gentoo.org/proj/en/hardened/selinux/selinux-handbook.xml Gentoo SELinux Handbook]<br />
*[http://fedoraproject.org/wiki/SELinux Fedora Project's SELinux Wiki]<br />
*[http://www.nsa.gov/research/selinux/index.shtml NSA's Official SELinux Homepage]<br />
*[http://oss.tresys.com/projects/refpolicy Reference Policy Homepage]<br />
*[http://userspace.selinuxproject.org/trac/ SELinux Userspace Homepage]<br />
*[http://oss.tresys.com/projects/setools SETools Homepage]<br />
<br />
== See also ==<br />
* [[AppArmor]] (Similar to SELinux, much easier to configure, less features.)</div>Alligatorhttps://wiki.archlinux.org/index.php?title=SELinux_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=211297SELinux (Русский)2012-06-26T16:23:10Z<p>Alligator: Created page with "Category:Security Category:Kernel Security-Enhanced Linux (SELinux) это функция Linux, которая обеспечивает множество полит..."</p>
<hr />
<div>[[Category:Security]]<br />
[[Category:Kernel]]<br />
<br />
Security-Enhanced Linux (SELinux) это функция Linux, которая обеспечивает множество политик безопасности, включая США. Обязательные средства управления доступом (MAC, Mandatory Access Controls) стиля министерства обороны, с помощью Linux Security Modules (LSM) в ядре Linux. Это не дистрибутив Linux, а скорее ряд модификаций, которые могут быть применены к Unix-подобным операционным системам, таким как Linux и BSD. Её архитектура стремится оптимизировать объем программного обеспечения, обвиненного в осуществлении политики безопасности, которое является близко выровненное Trusted Computer System Evaluation Criteria (TCSEC, называемый Оранжевой книгой) требование для минимизации достоверной вычислительной базы (TCB) (применимый к классам B3 и A1 оценки), но довольно не связано с наименьшим количеством требования полномочия (B2, B3, A1), как часто требуется. Зародышевые понятия базовый SELinux могут быть прослежены до нескольких более ранних проектов американским Агентством национальной безопасности (NSA). [1]<br />
<br />
Для выполнения SELinux под дистрибутивом Linux требуется: включить SELinux в ядро, инструменты SELinux Userspace и библиотеки, и SELinux Policies (главным образом на основе Reference Policy). Некоторые общие программы Linux должны также исправляться/компилироваться с функциями SELinux.<br />
<br />
==Обязательные требования==<br />
<br />
Поддерживаются только файловые системы ext2, ext3, ext4, JFS и XFS.<br />
<br />
{{Note| This is probably not needed anymore:}}<br />
<br />
Пользователи XFS должны использовать 512 байтов inodes (значение по умолчанию 256). Использование SELinux расширяло атрибуты для того, чтобы сохранить метки безопасности в файлах. XFS хранит это в inode, и если inode слишком маленький, должен использоваться дополнительный блок, который тратит впустую много пространства и подвергается потерям производительности.<br />
<br />
# mkfs.xfs -i size=512 /dev/sda1 (for example)<br />
<br />
==Установка необходимых пакетов==<br />
<br />
Должны быть установлены по крайней мере {{AUR|linux-selinux}}, {{AUR|selinux-pam}}, {{AUR|selinux-usr-policycoreutils}} и {{AUR|selinux-refpolicy-src}} из [[AUR]]. Рекомендуется установить все пакеты, требуемые SELinux.<br />
<br />
При установке из [[AUR]], можете использовать [[помощник AUR]] или загружать tarballs из AUR вручную и собирать с {{ic|makepkg}}. При замене pam и coreutils пакетов будьте особо внимательны, поскольку они жизненно важны для системы. Приготовьте Live CD или Live USB на случай, если придётся переустановить систему.<br />
<br />
{{Warning| Do '''not''' remove {{Pkg|pam}} via sudo, as PAM is what takes care of authentication, and you just removed it. Instead first ''su'' to root and then do:<br />
pacman -Rdd pam<br />
pacman -U selinux-pam<br />
Doing {{ic|pacman -Rdd coreutils}}, {{ic|pacman -U selinux-coreutils}} may also cause you troubles, so maybe the best way is to install the {{ic|selinux-*}} packages from a live CD chroot to your system.}}<br />
<br />
{{Warning| Do '''not''' install {{AUR|selinux-sysvinit}} package unless everything is set up, as you may end up with an unbootable system. Or, do not reboot unless you have everything set up.}}<br />
<br />
===Package description===<br />
<br />
All SELinux related packages belong to the ''selinux'' group. Group ''selinux-system-utilities'' is used for modified packages from the {{ic|[core]}} repository. Group ''selinux-userspace'' contains packages from SELinux Userspace project. Security policies belong to ''selinux-policies'' group. Other packages are in ''selinux-extras'' group.<br />
<br />
====SELinux aware system utils====<br />
<br />
;{{AUR|linux-selinux}}<br />
:SELinux enabled kernel. Compiling custom modules like virtualbox works.<br />
<br />
;{{AUR|selinux-coreutils}}<br />
:Modified coreutils package compiled with SELinux support enabled.<br />
<br />
;{{AUR|selinux-flex}}<br />
:Flex version needed only to build checkpolicy. Current flex has error causing failure in checkmodule command.<br />
<br />
;{{AUR|selinux-pam}}<br />
:PAM package with pam_selinux.so.<br />
<br />
;{{AUR|selinux-sysvinit}}<br />
:Sysvinit which loads policy at startup. Be careful; it fails if SELinux policy cannot be loaded!<br />
<br />
;{{AUR|selinux-util-linux}}<br />
:Modified util-linux package compiled with SELinux support enabled.<br />
<br />
;{{AUR|selinux-udev}} made obsolete by {{AUR|selinux-sysvinit}}<br />
:Modified [[udev]] package compiled with SELinux support enabled for labeling of files in {{ic|/dev}} to work correctly. The udev functionality is now provided by selinux-sysvinit-tools [http://www.archlinux.org/news/systemd-tools-replaces-udev/] which is part of the {{AUR|selinux-sysvinit}} splitpackage.<br />
<br />
;{{AUR|selinux-findutils}}<br />
:Patched findutils package compiled with SELinux support to make searching of files with specified security context possible.<br />
<br />
;{{AUR|selinux-sudo}}<br />
:Modified [[sudo]] package compiled with SELinux support which sets security context correctly.<br />
<br />
;{{AUR|selinux-procps}}<br />
:Procps package with SELinux patch based on some Fedora patches.<br />
<br />
;{{AUR|selinux-psmisc}}<br />
:Psmisc package compiled with SELinux support; for example, it adds the {{ic|-Z}} option to {{ic|killall}}.<br />
<br />
;{{AUR|selinux-shadow}}<br />
:Shadow package compiled with SELinux support; contains a modified {{ic|/etc/pam.d/login}} file to set correct security context for user after login.<br />
<br />
;{{AUR|selinux-cronie}}<br />
:Fedora fork of Vixie cron with SELinux enabled.<br />
<br />
;{{AUR|selinux-logrotate}}<br />
:Logrotate package compiled with SELinux support.<br />
<br />
;{{AUR|selinux-openssh}}<br />
:OpenSSH package compiled with SELinux support to set security context for user sessions.<br />
<br />
====SELinux userspace====<br />
;{{AUR|selinux-usr-checkpolicy}}<br />
:Tools to build SELinux policy<br />
<br />
;{{AUR|selinux-usr-libselinux}}<br />
:Library for security-aware applications. Python bindings needed for ''semanage'' and ''setools'' now included.<br />
<br />
;{{AUR|selinux-usr-libsemanage}}<br />
:Library for policy management. Python bindings needed for ''semanage'' and ''setools'' now included.<br />
<br />
;{{AUR|selinux-usr-libsepol}}<br />
:Library for binary policy manipulation.<br />
<br />
;{{AUR|selinux-usr-policycoreutils}}<br />
:SELinux core utils such as newrole, setfiles, etc.<br />
<br />
;{{AUR|selinux-usr-sepolgen}}<br />
:A Python library for parsing and modifying policy source.<br />
<br />
====SELinux policy====<br />
<br />
;{{AUR|selinux-refpolicy}}<br />
:Precompiled modular-otherways-vanilla Reference policy with headers and documentation but without sources.<br />
<br />
;{{AUR|selinux-refpolicy-src}}<br />
:Reference policy sources<br />
<br />
;{{AUR|selinux-refpolicy-arch}}<br />
:Precompiled modular Reference policy with headers and documentation but without sources. Development Arch Linux Refpolicy patch included, but for now [February 2011] it only fixes some issues with {{ic|/etc/rc.d/*}} labeling.<br />
<br />
====Other SELinux tools====<br />
<br />
;{{AUR|selinux-setools}}<br />
:CLI and GUI tools to manage SELinux<br />
<br />
;{{AUR|audit}}<br />
:User space utilities for storing and searching the audit records generated by the audit subsystem in the Linux kernel. SELinux (AVC) will log all denials using audit. Very useful in troubleshooting SELinux. Also audit2allow use log from this program.<br />
<br />
{{Note|If using proprietary drivers, such as [[NVIDIA]] graphics drivers, you may need to [[NVIDIA#Alternate install: custom kernel|rebuild them]] for custom kernels.}}<br />
<br />
==Configuration==<br />
<br />
After the installation of needed packages, you have to set up a few things so that SELinux can be used.<br />
<br />
===Changing boot loader configuration===<br />
<br />
You have to manually change [[GRUB]]'s {{ic|/boot/grub/menu.lst}} so that the custom kernel is booted, e.g.:<br />
<br />
# (1) Arch Linux<br />
title Arch Linux (SELinux)<br />
root (hd0,4)<br />
kernel /boot/'''vmlinuz-linux-selinux''' root=/dev/sda5 ro vga=775<br />
initrd /boot/'''initramfs-linux-selinux.img'''<br />
<br />
===Mounting selinuxfs===<br />
<br />
Add following to {{ic|/etc/fstab}}:<br />
<br />
none /selinux selinuxfs noauto 0 0<br />
<br />
Do not forget to create the mount point:<br />
<br />
mkdir /selinux<br />
<br />
===Main SELinux configuration file===<br />
Main SELinux configuration file ({{ic|/etc/selinux/config}}) is part of the {{AUR|selinux-refpolicy}} package currently in the [[Arch User Repository|AUR]]. It has default contents as follows:<br />
<br />
# This file controls the state of SELinux on the system.<br />
# SELINUX= can take one of these three values:<br />
# enforcing - SELinux security policy is enforced.<br />
# permissive - SELinux prints warnings <br />
# instead of enforcing.<br />
# disabled - No SELinux policy is loaded.<br />
SELINUX=permissive<br />
# SELINUXTYPE= takes the name of SELinux policy to<br />
# be used. Current options are:<br />
# refpolicy (vanilla reference policy)<br />
# refpolicy-arch (reference policy with <br />
# Arch Linux patch)<br />
SELINUXTYPE=refpolicy<br />
<br />
{{Note|Option {{ic|SELINUX<nowiki>=</nowiki>permissive}} is suitable only for testing. It gives no security. When everything is set up and working, you should change it to {{ic|SELINUX<nowiki>=</nowiki>enforcing}}. Option {{ic|SELINUXTYPE<nowiki>=</nowiki>refpolicy}} specifies the name of used policy. Change it if you choose another name for your policy. If you plan to compile policy from source, you have to create the file yourself.}}<br />
<br />
===Set up PAM===<br />
<br />
Correctly set-up PAM is important to get a proper security context after login. If you installed {{AUR|selinux-shadow}} from the [[Arch User Repository|AUR]], there should be the following lines in {{ic|/etc/pam.d/login}}:<br />
<br />
# pam_selinux.so close should be the first session rule<br />
session required pam_selinux.so close<br />
# pam_selinux.so open should only be followed by sessions to be executed in the user context<br />
session required pam_selinux.so open<br />
<br />
If not, add them to the file. Similarly for logging in via SSH in {{ic|/etc/pam.d/sshd}}, which is part of {{AUR|selinux-openssh}} package.<br />
<br />
If you want to use SELinux with GUI, you should add the aforementioned lines to other files such as {{ic|/etc/pam.d/kde}}, {{ic|/etc/pam.d/kde-np}}, ... depending on your login manager.<br />
<br />
{{Note|Running SELinux with GUI applications in Arch Linux is not much supported at the time being.}}<br />
<br />
==Reference policy==<br />
<br />
There are currently two possible ways of installing reference policy: From a pre-compiled package ({{AUR|selinux-refpolicy}}) or from a source package ({{AUR|selinux-refpolicy-src}}).<br />
<br />
{{Note| It is possible to have both the source and the binary package installed. If you plan to build from source in that case, you should probably change the name of policy in {{ic|build.conf}} to avoid overwriting of selinux-refpolicy package files.}}<br />
<br />
===Installing a precompiled refpolicy===<br />
<br />
Install {{AUR|selinux-refpolicy}} from AUR. This is a modular-otherways-vanilla refpolicy. This package includes policy headers (you can therefore compile your own modules), policy documentation and an install script which will load the policy for you and relabel your filesystem (which will likely take some time). It does not include the sources though.<br />
<br />
This package also includes the main SELinux configuration file ({{ic|/etc/selinux/config}}) defaulting to refpolicy and permissive SELinux enforcement for testing purposes.<br />
<br />
You should verify that the policy was correctly loaded, that is if the file {{ic|/etc/selinux/refpolicy/policy/policy.24}} has non-zero size. If so and if you have installed {{AUR|selinux-sysvinit}} and other needed packages, you are ready to reboot and make sure that everything works.<br />
<br />
{{Warning| On newer kernels (eg. 3.0) policy in file {{ic|/etc/selinux/refpolicy/policy/policy.24}} has zero bytes size, because it is used new version of policy from file: {{ic|/etc/selinux/refpolicy/policy/policy.26}}}}<br />
<br />
In case the policy was not correctly loaded you can as root use the following command inside of the {{ic|/usr/share/selinux/refpolicy}} directory to do so:<br />
<br />
/bin/ls *.pp | /bin/grep -Ev "base.pp|enableaudit.pp" | /usr/bin/xargs /usr/sbin/semodule -s refpolicy -b base.pp -i<br />
<br />
To manually relabel your filesystem you can as root use:<br />
<br />
/sbin/restorecon -r /<br />
<br />
===Installing refpolicy from a source package===<br />
<br />
Install {{AUR|selinux-refpolicy-src}} from AUR. Edit the file {{ic|/etc/selinux/refpolicy/src/policy/build.conf}} to your liking. <br />
<br />
{{Note|Build configuration file {{ic|build.conf}} is overwritten on every selinux-refpolicy-src package upgrade, so backup your configuration.}}<br />
<br />
To build, install and load policy from source do the following. (For other possibilities consult the README file located in {{ic|/etc/selinux/refpolicy/src/policy/}}.)<br />
<br />
cd /etc/selinux/refpolicy/src/policy<br />
make bare<br />
make conf <br />
make load<br />
<br />
Copy or link the compiled binary policy to {{ic|/etc/policy.bin}} for sysvinit to find and install selinux-sysvinit:<br />
<br />
ln -s /etc/selinux/refpolicy/policy/policy.21 /etc/policy.bin<br />
<br />
At this moment files do not have any context, so you should relabel the whole filesystem, which will take a while:<br />
<br />
make relabel<br />
<br />
Create the main SELinux configuration file ({{ic|/etc/selinux/config}}) according to the example in related section.<br />
<br />
Now you are ready to reboot and make sure that everything works.<br />
<br />
==Post-installation steps==<br />
{{Warning| If you did not install ''selinux-sysvinit'', then you will see SELinux in disabled mode, and {{ic|/selinux}} will not be mounted.}}<br />
<br />
You can check that SELinux is working with {{ic|sestatus}}. You should get something like:<br />
<br />
SELinux status: enabled<br />
SELinuxfs mount: /selinux<br />
Current mode: permissive<br />
Mode from config file: enforcing<br />
Policy version: 24<br />
Policy from config file: refpolicy<br />
<br />
To maintain correct context, you can use ''restorecond'':<br />
<br />
touch /etc/rc.d/restorecond<br />
chmod ugo+x /etc/rc.d/restorecond<br />
<br />
Which should contain:<br />
<br />
#!/bin/sh<br />
restorecond<br />
<br />
{{Note|Do not forget to add {{ic|restorecond}} into your {{ic|DAEMONS}} array in {{ic|/etc/rc.conf}}.}}<br />
<br />
To switch to enforcing mode without reboot, you can use:<br />
<br />
echo 1 >/selinux/enforce<br />
<br />
{{Note|If setting {{ic|SELINUX<nowiki>=</nowiki>enforcing}} in {{ic|/etc/selinux/config}} does not work for you, create {{ic|/etc/rc.d/selinux-enforce}} containing the preceding command similarly as with restorecond daemon.}}<br />
<br />
==Useful tools==<br />
<br />
There are some tools/commands that can greatly help with SELinux. <br />
<br />
;restorecon: Restores the context of a file/directory (or recursively with {{ic|-R}}) based on any policy rules <br />
;rlpkg: Relabels any files belonging to that Gentoo package to their proper security context (if they have one) <br />
;chcon: Change the context on a specific file <br />
;audit2allow: Reads in log messages from the AVC log file and tells you what rules would fix the error. Do not just add these rules without looking at them though, they cannot detect errors in other places (e.g. the application is running in the wrong context in the first place), or sometimes things will generate error messages but may maintain functionality so it would be better to add dontaudit to just ignore the access attempts.<br />
<br />
==References==<br />
*[http://en.wikipedia.org/wiki/Security-Enhanced_Linux Security Enhanced Linux]<br />
*[http://www.gentoo.org/proj/en/hardened/selinux/selinux-handbook.xml Gentoo SELinux Handbook]<br />
*[http://fedoraproject.org/wiki/SELinux Fedora Project's SELinux Wiki]<br />
*[http://www.nsa.gov/research/selinux/index.shtml NSA's Official SELinux Homepage]<br />
*[http://oss.tresys.com/projects/refpolicy Reference Policy Homepage]<br />
*[http://userspace.selinuxproject.org/trac/ SELinux Userspace Homepage]<br />
*[http://oss.tresys.com/projects/setools SETools Homepage]<br />
<br />
== See also ==<br />
* [[AppArmor]] (Similar to SELinux, much easier to configure, less features.)</div>Alligatorhttps://wiki.archlinux.org/index.php?title=ATI_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=199045ATI (Русский)2012-04-25T21:12:41Z<p>Alligator: /* Отключение KMS */</p>
<hr />
<div>[[Category:Видеосистема (Русский)]]<br />
[[Category:XServer (Русский)]]<br />
[[Category:Руководства (Русский)]]<br />
{{i18n|ATI}}<br />
{{Article summary start| Summary}}<br />
{{Article summary text|Информация о Проприетарных и Открытых Драйверах ATI.}}<br />
{{Article summary end}}<br />
Владельцы видеокарт '''ATI''' могут использовать два варианта драйверов — проприетарный ('''catalyst''') и один из открытых ('''xf86-video-ati''' или '''RadeonHD''').<br />
<br />
<br />
'''xf86-video-ati''' преимущественно предназначены для чипсетов до R5xx (X1xxx), а '''RadeonHD''' для чипсетов старше R5xx. Проприетарный '''catalyst''' предназначен ''только'' для R6xx ('''HD2xxx''') и более ''новых'' чипсетов.<br />
<br />
Закрытый драйвер, начиная с версии 7.10 (8.42.3) и позже, поддерживает [[AIGLX]], то есть, с ним вы можете использовать композитные менеджеры (например, [[Compiz Fusion]] или '''KWin4'''). На даный момент производительность открытых драйверов (xf86-video-ati или xf86-video-radeonhd) значительно хуже проприетарных, больше всего это заметно в OpenGL-приложениях. Также отсутствуют некоторые свойства, например, хорошая поддержка TV-out. С другой стороны, открытые драйвера имеют лучшую поддержку ''dual-head'' (xf86-video-ati), а также великолепное ускорение 2D и хорошее ускорение 3D.<br />
<br />
Если вы не знаете, какой из них выбрать, попробуйте сначала любой из открытых. Открытые драйвера предпочтительнее и обычно проблем с ними меньше. Также, чтобы узнать, что уже работает, над чем идёт работа и что планируется добавить, посетите страничку [http://www.x.org/wiki/RadeonFeature матрица свойств].<br />
<br />
== Rxxx? ==<br />
Схема имен вида Rxxx ссылается на название карты.<br />
Чтобы найти свою карту, посетите страницу википедии:<br />
[http://en.wikipedia.org/wiki/Comparison_of_ATI_Graphics_Processing_Units]<br />
<br />
= Драйвера ATI с Открытым Исходным Кодом =<br />
<br />
== AMD/ATI видеокарты и KMS ==<br />
Официальное ядро 2.6.31 имеет экспериментальную поддержку установщика видеорежимов ядра (kernel mode-setting). <br />
<br />
'''Установщик видеорежимов ядра''' — это технология смены видеорежимов в пространстве ядра, на стадии загрузки модулей (до загрузки X). Он написан практически с нуля и позволяет переключать терминалы (Ctrl+Alt+F1 и др.) практически мгновенно. Как следствие, вы будете иметь полноэкранный фрэймбуфер, который удобен в консольном режиме для дисплеев с высоким разрешением.<br />
<br />
{{Note| На данный момент, только видеокарты Radeon с чипсетом '''R5xx''' (X1xxx) поддерживаются в KMS. Поддержка более новых карт будет добавлена в Linux 2.6.32.}}<br />
<br />
=== Ранний запуск ===<br />
<br />
Этот метод позволяет запускать KMS раньше, насколько это возможно в процессе загрузки, когда загружен initramfs.<br />
<br />
1) Удалите все '''"vga="''' и '''"video="''' опции из строки вашего ядра в /boot/grub/menu.lst. Использование других драйверов фрэймбуфера (таких как uvesafb/radeonfb) приведет к конфликту с KMS. Удалите любые установленные модули фрэймбуфера из /etc/mkinitcpio.conf.<br />
<br />
2) Добавьте '''"radeon"''' (строка MODULES) в '''/etc/mkinitcpio.conf'''. В зависимости от вашего чипсета может потребоваться добавить "intel_agp" перед модулем radeon.<br />
<br />
3) Пересоздайте ваш initcpio:<br />
mkinitcpio -p kernel26<br />
<br />
4) Перезагрузите систему.<br />
<br />
=== Поздний запуск ===<br />
<br />
При таком выборе KMS будет включен, когда в процессе загрузки появится сообщение "Loading modules."<br />
<br />
1) Удалите все '''"vga="''' и '''"video="''' опции из строки вашего ядра в '''/boot/grub/menu.lst'''. Использование других драйверов фрэймбуфера (таких как uvesafb/radeonfb) приведёт к конфликту с KMS. Удалите любые установленные модули фрэймбуфера из '''/etc/mkinitcpio.conf'''.<br />
<br />
2) Добавьте модуль '''"radeon"''' или, если необходимо, "intel_agp radeon" (строка '''MODULES''') в '''/etc/rc.conf'''.<br />
<br />
Некоторые пользователи сообщают, что модуль udev может быть загружен быстрее, добавлением опции "options radeon modeset=1" в вашем файле '''/etc/modeprobe.d/modprobe.conf'''.<br />
<br />
3) Перезагрузите систему.<br />
<br />
Если вам повезёт, ваша система будет загружаться в обоих возможных способах, с нормальным разрешением фрэймбуфера и Xorg будет запускаться очень быстро.<br />
<br />
{{Warning| Если поздний запуск у вас '''не работает''', попробуйте [[#.D0.A0.D0.B0.D0.BD.D0.BD.D0.B8.D0.B9_.D0.B7.D0.B0.D0.BF.D1.83.D1.81.D0.BA|ранний запуск Kernel Mode Setting]].}}<br />
<br />
=== Возможные проблемы c KMS ===<br />
<br />
==== Нет композитного вывода (или очень медленный) после включения KMS ====<br />
<br />
Вы должны установить эти версии пакетов, для нормальной работы KMS и включения 3D через композитный вывод:<br />
<br />
kernel26 2.6.31.x<br />
mesa 7.5.x<br />
ati-dri 7.5.x<br />
libgl 7.5.x<br />
xf86-video-ati 6.12.4<br />
<br />
Если они уже установлены, но нет ни KMS, ни композитного вывода 3D, [[#.D0.9E.D1.82.D0.BA.D0.BB.D1.8E.D1.87.D0.B5.D0.BD.D0.B8.D0.B5_KMS|отключите KMS.]]<br />
<br />
{{Note| ''Многие'' проблемы и основные недостатки будут решены, если установленная версия Mesa, как миниум 7.'''6'''.x. Это предупреждение касается тех, кто еще не перешёл на Mesa 7.6.}}<br />
<br />
==== Решение проблем, связанных с KMS====<br />
<br />
===== Отключение KMS =====<br />
<br />
{{Warning| Если ваша карта не поддерживается, то может произойти: '''крах ядра, Xorg не запустится, Xorg будет выгружать модуль DRI2 и возращаться к программной эмуляции 3D.'''}}<br />
<br />
Решение данной проблемы может быть в '''отключении''' экспериментального KMS и откат к '''старым''' настройкам.<br />
<br />
1) Добавьте '''"radeon.modeset=0"''' в строку загрузки ядра<br />
в файле /boot/grub/menu.lst или в конфигурационном файле lilo.<br />
<br />
Если '''"radeon.modeset=0"''' не помогло, попробуйте '''"nomodeset"''' взамен.<br />
<br />
2) Если вы добавили '''"radeon"''' (строка MODULES) в '''mkinitcpio.conf''', удалите его <br />
<br />
3) '''Пересоберите initramfs''' командой<br />
<br />
mkinitcpio -p kernel26<br />
<br />
{{Warning | Пользователи Catalyst: вам возможно, также понадобится запретить загрузку модуля radeon. Поместите '''"!radeon"''' (строка MODULES) в '''/etc/rc.conf.'''}}<br />
<br />
* Опции для модулей могут быть указаны в файле, расположенном в '''/etc/modprobe.d/'''. Если вы используете модуль '''radeon''' (вы можете это проверить командой <code>lsmod | grep radeon </code>), то можно отключить KMS созданием файла например, '''/etc/modprobe.d/radeon.conf''', с опцией<br />
options radeon modeset=0<br />
<br />
4) '''Перегрузите''' вашу систему.<br />
<br />
===== Удаление xorg.conf =====<br />
<br />
Удалите xorg.conf, который может включать в себя опции, вызывающие проблемы стабильной работы драйвера, создайте резервную копию xorg.conf, затем удалите его.<br />
<br />
После этого, '''перегрузите''' Xorg.<br />
<br />
== Различия между открытыми драйверами ATI, <code>xf86-video-ati</code> и <code>xf86-video-radeonhd</code>. ==<br />
<br />
*<code>xf86-video-ati</code>: будет работать с полной поддержкой 3D на чипсетах Radeon до X1950 (последнии версии R500 чипсетов). Карты Radeon до серии 9200 включают поддержку многих свойств, стабильны и полностью поддерживают 2D и 3D ускорение. Видеокарты Radeon от 9500 до X1950 имеют полную 2D поддержку ускорения, также присутствует очень хорошая поддержка 3D ускорения, но поддерживаются не все дополнительные свойства, которые присутствуют в закрытом драйвере (например, режим экономии питания находится в фазе тестирования). Полный список карт можно найти [http://dri.freedesktop.org/wiki/ATI здесь]. Также, все видеокарты полностью поддерживают DRI1, RandR 1.2/1.3, ускорение EXA и KMS/DRI2 (в последнем ядре linux, а также с последними версиями libDRM и Mesa).<br />
<br />
{{Note| поддержка '''HDMI''' скоро будет реализована в '''xf86-video-ati''' через AtomBIOS.}}<br />
<br />
Все карты, начиная с HD2xxx (R6xx) включая последние, подерживаются в xf86-video-ati, но пока только с поддержкой 2D ускорения.<br />
<br />
*<code>xf86-video-radeonhd</code>: это драйвер для чипсетов ATI R500 (Radeon серии X1000) и '''выше'''. Он написан компанией Novell с предоставлением публичных специфкаций компанией AMD. Он поддерживает RandR 1.2 и очень динамично развивается. Он также имеет поддержку HDMI вместе со звуком, если конечно, ваша карты поддерживает это свойство.<br />
<br />
== Какой мне выбрать? ==<br />
<br />
Право выбора остается вам, руководствуйтесь правилом - какой из них поддерживает больше функций вашей карты. '''xf86-video-ati''' подойдет в большинстве случаев и является предпочтительным, до того, как вы решите использовать ''' xf86-video-radeonhd''', попробуйте первый.<br />
<br />
== Установка и Настройка ==<br />
{{Note| Если до этого у вас были установлены проприетарные драйвера, удостовертесь, что вы удалили <code>catalyst</code> и <code>catalyst-utils</code>.}}<br />
<br />
<br />
Установка <code>xf86-video-ati</code>:<br />
pacman -S xf86-video-ati libgl ati-dri<br />
<br />
Установка <code>xf86-video-radeonhd</code>:<br />
pacman -S xf86-video-radeonhd libgl ati-dri<br />
<br />
<br />
{{Note|Версии драйверов с GIT вы можете найти в [[AUR]]}}<br />
<br />
Теперь вы можете сделать две вещи. Вы можете создать файл xorg.conf, который будет отвечать вашим потребностям или не использовать его вообще.<br />
<br />
С включенным KMS (Настройка Режима Ядра), xorg.conf может быть не обязателен.<br />
<br />
В случае, если вы хотите настроить вручную, отредактируйте свой [[xorg.conf]] и добавьте или удостовертесь в присутствии следующей секции.<br />
<br />
Section "Module"<br />
Load "glx"<br />
Load "dri"<br />
Load "drm"<br />
EndSection<br />
<br />
Секция Устройства для <code>xf86-video-ati</code>:<br />
Section "Device"<br />
Identifier "name" # имя вашей карты<br />
Driver "radeon"<br />
EndSection<br />
<br />
Секция Устройства для <code>xf86-video-radeonhd</code>:<br />
Section "Device"<br />
Identifier "name" # имя вашей карты<br />
Driver "radeonhd"<br />
Option "AccelMethod" "exa" # включает 2D и Xv ускорение на R6xx/R7xx - по умолчанию AccelMethod имеет параметр shadowfb<br />
Option "DRI" "on" # включает 2D и Xv ускорение на R6xx/R7xx - по умолчанию DRI выключен<br />
EndSection<br />
<br />
{{Note|Попробуйте использовать указанные ниже параметры, для повышения производительности с Option "DRI", для RS780M/MN [Radeon HD 3200], использующие драйверы radeonhd (от 3 Мая 2009)}}<br />
<br />
Эта секция (DRI) необязательна (считается устаревшей), '''но''' лучше её оставить если вы будете испытывать проблемы с DRI.<br />
<br />
Section "DRI"<br />
Group "video"<br />
Mode 0666<br />
EndSection<br />
<br />
Когда используется этот драйвер, убедитесь, что вы не имеете установленных <code>catalyst</code> и <code>catalyst-utils</code>, вместо них используйте <code>ati-dri</code>. Иначе, вы получите нерабочую библиотеку <code>libGL.so</code>, которая приведёт к отсутствию ускорения.<br />
<br />
=== Повышение Производительности ===<br />
<br />
{{Note|Следующие опции применяются к секции "'''Device'''" в /etc/X11/'''xorg.conf'''.}}<br />
<br />
==== Повышение производительности в xf86-video-ati ====<br />
<br />
По умолчанию, xf86-video-ati запускает AGP на 1x скорости. Это можно изменить в большинстве случаев. Если появились зависания, попробуйте убавить значение или убрать всю строку (вы можете использовать следующие значения: 1, 2, 4, 8).<br />
Option "AGPMode" "4"<br />
'''ColorTiling''' эта опция является полностью безопасной и как бы включена по умолчанию. Но люди, отмечают повышение производительности при включении этой опции в ручную в xorg.conf.<br />
Option "ColorTiling" "on"<br />
'''Acceleration architecture'''; это будет работать только в '''новых''' картах. Если вы включили её и не можете запустить X, удалите её.<br />
Option "AccelMethod" "EXA"<br />
'''Page Flip''' опция в общем безопасна для включения. При использовании на старых картах, её включение запретит использование EXA. С последними драйверами может использоваться совместно с EXA.<br />
Option "EnablePageFlip" "on" <br />
'''AGPFastWrite''' включает быструю запись для карт с интерфейсом AGP. Она обычно не создает проблем, но если они появились и вы не можете запустить X, удалите её.<br />
Option "AGPFastWrite" "yes"<br />
<br />
'''EXAVSync ''' эта опция пытается избежать разрывов (тьюринга), приостанавливая драйвер, пока контроллер монитора назначает регион. Это сокращает время исполнения, иногда, может вызывать нестабильность в некоторых чипах.<br />
Очень полезна при использовании Xv видеоналожения на рабочих станциях с 3D ускорением. Перестанет быть нужным, когда ускорение UXA (через DRI2) будет реализовано в драйвере xf86-video-ati.<br />
<br />
Option "EXAVSync" "yes"<br />
<br />
Вот пример секции Device в xorg.conf:<br />
<br />
<pre><br />
<br />
Section "Device"<br />
Identifier "My Graphics Card"<br />
Driver "radeon"<br />
Option "DRI" "on" <br />
Option "DynamicPM" "on" # Динамический режим экномии питания.<br />
Option "ClockGating" "on" # Сопутствующие опции для режима экномии питания.<br />
Option "AccelMethod" "EXA" # EXA должна быть включена в большинстве случаев.<br />
Option "EXAVSync" "on" # EXAVSync описано выше.<br />
Option "DMAForXv" "on" # Принудительная опция, дополнение к включению Xv.<br />
Option "ScalerWidth" "2048" # Поможет решить несколько очень редких ошибок.<br />
Option "EnablePageFlip" "on" # Это не должно быть включено на картах R5xx.<br />
Option "RenderAccel" "on" # Опционально. Это должно быть включено по умолчанию.<br />
Option "AccelDFS" "on" # Опционально. Смотрите страницы man.<br />
BusID "PCI:1:0:0"<br />
EndSection<br />
<br />
</pre><br />
<br />
<br />
'''Для более подробной информации о конфигурации, обратитесь к страницам man. <br />
'''<br />
<br />
<code>man radeon</code><br />
<br />
Можно использовать очень хорошую утилиту [https://aur.archlinux.org/packages.php?do_Details=1&ID=2994 driconf]. Она позволяет вам изменять некоторые настройки, такие как вертикальная синхронизация, антизотропная фильтрация, компрессия текстур и др.<br />
Используя эту утилиту также можно "запретить откат Низкоуровневых Коллизий" необходимый некоторым программам (например Google Earth).<br />
<br />
==== Повышение производительности в xf86-video-radeonhd ====<br />
<br />
ПЛАНИРУЕТСЯ<br />
<br />
=== TV выход ===<br />
<br />
Начиная с августа 2007, TV-выход поддерживают все карты Radeon с интегрированным TV-out.<br />
<br />
Они имеют некоторые ограничения, в частности, некоторые из них, не всегда определяются правильно и работают только в NTSC режиме.<br />
<br />
Сначала, проверьте есть ли у вас выход S-video: <code>xrandr</code> должен показать что-то вроде такого<br />
<br />
Screen 0: minimum 320x200, current 1024x768, maximum 1280x1200<br />
...<br />
S-video disconnected (normal left inverted right x axis y axis)<br />
<br />
Теперь, мы должны сказать Xorg'у, что выход подключён (это верно?)<br />
<br />
xrandr --output S-video --set load_detection 1<br />
<br />
Настройка ТВ стандарта:<br />
<br />
xrandr --output S-video --set tv_standard ntsc<br />
<br />
Добавление видеорежима (сейчас поддерживается только 800x600):<br />
<br />
xrandr --addmode S-video 800x600<br />
<br />
Переход в режим клонирования:<br />
<br />
xrandr --output S-video --same-as VGA-0<br />
<br />
Пока всё хорошо. Теперь давайте посмотрим, что мы имеем:<br />
<br />
xrandr --output S-video --mode 800x600<br />
<br />
В этот момент, вы должны увидеть версию вашего рабочего стола на экране ТВ в режиме 800x600.<br />
<br />
Запретить использовать выход<br />
xrandr --output S-video --off<br />
<br />
Также, вы можете заметить, что видео проигрывается только на мониторе, на ТВ его нет. Управление Xv наложением, передается атрибутом XV_CRTC.<br />
<br />
Перенаправить вывод на ТВ<br />
<br />
xvattr -a XV_CRTC -v 1<br />
<br />
{{Note| вам необходимо установить '''xvattr''' из [[AUR]] для выполнения этой команды.}}<br />
<br />
Для переключения обратно на монитор, измените в <code>0</code>. <code>-1</code> используется для автоматического переключения в двух-выходной установке.<br />
<br />
<br />
Дополнительно смотрите [http://www.x.org/wiki/radeonTV Включение Статического TV-Out (англ.)], для того чтобы узнать как включить TV-out в вашем конфигурационном файле xorg.<br />
<br />
=== HDMI со звуком ===<br />
Если ваше оборудование поддерживает это и вы имеете установленный '''xf86-video-radeonhd''' или '''xf86-video-ati''', вы можете вставить следующие опции в ваш xorg.conf для включения HDMI со звуком:<br />
<br />
Section "Device"<br />
# ...<br />
Option "Audio" "on"<br />
Option "HDMI" "all"<br />
EndSection<br />
<br />
Когда вы внесете изменения, перегрузите X-сервер и проверьте, передается ли звук на ТВ через кабель HDMI.<br />
<br />
В ядрах >= 3.0 модуль звука выключен по умолчанию. Добавьте <code>radeon.audio=1</code> в конец строки "kernel" в файле /boot/grub/menu.lst для включения этого модуля.<br />
Подробности можно узнать в [https://bbs.archlinux.org/viewtopic.php?id=124130 этом треде].<br />
Видеокарты линейки Evergreen получат поддержку начиная с ядра >= 3.3<br />
<br />
# Подключите ваш ПК к ТВ через кабель HDMI (duh).<br />
# Используйте xrandr для получения картинки на ТВ. Пример: <code>xrandr --output DVI-D_1 --mode 1280x768 --right-of PANEL</code>. Просто наберите <code>xrandr</code>, он выдаст вам список правильных выводов.<br />
# Запустите <code>aplay -l</code> для получения списка ваших звуковых устройств. Найдите HDMI и запомните номер карты и номер передающего устройства. Пример того, что вы увидите: <code>card 1: HDMI [HDA ATI HDMI], device 3: ATI HDMI [ATI HDMI]</code><br />
# Попробуйте отправить звук на это устройство: <code>aplay -D plughw:1,3 /usr/share/sounds/alsa/Front_Center.wav</code>. Убедитесь, что ваш изменённый plughw:z,y совпадает с номером вашей карты, найденном в последней команде. Вы услышите тестовый звук на вашем ТВ.<br />
<br />
== Решение Проблем (xf86-video-ati и xf86-video-radeonhd) ==<br />
<br />
=== Я вижу артефакты, когда пытаюсь зайти в DE или WM ===<br />
<br />
Если вы видите артефакты, сначала попробуйте зайти в ваш любимый DE или WM без xorg.conf в /etc/X11/. Многие люди пытаются сделать изменения в xorg.conf для своей системы, но в некоторых случаях, это приводит к проблемам.<br />
<br />
Если вы это сделаете, не забудьте установить и запустить '''HAL''', а также установить '''xorg-input-drivers'''.<br />
<br />
{{Warning| Также, возможно, проблема может быть связана с KMS. Если это так, [[#.D0.9E.D1.82.D0.BA.D0.BB.D1.8E.D1.87.D0.B5.D0.BD.D0.B8.D0.B5_KMS|отключите KMS.]]}}<br />
<br />
=== Я перешёл с catalyst на radeonhd или radeon и у меня что-то не работает ===<br />
<br />
Прежде всего, не паникуйте. Удалите catalyst и catalyst-utils, установите xf86-video-radeonhd или xf86-video-ati и теперь '''''перегрузитесь'''''.<br />
<br />
Убедитесь в том, что вы не используете xorg.conf, сгенерированный для catalyst. Ваш оригинальный файл должен быть сохранен и вы можете его вернуть:<br />
<br />
cp /etc/X11/xorg.conf.original-0 /etc/X11/xorg.conf<br />
<br />
В противном случае, остановите графический сервер, если он запущен и в терминале tty наберите как root:<br />
<br />
Xorg -configure<br />
mv xorg.conf.new /etc/X11/xorg.conf<br />
<br />
и убедитесь в наличии нужных опций.<br />
<br />
Если, все эти шаги не решили ваших проблем, известно, что catalyst имеет плохую привычку заменять файлы Xorg символическими ссылками, указывающих на свои файлы. Самое простое решение - удаление всех пакетов catalyst и полная переустановка xorg, libgl, ati-dri и xf86-video-radeonhd или xf86-video-ati.<br />
<br />
Если это также не помогло, тогда посмотрите темы на форуме, возможно ваша проблема уже решена.<br />
<br />
{{Note| Когда вы переходите на '''xf86-video-ati''' или '''xf86-video-radeonhd''', помните, что вы можете зайти без xorg.conf (без особых проблем), сначала Xorg должен автоматически определить ваши настройки. '''xorg.conf''' для этого не обязателен.}}<br />
<br />
= Проприетарные драйвера ATI Catalyst =<br />
<br />
Известный раньше как 'fglrx', ATI ребрендила свой проприетарный Linux драйвер, который теперь известен как 'Catalyst'. Изменения, коснулись только имени пакета, имя модуля ядра 'fglrx' осталось таким же, поэтому любые упоминания fglrx ниже относятся именно к модулю ядра, ''а не к имени пакета''.<br />
<br />
== Поддерживаемые Устройства ==<br />
<br />
Для просмотра списка поддерживаемых устройств текущей версией драйвера, обратитесь к [http://www2.ati.com/drivers/linux/catalyst_88_linux.html Заметкам к релизу ATI Catalyst 8.8 (англ.)].<br />
<br />
ПРИМЕЧАНИЕ: ''Начиная с версии '''9.4''', закрытый драйвер ATI '''поддерживает только R600 и более новые устройства''' (HD2xxx и выше). Владельцы старых карт, в частности пользователи ноутбуков, должны знать, что драйвер ATI Catalyst 8-8 поддерживает только Xorg <= 7.3. Xorg 7.4 не имеет поддержки вплоть до драйвера ниже версии 8-10. Это означает, что если вы хотите использовать Xorg 7.4 со старыми картами, ваш единственный вариант открытые драйвера, например, '''xf86-video-ati'''. Хотя Xorg 7.4 поддерживается в Catalyst с 8-10 вплоть до релиза 9-3, эти драйвера не представлены в виде пакетов в Archlinux, так как многие старые карты, имеют проблемы с этими версиями драйвера.<br />
<br />
== Установка ==<br />
<br />
Catalyst был раньше уже собранным пакетом в Arch, находившийся в репозитории <code>extra</code>, но в марте 2009, оффициальная поддержка была прекращена, в связи с неудовлетворительным качеством и скоростью разработки закрытого драйвера. Теперь, [https://aur.archlinux.org/packages.php?ID=22899 драйвер catalyst] и [https://aur.archlinux.org/packages.php?ID=22510 catalyst-utils] доступны в AUR.<br />
<br />
=== Основное Ядро ===<br />
<br />
====kernel26====<br />
<br />
Чтобы установить драйвер ATI для пакета <code>kernel26</code>, вам необходимо установить пакет <code>catalyst</code>, который можно найти в [https://aur.archlinux.org/packages.php?ID=22899 AUR]. Вы можете собрать его с помощью [[makepkg]].<br />
<br />
Этот пакет содержит '''только''' модуль ядра, вместе с ним, устанавливается пакет <code>catalyst-utils</code> как зависимость. Пакет <code>catalyst-utils</code> не зависит от версии ядра и предоставляет библиотеки и утилиты для Xorg, а также включает <code>libGL.so</code> от ATI.<br />
<br />
Для основного ядра это всё. Сконфигурируйте ваш [[Xorg | xorg.conf]] как обычно, если это необходимо.<br />
<br />
=== Собственное Ядро ===<br />
<br />
Для установки catalyst для собственного ядра, вам необходимо собрать свой пакет <code>catalyst-$kernel</code>, содержащий модуль ядра, непосредственно для вашего ядра.<br />
<br />
Если вы не знаете, как создается пакет, после первого прочтения страницы [[ABS]] в вики, всё должно быть проще.<br />
<br />
==== Получение PKGBUILD ====<br />
Получить файлы <code>PKGBUILD</code> и <code>catalyst.install</code> можно из [https://aur.archlinux.org/packages.php?ID=22899 AUR].<br />
<br />
==== Редактирование PKGBUILD и сборка ====<br />
Здесь необходимо сделать три вещи: <br />
<br />
'''Первое''', измените<br />
pkgname=catalyst<br />
в<br />
pkgname=catalyst-KERNEL_NAME<br />
где KERNEL_NAME такое, которое вам нужно (например custom, mm)<br />
<br />
'''Второе''', удалите <code>kernel26</code> из списка зависимостей.<br />
<br />
Третье, соберите и установите пакет. (<code>makepkg -i</code> или <code>makepkg</code> и потом <code>pacman -U pkgname.pkg.tar.gz</code>)<br />
<br />
==== Заметки ====<br />
* Если вы используете несколько ядер, тогда установите пакет catalyst для всех них. Они не должны конфликтовать между собой.<br />
<br />
* Никаких изменений в пакет <code>catalyst-utils</code> вносить не нужно, так как он полностью независит от версий ядра. '''Главное''' скомпилировать модуль ядра.<br />
<br />
=== Установщик ATI/AMD ===<br />
{{Warning| Использование установщика с ati.com/amd.com очень НЕ рекомендуется!}}<br />
<br />
Использование его может привести к конфликтам файлов с различным пакетами и возможно вызовет ошибки в X. Вместо него должны использоваться пакеты, доступные через pacman и сконфигурированные специально для Arch Linux.<br />
<br />
Если вы пытаетесь вручную установить оффициальный установщик и обнаружили, что ничего не работает, удалите его, скрипт удаления расположен в /usr/share/ati - запустите его, после установите пакеты, собранные для pacman.<br />
<br />
Если вы ''упорно'' по каким-то причинам, хотите использовать установщик ATI/AMD (хоть это и неправильный путь установки драйвера), следование этим шагам '''может быть''' поможет вам:<br />
<br />
*Скачайте установщик драйвер с оффициального сайта AMD/ATI.<br />
*Сделайте его исполняющимся.<br />
*Откройте эмулятор терминала (например Konsole) как root.<br />
*Установите пакет mesa<br />
pacman -S mesa<br />
*Установите Xorg (если вы не установили его раньше).<br />
*Проверьте остальные зависимости для установщика ATI/AMD перечисленные на оффициальном сайте<br />
#pacman -Q | grep ИмяПакета<br />
*Используйте aticonfig, как описано ниже, для обновления xorg.conf<br />
*Добавьте в ModulesPath, путь к модулю fglrx.so, в xorg.conf, если это необходимо.<br />
<br />
== Конфигурация ==<br />
ATI предлагает утилиту <code>aticonfig</code>, для изменения существующего файла <code>xorg.conf</code> и полной конфигурации карты. Для получения списка опций запустите <code>aticonfig</code>:<br />
<br />
$ aticonfig --help<br />
<br />
Если у вас нет файла xorg.conf, запустите следующую команду, для его создания:<br />
# Xorg -configure<br />
<br />
Простой путь использования <code>aticonfig</code> для адаптации вашего файла <code>xorg.conf</code> показан в примерах в конце вывода, если запустить <code>aticonfig</code> без передачи ему параметров:<br />
Examples:<br />
1. Setting up fglrx for the first time.<br />
Single head : aticonfig --initial --input=/etc/X11/xorg.conf<br />
Dual head : aticonfig --initial=dual-head --screen-layout=above<br />
This command will generate a dual head configuration<br />
file with the second screen located above the first<br />
screen.<br />
<br />
Просто измените одну из двух строк, для ваших настроек.<br />
<br />
{{Warning| Обязательно посмотрите сгенерированный xorg.conf до того, как вы его скопируете в /etc/X11/xorg.conf и запустите startx или перезагрузитесь. Иначе, вы вероятно получите пустой экран и не сможете работать со своей системой.}} Конфигурационный файл созданный в предыдущих шагах не всегда генерируется правильно. Если вы хотите, вы можете сравнить сгенерированный файл с одним из [Xorg_(Русский)#.D0.9F.D1.80.D0.B8.D0.BC.D0.B5.D1.80.D1.8B_.D1.84.D0.B0.D0.B9.D0.BB.D0.BE.D0.B2_xorg.conf| Примеров файлов Xorg.conf]] показанных на странице вики Xorg.<br />
<br />
Проверьте, чтобы в секции "Screen" у вас было "DefaultDepth 24", а также в секции "DRI" опция "Mode 666". Драйверу fglrx необходимы эти строки для нормальной работы, но сгенерированный автоматически предыдущей программой файл не добавляет их. Без этих линий вы можете получить нерабочий пустой экран после перзагрузки. Кроме этого, сейчас многие параметры автоматически определяются в последних Xorg, поэтому нет необходимости описывать все параметры в xorg.conf, как это делалось раньше в старых версиях Xorg.<br />
Даже некоторые созданные сеекции/значения в сгенерированном xorg.conf излишни.<br />
<br />
Вот минимальный рабочий вариант для примера:<br />
<pre><br />
Section "ServerLayout"<br />
Identifier "X.org Configured"<br />
Screen 0 "Screen0" 0 0<br />
InputDevice "Mouse0" "CorePointer"<br />
InputDevice "Keyboard0" "CoreKeyboard"<br />
EndSection<br />
<br />
Section "Files"<br />
RgbPath "/usr/share/X11/rgb"<br />
ModulePath "/usr/lib/xorg/modules"<br />
FontPath "/usr/share/fonts/misc"<br />
FontPath "/usr/share/fonts/100dpi:unscaled"<br />
FontPath "/usr/share/fonts/75dpi:unscaled"<br />
FontPath "/usr/share/fonts/TTF"<br />
FontPath "/usr/share/fonts/Type1"<br />
EndSection<br />
<br />
Section "Module"<br />
Load "extmod"<br />
Load "dbe"<br />
Load "xtrap"<br />
Load "record"<br />
Load "dri"<br />
Load "glx"<br />
Load "GLcore"<br />
Load "freetype"<br />
EndSection<br />
<br />
Section "InputDevice"<br />
Identifier "Keyboard0"<br />
Driver "kbd"<br />
EndSection<br />
<br />
Section "InputDevice"<br />
Identifier "Mouse0"<br />
Driver "mouse"<br />
Option "Protocol" "auto"<br />
Option "Device" "/dev/input/mice"<br />
Option "ZAxisMapping" "4 5 6 7"<br />
EndSection<br />
<br />
Section "Monitor"<br />
Identifier "Monitor0"<br />
VendorName "Monitor Vendor"<br />
ModelName "Monitor Model"<br />
EndSection<br />
<br />
Section "Device"<br />
Identifier "Card0"<br />
Driver "fglrx"<br />
VendorName "ATI Technologies Inc"<br />
BoardName "Radeon Mobility X1400"<br />
BusID "PCI:1:0:0"<br />
EndSection<br />
<br />
Section "Screen"<br />
Identifier "Screen0"<br />
Device "Card0"<br />
Monitor "Monitor0"<br />
DefaultDepth 24<br />
SubSection "Display"<br />
Viewport 0 0<br />
Depth 24<br />
EndSubSection<br />
EndSection<br />
<br />
Section "DRI"<br />
Mode 0666<br />
EndSection<br />
</pre><br />
<br />
Теперь, убедитесь, что модуль fglrx и все необходимые модули (такие как agp) загружены. <br />
<br />
<pre><br />
# modprobe fglrx <br />
</pre><br />
<br />
Добавьте его в строку '''MODULES''' файла /etc/rc.conf, чтобы он загружался при каждом запуске. <br />
<br />
В конце, запустите Xorg с помощью <code>startx</code> или используя GDM/KDM/SLiM и проверьте наличие ускорения следующей коммандой в терминале:<br />
$ glxinfo | grep direct<br />
Если есть фраза "direct rendering: yes" тогда все хорошо! Если команда glxinfo не найдена, установите пакет mesa и попробуйте еще раз.<br />
<br />
{{Warning| В предыдущих версиях Xorg, пути к библиотекам были другими. В некторых случаях, '''libGL.so''' не может корректно загрузится, если они указаны не верно. Не забудьте проверить их, если GL не работает. А также прочитайте секцию "Возможные Проблемы".}}<br />
<br />
== Возможные проблемы ==<br />
<br />
=== Флажок/Checkbox не прорисовывается в OpenGL программах ===<br />
''Это было исправлено в catalyst ''' 8.9.''' Однако, может происходить и в более поздних версиях.''<br />
<br />
OpenGL программы, такие как blender, в оконном режиме, неверно отрисовывают флажок/checkbox.<br />
Это можно решить используя настройки Виртуального режима, добавив к настоящему разрешению 64, например, 1664 вместо 1600 для ширины:<br />
<br />
Section "Screen"<br />
Identifier "Screen0"<br />
Device "Card0"<br />
Monitor "Monitor0"<br />
SubSection "Display"<br />
Depth 24<br />
Virtual 1664 1200<br />
EndSubSection<br />
EndSection<br />
<br />
===Черный экран, с полным зависанием системы после перезагрузки или запуска startx===<br />
<br />
==== Повреждение базы данных amdpcsdb ====<br />
<br />
Fglrx и его Catalyst Control Center сохраняют информацию в базе данных, которая называется '''amdpcsdb''', расположенная в '''/etc/ati'''. Она не читабельна, только Catalyst Control Center может её использовать. Это может произойти после обновления, настройки не совместимые с новой версией fglrx, приводят к чёрному экрану при запуске X. <br />
<br />
Можно попробовать одну вещь.<br />
<br />
Загрузитесь в режим init3 (добавьте число 3 в строке опций ядра в menu.lst)<br />
<br />
(как root)<br />
<br />
# rm /etc/ati/amdpcsdb<br />
<br />
и перегрузите Xorg (или просто перегрузитесь).<br />
<br />
{{Warning| Будьте осторожны. Если вы имели сохраненные настройки Catalyst Control Center, после создания нового файла, настройки будут утеряны. Вы должны отредактировать xorg.conf снова, используя '''aticonfig'''.}}<br />
<br />
=== KDM не появляется после выхода из сессии ===<br />
Если при запущенном драйвере '''catalyst''' и вы увидели консоль (tty1) вместо приветствия KDM, когда вышли из сессии, то вы должны сказать KDM, чтобы он перезапускал X-сервер после каждого выхода из сессии:<br />
$ sudo nano /usr/share/config/kdm/kdmrc<br />
<br />
Раскомментируйте следующую строку в секции [X-:*-Core]:<br />
TerminateServer=True<br />
<br />
Теперь, KDM должен отображаться, когда вы выходите с сессии KDE.<br />
<br />
=== Неверное разрешение экрана при запуске менеджера входа ===<br />
Если разрешение вашего менеджера входа к примеру 1600x1200, а вы хотите 1280x1024, вы можете это исправить, используя xorg.conf (новые версии X-сервера, совместно с открытыми драйверами, не нуждаются в xorg.conf, если вы не имеете xorg.conf, то вам необходимо его создать). В секции "Screen" добавьте следующее:<br />
Section "Screen"<br />
Identifier "aticonfig-Screen[0]-0"<br />
Device "aticonfig-Device[0]-0"<br />
Monitor "aticonfig-Monitor[0]-0"<br />
DefaultDepth 24<br />
SubSection "Display"<br />
Viewport 0 0<br />
Depth 24<br />
Modes "1280x1024" "2048x1536"#<-добавьте эту строку для изменения разрешения экрана по умолчанию для менеджера входа<br />
EndSubSection<br />
EndSection<br />
Первый аргумент в режимах разрешения, будет использоваться по умолчанию. Второй аргумент, максимальное разрешение, поддерживаемое вашим монтиором. Это необходимо указать, чтобы можно было выбрать высокое разрешение, например в системных настройках KDE.<br />
<br />
=== Ускорение не работает ===<br />
Это проблема происходит при использовании закрытого драйвера '''catalyst'''.<br />
<br />
{{Warning|Убедитесь что у вас как минимум '''R6xx''' ('''HD2xxx''') или более новая карта, иначе, драйвер '''не будет''' работать. Вы столкнетесь с ошибками при запуске, когда будете использовать catalyst и карту младше R6xx.}}<br />
<br />
{{Warning|Эта ошибка должна также если вы не '''перезагрузили''' вашу систему после установки или обновления catalyst и catalyst-utils. Системе необходимо загрузить модуль fglrx.ko для запуска драйвера.}}<br />
<br />
Если вы имеете проблемы с ускорением, выполните:<br />
$ LIBGL_DEBUG=verbose glxinfo > /dev/null<br />
в коммандной строке. В самом начале вывода, обычно выводится сообщение об ошибке, сообщающая, почему ускорение не работает.<br />
<br />
Стандартные ошибки и их решения:<br />
<br />
'''libGL error: XF86DRIQueryDirectRenderingCapable returned false'''<br />
<br />
* Проверьте, правильный ли для вашего AGP чипсета загружен модуль agp, до того как вы загружаете модуль ядра fglrx. Для определения нужного модуля agp, вам необходимо выполнить <code>hwdetect --show-agp</code> и сравнить что все модули, указанные в этой команде, есть в строке <code>MODULES=</code>, вашего rc.conf и стоят '''до''' fglrx.<br />
<br />
'''libGL error: failed to open DRM: Operation not permitted'''<br />
'''libGL error: reverting to (slow) indirect rendering'''<br />
<br />
* Для этого, убедитесь, что вы имеете следующую секцию <code>xorg.conf</code>:<br />
Section "DRI"<br />
Mode 0666<br />
EndSection<br />
<br />
'''libGL: OpenDriver: trying /usr/lib/xorg/modules/dri//fglrx_dri.so'''<br />
'''libGL error: dlopen /usr/lib/xorg/modules/dri//fglrx_dri.so failed (/usr/lib/xorg/modules/dri//fglrx_dri.so: cannot open shared object file: No such file or directory)'''<br />
'''libGL error: unable to find driver: fglrx_dri.so'''<br />
<br />
* Что-то неверно установилось. Если путь в сообщении об ошибке такой - <code>/usr/X11R6/lib/modules/dri/fglrx_dri.so</code>, выйдите полностью из вашей системы и зайдите снова. Если вы используете графический менеджер входа (gdm, kdm, xdm), убедитесь, что /etc/profile открывается при каждом входе. Это обычно происходит добавлением <code>source /etc/profile</code> в <code>~/.xsession</code> или в <code>~/.xinitrc</code>, но может различаться между менеджерами входа.<br />
<br />
* Если же путь в сообщении об ошибке такой - <code>/usr/lib/xorg/modules/dri/fglrx_dri.so</code>, тогда точно что-то не так. Попробуйте переустановить пакет <code>catalyst-utils</code>.<br />
<br />
<br />
'''fglrx: libGL version undetermined - OpenGL module is using glapi fallback'''<br />
<br />
* Это происходит при наличии нескольких версий библиотек <code>libGL.so</code> в вашей системе. Выполните:<br />
$ sudo updatedb<br />
$ locate libGL.so<br />
<br />
Должно вам вернуть что-то вроде:<br />
$ locate libGL.so<br />
/usr/lib/libGL.so<br />
/usr/lib/libGL.so.1<br />
/usr/lib/libGL.so.1.2<br />
$<br />
<br />
Здесь должно быть только три файла libGL.so для вашей системы. Если вы видите больше (например, <code>/usr/X11R6/lib/libGL.so.1.2</code>), удалите остальные. Это должно помочь вам. <br />
<br />
Вы можете вообще не получить сообщений об ошибках, для определения вашей проблемы. Если вы используете X11R7, проверьте, что вы '''не''' имеете следующих файлов в вашей системе:<br />
/usr/X11R6/lib/libGL.so.1.2<br />
/usr/X11R6/lib/libGL.so.1<br />
<br />
=== Проблемы режимов Hibernate/Sleep ===<br />
==== Проблемы видео при входе в suspend/hibernate ====<br />
Если <code>fglrx</code> возвращает ошибку при попытке приостановки через скрипты hibernate, решением может быть добавление следующей строки в секцию "Device" вашего <code>/etc/X11/xorg.conf</code>, которая разрешит модулю <tt>fglrx</tt> заходит в режим suspend.<br />
<br />
Option "UseInternalAGPGart" "no"<br />
<br />
==== Проблемы видео при возврате из suspend2ram ====<br />
Закрытый драйвер ATI - <tt>catalyst</tt> не может вернуться из suspend, если включен фрэймбуфер. Запретите фрэймбуффер, добавьте '''vga=0''' в опции вашего ядра, в <code>/boot/grub/menu.lst</code>, например:<br />
# (0) Arch Linux<br />
title Arch Linux<br />
root (hd0,0)<br />
kernel /vmlinuz26 root=/dev/sda3 resume=/dev/sda2 ro '''''vga=0'''''<br />
initrd /kernel26.img<br />
<br />
=== Зависание системы ===<br />
<br />
* Для предотвращения зависаний системы, попробуйте добавить следующие строки в секцию "Device" вашего <code>xorg.conf</code><br />
Option "UseInternalAGPGART" "no"<br />
Option "KernelModuleParm" "agplock=0" # AGP блокирует страницы пользователя: выключено<br />
<br />
Примечание: Эти опции не нужны начиная с версии 8.24.18, потому что ATI удалила поддержку встроенного AGP GART из драйвера.<br />
<br />
* Кроме того, известно что, драйвер фрэймбуфера <code>radeonfb</code>, в прошлом вызывал проблемы такого рода. Если ваше ядро собрано с поддержкой radeonfb, попробуйте использовать другое ядро, это должно вам помочь.<br />
<br />
=== Конфликты Железа ===<br />
<br />
Видеокарты Radeon, используемые совместно с некоторыми версиями чипсета nForce3 (например nForce 3 250Gb), не имеют 3D ускорения. Вообще такого рода проблемы неизвестны, но некоторые источники указывают что такое может произойти, для проверки работоспособности ускорения, попробуйте загрузится в Windows с установленными драйверами от nVIDIA и перегрузите систему. Также можно проверить проблему с терминала root следующей командой:<br />
<br />
dmesg | grep agp<br />
<br />
Если вы получите что-то вроде этого (при системе на основе nForce3)<br />
<br />
agpgart: Detected AGP bridge 0<br />
agpgart: Setting up Nforce3 AGP.<br />
agpgart: aperture base > 4G<br />
<br />
и также если запуск этой команды...<br />
<br />
tail -n 100 /var/log/Xorg.0.log | grep agp<br />
<br />
...выдасть что-то вроде:<br />
<br />
(EE) fglrx(0): [agp] unable to acquire AGP, error "xf86_ENODEV"<br />
<br />
Тогда вы имеете именно этот баг.<br />
<br />
Некоторые источники утвержадают, что в этих ситуациях, возврат к старой версии BIOS материнской платы может помочь, но это никто не проверял. Также, неудачный откат BIOS может сделать ваше железо бесполезным, остерегайтесь.<br />
<br />
Смотрите баг http://bugzilla.kernel.org/show_bug.cgi?id=6350 для получения более подробной информации и путях решения.<br />
<br />
=== Ноутбуки Compaq Presario ===<br />
После установки драйвера и редактирования конфигурации как требуется, некоторые ноутбуки (например Presario R4000 with Xpress 200M) стартуют с пустым экраном.<br />
<br />
Проблема заключается в неправильном определении размера памяти ядром (если вы имеете 128М видеопамяти, lspci - v всегда показывает 256М). Измените настройки BIOS чтобы он использовал опцию "SidePort+UMA" и 128М видеопамяти плюс 128М от системы будут замечательно работать.<br />
<br />
Это должно быть баг BIOS или кода PCI в Linux.<br />
<br />
=== Зависания при воспроизведении видео ===<br />
<br />
Эта проблема происходит когда используется закрытый драйвер '''catalyst'''.<br />
<br />
Если у вас возникают зависания от нескольких секунд до нескольких минут, происходящих случайным образом при воспроизведении видео через mplayer, проверьте /var/log/messages.log на предмет таких вот ошибок:<br />
<br />
Nov 28 18:31:56 pandemonium [<c01c64a6>] ? proc_get_sb+0xc6/0x160<br />
Nov 28 18:31:56 pandemonium [<c01c64a6>] ? proc_get_sb+0xc6/0x160<br />
Nov 28 18:31:56 pandemonium [<f8bc628c>] ? ip_firegl_ioctl+0x1c/0x30 [fglrx]<br />
Nov 28 18:31:56 pandemonium [<c01c64a6>] ? proc_get_sb+0xc6/0x160<br />
Nov 28 18:31:56 pandemonium [<c0197038>] ? vfs_ioctl+0x78/0x90<br />
Nov 28 18:31:56 pandemonium [<c01970b7>] ? do_vfs_ioctl+0x67/0x2f0<br />
Nov 28 18:31:56 pandemonium [<c01973a6>] ? sys_ioctl+0x66/0x70<br />
Nov 28 18:31:56 pandemonium [<c0103ef3>] ? sysenter_do_call+0x12/0x33<br />
Nov 28 18:31:56 pandemonium [<c01c64a6>] ? proc_get_sb+0xc6/0x160<br />
Nov 28 18:31:56 pandemonium =======================<br />
<br />
Добавление опции ядра ''nopat'' в /boot/grub/menu.lst и перезагрузка должны решить это проблему.<br />
<br />
= Внешние Ресурсы =<br />
Более подробная информация может быть найдена здесь<br />
* [http://wiki.cchtml.com/index.php/Main_Page Unofficial ATI Wiki (англ.)]<br />
* [http://ati.cchtml.com/buglist.cgi?query_format=specific&order=relevance+desc&bug_status=__open__&product=&content= Unofficial ATI Linux Bugtracker (англ.)]<br />
* [http://www.rage3d.com/board/forumdisplay.php?f=88 Rage3D ATI Linux Forums (англ.)]<br />
* [http://www.thinkwiki.org/wiki/Problems_with_fglrx ThinkWiki fglrx Problems page (англ.)]<br />
* [http://www.phoronix.com/scan.php?page=article&item=560 ATI R300: Open v. Closed Drivers (англ.)] (''устарело'' в начале April 2009)<br />
* [http://www.thinkwiki.org/wiki/Additional_options_for_the_radeon_driver Additional options for the radeon driver (англ.)] (частично устарело, но есть ссылки)<br />
* [http://www.phoronix.com/scan.php?page=article&item=936&num=1 Hidden ATI Feature For Textured XRendering (англ.)]</div>Alligatorhttps://wiki.archlinux.org/index.php?title=Creating_packages_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=193198Creating packages (Русский)2012-04-07T23:07:02Z<p>Alligator: /* Внимание */</p>
<hr />
<div>[[Category:Русский]]<br />
{{i18n|Creating Packages}}<br />
<br />
Документ [[Arch Build System (Русский)|ABS - The Arch Build System]] дает хороший обзор инструментов и файлов, необходимых для создания и изменения пакетов для Arch Linux. Скорее всего, здесь вы найдете все, что нужно знать для настройки или пересборки существующих пакетов. В то же время, если вам нужно создать новый пакет, существует несколько дополнительных статей, которые помогут вам в этом. Этот документ изначально предполагает, что вы прочитали и поняли описание ABS.<br />
<br />
==Подготовка файлов==<br />
Вся информация для создания пакета помещена в файл <code>PKGBUILD</code>. Когда вы запускаете <code>makepkg</code>, он ищет <code>PKGBUILD</code> в текущей рабочей директории и затем собирает приложение из исходного кода, следуя инструкциям в <code>PKGBUILD</code>. После успешной компиляции полученные бинарные файлы, как и вся необходимая метаинформация (такие как версия пакета и зависимости), архивируются в пакетный файл <code>имя.pkg.tar.gz</code>, который легко может быть установлен при помощи команды <code>pacman -Up <имя_файла_пакета></code>.<br />
<br />
Файл <code>PKGBUILD</code> содержит '''все''' инструкции для создания пакета, которые напрямую интерпретируется оболочкой bash (не бойтесь, если ничего не поняли). Переменные, используемые здесь, определены в статье [[Arch Build System (Русский)| ABS]], но наиболее важные/сложные переменные также описаны и здесь. Чтобы создать новый пакет, сперва вы должны создать пустую директорию; предпочтительней назвать ее <code>/var/abs/local/<ИМЯ_ПАКЕТА></code>. В этом случае пакет отлично интегрируется в нормальное ABS-дерево и не затрагивается cvsup, даже когда вы обновляете дерево. Перейдите в директорию пакета и создайте файл <code>PKGBUILD</code> путем копирования прототипа файла пакета <code>/usr/share/pacman/PKGBUILD.proto</code>, либо скопируйте <code>PKGBUILD</code> из другого пакета. Последний способ быстрее, если вам нужно изменить опции компиляции для пакета вместо создания нового.<br />
<br />
Тем не менее с этого момента вам нужен файл <code>PKGBUILD</code> для продолжения работы.<br />
<br />
==Редактирование переменных==<br />
<br />
Откройте файл PKGBUILD и установите значения следующих переменных в зависимости от пакета, который вы собираете:<br />
<br /><br /><br />
*'''pkgname:''' Здесь находится название пакета. Можно использовать только строчные английские буквы. Значение этой переменной большой роли не играет, но может помочь, если установить сюда имя рабочей директории, или, например, имя файла с исходным кодом (*.tar.gz), который требуется загрузить<br />
<br />
*'''pkgver:''' Здесь находится версия пакета. Эта переменная может содержать буквы, цифры, знаки препинания, '''но не может содержать дефисов ("-")'''. Содержимое этой переменной зависит от метода присвоения версий (major.minor.bugfix, major.date, и т.д.) который использует программа. Чтобы следующие шаги были наиболее эффективными и лёгкими, рекомендуется включить номер версии в имя файла с исходным кодом. Внимание! Если разработчик пакета использует дефисы в номере версии, замените их на символы подчёркивания. ('0.99-10' => '0.99_10')<br />
<br />
*'''pkgrel:''' Значение этой переменной представляет из себя число, которое нужно увеличивать каждый раз после новой сборки пакета. При первой сборке пакета значение pkgrel должно быть установлено в "1". Цель этой переменной состоит в том, чтобы различать разные сборки пакета одной и той же версии. ''Например: вы собрали пакет и позже обнаружили, что в исходном коде была ошибка. Вы исправили исходный код, но посчитали не нужным увеличивать версию пакета. '''Вместо этого можно увеличить значение pkgrel. Результат: pacman будет знать, что пакет требует переустановки.''''' Когда к сборке будет готова следующая версия пакета (с измененным '''pkgver'''), значение переменной '''pkgrel''' нужно сбросить в "1".<br />
<br />
*'''pkgdesc:''' Здесь должно быть краткое описание пакета, обычно не более 76 символов. Учтите, что ''краткость - сестра таланта'': <code>OpenGL accelerated X server</code> лучше чем <code>xgl is a OpenGL...</code>.<br />
<br />
*'''arch:''' Здесь должен быть список архитектур, где может быть использован данный PKGBUILD (обычно это "i686"). Значение данной переменной будет записано в <code>$arch</code> и может быть использованно далее в процессе сборки.<br />
<br />
*'''url:''' Здесь должен находиться адрес веб-сайта программы, где заинтересовавшиеся могут получить более подробную информацию о программе.<br />
<br />
*'''license:''' Тип лицензии. Если сомневаетесь, пишите 'unknown'<br />
<br />
*'''depends:''' Список пакетов, разделенный пробелами, которые должны быть установлены до использования пакета. Во избежании проблем, имена пакетов заключаются в апострофы ('), а весь массив в скобки. Используя математическое "больше или равно", можно указать минимальную допустимую версию пакета-зависимости. Пример: пакету требуется glibc и slang, причем slang версии 1.8.0 и выше. '''depends<code>('glibc' 'slang>=</code>1.8.0')'''<br />
<br />
*'''makedepends:''' Список пакетов, которые потребуются для сборки пакета, но которые не нужны для его '''использования'''. Пример: ''<code>unarj</code> может потребоваться во время установки, чтобы распаковать какие-нибудь патчи.''<br />
<br />
*'''provides:''' Список пакетов, необходимость в которых пропадает, так как собираемый пакет выполняет, по крайней мере, похожие функции.<br />
<br />
*'''conflicts:''' Список пакетов, которые, если установлены, могут создать проблемы во время использования собираемого пакета.<br />
<br />
*'''replaces:''' Список пакетов, которые заменит собираемый пакет.<br />
<br />
*'''source:''' Список файлов, которые потребуются во время сборки пакета. Естественно, здесь должна быть ссылка на архив с исходным кодом программы (в большинстве случаев такая ссылка представляет из себя HTTP или FTP ссылку, заключённую в кавычки). Образец <code>PKGBUILD</code>-файла демонстрирует, как в названии и версии файла могут быть использованны предыдущие переменные. Если вы обнаружите, что некоторые файлы не могут быть скачены на лету, например, какие-нибудь самопальные патчи, вы можете поместить их в одну и ту же папку с <code>PKGBUILD</code>'ом и добавить их имена в список '''source'''. Любые локальные пути, указанные в этой переменной, будут разрешаться относительно <code>PKGBUILD</code>-файла. Перед сборкой, все файлы из этого списка будут проверены и при необходимости загружены; если обнаружатся проблемы, <code>makepkg</code> не будет продолжать сборку.<br />
<br />
*'''md5sums:''' Список контрольных сумм для файлов из предыдущей переменной, разделенных пробелами и заключённых в апострофы. Как только станут доступны все файлы из списка source, md5 суммы файлов будут автоматически сгенерированны и проверены на соответствие с этим списком. Критическое значение имеет порядок сумм в этой переменной, так как makepkg не будет гадать, какому файлу какая сумма соответствует. К первому файлу из списка source относится первая md5-сумма из списка md5sums, ко второму - вторая, и т.д.. Во избежании путаницы, контрольные суммы могут быть легко и просто сгенерированны командой <code>makepkg -g</code> (после того как будет обозначен список source) в директории с <code>PKGBUILD</code>'ом. <code>makepkg -g >> PKGBUILD</code> сгенерирует md5-суммы и запишет их в конец <code>PKGBUILD</code>, откуда они могут быть перемещены в любое другое место <code>PKGBUILD</code>-файла.<br />
<br />
И так, мы установили мета-информацию пакета - список зависимостей, конфликтов, список файлов для загрузки и т.д. Следующие шаги - непосредственная сборка и установка пакета. <br />
--[[User:Oleg-A|Oleg-A]] 08:09, 6 July 2008 (EDT)<br />
<br />
==Использование исходного кода==<br />
Теперь вам надо скачать архив с исходным кодом, распаковать его и обратить внимание на команды, необходимые для сборки и установки. Содержимое функции <code>build()</code> в вашем <code>PKGBUILD</code> будет в точности повторять эти шаги ещё раз, но с небольшими изменениями, чтобы сделать готовый к утановке пакет, как только закончится компиляция.<br />
<br />
Сейчас вам скорее всего потребуется изменить содержимое функции <code>build()</code> в <code>PKGBUILD</code> файле. Она использует синтаксис bash и стандартные команды оболочки. Эта функция в основном используется для автоматической компиляции программ. Она создает директорию <code>pkg</code>, в которую затем устанавливает программу, позволяя <code>makepkg</code> таким образом создать пакет без необходимости использования файлов из остальной части файловой системы.<br />
<br />
===Функция build()===<br />
<br />
Обычно первым шагом в этой функции меняют рабочую директорию на одну из созданных при распаковке исходного кода. Для этого вы можете использовать переменную <code>$startdir</code>, которая ссылается на директорию с файлом <code>PKGBUILD</code>. Вы также можете использовать объявленные <code>$pkgname</code> и <code>$pkgver</code>. Например, в зависимости от имени распакованной makepkg директории, первая комманда в функции <code>build()</code> может быть <code>cd $startdir/src/$pkgname-$pkgver</code>, что бывает очень часто, если только автор программы не очень-очень злой человек.<br />
<br />
Более сложная часть — компиляция. Предположим, вам удалось вручную собрать программу, так как скорее всего все шаги для этого здесь описать не удастся. В конце концов, это именно то, что её автор должен описать в файлах README и INSTALL.<br />
<br />
Теперь, когда вы находитесь в нужной директории, вы должны выяснить, какие необходимы команды для сборки пакета. В самых простых случаях можно использовать <code>./configure; make</code>, хотя существуют десятки разновидностей, включая <code>ant build</code> либо использование комманд <code>gcc</code> для компиляции.<br />
<br />
Хорошо то, что если вам уже удалось вручную собрать пакет, то вам всего лишь надо записать команды, которые вы использовали, после чего всё должно работать нормально. Так как множество пакетов любят устанавливать себя в <code>/usr/local</code>, а Arch Linux предпочитает использовать только <code>/usr</code>, вам, вероятно, захочется задать параметр скрипту configure или команде make, который об этом позаботится. Оригинал <code>PKGBUILD</code> служит примером этого, хотя он может работать по-разному. <br />
<br />
Cледующий шаг в функщии <code>build()</code> — установить скомпилированные файлы в место, где <code>makepkg</code> cможет достать их и создать пакет. Это <code>pkg</code> директория. Она нужна для имитации корня вашей файловой системы для процедуры установки программы. Все файлы, которые надо установить в вашу файловую систему, должны там находиться в точно такой же структуре директорий(т.е. если вы хотите установить файл <code>myprog</code> в <code>/usr/bin</code>, его надо поместить в <code>$startdir/pkg/usr/bin</code>). К счатью, мало программ требуют, чтобы пользователь копировал десятки файлов вручную. Вместо этого они предоставляют некоторую процедуру установки, которая делает это автоматически и часто запускается командой "make install". Однако, очень важно чтобы вы знали, как сказать этой процедуре, что она должна поместить все свои файлы не в / , а в <code>$startdir/pkg/</code>! Иначе, вы получите пустой пакет и бинарные файлы установленной программы "правильно" скопированные сразу в систему. В основном, вам надо будет передать параметр prefix вызову make install как показано в оригинальном файле, но также весьма возможно, что программа требует другого подхода:<br />
<br />
* Часто в <code>configure</code> можно указать prefix, который указывает, куда надо устанавливать программу. Например, вы можете использовать в конфигурации <code>./configure --prefix=$startdir/pkg/usr</code>.<br />
<br />
* Иногда ндао указывать <code>PREFIX</code> при запуске <code>make install</code>. Иногда её задают как переменную, а иногда указывают в команде. В худшем случае, вам придется отредактировать один или несколько Makefile-ов (или файлов с настройками ant, если этот проект использует его) при помощи sed-а или самодельного патча.<br />
<br />
* Бывают другие типы установочных скриптов, которые позволяют указать место установки программы.<br />
<br />
* Иногда, программу надо запускать из одной директории. Тогда следует просто скопировать её в <code>$startdir/pkg/opt</code>.<br />
<br />
Как вы наверно уже догадались, это часть, где преобретенные знания и опыт становятся необходимыми. Очень полезным оказывается просматривание <code>PKGBUILD</code>ов в дереве ABS, так как они работают и содержат некоторые трюки, которые могут оказаться полезными.<br />
<br />
Очень часто программа установки программы создаст нужные директории в <code>pkg/</code>. Если же она этого не делает, у вас будет много ошибок на стадии установки, так как файлы будут копироваться в несуществующие директории. В этом случае вам надо будет создать их добавляя команды <code>mkdir</code> в функцию <code>build()</code> перед запуском процедуры установки. Конечно, структура директорий зависит от пакета: некоторым программам надо поместить свой код в <code>/etc</code> или <code>/usr</code>, а другие используют <code>/bin</code> или <code>/opt</code>.<br />
<br />
==Тестирование PKGBUILD'а==<br />
<br />
Когда вы пишете функцию <code>build()</code> , вам захочется часто проверять ваши изменения, чтобы убедиться в отсутствии ошибок. Вы можете сделать это, используя команду <code>makepkg</code> в директории, содержащей <code>PKGBUILD</code>. С правильно отформатированным <code>PKGBUILD</code>ом, эта операция создаст пакет. В противном случае появится сообщение об ошибке. Надеемся, что оно будет информативным!<br />
<br />
<br />
Если запуск <code>makepkg</code> был успешным, будет создан новый файл $pkgname-$pkgver.pkg.tar.gz в рабочей директории. Этот пакет можно установить, запустив <code>pacman -U <package file></code> или <code>pacman -A</code>, а также добавить в локальный или web репозиторий. Заметьте: то, что пакет был создан, не означает, что он работает! Он может содержать только структуру каталогов, если вы неправильно указали prefix. Вы можете использовать функции проверки(query) pacman-а для отображения списка файлов в пакете, его зависимостей и сравнить их с вашими ожиданиями. Это можно сделать, выполнив <code>pacman -Qlp <package file></code> или <code>pacman -Qip <package file></code>.<br />
<br />
Если с пакетом все в порядке, больше ничего делать не нужно. Если же вы планируете опубликовать пакет или PKGBUILD, обязательно проверьте, перепроверьте, а потом перепроверьте еще раз содержимое списка зависимостей. Он должен включать в себя список всех пакетов, которые необходимо установить для нормальной работы вашего пакета. Обязательно должны быть указаны зависимости первого уровня.<br />
<br />
Например, <code>gtk2</code> зависит от <code>glib2</code>. Как и большинству программ с открытыми исходниками, написанным на C, ему так же требуется <code>glibc</code>. Тем не менее, <code>glibc</code> не нужно указывать как зависимость для <code>gtk2</code>, потому что это - зависимость <code>glib2</code>, а <code>glib2</code> уже есть в списках зависимостей для <code>gtk2</code>.<br />
<br />
Существуют разные средства для проверки зависимостей. В том числе, <code>namcap</code>, написанный Jason Chu (<code>pacman -S namcap</code>), а так же менее известная программа <code>ldd</code>. Для дополнительной информации ознакомьтесь со страницами руководства этих программ. Еще можно прочитать документацию к программе и посетить сайт разработчиков (на некоторых есть отдельная страница, на которой указаны зависимости (dependencies)).<br />
<br />
==Тестирование пакета== <br />
Кроме того, убедитесь, что бинарный пакет запускается без ошибок! Это действительно раздражительно выпустить пакет, который содержит все необходимые файлы, но не работает из-за какой-то опции, которая не очень хорошо работает с остальной системой. Если вы собираетесь компилировать пакет только для собственной системы, то вам не нужно слишком беспокоиться по поводу качества этого шага,так как в конце концов вы — единственный человек, страдающий от ошибок.<br />
<br />
==Резюмируя вышесказанное==<br />
* Скачайте архив с исходными кодами программы, которую вы хотите превратить в пакет.<br />
* Попробуйте собрать пакет и установить его в произвольный каталог.<br />
* Скопируйте прототип файла пакета <code>/var/abs/PKGBUILD.proto</code> в файл <code>PKGBUILD</code> во временном рабочем каталоге.<br />
* Отредактируйте файл PKGBUILD в соответствии с потребностями пакета.<br />
* Запустите <code>makepkg</code> и убедитесь, что полученный пакет собрался корретно.<br />
* В случае неудачи повторите предыдущие два шага.<br />
<br />
==Полезные ссылки==<br />
* [[Arch Build System (Русский) | ABS - The Arch Build System]]<br />
* [http://www.archlinux.org/pacman/makepkg.8.html makepkg man page]<br />
* [[Makepkg|makepkg tutorial]]<br />
* [[Arch CVS & SVN PKGBUILD guidelines]]<br />
<br />
==Внимание==<br />
* Прежде чем вы сможете автоматизировать процесс сборки пакетов, надо собрать все вручную хотя бы один раз, чтобы ''точно'' знать, что вы будете делать заранее. К сожалению, несмотря на то, что большое количество авторов программ придерживаются варианта сборки в три этапа: "./configure; make; make install" - это не всегда самый подходящий вариант. Придерживайтесь правила: если вы не можете скомпилировать программу из архива с исходниками и сделать так, чтобы она самостоятельно устанавливалась в определенную временную директорию, не надо даже пытаться сделать пакет. <code>makepkg</code> не сможет совершить великого колдунства, способного убрать недостатки исходников.<br />
* В некоторых случаях, пакеты не доступны даже в качестве исходников, и вам придется воспользоваться чем-нибудь типа <br />
<code>sh installer.run</code> чтобы заставить их работать. Вам придется провести некоторые исследования (почитать README, инструкции по установке, справочные руководства, возможно воспользоваться ebuild-ами из gentoo или другими установщики пакетов, возможно даже MAKEFILE'ами или исходниками). В худшем случае, придется редактировать исходные файлы. Тем не менее, <code>makepkg</code> должен быть абсолютно автономным, без пользовательского участия. Так что если есть необходимость редактировать Makefile'ы, возможно вам понадобится сделать отдельный патч с <code>PKGBUILDом</code> и устанавливать его из функции <code>build()</code>, или можно применить несколько команд с <code>sed</code> из этой же функции.<br />
* Запомните: то, что пакет был собран успешно, не значит, что он работает!</div>Alligatorhttps://wiki.archlinux.org/index.php?title=Creating_packages_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=193197Creating packages (Русский)2012-04-07T23:05:26Z<p>Alligator: /* Внимание */</p>
<hr />
<div>[[Category:Русский]]<br />
{{i18n|Creating Packages}}<br />
<br />
Документ [[Arch Build System (Русский)|ABS - The Arch Build System]] дает хороший обзор инструментов и файлов, необходимых для создания и изменения пакетов для Arch Linux. Скорее всего, здесь вы найдете все, что нужно знать для настройки или пересборки существующих пакетов. В то же время, если вам нужно создать новый пакет, существует несколько дополнительных статей, которые помогут вам в этом. Этот документ изначально предполагает, что вы прочитали и поняли описание ABS.<br />
<br />
==Подготовка файлов==<br />
Вся информация для создания пакета помещена в файл <code>PKGBUILD</code>. Когда вы запускаете <code>makepkg</code>, он ищет <code>PKGBUILD</code> в текущей рабочей директории и затем собирает приложение из исходного кода, следуя инструкциям в <code>PKGBUILD</code>. После успешной компиляции полученные бинарные файлы, как и вся необходимая метаинформация (такие как версия пакета и зависимости), архивируются в пакетный файл <code>имя.pkg.tar.gz</code>, который легко может быть установлен при помощи команды <code>pacman -Up <имя_файла_пакета></code>.<br />
<br />
Файл <code>PKGBUILD</code> содержит '''все''' инструкции для создания пакета, которые напрямую интерпретируется оболочкой bash (не бойтесь, если ничего не поняли). Переменные, используемые здесь, определены в статье [[Arch Build System (Русский)| ABS]], но наиболее важные/сложные переменные также описаны и здесь. Чтобы создать новый пакет, сперва вы должны создать пустую директорию; предпочтительней назвать ее <code>/var/abs/local/<ИМЯ_ПАКЕТА></code>. В этом случае пакет отлично интегрируется в нормальное ABS-дерево и не затрагивается cvsup, даже когда вы обновляете дерево. Перейдите в директорию пакета и создайте файл <code>PKGBUILD</code> путем копирования прототипа файла пакета <code>/usr/share/pacman/PKGBUILD.proto</code>, либо скопируйте <code>PKGBUILD</code> из другого пакета. Последний способ быстрее, если вам нужно изменить опции компиляции для пакета вместо создания нового.<br />
<br />
Тем не менее с этого момента вам нужен файл <code>PKGBUILD</code> для продолжения работы.<br />
<br />
==Редактирование переменных==<br />
<br />
Откройте файл PKGBUILD и установите значения следующих переменных в зависимости от пакета, который вы собираете:<br />
<br /><br /><br />
*'''pkgname:''' Здесь находится название пакета. Можно использовать только строчные английские буквы. Значение этой переменной большой роли не играет, но может помочь, если установить сюда имя рабочей директории, или, например, имя файла с исходным кодом (*.tar.gz), который требуется загрузить<br />
<br />
*'''pkgver:''' Здесь находится версия пакета. Эта переменная может содержать буквы, цифры, знаки препинания, '''но не может содержать дефисов ("-")'''. Содержимое этой переменной зависит от метода присвоения версий (major.minor.bugfix, major.date, и т.д.) который использует программа. Чтобы следующие шаги были наиболее эффективными и лёгкими, рекомендуется включить номер версии в имя файла с исходным кодом. Внимание! Если разработчик пакета использует дефисы в номере версии, замените их на символы подчёркивания. ('0.99-10' => '0.99_10')<br />
<br />
*'''pkgrel:''' Значение этой переменной представляет из себя число, которое нужно увеличивать каждый раз после новой сборки пакета. При первой сборке пакета значение pkgrel должно быть установлено в "1". Цель этой переменной состоит в том, чтобы различать разные сборки пакета одной и той же версии. ''Например: вы собрали пакет и позже обнаружили, что в исходном коде была ошибка. Вы исправили исходный код, но посчитали не нужным увеличивать версию пакета. '''Вместо этого можно увеличить значение pkgrel. Результат: pacman будет знать, что пакет требует переустановки.''''' Когда к сборке будет готова следующая версия пакета (с измененным '''pkgver'''), значение переменной '''pkgrel''' нужно сбросить в "1".<br />
<br />
*'''pkgdesc:''' Здесь должно быть краткое описание пакета, обычно не более 76 символов. Учтите, что ''краткость - сестра таланта'': <code>OpenGL accelerated X server</code> лучше чем <code>xgl is a OpenGL...</code>.<br />
<br />
*'''arch:''' Здесь должен быть список архитектур, где может быть использован данный PKGBUILD (обычно это "i686"). Значение данной переменной будет записано в <code>$arch</code> и может быть использованно далее в процессе сборки.<br />
<br />
*'''url:''' Здесь должен находиться адрес веб-сайта программы, где заинтересовавшиеся могут получить более подробную информацию о программе.<br />
<br />
*'''license:''' Тип лицензии. Если сомневаетесь, пишите 'unknown'<br />
<br />
*'''depends:''' Список пакетов, разделенный пробелами, которые должны быть установлены до использования пакета. Во избежании проблем, имена пакетов заключаются в апострофы ('), а весь массив в скобки. Используя математическое "больше или равно", можно указать минимальную допустимую версию пакета-зависимости. Пример: пакету требуется glibc и slang, причем slang версии 1.8.0 и выше. '''depends<code>('glibc' 'slang>=</code>1.8.0')'''<br />
<br />
*'''makedepends:''' Список пакетов, которые потребуются для сборки пакета, но которые не нужны для его '''использования'''. Пример: ''<code>unarj</code> может потребоваться во время установки, чтобы распаковать какие-нибудь патчи.''<br />
<br />
*'''provides:''' Список пакетов, необходимость в которых пропадает, так как собираемый пакет выполняет, по крайней мере, похожие функции.<br />
<br />
*'''conflicts:''' Список пакетов, которые, если установлены, могут создать проблемы во время использования собираемого пакета.<br />
<br />
*'''replaces:''' Список пакетов, которые заменит собираемый пакет.<br />
<br />
*'''source:''' Список файлов, которые потребуются во время сборки пакета. Естественно, здесь должна быть ссылка на архив с исходным кодом программы (в большинстве случаев такая ссылка представляет из себя HTTP или FTP ссылку, заключённую в кавычки). Образец <code>PKGBUILD</code>-файла демонстрирует, как в названии и версии файла могут быть использованны предыдущие переменные. Если вы обнаружите, что некоторые файлы не могут быть скачены на лету, например, какие-нибудь самопальные патчи, вы можете поместить их в одну и ту же папку с <code>PKGBUILD</code>'ом и добавить их имена в список '''source'''. Любые локальные пути, указанные в этой переменной, будут разрешаться относительно <code>PKGBUILD</code>-файла. Перед сборкой, все файлы из этого списка будут проверены и при необходимости загружены; если обнаружатся проблемы, <code>makepkg</code> не будет продолжать сборку.<br />
<br />
*'''md5sums:''' Список контрольных сумм для файлов из предыдущей переменной, разделенных пробелами и заключённых в апострофы. Как только станут доступны все файлы из списка source, md5 суммы файлов будут автоматически сгенерированны и проверены на соответствие с этим списком. Критическое значение имеет порядок сумм в этой переменной, так как makepkg не будет гадать, какому файлу какая сумма соответствует. К первому файлу из списка source относится первая md5-сумма из списка md5sums, ко второму - вторая, и т.д.. Во избежании путаницы, контрольные суммы могут быть легко и просто сгенерированны командой <code>makepkg -g</code> (после того как будет обозначен список source) в директории с <code>PKGBUILD</code>'ом. <code>makepkg -g >> PKGBUILD</code> сгенерирует md5-суммы и запишет их в конец <code>PKGBUILD</code>, откуда они могут быть перемещены в любое другое место <code>PKGBUILD</code>-файла.<br />
<br />
И так, мы установили мета-информацию пакета - список зависимостей, конфликтов, список файлов для загрузки и т.д. Следующие шаги - непосредственная сборка и установка пакета. <br />
--[[User:Oleg-A|Oleg-A]] 08:09, 6 July 2008 (EDT)<br />
<br />
==Использование исходного кода==<br />
Теперь вам надо скачать архив с исходным кодом, распаковать его и обратить внимание на команды, необходимые для сборки и установки. Содержимое функции <code>build()</code> в вашем <code>PKGBUILD</code> будет в точности повторять эти шаги ещё раз, но с небольшими изменениями, чтобы сделать готовый к утановке пакет, как только закончится компиляция.<br />
<br />
Сейчас вам скорее всего потребуется изменить содержимое функции <code>build()</code> в <code>PKGBUILD</code> файле. Она использует синтаксис bash и стандартные команды оболочки. Эта функция в основном используется для автоматической компиляции программ. Она создает директорию <code>pkg</code>, в которую затем устанавливает программу, позволяя <code>makepkg</code> таким образом создать пакет без необходимости использования файлов из остальной части файловой системы.<br />
<br />
===Функция build()===<br />
<br />
Обычно первым шагом в этой функции меняют рабочую директорию на одну из созданных при распаковке исходного кода. Для этого вы можете использовать переменную <code>$startdir</code>, которая ссылается на директорию с файлом <code>PKGBUILD</code>. Вы также можете использовать объявленные <code>$pkgname</code> и <code>$pkgver</code>. Например, в зависимости от имени распакованной makepkg директории, первая комманда в функции <code>build()</code> может быть <code>cd $startdir/src/$pkgname-$pkgver</code>, что бывает очень часто, если только автор программы не очень-очень злой человек.<br />
<br />
Более сложная часть — компиляция. Предположим, вам удалось вручную собрать программу, так как скорее всего все шаги для этого здесь описать не удастся. В конце концов, это именно то, что её автор должен описать в файлах README и INSTALL.<br />
<br />
Теперь, когда вы находитесь в нужной директории, вы должны выяснить, какие необходимы команды для сборки пакета. В самых простых случаях можно использовать <code>./configure; make</code>, хотя существуют десятки разновидностей, включая <code>ant build</code> либо использование комманд <code>gcc</code> для компиляции.<br />
<br />
Хорошо то, что если вам уже удалось вручную собрать пакет, то вам всего лишь надо записать команды, которые вы использовали, после чего всё должно работать нормально. Так как множество пакетов любят устанавливать себя в <code>/usr/local</code>, а Arch Linux предпочитает использовать только <code>/usr</code>, вам, вероятно, захочется задать параметр скрипту configure или команде make, который об этом позаботится. Оригинал <code>PKGBUILD</code> служит примером этого, хотя он может работать по-разному. <br />
<br />
Cледующий шаг в функщии <code>build()</code> — установить скомпилированные файлы в место, где <code>makepkg</code> cможет достать их и создать пакет. Это <code>pkg</code> директория. Она нужна для имитации корня вашей файловой системы для процедуры установки программы. Все файлы, которые надо установить в вашу файловую систему, должны там находиться в точно такой же структуре директорий(т.е. если вы хотите установить файл <code>myprog</code> в <code>/usr/bin</code>, его надо поместить в <code>$startdir/pkg/usr/bin</code>). К счатью, мало программ требуют, чтобы пользователь копировал десятки файлов вручную. Вместо этого они предоставляют некоторую процедуру установки, которая делает это автоматически и часто запускается командой "make install". Однако, очень важно чтобы вы знали, как сказать этой процедуре, что она должна поместить все свои файлы не в / , а в <code>$startdir/pkg/</code>! Иначе, вы получите пустой пакет и бинарные файлы установленной программы "правильно" скопированные сразу в систему. В основном, вам надо будет передать параметр prefix вызову make install как показано в оригинальном файле, но также весьма возможно, что программа требует другого подхода:<br />
<br />
* Часто в <code>configure</code> можно указать prefix, который указывает, куда надо устанавливать программу. Например, вы можете использовать в конфигурации <code>./configure --prefix=$startdir/pkg/usr</code>.<br />
<br />
* Иногда ндао указывать <code>PREFIX</code> при запуске <code>make install</code>. Иногда её задают как переменную, а иногда указывают в команде. В худшем случае, вам придется отредактировать один или несколько Makefile-ов (или файлов с настройками ant, если этот проект использует его) при помощи sed-а или самодельного патча.<br />
<br />
* Бывают другие типы установочных скриптов, которые позволяют указать место установки программы.<br />
<br />
* Иногда, программу надо запускать из одной директории. Тогда следует просто скопировать её в <code>$startdir/pkg/opt</code>.<br />
<br />
Как вы наверно уже догадались, это часть, где преобретенные знания и опыт становятся необходимыми. Очень полезным оказывается просматривание <code>PKGBUILD</code>ов в дереве ABS, так как они работают и содержат некоторые трюки, которые могут оказаться полезными.<br />
<br />
Очень часто программа установки программы создаст нужные директории в <code>pkg/</code>. Если же она этого не делает, у вас будет много ошибок на стадии установки, так как файлы будут копироваться в несуществующие директории. В этом случае вам надо будет создать их добавляя команды <code>mkdir</code> в функцию <code>build()</code> перед запуском процедуры установки. Конечно, структура директорий зависит от пакета: некоторым программам надо поместить свой код в <code>/etc</code> или <code>/usr</code>, а другие используют <code>/bin</code> или <code>/opt</code>.<br />
<br />
==Тестирование PKGBUILD'а==<br />
<br />
Когда вы пишете функцию <code>build()</code> , вам захочется часто проверять ваши изменения, чтобы убедиться в отсутствии ошибок. Вы можете сделать это, используя команду <code>makepkg</code> в директории, содержащей <code>PKGBUILD</code>. С правильно отформатированным <code>PKGBUILD</code>ом, эта операция создаст пакет. В противном случае появится сообщение об ошибке. Надеемся, что оно будет информативным!<br />
<br />
<br />
Если запуск <code>makepkg</code> был успешным, будет создан новый файл $pkgname-$pkgver.pkg.tar.gz в рабочей директории. Этот пакет можно установить, запустив <code>pacman -U <package file></code> или <code>pacman -A</code>, а также добавить в локальный или web репозиторий. Заметьте: то, что пакет был создан, не означает, что он работает! Он может содержать только структуру каталогов, если вы неправильно указали prefix. Вы можете использовать функции проверки(query) pacman-а для отображения списка файлов в пакете, его зависимостей и сравнить их с вашими ожиданиями. Это можно сделать, выполнив <code>pacman -Qlp <package file></code> или <code>pacman -Qip <package file></code>.<br />
<br />
Если с пакетом все в порядке, больше ничего делать не нужно. Если же вы планируете опубликовать пакет или PKGBUILD, обязательно проверьте, перепроверьте, а потом перепроверьте еще раз содержимое списка зависимостей. Он должен включать в себя список всех пакетов, которые необходимо установить для нормальной работы вашего пакета. Обязательно должны быть указаны зависимости первого уровня.<br />
<br />
Например, <code>gtk2</code> зависит от <code>glib2</code>. Как и большинству программ с открытыми исходниками, написанным на C, ему так же требуется <code>glibc</code>. Тем не менее, <code>glibc</code> не нужно указывать как зависимость для <code>gtk2</code>, потому что это - зависимость <code>glib2</code>, а <code>glib2</code> уже есть в списках зависимостей для <code>gtk2</code>.<br />
<br />
Существуют разные средства для проверки зависимостей. В том числе, <code>namcap</code>, написанный Jason Chu (<code>pacman -S namcap</code>), а так же менее известная программа <code>ldd</code>. Для дополнительной информации ознакомьтесь со страницами руководства этих программ. Еще можно прочитать документацию к программе и посетить сайт разработчиков (на некоторых есть отдельная страница, на которой указаны зависимости (dependencies)).<br />
<br />
==Тестирование пакета== <br />
Кроме того, убедитесь, что бинарный пакет запускается без ошибок! Это действительно раздражительно выпустить пакет, который содержит все необходимые файлы, но не работает из-за какой-то опции, которая не очень хорошо работает с остальной системой. Если вы собираетесь компилировать пакет только для собственной системы, то вам не нужно слишком беспокоиться по поводу качества этого шага,так как в конце концов вы — единственный человек, страдающий от ошибок.<br />
<br />
==Резюмируя вышесказанное==<br />
* Скачайте архив с исходными кодами программы, которую вы хотите превратить в пакет.<br />
* Попробуйте собрать пакет и установить его в произвольный каталог.<br />
* Скопируйте прототип файла пакета <code>/var/abs/PKGBUILD.proto</code> в файл <code>PKGBUILD</code> во временном рабочем каталоге.<br />
* Отредактируйте файл PKGBUILD в соответствии с потребностями пакета.<br />
* Запустите <code>makepkg</code> и убедитесь, что полученный пакет собрался корретно.<br />
* В случае неудачи повторите предыдущие два шага.<br />
<br />
==Полезные ссылки==<br />
* [[Arch Build System (Русский) | ABS - The Arch Build System]]<br />
* [http://www.archlinux.org/pacman/makepkg.8.html makepkg man page]<br />
* [[Makepkg|makepkg tutorial]]<br />
* [[Arch CVS & SVN PKGBUILD guidelines]]<br />
<br />
==Внимание==<br />
* Прежде чем вы сможете автоматизировать процесс сборки пакетов, надо собрать все вручную хотя бы один раз, чтобы ''точно'' знать, что вы будете делать заранее. К сожалению, несмотря на то, что большое количество авторов программ придерживаются варианта сборки в три этапа: "./configure; make; make install" - это не всегда самый подходящий вариант. Придерживайтесь правила: если вы не можете скомпилировать программу из архива с исходниками и сделать так, чтобы она самостоятельно устанавливалась в определенную временную директорию, не надо даже пытаться сделать пакет. <code>makepkg</code> не сможет совершить великого колдунства, способного убрать недостатки исходников.<br />
* В некоторых случаях, пакеты не доступны даже в качестве исходников, и вам придется воспользоваться чем-нибудь типа <br />
<code>sh installer.run</code> чтобы заставить их работать. Вам придется провести некоторые исследования (почитать README, инструкции по установке, справочные руководства, возможно воспользоваться ebuild-ами из gentoo или другими установщики пакетов, возможно даже MAKEFILE'ами или исходниками). В худшем случае, придется редактировать исходные файлы. Тем не менее, <code>makepkg</code> должен быть абсолютно автономным, без пользовательского участия. Так что если есть необходимость редактировать Makefile'ы, возможно вам понадобится сделать отдельный патч с <code>PKGBUILDом</code> и устанавливать его из функции <code>build()</code>, или можно применить несколько команд с <code>sed</code> из этой же функции.<br />
* Запомните: то, что пакет был собран успешно, не значит, что он работает !</div>Alligatorhttps://wiki.archlinux.org/index.php?title=Creating_packages_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=193196Creating packages (Русский)2012-04-07T23:01:22Z<p>Alligator: /* Внимание */</p>
<hr />
<div>[[Category:Русский]]<br />
{{i18n|Creating Packages}}<br />
<br />
Документ [[Arch Build System (Русский)|ABS - The Arch Build System]] дает хороший обзор инструментов и файлов, необходимых для создания и изменения пакетов для Arch Linux. Скорее всего, здесь вы найдете все, что нужно знать для настройки или пересборки существующих пакетов. В то же время, если вам нужно создать новый пакет, существует несколько дополнительных статей, которые помогут вам в этом. Этот документ изначально предполагает, что вы прочитали и поняли описание ABS.<br />
<br />
==Подготовка файлов==<br />
Вся информация для создания пакета помещена в файл <code>PKGBUILD</code>. Когда вы запускаете <code>makepkg</code>, он ищет <code>PKGBUILD</code> в текущей рабочей директории и затем собирает приложение из исходного кода, следуя инструкциям в <code>PKGBUILD</code>. После успешной компиляции полученные бинарные файлы, как и вся необходимая метаинформация (такие как версия пакета и зависимости), архивируются в пакетный файл <code>имя.pkg.tar.gz</code>, который легко может быть установлен при помощи команды <code>pacman -Up <имя_файла_пакета></code>.<br />
<br />
Файл <code>PKGBUILD</code> содержит '''все''' инструкции для создания пакета, которые напрямую интерпретируется оболочкой bash (не бойтесь, если ничего не поняли). Переменные, используемые здесь, определены в статье [[Arch Build System (Русский)| ABS]], но наиболее важные/сложные переменные также описаны и здесь. Чтобы создать новый пакет, сперва вы должны создать пустую директорию; предпочтительней назвать ее <code>/var/abs/local/<ИМЯ_ПАКЕТА></code>. В этом случае пакет отлично интегрируется в нормальное ABS-дерево и не затрагивается cvsup, даже когда вы обновляете дерево. Перейдите в директорию пакета и создайте файл <code>PKGBUILD</code> путем копирования прототипа файла пакета <code>/usr/share/pacman/PKGBUILD.proto</code>, либо скопируйте <code>PKGBUILD</code> из другого пакета. Последний способ быстрее, если вам нужно изменить опции компиляции для пакета вместо создания нового.<br />
<br />
Тем не менее с этого момента вам нужен файл <code>PKGBUILD</code> для продолжения работы.<br />
<br />
==Редактирование переменных==<br />
<br />
Откройте файл PKGBUILD и установите значения следующих переменных в зависимости от пакета, который вы собираете:<br />
<br /><br /><br />
*'''pkgname:''' Здесь находится название пакета. Можно использовать только строчные английские буквы. Значение этой переменной большой роли не играет, но может помочь, если установить сюда имя рабочей директории, или, например, имя файла с исходным кодом (*.tar.gz), который требуется загрузить<br />
<br />
*'''pkgver:''' Здесь находится версия пакета. Эта переменная может содержать буквы, цифры, знаки препинания, '''но не может содержать дефисов ("-")'''. Содержимое этой переменной зависит от метода присвоения версий (major.minor.bugfix, major.date, и т.д.) который использует программа. Чтобы следующие шаги были наиболее эффективными и лёгкими, рекомендуется включить номер версии в имя файла с исходным кодом. Внимание! Если разработчик пакета использует дефисы в номере версии, замените их на символы подчёркивания. ('0.99-10' => '0.99_10')<br />
<br />
*'''pkgrel:''' Значение этой переменной представляет из себя число, которое нужно увеличивать каждый раз после новой сборки пакета. При первой сборке пакета значение pkgrel должно быть установлено в "1". Цель этой переменной состоит в том, чтобы различать разные сборки пакета одной и той же версии. ''Например: вы собрали пакет и позже обнаружили, что в исходном коде была ошибка. Вы исправили исходный код, но посчитали не нужным увеличивать версию пакета. '''Вместо этого можно увеличить значение pkgrel. Результат: pacman будет знать, что пакет требует переустановки.''''' Когда к сборке будет готова следующая версия пакета (с измененным '''pkgver'''), значение переменной '''pkgrel''' нужно сбросить в "1".<br />
<br />
*'''pkgdesc:''' Здесь должно быть краткое описание пакета, обычно не более 76 символов. Учтите, что ''краткость - сестра таланта'': <code>OpenGL accelerated X server</code> лучше чем <code>xgl is a OpenGL...</code>.<br />
<br />
*'''arch:''' Здесь должен быть список архитектур, где может быть использован данный PKGBUILD (обычно это "i686"). Значение данной переменной будет записано в <code>$arch</code> и может быть использованно далее в процессе сборки.<br />
<br />
*'''url:''' Здесь должен находиться адрес веб-сайта программы, где заинтересовавшиеся могут получить более подробную информацию о программе.<br />
<br />
*'''license:''' Тип лицензии. Если сомневаетесь, пишите 'unknown'<br />
<br />
*'''depends:''' Список пакетов, разделенный пробелами, которые должны быть установлены до использования пакета. Во избежании проблем, имена пакетов заключаются в апострофы ('), а весь массив в скобки. Используя математическое "больше или равно", можно указать минимальную допустимую версию пакета-зависимости. Пример: пакету требуется glibc и slang, причем slang версии 1.8.0 и выше. '''depends<code>('glibc' 'slang>=</code>1.8.0')'''<br />
<br />
*'''makedepends:''' Список пакетов, которые потребуются для сборки пакета, но которые не нужны для его '''использования'''. Пример: ''<code>unarj</code> может потребоваться во время установки, чтобы распаковать какие-нибудь патчи.''<br />
<br />
*'''provides:''' Список пакетов, необходимость в которых пропадает, так как собираемый пакет выполняет, по крайней мере, похожие функции.<br />
<br />
*'''conflicts:''' Список пакетов, которые, если установлены, могут создать проблемы во время использования собираемого пакета.<br />
<br />
*'''replaces:''' Список пакетов, которые заменит собираемый пакет.<br />
<br />
*'''source:''' Список файлов, которые потребуются во время сборки пакета. Естественно, здесь должна быть ссылка на архив с исходным кодом программы (в большинстве случаев такая ссылка представляет из себя HTTP или FTP ссылку, заключённую в кавычки). Образец <code>PKGBUILD</code>-файла демонстрирует, как в названии и версии файла могут быть использованны предыдущие переменные. Если вы обнаружите, что некоторые файлы не могут быть скачены на лету, например, какие-нибудь самопальные патчи, вы можете поместить их в одну и ту же папку с <code>PKGBUILD</code>'ом и добавить их имена в список '''source'''. Любые локальные пути, указанные в этой переменной, будут разрешаться относительно <code>PKGBUILD</code>-файла. Перед сборкой, все файлы из этого списка будут проверены и при необходимости загружены; если обнаружатся проблемы, <code>makepkg</code> не будет продолжать сборку.<br />
<br />
*'''md5sums:''' Список контрольных сумм для файлов из предыдущей переменной, разделенных пробелами и заключённых в апострофы. Как только станут доступны все файлы из списка source, md5 суммы файлов будут автоматически сгенерированны и проверены на соответствие с этим списком. Критическое значение имеет порядок сумм в этой переменной, так как makepkg не будет гадать, какому файлу какая сумма соответствует. К первому файлу из списка source относится первая md5-сумма из списка md5sums, ко второму - вторая, и т.д.. Во избежании путаницы, контрольные суммы могут быть легко и просто сгенерированны командой <code>makepkg -g</code> (после того как будет обозначен список source) в директории с <code>PKGBUILD</code>'ом. <code>makepkg -g >> PKGBUILD</code> сгенерирует md5-суммы и запишет их в конец <code>PKGBUILD</code>, откуда они могут быть перемещены в любое другое место <code>PKGBUILD</code>-файла.<br />
<br />
И так, мы установили мета-информацию пакета - список зависимостей, конфликтов, список файлов для загрузки и т.д. Следующие шаги - непосредственная сборка и установка пакета. <br />
--[[User:Oleg-A|Oleg-A]] 08:09, 6 July 2008 (EDT)<br />
<br />
==Использование исходного кода==<br />
Теперь вам надо скачать архив с исходным кодом, распаковать его и обратить внимание на команды, необходимые для сборки и установки. Содержимое функции <code>build()</code> в вашем <code>PKGBUILD</code> будет в точности повторять эти шаги ещё раз, но с небольшими изменениями, чтобы сделать готовый к утановке пакет, как только закончится компиляция.<br />
<br />
Сейчас вам скорее всего потребуется изменить содержимое функции <code>build()</code> в <code>PKGBUILD</code> файле. Она использует синтаксис bash и стандартные команды оболочки. Эта функция в основном используется для автоматической компиляции программ. Она создает директорию <code>pkg</code>, в которую затем устанавливает программу, позволяя <code>makepkg</code> таким образом создать пакет без необходимости использования файлов из остальной части файловой системы.<br />
<br />
===Функция build()===<br />
<br />
Обычно первым шагом в этой функции меняют рабочую директорию на одну из созданных при распаковке исходного кода. Для этого вы можете использовать переменную <code>$startdir</code>, которая ссылается на директорию с файлом <code>PKGBUILD</code>. Вы также можете использовать объявленные <code>$pkgname</code> и <code>$pkgver</code>. Например, в зависимости от имени распакованной makepkg директории, первая комманда в функции <code>build()</code> может быть <code>cd $startdir/src/$pkgname-$pkgver</code>, что бывает очень часто, если только автор программы не очень-очень злой человек.<br />
<br />
Более сложная часть — компиляция. Предположим, вам удалось вручную собрать программу, так как скорее всего все шаги для этого здесь описать не удастся. В конце концов, это именно то, что её автор должен описать в файлах README и INSTALL.<br />
<br />
Теперь, когда вы находитесь в нужной директории, вы должны выяснить, какие необходимы команды для сборки пакета. В самых простых случаях можно использовать <code>./configure; make</code>, хотя существуют десятки разновидностей, включая <code>ant build</code> либо использование комманд <code>gcc</code> для компиляции.<br />
<br />
Хорошо то, что если вам уже удалось вручную собрать пакет, то вам всего лишь надо записать команды, которые вы использовали, после чего всё должно работать нормально. Так как множество пакетов любят устанавливать себя в <code>/usr/local</code>, а Arch Linux предпочитает использовать только <code>/usr</code>, вам, вероятно, захочется задать параметр скрипту configure или команде make, который об этом позаботится. Оригинал <code>PKGBUILD</code> служит примером этого, хотя он может работать по-разному. <br />
<br />
Cледующий шаг в функщии <code>build()</code> — установить скомпилированные файлы в место, где <code>makepkg</code> cможет достать их и создать пакет. Это <code>pkg</code> директория. Она нужна для имитации корня вашей файловой системы для процедуры установки программы. Все файлы, которые надо установить в вашу файловую систему, должны там находиться в точно такой же структуре директорий(т.е. если вы хотите установить файл <code>myprog</code> в <code>/usr/bin</code>, его надо поместить в <code>$startdir/pkg/usr/bin</code>). К счатью, мало программ требуют, чтобы пользователь копировал десятки файлов вручную. Вместо этого они предоставляют некоторую процедуру установки, которая делает это автоматически и часто запускается командой "make install". Однако, очень важно чтобы вы знали, как сказать этой процедуре, что она должна поместить все свои файлы не в / , а в <code>$startdir/pkg/</code>! Иначе, вы получите пустой пакет и бинарные файлы установленной программы "правильно" скопированные сразу в систему. В основном, вам надо будет передать параметр prefix вызову make install как показано в оригинальном файле, но также весьма возможно, что программа требует другого подхода:<br />
<br />
* Часто в <code>configure</code> можно указать prefix, который указывает, куда надо устанавливать программу. Например, вы можете использовать в конфигурации <code>./configure --prefix=$startdir/pkg/usr</code>.<br />
<br />
* Иногда ндао указывать <code>PREFIX</code> при запуске <code>make install</code>. Иногда её задают как переменную, а иногда указывают в команде. В худшем случае, вам придется отредактировать один или несколько Makefile-ов (или файлов с настройками ant, если этот проект использует его) при помощи sed-а или самодельного патча.<br />
<br />
* Бывают другие типы установочных скриптов, которые позволяют указать место установки программы.<br />
<br />
* Иногда, программу надо запускать из одной директории. Тогда следует просто скопировать её в <code>$startdir/pkg/opt</code>.<br />
<br />
Как вы наверно уже догадались, это часть, где преобретенные знания и опыт становятся необходимыми. Очень полезным оказывается просматривание <code>PKGBUILD</code>ов в дереве ABS, так как они работают и содержат некоторые трюки, которые могут оказаться полезными.<br />
<br />
Очень часто программа установки программы создаст нужные директории в <code>pkg/</code>. Если же она этого не делает, у вас будет много ошибок на стадии установки, так как файлы будут копироваться в несуществующие директории. В этом случае вам надо будет создать их добавляя команды <code>mkdir</code> в функцию <code>build()</code> перед запуском процедуры установки. Конечно, структура директорий зависит от пакета: некоторым программам надо поместить свой код в <code>/etc</code> или <code>/usr</code>, а другие используют <code>/bin</code> или <code>/opt</code>.<br />
<br />
==Тестирование PKGBUILD'а==<br />
<br />
Когда вы пишете функцию <code>build()</code> , вам захочется часто проверять ваши изменения, чтобы убедиться в отсутствии ошибок. Вы можете сделать это, используя команду <code>makepkg</code> в директории, содержащей <code>PKGBUILD</code>. С правильно отформатированным <code>PKGBUILD</code>ом, эта операция создаст пакет. В противном случае появится сообщение об ошибке. Надеемся, что оно будет информативным!<br />
<br />
<br />
Если запуск <code>makepkg</code> был успешным, будет создан новый файл $pkgname-$pkgver.pkg.tar.gz в рабочей директории. Этот пакет можно установить, запустив <code>pacman -U <package file></code> или <code>pacman -A</code>, а также добавить в локальный или web репозиторий. Заметьте: то, что пакет был создан, не означает, что он работает! Он может содержать только структуру каталогов, если вы неправильно указали prefix. Вы можете использовать функции проверки(query) pacman-а для отображения списка файлов в пакете, его зависимостей и сравнить их с вашими ожиданиями. Это можно сделать, выполнив <code>pacman -Qlp <package file></code> или <code>pacman -Qip <package file></code>.<br />
<br />
Если с пакетом все в порядке, больше ничего делать не нужно. Если же вы планируете опубликовать пакет или PKGBUILD, обязательно проверьте, перепроверьте, а потом перепроверьте еще раз содержимое списка зависимостей. Он должен включать в себя список всех пакетов, которые необходимо установить для нормальной работы вашего пакета. Обязательно должны быть указаны зависимости первого уровня.<br />
<br />
Например, <code>gtk2</code> зависит от <code>glib2</code>. Как и большинству программ с открытыми исходниками, написанным на C, ему так же требуется <code>glibc</code>. Тем не менее, <code>glibc</code> не нужно указывать как зависимость для <code>gtk2</code>, потому что это - зависимость <code>glib2</code>, а <code>glib2</code> уже есть в списках зависимостей для <code>gtk2</code>.<br />
<br />
Существуют разные средства для проверки зависимостей. В том числе, <code>namcap</code>, написанный Jason Chu (<code>pacman -S namcap</code>), а так же менее известная программа <code>ldd</code>. Для дополнительной информации ознакомьтесь со страницами руководства этих программ. Еще можно прочитать документацию к программе и посетить сайт разработчиков (на некоторых есть отдельная страница, на которой указаны зависимости (dependencies)).<br />
<br />
==Тестирование пакета== <br />
Кроме того, убедитесь, что бинарный пакет запускается без ошибок! Это действительно раздражительно выпустить пакет, который содержит все необходимые файлы, но не работает из-за какой-то опции, которая не очень хорошо работает с остальной системой. Если вы собираетесь компилировать пакет только для собственной системы, то вам не нужно слишком беспокоиться по поводу качества этого шага,так как в конце концов вы — единственный человек, страдающий от ошибок.<br />
<br />
==Резюмируя вышесказанное==<br />
* Скачайте архив с исходными кодами программы, которую вы хотите превратить в пакет.<br />
* Попробуйте собрать пакет и установить его в произвольный каталог.<br />
* Скопируйте прототип файла пакета <code>/var/abs/PKGBUILD.proto</code> в файл <code>PKGBUILD</code> во временном рабочем каталоге.<br />
* Отредактируйте файл PKGBUILD в соответствии с потребностями пакета.<br />
* Запустите <code>makepkg</code> и убедитесь, что полученный пакет собрался корретно.<br />
* В случае неудачи повторите предыдущие два шага.<br />
<br />
==Полезные ссылки==<br />
* [[Arch Build System (Русский) | ABS - The Arch Build System]]<br />
* [http://www.archlinux.org/pacman/makepkg.8.html makepkg man page]<br />
* [[Makepkg|makepkg tutorial]]<br />
* [[Arch CVS & SVN PKGBUILD guidelines]]<br />
<br />
==Внимание==<br />
* Прежде чем вы сможете автоматизировать процесс сборки пакетов, надо собрать все вручную хотя бы один раз, чтобы ''точно'' знать, что вы будете делать заранее. К сожалению, несмотря на то, что большое количество авторов программ придерживаются варианта сборки в три этапа: "./configure; make; make install" - это не всегда самый подходящий вариант. Придерживайтесь правила: если вы не можете скомпилировать программу из архива с исходниками и сделать так, чтобы она самостоятельно устанавливалась в определенную временную директорию, не надо даже пытаться сделать пакет. <code>makepkg</code> не сможет совершить великого колдунства, способного убрать недостатки исходников.<br />
* В некоторых случаях, пакеты не доступны даже в качестве исходников, и вам придется воспользоваться чем-нибудь типа<code>sh installer.run</code>, чтобы заставить их работать. Вам придется провести некоторые исследования (почитать README, инструкции по установке, справочные руководства, возможно воспользоваться ebuild-ами из gentoo или другими установщики пакетов, возможно даже MAKEFILE'ами или исходниками). В худшем случае, придется редактировать исходные файлы. Тем не менее, <code>makepkg</code> должен быть абсолютно автономным, без пользовательского участия. Так что если есть необходимость редактировать Makefile'ы, возможно вам понадобится сделать отдельный патч с <code>PKGBUILDом</code> и устанавливать его из функции <code>build()</code>, или можно применить несколько команд с <code>sed</code> из этой же функции.<br />
* Запомните: то, что пакет был собран успешно, не значит, что он работает !</div>Alligatorhttps://wiki.archlinux.org/index.php?title=Creating_packages_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=193195Creating packages (Русский)2012-04-07T23:00:37Z<p>Alligator: /* Внимание */</p>
<hr />
<div>[[Category:Русский]]<br />
{{i18n|Creating Packages}}<br />
<br />
Документ [[Arch Build System (Русский)|ABS - The Arch Build System]] дает хороший обзор инструментов и файлов, необходимых для создания и изменения пакетов для Arch Linux. Скорее всего, здесь вы найдете все, что нужно знать для настройки или пересборки существующих пакетов. В то же время, если вам нужно создать новый пакет, существует несколько дополнительных статей, которые помогут вам в этом. Этот документ изначально предполагает, что вы прочитали и поняли описание ABS.<br />
<br />
==Подготовка файлов==<br />
Вся информация для создания пакета помещена в файл <code>PKGBUILD</code>. Когда вы запускаете <code>makepkg</code>, он ищет <code>PKGBUILD</code> в текущей рабочей директории и затем собирает приложение из исходного кода, следуя инструкциям в <code>PKGBUILD</code>. После успешной компиляции полученные бинарные файлы, как и вся необходимая метаинформация (такие как версия пакета и зависимости), архивируются в пакетный файл <code>имя.pkg.tar.gz</code>, который легко может быть установлен при помощи команды <code>pacman -Up <имя_файла_пакета></code>.<br />
<br />
Файл <code>PKGBUILD</code> содержит '''все''' инструкции для создания пакета, которые напрямую интерпретируется оболочкой bash (не бойтесь, если ничего не поняли). Переменные, используемые здесь, определены в статье [[Arch Build System (Русский)| ABS]], но наиболее важные/сложные переменные также описаны и здесь. Чтобы создать новый пакет, сперва вы должны создать пустую директорию; предпочтительней назвать ее <code>/var/abs/local/<ИМЯ_ПАКЕТА></code>. В этом случае пакет отлично интегрируется в нормальное ABS-дерево и не затрагивается cvsup, даже когда вы обновляете дерево. Перейдите в директорию пакета и создайте файл <code>PKGBUILD</code> путем копирования прототипа файла пакета <code>/usr/share/pacman/PKGBUILD.proto</code>, либо скопируйте <code>PKGBUILD</code> из другого пакета. Последний способ быстрее, если вам нужно изменить опции компиляции для пакета вместо создания нового.<br />
<br />
Тем не менее с этого момента вам нужен файл <code>PKGBUILD</code> для продолжения работы.<br />
<br />
==Редактирование переменных==<br />
<br />
Откройте файл PKGBUILD и установите значения следующих переменных в зависимости от пакета, который вы собираете:<br />
<br /><br /><br />
*'''pkgname:''' Здесь находится название пакета. Можно использовать только строчные английские буквы. Значение этой переменной большой роли не играет, но может помочь, если установить сюда имя рабочей директории, или, например, имя файла с исходным кодом (*.tar.gz), который требуется загрузить<br />
<br />
*'''pkgver:''' Здесь находится версия пакета. Эта переменная может содержать буквы, цифры, знаки препинания, '''но не может содержать дефисов ("-")'''. Содержимое этой переменной зависит от метода присвоения версий (major.minor.bugfix, major.date, и т.д.) который использует программа. Чтобы следующие шаги были наиболее эффективными и лёгкими, рекомендуется включить номер версии в имя файла с исходным кодом. Внимание! Если разработчик пакета использует дефисы в номере версии, замените их на символы подчёркивания. ('0.99-10' => '0.99_10')<br />
<br />
*'''pkgrel:''' Значение этой переменной представляет из себя число, которое нужно увеличивать каждый раз после новой сборки пакета. При первой сборке пакета значение pkgrel должно быть установлено в "1". Цель этой переменной состоит в том, чтобы различать разные сборки пакета одной и той же версии. ''Например: вы собрали пакет и позже обнаружили, что в исходном коде была ошибка. Вы исправили исходный код, но посчитали не нужным увеличивать версию пакета. '''Вместо этого можно увеличить значение pkgrel. Результат: pacman будет знать, что пакет требует переустановки.''''' Когда к сборке будет готова следующая версия пакета (с измененным '''pkgver'''), значение переменной '''pkgrel''' нужно сбросить в "1".<br />
<br />
*'''pkgdesc:''' Здесь должно быть краткое описание пакета, обычно не более 76 символов. Учтите, что ''краткость - сестра таланта'': <code>OpenGL accelerated X server</code> лучше чем <code>xgl is a OpenGL...</code>.<br />
<br />
*'''arch:''' Здесь должен быть список архитектур, где может быть использован данный PKGBUILD (обычно это "i686"). Значение данной переменной будет записано в <code>$arch</code> и может быть использованно далее в процессе сборки.<br />
<br />
*'''url:''' Здесь должен находиться адрес веб-сайта программы, где заинтересовавшиеся могут получить более подробную информацию о программе.<br />
<br />
*'''license:''' Тип лицензии. Если сомневаетесь, пишите 'unknown'<br />
<br />
*'''depends:''' Список пакетов, разделенный пробелами, которые должны быть установлены до использования пакета. Во избежании проблем, имена пакетов заключаются в апострофы ('), а весь массив в скобки. Используя математическое "больше или равно", можно указать минимальную допустимую версию пакета-зависимости. Пример: пакету требуется glibc и slang, причем slang версии 1.8.0 и выше. '''depends<code>('glibc' 'slang>=</code>1.8.0')'''<br />
<br />
*'''makedepends:''' Список пакетов, которые потребуются для сборки пакета, но которые не нужны для его '''использования'''. Пример: ''<code>unarj</code> может потребоваться во время установки, чтобы распаковать какие-нибудь патчи.''<br />
<br />
*'''provides:''' Список пакетов, необходимость в которых пропадает, так как собираемый пакет выполняет, по крайней мере, похожие функции.<br />
<br />
*'''conflicts:''' Список пакетов, которые, если установлены, могут создать проблемы во время использования собираемого пакета.<br />
<br />
*'''replaces:''' Список пакетов, которые заменит собираемый пакет.<br />
<br />
*'''source:''' Список файлов, которые потребуются во время сборки пакета. Естественно, здесь должна быть ссылка на архив с исходным кодом программы (в большинстве случаев такая ссылка представляет из себя HTTP или FTP ссылку, заключённую в кавычки). Образец <code>PKGBUILD</code>-файла демонстрирует, как в названии и версии файла могут быть использованны предыдущие переменные. Если вы обнаружите, что некоторые файлы не могут быть скачены на лету, например, какие-нибудь самопальные патчи, вы можете поместить их в одну и ту же папку с <code>PKGBUILD</code>'ом и добавить их имена в список '''source'''. Любые локальные пути, указанные в этой переменной, будут разрешаться относительно <code>PKGBUILD</code>-файла. Перед сборкой, все файлы из этого списка будут проверены и при необходимости загружены; если обнаружатся проблемы, <code>makepkg</code> не будет продолжать сборку.<br />
<br />
*'''md5sums:''' Список контрольных сумм для файлов из предыдущей переменной, разделенных пробелами и заключённых в апострофы. Как только станут доступны все файлы из списка source, md5 суммы файлов будут автоматически сгенерированны и проверены на соответствие с этим списком. Критическое значение имеет порядок сумм в этой переменной, так как makepkg не будет гадать, какому файлу какая сумма соответствует. К первому файлу из списка source относится первая md5-сумма из списка md5sums, ко второму - вторая, и т.д.. Во избежании путаницы, контрольные суммы могут быть легко и просто сгенерированны командой <code>makepkg -g</code> (после того как будет обозначен список source) в директории с <code>PKGBUILD</code>'ом. <code>makepkg -g >> PKGBUILD</code> сгенерирует md5-суммы и запишет их в конец <code>PKGBUILD</code>, откуда они могут быть перемещены в любое другое место <code>PKGBUILD</code>-файла.<br />
<br />
И так, мы установили мета-информацию пакета - список зависимостей, конфликтов, список файлов для загрузки и т.д. Следующие шаги - непосредственная сборка и установка пакета. <br />
--[[User:Oleg-A|Oleg-A]] 08:09, 6 July 2008 (EDT)<br />
<br />
==Использование исходного кода==<br />
Теперь вам надо скачать архив с исходным кодом, распаковать его и обратить внимание на команды, необходимые для сборки и установки. Содержимое функции <code>build()</code> в вашем <code>PKGBUILD</code> будет в точности повторять эти шаги ещё раз, но с небольшими изменениями, чтобы сделать готовый к утановке пакет, как только закончится компиляция.<br />
<br />
Сейчас вам скорее всего потребуется изменить содержимое функции <code>build()</code> в <code>PKGBUILD</code> файле. Она использует синтаксис bash и стандартные команды оболочки. Эта функция в основном используется для автоматической компиляции программ. Она создает директорию <code>pkg</code>, в которую затем устанавливает программу, позволяя <code>makepkg</code> таким образом создать пакет без необходимости использования файлов из остальной части файловой системы.<br />
<br />
===Функция build()===<br />
<br />
Обычно первым шагом в этой функции меняют рабочую директорию на одну из созданных при распаковке исходного кода. Для этого вы можете использовать переменную <code>$startdir</code>, которая ссылается на директорию с файлом <code>PKGBUILD</code>. Вы также можете использовать объявленные <code>$pkgname</code> и <code>$pkgver</code>. Например, в зависимости от имени распакованной makepkg директории, первая комманда в функции <code>build()</code> может быть <code>cd $startdir/src/$pkgname-$pkgver</code>, что бывает очень часто, если только автор программы не очень-очень злой человек.<br />
<br />
Более сложная часть — компиляция. Предположим, вам удалось вручную собрать программу, так как скорее всего все шаги для этого здесь описать не удастся. В конце концов, это именно то, что её автор должен описать в файлах README и INSTALL.<br />
<br />
Теперь, когда вы находитесь в нужной директории, вы должны выяснить, какие необходимы команды для сборки пакета. В самых простых случаях можно использовать <code>./configure; make</code>, хотя существуют десятки разновидностей, включая <code>ant build</code> либо использование комманд <code>gcc</code> для компиляции.<br />
<br />
Хорошо то, что если вам уже удалось вручную собрать пакет, то вам всего лишь надо записать команды, которые вы использовали, после чего всё должно работать нормально. Так как множество пакетов любят устанавливать себя в <code>/usr/local</code>, а Arch Linux предпочитает использовать только <code>/usr</code>, вам, вероятно, захочется задать параметр скрипту configure или команде make, который об этом позаботится. Оригинал <code>PKGBUILD</code> служит примером этого, хотя он может работать по-разному. <br />
<br />
Cледующий шаг в функщии <code>build()</code> — установить скомпилированные файлы в место, где <code>makepkg</code> cможет достать их и создать пакет. Это <code>pkg</code> директория. Она нужна для имитации корня вашей файловой системы для процедуры установки программы. Все файлы, которые надо установить в вашу файловую систему, должны там находиться в точно такой же структуре директорий(т.е. если вы хотите установить файл <code>myprog</code> в <code>/usr/bin</code>, его надо поместить в <code>$startdir/pkg/usr/bin</code>). К счатью, мало программ требуют, чтобы пользователь копировал десятки файлов вручную. Вместо этого они предоставляют некоторую процедуру установки, которая делает это автоматически и часто запускается командой "make install". Однако, очень важно чтобы вы знали, как сказать этой процедуре, что она должна поместить все свои файлы не в / , а в <code>$startdir/pkg/</code>! Иначе, вы получите пустой пакет и бинарные файлы установленной программы "правильно" скопированные сразу в систему. В основном, вам надо будет передать параметр prefix вызову make install как показано в оригинальном файле, но также весьма возможно, что программа требует другого подхода:<br />
<br />
* Часто в <code>configure</code> можно указать prefix, который указывает, куда надо устанавливать программу. Например, вы можете использовать в конфигурации <code>./configure --prefix=$startdir/pkg/usr</code>.<br />
<br />
* Иногда ндао указывать <code>PREFIX</code> при запуске <code>make install</code>. Иногда её задают как переменную, а иногда указывают в команде. В худшем случае, вам придется отредактировать один или несколько Makefile-ов (или файлов с настройками ant, если этот проект использует его) при помощи sed-а или самодельного патча.<br />
<br />
* Бывают другие типы установочных скриптов, которые позволяют указать место установки программы.<br />
<br />
* Иногда, программу надо запускать из одной директории. Тогда следует просто скопировать её в <code>$startdir/pkg/opt</code>.<br />
<br />
Как вы наверно уже догадались, это часть, где преобретенные знания и опыт становятся необходимыми. Очень полезным оказывается просматривание <code>PKGBUILD</code>ов в дереве ABS, так как они работают и содержат некоторые трюки, которые могут оказаться полезными.<br />
<br />
Очень часто программа установки программы создаст нужные директории в <code>pkg/</code>. Если же она этого не делает, у вас будет много ошибок на стадии установки, так как файлы будут копироваться в несуществующие директории. В этом случае вам надо будет создать их добавляя команды <code>mkdir</code> в функцию <code>build()</code> перед запуском процедуры установки. Конечно, структура директорий зависит от пакета: некоторым программам надо поместить свой код в <code>/etc</code> или <code>/usr</code>, а другие используют <code>/bin</code> или <code>/opt</code>.<br />
<br />
==Тестирование PKGBUILD'а==<br />
<br />
Когда вы пишете функцию <code>build()</code> , вам захочется часто проверять ваши изменения, чтобы убедиться в отсутствии ошибок. Вы можете сделать это, используя команду <code>makepkg</code> в директории, содержащей <code>PKGBUILD</code>. С правильно отформатированным <code>PKGBUILD</code>ом, эта операция создаст пакет. В противном случае появится сообщение об ошибке. Надеемся, что оно будет информативным!<br />
<br />
<br />
Если запуск <code>makepkg</code> был успешным, будет создан новый файл $pkgname-$pkgver.pkg.tar.gz в рабочей директории. Этот пакет можно установить, запустив <code>pacman -U <package file></code> или <code>pacman -A</code>, а также добавить в локальный или web репозиторий. Заметьте: то, что пакет был создан, не означает, что он работает! Он может содержать только структуру каталогов, если вы неправильно указали prefix. Вы можете использовать функции проверки(query) pacman-а для отображения списка файлов в пакете, его зависимостей и сравнить их с вашими ожиданиями. Это можно сделать, выполнив <code>pacman -Qlp <package file></code> или <code>pacman -Qip <package file></code>.<br />
<br />
Если с пакетом все в порядке, больше ничего делать не нужно. Если же вы планируете опубликовать пакет или PKGBUILD, обязательно проверьте, перепроверьте, а потом перепроверьте еще раз содержимое списка зависимостей. Он должен включать в себя список всех пакетов, которые необходимо установить для нормальной работы вашего пакета. Обязательно должны быть указаны зависимости первого уровня.<br />
<br />
Например, <code>gtk2</code> зависит от <code>glib2</code>. Как и большинству программ с открытыми исходниками, написанным на C, ему так же требуется <code>glibc</code>. Тем не менее, <code>glibc</code> не нужно указывать как зависимость для <code>gtk2</code>, потому что это - зависимость <code>glib2</code>, а <code>glib2</code> уже есть в списках зависимостей для <code>gtk2</code>.<br />
<br />
Существуют разные средства для проверки зависимостей. В том числе, <code>namcap</code>, написанный Jason Chu (<code>pacman -S namcap</code>), а так же менее известная программа <code>ldd</code>. Для дополнительной информации ознакомьтесь со страницами руководства этих программ. Еще можно прочитать документацию к программе и посетить сайт разработчиков (на некоторых есть отдельная страница, на которой указаны зависимости (dependencies)).<br />
<br />
==Тестирование пакета== <br />
Кроме того, убедитесь, что бинарный пакет запускается без ошибок! Это действительно раздражительно выпустить пакет, который содержит все необходимые файлы, но не работает из-за какой-то опции, которая не очень хорошо работает с остальной системой. Если вы собираетесь компилировать пакет только для собственной системы, то вам не нужно слишком беспокоиться по поводу качества этого шага,так как в конце концов вы — единственный человек, страдающий от ошибок.<br />
<br />
==Резюмируя вышесказанное==<br />
* Скачайте архив с исходными кодами программы, которую вы хотите превратить в пакет.<br />
* Попробуйте собрать пакет и установить его в произвольный каталог.<br />
* Скопируйте прототип файла пакета <code>/var/abs/PKGBUILD.proto</code> в файл <code>PKGBUILD</code> во временном рабочем каталоге.<br />
* Отредактируйте файл PKGBUILD в соответствии с потребностями пакета.<br />
* Запустите <code>makepkg</code> и убедитесь, что полученный пакет собрался корретно.<br />
* В случае неудачи повторите предыдущие два шага.<br />
<br />
==Полезные ссылки==<br />
* [[Arch Build System (Русский) | ABS - The Arch Build System]]<br />
* [http://www.archlinux.org/pacman/makepkg.8.html makepkg man page]<br />
* [[Makepkg|makepkg tutorial]]<br />
* [[Arch CVS & SVN PKGBUILD guidelines]]<br />
<br />
==Внимание==<br />
* Прежде чем вы сможете автоматизировать процесс сборки пакетов, надо собрать все вручную хотя бы один раз, чтобы ''точно'' знать, что вы будете делать ''заранее''. К сожалению, несмотря на то, что большое количество авторов программ придерживаются варианта сборки в три этапа: "./configure; make; make install" - это не всегда самый подходящий вариант. Придерживайтесь правила: если вы не можете скомпилировать программу из архива с исходниками и сделать так, чтобы она самостоятельно устанавливалась в определенную временную директорию, не надо даже пытаться сделать пакет. <code>makepkg</code> не сможет совершить великого колдунства, способного убрать недостатки исходников.<br />
* В некоторых случаях, пакеты не доступны даже в качестве исходников, и вам придется воспользоваться чем-нибудь типа<code>sh installer.run</code>, чтобы заставить их работать. Вам придется провести некоторые исследования (почитать README, инструкции по установке, справочные руководства, возможно воспользоваться ebuild-ами из gentoo или другими установщики пакетов, возможно даже MAKEFILE'ами или исходниками). В худшем случае, придется редактировать исходные файлы. Тем не менее, <code>makepkg</code> должен быть абсолютно автономным, без пользовательского участия. Так что если есть необходимость редактировать Makefile'ы, возможно вам понадобится сделать отдельный патч с <code>PKGBUILDом</code> и устанавливать его из функции <code>build()</code>, или можно применить несколько команд с <code>sed</code> из этой же функции.<br />
* Запомните: то, что пакет был собран успешно, не значит, что он работает !</div>Alligatorhttps://wiki.archlinux.org/index.php?title=CUPS_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=187590CUPS (Русский)2012-03-04T17:35:03Z<p>Alligator: /* Настройка CUPS */</p>
<hr />
<div>[[Category:Принтеры (Русский)]]<br />
[[Category:Русский]]<br />
{{i18n|CUPS}}<br />
{{Article summary start|Описание}}<br />
{{Article summary text|Установка и настройка CUPS}}<br />
{{Article summary heading|Полезные ссылки}}<br />
{{Article summary wiki|CUPS printer sharing}}<br />
{{Article summary wiki|CUPS printer-specific problems}}<br />
{{Article summary wiki|Samba}}<br />
{{Article summary end}}<br />
<br />
:"''Common UNIX Printing System ([[Wikipedia:CUPS|CUPS]], общая UNIX система печати) - это кроссплатформенное решение для печати для всех UNIX систем. Оно основано на "Internet Printing Protocol" (IPP, интернет-протокол печати) и предоставляет полный спектр возможностей для печати для большинства Postscript и растровых принтеров. CUPS распространяется под GNU GPL....''"<br />
Хотя существуют другие пакеты печати, такие как LPRNG, CUPS более популярен и довольно прост в использовании. Это система печати по умолчанию как в Arch Linux, так и во многих других Linux-дистрибутивах.<br />
<br />
<br />
= Установка =<br />
<br />
Вам скорее всего потребуются пакеты {{Pkg|cups}}, {{Pkg|ghostscript}} и {{Pkg|gsfonts}}. [[pacman|Установить]] их можно из [[Official repositories|оффициального репозитория]].<br />
<br />
Если стандартный cups не работает, то можно попробовать установить пакет {{AUR|cups-usblp}}, находящийся в [[AUR]].<br />
<br />
* '''cups''' - собственно пакет CUPS<br />
* '''ghostscript''' - интерпретатор для языка Postscript<br />
* '''gsfonts''' - стандартные Type1 шрифты GhostScript<br />
* '''hpoj''' - при использовании HP Officejet, во избежание проблем, установите этот пакет согласно инструкциям. Почитайте [http://answers.launchpad.net/hplip/+question/133425 обсуждение на launchpad/hplip] для получения дополнительной информации.<br />
<br />
<br />
Если ваша система подключена к сетевому принтеру с использованием протокола samba, или система является сервером печати для Windows клиентов - установите {{Pkg|samba}}.<br />
<br />
===Драйвера принтеров===<br />
Некоторые из пакетов с драйверами для принтеров, зависит от используемого вами принтера. Если не уверены, установите gutenprint.<br />
<br />
* '''{{Pkg|gutenprint}}''' - Набор высококачественных драйверов для принтеров Canon, Epson, Lexmark, Sony, Olympus и PCL использующихся с GhostSscript, CUPS, Foomatic и [[GIMP]].<br />
* '''{{Pkg|foomatic-db}}, {{Pkg|foomatic-db-engine}}, {{Pkg|foomatic-db-nonfree}} и {{Pkg|foomatic-filters}}''' - Foomatic - это система под управлением базы данных для интеграции открытых драйверов для принтера с обычными спулерами под Unix. Установка foomatic-filters должна разрешить ваши проблемы, если в error.log от CUPS будут записи: "stopped with status 22!"<br />
* '''{{AUR|foo2zjs}}''' - драйвер для принтеров использующих протокол ZjStream, например таких как HP Laserjet 1018. Дополнительная информация [http://foo2zjs.rkkda.com здесь]. Для использования Foo2zsj - установите {{AUR|foo2zjs}}.<br />
* '''{{Pkg|hplip}}''' - HP GNU/Linux драйвер. Обеспечивает поддержку DeskJet, OfficeJet, Photosmart, Business Inkjet и других принтеров моделей LaserJet, a также ряд принтеров Brother.<br />
* '''{{Pkg|splix}}''' - драйвера Samsung для принтеров SPL (Samsung Printer Language). (для USB принтеров возможно понадобится пакет {{AUR|cups-usblp}} доступный в [[AUR]])<br />
* '''{{AUR|ufr2}}''' - Canon UFR2 драйвер, обеспечивающий поддержку принтеров серии LBP, iR и MF. Пакет доступен в [[AUR]]. <br />
* '''{{Pkg|cups-pdf}}''' - пакет, позволяющий настроить виртуальный PDF принтер, который будет создавать PDF из всего, что будет отправлено на принтер.<br />
<br />
Если вы не уверены в работоспособности драйвера для вашего принтера или он не работает - то, возможно, стоит установить все доступные драйверы, поскольку для вашей модели принтера может подойти драйвер от другого производителя. Например, для Brother HL-2140 необходимо установить драйвер hplip.<br />
<br />
====Загрузка PPD для принтера====<br />
<br />
Так как CUPS в стандартной установке уже содержит множество PPD (Postscript Printer Description) файлов, и в зависимости от вашего принтера, этот пункт является необязательным и может быть пропущен. Более того, в пакетах <i>foomatic-filters</i>, <i>gimp-print</i> и <i>hplip</i> уже имеется большое количество PPD файлов, которые будут автоматически определены CUPS.<br />
<br />
Вот объяснение с сайта Linux Printing того, что такое PPD файл:<br />
:"''Для каждого PostScript принтера производитель предоставляет PPD файл, содержащий всю уникальную информацию об этой модели принтера: основные возможности принтера (цветной он или нет, шрифты, уровень PostScript и т. д.) и особенно настройки, которые может изменять пользователь, такие как размер бумаги, разрешение печати и т. д.''"<br />
<br />
Если в CUPS для вашего принтера отсутствует нужный PPD файл, то:<br />
*Поищите пакеты для вашего принтера/производителя в [[AUR]].<br />
*Посетите [http://www.openprinting.org/printers базу данных OpenPrinting] и выберите своего производителя и модель принтера.<br />
*Поищите драйверы под GNU/Linux на сайте производителя.<br />
<br />
<br />
{{Note|Поместите PPD файлы в {{ic|/usr/share/cups/model/}}}}<br />
<br />
= Настройка CUPS =<br />
Итак, после установки CUPS, у вас есть множество способов его настройки. Вы всегда можете использовать старую добрую командную строку. Некоторые DE, такие как Gnome и KDE, предоставляют удобные программы, которые могут вам помочь в управлении принтерами. Однако, для того чтобы сделать этот процесс максимально доступным обыкновенному пользователю, мы будем использовать web-интерфейс, предоставляемый CUPS.<br />
<br />
Если планируется подключение не к локальному, а к сетевому принтеру, то, возможно, вначале стоит почитать о настройке [[CUPS printer sharing|общего доступа к принтерам в CUPS]]. Настройка общего доступа к принтерам внутри GNU/Linux довольно проста и имеет малое количество опций, а вот организация общего доступа к принтерам между Windows и GNU/Linux является немного более сложной.<br />
<br />
=== Модули ядра ===<br />
<br />
Перед использованием веб-интерфейса CUPS, вам понадобится загрузить соответствующие модули ядра. Далее описаны шаги, взятые из руководства по установке принтера в Gentoo.<br />
<br />
Данный раздел может понадобиться в зависимости от используемого ядра. После подключения принтера нужный модуль ядра может быть загружен автоматически. Воспользуйтесь командой {{ic|tail}} (описана далее) для того, чтобы определить обнаружен ли принтер. Для просмотра загруженных модулей ядра также можно воспользоваться утилитой {{ic|lsmod}}.<br />
<br />
==== USB-принтеры ====<br />
Для использования USB-принтера может потребоваться внести в черный список модуль {{ic|usblp}}. Учтите, что насчет добавления {{ic|usblp}} в черный список имеется некоторая [http://bbs.archlinux.org/viewtopic.php?pid=660601 неопределенность], так как некоторые USB-принтеры, в частности некоторые серии принтеров Canon и Epson, не определяются без этого модуля. Несколько пользователей принтеров Samsung, после добавления в черный список модуля {{ic|usblp}}, сообщили о проблемах с {{ic|cups}}, в качестве решения предлагается повторное включение модуля {{ic|usblp}} и установка из [[AUR]] пакета {{ic|cups-usblp}} вместо стандартного пакета {{ic|cups}} (https://bbs.archlinux.org/viewtopic.php?pid=778104). С февраля 2012, ранее работавший с cups-usblp USB-принтер Samsung ML2010, работает с cups и внесением в черный список usblp.<br />
<br />
Добавление модуля в черный список:<br />
<br />
{{hc|/etc/modprobe.d/blacklist.conf|blacklist usblp}}<br />
<br />
либо создав в {{ic|/etc/modprobe.d/}} свой файл, например {{ic|usblp_blacklist.conf}}, со следующим содержимым:<br />
<br />
{{hc|/etc/modprobe.d/usblp_blacklist.conf|blacklist usblp}}<br />
<br />
При использовании ядра собранного самостоятельно, возможно придется вручную загрузить модуль {{ic|usbcore}}:<br />
# modprobe usbcore<br />
<br />
После загрузки всех необходимых модулей - включите принтер и проверьте обнаружен ли он ядром, для этого выполните следующее:<br />
# tail /var/log/messages.log<br />
или<br />
# dmesg<br />
<br />
При использовании {{ic|usblp}}, сообщение об обнаружении принтера будет выглядеть примерно так:<br />
Feb 19 20:17:11 kernel: printer.c: usblp0: USB Bidirectional<br />
printer dev 2 if 0 alt 0 proto 2 vid 0x04E8 pid 0x300E<br />
Feb 19 20:17:11 kernel: usb.c: usblp driver claimed interface cfef3920<br />
Feb 19 20:17:11 kernel: printer.c: v0.13: USB Printer Device Class driver<br />
<br />
Если {{ic|usblp}} находится в черном списке, то будет выведено примерно следующее:<br />
usb 3-2: new full speed USB device using uhci_hcd and address 3<br />
usb 3-2: configuration #1 chosen from 1 choice<br />
<br />
==== Принтеры с параллельным портом ====<br />
Если вы желаете использовать принтер с параллельным портом, настройка в общем-то такая же, за исключением модулей:<br />
<br />
# modprobe lp<br />
# modprobe parport<br />
# modprobe parport_pc<br />
<br />
Еще раз проверьте настройки выполнив команду:<br />
# tail /var/log/messages.log<br />
Должно быть показано что-то вроде этого:<br />
lp0: using parport0 (polling)<br />
<br />
При использовании адаптера с USB на параллельный порт, CUPS не сможет обнаружить принтер. В качестве обходного пути - добавьте принтер используя другие типы соединений, а затем измените DeviceID в файле {{ic|/etc/cups/printers.conf}}:<br />
DeviceID = parallel:/dev/usb/lp0<br />
<br />
==== Автозагрузка ====<br />
Возможно, вам будет удобнее если соответствующий модуль будет загружен при старте системы. Для этого откройте в текстовом редакторе файл {{ic|/etc/[[rc.conf]]}}, и добавьте нужный модуль в строку {{ic|1=MODULES=()}}. Например, так:<br />
MODULES=(!usbserial scsi_mod sd_mod snd-ymfpci snd-pcm-oss '''lp parport parport_pc''' ide-scsi)<br />
<br />
===Демон CUPS===<br />
<br />
После установки соответствующих модулей ядра, можно приступать к [[Daemon#Performing daemon actions manually|запуску демона CUPS]]. Для автоматического запуска демона при старте системы следует добавить cupsd в [[daemons#Starting on Boot|строку DAEMONS]].<br />
<br />
=== Web-интерфейс и средства управления ===<br />
<br />
После запуска демона откройте браузер и зайдите на: http://localhost:631 (''Строку '''localhost''', возможно, придется заменить на имя хоста из'' {{ic|/etc/hosts}}).<br />
<br />
Теперь для добавления принтера можно использовать различные мастера. Для запуска обыкновенной процедуры установки кликните ''Добавление принтеров и групп'', затем ''Добавить принтер''. При запросе имени пользователя и пароля нужно будет войти в качестве root. Далее будет представлен список устройств для выбора. Фактическое имя принтера отображается рядом с меткой ( например, USB-принтеры напротив ''USB Printer #1''). Принтеру можно присваивать любое имя, аналогично для пунктов 'Расположение' и 'Описание'. После выбора соответствующего драйвера настройки будут окончены.<br />
<br />
<br />
Убедитесь в правильности настроек, нажав на кнопку ''Print Test Page'' (''Печать тестовой страницы'') в выпадающем меню ''Maintenance'' (''Обслуживание''). Если принтер не печатает, но вы уверены в правильности всех настроек, попытайтесь сменить драйвер принтера на другой.<br />
<br />
{{Tip|Ознакомьтесь с другими программами в разделе [[#Альтернативные интерфейсы CUPS]].}}<br />
{{Note|При установке USB-принтер должен отображаться в списке устройств на странице ''Добавить принтер''. Если будет доступен только вариант "SCSI printer", то это означает, что CUPS не смог распознать ваш принтер.}}<br />
<br />
==== Администрирование CUPS ====<br />
<br />
При администрировании принтера через веб-интерфейс (например для: добавления или удаления принтеров, остановки заданий печати, и т.д) понадобятся имя пользователя и пароль. Пользователем по-умолчанию может быть пользователь из группы ''sys'' или root (для изменения измените значение в строке ''SystemGroup'' файла {{ic|/etc/cups/cupsd.conf}}). <br />
<br />
При заблокированной учетной записи root (т.е. используя sudo) будет невозможно войти в веб-интерфейс управления CUPS с именем пользователя по умолчанию и его паролем. В этом случае придерживайтесь [http://www.cups.org/articles.php?L237+T+Qprintadmin инструкций] из CUPS FAQ. Дополнительно прочтите [http://bbs.archlinux.org/viewtopic.php?id=35567 это сообщение].<br />
<br />
====Удаленный доступ к веб-интерфейсу====<br />
По умолчанию, доступ к веб-интерфейсу CUPS разрешен только ''localhost''; т.е. компьютеру на котором он установлен. Для разрешения удаленного доступа нужно внести следующие изменения в файл {{ic|/etc/cups/cupsd.conf}}. Внесите изменения в строке:<br />
Listen localhost:631<br />
вместе с<br />
port 631<br />
таким образом, чтобы CUPS мог слушать входящие запросы.<br />
<br />
Можно предоставить три уровня доступа:<br />
<Location /> #доступ к серверу<br />
<Location /admin> #доступ к странице администрирования<br />
<Location /admin/conf> #доступ к конфигурационным файлам<br />
<br />
Для разрешения удаленного доступа к одному из уровней, добавьте параметр {{ic|Allow}} в секцию соответствующую выбранному уровню. Параметр {{ic|Allow}} может принимать одно или несколько из перечисленных ниже значений:<br />
Allow all<br />
Allow host.domain.com<br />
Allow *.domain.com<br />
Allow ip-address<br />
Allow ip-address/netmask<br />
<br />
Параметр также может быть использован для запрета. Например, если нужно дать полный доступ всем хостам подсети 192.168.1.0/255.255.255.0, файл {{ic|/etc/cups/cupsd.conf}} должен содержать следующее:<br />
# Ограничение доступа к серверу...<br />
# По умолчанию возможны только локальные подключения<br />
<Location /><br />
Order allow,deny<br />
Allow From localhost<br />
'''Allow From 192.168.1.0/255.255.255.0'''<br />
</Location><br />
<br />
# Ограничение доступа к странице администрирования...<br />
<Location /admin><br />
# Encryption disabled by default<br />
#Encryption Required<br />
Order allow,deny<br />
Allow From localhost<br />
'''Allow From 192.168.1.0/255.255.255.0'''<br />
</Location><br />
<br />
# Ограничение доступа к конфигурационным файлам...<br />
<Location /admin/conf><br />
AuthType Basic<br />
Require user @SYSTEM<br />
Order allow,deny<br />
Allow From localhost<br />
'''Allow From 192.168.1.0/255.255.255.0'''<br />
</Location><br />
<br />
Также вам потребуется добавить:<br />
<br />
DefaultEncryption Never<br />
<br />
Для того, чтоб избежать получения ошибки: 426 - Upgrade Required when using the CUPS web interface from a remote machine.<br />
<br />
= Устранение проблем =<br />
<br />
Наилучший способ борьбы с неисправностями - это выставить 'LogLevel' в файле {{ic|/etc/cups/cupsd.conf}} в:<br />
LogLevel debug<br />
<br />
А потом посмотреть вывод из файла {{ic|/var/log/cups/error_log}} например так:<br />
# tail -n 100 -f /var/log/cups/error_log<br />
<br />
Символы слева от вывода означают следующее:<br />
*D=Debug (отладка)<br />
*E=Error (ошибка)<br />
*I=Information (информация)<br />
*И так далее<br />
<br />
Следующие файлы также могут быть полезны:<br />
*{{ic|/var/log/cups/page_log}} - каждый раз при успешной печати, пишет новую запись<br />
*{{ic|/var/log/cups/access_log}} - записывает всю активность на cupsd http1.1 сервере<br />
<br />
Также, если вы хотите решить свои проблемы, важно понимать, как вообще работает CUPS. Вот краткая информация об этом:<br />
# Когда вы жмёте 'печать' приложение отправляет .ps-файл (PostScript, язык-скрипт, который описывает, как выглядит страница) в систему CUPS (так происходит в большинстве программ).<br />
# CUPS смотрит на PPD-файл (файл описания принтера) и находит, фильтры которые ему нужно использовать для преобразования .ps-файла в файл, который понимает ваш принтер (например, PJL,PCL). Обычно для этого ему требуется ghostscript.<br />
# GhostScript принимает ввод и решает, какие фильтры ему использовать, потом применяет их и преобразовывает .ps-файл в формат, который понимает принтер.<br />
# Затем файл передается бэкенду. Например, если у вас принтер подключен к usb порту, то используется usb бэкенд<br />
<br />
===Проблемы в результате обновления===<br />
''Проблемы возникшие после обновления CUPS и сопутствующего ему набора программ''<br />
<br />
====CUPS останавливается====<br />
Существует вероятность, что для правильной работы в обновленной версии понадобится новый файл конфигурации. Например, получение сообщения "404 - page not found" при попытке входа в панель управления CUPS через localhost:631.<br />
<br />
Для того, чтобы воспользоваться новым конфигом, скопируйте {{ic|/etc/cups/cupsd.conf.default}} в {{ic|/etc/cups/cupsd.conf}} (при необходимости сделайте резервную копию старого конфига):<br />
# cp /etc/cups/cupsd.conf.default /etc/cups/cupsd.conf<br />
и, чтобы новые настройки вступили в силу, перезапустите CUPS.<br />
<br />
====Ошибка gnutls====<br />
При получении следующей ошибки:<br />
/usr/sbin/cupsd: error while loading shared libraries: libgnutls.so.13: cannot open shared object file: No such file or directory<br />
следует обновить gnutls:<br />
# pacman -S gnutls<br />
<br />
После обновления в {{ic|/etc/cups}} появится файл {{ic|cupsd.conf.pacnew}}. Это стандартный конфигурационный файл. Сравните его со своим конфигурационным файлом и, при необходимости, добавьте новые опции.<br />
<br />
====Для всех заданий - "остановлено" ("stopped")====<br />
Если для всех отправленных на печать заданий установился статус "остановлено" ("stopped"), - удалите принтер и установите его заново.<br />
Для этого войдите в [http://localhost:631 веб-интерфейс CUPS], перейдите Принтеры > Удалить Принтер.<br />
<br />
Для проверки настроек принтера перейдите во вкладку ''Принтеры'', затем ''Администрирование''. В выпадающем списке кликните 'Изменить принтер', перейдите к следующей странице (ам), и так далее.<br />
<br />
====Для всех заданий - "Принтер не отвечает" ("The printer is not responding")====<br />
Для сетевых принтеров, поскольку CUPS подключается через URI, необходимо убедиться, что в DNS настроен доступ к принтерам по IP. Например, если принтер подключен следующим образом:<br />
lpd://BRN_020554/BINARY_P1<br />
то имени хоста 'BRN_020554' должны соответствовать IP принтеров, управляемых сервером CUPS.<br />
<br />
====Версия PPD не совместима с gutenprint====<br />
Запустите:<br />
# /usr/sbin/cups-genppdupdate<br />
<br />
И перезагрузите CUPS (будет выведено соответствующее сообщение после установки gutenprint).<br />
<br />
===USB-принтеры под CUPS 1.4.x===<br />
Новый CUPS 1.4.x принес множество изменений:<br />
<br />
====Конфигурационный файл====<br />
Изменился синтаксис конфигурационного файла cupsd.conf. Начните с нового конфигурационного фала {{ic|cupsd.conf}}, созданного из {{ic|/etc/cups/cupsd.conf.default}}.<br />
<br />
====Занесение в черный список usblp====<br />
Теперь CUPS, вместо генерирования устройств /dev/usb/lpX с помощью usblp, использует устройства libusb и USB-принтеры (из /dev/bus/usb/). Для того, чтобы заработали USB-принтеры - необходимо выключить модуль usblp.<br />
Выключить можно либо добавив в {{ic|/etc/modprobe.d/modprobe.conf}}:<br />
<br />
{{hc|/etc/modprobe.d/modprobe.conf|blacklist usblp}}<br />
<br />
либо создав в {{ic|/etc/modprobe.d/}} свой файл, например {{ic|usblp_blacklist.conf}}, со следующим содержимым:<br />
<br />
{{hc|/etc/modprobe.d/usblp_blacklist.conf|blacklist usblp}}<br />
<br />
Некоторым пользователям, возможно, прийдется переустановить принтер.<br />
<br />
====Определение устройства====<br />
В дополнение к отключению загрузки usblp, CUPS могут понадобится права на файл устройства USB-принтера - root:lp, и должны быть 660. Например.<br />
$ ls -l /dev/bus/usb/003/002<br />
crw-rw---- 1 root lp 189, 257 20. Okt 10:32 /dev/bus/usb/003/002<br />
<br />
Этого можно добиться добавлением двумя правилами udev в {{ic|/lib/udev/rules.d/50-udev-default.rules}}:<br />
# hplip and cups 1.4+ use raw USB devices, so permissions should be similar to<br />
# the ones from the old usblp kernel module<br />
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="", IMPORT{program}="usb_id --export %p"<br />
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}==":0701*:", GROUP="lp", MODE="660"<br />
<br />
Тем не менее, для некоторых устройств, например, многофункциональных устройств принтер/сканер, эти правила либо не используются, либо перекрываются правилами пакета 'sane'. В этом случае нужно будет добавлять пользовательские правила udev. Смотри далее.<br />
<br />
=====Устранение неполадок при определении устройств=====<br />
Узнаем файл устройства принтера и права доступа к нему: <br />
$ lsusb<br />
...<br />
Bus 003 Device 002: ID 04b8:0841 Seiko Epson Corp.<br />
$ ls -l /dev/bus/usb/003/002<br />
crw-rw---- 1 root lp 189, 257 20. Okt 10:32 /dev/bus/usb/003/002<br />
<br />
Если права доступа не root:lp 660, придется создать пользовательское правило [[udev]] для этого устройства, пример<br />
{{hc|cat /etc/udev/rules.d/10-usbprinter.rules|<nowiki>ATTR{idVendor}=="04b8", ATTR{idProduct}=="0841", MODE:="0660", GROUP:="lp"</nowiki>}}<br />
<br />
Для многофункциональных устройств (принтер+сканер), для того, чтоб [[sane]] определил его корректно:<br />
{{hc|cat /etc/udev/rules.d/10-usbprinter.rules|<nowiki>ATTR{idVendor}=="04b8", ATTR{idProduct}=="0841", MODE:="0660", GROUP:="lp", ENV{libsane_matched}:="yes"</nowiki>}}<br />
<br />
Обратите внимание на то, что значения idVendor и idProduct взяты из вывода команды lsusb показанного выше.<br><br />
Также обратите внимание - некоторым принтерам понадобятся права доступа 666.<br />
<br />
=====Загрузка прошивки (firmware)=====<br />
<br />
Для некоторых принтеров и драйверов понадобится загрузка прошивки принтера (таким как, использующие foo2zjs, принтеры HP LaserJet 10xx) и сделать это будет нужно путем записи прямо на устройство lp, такие функциональные возможности предоставляет usblp. Для обхода этого ограничения нужно будет загрузить модуль usblp при загрузке прошивки, а затем, для нормальной работы CUPS, удалить модуль. Для ручной загрузки модуля выполните<br />
$ modprobe usblp<br />
загрузка прошивки, затем:<br />
$ rmmod usblp<br />
Также можно обойтись без добавления usblp в черный список, добавьте "rmmod usblp" в {{ic|/etc/rc.local}}, при этом прошивка будет загружена при старте системы, а затем, при чтении {{ic|rc.local}}, модуль usblp будет выгружен.<br />
<br />
В случае если принтер окажется подключенным или на нем будет включено питание уже на работающей системе - файл {{ic|/etc/rc.local}} не будет использован и модуль usblp останется подгруженным. Обойти это можно изменив {{ic|/etc/udev/rules.d/11-hpj10xx.rules}}, созданный для foo2zjs, таким образом чтоб при добавлении устройства выполнялось нужное событие, например: 15 секунд для загрузки прошивки и автоматического удаления usblp. Следующий пример для HP LaserJet 1018. Для других моделей значения ATTRS{idProduct} должны быть изменены, соответственно модели принтера.<br />
<br />
Найдите в {{ic|/etc/udev/rules.d/11-hpj10xx.rules}} строку соответствующую вашему принтеру:<br />
ACTION=="add", KERNEL=="lp*", SUBSYSTEM=="usb", ATTRS{idVendor}=="03f0", \<br />
ATTRS{idProduct}=="4117", RUN+="/sbin/foo2zjs-loadfw 1018 $tempnode"<br />
Добавьте после нее следующие строки, при этом убедитесь, что соответствуют IDs продукта и производителя:<br />
ACTION=="add", KERNEL=="lp*", SUBSYSTEM=="usb", ATTRS{idVendor}=="03f0", \<br />
ATTRS{idProduct}=="4117", RUN+="/usr/bin/sleep 15"<br />
ACTION=="add", KERNEL=="lp*", SUBSYSTEM=="usb", ATTRS{idVendor}=="03f0", \<br />
ATTRS{idProduct}=="4117", RUN+="/sbin/rmmod usblp"<br />
<br />
===Остальное===<br />
<br />
=====Устранение ошибок CUPS=====<br />
*Пользователям, регулярно получающим ошибки вида 'NT_STATUS_ACCESS_DENIED' (Windows-клиенты), следует слегка изменить синтаксис:<br />
smb://workgroup/username:password@hostname/printer_name<br />
<br />
*Иногда, блочные устройства могут иметь не правильные права:<br />
# ls /dev/usb/<br />
lp0<br />
# chgrp lp /dev/usb/lp0<br />
<br />
====Принтер HPLIP выдает ошибку "/usr/lib/cups/backend/hp failed"====<br />
Убедитесь, что dbus установлен и запущен, для этого или проверьте секцию DAEMONS в {{ic|/etc/rc.conf}}, или выполните {{ic|ls /var/run/daemons}}.<br />
<br />
Если демон dbus запущен, но ошибка все равно повторяется - нужен avahi-daemon.<br />
<br />
====hp-toolbox выдает ошибку "Unable to communicate with device" ("Невозможно соединиться с устройством")====<br />
Если в результате запуска hp-toolbox от обычного пользователя получаете сообщение:<br />
# hp-toolbox<br />
# error: Unable to communicate with device (code=12): hp:/usb/<printer id><br />
или, "{{ic|Unable to communicate with device"}}", значит следует добавить пользователя в группу lp, для этого выполните следующую команду:<br />
# gpasswd -a <username> lp<br />
<br />
====CUPS с принтером HP возвращает '"foomatic-rip" not available/stopped with status 3' ('"foomatic-rip" не используется/остановлен со статусом 3')====<br />
Если, во время использования принтера HP, задания появляются в очереди, но все завершаются со статусом 'stopped', а в {{ic|/var/log/cups/error_log}} возникает одно из следующих сообщений об ошибках:<br />
Filter "foomatic-rip" for printer "<printer_name>" not available: No such file or director<br />
или:<br />
PID 5771 (/usr/lib/cups/filter/foomatic-rip) stopped with status 3!<br />
Убедитесь, что установлен '''hplip''', также может понадобится пакет '''net-snmp'''. Прочитайте [http://bbs.archlinux.org/viewtopic.php?id=65615 эти сообщения на форуме].<br />
# pacman -S hplip<br />
<br />
====Завершение печати из-за ошибок авторизации====<br />
Если пользователь уже добавлен в группу lp, и ему разрешена печать (настраивается в {{ic|cupsd.conf}}), то проблему следует искать в файле {{ic|/etc/cups/printers.conf}}. Проблема может заключаться в следующей строке:<br />
AuthInfoRequired negotiate<br />
<br />
Закомментируйте ее и перезапустите CUPS.<br />
<br />
====Неактивна кнопка Печать в диалогах приложений GNOME====<br />
:''<small>Источник: [http://bbs.archlinux.org/viewtopic.php?id=70418 I can't print from gnome applications. - Arch Forums]</small>''<br />
<br />
Убедитесь, что установлен пакет: '''libgnomeprint'''<br />
<br />
Отредактируйте {{ic|/etc/cups/cupsd.conf}} добавив в него<br />
# HostNameLookups Double<br />
<br />
Перезапустите CUPS:<br />
# /etc/rc.d/cupsd restart<br />
<br />
====Не найдена поддержка формата: application/postscript====<br />
Закомментируйте строки:<br />
application/octet-stream application/vnd.cups-raw 0 -<br />
в {{ic|/etc/cups/mime.convs}}, и:<br />
application/octet-stream<br />
в {{ic|/etc/cups/mime.types}}.<br />
<br />
====Определение URIs для Windows Print Servers====<br />
<br />
Иногда Windows предоставляет не полную информацию об URI (расположение устройств). Если в CUPS возникли проблемы с указанием местоположения устройств - необходимо выполнить команду получения списка всех ресурсов, которые доступны данному windows-пользователю:<br />
$ smbtree -U ''windowsusername''<br />
Если [[Samba]] работает и настроена правильно, то будут отображены все, доступные выбранному Windows-пользователю, ресурсы локальной сети. Команда должна отобразить что-то, типа этого:<br />
{{bc| WORKGROUP<br />
\\REGULATOR-PC <br />
\\REGULATOR-PC\Z <br />
\\REGULATOR-PC\Public <br />
\\REGULATOR-PC\print$ Printer Drivers<br />
\\REGULATOR-PC\G <br />
\\REGULATOR-PC\EPSON Stylus CX8400 Series EPSON Stylus CX8400 Series}}<br />
Нам понадобится первая часть последней строки -ресурс соответствующий описанию принтера. Таким образом, для получения возможности печатать на принтере EPSON Stylus, в качестве URI в CUPS следует ввести:<br />
smb://username.password@REGULATOR-PC/EPSON Stylus CX8400 Series<br />
Обратите внимание на то, что в URI допускаются пробелы, а знаки "\\" следует заменять на "//".<br />
<br />
====Ошибка задания для печати client-error-document-format-not-supported====<br />
Нужно установить пакет foomatic и использовать драйвер foomatic.<br />
<br />
====Не работает /usr/lib/cups/backend/hp====<br />
В {{ic|/etc/cups/cupsd.conf}} замените:<br />
<br />
SystemGroup sys root<br />
на<br />
SystemGroup lp root<br />
<br />
====Принтер Samsung не печатает некоторые документы====<br />
<br />
Бывает, что принтер Samsung прекрасно работает с {{ic|cups}}, но не печатает некоторые документы (файлы Inkscape с текстом) и даже сбоит. В качестве решения можно посоветовать использовать пакет {{AUR|cups-usblp}} с добавлением модуля {{ic|usblp}} в черный список (как было описано ранее).<br />
<br />
====Не отображается локальный USB-принтер====<br />
<br />
Если ваш usb-принтер не отображается - попробуйте заменить {{pkg|cups}} на {{AUR|cups-usblp}} (пакет можно найти в [[AUR]]). Затем проверьте работоспособность сначала с загруженным модулем {{ic|usblp}}, а затем, если не поможет, - с добавленным в черный список.<br />
<br />
===="Не удается получить список драйверов для принтеров"====<br />
Попробуйте удалить драйверы Foomatic.<br />
<br />
=Приложение=<br />
<br />
===Альтернативные интерфейсы CUPS===<br />
<br />
В среде [[GNOME]], вы можете конфингурировать ваш принтер с помощью system-config-printer-gnome. С помощью pacman можно установить этот пакет:<br />
# pacman -S system-config-printer-gnome<br />
<br />
Для нормальной работы system-config-printer понадобиться или запуск с правами администратора, или, если от обычного пользователя, то такому пользователю должно быть разрешено администрировать CUPS (если это так - '''выполните шаги 1-3''')<br />
<br />
* 1. Создайте группу и внесите в нее нужного пользователя:<br />
# groupadd lpadmin<br />
# usermod -aG lpadmin <username><br />
<br />
* 2. Добавьте "lpadmin" (без кавычек) в следующую строку файла {{ic|/etc/cups/cupsd.conf}}<br />
SystemGroup sys root <insert here><br />
<br />
* 3. Перезапустите cups, выйдите и снова войдите в систему (или перезагрузите компьютер)<br />
{{bc|# rc.d restart cupsd}}<br />
<br />
Пользователи [[KDE]] могут изменять настройки из "Control Center" (kcontrol). Для получения дополнительной информации, обратитесь к документации вашего рабочего окружения (DE).<br />
<br />
Также в [[AUR]] можно найти пакет [https://aur.archlinux.org/packages.php?ID=43505 gtklp]<br />
<br />
===Виртуальный PDF-принтер===<br />
<br />
Существует прекрасный пакет - CUPS-PDF. Этот пакет позволяет настроить виртуальный принтер, генерирующий PDF-файлы из того, что отправлено на печать на этот принтер. Возможно этот пакет вам и не понадобиться, но иногда он может быть очень полезен.<br />
<br />
Созданные PDF-документы можно найти в {{ic|var/spool/cups-pdf}}. Обычно, более удобно такие документы добавлять в домашнюю директорию пользователя. Настроить такое поведение не сложно. В файле /etc/cups/cups-pdf.conf найдите и строку:<br />
#Out /var/spool/cups-pdf/${USER}<br />
<br />
и приведите ее к такому виду:<br />
<br />
Out /home/${USER}<br />
<br />
<br />
Установить этот пакет можно командой:<br />
# pacman -S cups-pdf<br />
<br />
После установки пакета, настройте PDF-принтер аналогично обычному принтеру, например с помощью веб-интерфейса. В Device (Оборудование) выберите - '''CUPS-PDF (Virtual PDF Printer)'''; Make/Manufacturer (Марка/Производитель) выберите - '''Generic'''; Model/Driver (Модель/Драйвер) выберите - '''Generic postscript color printer''' или '''Generic Cups-PDF Printer'''. В качестве альтернативы, [http://www.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/cups-pdf-CURRENT/extra/CUPS-PDF.ppd по этой ссылке] можно найти другой PPD-файл.<br />
<br />
==== Печать в postscript: тонкости использования виртуального CUPS-PDF-принтера ====<br />
<br />
Для большинства приложений, таких как OpenOffice, печать в PDF не является проблемой; достаточно просто нажать кнопку. Для печати в postscript, потребуется выполнить небольшой дополнительный объем работ. CUPS-PDF (Виртуальный PDF-принтер) на самом деле создает postscript-файл, а затем уже с помощью утилиты ps2pdf, преобразовывает его в PDF. Для печати в postscript, необходимо сначала передать созданные CUPS-PDF postscript-файлы. Для этого в диалоге печати нужно выбрать вариант "print to file" ("печатать в файл"). (выберите расширение для файла или .ps, или .eps). После того, как будет отмечен флажок "print to file" ("печатать в файл"), введите имя файла и нажмите "print" ("печать").<br />
<br />
=====Настройка виртуального CUPS-PDF-принтера=====<br />
#Прочтите инструкция по настройке демона cups.<br />
#Установите {{Pkg|cups-pdf}} из [extra].<br />
#Запустите менеджер печати cups: http://localhost:631 и выберите:<br />
Administration -> Add Printer<br />
Select CUPS-PDF (Virtual PDF), выберите марку и модель:<br />
Make: Generic<br />
Driver: Generic CUPS-PDF Printer<br />
<br />
Теперь, для печати в postscript, в диалоговом окне печати установите "CUPS-PDF" в качестве принтера, установите флажок на "print to file" ("печатать в файл"), нажмите печать, введите имя_файла.ps и кликните сохранить. Метод удобен при обработке факсов и т.д...<br />
<br />
===Другие источники драйверов для принтеров===<br />
<br />
[http://www.turboprint.de/english.html Turboprint] - проприетарный драйвер для многих моделей принтеров, которые до сих пор не поддерживаются в GNU/Linux (например Canon i*). Единственная проблема в том, что высококачественная печать будет либо с водяным знаком, либо за отдельную плату...<br />
<br />
=Дополнение=<br />
<br />
Список вебсайтов, которые могут быть вам полезны:<br />
<br />
* <b>Official CUPS documentation on your computer</b> http://localhost:631/documentation.html<br />
* <b>Official CUPS Website</b> - http://www.cups.org/<br />
* <b>Linux Printing</b> - http://www.linuxprinting.org/<br />
* <b>Tips and Suggestions on common CUPS problems</b> - http://home.nyc.rr.com/computertaijutsu/cups.html<br />
* <b>Gentoo's Printing Guide</b> - http://www.gentoo.org/doc/en/printing-howto.xml<br />
* <b>Arch Linux User Forums</b> - http://bbs.archlinux.org/<br />
<br />
==Особые случаи==<br />
<br />
Дальнейшее описание посвящено специфическим проблемам и их решениям. Если вы сталкивались с какой-либо ''необычной'' работой принтера, пожалуйста, поместите решение проблемы здесь.<br />
<br />
=== Принтеры с параллельным портом HP (hplip) ===<br />
{{Note|Действия проводились для настройки HP LaserJet 6L}}<br />
Если HP принтер подключен через параллельный порт, то потребуется пересобрать пакет '''hplip''' с опцией '''--enable-pp-build'''.<br />
Для этого устанавливаем и обновляем ABS:<br />
<pre><br />
# pacman -S abs<br />
# abs<br />
</pre><br />
Копируем необходимые файлы для сборки<br />
<pre><br />
# cp -r /var/abs/extra/hplip /tmp<br />
</pre><br />
Правим файл {{ic|/tmp/hplip/PKGBUILD}} и добавляем опцию '''--enable-pp-build''' для '''./configure''':<br />
<pre><br />
[...]<br />
./configure --prefix=/usr \<br />
--enable-qt4 \<br />
--enable-pp-build \<br />
--enable-foomatic-rip-hplip-install \<br />
--enable-foomatic-ppd-install \<br />
--enable-hpcups-install \<br />
--enable-cups-drv-install \<br />
--enable-hpijs-install \<br />
--enable-foomatic-drv-install \<br />
--enable-udev-acl-rules<br />
[...]<br />
</pre><br />
Собираем и ставим пакет:<br />
<pre><br />
cd /tmp/hplip<br />
makepkg -s<br />
pacman -U hplip-3.10.6-1-i686.pkg.tar.xz<br />
</pre><br />
Далее принтер настраивается обычным путем через web-интерфейс '''CUPS''' [http://localhost:631 http://localhost:631].<br />
<br />
Если принтер правильно настроен для работы с '''hplip''', то строка подключения в '''CUPS''' будет начинаться с '''hp:'''<br />
<pre><br />
hp:/par/HP_LaserJet_6L?device=/dev/parport0<br />
</pre><br />
<br />
{{Note|Действия проводились для настройки HP LaserJet 5L, x86_64}}<br />
Устанавливаем hplip (пересобирать пакет не надо, он уже собран с --enable-pp-build)<br />
<pre><br />
# pacman -S hplip<br />
</pre><br />
Далее запускаем<br />
<pre><br />
# hp-setup -i -a -x /dev/parport0<br />
</pre><br />
для автоматического добавления принтера в CUPS, либо добавляем "ручками" через веб-интерфейс [http://localhost:631 http://localhost:631].<br />
<br />
===Печать не работает/прерывается на принтерах HP Deskjet 700===<br />
<br />
Проблема решается установкой фильтра pnm2ppa для принтеров HP Deskjet 700 series. Без этого задания на печать будут отменяться системой. [[Arch Build System (Русский)| PKGBUILD]] для pnm2ppa можно найти здесь: [http://aur.archlinux.org/index.php?setlang=ru AUR].<br />
<br />
===Заставить работать HP LaserJet 1010===<br />
Мне для этого пришлось самому собрать ghostscript, потому что gs ESP в репозитории был версии 7.07 и имел некоторые ошибки, исправленные в ESP 8.15.1. Я никогда не пользовался пакетом 'foomatic' из репозитория. Я думаю что этот пакет устарел.<br />
<pre><br />
$ pacman -Qs cups a2ps psutils foo ghost<br />
local/cups 1.1.23-3<br />
The CUPS Printing System<br />
local/a2ps 4.13b-3<br />
a2ps is an Any to PostScript filter<br />
local/psutils p17-3<br />
A set of postscript utilities.<br />
local/foomatic-db 3.0.2-1<br />
Foomatic is a system for using free software printer drivers with common<br />
spoolers on Unix<br />
local/foomatic-db-engine 3.0.2-1<br />
Foomatic is a system for using free software printer drivers with common<br />
spoolers on Unix<br />
local/foomatic-db-ppd 3.0.2-1<br />
Foomatic is a system for using free software printer drivers with common<br />
spoolers on Unix<br />
local/foomatic-filters 3.0.2-1<br />
Foomatic is a system for using free software printer drivers with common<br />
spoolers on Unix<br />
local/espgs 8.15.1-1<br />
ESP Ghostscript<br />
</pre><br />
Также я был вынужден выставить LogLevel в /etc/cups/cupsd.conf в debug2 для того чтобы обнаружить отсутствие некоторых шрифтов "Nimbus". Затем я переименовал их и положил туда, куда мне подсказывал лог. Тут нужно привести хитрый способ поиска в google, [http://www.google.com/search?q=n019003l+filetype%3Apfb например] т.к. шрифты являются проприетарными (уверен что в windows это по умолчанию). В любом случае, после скачивания шрифтов (около 7) и помещения их в правильную директорию печать заработала.<br />
<br />
До этого я получал ошибки описанные [http://linuxprinting.org/show_printer.cgi?recnum=HP-LaserJet_1010 здесь]: 'Unsupport PCL' и т.п...<br />
<br />
Уверен что это работало бы и с gs ESP 7.07 (в репозитории) если бы у меня раньше хватило ума включить DebugLevel2 :-/<br />
<br />
''Обновление:'' да, это работает... может быть эта информация окажется полезной для кого-либо ещё... извините за неудобства.<br />
<br />
===Заставить работать HP LaserJet 1020 (1018 и похожие)===<br />
После множества попыток связанных с hplib и gutenprint я наконец нашёл решение как заставить мой HP Laserjet 1020 печатать. <br />
<br />
Первым делом вам надо уставить cups и ghostscript. Затем пройдите по ссылке <br />
http://www.linuxprinting.org/show_printer.cgi?recnum=HP-LaserJet_1020 на страницу драйверов печати http://foo2zjs.rkkda.com/ и следуйте интрукциям по установке. Залогиньтесь как root. После скачивания и распаковки архива переместитесь в распакованную директорию foo2zjs. Теперь вы можете делать всё по оригинальной инструкции по установке, лишь с небольшой модификацией для изменения userid пользователя для печати:<br />
<pre><br />
$ make<br />
$ ./getweb 1020<br />
</pre><br />
Откройте ''Makefile''<br />
<pre>$ nano Makefile</pre><br />
найдите там строку<br />
<pre># LPuid=-olp</pre><br />
и модифицируйте её таки образом:<br />
<pre># LPuid=-oroot</pre><br />
дальше выполняйте сборку<br />
<pre><br />
$ make install<br />
$ make install-hotplug<br />
$ make cups<br />
</pre><br />
Сейчас в этих действиях нет необходимости. Теперь строка '''LPuid=-oroot''' стоит по умолчанию.<br />
<br />
Вы также можете взять пакет foo2zjs из [http://aur.archlinux.org/index.php?setlang=ru AUR] и модифицировать [[Arch Build System (Русский)| PKGBUILD]]: измените строку<br />
<pre>./getweb all</pre><br />
на<br />
<pre>./getweb 1020</pre><br />
(или, если устанавливаете другой принтер, измените эту строку на что, что вам нужно).<br />
<br />
Последним шагом является добавление и конфигурирование принтера в CUPS manager. Принтер должен определиться автоматически. Это отлично работает для root'а и всех ползователей. Когда ОС загружается, принтер инициализируется и сигнализирует о том, что он работает.<br />
Так же строку<br />
<pre>./getweb 1020</pre><br />
можно изменять на необходимые 1018 (для работы принтера Hewlett-Packard 1018) и т.д.<br />
<pre>./getweb 1018</pre><br />
Список поддерживаемы моделей тут: http://foo2zjs.rkkda.com/<br />
<br />
====HPLIP====<br />
<br />
Больше нет необходимости устанавливать драйвер foo2zjs для работы принтера HP LJ 1018/1020, поскольку в последних версиях hplip он работает "из коробки". Вам следует установить hplip, gnomesu или gksu, qt и pyqt4, после чего запустить <br />
<pre>sudo hp-setup</pre><br />
CUPS-сервер должен быть запущен. Мастер установки hplip автоматически установит ваш принтер. После следует установить плагин к принтеру. Для этого запустить от пользователя программу hp-toolbox и выберите "install required plugin". Плагин автоматически загрузится с сайта производителя.<br />
Никаких дополнительных действий (вроде внесения usblp и MODULES_BLACKLIST) выполнять не надо.<br />
<br />
===Выполнение сервисных операций на принтерах Epson===<br />
====Escputil====<br />
<br />
Здесь объясняется как выполнить некоторые вспомогательные операции, такие как очистка и проверка сопел на принтерах Epson. Для этого мы будем использовать утилиту escputil, которая входит в состав пакета gutenprint.<br />
<br />
Man-страница этой утилиты ("man escputil") содержит очень полезную информацию, но не включает в себя необходимых сведений о том как идентифицировать ваш принтер. Для этого могут быть использованы два параметра. Первый из них --printer; он принимает имя принтера, которое вы использовали при его конфигурировании. Другой &mdash --raw-device. Эта опция примаетпуть к устройству. Если ваш принтер подключен к последовательному порту, то устройство будет выглядеть примерно как "/dev/lp0". Если же ваш принтер подключен к USB, по устройство будет "/dev/usb/lp0". Если у вас более одного принтера они будут иметь имена файлов устройств "lp1", "lp2" и т.д.<br />
<br />
* очистка печатающей головки:<br />
<pre>escputil -u --clean-head</pre><br />
<br />
* проверка сопел:<br />
<pre>escputil -u --nozzle-check</pre><br />
<br />
Если вам необходимо произвести операцию, которая требует двухстороннего общения с принтером вы должны использовать спецификацию "--raw-device", а ваш пользователь должен состоять в группе "lp" или быть root'ом.<br />
<br />
* получение внутреннего имени принтера:<br />
<br />
sudo escputil --raw-device=/dev/usb/lp0 --identify<br />
<br />
* получение уровня чернил:<br />
<br />
sudo escputil --raw-device=/dev/usb/lp0 --ink-level<br />
<br />
====Mtink====<br />
<br />
Это монитор состояния принтера, который позволяет получить количество оставшихся чернил, печатать тестовые страницы, сбрасывать принтер и очищать сопла. Он использует интуитивный графический интерфейс пользователя. Пакет можно скачать [https://aur.archlinux.org/packages.php?ID=476 отсюда].<br />
<br />
=Источники=<br />
* [http://localhost:631/documentation.html Официальная документация CUPS documentation], ''локальная установка''<br />
* [http://www.cups.org/ Официальный Веб-сайт CUPS]<br />
* [http://www.linuxprinting.org/ Linux Printing], ''[http://www.linuxfoundation.org Linux Foundation]''<br />
* [http://www.gentoo.org/doc/en/printing-howto.xml Руководство по печати в Gentoo], ''[http://www.gentoo.org/doc/en Источники Документации Gentoo]''<br />
* [http://bbs.archlinux.org/ Форум пользователей Arch Linux]</div>Alligatorhttps://wiki.archlinux.org/index.php?title=Xfce_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=187079Xfce (Русский)2012-03-01T15:38:06Z<p>Alligator: /* Автоматически во время загрузке */</p>
<hr />
<div>[[Category:Desktop environments (Русский)]]<br />
{{i18n|Xfce}}<br />
[[pl:XFCE]]<br />
[[de:Xfce]]<br />
<br />
{{Article summary start}}<br />
{{Article summary text|Xfce - это легковесная среда рабочего стола для Unix-подобных Операционных систем. Xfce стремится быть быстрым и легковесным окружением и, вместе с этим, привлекательным и удобным и для пользователя. В этой статье будут рассмотрены: установка, настройка и устранение проблем.}}<br />
{{Article summary text|Xfce использует [[GTK+]] toolkit.}}<br />
{{Article summary heading|Overview}}<br />
{{Article summary text|Обзор графического интерфейса}}<br />
{{Article summary end}}<br />
<br />
Выдержка из [http://www.xfce.org/about/ Xfce - About]:<br />
<br />
:''Xfce воплощает традиционную UNIX-философию модульности, простоты и удобства в использовании. Xfce состоит из ряда компонентов, которые обеспечивают полнофункциональное современное настольное окружение рабочего стола. Все компоненты собираются независимо и вы можете выбрать среди доступных пакетов те, которые вам нужны для создания оптимального (лично для вас) окружения рабочего стола.''<br />
<br />
== Что такое Xfce? ==<br />
Xfce это среда рабочего стола, такая же, как и GNOME или KDE. У xfce имеется свой пакет приложений, таких как оконный менеджер, файл-менеджер, панель, и т.д. Xfce написан с помощью GTK2 и имеет собственную среду разработки (библиотеки, демоны и т.д), так же, как и другие большие окружения.<br />
<br />
==Особенности==<br />
<!-- this section really needs to be redone --><br />
* Скорость. Xfce быстрее, чем другие известные окружения.<br />
* Стабильность. За длительное время использования Xfce4 в нем было обнаружено довольно мало ошибок, что говорит о его надежности.<br />
* Привлекательность. Xfce использует GTK2, поэтому можно изменять его внешний вид с помощью тем GTK.<br />
* Прекрасная работа с несколькими мониторами. Xfce [[Wikipedia:Xinerama|Xinerama]] работает с несколькими мониторами лучше, чем остальные окружения или оконные менеджеры.<br />
* Незаметность. Xfce не мешает вашей работе и, работая в Xfce, вы не будете отвлекаться на окружение.<br />
* В Xfce есть собственный композитный менеджер окон, который может придать эффект прозрачности окнам и некоторые другие вещи.<br />
<br />
==Установка==<br />
Xfce - модульное окружение. Это значит, что не обязательно устанавливать всё. Вы можете выбрать лишь то, что нужно вам и не устанавливать ничего лишнего. Это дает гибкость, которая свойственна философии Arch Linux.<br />
<br />
=====Установка Xfce=====<br />
Для установки базового варианта Xfce выполните:<br />
<br />
# pacman -S xfce4<br />
<br />
Pacman спросит вас о том, какие пакеты вы хотите установить. Вам следует установить все пакеты из данной группы, поэтому просто нажмите enter.<br />
<br />
{{Note |Однако, вы можете установить только несколько '''основных пакетов''':<br />
<br />
# pacman -S xfwm4 xfce4-panel xfdesktop thunar xfce4-session xfce4-settings xfce4-appfinder xfce-utils xfconf<br />
<br />
}}<br />
<br />
Если вы хотите дополнений к базовому варианту (такие как аплеты панели и т.д), выполните:<br />
<br />
# pacman -S xfce4-goodies<br />
<br />
Если вы хотите, чтобы при загрузке вам показывали 'Советы и Подсказкии', установите пакет fortune-mod:<br />
<br />
# pacman -S fortune-mod<br />
<br />
Чтобы xfce4-mixer работал с ALSA, вам следует установить gstreamer0.10-base-plugins. (См. ниже, если вы используете OSS)<br />
<br />
# pacman -S gstreamer0.10-base-plugins<br />
<br />
=====Установка и настройка Демонов=====<br />
Установите dbus:<br />
# pacman -S dbus<br />
<br />
[[Daemon#Performing daemon actions manually|Запустите демон]] и добавьте dbus в ваш /etc/rc.conf, [[Rc.conf#Daemons|секция DAEMONS]] - теперь dbus будет запускаться автоматически.<br />
<br />
Устанавите gamin (замена fam). Он автоматически запускается в фоне, не следует добавлять его в rc.conf.<br />
<br />
# pacman -S gamin<br />
<br />
== Запуск Xfce ==<br />
<br />
=====Автоматически во время загрузки=====<br />
Прочитайте статью [[Display Manager]], чтобы узнать, что необходимо для установки и настройки Display Manager. Не забудьте настроить его должным образом для [[PolicyKit]].<br />
<br />
=====Вручную=====<br />
<br />
Вы можете запустить:<br />
$ startxfce4<br />
из консоли, или настроить [[xinitrc]] и использовать xinit или startx.<br />
<br />
Если у вас отсутствует файл ~/.xinitrc , выполните следующее:<br />
<br />
$ cp /etc/skel/.xinitrc ~/.xinitrc<br />
<br />
И добавьте эту строку в конец файла:<br />
<br />
exec ck-launch-session dbus-launch --exit-with-session startxfce4<br />
<br />
{{Note | в этом файле должна быть раскомментирована '''только одна''' строка с exec}}<br />
<br />
Пример:<br />
#!/bin/sh<br />
#<br />
# ~/.xinitrc<br />
#<br />
# Executed by startx (run your window manager from here)<br />
<br />
# exec gnome-session<br />
# exec startkde<br />
# exec startxfce4<br />
# ...or the Window Manager of your choice<br />
exec ck-launch-session dbus-launch --exit-with-session startxfce4<br />
<br />
{{{Note|<code>dbus-launch</code> запускает dbus-daemon для взаимодействия с PolicyKit. <code>ck-launch-session</code> запускает новую сессию consolekit, необходимую Xfce для управления питанием, автомонтирования, выколючения/перезагрузки и т.д. ConsoleKit/PolicyKit совместимые DM, такие как GDM или SLiM выполняют это автоматически. Замечание: dbus-launch должен находиться после ck-launch-session, во избежание проблем с монтированием дисков.}}}<br />
<br />
=====Выключение, перезагрузка и автоматическое монтирование дисков в Xfce=====<br />
* Убедитесь, что демон '''dbus''' присутстует в секции DAEMONS в /etc/rc.conf.<br />
* Убедитесь, что вы принадлежите группе ''power'' (для выключения и перезагрузки).<br />
* Убедитесь, что вы принадлежите группе ''storage'' (для автоматического монтирования дисков).<br />
* Убедитесь, что строка <code>exec ck-launch-session dbus-launch --exit-with-session startxfce4</code> присутствует в ~/.xinitrc '''или''' вы используете ConsoleKit/PolicyKit совмесимый display manager, такой как [[GDM]] или [[Slim|SLiM]]. (см. выше)<br />
<br />
== Советы ==<br />
=== Панель ===<br />
==== Как настроить фон панели xfce ====<br />
Редактируем ~/.gtkrc-2.0.<br />
Обратите внимание, что изображение должно лежать в той же директории, что и файл конфигурации, т.е в ~/. Вы не можете указать путь к изображению, поэтому это единственный рабочий способ.<br />
style "panel-background" {<br />
bg_pixmap[NORMAL] = "foo.bar"<br />
bg_pixmap[PRELIGHT] = "foo.bar"<br />
bg_pixmap[ACTIVE] = "foo.bar"<br />
bg_pixmap[SELECTED] = "foo.bar"<br />
bg_pixmap[INSENSITIVE] = "foo.bar"<br />
}<br />
widget_class "*Panel*" style "panel-background"<br />
<br />
==== Замена стандартного аплета меню ====<br />
В аплете "Ubuntu System Panel" (Gnome) есть некоторые возможности меню KDE v4.2.Его можно добавить на панель Xfce с помощью аплета 'XfApplet', который позволяет размещать аплеты Gnome на панели Xfce.<br />
<br />
Его можно найти в [http://aur.archlinux.org/packages.php?ID=10259 AUR]<br />
<br />
==== Как удалить некоторые пункты из меню ==== <br />
===== Способ 1 =====<br />
Встроенный редактор меню не умеет удалять пункты из системного меню. Как их скрыть:<br />
# Откройте ваш любимый терминал (стандартный терминал Xfce: Меню > Системные > Терминал) и перейдите в директорию /usr/share/applications: <pre>$ cd /usr/share/applications</pre><br />
# Эта папка должна быть наполнена .desktop файлами. Чтобы посмотреть список всех файлов, выполните: <pre>$ ls</pre><br />
# Добавьте ''NoDisplay=true'' в .desktop файл. Например, если вы хотите скрыть Firefox, введите в терминале: <pre>$ sudo echo "NoDisplay=true" >> firefox.desktop</pre>. Эта команда добавит строку ''NoDisplay=true'' в конец файла firefox.desktop.<br />
<br />
===== Способ 2 =====<br />
Другой способ заключается в копировании системных файлов в вашу домашнюю директорию и редактировании .desktop файлов уже непосредственно в домашней директории и только для этого пользователя. Плюс этого метода в том, что даже при обновлении программ и, соответственно, файлов в /usr/share/applications/, изменения, внесенные вами, сохранятся.<br />
# Для копирования файлов из /usr/share/applications в ~/.local/share/applications/ введите: <pre>$ cp /usr/share/applications/* ~/.local/share/applications/</pre><br />
# Для тех программ, которые вы хотите скрыть в меню, вставьте строку 'NoDisplay=true': <pre>$ echo "NoDisplay=true" >> ~/.local/share/applications/foo.desktop</pre><br />
<br />
Также вы можете изменить группу (категорию) приложения, изменив в .desktop файле строку 'Categories=' в текстовом редакторе.<br />
<br />
==== Но что же делать с пунктами меню, которых нет в /usr/share/applications (например, приложения, установленные из Wine)? ====<br />
Некоторые приложения, которые принадлежат категории "Other", вы можете найти в этой директории:<br />
~/.local/share/applications/wine/.<br />
<br />
=== Рабочий стол ===<br />
==== Почему мой рабочий стол не обновляется? ====<br />
Xfce 4.6 использует [[FAM]] (File Alteration Monitor) или [[gamin]] (преемник FAM) для получения сообщеий об изменении файлов или директорий.<br />
Если вы решили пользоваться FAM, не забудьте добавить 'fam' в секцию DAEMONS в /etc/rc.conf.<br />
Этот шаг нужно пропустить, если вы пользуетесь gamin.<br />
<br />
Note: После недавнего обновления, у FAM могут быть проблемы с некоторыми файловыми системами, такими как sshfs. Если вы не уверены, то используйте gamin.<br />
<br />
==== Прозрачный фон для подписей ярлыков на рабочем столе ====<br />
Для изменения стандартного белого фона подписей ярлычков на рабочем столе нужно отредактировать файл .gtkrc-2.0 из домашней директории (или создать, если отсутствует) и добавить следующие строки:<br />
style "xfdesktop-icon-view" {<br />
XfdesktopIconView::label-alpha = 10<br />
base[NORMAL] = "#000000"<br />
base[SELECTED] = "#71B9FF"<br />
base[ACTIVE] = "#71FFAD"<br />
fg[NORMAL] = "#ffffff"<br />
fg[SELECTED] = "#71B9FF"<br />
fg[ACTIVE] = "#71FFAD" }<br />
widget_class "*XfdesktopIconView*" style "xfdesktop-icon-view"<br />
<br />
==== Скрыть выбранные разделы с рабочего стола ====<br />
Если вы хотите убрать только определенные разделы дисков с рабочего стола, то вам необходимо создать правила для udev, например {{ic|/etc/udev/rules.d/10-local.rules}}:<br />
<br />
KERNEL=="sda1", ENV{UDISKS_PRESENTATION_HIDE}="1"<br />
KERNEL=="sda2", ENV{UDISKS_PRESENTATION_HIDE}="1"<br />
<br />
После этого на рабочем столе будут видны все разделы, кроме sda1 и sda2.<br />
<br />
==== Вернуть старое меню ПКМ рабочего стола, без пунктов Thunar ====<br />
xfconf-query -c xfce4-desktop -v --create -p /desktop-icons/style -t int -s 0<br />
<br />
=== Предложения по программам ===<br />
==== Выпадающий терминал как в quake-подобных играх ====<br />
<br />
# pacman -S tilda<br />
<br />
Это установит tilda, выпадающий терминал, подобный yakuake. Есть более легковесная альтернатива - '''stjerm''', которую можно найти в AUR.<br />
<br />
Для настройки tilda вызовите:<br />
<br />
# tilda -C<br />
<br />
====Guake====<br />
Есть еще один подобный терминал - guake, который доступен в репозитоиии community:<br />
<br />
# pacman -S guake<br />
<br />
=== XFWM4 ===<br />
==== Включение композитности ====<br />
В Xfce есть встроенный композитный менеджер с интересными эффектами окон, тенью, прозрачностью и подобными. Эта возможность может быть включена в настройках эффектов оконного менеджера без перезапуска. Никаких дополнительных настроек в /etc/xorg.conf не требуется. Для включения нужно перейти сюда:<br />
<br />
Меню -> Настройки -> Оконный менеджер -> Эффекты<br />
<br />
==== Убрать разворачивание окна колесом мыши ====<br />
xfconf-query -c xfwm4 -p /general/mousewheel_rollup -s false<br />
<br />
=== Сеанс ===<br />
==== Настройка приложений автозапуска ====<br />
<br />
Приложения для автозапуска вы можете настроить из GUI (Меню -> Настройки -> Сеансы и Запуск), или вручную:<br />
<br />
* Скопируйте файл /etc/xdg/xfce4/xinitrc в ~/.config/xfce4/<br />
* Отредактируйте этот файл. Например, вы можете добавить следующее:<br />
source $HOME/.bashrc<br />
# start rxvt-unicode server<br />
urxvtd -q -o -f<br />
<br />
==== Переключение пользователей ====<br />
<br />
Переключение между сеансами пользателей возможно благодаря аплету [http://aur.archlinux.org/packages.php?ID=40677 xfswitch-plugin]. Он добавляет иконку на панель. На данный момент необходимо наличие gdm.</div>Alligator