Добро пожаловать на планету openSUSE

Это агрегатор блогов собирающий записи членов openSUSE сообщества

Для того чтобы добавить ваш блог в агрегатор, пожалуйста прочтите инструкцию.


Вторник
31. Январь 2017


face

Когда-то, в ноябре 2014 года, разработчики «Дубльгиса» выпустили новенькую бета-версию своего справочника для Linux. Там был чистый интерфейс на Qt5 и QML, плавная работа, возможность скачать карту любого города России и некоторых других стран… Красота! Однако же, дальше беты дело не пошло, и вскоре сайт, посвящённый новой версии 2GIS, закрылся, а разработка перспективного справочника в формате ПК-версии была прекращена. Но репозиторий со сборками дубльгиса для Ubuntu продолжал жить, и он работает до сих пор. В openSUSE имеется несколько частных репозиториев с rpm-пакетами 2GIS. В подобном пакете, на самом деле, содержится не сама программа, а скрипт, который вытягивает deb-пакет из сети и перепаковывает его чем-то вроде alien. В openSUSE 13.2 и 42.1 такой трюк работал без сучка и задоринки, но уже в 42.2 программа перестала запускаться:

Очевидно, что приложение, собранное под старую версию Ubuntu 14.04, уже не может запускаться в более новых версиях Linux. Забавно, что неосиляторы с Гиктаймса в подобной ситуации сдались ещё раньше: на этапе установки пакета. Однако я не первый раз запускаю проприетарный софт в Linux и знаю, что большинство подобных программ (XnRetro, Dropbox, Skype и т.п.) поставляются с собственным набором некоторых системных библиотек. Всегда можно попробовать удалить одну или несколько таких библиотек и посмотреть как программа попытается использовать общесистемные. Короче говоря, если избавиться от файла /usr/lib/2GIS/v4/lib/libpthread.so.0, то Дубльгис прекрасно запускается и работает:

 

 



Пятница
27. Январь 2017


face

В номере №205 журнала Linux Format я писал о новом графическом формате FLIF (Free Lossless Image Format), который превосходит PNG и WebP по сжатию данных без потерь. В комплекте с исходным кодом FLIF (т.н. reference implementation) имеются библиотеки кодировщика и декодера, сам кодировщик, а также простейшее средство просмотра — консольная программа viewflif. С таким минимальным набором вполне можно работать, однако формат, по сути, в этом случае выполняет роль архиватора: ни листать, ни редактировать FLIF-файлы без предварительной конвертации нельзя. Правда, есть ещё набор консольных утилит ImageMagick, который с некоторых пор поддерживает формат FLIF. Приличных графических программ просмотра, которые были бы основаны на ImageMagick, в природе нет, к тому же, большинство готовых сборок ImageMagick собраны без поддержки FLIF и не могут его читать. Хотите поддержку — собирайте из исходного кода сами.

На этом фоне Qt FLIF Plugin оказался глотком свежего воздуха. Данная разработка сделана датским программистом Себастьяном Валем (Sebastian Wahl), который ведёт свой блог и увлекается алгоритмами сжатия изображений. Суть Qt FLIF Plugin проста: в вашем распоряжении появляется разделяемая библиотека libflif.so (не путать с одноимённой библиотекой из состава самого кодировщика FLIF!), которая может быть использована любыми Qt-приложениями, поддерживающими QImageIOPlugins, например Gwenview, Kolourpaint и многими другими. Автор плагина также написал свой собственный минималистичный просмотрщик графических файлов, вполне неплохой!

Итак, для сборки нам потребуется слегка подредактировать файл project.pro, добавив туда строку CONFIG += c++14:

Если этого не сделать, то проект просто не соберётся современными версиями GCC. Затем нужно убедиться в том, что заголовочные файлы FLIF лежат в нужном месте — между прочим, их нужно заранее вручную положить в /usr/include/FLIF:

Далее командуем make и ждём несколько секунд. Получившуюся библиотеку нужно проверить на успешную линковку с кодировщиком FLIF (дело в том, что плагин почему-то иногда не линкуется):

Дальше, нужно установить саму библиотеку, скопировать .desktop-файлы и зарегистрировать соответствующий тип файла для share MIME database. Следующие команды я выполнял из директории ~/qt_flif_plugin/configuraton:
sudo cp ../libflif.so /usr/lib64/qt5/plugins/imageformats/
sudo cp qimageioplugins/x-flif.desktop /usr/share/kservices5/qimageioplugins/
sudo cp imagethumbnail-flif.desktop /usr/share/kservices5/
sudo cp x-flif.xml /usr/share/mime/packages/
sudo /usr/bin/update-mime-database /usr/share/mime

Результат будет заметен сразу же. Во-первых, заработает генератор миниатюр в файловом менеджере Dolphin:

Во-вторых, можно будет смотреть FLIF-файлы в Gwenview, стандартной программе просмотра из набора KDE:

На данный момент можно использовать лишь версию Gwenview 16.08 или более старую, так как из-за этого коммита программа, начиная с версии 16.12, содержит другой механизм поддержки сторонних форматов. Но это уже вопрос к автор FLIF-плагина — надеюсь, он обновит свой код когда-нибудь. Меня же очень радует сжатие, которое обеспечивает FLIF. Только посмотрите:

 



Понедельник
09. Январь 2017


face

Для тех, кто по той или иной причине хочет использовать последнюю версию ядра, но постоянно пересобирать ее вручную нет ни времени ни желания, openSUSE проект делает это за нас. Идея Kernel Of The Day – предоставить тестерам и прсто kernel инженерам последнюю git-версию ядра в виде RPM пакета. Это devel проект для ядра, в котором собираются версии для последующего тестирования и отправлки в tumbleweed. Делается это также с целью получить feedback от сообщества в виде bugreports или просто в ML/IRC.

Процесс полностью автоматизированный. Вы подключаете репозиторий и обновляетесь (каждый раз как пакет с новым ядром доступен для установки) как и обычно.

Версия unstable, поэтому имеет смысл не перезаписывать каждый раз старое ядро, а добавлять новое. Это не работает автоматически. Для этого надо отредактировать /etc/zypp/zypp.conf. Добавьте две строчки:

multiversion = provides:multiversion(kernel)
multiversion.kernels = latest,running

Подробнее о multiple kernel.

Добавлю, что система ломатеся. Ломается достаточно часто. Только что, к примеру, у меня поломался dracut на ядре 4.9.0-2. Я не cмог загрузиться, т.к. он связан с LUKS, а я использую шифрование. Откатился назад на 4.8.13.
Интерсно, что именно сломано, почему и как починить. Это как раз ответ на вопрос “зачем мы этим занимаемся?”. Если бы этого не произошло, я вряд бы ли стал разбираться глубже в dracut. Проект таким способом предоставляет идеальную трейнинг площадку для энтузиастов, где обучение проходит в играющей форме 🙂



Среда
09. Ноябрь 2016


face

Релиз Fedora 25 запланирован на 15 ноября, а openSUSE 42.2 — на день позже. На самом деле, оба этих дистрибутива я тестирую уже около месяца, установив ещё бета-версии. У меня есть некоторые наблюдения, которыми я хочу поделиться.

Fedora

Это очень достойный и довольно стабильный дистрибутив, который прекрасно подойдёт для домашнего использования, если вы возьмёте не официальную версию, а сборку от проекта Russian Fedora — в ней уже добавлены дополнительные репозитории, кодеки и прочие штуки, которые в обычной Федоре нужно проделывать вручную. Даже если вы не собираетесь использовать Федору как основную систему, её всегда полезно иметь где-нибудь под рукой (в виртуальной машине или на отдельном жёстком диске/разделе), потому что Федора — это всегда самая новая версия рабочего стола Gnome, передовая и самая стабильная работа новой графической системы Wayland, надёжная и стабильная поддержка UEFI и Secureboot в инсталляторе, огромный выбор стороннего ПО через систему Fedora Copr и многое другое.

