gladilov.org.ru gladilov.org.ua

50 заметок с тегом

маленькие хитрости

Хаки и трюки, подсмотренные на просторах Интернета или «выстраданные» мною самим.



Игры с keepalived

В продолжение поста о системном демона Keepalived, позволяющем организовать отказоустойчивость сервиса и балансировку нагрузки. Возник вопрос — как узнать, какая нода в каком состоянии запущена? Для этого я создал две ВМ, к примеру:
d1 IP=172.16.32.31/24
d2 IP=172.16.32.32/24

Конфигурация d1: Показать

global_defs {
   notification_email { root@localhost }
   router_id PD
    vrrp_garp_master_refresh 30
    vrrp_garp_master_refresh_repeat 2
}
vrrp_instance TEST {
    state MASTER
!    state BACKUP
    interface <интерфейс>
    virtual_router_id 101
    priority 103
!    priority 102
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass <пароль>
    }
    virtual_ipaddress { 172.16.32.30/24 dev <интерфейс> label <интерфейс>:vrrp }
    notify /opt/notify.sh
}

Конфигурация d2: Показать

global_defs {
   notification_email { root@localhost }
   router_id PD
    vrrp_garp_master_refresh 30
    vrrp_garp_master_refresh_repeat 2
}
vrrp_instance TEST {
!    state MASTER
    state BACKUP
    interface <интерфейс>
    virtual_router_id 101
!    priority 103
    priority 102
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass <пароль>
    }
    virtual_ipaddress { 172.16.32.30/24 dev <интерфейс> label <интерфейс>:vrrp }
    notify /opt/notify.sh
}

Для контроля текущей конфигурации (состояния) демона keepalived используется скрипт /opt/notify.sh: Показать

#!/bin/bash
echo $1 $2 is in $3 state > /var/run/keepalive.$1.$2.state

Ещё полезный скрипт-однострочник:: Показать

conf=/etc/keepalived/keepalived.conf && vip=$(expr "$(cat $conf)" : '.*\bvirtual_ipaddress\s*{\s*\(.*\)/*}') && vip=`expr "$vip" : '\([^ ]*\)' | sed 's/\./\\\\./g'` && if ip addr | grep -q "$vip"; then echo Primary; else echo Secondary; fi

2022   досуг   маленькие хитрости   сеть   сисадминство   софт

Напильник для Эгеи, часть 4

      Четвёртая часть о «доводке напильником» Эгеи.

      Август 2022 года:
Позавчера (02.08.2022) вынужден был переместить сайт (и блог) на домашний сервер. После переезда в тегах блога стали отображаться сообщения об ошибках: Показать

Лёгкий гугляж завёл меня на страницу Александра Токарева Эгея и красные банеры /core.php, line 2, но предлагаемый способ лечения (понизить версию PHP) оказался для меня неприемлемым. Решено было бороться радикальными методами — править код.

В файле system/core.php ищу переменную, вызвавшую сообщение об ошибке (k). Для этого в редакторе mc ищу символ k как слово целиком (whole word). Комментирую второе вхождение работы с этой переменной. После обновления страницы ошибка исчезла.

P. S. Эмпирический список пакетов, необходимых к установке для работы  блога,  RSS-ридера и  облака:
php-mbstring php-mysql php-gd php-curl php-cli libapache2-mod-php php-xml php-zip php-intl

P. P. S. Версия Эгеи — релиз 2.7, версия 3249.

2022   HTML   досуг   маленькие хитрости   сисадминство   софт

Защита опций загрузчика GRUB паролём

Метод заключается в редактировании опций загрузчика GRUB, чтобы установить пароль на их изменение при загрузке системы. Настройка делается в текстовых конфигурационных файлах GRUB, и при физическом доступе к компьютеру с возможностью загрузки с LIVE-дистрибутива можно обойти и эту защиту. При физическом доступе всегда остаётся вариант вынуть жёсткий диск и просмотреть его содержимое в другой ОСи. То есть настоящую защиту данных обеспечивает только их шифрование или шифрование всего диска, защита в виде пароля на загрузку не является надёжной!
Показать

Настройка пароля на загрузку системы и на редактирование опций загрузки

