LINUX.ORG.RU

Сообщения Kroz

 

Защищаемся от Meltdown и Spectre

Форум — General

Привет

Предлагаю собирать инфу о Meltdown и Spectre.

Пока у меня получилось найти пару тестов своей системы, но мало информации о том, как защититься. И никакой конкретной информации о том как увидеть влияние на performance - все ограничиваются цифрами, но не тем как провести реальные тесты.

О чем говорим:

Spectre     - Variant 1 - 2017-5753 - Bounds Check Bypass
Spectre     - Variant 2 - 2017-5715 - Branch Target Injection
Meltdown    - Variant 3 - 2017-5754 - Rogue Data Cache Load
BranchScope -           -           - Attack on Directional Branch Predictor
(еще восемь - см. ниже)
LazyFP                  - 2018-3665 - Exploiting lazy FPU state switching
Wiki
8 новых уязвимостей

SpectrePrime, MeltdownPrime:
То, же что и Spectre, Meltdown, но использующие альтернативный способ восстановления данных из кеша, который увеличивает точность восстановления.
Считается что программные методы защиты от Spectre и Meltdown также защищают и от SpectrePrime и MeltdownPrime. А вот аппаратная защита должна отельно учитывать учитывать SpectrePrime и MeltdownPrime.
Источник: Opennet

BranchScope:
Напоминает второй вариант атаки Spectre но отличается способом создания условий для влияния на состояние блока предсказания переходов.
Метод был протестирован на процессорах Intel Sandy Bridge, Haswell и Skylake, и продемонстрировал уровень ошибок менее 1%.
Утверждается, что предложенный для Spectre V2 метод защиты (Retpoline) не эффективен против BranchScope, но для блокирования атаки предложен иной метод защиты, который может быть реализован как программно, так и на аппаратном уровне. По мнению компании Intel предложенная в обновлении микрокода техника защиты от первого варианта Spectre (на основе инструкции LFENCE) будет эффективна и для защиты от атаки BranchScope. Для защиты важных данных также могут применяться типовые криптографические методы защиты от утечки по сторонним каналам.
Больше деталей - на OpenNet.

LazyFP:
Через проведение атаки по сторонним каналам атакующий может определить значения регистров FPU, MMX, SSE, AVX и AVX-512, используемых другим процессом. Например, в данных регистрах могут содержаться параметры для криптографических вычислений и имеющий доступ к локальной системе злоумышленник может попытаться использовать их для определения ключа шифрования. При использовании систем виртуализации проблема может применяться для определения состояния регистров другой гостевой системы или другого процесса в текущей гостевой системе.
Больше деталей - на OpenNet, Intel, blog.cyberus-technology.de.

Уязвимые архитектуры:
- Meltdown - только Intel, притом практически все начиная с выпуска 1995 года (источник).
- Spectre - все процессоры с фичей speculative execution, то есть почти все современные процессоры, в т. ч. Intel, AMD, ARM, IBM Power, IBM System Z (источник).
- Еще 8 - подтверждено на Intel на AMD и ARM не тестировалось (источник).
- LazyFP - только процессоры линейки Intel Core. Не проявляется на чипах Intel Atom/Knights и CPU AMD.

Тесты на наличие уязвимостей:
- https://github.com/IAIK/meltdown/ - реальный эксплоит.
- https://github.com/speed47/spectre-meltdown-checker - это скорее проверяет наличие фиксо/mitigations в системе.
- https://github.com/tesla707/Spectreprime-attack - SpectrePrime реальный эксплоит - https://blog.cyberus-technology.de/posts/2018-06-06-intel-lazyfp-vulnerabilit... - здесь только куски эксплоита в разделе «The Attack», рабочие версии пока не опубликованы. Если знаете лучше или более полные - говорите.

Защита:
Meltdown
Для защиты активируется Kernel page-table isolation (KPTI, старое название - KEISER)
1. Обновление ядра до версий 4.14.12, 4.9.75, and 4.4.110 или выше (Gentoo Wiki)
2. Активировать Kernel/User page tables isolation в ядре - опция ядра CONFIG_PAGE_TABLE_ISOLATION (askubuntu.com) - доступно только для 64-битного ядра.
- Отключать, если не в ядре - с помощью параметра ядра nopti (источник) или echo 0 > /sys/kernel/debug/x86/pti_enabled (источник - Redhat). Нужно владельцам процессоров не-Intel (например, AMD), так как KPTI дает проседание по performance'у, а для AMD это не актуально, так как уязвимость затрагивает только Intel.
Патчинг компиляторов и гипервизоры не требуется.
Как я понял, это полностью устраняет проблему Meltdown.
Фичи процессоров process-context identifiers (PCID) и invalidate process-context identifiers (INVPCID) позволяет снизить проседание перформанса из-за включения KPTI (источник, источник, источник). Доступна только на процессорах Intel: PCID - некоторые Westmere family, Sandy Bridge, INVPCID - Haswell и выше (источник). Также требуется ядро 4.14.12 или выше (источник). Проверить наличие фич в процессоре можно в /proc/cpuinfo (источник)