Вместе с тем, пользоваться Fedora 25 Beta как основной системой затруднительно, потому что многие проекты в Copr пока не делают сборок для версии 25, многие инструменты, вроде Fedy, тоже пока поддерживают только версии Fedora вплоть до 24-й. Короче говоря, надо просто немного подождать.

В середине октября моя Russian Fedora 25 Beta вдруг перестала обновляться и вообще видеть сервера обновлений. Я догадался заглянуть на страницу состояния инфраструктуры Федоры и увидел там много красного цвета. Инфраструктура всего проекта «лежала» примерно 2 часа по вине урагана «Матфей», который вызвал наводнения и обрыв электропередач в местечке Raleigh, где и расположен дата-центр Fedora Project. Казалось бы, Fedora умеет искать местные зеркала своих репозиториев во всех частях мира, однако сам список зеркал всё равно сначала подтягивается из США. Так что при использовании стандартных настроек пакетного менеджера DNF, работоспособность Russian Fedora всё равно критично зависит от американских серверов.

openSUSE

Предыдущий релиз 42.1 мне откровенно не понравился — он был очень «сырым» и стал более-менее хорошим только через пару-тройку месяцев, когда большинство проблем разработчики наконец решили. Я использую openSUSE ещё со времён версии 10.2 и могу сказать, что за прошедшее время было много как хороших, так и неудачных релизов —  в этом смысле проект openSUSE остаётся непредсказуемым. Правы были те пользователи, которые не стали обновляться до Leap 42.1 и остались на отличных версиях 13.1 и 13.2. Но похоже, что грядущий выпуск 42.2 получится исключительно удачным. За месяц активного использования я остался очень доволен качеством и производительностью системы. Пожалуй, стоит перечислить достоинства и некоторые выявленные недостатки в openSUSE 42.2.

Достоинства:

  • Традиционно лучший инсталлятор из виденных мною. Логичный, удобный, стабильный — оно и не мудрено, ведь готовили его изначально для платной версии SUSE SLE:
  • Приятный в использовании и очень производительный рабочий стол Plasma5;
  • Огромный набор дополнительного ПО в системе openSUSE Build Service (OBS). Здесь много энтузиастов из сообщества openSUSE поддерживают свои сборки пакетов, и тут есть практически всё;
  • Пакетный менеджер Zypper, который, на мой взгляд, гораздо мощнее любого apt или urpm*. На моей практике мне удавалось легко и изящно откатывать систему к предыдущему состоянию после обновления из «левых» репозиториев, используя Zypper. Сломать пакетную систему в openSUSE практически нереально — даже загубленную систему всегда можно вернуть в строй, вычистив её от ненужных наслоений;
  • Интересные возможности бэкапа и версионирования системы благодаря файловой системе Btrfs. В последний раз я тестировал Btrfs ещё с openSUSE 13.1, и тогда меня неприятно удивила низкая производительность этой ФС на десктопе. С тех пор я всегда форматировал корневой раздел для openSUSE в ext4, но недавно я решил поставить 42.2 RC на отдельный жёсткий диск и оставил в инсталляторе настройки по умолчанию — они-то и предлагают всегда Btrfs. В итоге, установленная система показалась мне очень быстрой, и теперь мне больше не хочется менять Btrfs на ext4. Кстати, недавние тесты показывают, что Btrfs не так уж и отстаёт от конкуренток;
  • Самый удобный способ установки обновлений, что я когда-либо видел. В системном лотке Plasma5 сидит значок обновлений, который подаёт сигнал о новых версиях пакетов. Достаточно всего двух щелчков мыши — и обновления тут же скачиваются и устанавливаются!

Недостатки:

По мелочи всегда набираются ошибки, которые хоть и не сильно влияют на общее впечатления о системе, но раздражают. Так, при выходе (log out) из Plasma5 эта самая Плазма сначала замирает на пару секунд, потом с ошибкой перезапускается, и лишь после этого сеанс завершается. Есть надежда, что это исправят в ближайших выпусках Plasma 5.8.х, так что нужно просто подождать обновлений. В остальном, некоторые программы всё равно приходится собирать вручную (KEncFS, KNemo), но их немного. Русификация Plasma5 в целом на «четвёрку» — чуть похуже чем в Rosa Fresh, но мелкие огрехи не сильно портят жизнь.

Самое главное — openSUSE 42.2 ещё до своего выхода оказался очень стабильным и пригодным для использования дистрибутивом, который я могу рекомендовать всем, кто интересуется Linux.



Вторник
01. Ноябрь 2016


face

Здравствуйте, меня уже несколько человек просило написать о том, как настроить прозрачное проксирование траффика, например, на офисном шлюзе, который, естественно, работает на openSUSE. На самом деле, ничего сложного в настройке нет, и вы сами в этом убедитесь, повторяя все за мной. 1) Устанавливаем, добавляем в автозагрузку и запускаем squid: user@opensuse:~> sudo zypper install squid user@opensuse:~> [...]


face

Здравствуйте читатели, запах елок и ускорение темпа жизни возвещает нам о наступлении 2011 года И я спешу выложить все, что у меня накопилось в черновиках И расскажу я вам сегодня о том, как очень быстро, за несколько минут поднять VPN сервер. В принципе, ничего сложного нет, но следуя стилю всех постов в этом блоге, я [...]


face

Здравствуйте, сегодня расскажу вам о dnsmasq. Сам я познакомился с этой утилитой не так давно. Это очень легкий и простой в настройке DHCP, DNS и TFTP сервер(!). Если вам нужно очень быстро настроить офисный шлюз с нуля, без создания дополнительных внутренних зон, то dnsmasq станет идеальным вариантом. Dnsmasq имеет следующие возможности: - встроенный DNS сервер [...]


Суббота
13. Август 2016


face

Сегодня хочу показать как сделать простейший роутер из компьютера с ОС openSUSE в течении нескольких минут. Сделать это сможет каждый, кто хоть немного знаком с консолью и понимает для чего нужны IP адреса . На моей машине внутренним интерфейсом является eth0(192.168.1.1), а внешним eth1. Начнем по порядку: I) Настройка сервера DNS: Устанавливаем: user@opensuse:~> sudo zypper [...]


face

Здравствуйте читатели, к сожалению, никак не хватает у меня времени сделать еще 2 статьи про быструю настройку NAT и прозрачное проксирование в openSUSE с помощью SQUID. Но надеюсь через 2 недели у меня появиться окошко и я, все-таки, реализую свои планы. А теперь о позитивном, недавно вернулся с конференции HighLoad ++. Узнал очень много нового [...]


face

Привет! Сегодня расскажу вам как быстро поднять файловый сервер в сети, весь процесс настройки не займет и 20 минут(разумеется, если у вас хорошая скорость интернета ) Поехали: 1) Устанавливаем Samba: user@linux-m71t:~> zypper install samba 2) Смотрим конфиг: Хочу рассказать здесь обо всех опциях, которые могут понадобится. По умолчанию в секции global следующие опции: user@linux-m71t:~> cat [...]


face

Здравствуйте, сегодня хочу рассказать, о том, как установить и настроить VirtualBox на сервере, с которым работа ведется только по SSH. Это очень удобно, если где-то у вас имеется мощный сервер, а хочется экспериментов, ставим VirtualBox, поднимаем RDP/VNC в системе, в зависимости от предпочтений и пользуемся Указанная последовательность настройки VirtualBox будет работать в любом линукс дистрибутиве. [...]


face

Вы еще не знаете, как обновить KDE 4.4 вашей Opensuse 11.3 до нового восхитительного релиза KDE 4.5? Тогда этот пост предназначен специально для Вас. Те, кому не терпится увидеть новейший KDE, могут воспользоваться предложением одного из разработчиков KDE Уилла Стивенсона, позволяющим уменьшить количество шагов в процессе обновления. Если вы еще не опытный пользователь или просто [...]


face

Внимание, отличная новость! Недавно команда разработчиков KDE проанонсировала релиз KDE 4.5.0, самого последнего релиза этой знаменитой рабочей среды. Этот выпуск рабочей среды включает обновления для платформы разработчиков, приложений KDE, основного рабочего стола – все это включено в очень важный для всего сообщества KDE релиз. Возможно, из-за слишком больших задержек в процессе выпуска, вы уже не [...]