От имени пользователя root генерируется хеш пароля:

sudo grub-mkpasswd-pbkdf2

Будет показана примерно такая строка:

Хэш PBKDF2 вашего пароля: grub.pbkdf2.sha512.10000.6B2B740048C68DCEAD7B288ED37FCC577F1FFDBFE9955A3B9CA5CC47FEF524D07A75E97D17DB4F2E53AF836FBA08DF88CA8EEB7ABF87ABDE0A327A742F8DC745.476B122C205094968098043AF0DF40B4C009AA18F454A8D38E047BA7E50C5DA809F9E3C7FEAA927EF3C0F43CE0EB46072E7303F42559170A09C96DCD37A341D7

Пример показан на рисунке 1:

Рисунок 1. Пример генерации хеша пароля загрузки.

Из выведенных данных скопировать строку «grub.pbkdf2.sha512.10000………….» (полностью) и дописать в файл /etc/grub.d/40_custom:

set superusers="<имя>"
password_pbkdf2 <имя> grub.pbkdf2.sha512.10000.6B2B740048C68DCEAD7...

Поскольку файл /etc/grub.d/40_custom содержит хеш пароля, то рекомендуется запретить его чтение и изменение всеми пользователями, кроме пользователя root:

sudo chmod 711 /etc/grub.d/40_custom

Создание нового конфигурационного файла загрузчика:

sudo grub-mkconfig -o /boot/grub/grub.cfg

После выполнения процесса перезагрузки ПК при попытке выбрать любой пункт меню будет предложено ввести имя пользователя и пароль. При вводе логина <имя> и пароля, используемого в команде grub-mkpasswd-pbkdf2, если учётные данные верны, система продолжит загрузку.

N. B. Логин <имя> в файле /etc/grub.d/40_custom можно указать любой, он никак не связан с именами пользователей в системе, главное — не забыть его в дальнейшем. Кроме того, информацию о ​​пользователе и пароле не обязательно требуется вносить в определённый файл. Информация может быть помещена в любой файл каталога /etc/grub.d, если этот файл включён в grub.cfg. Файл /etc/grub.d/40_custom выбран потому, что он не перезаписывается при обновлении пакета GRUB.

P. S. Для возможности загрузки без пароля какого-либо пункта (или пунктов) меню их необходимо найти в файле /etc/grub.d/10_linux и добавить опцию:

--unrestricted

Пример показан на рисунке 2:

Рисунок 2. Пример добавления опции класса загрузки в файл /etc/grub.d/10_linux.

В результате загрузка системы будет выполняться как и раньше — пароль в загрузчике GRUB вводить не нужно, при выборе пункта меню GRUB продолжится обычная загрузка. Но при попытке отредактировать опции загрузчика будет предложено ввести имя и пароль. Без их ввода доступ к опциям загрузки не будет дан.

P. P. S. Если в меню загрузчика содержатся параметры для других ОСей, отличных от операционной системы по умолчанию (другие установки Linux, Mac OS, Windows и т. д.), в файле /etc/grub.d/30_os-prober вносятся изменения в опции класса загрузки соответствующей ОСи с добавлением строки

--unrestricted

Пример показан на рисунке 3:

Рисунок 3. Пример добавления опции класса загрузки в файл /etc/grub.d/30_os-prober для всех найденных типов операционных систем.

2021   досуг   маленькие хитрости   ОС   сисадминство   софт

Решение проблемы BSOD у VirtualBox вместе с КриптоПРО

В винде VirtualBox при запуске виртуального хоста и  установленном в системе КриптоПРО выпадает в «синий экран смерти». При чём отказаться от использования КриптоПРО я не могу, пришлось запускать VirtualBox’овые виртаулки в фоновом режиме с интерфейсом. Но это не всегда удобно, можно случайно забыться и получить BSOD.

Тема давно обсуждается, решения есть везде, но приведу у себя в блоге, чтобы было под рукой. В реестре нужно добавить исключения для VirtialBox в секции CryptoPRO и (обязательно) перезагрузить компьютер, так как КриптоПРО при загрузке ОСи делает свою инициализацию, которая включает чтение записей в реестре. Ветка реестра такая: Показать

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude]