Spectre
1. Подгрузка микрокода процессора - Intel Microcode update 01/08/2018
- Мануал для Gentoo
- Если я правильно понял, то критерий успеха подгрузки микрокода процессора с фиксом можно узнать так: grep -q "cpu_insecure\|cpu_meltdown\|kaiser" /proc/cpuinfo (askubuntu.com)
Но как я понял, микрокод есть не для всех процессоров, в частности нет для Core 2 Duo . Подозреваю что здесь полный перечень Интеловских процессоров, для которых есть обновление.
2. Поддержка на уровне ядра начиная с какой верии - непонятно):
- Indirect Branch Restricted Speculation (IBRS) (Как выставлять). Притом у него 2 режима, подробней здесь. как проверять/выставлять - Redhat. Но - создана новая атака
- Indirect Branch Prediction Barrier (IBPB) (SGX - Software Guard Extensions) - тоже описан здесь и здесь, как проверять/выставлять - Redhat. Но новая атака SgxPectre показывает что данный механизм не эффективен.
- STIBP - иногда упоминают (раз, два), но детальной информации вообще не нашел.
3. Патчинг компиляторов
- Для GCC:
- - Добавление опции -mindirect-branch, -mindirect-branch-loop, -mfunction-return, -mindirect-branch-register с которыми нужно перекомпилить... всё? Где скачать - непонятно. Насколько полно решают проблему - непонятно.
- - retpoline - добавление опции -mindirect-branch=thunk-extern. С ней нужно перекомпилить ядро с наложенным патчем (где скачать?). Пока есть для gcc 8 (mailing list) и gcc 7.3 (OpenNet, Phoronix); в планах портировать фикс gcc 6/5/4. Похоже, что для процессоров архитектуры Skylake и более поздних проблему решает не полностью (источник).
- LLVM - TBD
4. Патчинг гипервизоров - https://github.com/hannob/meltdownspectre-patches , раздел Virtualization Не ясно закрывает ли это проблему полностью.
- VirtualBox 5.2.6 и 5.1.32 (источник).
5. Патчинг браузеров (потому как уязвимость можно эксплуатировать даже через JavaScript):
- Chrome 63 - нужно включить опцию chrome://flags#enable-site-per-process ; в Chrome 64 включено по дефолту.
- Firefox 57.0.4 (источник)

LazyFP
- В ядре Linux защита была реализована ещё в феврале 2016 года, путём применения по умолчанию режима Eager FP (eagerfpu=on) и удаления возможности активации Lazy FP. Уязвимость затрагивает ядра Linux до версии 4.6 или системы с процессорами без поддержки инструкции XSAVE (до Sandy Bridge), в которых по умолчанию применялся режим Lazy FP. В старых ядрах Linux для защиты можно использовать опцию «eagerfpu=on», которая присутствует начиная с ядра 3.7.
Влияние на performance:
- Хороший отчет Redhat о том, какое проседание performance'а на каких операциях
- Бенчмарки Phoronix: разные режимы IBRS/IBPB, Spectre, Meltdown
. Как сказано выше, наличие PCID и INVPCID в процессорах делает проседание по performance'у меньше.
Методология (как проверить у себя) - TBD
- Конкретный софт: bind

В каких процессорах Intel какая защита релизована
Habr: Больше кофе, меньше кофеина: Intel 9th Gen (часть 1), искать глава «Исправления безопасности оборудования и программного обеспечения»

Открытые вопросы:
1. Ваш набор тестов на наличие уязвимостей Meltdown и Spectre
2. Ваш рецепт по фиксу
3. Как включать/выключать IBPB и STIBP?
4. Ссылки на патчи для компиляторов
5. Приведите тест (не результаты, а методику), который бы показал влияние на performance
6. Если покупать железо, как знать что оно не подвержено Meltdown и Spectre?

Пожалуйста, дополняйте информацию, особенно там, где написано TBD, где видите неточности или пробелы. Давайте вместе расставим точки над i и победим этот недуг.

 , ,

Kroz
()

Переменные окружения в иксах, KDE

Форум — General

Привет

Сравнил выхлоп env в иксах (чистый urxvt), и в tmux, сессия которого была запущена в голой консоли. Нашёл много различий.

Подскажите, что значат переменные в списке ниже, и что будет если они не установлены.

Например, я уже знаю, что если не установлена DISPLAY, то не запустятся иксовые приложения, если DESKTOP_SESSION - KDE'шные. Какое назначение других переменных?

COLORFGBG=default;0
COLORTERM=rxvt
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-MF2xSwEAub,g
DESKTOP_SESSION=/usr/share/xsessions/plasma
DESKTOP_STARTUP_ID=lix;1510980370;850836;2904_TIME10951505
GNOME_KEYRING_CONTROL=/home/kroz/.cache/keyring-KPXTBZ
GS_LIB=/home/kroz/.fonts
GTK_MODULES=canberra-gtk-module
HUSHLOGIN=FALSE
KDE_FULL_SESSION=true
KDE_SESSION_UID=1100
KDE_SESSION_VERSION=5
LANGUAGE=en_US
PAM_KWALLET5_LOGIN=/tmp/kwallet5_kroz.socket
QT_AUTO_SCREEN_SCALE_FACTOR=0
SESSION_MANAGER=local/lix:@/tmp/.ICE-unix/3838,unix/lix:/tmp/
SSH_ASKPASS=/usr/bin/ksshaskpass
SSH_AUTH_SOCK=
WINDOWID=52928810
XAUTHORITY=/home/kroz/.Xauthority
XCURSOR_THEME=breeze_cursors
XDG_CURRENT_DESKTOP=KDE
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
XDG_SEAT=seat0
XDG_SESSION_CLASS=user
XDG_SESSION_COOKIE=lix-1511969459.859663-529149191
XDG_SESSION_DESKTOP=KDE
XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0
XDG_SESSION_TYPE=x11
XDG_VTNR=7

 , , , ,