face

openSUSE линукс считается одной из самых красивых open-source ОС. Учеными доказано - зеленый цвет успокаивает глаза В связи с этим хочу поделиться обоями с символикой хамелеона: Наслаждаемся okbm("http://sapfeer.ru/krasivye-oboi-s-simvolikoj-opensuse/","Красивые обои с символикой openSUSE")


Воскресенье
17. Июль 2016


face

Пару дней назад вышло ядро 4.7. В связи с этим наш репозиторий Tumbleweed в скором будущем будет обновлен. Для тех же, кому по той или иной причине нужны самые свежие версии ядер, собраные для openSUSE (не только Tumbleweed), существует специальный kernel-репозиторий. Там лежат ядра, собранные сразу же после официального релиза (в тот же день). Доступны сборки не только для x86, но и для ARM и Power. Есть vanilla.

Установка не предствляет из себя ничего сложного – самое обычное обновление rpm-пакета.
Я только что обновил ядро на одной из своих тестовых систем. Это 32-битный x86 нетбук c установленной (где-то в середине июня) Tumbleweed.

# uname -pr
4.6.2-1-pae i686

# zypper ar -f http://download.opensuse.org/repositories/Kernel:/HEAD/standard/Kernel:HEAD.repo                                                               
Adding repository 'Kernel builds for branch master (standard)' ...............................[done]
Repository 'Kernel builds for branch master (standard)' successfully added                                                                                                         
Enabled     : Yes                                                                                                                                                                  
Autorefresh : Yes                                                             
GPG Check   : Yes                                                             
Priority    : 99                                                              
URI         : http://download.opensuse.org/repositories/Kernel:/HEAD/standard/


# zypper lr
# | Alias               | Name                                       | Enabled | GPG Check | Refresh
--+---------------------+--------------------------------------------+---------+-----------+--------
1 | Kernel_HEAD         | Kernel builds for branch master (standard) | Yes     | ( p) Yes  | Yes    
2 | openSUSE-20160613-0 | openSUSE-20160613-0                        | No      | ----      | Yes    
3 | packman             | packman                                    | Yes     | (r ) Yes  | Yes    
4 | repo-debug          | openSUSE-Tumbleweed-Debug                  | No      | ----      | Yes    
5 | repo-non-oss        | openSUSE-Tumbleweed-Non-Oss                | Yes     | (r ) Yes  | Yes    
6 | repo-oss            | openSUSE-Tumbleweed-Oss                    | Yes     | (r ) Yes  | Yes    
7 | repo-source         | openSUSE-Tumbleweed-Source                 | No      | ----      | Yes    
8 | repo-update         | openSUSE-Tumbleweed-Update                 | Yes     | (r ) Yes  | Yes

Значит новый репозиторий называется Kernel_HEAD. Хорошо, я хочу обновиться только из него:

# zypper dup -r Kernel_HEAD
Retrieving repository 'Kernel builds for branch master (standard)' metadata --------------------[\]

New repository or package signing key received:

  Repository:       Kernel builds for branch master (standard)    
  Key Name:         Kernel OBS Project 
  Key Fingerprint:  4529410A B52F94C4 03BAB484 ECEEF210 03579C1D  
  Key Created:      Mi 22 Apr 2015 14:25:51 CEST                  
  Key Expires:      Fr 30 Jun 2017 14:25:51 CEST                  
  Rpm Name:         gpg-pubkey-03579c1d-5537934f                  


Do you want to reject the key, trust temporarily, or trust always? [r/t/a/? shows all options] (r): a
Retrieving repository 'Kernel builds for branch master (standard)' metadata ...................[done]
Building repository 'Kernel builds for branch master (standard)' cache ........................[done]
Loading repository data...
Reading installed packages...
Computing distribution upgrade...

The following 2 NEW packages are going to be installed:
  kernel-default-4.7.rc7-2.1.g152f160 kernel-pae-4.7.0-1.1.g24f30d5

The following 2 packages are going to be upgraded:
  kernel-firmware ucode-amd

The following 2 packages are going to change vendor:
  kernel-firmware  openSUSE -> obs://build.opensuse.org/Kernel
  ucode-amd        openSUSE -> obs://build.opensuse.org/Kernel


2 packages to upgrade, 2 new, 2  to change vendor.
Overall download size: 156.5 MiB. Already cached: 0 B.
After the operation, additional 372.8 MiB will be used.
Continue? [y/n/? shows all options] (y): y

После установки просто перезагружаемся и наслаждаемся работой нового ядра.

> uname -pr
4.7.0-1.g24f30d5-pae i686

Обновляя ядра, вы не только становитесь привлекательнее для девушек, но и помогаете проекту в качестве beta-тестера. Помните, что Tumbleweed это не самое-самое свежее ПО. Это коллекция уже протестированных вместе компонентов.
“Стоит ли мне учавстовать в этом? А вдруг я себе что-то сломаю?”, – подумает ленивец. Нет, вероятность того, что произойдет креш системы очень мал. Прежде чем ядро официально выпустят, оно пройдет серию тестов.
Если креш все же произошел, всегда можно загрузить старое ядро, в котором вы работали прежде (и где все работало). В этом случае вы очень поможете, если не поленитесь сообщить нам о возникшей проблеме.
Посмотреть список установленных ядер можно вот так:

# zypper se -si 'kernel*'
Loading repository data...
Reading installed packages...

S | Name            | Type    | Version              | Arch   | Repository                                
--+-----------------+---------+----------------------+--------+---------------------------------------
i | kernel-default  | package | 4.6.2-1.2            | i586   | (System Packages)                         
i | kernel-default  | package | 4.7.rc7-2.1.g152f160 | i586   | Kernel builds for branch master 
i | kernel-firmware | package | 20160712-137.1       | noarch | Kernel builds for branch master 
i | kernel-pae      | package | 4.6.2-1.2            | i686   | (System Packages)                         
i | kernel-pae      | package | 4.7.0-1.1.g24f30d5   | i686   | Kernel builds for branch master 

Как видете, старое ядро никуда не делось. Я отправляю всех интересующихся к 12 главе нашего руководства. Там описана Multiple Kernel магия для zypper.

Обновившись, я протестировал сейчас, к примеру, LUKS и совместимость с проприетарным broadcom модулем для wireless. Все работает как и прежде, значит я иду дальше – перехожу к обновлению на своих ARM embedded-системах, чтобы удостовериться, что и там все работает как надо. Счастливо 😉



Среда
13. Июль 2016


face

24 июня, во время openSUSE Conference 2016, Norman Fraser (Chief Executive Officer из компании SoftIron Ltd.) представил новую aarch64 серверную out-of-the-box систему. Overdrive 1000 привлек внимание многих и не только потому, что она продается с предустановленной openSUSE. По словам Нормана, это тчательно продуманная 64-битная ARM® developer-система с AMD Opteron A1100™ процессором. Многие разработчики хотят больше, чем могут предложить обычные development-board embedded системы. Все помнят обсуждение ARM как десктопной архитектуры после LinuxCon Europe в конце прошлого года.
Overdrive 1000 продается с openSUSE Leap 42.1, где уже установленны Apache Web-сервер, MySQL, PHP, Xen, KVM, Docker и openJDK. Таким образом, пользователи могут приступать к работе сразу же после загрузки ОС. Напомню, что для aarch64 существуют установочные образу практически для всех известных дистрибутивов. Пользователи tumbleweed, к примеру, могут скачать установочные образы отсюда.

Overdrive 1000 стоит всего $599. За эти деньги мы получаем:

  • Processor cores 4 x 64-bit ARM Cortex A57 Cores
  • 2 x RDIMM with 8GB DDR4 DRAM (можно увеличить до 64 GB)
  • 1 x 1GBase-T Ethernet
  • 2 x USB 3.0 ports
  • 2 x SATA 3.0 ports
  • 1 x 1TB HDD
  • Wirespeed 1Gbps throughput
  • Low and predictable energy consumption at 45 watts max