Добавляемые записи:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxHeadless]
"FileName"="VBoxHeadless.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxNetDHCP]
"FileName"="VBoxNetDHCP.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VirtualBox]
"FileName"="VirtualBox.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxBalloonCtrl]
"FileName"="VBoxBalloonCtrl.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxBugReport]
"FileName"="VBoxBugReport.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxDTrace]
"FileName"="VBoxDTrace.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxExtPackHelperApp]
"FileName"="VBoxExtPackHelperApp.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\vbox-img]
"FileName"="vbox-img.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxManage]
"FileName"="VBoxManage.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxNetNAT]
"FileName"="VBoxNetNAT.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxSDL]
"FileName"="VBoxSDL.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxSDS]
"FileName"="VBoxSDS.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxSVC]
"FileName"="VBoxSVC.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxTestOGL]
"FileName"="VBoxTestOGL.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxWebSrv]
"FileName"="VBoxWebSrv.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VirtualBoxVM]
"FileName"="VirtualBoxVM.exe"

REG-файл,для добавления в реестр вышеуказанных строк: vb-csp.reg.

Отсюда

2021   досуг   маленькие хитрости   сисадминство   софт

Установка GUI на BSD

Часто для моих «изысканий» нужно установить графическую подсистему и рабочую среду на BSD-подобную ОСь. Обычно выбираю окружение Xfce как лёгкое, доступное и универсальное. Минутка рекламы:

Xfce — для тех, кому нужен простой, эффективно работающий рабочий стол, который легко использовать и настраивать!

Установку произвожу так: Показать

На  FreeBSD 11.4:

# pkg update
# pkg install xorg xfce

На  NetBSD 7.1:

# export PKG_PATH=ftp://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/`uname -m`/`uname -r`/All
# pkg_add -v pkgin
# pkgin update
# pkgin install xfce


Задача решена

В конце «причёсываю» систему:

# pkgin install sudo bash mc
# useradd -m -G wheel soul
# passwd soul
# chsh -s `which bash` soul

Для старта иксов запускаю

startx

или прописываю в ~/.xinitrc:

startxfce4

P. S. Заметка из кровавых подвалов 2018 года, решил чуть дополнить и опубликовать из черновиков.

Нужные ссылки:
https://www.freebsd.org/doc/handbook/x11-wm.html
https://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/x11-wm.html

2020   BSD   досуг   маленькие хитрости   ОС   сисадминство   софт

Проверка раздела в образе диска

Часто сталкиваюсь с ситуацией, когда при попытке запуска в  QEMU виртуалки с образа диска (в основном IMG) возникает ошибка Kernel panic — not syncing: Attempted to kill init!: Показать

Пример ошибки:

sd 0:0:0:0: [sda] Attached SCSI disk
smc91x.c: v1.1, sep 22 2004 by Nicolas Pitre <nico@fluxnic.net>
eth0: SMC91C11xFD (rev 1) at d089a000 IRQ 25 [nowait]
eth0: Ethernet addr: 52:54:00:12:34:56
mousedev: PS/2 mouse device common for all mice
TCP cubic registered
NET: Registered protocol family 17
input: AT Raw Set 2 keyboard as /devices/fpga:06/serio0/input/input0
input: ImExPS/2 Generic Explorer Mouse as /devices/fpga:07/serio1/input/input1
EXT2-fs (sda2): error: couldn't mount because of unsupported optional features (244)
EXT4-fs (sda2): couldn't mount as ext3 due to feature incompatibilities
EXT4-fs (sda2): recovery complete
EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null)
VFS: Mounted root (ext4 filesystem) on device 8:2.
devtmpfs: mounted
Freeing init memory: 120K
Kernel panic - not syncing: Attempted to kill init!
[<c0032bec>] (unwind_backtrace+0x0/0xf0) from [<c03064dc>] (panic+0x58/0x170)
[<c03064dc>] (panic+0x58/0x170) from [<c0044054>] (do_exit+0x5d0/0x68c)
[<c0044054>] (do_exit+0x5d0/0x68c) from [<c004435c>] (do_group_exit+0x40/0xb0)
[<c004435c>] (do_group_exit+0x40/0xb0) from [<c004ed48>] (get_signal_to_deliver+0x1a8/0x378)
[<c004ed48>] (get_signal_to_deliver+0x1a8/0x378) from [<c002f124>] (do_signal+0x90/0x518)
[<c002f124>] (do_signal+0x90/0x518) from [<c002fa64>] (do_notify_resume+0x48/0x54)
[<c002fa64>] (do_notify_resume+0x48/0x54) from [<c002cc38>] (work_pending+0x24/0x28)