Kroz
()

256 цветов в консоли TTY

Форум — General

Всех с наступившим!

Подскажите. а в 2017 уже научились получать 256 цветов в голой консоли? fbterm имеет проблемы со шрифтами, kmscon мёртв (?).

Если научились, то как?

 , , ,

Kroz
()

Как запустить bash, авто-выполнить скрипт и остаться в bash

Форум — General

Привет

Мне нужно запустить bash (а реальный кейс - chroot окружение), затем выполнить скрипт, но не выходить из bash после выполнения скрипта.
bashrc не вариант, так как операция единоразовая.
Второй bash - не вариант, так как скрипт содержит установки переменных окружения.

Test case: я хочу вот здесь получить PS1 с перфиксом (new) (естественно, в свежезапущенном bash)

$ bash -c 'export PS1="(new) $PS1"'
Реальный кейс, если это важно
$ chroot /mnt/new_root /bin/bash -c 'export PS1="(chroot) $PS1"'
Как?

 ,

Kroz
()

Для grub2 нужен отдельный раздел?

Форум — General

Привет

Хочу LVM+grub2. Вроде как grub2 поддерживает корень на LVM. Интересно 2 варианта: с UEFI и без UEFI. Думаю как разбить диск.

Читаю здесь: https://wiki.gentoo.org/wiki/LVM#Preparing_the_disks
(Для Ъ) предлагается такая разбивка:
/dev/sda1 — (bootloader) — 2M — BIOS boot partition
/dev/sda2 — ext2 (or fat32 if UEFI is being used) — 128M — Boot/EFI system partition
/dev/sda3 — LVM — Rest of the disk — LVM Volume Group

Вопросы:
1. Зачем нужен sda1? Если для grub2, то как он знает что именно туда нужно устанавливаться?
2. Правильно ли я понимаю, что для кейса без UEFI, sda2 просто исключается?

Спасибо.

 , ,

Kroz
()

Игры с PYTHON_SINGLE_TARGET и PYTHON_TARGETS

Форум — General

Привет

Как правильно выставлять PYTHON_SINGLE_TARGET и PYTHON_TARGETS ? Мне всегда казалось что через eselect python list. Но не получается.

Куда копать?

$ emerge -av1 --nodeps gvim 

 * IMPORTANT: 1 news items need reading for repository 'gentoo'.
 * Use eselect news read to view new items.


These are the packages that would be merged, in order:



!!! Problem resolving dependencies for app-editors/gvim

!!! The ebuild selected to satisfy "gvim" has unmet requirements.
- app-editors/gvim-8.0.1298::gentoo USE="acl gtk nls perl python session (-aqua) -cscope -debug -gnome -gtk3 -lua -luajit -motif -neXt -netbeans -racket -ruby (-selinux) -tcl" PYTHON_SINGLE_TARGET="python3_5 -python2_7 -python3_4 -python3_6" PYTHON_TARGETS="python2_7 -python3_4 -python3_5 -python3_6"

  The following REQUIRED_USE flag constraints are unsatisfied:
    python? ( python_single_target_python3_5? ( python_targets_python3_5 ) )

  The above constraints are a subset of the following complete expression:
    luajit? ( lua ) python? ( exactly-one-of ( python_single_target_python2_7 python_single_target_python3_4 python_single_target_python3_5 python_single_target_python3_6 ) python_single_target_python2_7? ( python_targets_python2_7 ) python_single_target_python3_4? ( python_targets_python3_4 ) python_single_target_python3_5? ( python_targets_python3_5 ) python_single_target_python3_6? ( python_targets_python3_6 ) )

$ eselect python list
Available Python interpreters, in order of preference:
  [1]   python3.6
  [2]   python2.7
  [3]   python3.5
  [4]   python3.4
$ eselect python set 1
$ eselect python list
Available Python interpreters, in order of preference:
  [1]   python3.6
  [2]   python2.7
  [3]   python3.5
  [4]   python3.4

 ,

Kroz
()

Шрифт приложений GTK слишком тонкий в KDE

Форум — General

Привет

Вот скриншот с окном Firefox - выбор профайла на фоне System Settings KDE: http://imgur.com/a/uvppb . Сравните шрифт на кнопка, в окне..

Как сделать чтобы «толщина» шрифта в KDE и GTK приложениях была одинакова?

 , ,

Kroz
()

Подход к написанию скриптов (я один такой?)

Форум — General

Привет

