Мы — долго запрягаем, быстро ездим, и сильно тормозим.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
www.lissyara.su
|
|
Перегружаемся.
Если не помогло, пробуем отключить те нестандартные модули (не входящие в базовую установку системы), которые ругаются при загрузке. Для этого необходимо их выбрать из всего списка загружаемых модуле, выдаваемых по команде
|
Выбранные модули прописываются в новый пустой (для облегчения возврата к старой конфигурации - удалить файл и обновить конфигурацию) файл в каталоге /etc/modprobe.d/. Например это будет /etc/modprobe.d/blklist.tmp. Содержимое файл по примеру:
|
на каждый отключаемый модуль.
По окончании заполнения файла необходимо обновить конфигурацию загрузчика plymouth командой
|
после чего - перезагрузиться.
Если и это не помогло, пробуем выяснить, может какой-то файл повредился при установке какого-то пакета. Ищем соотв. файл (ругань на него) в логах: /var/logs/boot.log и /var/logs/dmesg. У меня это был файл /etc/dbus-1/system.d/nm-ifcfg-rh.conf.
Теперь выясним, с каким пакетом связан этот файл:
|
Следущее: проверяем, всё ли с этим пакетом впорядке:
|
Если не в порядке, а особенно если выругается на этот файл, то:
|
У меня никак не ругался, но я на всякий случай переустановил пакет. Всё! Система после перезагрузки заработала. :)
2. Отладка системы и программ в помощью GDM
При необходимости в привлечении возможностей для отладки, заложенных в операционной системе: GNU GDB Debugger.
№1 Запуск процесса с отладкой
Сделаем на примере telegram-desktop.
Первоначально надо установить пакет с отладочной информацией проблемного приложения (после отладки можно удалить):
|
Чтобы получить отладочную информацию (backtrace) падения, нужно выполнить:
|
В ~/backtrace.log теперь записана необходимая для отладки информация.
№2 Снятие дампа процесса
Предварительно подготовим систему к тому, что будем "безраздельно" пользоваться ресурсами. :)
|
Теперь можно начинать работу непосредственно с отлаживаемым процессом. Для начала - найдём его идентификатор - PID:
|
Скармливаем это тайное :) знание отладчику:
|
После выполнения подготовительных действий отладчик остаётся загруженным - видно приглашение его командной строки (gdb) и теперь можем сохранить дамп интересующего нас процесса и отключаем это дамп:
|
Более подробно: "Перевод руководства по отладчику GNU", "Справочник по командам GDB (англ.)".
3. Повреждение базы пакетного менеджера rpm
Если в процессе обновления системы появились сообщения об ошибках базы данных rpm, например:
Finishing rebuild of rpms, from deltarpms error: rpmdb: BDB0113 Thread/process 2324/139767708010432 failed: BDB1507 Thread died in Berkeley DB library] 2.9 MB/s | 32 MB 00:00:32 ETA error: db5 error(-30973) from dbenv->failchk: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery error: cannot open Packages index using db5 - (-30973) error: cannot open Packages database in |
то лучшим вариантом будет пересоздание этой базы:
|
Если всё нормально прошло, то на экран будет выведена информация о созданных базах и индексах.
4. Обновление системы
4.1. Конфликт пакетов из-за rawhide
Если при обновлении Федора 15 появилось сообщение об ошибке типа:
Проверка сценария завершена с ошибкой (примерно):
file /usr/lib64/libva-egl.so.1 from install of libva-freeworld-1.0.13-1.fc15.x86_64 conflicts with file from package libva-1.0.12-1.fc15.x86_64 file /usr/lib64/libva-glx.so.1 from install of libva-freeworld-1.0.13-1.fc15.x86_64 conflicts with file from package libva-1.0.12-1.fc15.x86_64 file /usr/lib64/libva-tpi.so.1 from install of libva-freeworld-1.0.13-1.fc15.x86_64 conflicts with file from package libva-1.0.12-1.fc15.x86_64 file /usr/lib64/libva-x11.so.1 from install of libva-freeworld-1.0.13-1.fc15.x86_64 conflicts with file from package libva-1.0.12-1.fc15.x86_64 file /usr/lib64/libva.so.1 from install of libva-freeworld-1.0.13-1.fc15.x86_64 conflicts with file from package libva-1.0.12-1.fc15.x86_64 |
то это является признаком, что остались прописаны rawhide-репозитории, требуемые лишь для тестирования (в F15 они остались, т.к. на момент релиза репозитория rpmfusion для F15 ещё не было, приходилось пользоваться rawhide-ом; обещалось что обновления сами исправят локальную конфигурацию репозиториев, когда появится rpmfusion для F15, но этого не произошло).
Из данной ситуации есть два выхода:
а) очистить кэш yum-а и обновить всё:
|
б) если предыдущий вариант не помог или вы решили удалить rawhide вообще (что представляется лучшим вариантом), то порядок действий таков:
удаляем неправильные репы:
|
ставим правильные:
|
и обновляемся:
|
На будущее может пригодиться официальная информация о конфигурировании репозитариев.
4.2. Проблемы из-за сбойных предустановок SELinux
Если в процессе обновления возникли ошибки вида:
Обновление : firewalld-0.3.9.2-1.fc20.noarch 3/32 warning: %post(firewalld-0.3.9.2-1.fc20.noarch) scriptlet failed, exit status 127 Non-fatal POSTIN scriptlet failure in rpm package firewalld-0.3.9.2-1.fc20.noarch |
И в конце обновления результаты были похожи на:
Неудача: firewalld.noarch 0:0.3.9-1.fc20 initscripts.x86_64 0:9.50-1.fc20 |
Это значит, что был установлен сбойный пакет selinux-policy-targeted.
Для исправления надо установить исправленный вариант, например, из тестового репозитория, отключив SELinux на время обновления:
|
А потом провести ещё раз обновление, чтобы обновить те пакеты, которые не смогли обновиться из-за сбоя.
4.3. Дупликация пакетов
Иногда при обновлении происходях сбои uninstall скрипта удаляемого пакета и при обновлении появляются сообщения вида:
** Предварительно ошибок в rpmdb: 1, «yum check» выдает следующее: firewalld-0.3.9.2-1.fc20.noarch — то же, что и firewalld-0.3.9-1.fc20.noarch |
При поосмотре по установленным пакетам, то видно удвоение:
|
1) Правильный способ.
Первое: сделать резервную копию каталога /var/lib/rpm/ перед запуском пересборки. Это одна из рекомендаций, писанных нервами админов. :-)
|
Для дистрибутива Fedora 26 и более новых необходимый функционал интегрирован в утилиту DNF. Для удаления дубликатов необходимо запустить её со следующими параметрами:
|
В версиях Fedora до 25 и дистрибутивах , использующих YUM (RedHat/CentOS) для этого установим (если ранее не был установлен) пакет yum-utils:
|
После установки воспользуемся утилитой из установленного пакета для удаления дубликатов:
|
Пересборка базы данных RPM:
|
По хорошему, теперь надо проверить обновления:
|
2) Не совсем правильный способ.
Если пытаться удалить не нужный пакет yum-ом, то это может не получиться:
|
В таком случае надо удалять посредством rpm:
|
И после этого провести обновление системы, чтобы проверить на ошибки.
4.4. Тестовые пакеты
Иногда возникает необходимость установить обновление из тестового репозитория. Например, для исправления "пойманого" бага:
|
Соответственно, так же можно работать и с другими репами.
4.5. Откат с текущей версии на одну из предыдущих
Просмотр доступный версии пакета (на примере nginx):
|
Получаем, например, такой список:
Установленные пакеты nginx.x86_64 1:1.12.2-1.el7_4.ngx @nginx Доступные пакеты nginx.x86_64 1:1.8.0-1.el7.ngx nginx nginx.x86_64 1:1.8.1-1.el7.ngx nginx nginx.x86_64 1:1.10.0-1.el7.ngx nginx nginx.x86_64 1:1.10.1-1.el7.ngx nginx nginx.x86_64 1:1.10.2-1.el7.ngx nginx nginx.x86_64 1:1.10.2-2.el7 epel nginx.x86_64 1:1.10.3-1.el7.ngx nginx nginx.x86_64 1:1.12.0-1.el7.ngx nginx nginx.x86_64 1:1.12.1-1.el7.ngx nginx nginx.x86_64 1:1.12.2-1.el7_4.ngx nginx |
Выбираем версию, на которую будем откатываться (например, 1.10.3-1) и откатываемся:
|
4.6. Установка тестовых обновлений требуемой сборки
При необходимости установки конкретного требуемого обновления системы необходимо (на примере FEDORA-2019-475e5ab227) выполнить:
|
Список актуальных обновлений здесь.
5. Проблемы с SELinux
Просмотреть зафиксированные журнале в человекопонятном варианте
|
Специальная утилита audit2allow создает разрешающие правила политики SELinux из файлов журналов, содержащих сообщения о запрете операций.
Варианты использования:
1) использование audit2allow для генерации монолитной (не модульной) политики:
|
2) использование audit2allow для генерации модульной политики:
|
3) создание модуля политики вручную:
Компилируем модуль:
|
Создём пакет:
|
Загружаем модуль в ядро:
|
4) использование audit2allow для генерации и создания модуля политики:
|
Создаём новый type enforcment файл: local.te
Компилируем политику:
|
Создаём пакет:
|
Более подробно - в мануалах: ausearch, audit2allow.
Для установки типа и других параметров контекста безопасности используется команда chcon:
|
Для восстановления неправильно установленных (или не установленных совсем, то есть установленных по умолчанию) параметров контекста безопасности используется команда restorecon.
Так же полезное:
|
6. Проблемы с loop (блочными псевдоустройствами)
Иногда возникает ошибка, представленна сообщением "Failed to set up loop device". Я сам столкнулся с этой ошибкой при попытке смонтировать криптоконтейнер RealCrypt/TrueCrypt.
Данная проблема решилась двумя способами (для разных версий Fedora):
1) в Fedora 20 (вероятно, что это проявление ошибки - доказательством является то, что при загрузке с ядром 3.11 проблемы нет): отключение и сразу включение SELinux (только решается временно - до перезагрузки):
|
2) в Fedora 19: добавлением параметра ядра, указывающего количество возможных loop устройств:
|
Для работы с loop устройствами используется утилита losetup.
|
Например, так можно монтировать образы и работать с ними (есть блочное псевдоустройство в виде файла или тома LVM с таблицей разделов и файловыми системами внутри - надо добраться до содержимого).
Подключаем файл (том) в псевдоустройство:
|
Проверяем таблицу разметки в юнитах по 512 байт:
|
Нужно добраться до второго раздела. Юнит с которого начинается второй раздел имеет номер 1525760.
Создаем еще одно псевдоустройство со смещением на 1525760 юнитов по 512 байт:
|
Проверяем, что вышло:
|
Можно монтировать файловую систему:
|
7. Поиск сбойных секторов и восстановление информации с них
Для это используется утилита dd_rescue:
|
В указанные файлы журналов работы утилиты будет выведена информация о найденных проблемах.
8. Проблемы со звуком
а) Глюки, пропуски или треск
В файле /etc/pulse/default.pa меняем параметр:
|
Перезагружаем систему или перезапускаем звуковой сервер Pulse:
|
Для улучшения качестве звука изменим в файле /etc/pulse/daemon.conf значения параметров resample-method и default-sample-format на:
|
Перезапускаем сервер Pulse и наслаждаемся.
б) Запуск звуковой карты Asus ROG Xonar Phoebus
Пока данная звуковая карта не поддерживается Linux. :(
Она является Intel HD Audio совместимой, поэтому есть надежда в ядре 3.16 и новей поддержку всё таки получить.
Пока только ссылки на всякую информацию:
CONFIG_SND_HDA_INTEL: Intel HD Audio
[Alsa-user] Asus Xonar Phoebus support
Matrix:Vendor-Asus
9. Исправление ошибки в RFC 5961
В стандарте RFC 5961 обнаружена уязвимость, которую злоумышленник может применить для вклинивания в TCP сессию, если она не зашифрована, а так же разрывать сессии HTTPS и TOR.
Возможно будет выпущено обновление, но в качестве решения можно в /etc/sysctl.conf добавить строку:
|
После чего надо принятие изменений в системе:
|
10. Работа с ядром через клавишу SysRq
SysRq - специальная клавиша за номером 84 (программное прерывание BIOS номер 0x15, подфункция 0x85). Чаще известна, как "Print Scrn / PrScr", но возможно назначение этой функции любой другой клавише, например, Fn. Не имеет единого стандартного назначения, но изначально и чаще всего сейчас используется для прямого вызова некоторых функций ядра ОС.
Выполнение: одновременное нажатие клавиш Alt + SysRq + <буква>.
Если SysRq вызывается с использованием Fn то следует зажать Alt + Fn + SysRq, затем отпустить Fn и ввести букву команды.
Основные комбинации клавиш:
|
Например, для аварийной синхронизации данных следует выполнить последовательность Alt + SysRq + S, далее Alt + SysRq + U. После этого можно жать на сброс или, что то же самое, Alt + SysRq + B.
Более правильно экстренную перезагрузку стоит проводить, зажав клавиши Alt + SysRq и с интервалом в 2-3 секунды нажать последовательно 'R E I S U B':
- unRaw : перехват управления клавиатурой;
- tErminate : посыл SIGTERM всем процессам;
- kIll : посыл SIGKILL всем процессам, которые не смогли завершиться предыдущей командой;
- Sync : синхронизация файловых систем;
- Unmount : перемонтирование файловых систем в режим 'только чтение';
- reBoot : выполнить перезагрузку.
Для работы SysRq необходима поддержка этого функционала в ядре: необходимо указать параметру ядра CONFIG_MAGIC_SYSRQ значение 'y'. Проверить можно так же через файл конфигурации ядра:
|
При наличии поддержки SysRq в ядре надо включить отслеживание нажатий этих клавиш:
|
Вместо нажатия клавиш можно использовать SysRq-триггер. Например, для клавиши 'b':
|
В современных версиях Fedora включение SysRq производится установкой параметра ядра kernel.sysrq. В документации ядра указываются следующие возможные значения:
|
Дополнительная информация:
Magic SysRq key
11. Смена ядра без перезагрузки
Возможность смены ядра без перезагрузки системы (через обновление ядра в памяти) обеспечивается пакетом kexec-tools:
|
После установки пакета автоматически при перезагрузке будет использован вызов kexec. При необходимости отключить kexec необходимо в файле конфигурации /etc/default/kexec установить параметр
|
Замена текущего ядра в ручном режиме:
|
Использовать параметр '--command-line="`cat /proc/cmdline`"' не обязательно: по умолчанию должна приняться строчка от старого ядра.
12. Борьба с утечкой памяти через кеширование
Когда память на сервере уходит в неизвестном направлении (нагрузка небольшая – но памяти тоже нет), стоит произвести очистку кеша.
Linux, как и другие ОС кеширует операции чтения/записи, но забывает очищать кеш. В следствии этого, через какое-то время заканчивается память. Быстрый способ очистить память не прибегая к деструктивным методам (перезагрузка сервера, процесса, службы и прочего) - заставить ОС сбросить кеш. Для этого необходимо сбросить буферы (что приведёт к их очистке) после чего послать команду ядру на сброс кеша.
|
В drop_caches можно передавать несколько вариантов параметра:
1 = освободить pagecache
2 = освободить reclaimable slab objects (includes dentries and inodes)
3 = оба предыдущих варианта (1 и 2)
13. Копирование GPT таблицы (разделов)
Устанавливаем утилиту поддержки GPT:
|
В составе пакета есть утилита sgdisk, которая нам и нужна.
Копируем таблицу GPT с диска /dev/sdf на /dev/sdg:
|
Для обеспечения уникальности необходимо сменить GUID разделов скопированной таблицы на новом накопителе:
|
14. Трассировка и профайлинг
Трассировка и профайлинг в Linux с помощью bcc/eBPF
15. Расширенное журналирование и статистика
Установим дополнительные пакеты:
|
atop - утилита мониторинга и регистрации (журналирования) производительности;
sysstat - набор утилит, обрабатывающих статистику различных подсистем ОС Linux (sar, sadf, mpstat, iostat, tapestat, pidstat, cifsiostat, sa).
Утилита atop конфигурируется через файл /etc/sysconfig/atop (например, интервал сбора данных до 60 секунд через переменную INTERVAL=60 (по умолчанию - 600)) и запускается, как сервис:
|
Информация в двоичном виде сохраняется в файлах /var/log/atop/atop_<дата>. Для просмотра используется команда:
$ atop -r <имя файла>
Для передвижения по временным точкам используются клавиши:
|
Для записи сообщений с меткой *.debug в отдельном журнале впишем для rsyslog (если используется он) в его конфиг /etc/rsyslog.conf строку:
|
И перезапускаем сервис:
|
В пакете sysstat содержит системный регистратор SAR (System Activity Reporter) в форме одноимённой утилиты sar.
Файлы статистики, собираемые этой утилитой, сохраняются в каталоге /var/log/sa. Просмотр этой статистики можно сделать как через саму утилиту sar (примеры на справочной странице), а можно в форме графиков сторонними утилитами, например, ksar (java), вызвав её с указанием файла статистики:
|
Дополнительная информация:
1) Удобство наблюдения, atop;
2) Использование atop;
3) Системный регистратор Sar: полезно и практично.
16. Проблема с подключением по PPTP
Основная проблема с подключением к удалённой системе по PPTP (при условии, что все необходимы компоненты - установлены): заблокирован протокол GRE. Если на сетевом оборудовании он открыт, а проблема не разрешилась, значит на уровне ОС он не разрешён.
Откроем на firewalld :
|
В большинстве случаев проблема решена.
17. Сброс забытого пароля root
Для разных ОС и версий сброс отличается (хотя есть и общие моменты.
а) Fedora Linux;
В загрузчике Grub выбирает целевую системы и жмём "e", чтобы отредактировать этот пункт. Находим строку с параметрами ядра (начинается, в зависимости от версии, на linux, linux16, linuxefi) и редактируем:
- заменяем ro на rw;
- добавляем init=/bin/bash;
- если диск зашифрован, добавляем plymouth.enable=0.
Окончив редактирование нажимаем Ctrl-X или F10 и ждём загрузки до получения консоли.
В консоли вводим:
|
После загрузки входим с новым пароле root-а.
б) CentOS / Scientific Linux 7:
В загрузчике Grub выбирает целевую системы и жмём "e", чтобы отредактировать этот пункт. Находим строку с параметрами ядра (начинается, в зависимости от версии, на linux, linux16, linuxefi) и редактируем:
- заменяем ro на rw;
- добавляем rd.break.
Окончив редактирование нажимаем Ctrl-X или F10 и ждём загрузки до получения консоли.
В консоли вводим:
|
После загрузки входим с новым пароле root-а.
Немного послезностей
|
Ввод содержимого, как обычно. Завершение ввода: Ctrl+D.
б) Создание файла нужной длины
|
Получим файл ~/file размером 100 Мбайт.
в) Смена прав и разрешений
Если необходимо сменить права, то необходимо помнить, что для каталогов необходимо разрешение x (например, rwxr-xr-x, если надо дать: владельцу - полный доступ (чтение, запись, просмотр), а группе и все остальным - только чтение содержимого каталога), для каталогов являющееся разрешением на просмотр содержимого каталога. Например, вышеописанный пример (выполнять, находять в обрабатываемом каталоге) с рекурсивным спуском прав на все вложенные каталоги:
|
который необходимо выполнить, нахродясь в каталоге, содержимое которого необходимо изменить, где -type d - поиска файла с атрибутом d, т.е. каталога; 755 - числовое представление устанавливаемого атрибута безопасности; вторая строчка - рекурсивная смена владельца и группы.
Может пригодиться: краткое описание команд chmod и chown.
г) Анализ изменений в системе
Если требуется проанализировать систему на наличие изменений файлов пакетов отоносительно значения "в пакете", то это можно сделать так:
|
Можно получить примено следующее ("отброшены" файлы и каталоги, у которым изменилось только время):
# rpm -Va | grep -v ".......T" .M....... / .M....... /root .M....... /sys prelink: /usr/lib64/libunwind-coredump.so.0.0.0: at least one of file's dependencies has changed since prelinking S.?...... /usr/lib64/libunwind-coredump.so.0.0.0 prelink: /usr/lib64/libunwind-x86_64.so.8.0.1: at least one of file's dependencies has changed since prelinking S.?...... /usr/lib64/libunwind-x86_64.so.8.0.1 prelink: /usr/lib64/libtorrent-rasterbar.so.7.0.0: at least one of file's dependencies has changed since prelinking S.?...... /usr/lib64/libtorrent-rasterbar.so.7.0.0 prelink: /usr/lib64/libkeybinder.so.0.1.0: at least one of file's dependencies has changed since prelinking S.?...... /usr/lib64/libkeybinder.so.0.1.0 .M....G.. /var/log/journal .M....... c /etc/grub.d/20_linux_xen ....L.... c /etc/pam.d/fingerprint-auth ....L.... c /etc/pam.d/password-auth ....L.... c /etc/pam.d/postlogin ....L.... c /etc/pam.d/smartcard-auth ....L.... c /etc/pam.d/system-auth missing /var/run/gluster missing /var/run/wpa_supplicant .M....... /var/lib/nfs/rpc_pipefs missing /var/run/pluto |
Расшифровка результатов проверки (слева):
|
Дополнительно: RPM, 15.2. Использование RPM, Проверка целостности установленной linux-системы перед использованием.
д) Вывод сортированного по размеру списка пакетов в системе
Просмотр списка пакетов, установленных в системе, с выводом размера и сортировкой по размеру:
|
Можно поиграться с параметрами rpm.
е) Чистка базы journald
Просмотр занятого журналами места:
|
Если решено зачистить все журналы, то останавливаем основную службу journald:
|
Затем переходим в /var/log/journal/ и удаляем всё содержимое. Может это не корректно (и есть штатный "шринк"), но работает. :-)
После очистки указанного каталога возвращаем всё в исходное состояние:
|
На будущее можно задать ограничивающий параметр в cat /etc/systemd/journald.conf:
|
Подробности про journald: часть 1, часть 2, часть 3, часть 4.
ё) Полезные команды работы с пакетами, возможности yum
Для работы с пакетами требуется установленный пакет yum-utils.
Найти, какой пакет установит запрашиваемый файл/команда (например, repoquery):
|
Найти из какого репозитория установлен пакет:
|
Найти процессы, пакеты которых обновлены и требуют рестарта:
|
Узнать зависимости пакета httpd, не устанавливая сам пакет:
|
Синхронизировать yum репозиторий updates в локальную директорию repo1:
|
Если требуется настроить работу yum через proxy-сервер, прописываем
|
Если требуется для одних репозиториев работать через proxy-сервер, а для других - через доступных напрямую (обычно внутренних): /etc/yum.conf не изменяется, а в файле /etc/yum.repos.d/*.repo тоже можно использовать директивы настройки прокси.
|
2014-07-27, lissyara
gmirror
Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9
Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
вверх
|
Этот информационный блок появился по той простой причине,
что многие считают нормальным, брать чужую информацию не уведомляя автора
(что не так страшно), и не оставляя линк на оригинал и автора — что более существенно.
Я не против распространения информации — только за. Только условие простое — извольте
подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой,
незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
Если соизволите поставить автора в известность — то вообще почёт вам и уважение.
© lissyara 2006-10-24 08:47 MSK
нпф будущее мошенники, фонд будущее