Вероятно, эта ошибка возникает при отсутствии флага проверки файловой системы (возможно, в корне ФС лежит пустой файл с именем /forcefsck). Борюсь с этим так. Командой fdisk получаю сектор начала ФС (допустим — 217156), умножаю его на размер сектора (обычно 512 байт) и получаю смещение (в данном примере — 111183872 байт). С этим смещением монтирую на спецдевайс /dev/loop0 IMG-файл. Провожу проверку с лечением возможных повреждений ФС, затем убираю монтирование спецдевайса.

sudo fdisk -l <имя образа>.img
sudo losetup -o <смещение * 512> /dev/loop0 <имя образа>.img
sudo fsck -fv /dev/loop0
sudo losetup -d /dev/loop0

Источники:
http://web.archive.org/web/20161224011451/http://blog.3mdeb.com/2015/12/30/emulate-rapberry-pi-2-in-qemu/
https://raspberrypi.stackexchange.com/questions/40854/kernel-panic-not-syncing-vfs-unable-to-mount-root-fs-on-unknown-block179-6

2020   Debian   Linux   досуг   маленькие хитрости   мну   ОС   сисадминство   софт

Исправление ошибки dpkg о не найденном ldconfig

У меня есть старая железка с  DebWrt 2.0 на борту, вот такая:
 D-Link DIR-320/A2E

При выполнении команд apt-get получил предупреждения о том, что ldconfig и start-stop-daemon не найдены по пути поиска или не являются исполняемыми файлами (у меня русская локаль, поэтому системные сообщения выводятся на русском): Показать

# apt-get install debian-keyring
Чтение списков пакетов... Готово
Построение дерева зависимостей
Чтение информации о состоянии... Готово
Следующие пакеты устанавливались автоматически и больше не требуются:
  wwwconfig-common libjs-mootools javascript-common
Для их удаления используйте 'apt-get autoremove'.
НОВЫЕ пакеты, которые будут установлены:
  debian-keyring
обновлено 0, установлено 1 новых пакетов, для удаления отмечено 0 пакетов, и 4 п                                                                                                                                                              акетов не обновлено.
Необходимо скачать 31,1 MБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 35,8 M                                                                                                                                                              B.
ВНИМАНИЕ: Следующие пакеты невозможно аутентифицировать!
  debian-keyring
Установить эти пакеты без проверки [y/N]? y
Получено:1 http://archive.debian.org/debian/ squeeze/main debian-keyring all 201                                                                                                                                                              0.12.29 [31,1 MB]
Получено 31,1 MБ за 41с (745 kБ/c)
dpkg: предупреждение: «ldconfig» отсутствует в каталогах, перечисленных в PATH,                                                                                                                                                               или не является исполняемым.
dpkg: предупреждение: «start-stop-daemon» отсутствует в каталогах, перечисленных                                                                                                                                                               в PATH, или не является исполняемым.
dpkg: предупреждение: «update-rc.d» отсутствует в каталогах, перечисленных в PAT                                                                                                                                                              H, или не является исполняемым.
dpkg: В каталогах, перечисленных в PATH, отсутствуют или не являются
исполняемыми 3 необходимых программы.
NB: В PATH суперпользователя обычно должны присутствовать /usr/local/sbin,
/usr/sbin и /sbin.
E: Sub-process /usr/bin/dpkg returned an error code (2)
#

Для исправления этого, по совету отсюда и отсюда, я добавил в файл /root/.bashrc такую строку:

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin


Задача решена

UPD: Для самых слабых умом, которые (как и я) гуглят ошибку, а не читают системные месседжи до конца: достаточно было бы добавить к переменной PATH просто путь /sbin, так как оба бинарника лежат там. Ну и сообщение в конце вывода какбэ намекает: 