По работе приходится писать bash скрипты. У тут дилемма: писать так, чтоб работало на целевых серверах, или чтобы работало везде; ведь теоретически мой скрипт могут переиспользовать. Плюс, есть уйма нестандартных ситуаций: что-то может глюкануть, что-то может измениться после апгрейда и т. п.; вероятность таких ситуаций - что-то около 0.01%, но ведь это возможно.

И это абсолютно разные задачи.

Недавно попался показательный пример. Есть bash скрипт, который, по сути своей, состоит из около 5 строк. Следуя принципу «чтобы работало везде» я его раздул до 350 (!). Там было всё: проверка наличия необходимых утилит в системе, логирование, проверка что файловая система не read-only, даже проверка на то, что у меня именно GNU sed. Всё сдобрено обильными комментариями, на случай поддержки другим человеком.

Всё работает. Но...

Вот теперь сижу и думаю: 5->350 это нормально? Я один такой?

Один товарищ глянув на это изрёк: «здоровая паранойя программиста». Я так и не понял, был ли это комплемент или нет.

Считаете ли вы такой подход правильным? Кто еще пишет скрипты «на все случаи жизни»?

 

Kroz
()

Firefox и тёмная тема

Форум — General

Всем привет

При установке тёмной темы в KDE, Firefox её «подхватывает» слишком яро, и применяет даже не страницах. То есть на некоторых страницах он норовит сделать тёмный фон и светлый шрифт, соотв. цвета scroll-bar'ов и т. п.

Да, в userContent.css можно вернуть нормальный фон, шрифты и т. п. Но всего не упомнишь, и, потом может есть нормальное готовое решение?

Кто живёт с firefox'ом и тёмной темой?

 ,

Kroz
()

Линкер gold: как его готовить?

Форум — General

Привет

Прочитал про линкер gold, говорят значительно ускоряет линковку.

Сделал у себя:

$ cat /etc/portage/env/gold_binutils.conf
EXTRA_ECONF="--enable-gold=default"

$ cat /etc/portage/env/gold.conf
LDFLAGS="${LDFLAGS} -Wl,-fuse-ld=gold"
CFLAGS="${CFLAGS} -fuse-ld=gold"
CXXFLAGS="${CFLAGS}"

$ cat /etc/portage/package.env

# dev-qt/qtcore gold.conf
sys-devel/binutils gold_binutils.conf

Пересобрал binutils (хотя ld.gold и так существовал).

По дефолту ставить не хочу, хочу для индивидуальных пакетов. Если я всё правильно понял, это достигается правкой package.env как показано выше.

На qtcore профита не заметил.
ЧЯНТД? Кому-нибудь удалось ускорить компиляцию/линковку посредством ld.gold? Можете поделиться конфигом, тест-кейсом?

P. S. Или ld.bfd?

 

Kroz
()

Касательно темы «Для тех, кто думает перейти на Gentoo"

Форум — Linux-org-ru

Уважаемые модераторы,

Для тех, кто думает перейти на Gentoo
Не хотите ее прикрепить в «шапку» «General» по аналогии как сделано с «Помогу новичкам в освоении системы Linux», «Гайд: Как избавиться от остатков KDE 4...», «skype не логинится или не работает звук» и т. п.

Вопрос на форуме частый, в топике постарался выдержать сбалансированную позицию, пополняю по мере нахождения на ЛОР новой информации, из небольшого темы разрослась в хороший FAQ с активным обсуждением.

 

Kroz
()

HTTP запрос с помощью netcat

Форум — General

Привет

Хочу достучаться до сайта с помощью netcat
Почему это ничего не возвращает?

$ echo -e "GET / HTTP/1.1\r\nHost: bash.im\r\n\r\n" | nc bash.im 80

 ,

Kroz
()

Для тех, кто думает перейти на Gentoo

Форум — General

Привет

Достаточно часто создаются темы, где люди думают переходить на Gentoo и хотят уточнить некоторые моменты. Чтобы сэкономить время себе и другим, решил создать этот топик, в котором буду собирать ответы на частые вопросы.

TL; DR: Для тех, кто думает перейти на Gentoo (комментарий)

В каких случаях имеет смысл выбирать Gentoo:
1. Вы любите настраивать систему под себя. В Gentoo есть больше возможностей по кастомизации системы в сравнении с многими другими дистрибутивами: USE флаги, параметры компиляции, поддержка пользовательских патчей в пакетном менеджере, хуки пакетного менеджера (вставка своих шагов на этапе установки пакетов), игры с версиями приложений и/или зависимостей, игры с альтернативными имплементациями (openrc/systemd/..., rsyslog/syslog-ng/metalog, slang/ncruses, dhcpcd/dhclient/...).
2. Вы хотите обучиться основам Линукс. Установка Gentoo невозможна без практического понимания базовых принципов Линукс: интерфейс командной строки, chroot, работа с диском (MBR, GPT, возможно LVM, возможно шифрование, типы файловых систем, параметры монтирования и т. п.), настройка сети (WiFi/Ethernet, DHCP, ifconfig/ip, выбор между wicd/NetworkManager/sysinit и т. п.), ядро (конфигурация/компиляция/установка, firmware, внешние модули aka @modules-rebuild, возможно параметры при запуске и т. п.), графический сервер (Xorg/wayland, драйвера) и др. Большинство дистрибутивов скрывают это за инсталлятором, но в Gentoo вам придется столкнуться с этим непосредственно.
3. Требуется система максимально оптимизированная под определённую платформу или нефункциональные требования: минимальный размер (embedded), минимальный отклик (банковские системы, игровые сервера), максимальное быстродействие в конкретных областях (обработка видео потоков) и т. п. Стоит заметить, что Gentoo имеет смысл выбирать только в том случае, когда нет дистрибутива уже заточенного под эти требования, или он чем-то не устраивает.