Собираюсь ли я заказывать эту систему? Однозначно ДА! Docker уже поддерживает aarch64 (раз, два), а это был пожалуй единственный вопрос, который меня беспокоил. Пока я работал только с 32-битными ARM системами, пора переходить на 64 😉



Вторник
12. Июль 2016


face

Новичков в openSUSE вводит в заблуждение настройка сети из-за того, что для её управления существует несколько независимых технологий. В openSUSE Tumbleweed сегодня используется NetworkManager и wicked. Первый используется по умолчанию. Если же вам, к примеру, понадобится добавить статический маршрут и вы спросите об этом гугл, скорее всего в первую очередь вы найтдете классический способ сделать это. Помние, этот способ не сработает, если вы используете NM, и наоборот. Также не стоит забывать, что настройки сети в разных дистрибутивах могут отличаться.

Добавить маршрут можно с помощью команды route. В данном примере для доступа в сеть 172.19.0.0/16 я использую рутер 172.20.1.161. Тут стоит помнить лишь о том, что эти настройки пропадут после перезагрузки.

# route add -net 172.19.0.0 netmask 255.255.0.0 gw 172.20.1.161

Чтобы настройки не пропали, нужно прописать их в конфиге NM. Для каждого соединения существуют свои настройки. Загляните в каталог /etc/NetworkManager/system-connections. Там находится список файлов, каждый из которых относиться к тому или иному соединению. Чтобы добавить route правило, о котором я говорил выше, просто добавьте такую строчку в секцию [ipv4]:

route0=172.19.0.0/16;172.20.1.161

Если вы используете KDE Workspace, вы можете добавить эти настройки в KDE NM-апплете. Для этого просто правый клик на иконке, выбираем “Configure Network Connections…”

Появляется список соедининий. Выбираем нужное нам, нажимаем “Edit”. В появившемся окне переходим во вкладку IPv4 и там нажимаем “Routes…”, где можно добавить новые или удалить старые маршруты.



Воскресенье
22. Май 2016


face
Эта страница объясняет, как создать загрузочный USB-брелок из LiveDVD, или другими словами — LiveUSB.
Версия: 12.2+Это относится к openSUSE, начиная с версии 12.2 и выше.
Внимание: Не пытайтесь применять процедуры, найденные в интернете для других дистрибутивов «конвертировать образ для создания liveUSB». Таким способом Вы повредите образ. Образы openSUSE уже подготовлены для использования на USB-брелоке, никаких изменение делать не нужно.

С помощью ImageUSB

Загрузите ImageUSB и следуйте инструкциям на их странице.

С помощью SUSE Studio ImageWriter

Ранее использовался SUSE Studio ImageWriter компилированный для windows, но он не поддерживается в настоящее время. Вы можете беспрепятственно fork it и создать свою собственную версию для windows.

С помощью GRUB4DOS

GRUB4DOS может быть установлен, используя RMPrepUSB

Этот метод позволяет сохранить все данные на вашем USB-устройстве. Демонстрация предоставляется на this video. Note: Эти инструкции не подходят, если ваш компьютер загружается UEFI (большинство компьютеров, созданных в промежутке ~2011-2016 все компьютеры с предустановленной Windows 8/8.1/10); сначала Вы должны запустить BIOS, сделать доступной Legacy-загрузку (т.е. сделать недоступными опции загрузки UEFI/secure)!

  • Скопируйте ISO-образ в папку «boot» на Вашем USB-flash.
  • Извлеките файлы «initrd» and «linux» в папку «boot» на USB-устройстве. Эти файлы размещены в каталогах boot\i386\loader или boot\x86_64\loader ISO-образа. Для монтирования ISO Вы можете использовать, например, Pismo File Mount Audit Package.
  • Установка GRUB4DOS в MBR или на USB-flash:
    1. download RMPrepUSB and install it;
    2. запустите RMPrepUSB;
    3. выберите Ваш носитель;
    4. нажмите «Install GRUB4DOS»;
    5. подтвердите GRUB installation to MBR;
    6. подтвердите установку GRUB на выбранный носитель;
    7. подтвердите копирование GRLDR на выбранный носитель.
  • Создайте файл «menu.lst» в корневой папке на USB key. Содержимое «menu.lst» должно быть таким (замените в двух местах – в строке 2 and в строке 5 openSUSE.iso на имя файла образа вашей устанавливаемой системы):
timeout 10

title openSUSE.iso
uuid () > nul
set UUID=%?%
set ISO=openSUSE.iso
kernel /boot/linux isofrom=/dev/disk/by-uuid/%UUID%:/boot/%ISO% isofrom_device=/dev/disk/by-uuid/%UUID% isofrom_system=/boot/%ISO% loader=syslinux splash=silent quiet
initrd /boot/initrd

Загрузите компьютер с вашей USB.

Решение проблем

Если у вас существуют проблемы с записью на USB-флеш, вы можете отформатировать устройство в Windows для подготовки записи образа.

Ms Windows Partitioning Tool

Подобная ситуация случается очень редоко, но если ваш компьютер не загружается с LiveUSB/DVD после проделанных описанных выше шагов, вы можете попробовать следующую процедуру.

C:\> diskpart
DISKPART> list disk           «--- напечатать список дисков
DISKPART> select disk 0       «--- выбрать номер диска
DISKPART> list partition      «--- напечатать список разделов
DISKPART> select partition 1  «--- выбрать первый раздел
DISKPART> active              «--- сделать активным диск/раздел (bootable)
DISKPART> exit                «--- выход

В отличие от fdisk-а, diskpart применит изменения сразу же после того, как вы их внесете, следовательно, не нужны команды на запись.


Суббота
16. Январь 2016


face

Наконец-таки нашел немного времени для знакомства с Ruby. Присматривался к нему уже наверное лет 5. Сначала SUSE стала создавать свои web сервисы на Ruby, потом вышел WebYaST… Что связанно с SUSE, Ruby исползуется повсеместно. Наконец и YaST был переписан на Ruby, а это значит, что openSUSE стал первым дистрибутивом, где установщик полностью написан на этом языке. Сегодня его просто нельзя уже игнорировать. Итак, я собираюсь начать восхождение как можно быстрее. Вы со мной? 🙂

Я покажу, что Leap 42.1 прекрасно подходит для изучения Ruby. В качестве примера рассмотрим работу с MySQL (на работе мне постоянно приходится писать автономные программы, поведение которых зависит от данных в БД); что-нибудь самое простое.

Если вы уже работали с БД, к примеру, в Python или Lisp, то приведенный ниже код поймете сразу. Require подключает модуль mysql. Мы создаем mysql-объект con. С помошью его метода query создаем SQL-запрос. Пробегаемся по выводу при помощи each do, при этом каждой строке из вывода присваиваем имя row. Я использую puts для вывода информации на экран. В Ruby есть и всем известный print. Разница в том, что puts добавляет символ новой строки в конец вывода, а вот print этого не делает. 14-16 строки обрабатывают ошибку (показывают ее вывод, но программа продолжает работу), если такая возникнет при попытке соединиться и получить данные. В конце мы вызываем close, который закрывает соединине.

#!/usr/bin/ruby
require 'mysql'

begin
    con = Mysql::new('10.10.10.10',
                     'login',
                     'password',
                     'centreon')

    con.query('SHOW columns FROM nagios_server').each do |row|
         puts "#{row[0]} #{row[1]} #{row[2]} #{row[3]}"
    end

    rescue Mysql::Error => e
        puts e.errno
        puts e.error
    ensure
        con.close if con
end

При первом запуске (используем свежую Leap 42.1 x86_64) получаем ошибку:

> ./mysql-test.rb
/usr/lib64/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55: \
                   in `require': cannot load such file -- mysql (LoadError)
        from /usr/lib64/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        from ./mysql-test.rb:2:in `'

Тут все понятно: require не может найти mysql. Для установки воспользуемся gem. Это аналог Lisp’овского QuickLisp или Python’овского pip.