NB: В PATH суперпользователя обычно должны присутствовать /usr/local/sbin,
/usr/sbin и /sbin.

2020   Debian   досуг   интересное   маленькие хитрости   ОС   роутер   сисадминство   софт

Добавление контекстного меню GIMP’а

Поставил GIMP (в  Шindoшs), захотел сделать для файлов изображений контекстное меню «Редактировать в GIMP». Для этого создал  reg-файл с таким содержимым (путь к бинарнику редактора нужно исправить на актуальный):

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\SystemFileAssociations\image\shell\EditWithGIMP]
@="Редактировать в &GIMP"
[HKEY_CLASSES_ROOT\SystemFileAssociations\image\shell\EditWithGIMP\command]
@="\"C:\\Program Files\\GIMP 2\\bin\\gimp-2.10.exe\" \"%1\""

После выполнения reg-файла контекстное меню появляется.

2020   досуг   маленькие хитрости   сисадминство   скрипт

Запуск виндовых команд из консоли posix-систем

Недавно возникла необходимость в том, чтобы рулить виндовым сервером в домене удалённо прямо из консоли Linux-сервера. Гугляж выдал варианты типа xfreerdp, ssh-сервера для Windows, rdesktop’а, psexec’а и winexe. Мне захотелось попробовать прикрутить winexe.

Процесс: Показать

Делал в  Debian 10 ’Buster’. Готового пакета нет, поэтому по мануалу скачал с Sourceforge файл winexe-1.00.tar.gz (в дальнейшем он не пригодился). Понаставил кучу пакетов (сразу скажу, что, возможно, половина тут — лишнее):

sudo aptitude install build-essential autoconf checkinstall python python-all python-dev python-all-dev python-setuptools libdcerpc-dev
sudo aptitude install gcc-mingw-w64 comerr-dev libpopt-dev libbsd-dev zlib1g-dev libc6-dev
sudo aptitude install comerr-dev libpopt-dev libbsd-dev zlib1g-dev libc6-dev python-dev
sudo aptitude install git python2.7 libpango1.0-0 libacl1-dev libldap2-dev libpam-dev libtevent-dev python2.7-dev python3.7 samba-dev libgnutls28-dev libgpgme11-dev libjansson-dev libarchive-dev
sudo aptitude install acl attr bind9utils bison debhelper dnsutils flex gdb krb5-user libaio-dev libblkid-dev libcap-dev libcups2-dev libjson-perl libncurses5-dev libreadline-dev nettle-dev perl-modules python-all-dev python-crypto python-dbg python-dnspython python3-dnspython python-markdown python3-markdown python3-dev xsltproc zlib1g-dev liblmdb-dev lmdb-utils

Выполняю

tar xzvf winexe-1.00.tar.gz
cd winexe-1.00/source4
./autogen.sh
/configure
make basics bin/winexe

На последней команде получаю ошибку:

Creating heimdal/lib/asn1/der-protos.h
syntax error at heimdal/cf/make-proto.pl line 15, near "do Getopts("
Execution of heimdal/cf/make-proto.pl aborted due to compilation errors.
make: *** [data.mk:197: heimdal/lib/asn1/der-protos.h] Ошибка 255

Подхожу у кроблеме с другой стороны. Клонирую гитом самбу и всё делаю в ейных исходниках (для этого и установил кучу пакетов):

cd ~
git clone git://git.samba.org/samba.git ~/samba
cd ~/samba
./configure
make bin/winexe

В ~/samba/bin/default/examples/winexe/ скомпилился бинарник winexe, использую его по назначению:

winexe -U <домен>/<логин>%<пароль> //<windows-хост> "команда"

Очздорова! Показать

P. S. Проблему с кодировкой думаю решить с помощью установки кодовой страницы по умолчанию по этому мануалу и использования перекодировщика luit из пакета x11-utils. У себя попробовал — работает: Показать

Источники:
https://wiki.samba.org/index.php/Package_Dependencies_Required_to_Build_Samba
https://www.aldeid.com/wiki/Winexe
https://ru.stackoverflow.com/questions/339012/Как-подружить-luit-и-cp866
https://superuser.com/questions/269818/change-default-code-page-of-windows-console-to-utf-8
https://superuser.com/questions/387569/how-do-i-permantly-set-the-command-prompt-codepage-in-windows-7