В остальных случаях Gentoo скорее всего не лучший выбор, разве что Just for Fun.

Сильные стороны Gentoo:
#1 Gentoo очень гибкая и всенастраиваема
Пример того что в Gentoo делается просто:
- Использовать openrc вместо systemd или наоборот; pulseaudio или без него
- Наложить кастомный патч; пример когда это нужно
- Подключить или отключить такие вещи как vaapi, vdpau, opencv и т. п.
- Иметь несколько веток софта; уточню, что это работает только для определённых пакетов; например можно одновременно установить python 2.7, 3.4, 3.5 или qt4 и qt5, но нельзя одновременно установить qt 5.7 и 5.8

#2 Очень удобный и функциональный пакетный менеджер
Примеры удобных фич:
- Прервать установку (вплоть до перегрузки компьютера), а потом ее продолжить. Можно продолжить с последнего пакета (emerge --resume), продолжить но пропустить последний пакет, например, если его установка прервалась с ошибкой (emerge --resume --skipfirst, некоторые нюансы); для больших пакетов можно продолжить саму компиляцию (ebuild <полный путь и имя файла>.ebuild merge).
- Когда при установке обновляется конфиг приложения, определяется редактировался ли предыдущий конфиг пользователем. Если да, конфиг не перезаписывается, а кладётся радом, и выводится сообщение пользователю с предложением обновить конфиг.
- Обновить всю систему, но исключить некоторые пакеты (удобно для исключения больших пакетов из ежедневного обновления)
- Почистить зависимости - удалить те пакеты, которые больше никому не нужны.
- Поскольку ebuild - текстовый файл, то можно пропарсить на предмет требований к количеству ресурсов для установки:

$ for F in $(find /usr/portage -name "*.ebuild") ; do REQ=$(grep "CHECKREQS" "$F") ; if [[ -n "$REQ" ]]; then echo -e "\n$F\n$REQ" ; fi; done
- Вынести компиляцию на другой компьютер (поддержка distcc на уровне пакетного менеджера). Важно когда Gentoo устанавливается на слабый компьютер.


#3 Хорошая документация, по крайней мере на английском. Более того, поскольку Gentoo-специфичные утилиты являются лишь надстройкой на generic механизмами, документация от других дистрибутивов (например от Arch) в большинстве случаев тоже подходит.
Опрос 2014: У какого дистрибутива лучшая документация

#4 Достаточно свежий софт, много сторонних репозиториев.
Список сторонних репозиториев
Gentoo - rolling release, а значит как только новая версия конкретного софта появилась в репозитории, её можно установить. Но здесь не имеется ввиду, что как только новая версия зарелизилась, она моментально становится доступна в основном дереве; лаг есть, но он как правило не большой, хотя зависит от пакета. В тестинг ветке новые версии появляются раньше. Кроме того мейнтейнеры Gentoo могут маскировать некоторые версии, если в них обнаруживаются серьезные баги. Однако всегда можно размаскировать нужную версию. Кроме того для некоторых пакетов есть -live версии, когда исходники скачиваются напрямую из github или аналога.
Пример когда «у меня не самый свежий софт в Gentoo»

#5 Полный порядок в системе, ничего лишнего - эстетическое удовольствие, плюс возможно можно немного улучшить перформанс

#6 В процессе установки и эксплуатации получаешь полное понимание как работает система, а значит возникающие проблемы решаются быстро. На самом деле без должного знания Линукса (или желания его узнать в процессе) Gentoo нормально не установить.

Недостатки
#1 Сложная и долгая первичная установка. Если устанавливать в первый раз, нужно готовиться потратить несколько дней. Для опытных - несколько часов + компиляция.
Время установки (компиляции) Gentoo, еще немного цифр по большим пакетам

#2 Пакетный менеджер хоть и удобный, но очень медленный

#3 Если не обновлять систему долго (полгода и более), то сложность обновления сопоставима с установкой новой системы. Есть мнение, что emerge-webrsync --revert=yyyymmdd должен помочь (лично я не проверял).

Особенности
#1 Высокий порог входа; дистрибутив не для новичков. Если человек не комфортно чувствует себя в командной строке, никогда не компилировал ядро, не разбивал диски на разделы, не привык изучать докуменацию, вчитываться в сообщения и анализировать логи, то Gentoo покажется сложной в обслуживании, а возникающие проблемы будут списываться на дистрибутив.

#2 Обновляться нужно часто.

#3 Основные фичи - в командной строке. Для тех, кто не привык работать в командной строке, это будет минусом. А для тех, кто комфортно чувствует себя в командной строке, это будет плюсом, так как работа в командной строке более эффективна, а типовые сценарии можно обернуть в скрипты и еще больше сократить время на обслуживание системы.