> gem --help
RubyGems is a sophisticated package manager for Ruby.  This is a
basic help message containing pointers to more information.

  Usage:
    gem -h/--help
    gem -v/--version
    gem command [arguments...] [options...]

  Examples:
    gem install rake
    gem list --local
    gem build package.gemspec
    gem help install

  Further help:
    gem help commands            list all 'gem' commands
    gem help examples            show some examples of usage
    gem help platforms           show information about platforms
    gem help                     show help on COMMAND
                                   (e.g. 'gem help install')
    gem server                   present a web page at
                                 http://localhost:8808/
                                 with info about installed gems
  Further information:
    http://guides.rubygems.org

> gem list --local mysql

*** LOCAL GEMS ***


>

Нет ни одной установленной в системе mysql gem.
Обратите внимание на вывод gem’овской help – для команды list сказано только по поводу –local аргумента. Там есть еще –remote. Последний покажет доступные для установки gem’ы. Я не привожу тут вывод, потому что список слишком большой.
Для установки воспользуемся командой install:

# gem install mysql
Fetching: mysql-2.9.1.gem (100%)
Building native extensions.  This could take a while...
                 
ERROR:  Error installing mysql:
ERROR: Failed to build gem native extension.
/usr/bin/ruby.ruby2.1 extconf.rb
mkmf.rb can't find header files for ruby at /usr/lib64/ruby/include/ruby.h
extconf failed, exit code 1 

Gem files will remain installed in
/usr/lib64/ruby/gems/2.1.0/gems/mysql-2.9.1 for inspection.
Results logged to
/usr/lib64/ruby/gems/2.1.0/extensions/x86_64-linux/2.1.0/mysql-2.9.1/gem_make.out 

И я вам скажу честно – так происходит со многоими gem’ами 🙂

Но на самом деле ничего страшного не случилось. Дело в том, что gem’у нужен файл из RPM-пакета. Какого-то RPM пакета… Вызывать zypper нам придется самим. Какой пакет устанавливать? Мне повезло, я вспомнил, что один RPM-пакет нужно было доустановить и в случае с Common Lisp. В том случае это был libmysqlclient, для Ruby же нужен libmysqlclient-devel. Очень рекомендую еще поставить пакет ruby-devel и весь pattern devel_basis. Там много библиотек, необходимых интерпретору.

> sudo zypper in -t pattern devel_basis
> sudo zypper in ruby-devel libmysqlclient-devel

После этого попытаемся установить mysql gem снова:

> gem install mysql
Building native extensions.  This could take a while...
Successfully installed mysql-2.9.1
Parsing documentation for mysql-2.9.1
Installing ri documentation for mysql-2.9.1
Done installing documentation for mysql after 0 seconds
1 gem installed

> echo $?
0

> gem list --local mysql

*** LOCAL GEMS ***

mysql (2.9.1)

Выглядит лучше, правда? Теперь вернемся к коду выше. Придумайте для теста какой-нибудь простой SQL запрос. Что-нибудь типа show tables, к примеру. Вывод скрипта, приведенного выше, выглядит так:

./mysql-test.rb
id int(11) NO PRI
name varchar(40) YES 
localhost enum('0','1') YES 
is_default int(11) YES 
last_restart int(11) YES 
ns_ip_address varchar(255) YES 
ns_activate enum('1','0') YES 
ns_status enum('0','1','2','3','4') YES 
init_script varchar(255) YES 
monitoring_engine varchar(20) YES 
nagios_bin varchar(255) YES 
nagiostats_bin varchar(255) YES 
nagios_perfdata varchar(255) YES 
centreonbroker_cfg_path varchar(255) YES 
centreonbroker_module_path varchar(255) YES 
centreonconnector_path 

Вторник
12. Январь 2016


face

1. При загрузке ядра система зависает намертво и… через 20 минут всё таки грузится. В 13.2 наблюдал такое на ядре kernel-desktop и лечил это тогда переходом на kernel-default. В OpenSUSE 42.1 нет в образе такого выбора ядер, а новый kernel-default стал зависать при загрузке именно так. Решение нашлось очень простое: к параметрам загрузки ядра нужно добавить dis_ucode_ldr. Нашёл тут.

2. На некоторых машинах система время от времени зависает сама и без видимых причин. В dmesg такое:

[   35.962355] systemd-journald[525]: File /var/log/journal/fde0e1438648364a342657f95654294e/user-1000.journal corrupted or uncleanly shut down, renaming and replacing.

Заметил, что проблема имеется только тогда, когда /var примонтирован на отдельном разделе (именно так предлагается по умолчанию при установке 42.1). Удалось вылечить следующим образом:

su -
rm -rf /var/log/*
systemctl daemon-reload
reboot

Из того, что пока не удалось починить:

  1. При обновлении/установки ядра, создание initrd и обновление загрузчика занимает очень много времени (у меня — 40 минут). Опять же — только на некоторых конфигурациях, когда в системе определённое сочетание дисков с MBR и GPT.
  2. В Plasma 5 полная неразбериха в системном лотке. К тому же так и не починено отображение значка Dropbox. Xembed-sni-proxy не помогает.

В целом, OpenSUSE 42.1 — один из самых глючных и небрежно сделанных релизов OpenSUSE, что, безусловно, расстраивает. Я рассчитывал на качественную сборку KDE Plasma 5, но пока получается, что лучше всего Plasma 5 собрана в Rosa Desktop Fresh R6. Кстати, свежий образ системы «на посмотреть» можно взять тут.

 



Среда
28. Октябрь 2015


face

Раньше часто недооценивал backup, за что неоднократно поплатился временем. Да, приобрел много ценного опыта, но лучше бы это не на своей системе, а где нибудь … в другом месте. И теперь стараюсь делать запасы, особенно перед всякими экспериментами, которые по прежнему люблю.
Для себя лично нашел прекрасную программу, которая делает backup прямо на рабочей системе — qt4-fsarchiver. Это графическая оболочка для другой прекрасной программы — fsarchiver — с помощью которой в командной строке можно делать то же самое, а если написать скрипты, то это вообще просто. Но для написания скриптов нужно изучать параметры программы, и не всегда всё гладко получается (раньше пытался работать этой программой с live-cd, иногда бывали неприятности). А с qt4-fsarchiver все достаточно просто — выбираем что архивировать (раздел), куда архивировать, каким алгоритмом и степерь сжатия, нажимаем старт — и все, через пару часов (а то и меньше, в зависимости от размера раздела, у меня уходить минут 20 из-за ssd-диска и легких алгоритмов сжатия) backup готов. Так что если вы простой пользователь opensuse linux, как и я — программа подходит для вас на все 100%


Понедельник
12. Октябрь 2015


face

Имеется следующая конфигурация. Два звуковых устройства, оба управляются одним и тем же модулем snd-hda-intel. Первое устройство отвечает за звуковой канал в HDMI, встроенной в процессор графической системы. Второй устройство — обычный интегрированный на материнскую плату аудио-контроллер.

00:03.0 Audio device [0403]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller [8086:0c0c] (rev 06)
00:1b.0 Audio device [0403]: Intel Corporation 9 Series Chipset Family HD Audio Controller [8086:8ca0]
Пользователи жалуются, что звук не работает. Проблема состоит в том, что YaST создаёт следующую конфигурацию в 50-sound.conf:
options snd slots=snd-hda-intel,snd-hda-intel
alias snd-card-0 snd-hda-intel
alias snd-card-1 snd-hda-intel
Здесь snd-card-0 — звуковое устройство "по умолчанию". Очевидно, что в таком подходе ситуация, когда один и тот же модуль отвечает за два устройства, обрабатывается не корректно. Кто из устройств первый попал в функцию azx_probe модуля, тот и станет snd-card-0. В нашем случае, это не то устройство, которое нам хотелось бы. Это можно проверить, сделав
ls -l /sys/class/sound/card0/device
lrwxrwxrwx 1 root root 0 окт 9 21:36 /sys/class/sound/card0/device -> ../../../0000:00:03.0

Для восстановления правильного порядка предлагается делать следующее.
Во-первых, внимательно изучив исходники модуля, добавляем в 50-sound.conf:
options snd-hda-intel index=1,0
Во-вторых, надеемся, что при следующих загрузках порядок инициализации не будет меняться случайным образом, потому-что кто первый попадет в функцию azx_probe, тот теперь и будет card1. И это всё происходит в 2015 году, когда повсюду systemd и прочий udev, а звуковую карту за её DeviceId привязать нельзя.

Суббота
26. Сентябрь 2015


face

Любопытно, но готового пакета с Popcorn-Time для OpenSUSE не нашлось во всей OBS. В сети имеется установочный скрипт, который по идее должен ставить приложение, но скрипт, увы, устарел и больше не работает. Если вы хотите поставить Popcorn-Time вручную, то это сделать совсем не сложно. Но гораздо удобнее всё же воспользоваться обновлённым скриптом, который я сделал. Скрипт протестирован на OpenSUSE 13.2 64 bit.

Скачать.



Четверг
10. Сентябрь 2015


face

Намедни глянул свежий релиз OpenSUSE 42.1 Leap Milestone2. Система очень приятная и отличается замечательной стабильностью. Но сейчас не об этом. Дело в том, что не все заметили тот факт, что команда OpenSUSE не просто изменила нумерацию версий, но и перешла к другому способу формирования новых версий.

Судите сами. Раньше у нас были номерные версии OpenSUSE (13.1 затем 13.2…), которые считались стабильными. Параллельно сообществом поддерживалась нестабильная версия Factory и нестабильная роллинг-версия Tumbleweed. Вопрос на засыпку: какую версию ставить в продакшн на предприятии в небольшую фирму? Из всех перечисленных версий на эту роль лучше всего годился обычный номерной релиз, но и у него были слабые места. Во-первых, не все номерные релизы OpenSUSE получались удачными. Во-вторых, даже годовой график выпуска релизов был не таким удобным, как LTS-версии у Ubuntu. Что касается коммерческого SLES/SLED, то данные продукты являются именно продуктами — то есть бесплатно ими пользоваться трудно, да и смысла в этом мало. Сайт коммерческой SUSE позволяет скачать пробную версию системы, но получать обновления она будет только первые 60 дней. Для SOHO это неудобно.

Было бы здорово иметь бесплатный и свободный аналог CentOS, который бы завоевал бы сердца админов локалхостов и небольших контор… И этот аналог появился — OpenSUSE Leap. Основной смысл этой принципиально новой версии заключается в предоставлении свежих версий пользовательских программа на базе корпоративной системы SUSE Linux Enterprise (SLE). По сути, это будет ответ на Ubuntu LTS, которая используется как надёжная база с долговременной поддержкой во многих настольных дистрибутивах, включая Linux Mint и ElementaryOS. Однако роль OpenSUSE Leap всё же больше склоняется к корпоративному применению, о чём недвусмысленно сказано в примечании к недавнему релизу:

“Milestone 2 is realistic to use for non-critical production servers,” said members of the openSUSE release team.

Источник

Это важное замечание для всех, кто сейчас использует OpenSUSE 13.2. Версия Leap не является её продолжением и поэтому будет слегка неуклюже смотреться на домашнем десктопе. Настоящая десктопная версия — это OpenSUSE Tumbleweed, который после ноября 2014 г. считается стабильным и протестированным дистрибутивом несмотря на то, что это роллинг-дистрибутив.

Мне вспоминается 2003 год, когда Red Hat объявила, что после Red Hat Linux 9 выйдет Fedora Core 1. Тогда тоже все считали, что Федора будет естественным продолжением старой системой. В действительности же, бизнес перешёл на RHEL и CentOS, а Fedora стала экспериментальной и нестабильной версией.

Сейчас OpenSUSE делает похожее, но с поправкой на более высокое качество релизов: Tumbleweed гораздо удобнее в использовании чем Fedora, а Leap проще настроить под себя по сравнению с CentOS.

Переход с KDE4 на Plasma5 — отдельная большая тема, об этом позже!



Понедельник
17. Август 2015


face

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

Полное описание сетевой консоли находится в документации ядра. Для настройки достаточно добавить в modprobe.d/99-local.conf:

options netconsole netconsole=@/,514@192.168.10.7/00:0C:29:F3:92:97
Здесь, 514 - номер UDP порта, 192.168.10.7 - IP удаленного хоста куда будет отсылаться информация, 00:0C:29:F3:92:97 - его MAC адрес, если его не указать явно то будет использоваться широковещательный адрес FF:FF:FF:FF:FF:FF, что может затруднить передачу информации в зависимости от настроек сетевого оборудования.
И загрузить модуль netconsole или, по желанию, поставить его на автозагрузку при старте системы.

После загрузки модуля netconsole, сетевая консоль начинает немедленно функционировать, а в системном журнале можно увидеть примерно следующее:
May  1 18:57:51 192.168.10.4 kernel: [162255.522603] netconsole: local port 6665
May 1 18:57:51 192.168.10.4 kernel: [162255.522673] netconsole: local IP 0.0.0.0
May 1 18:57:51 192.168.10.4 kernel: [162255.522710] netconsole: interface eth0
May 1 18:57:51 192.168.10.4 kernel: [162255.522746] netconsole: remote port 514
May 1 18:57:51 192.168.10.4 kernel: [162255.522784] netconsole: remote IP 192.168.10.7
May 1 18:57:51 192.168.10.4 kernel: [162255.522826] netconsole: remote ethernet address 00:0c:29:f3:92:97
May 1 18:57:51 192.168.10.4 kernel: [162255.522881] netconsole: local IP 192.168.10.4
May 1 18:57:51 192.168.10.4 kernel: [162255.523032] console [netcon0] enabled
May 1 18:57:51 192.168.10.4 kernel: [162255.523349] netconsole: network logging started

Данные приходят в самом простом текстовом виде и их можно читать самым простым способом:
netcat -u -l 514
Если у нас в наличии есть syslog-ng — можно использовать его следующим образом:
source s_remote_udp {
network(transport("udp") ip(0.0.0.0) port(514));
};
filter f_remote_remhost {
netmask(192.168.10.4);
};
destination d_remote_remhost {
file("/var/log/remote/remhost.log");
};
log {
source(s_remote_udp);
filter(f_remote_remhost);
destination(d_remote_remhost);
};

Проверить, что всё работает можно следующим образом:
echo '<7>Hello world!' > /dev/kmsg
dmesg -n 8
Сообщение должно появиться в журнале и быть передано по сети на удаленный хост.

Вторник
11. Август 2015


face

Ядро Linux периодически ломается, иногда это происходит на стадии загрузки. Одним из методов исследования проблемы является удаленная отладка с использованием последовательного порта.

Опции конфигурации ядра должны быть такими:

CONFIG_KGDB=y
CONFIG_KGDB_SERIAL_CONSOLE=y
Кроме того, драйвер последовательного порта должен быть включен в состояние Y.

Далее нам понадобятся отладочные символы и исходные коды ядра, которые находятся в пакетах -debuginfo и -debugsource. Скорее всего, архитектуры удаленной и локальной системы не будут совпадать, так как особенно часто ядро Linux не работает на архитектуре armv7l, поэтому просто распакуем данные следующим образом:
> rpm2cpio kernel-default-base-debuginfo-4.2.rc4-1.1.gaf243bc.armv7hl.rpm | cpio -id
> rpm2cpio kernel-default-debuginfo-4.2.rc4-1.1.gaf243bc.armv7hl.rpm | cpio -id
> rpm2cpio kernel-default-debugsource-4.2.rc4-1.1.gaf243bc.armv7hl.rpm | cpio -id
В текущей директории будет создана поддиректория /usr содержащая отладочные символы и исходные коды в стандартной иерархии. Кроме того, нам понадобятся сами бинарные файлы ядра:
> rpm2cpio kernel-default-base-4.2.rc4-1.1.gaf243bc.armv7hl.rpm | cpio -id
> rpm2cpio kernel-default-4.2.rc4-1.1.gaf243bc.armv7hl.rpm | cpio -id

Далее, следует подключить последовательный порт, и открыть удаленную консоль следующим, например, образом:
> screen /dev/ttyUSB0 115200
и начать загрузку целевого устройства. Для активации механизма kgdb потребуется добавить параметры командной строки ядра в загрузчике:
U-Boot# setenv append "kgdboc=ttyO0,115200 kgdbwait"
U-Boot# boot

Если все пойдет правильно, то загрузка ядра остановится после примерно следующих строк:
[    3.753423] 44e09000.serial: ttyO0 at MMIO 0x44e09000 (irq = 154, base_baud = 3000000) is a OMAP UART0
[ 4.497783] console [ttyO0] enabled
[ 4.502387] STMicroelectronics ASC driver initialized
[ 4.507960] KGDB: Registered I/O driver kgdboc
[ 4.512673] KGDB: Waiting for connection from remote gdb...

Entering kdb (current=0xdb0b3480, pid 1) on processor 0 due to Keyboard Entry
[0]kdb>
kdb ождает ввода команд, среди прочего доступна команда help, выводящая список базовых команд. На этом консоль можно закрыть: Ctrl-A :quit и открыть отладчик gdb.

Для начала установим пути к отладочным символам и исходным кодам и загрузим объектный файл ядра целевой системы (внимание, сначала этот файл нужно будет распаковать командой gz).
(gdb) set debug-file-directory /tmp/dbg/usr/lib/debug
(gdb) directory /tmp/dbg/usr/src/debug/kernel-default-4.2.rc4/linux-4.2-rc4/linux-obj
(gdb) file /tmp/dbg/boot/vmlinux-4.2.0-rc4-1.gaf243bc-default
Reading symbols from /tmp/dbg/boot/vmlinux-4.2.0-rc4-1.gaf243bc-default...Reading symbols from /tmp/dbg/usr/lib/debug/boot/vmlinux-4.2.0-rc4-1.gaf243bc-default.debug...done.
done.
После этого нужно подключиться к целевой системе:
(gdb) target remote /dev/ttyUSB0
Remote debugging using /dev/ttyUSB0
0xc031dc08 in arch_kgdb_breakpoint () at ../arch/arm/include/asm/outercache.h:142

Далее можно использовать отладчик как обычно. Через команду monitor доступны все команды из консоли kdb, среди них есть достаточно полезные, например dmesg или lsmod:
(gdb) monitor lsmod
Module Size modstruct Used by
musb_am335x 1431 0xbf000278 1 (Loading) 0xbf000000 [ ]
Обратите внимание, что команда lsmod любезно нам показывает адрес 0xbf000000, куда в памяти загружен модуль musb_am335x. Этот адрес нужен чтобы отлаживать код из модуля:
(gdb) add-symbol-file /tmp/dbg/lib/modules/4.2.0-rc4-1.gaf243bc-default/kernel/drivers/usb/musb/musb_am335x.ko 0xbf000000

Среда
22. Июль 2015


face

В блоге моего знакомого Александра Толстого есть достаточно интересная заметка о некоторых действиях, которые он советует проделать после установки openSUSE. И хотя речь там идет о openSUSE 13.2, я думаю большинство из советов (если не все), должны без проблем заработать и в Tumbleweed.
В этой же заметке я постараюсь дополнить Александа, т.е. дать несколько похожих советов, с той лишь разницей, что они, я думаю, понадобятся более узкому кругу пользователей 😉

Устанавливаем Minimal Server Selection (Text Mode)

Есть лишь один способ получить быструю и чистую, т.е. без мусора, систему – начать с минимального набора компонентов и доустановить только то, что вам действительно необходимо.
Да, для этого надо знать, что необходимо, а что есть лишее. Набор “необходимого” складывается из задач, для решения которых будет предназначена система.
Помните, что установщик openSUSE спрашивает не только о предлагаемых к установке DE (комплектах ПО), но и предоставляет выбор из списка всех возможных rpm-пакетов. Так что получить минимальную систему вы можете даже если сначала выбрали, к прмеру, KDE, а потом убрали из списка часть предлагаемых компонентов.
Руководство по установке fluxbox.
Руководство по установке stumpWM.

Настраиваем vim

Только не говорите мне, что вы пользуетесь nano 🙂 Vim незаменим. Это классика, это простота, это элегантность. Говоря это я ни в коем случае не хочу обидеть пользователей emacs. С вами, ребята, я всегда охотно пропущу по бутылочке темного, но признайте, что vim должна быть установленна на каждой UNIX/GNU-системе (хоть GNU is Not UNIX) 🙂

Конфигурационным файлом vim по-прежднему является .vimrc. Добавим туда пару строк.

set smartindent
set tabstop=4
set shiftwidth=4
set paste

Да, 4 отступа вместо 8, при нажатии tab. Автоопределение необходимости отступов с текущей строки при добавлении новой. И paste тоже необходима, дабы код не уходил лесенкой вправо при добавлении скопированного текста. Что-то забыл? Напомните мне в комментариях.

Отключение графики в GRUB2

Наверное это дело привычки, но когда я только начинал пользоваться GNU/Linux этот режим был режимом по умолчанию. Потом для пререключения во время загрузки приходилось нажимать esc. Теперь даже возможность переключения убрали… Как вы поняли, речь идет о splash-режиме GRUB. Этот режим отключает графику во время загрузки OC, последовательно показывая загружаемые компоненты системы. Для его отключения просто уберите “quiet” из параметров, которые GRUB2 передает ядру. Сделать это можно например через файл /etc/default/grub, либо через YaST2 (который перезапишет этот файл за вас). Не забудьте после этого обновить загрузчик при помощи grub-install(8).
Текущую конфигурацию можно посмотреть в /proc/cmdline.

Установка man-страниц на русском

Man-страницы или страницы руководств это наше все. По привычке заглядывать в man по той или ной команде или системной функции можно сказать как минимум о возврасте (а значит и опыте) пользователя. Когда я только начинал изучение этой ОС будучи студентом, у меня не было безлимитного интернета. Выходил в сеть я в основном лишь для того, чтобы проверить свои email. Скорость соединения тоже не шла ни в какое сравнение с сегодняшней. Слово “погуглить” пришло уже позже. Поэтому изучение man-страниц, открытыех в консоли, было тогда чем-то само собой разумеемщимся. Они до сих пор имеют одно важное преимущество – страницы руководств 100% совместимы с используемой вами системой, в отличие от половины мануалов, которые найдет поисковик в web.
Материал в страницах на английском более актуален (они уже установленны в системе), но я считаю неплохой идеей иметь под рукой коллекцию страниц на русском. Устанавливаем пакет man-pages-ru и вызываем man, передав в качестве параметра нужный язык (в нашем случае -L ru).

> sudo zypper in man-pages-ru

> man cal
Man: find all matching manual pages (set MAN_POSIXLY_CORRECT to avoid this)
 * cal (1)
   cal (1p)
Man: What manual page do you want?
Man:

> man -Lru cal
Man: поиск всех подходящих справочных страниц (set MAN_POSIXLY_CORRECT to avoid this)
 * cal (1)
   cal (1p)
Man: Какая справочная страница вам нужна?
Man:

Проблем с кодировкой возникнуть не должно.

Установка колекции RFC-документов

Раз уж речь зашла о мануалах в текстовом формате, то возможно кого-то заинтересует пакет rfc. Он содержит коллекцию The RFCs (Request For Comments). Большинство пользователей найдут материал из этих документов слишком сухим и техническим. Сам я стал туда заглядывать только после того, как стал увлекаться сетевым программированием.
В поиске по документам нам поможет zgrep, который умеет заглядывать в gz-файлы. Вот пример поиска документов, в которых встречается имя Theo de Raadt. Спорим, что если такой документ и есть, он будет о сетевых атаках 🙂

> sudo zypper in rfc
> zgrep -le "Theo de Raadt" /usr/share/doc/rfc/*
/usr/share/doc/rfc/rfc5927.txt.gz
> less /usr/share/doc/rfc/rfc5927.txt.gz



Internet Engineering Task Force (IETF)                           F. Gont
Request for Comments: 5927                                       UTN/FRH
Category: Informational                                        July 2010
ISSN: 2070-1721


                        ICMP Attacks against TCP

Abstract

   This document discusses the use of the Internet Control Message
   Protocol (ICMP) to perform a variety of attacks against the
   Transmission Control Protocol (TCP).  Additionally, this document
   describes a number of widely implemented modifications to TCP's
   handling of ICMP error messages that help to mitigate these issues.

Status of This Memo

   This document is not an Internet Standards Track specification; it is
   published for informational purposes.

   This document is a product of the Internet Engineering Task Force
   (IETF).  It represents the consensus of the IETF community.  It has
   received public review and has been approved for publication by the
   Internet Engineering Steering Group (IESG).  Not all documents
   approved by the IESG are a candidate for any level of Internet
   Standard; see Section 2 of RFC 5741.

   Information about the current status of this document, any errata,
   and how to provide feedback on it may be obtained at
   http://www.rfc-editor.org/info/rfc5927.



Gont                          Informational                     [Page 1]
/usr/share/doc/rfc/rfc5927.txt.gz lines 1-58/2019 2%

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

Отключаем postfix

Но вернемся к openSUSE. По умолчанию, каждый раз при включении в ней запускается postfix. Дело в том, что cron(1) сообщает пользователям о процессе выполненных заданий при помощи email. Только для этого в системе должна быть запущенна какая-нибудь MTA. В нашем случае это postfix. Я не так часто пользуюсь cron(1), поэтому отключение postfix нахожу вполне логичным, экономя драгоценную память, процессорное время и закрывая еще один tcp-порт.

> pstree -p | grep master
           |-master(978)-+-pickup(4019)
> sudo systemctl stop postfix.service
> sudo systemctl disable postfix.service

Если вы хотите посмотреть все запущенные службы: systemctl list-units -t service

Если вы до сих пор неуверенно себя чувствуете с systemd (именно он управляет системными службами), то я советую заглянуть на страницу Алексея Федорчука Шпаргалки по systemd. Написано просто и понятно.

Что-то забыл?

Конечно! Например пересборка ядра, установка необходимых библиотек и просто инструментов для программирования, поиск и скачивание нужных книг или, наконец, поиск красивых обоев. Но так как перечисленное относится уже к индивидуальным пристрастям и особенностям системы, то на этом “first steps” подходит к концу.

Напоследок напомню, что после устновки в системе добавлены только стандарные rpm-репозитории. Это далеко не все, что предлагает проект openSUSE. Есть дополтительные репозитории, которые могут быть добавлены, а так же существует целый список так называемых third-party репозторий, которые официально не поддерживаются проектом, но которые каждый из нас может использовать.

Удачи 😉



Суббота
13. Июнь 2015


Alexander Naumov: GNU Screen 4.3.0

23:51 UTCmember

face

Мы рады сообщить о релизе GNU screen 4.3.0

Предыдущий стабильный релиз был более года назад (это была версия 4.2.1). Поэтому я решил наконец-то официально сделать “срез”, т.е. выпустить следующую стабильную версию. У нас нет фиксированного release-цикла, но в будущем мы планирую выпускать новые версии почаще. Скажем, 2 или даже 3 раза в год.

Что касается основых изменений:

  • X и x escape последовательности теперь будут показывать команду, которую пользователь передал в качестве параметра, при запуске screen.
  • Немного улучшена работа с зомби-окнами, хотя остается еще несколько спорных моментов.
  • Команда sort теперь упорядочит окна в алфавитном порядке.
  • Окна теперь можно перемещать вручную.
  • Команда windows позволяет работать с агрументами screen.
  • Много bugfixes (в том числе и не для GNU-систем).

Было добавленно несколько патчей из build-систем конкретных дистрибутивов (так как они теперь в git, из пакетов их естественно можно будет удалить). Во-первых, это сэкономит время/силы/нервы мантейнеров, во-вторых, разница между работой screen (одной и той же версии) в разных дистрибутивах теперь будет меньше.

У нас по-прежнему очень много открытых bugreports. Сейчас их более 200 (проект долгое время находился в состоянии летаргического сна). С моей стороны для следующей версии скорее всего будут только bugfixes этих репортов.

Я благодарен всем пользователям, которые уже помогли протестировать/воспроизвести некоторые баги (по моей просьбе) и просто принимали участие в обсуждениях.

Если меня не опередят, до конца следующей недели я постараюсь пересобрать пакеты для openSUSE и послать запросы (submit request) в соответствующие репозитории (c Tumbleweed у нас их получается уже 3).

Если кто-то захочет отравить patch, я напомню – авторство сохраняется и в самом git-комментарии и в git-заголовке author. Особо активные участники сообщества в качестве бонуса заносятся в man page, в раздел CONTRIBUTORS.

Скачать исходники 4.3.0 можно с ftp-сервера GNU.



Пятница
15. Май 2015


face

Новость неофициальная, поэтому ссылок на источник я не привожу.

В начале этого года (на FOSDEM) стало изветсно, что SUSE собирается опубликовать исходники пакетов для SUSE Linux Enterprise 12. Сами исходники действительно через пару месяцев были опубликованы. Об этом стало известно во время открытия openSUSE Conference, в начале этого месяца.

Открыты только исходники, а сам процесс сборки, т.е. создание репозиториев, ложится на плечи сообщества. SUSE не отвечает за собранные сообществом пакеты (как и RedHat не отвечает за пакеты в репозиториях CentOS).

Итак, чтобы получить репозиторий с необходимыми пакетами, достаточно в своем домашнем проекте создать subproject, который нужно слинковать с одним из двух опубликованных SUSE: SUSE:SLE-12:GA или SUSE:SLE-12:Update.

Пару дней назад я создал новый SLE12-проект, который слинковал с SUSE:SLE-12:GA. OBS до сих пор пересобирает в нем пакеты (их там почти 3000), но почти 2000 уже готовы. Только что я создал еще один проект для SLE-12:Update (их там почти 1000), так что к началу следующей неделе я, возможно, не только смогу удивить коллег, но и использовать SLE у себя дома как и openSUSE 😉



Понедельник
11. Май 2015


face

Разработчики systemd продолжают вести нас в светлое будущее. В udev уже давно реализован механизм Predictable Network Interface Names, который представляет из себя кусочек кода на C, заполняющий переменные ID_NET_NAME_* исходя из свойств расположения физического сетевого устройства.

Считается, что подобный подход дает больше информации, чем прибитие гвоздями имен интерфейсов eth? к MAC-адресам в 70-persistent-net.rules. Однако, не обходится без недостатков. Например, при запуске системы под гипервизором VMWare ESXi, единственный сетевой интерфейс у меня называется eno16777728. Устройства, определяемые в DTB для одноплатных компьютеров на базе ARM, не поддерживаются схемой именования и имеют обычные имена eth?. А при подключении USB устройств, типа мобильных телефонов или модемов, схема именования генерирует скорее неустойчивые имена, потому-что в имя входит расположение устройства на шине USB, которое изменится при следующем подключении, таким образом придется настраивать интерфейс заново, потому-что предыдущие сохраненные настройки будут относиться к интерфейсу с другим именем.

К счастью, udev заполняет переменную ID_NET_NAME_MAC, представляющую имя интерфейса, основанное исключительно на его MAC-адресе. По-умолчанию, эта переменная не используется, но можно поменять стандартное поведение для USB-устройств. Один способ - через настройку udev, второй - используя systemd.link, файл, используемый systemd, для конфигурации сетевых интерфейсов.

Создадим файл /etc/systemd/network/90-usb.link следуя инструкции:

[Match]
Path=*-usb-*
[Link]
NamePolicy=mac
Юнит-файл состоит из двух секций: [Match] для описания устройств к которым он относится и [Link] для описания того, что с ними делать. В примере выше мы просим systemd использовать политику именования основанную на MAC-адресах для всех устройств подключенных через USB. После выполнения systemctl daemon-reload можно подключить устройство и увидеть его интерфейс с именем enx112233445566. Достаточно длинное, но уникальное (в известных пределах) и не изменится при следующем подключении устройства.

Кроме изменения имени через systemd.link можно настроить WOL, MTU, ограничить скорость на интерфейсе, назначить устройству другой MAC-адрес.

Старые записи в блогах ->