2020   Linux   маленькие хитрости   работа   сисадминство   софт

Загадочные BogoMIPS’ы

Давно хотел сделать статейку о том, что такое BogoMIPS’ы. Наконец руки дошли и до этого

Когда-то в юнлсти я обратил внимание на то, что при начальной загрузке ядра Linux выдаётся сообщение примерно такого вида:

Calibrating delay loop… 1699 BogoMIPS

Оказывается, в ядре Линукс — это способ измерения оценки скорости исполнения процессорных инструкций на компьютере, он предназначен для калибровки внутренних циклов ядра.

Теория: Показать

BogoMIPS’ы можно определить как «число миллионов раз в секунду, когда процессор может ничего не делать» («the number of million times per second a processor can do absolutely nothing»).

Это собственное изобретение Линуса. В версии ядра 0.99.11 от 11 июля 1993 года была нужда в цикле синхронизации для калибровки скорости процессора компа. Поэтому во время загрузки ядро ​​измеряет, насколько быстро на компьютере выполняется определенный цикл. Приставка «Bogo» происходит от слова «bogus» (англ. «фальшивка», «подделка»). Поэтому значение BogoMIPS’ов даёт некоторое представление о скорости процессора, но при этом это значение очень ненаучно. Вывод этого значения был немного полезен для отладки и проверки работоспособности кэшей компьютеров и работы кнопки «Турбо» (когда она ещё была на системниках).

BogoMIPS’ы определены в /usr/src/linux/init/main.c, где описан простой алгоритм на C, с хорошим примером арифметики с плавающей запятой в полностью целочисленном ядре, соответствующая переменная ядра loops_per_sec используется в нескольких драйверах для более серьёзной работы. Фактически функция задержки udelay() написана на ассемблере, поэтому каждый порт на другую архитектуру имеет собственное определение в /include/asm/delay.h. При этом, переменная loops_per_sec и функция udelay() используются во многих драйверах, посмотреть это можно так:

cd /usr/src/linux
find . -name '*.[hcS]' -exec fgrep loops_per_sec {} /dev/null \;
find . -name '*.[hcS]' -exec fgrep udelay {} /dev/null \;

Цикл расчёта BogoMIPS’ов для процессоров с не Intel-архитектурой похож, но не всегда, так как он пишется на другой реализации языкя ассемблера.