#4 Есть две ветки: stable и testing. В stable меньше шансов встретить проблему, но в testing более свежий софт. Ветки можно комбинировать.

Мифы
Миф #1 Gentoo даст прирост производительности за счет того, что весь софт компилируется под конкретное железо.
Краткий ответ: Без дополнительных телодвижений - в пределах пары процентов, так что вряд ли вы это заметите.

Детальный ответ.
Не следует ожидать что просто скомпилировав систему из исходников вы получите сколько-нибудь заметное улучшение перформанса.
Для большинства приложений компиляции под конкретное железо даст прирост производительности в районе 1-2%.
Ложка дегтя: в некоторых случаях даже может быть замедление. Например Firefox, можно ускорить с помощью PGO. В Gentoo по умолчанию это отключено, так как PGO увеличивает время компиляции почти в два раза. В бинарных дистрибутивах соотв. софт может быть скомпилирован с PGO.
Так как добиться улучшения производительности? Узкий круг приложений может быть значительно ускорен при компиляции под конкретную платформу - на 30%-50% и больше. В основном это приложения которые активно занимаются вычислениями. Но для этого требуется соотв. настройки. Например, активация SIMD инструкций, даст прирост производительности в мультимедиа приложениях. Некоторые процессоры имеют аппаратную поддержку шифрования AES. В бинарных дистрибутивах подобные фичи будут отключены, так как не все процессоры это поддерживают, а бинарные дистрибутивы в первую очередь заботятся о совместимости.
Небольшое улучшения перформанса возможно если убрать из системы всё лишнее (мнение 1, мнение 2).
Еще интересный случай

Миф #2 Обновления занимают много времени
Краткий ответ: 5-10 минут на фоне, не мешая основной работе.

Детальный ответ.
Обновления не занимают много времени, но опять же, при правильном подходе.
Во-первых, как было сказано выше, обновляться нужно часто. Для testing ветки это каждый день, или по крайней мере не реже чем в раз 2-3 недели. Для стабильной ветки - раз в неделю достаточно (на стабильной ветке намного реже выпускаются обновления)
Во-вторых, есть пакеты которые правда очень долго компилятся: libreoffice, firefox, chromium... Их всего 10-15. Я их исключаю из ежедневного обновления, а обновляю раз в несколько месяцев.
Еще нужно сказать, что на этом вопросе часто заостряют неоправданно много внимания. Обычно обновления происходят на фоне, и не сильно влияют на работу; так какая разница как долго они выполняются?
В итоге, у меня обновления занимают примерно 5-10 мин ежедневно (у меня тестинг-ветка).
К тому же всё происходит на фоне, в любой момент можно поставить на паузу (Ctrl+Z, fg), продолжить после прерывания (умышленного или случайного).
Мой скрипт ежедневного обновления

Миф #3 Gentoo требует много времени на обслуживание
Краткий ответ: это зависит от вас.

Детальный ответ.
Обслуживание Gentoo занимает меньше времени по сравнению с другими дистрибутивами, но только при грамотном обращении, конечно. Достигается это за счет следующего:
- хороший пакетный менеджер: маскировки, глобальные и индивидуальные установки для пакетов (USE флаги, опции компиляции, каталоги), хуки, приоритеты (чтобы компиляция происходила на фоне и можно было работать), много опций для установки и анализа, подсказки после установки.
- всё происходит в CLI, а значит типовые операции можно обернуть в скрипты/алиасы.
- уже существуют много утилит для облегчения обслуживания: eselect, equery, eix, eclean, euse, genlop и др.
Грамотное обращение означает, что вы правильно и регулярно обновляете систему, исполняете предписания emerge, которые он выдает после установки, держите в порядке конфигурационные файлы, а если таки возникает проблема, которую решить вы не можете, то вы обращаетесь в форумы, а не просто жалуетесь на жизнь.
Что до проблем с обновлениями - см. следующий пункт «Миф #4 Установка, обновление постоянно падают; частые блокировки»

Миф #4 Установка, обновление постоянно падают; частые блокировки
Краткий ответ: Не чаще чем в других дистрибутивах

Детальный ответ.
Если говорить про «часто» и «постоянно», то проблемы с обновлением/установкой могут быть если:
- система давно не обновлялась
- система неправильно обслуживается (см. выше про Грамотное обращение)

В редких случаях пакет просто не компилируется. На самом деле это проблема не Gentoo, а тех, кто писал этот софт. И в подавляющим большинстве случаев это не является проблемой, и вот почему. Если это обновление, то можно продолжить процесс запустив emerge с параметрами --resume --skipfirst - он обойдет проблемный пакет, пересчитает зависимости чтобы система осталась консистентной, и продолжит обновление (а можно изначально передать параметр --keep-going, тогда это будет происходить автоматически, прерываний вообще не будет). Если пакет критичен, можно установить предыдущую версию, которая компилировалась (а проблемную замаскировать чтобы пакетный менеджер ее не видел).

Что может заблокировать обновление полностью:
- просьба пакетного менеджера поменять флаги пакета. При этом emerge предлагает сделать это автоматически, но лично я предпочитаю делать вручную. Для ручного способа, решается добавлением строчки в package.use
- просьба пакетного менеджера задать лицензию. Это валидно только для не-свободных лицензий, например EULA, Skype, Adobe Flash и т. п. Если мы говорим имено про обновление, то такое бывает только когда лицензия обновляется, что бывает очень редко (как много у вас пакетов под не-свободной лицензией, и как часто они меняют лицензию?). Решается добавлением одного слова в make.conf
- просьба пакетного менеджера размаскировать пакет. По моему опыту нужно не размаскировывать, а наоборот замаскировывать пакеты, которые тянут замаскированные зависимости. Это, да, требует минут 5-10 на разобраться. Но, если только у вас нет смешения веток и live пакетов, такой вариант случается раз в пятилетку.
- сложные блокировки. Большинство блокировок пакетный менеджер разрешает сам; по моим наблюдениям, качество данного механизма значительно улучшилось пару лет назад. Из своего опыты скажу, что (учитывая частые обновления) блокировок, которые бы совсем останавливали обновление я уже не видел года 1.5. Но если они есть, то это действительно сложный кейс.

Иными словами, при порядке в системе, кейсы, которые требуют значительного времени и напряжения уственых усилий (сложные блокировки, замаскированные зависимости) случаются раз в несколько лет; кейсы, которые решаются за пару минут - раз в несколько месяцев.

Миф #5 В Gentoo нет бинарных пакетов
Краткий ответ: Есть там, где это действительно нужно.

Детальный ответ
29 декабря 2023 года было официально объявлено о релизе бинарного варианта Gentoo: Gentoo становится бинарным / https://www.gentoo.org/news/2023/12/29/Gentoo-binary.html Также есть Calculate Linux - полностью бинарный форк Gentoo.
С самого начала в «классическом» Gentoo в основном репозитории всегда были несколько бинарных пакетов: libreoffice-bin, firefox-bin, некоторые другие. Связано это с тем, что из исходников они очень долго компилируются, и иногда проще поставить бинарник.
Бинарный пакет можно сделать самому командой quickpkg --include-config y <установленный пакет> - удобно для бекапов.
Но стоит обратить внимание на то, что при использовании бинарных пакетов пропадают те главные особенности, ради которых имеет смысл выбирать Gentoo. Если вам нужен уже скомпилированный софт, возможно вам имеет смысл присмотреться к другим дистрибутивам.

FAQ

#1 Установка на слабый компьютер
Смотря что есть слабый компьютер.
Из собственного опыта: Intel Core2 Duo 6600 @ 2.40GHz, 2Gb RAM + 4Gb swap хватало для комфортной работы в Gentoo.
Зачастую ebuld'ы содержат информацию о том, сколько нужно памяти для компиляции пакета. TOP 5:
16G - chromium
8G - ledger, isabelle
7G - ceph
6G - firefox x64 (для x32 нужно 3G), pypy x64 (для x32 нужно 3G)
5G - electron
Если компьютер и вправду слабый, то лучше выбрать не Gentoo (точнее не-source-based дистрибутив). Альтернатива - можно вынести компиляцию на другой «не-слабый» компьютер с помощью distcc.


Опрос 2021: Какую операционную систему и/или дистрибутив GNU/Linux вы используете на ПК?
Опрос 2018: Какой ОС вы пользуетесь на основном ПК?
Опрос 2017: Какую ОС вы используете на основном ПК?
Опрос 2014: Какой дистрибутив вы используете на десктопе?
W3Tech стастика дистрибутивов на серверах
Отличия дистрибутивов, время работы ноутбука
Чем удобны USE флаги
Сколько памяти нужно для РАБОТЫ Gentoo (сколько нужно для компиляции было указано выше)
Сколько места на диске нужно для Gentoo
Правильное полное обновление Gentoo, Мой скрипт ежедневного обновления, Еще вариант
Gentoo для девелоперов
Практика инсталляции Gentoo: в двух словах простым языком
Небольшой скрипт - сборка livecd

 

Kroz
()

Поломался make menuconfig

Форум — General

Всем привет

make menuconfig показывается не на весь экран, немного покалеченным; кнопки управления (вверх, вниз) - де-факто работают, но экран не обновляют, а просто показываются как keycodes.

Вот так это выглядит: http://imgur.com/a/hawjI

Пробовал как минимум на двух версиях ядра, пробовал в tmux и в голой консоли.
make nconfig ведёт себя аналогично. При этом, например, mc работает нормально.

Что это может быть?

 ,

Kroz
()

Linux и память: после какого порогового значения включается OOM Killer?

Форум — General

Всем привет

Стоит задача настроить мониторинг системы и, вчастностиЭ определить критический порог количества свободной памяти, после которого система уже может быть нестабильна.

В Интернете нашел много статей о том, как OOM killer выбирает процесс, который прибивать, но нигде не написано, при каких условиях OOM Killer таки начинает прибивать процессы. Почему так?

При мониторинге сервера, сколько должно остаться свободной памяти, чтобы имело смысл зажечь аларму «Всё плохо, вот-вот начнет работать OOM Killer»?

Спасибо.

 , , ,

Kroz
()