Методов определения богомипсов три:

  1. (самый предпочтительный) просмотр в /proc/cpuinfo (например так:
cat /proc/cpuinfo | grep -i bogomips

  1. просмотр вывода системного журнала для контроля, что было напечатано во время загрузки (с помощью dmesg или syslogk). Иногда информация всё ещё может находиться на загрузочной консоли.
  2. (рекомендуется только для не Linux-систем) используя отдельную программу bogomips..

Теперь практика. Действующие, гм..., лица и устройства: Показать

Тип Сетевое имя Бренд, Модель
/Аппаратная ревизия
ОС
(прошивка)
Процессор ОЗУ
Компьютер soulhome  Debian 10 Intel Celeron G1610@2.6ГГц 16Гб
VPS-сервер gor QEMU/KVM  Debian 9 Intel Celeron@2.1ГГц 1Гб
Нетбук asus4g Asus Eee PC 4G (701)  Debian 9 Intel Celeron M ULV 353@900МГц,
работает на частоте 630МГц
2Гб
Маршрутизатор hive D-Link DIR-320/A2E  DebWRT Broadcom BCM3302 v2.9@240МГц 32Мб
IPTV STB-приставка x96mini DQiDianZ X96 mini  armbian 5.67 Amlogic S905W, 4xARM Cortex-A53@1,5ГГц 2Гб
Маршрутизатор linksys Linksys WRT300N/1.1  DD-WRT v24-sp2 mega v1.51.2 Broadcom BCM4705L@300МГц 32Мб
Маршрутизатор midge Edimax BR-6104KP/1.3.r510  flyrouter3-office_usb ADMtek 5120P@170МГц 16Мб
Маршрутизатор tplink TP-Link TL-WR841ND/8.1  OpenWRT Attitude Adjustment 12.09, r36088 Atheros AR9341@535МГц 32Мб
IPTV STB-приставка mag250 TeleTec MAG-250 Micro  0.2.18-r22-250 STMicroelectronics STi7105@450МГц 256Мб
Смартфон k3note Lenovo K3 Note  Android 5.1 MediaTek MT6752, 8xARM Cortex-A53@1,7ГГц 2Гб
Маршрутизатор gw D-Link DIR-300/A/C1E  2.5.7 Realtek RTL8196C@390МГц 32Мб

На всех (почти) подконтрольных мне домашних железках с ОСью/прошивкой на ядре Linux настроил авторизацию по ключу по протоколу SSH. Кое-где из-за старости и ущербности и отстуствия сорременных алгоритмов обмена ключей прищлось в /~.ssh/config прописать

Host <узел>
    KexAlgorithms +diffie-hellman-group1-sha1

чтобы не писать в командной строке конструкцию вида:

ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 <узел> 'cat /proc/cpuinfo | grep -i bogomips && cat /proc/version'

На железках, в которых dropbear кроме motd выдавал ещё и login banner — пришлось пойти на крайние меры путём убийства процесса dropbear и старта его без указания файла с банером, т. е. вместо процесса

dropbear -b /tmp/loginprompt -r /tmp/root/.ssh/ssh_host_rsa_key -d /tmp/root/.ssh/ssh_host_dss_key -p 22

делаю

killall dropbear

и стартую процесс

dropbear -r /tmp/root/.ssh/ssh_host_rsa_key -d /tmp/root/.ssh/ssh_host_dss_key -p 22

Авторизацию по ключу сделал так:

cat ~/.ssh/id_rsa.pub | ssh <узел> 'cat >> .ssh/authorized_keys'

Затем на всех узлах выполнял код

ssh <узел> 'cat /proc/cpuinfo | grep -i bogomips && cat /proc/version'

Полученный результат я свёл на скрин с инфой (1920x1080): Показать

Текстовая расшифровка изображения (вдруг кому пригодится): Показать

soul@soulhome:~$ cat /proc/cpuinfo | grep -i bogomips && cat /proc/version
bogomips        : 5188.12
bogomips        : 5188.12
Linux version 4.9.0-9-amd64 (debian-kernel@lists.debian.org) (gcc version 6.3.0 20170516 (Debian 6.3.0-18+deb9u1) ) #1 SMP Debian 4.9.168-1+deb9u5 (2019-08-11)
soul@soulhome:~$ ssh gor 'cat /proc/cpuinfo | grep -i bogomips && cat /proc/version'
bogomips        : 4199.99
Linux version 4.9.0-9-amd64 (debian-kernel@lists.debian.org) (gcc version 6.3.0 20170516 (Debian 6.3.0-18+deb9u1) ) #1 SMP Debian 4.9.168-1+deb9u2 (2019-05-13)
soul@soulhome:~$ ssh asus4g 'cat /proc/cpuinfo | grep -i bogomips && cat /proc/version'
bogomips        : 1260.10
Linux version 4.9.0-6-686-pae (debian-kernel@lists.debian.org) (gcc version 6.3.0 20170516 (Debian 6.3.0-18+deb9u1) ) #1 SMP Debian 4.9.88-1+deb9u1 (2018-05-07)
soul@soulhome:~$ ssh hive 'cat /proc/cpuinfo | grep -i bogomips && cat /proc/version'
BogoMIPS                : 239.10
Linux version 2.6.34.5 (amain@amain-laptop) (gcc version 4.3.3 (GCC) ) #1 Sun Sep 26 18:20:27 CEST 2010
soul@soulhome:~$ ssh x96mini 'cat /proc/cpuinfo | grep -i bogomips && cat /proc/version'
BogoMIPS        : 48.00
BogoMIPS        : 48.00
BogoMIPS        : 48.00
BogoMIPS        : 48.00
Linux version 5.1.0-rc5-next-20190416-aml-s905-gde3c659c8-dirty (root@vbox) (gcc version 7.4.1 20181213 [linaro-7.4-2019.02 revision 56ec6f6b99cc167ff0c2f8e1a2eed33b1edc85d4] (Linaro GCC 7.4-2019.02)) #5.78 SMP PREEMPT Tue Apr 16 13:56:07 MSK 2019
soul@soulhome:~$ ssh linksys 'cat /proc/cpuinfo | grep -i bogomips && cat /proc/version'
BogoMIPS                : 299.82
Linux version 2.4.36 (root@dd-wrt) (gcc version 3.4.6 (OpenWrt-2.0)) #2827 Thu Jun 19 08:30:07 CEST 2008
soul@soulhome:~$ ssh midge 'cat /proc/cpuinfo | grep -i bogomips && cat /proc/version'
BogoMIPS                : 174.48
Linux version 2.4.32 (builder@work) (gcc version 3.4.5 (ZFT Lab. and FlyRouter Team)) #2 Вто Мар 24 21:44:31 EET 2009
soul@soulhome:~$ ssh tplink 'cat /proc/cpuinfo | grep -i bogomips && cat /proc/version'
BogoMIPS                : 266.64
Linux version 3.3.8 (blogic@Debian-60-squeeze-64-minimal) (gcc version 4.6.3 20120201 (prerelease) (Linaro GCC 4.6-2012.02) ) #1 Sat Mar 23 16:49:30 UTC 2013
soul@soulhome:~$ ssh k3note 'cat /proc/cpuinfo | grep -i bogomips && cat /proc/version'
BogoMIPS        : 26.00
BogoMIPS        : 26.00
BogoMIPS        : 26.00
Linux version 3.10.65+ (buildslave@shws40) (gcc version 4.9 20140514 (mtk-20150408) (GCC) ) #1 SMP PREEMPT Wed Oct 28 14:17:24 CST 2015
soul@soulhome:~$ ssh mag250 'cat /proc/cpuinfo | grep -i bogomips && cat /proc/version'
bogomips        : 444.41
Linux version 2.6.32.59_stm24_0211-MAG250_7105 (dmgrib@Server01.localdomain) (gcc version 4.6.3 20120313 (STMicroelectronics/Linux Base 4.6.3-106) (GCC) ) #41 PREEMPT Thu Jun 8 13:01:38 EEST 2017
soul@soulhome:~$ telnet -E dlink 
Trying 10.9.1.1...
Connected to dlink.
Escape character is 'off'.
                                                                                                                                                                                             
Dlink-Router login: soul                                                                                                                                                                     
Password:                                                                                                                                                                                    
Welcome to                                                                                                                                                                                   
     _______          ___     __  ____   _  _   ___                                                                                                                                          
    |  ___  \        |   |   |__||    \ | || | /  /                                                                                                                                          
    | |   | ||  ___  |   |__  __ |     \| || |/  /                                                                                                                                           
    | |___| || |___| |      ||  || |\     ||     \                                                                                                                                           
    |_______/        |______||__||_| \____||_|\___\                                                                                                                                          
                                                                                                                                                                                                                  
                     = Building Networks for People =                                                                                                                                                             
                                                                                                                                                                                                                  
                                                                                                                                                                                                                                             
                                                                                                                                                                                                                                             
BusyBox v1.19.2 (2016-10-19 16:25:25 MSK) built-in shell (ash)                                                                                                                                                                               
Enter 'help' for a list of built-in commands.                                                                                                                                                                                                
                                                                                                                                                                                                                                             
soul@dlink:$ cat /proc/cpuinfo | grep -i bogomips                                                                                                                                                                                            
BogoMIPS                : 389.12                                                                                                                                                                                                             
soul@dlink:$ cat /proc/version 
Linux version 2.6.30.9 (builder@rd) (gcc version 4.4.5-1.5.5p2 (GCC) ) #1 Wed Oct 19 16:21:12 MSK 2016
soul@dlink:$ exit
Connection closed by foreign host.
soul@soulhome:~$

Источники:
http://tldp.org/HOWTO/BogoMips/index.html
http://www.clifton.nl/bogo-faq.html
https://ru.wikipedia.org/wiki/BogoMIPS

2019   Linux   досуг   железо   интересное   маленькие хитрости   ОС   сисадминство
Ранее Ctrl + ↓
Наверх