Добиться от systemd, чтобы он отписался что процесс остановлен когда он реально остановлен

Форум — General

Привет

Из-за того, что systemd рапортует что процесс остановлен раньше, чем этот процесс реально остановлен, возникают проблемы в скриптах, когда следующая команда рассчитывает на то, что процесс таки остановлен:

$ service snmpd stop
Stopping snmpd (via systemctl):    OK  

$ net-snmp-create-v3-user ...
Apparently at least one snmpd demon is already running.
You must stop them in order to use this command.


Как заставить systemd завершать команду только тогда, когда snmpd реально остановлен?

Править service файл - не вариант, так как не всегда это уместно. Надеюсь на какой-то простой параметр командной строки.

Спасибо.

 

Kroz
()

Firefox, CSS, select: Цвет выделенного элемента

Форум — General

Привет

Предыстория: в Firefox 53 что-то поломали, и теперь select коряво отображается в тёмной теме. Редактирую userContent.css, но не всё получается.

Test case: есть select размером 5 с 3 элементами. Нужно сделать 1) для всего: фон жёлтым, шрифт красным 2) для выделенного элемента: фон зелёным, шрифт синим. Как?

Эксперименитровать хорошо здесь: http://codepen.io/shabbirl/pen/FLxco

Вот это не работает:

HTML:

<select size=5>
  <option>one</option>
  <option>two</option>
  <option>three</option>
</select>

CSS:
select {
  background-color: yellow;
  color: red;
}
option:checked{
  background-color:green;
  color: blue;
}

Помогите, плиз.

 , , , ,

Kroz
()

Интеграция с использованием OAuth2

Форум — General

Всем привет.

Подскажите, плиз, правильный сценарий интеграции с использованием OAuth2.

Исходные данные: у нас есть resource owner и OAuth2 сервер.
Требуется: стороння система хочет периодически обращаться к нашим ресурсам. Стороння система - для простоты предположим, что это система мониторинга, работающая 24 часа в сутки, и не всегда за экраном сидит оператор.

Как я понял, мы в любом случае мы предоставляем ClientId и Client Secret, и сторонняя система хранит это где-то в своих конфигах.

Что до access_token, вижу 3 возможных сценария.

Сценарий 1. Сторонняя система хранит user/password и заказывает себе access_token
Как я понял, сценарий неправильный, так как user/password нужно пользоваться пореже, и в идеале вообще не хранить в системе, а запрашивать у пользователя.

Сценарий 2. Сторонняя система просит пользователя ввести user/password, заказывает себе access_token, обновляет его с помощью refresh_token
Сценарий видится правильным, но concern'ы следующие:
а) refresh_token тоже имеет expiration time, а значит через некоторое время система опять должна запросить user/password, что будет весьма некстати для системы мониторинга в 2 часа ночи, когда никого не будет около системы.
б) refresh_token не меняется при операции refresh (это by design, да?), а делать его вечно живущим тоже видится не совсем правильным с точки зрения security.

Сценарий 3. Сторонняя система получает (кроме ClientId и Client Secret) только refresh_token
Плюсы состоят в том, что теперь не нужно каждой сторонней системе запрашивать логины/пароли, это будет делаться как-то централизованно. Но получается теперь нудна еще одна система, которая будет менеджить все создания refresh token'ов и каким-то образом будет распростанять их по сторонним системам (да, их несколько)?

Так какой сценарий более правильный, и какая система должна запрашивать user/password для создания/обновления token'ов?

 

Kroz
()

gwenview не хочет работать с именами файлов с кирилицей

Форум — General

Всем привет

Любая попытка открыть с помощь gwenview файл, в имени или пути которого присутствуют кириллические символы, завершается ошибкой. Притом в сообщении об ошибке кириллица заменяется на знаки вопроса, например http://imgur.com/a/Z7XC2

Другие приложения kde5 работают с кириллицей нормально.

Куда копать?

$ eix gwenview
[I] kde-apps/gwenview
     Available versions:  (5) 16.08.3^t (~)16.12.2^t
       {X debug +handbook kipi raw semantic-desktop test}
     Installed versions:  16.12.2(5)^t(17:18:24 10.02.2017)(X kipi -debug -handbook -raw -semantic-desktop -test)
     Homepage:            https://www.kde.org/applications/graphics/gwenview/ https://userbase.kde.org/Gwenview
     Description:         KDE image viewer

$ eix kipi-plugins
[I] media-plugins/kipi-plugins
     Available versions:  (5) 5.3.0
       {debug flashexport mediawiki +remotestorage test vkontakte}
     Installed versions:  5.3.0(5)(20:11:51 07.01.2017)(remotestorage -debug -flashexport -mediawiki -test -vkontakte)
     Homepage:            https://www.digikam.org/
     Description:         Plugins for the KDE Image Plugin Interface

 , ,

Kroz
()

Мониторинг FreeRADIUS

Форум — General

Привет

А кто как мониторит FreeRadius сервера? Желательно SNMP. Конкретно интересует версия FreeRADIUS 3.

Пишут, что поддержку SNMP дропнули в версии 3, это так? Или есть какие-то сторонние тулзы/плагины?

 , ,

Kroz
()

RSS подписка на новые темы