ThinkPad battery management in linux

После нескольких лет раздумий идея купить новую батарейку в ноутбук перестала казаться очень плохой и покупка состоялась.

Покупка новой батарейки за 50 евро омрачалась воспоминаниями о том как весело умирала старая батарейка с постоянной бесконечной зарядкой 99%-100%. Смерть весёлая, но бессмысленная.

В этих ваших виндоусах леново поставляет фирменную программу которая контролирует заряд батарейки, а в линуксе что делать? А в линуксе добрые и умные люди написали скрипт tpacpi-bat который можно установить через системный менеджер пакетов и добавить в автозагрузку.

Если ваш ноутбук постоянно подключен к адаптеру, то батарейка не начнет заряжаться пока заряд не упадёт ниже 30% и не будет заряжаться больше чем на 85%. В теории это должно продлить жизнь батарейки.

А если вдруг надо начать заряжать батарейку польностью, то можно менять профили зарядки примерно так:

# /etc/init.d/tpacpi-bat low
# /etc/init.d/tpacpi-bat high

Или отредактировать /etc/conf.d/tpacpi-bat и перезапустить сервис. Или прямо из косноли настроить, кто же вам запретит прямо из консоли настраивать то?

#tp #linux

2020.02.03 22:40

alsa + pulseaudio

Кстати, прошлое решение проблемы нескольких источников звука в сабже отгнило.

Теперь нужно добавить в ~/.asoundrc следущее:

% cat ~/.asoundrc

pcm.pulse {
    type pulse
}
ctl.pulse {
    type pulse
}
pcm.!default {
    type pulse
}
ctl.!default {
    type pulse
}

Пользуясь случаем хочу послать лучи благодарности генте которая оберегает меня от systemd. Не знаю сколько ещё получится держаться, но если не gentoo то только funtoo.

#linux #alsa

2019.10.02 02:45

recover linux from grub

Новая порция новостей про обновление мира! Ура! Дождались! Я знаю что вы переживали получится ли у меня написать ещё один пост на эту тему или конец, мир разрушен?!

Но нет, мир был на грани, но спасён. Не сразу, но спасён! Так получилось что это уже не первое обновление мира на моём локалхосте поэтому вспоминая весёлый опыт предудущих обновлений иксы были исключены из загрузки, а то знаете как это бывает: компьютер загрузился, а клавиатура не работает. Грустновато.

# rc-update del xdm default

Но удар в спину пришёл от mysql. После смены профиля и переноса библиотек в другие места mysql блокировал загрузку и даже не умирал по ttl. Как вы понимаете загрузочной дискеты нет, а интерактивный режим в openrc не работает.

Интересный факт: оказывается, если у вас есть андроид, otg кабель и usb flash — есть некоторый шанс что у вас получится сделать загрузочную флешку прямо из андроида! Восхитительно!

А мне пришлось через груб грузится прямо в консоль и включать интерактивный режим. В этом раз мне повезло и у меня был доступ к интернету, но на будущее я сохраню этот в файл в корне. На всякий случай.

# loading grub
# press `c` to open internal console
# read content of this file:
ls (hd0,1)/
cat (hd0,1)/recover_how_to

# return to entries list in grub and press `e`
# append to `linux` line `init=/bash/sh`
- linux /boot/grub_vmlinuz_new root=/dev/sda1 acpi_backlight=video
+ linux /boot/grub_vmlinuz_new root=/dev/sda1 acpi_backlight=video init=/bin/sh

# boot to shell and remount root
mount -o remount,rw /dev/sda1 /
mount -t proc none /proc

# do your recovery magic

#linux #recovery #update_world

2019.09.08 20:50

gentoo@localhost # emerge @world || fix blocks

И снова здравствуйте! Не прошло и трёх лет (а нет, прошло) как мне очень захотелось обновить всё что катится, а всё что не катится покатить и тоже обновить. Пришло время моей gentoo сделать очередной rolling realise, знаете ли.

Вот уже третьи сутки пойдут скооро, а к заветному сабжу ещё даже не удалось подступиться, всё всякие зависимости и их блокировки, знаете ли rolling release всё же!


В интернетах получилось найти удивительную комбинацию неадекватного безумия и бесконечной гениальности:

emerge -1av $(equery depends <package-name> | sed 's/-[0-9]\{1,\}.*$//')

Допустим случилось невероятное и у вас возник блок пакета, типа emerge в общем-то и не против поставить уже новую версию пакета, но старая версия очень уж нужна другим пакетам:

!!! Multiple package instances within a single package slot have been pulled
!!! into the dependency graph, resulting in a slot conflict:

sys-libs/readline:0

  (sys-libs/readline-8.0_p1:0/8::gentoo, installed) pulled in by
    >=sys-libs/readline-8.0:0= required by (app-shells/bash-5.0_p11:0/0::gentoo, ebuild scheduled for merge)
    ^^                  ^^^^^^                                                                                                                                                        
    sys-libs/readline:0/8= required by (app-text/hunspell-1.7.0-r1:0/1.7::gentoo, installed)
                     ^^^^^                                                                                                      
    (and 10 more with the same problems)

  (sys-libs/readline-7.0_p5:0/7::gentoo, ebuild scheduled for merge) pulled in by
    sys-libs/readline:0/7=[abi_x86_32(-),abi_x86_64(-)] required by (dev-db/sqlite-3.29.0:3/3::gentoo, installed)
                     ^^^^^                                                                                                                           
    (and 12 more with the same problem)

Вариантов решения такой проблемы как бы три:

1) Удалить пакет и забыть, а emerge там как-нибудь сам что-нибудь сделает, но такое можно сделать сильно невсегда

2) Форсировать обновление одного пакета игнорируя зависимости, но тоже такое:

emerge -1av --nodeps sys-libs/readline:0

3) Обновить вручную все те пакеты что требуют старую версию пакета. Вот именно тут приходит на пользу строка упомянутая выше. Она, конечно, не обновляет все пакеты которые требуют старую версию, зато она просто обновляет все пакеты которым нужен указанный пакет. ВО-С-ХИ-ТИ-ТЕ-ЛЬ-НО:

emerge -1av $(equery depends sys-libs/readline:0 | sed 's/-[0-9]\{1,\}.*$//')

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

- sys-libs/binutils-libs-2.32::gentoo (masked by: package.mask)
# If you still use one of these old toolchain packages, please upgrade (and
# switch the compiler / the binutils) ASAP. If you need them for a specific
# (isolated) use case, feel free to unmask them on your system.

Но на что же нам предлагают его обновить то?

[ebuild     U  ] sys-libs/binutils-libs-2.32-r1:0/2.32::gentoo [2.32:0/2.32::gentoo] USE="nls -64-bit-bfd -multitarget -static-libs" ABI_X86="32 (64) (-x32)" 20,431 KiB

Ага, то есть 2.32 плохо, а вот 2.32-r1 — это прям вот то что нужно, на острие!

Причём сам пакет замаскирован:

If you still use one of these old toolchain packages, please upgrade (and switch the compiler / the binutils) ASAP.

Affected packages: <sys -devel/gcc-5.4>, <sys-libs/glibc-2.28>, <sys-devel/binutils-2.32-r1>, <sys-devel/binutils-hppa64-2.32-r1>, <sys-libs/binutils-libs-2.32-r1>

Удивительный @world!

#linux #update_world

2019.09.06 03:30

Linux и клавиатурная раскладка

Linux вообще сложно любить потому что он или очень странно почти работает, или приходится красноглазить. Чаще проще игнорировать проблему чем её решать, но иногда в линуксе очень просто решить проблему которую вообще непонятно как решать в других местах.

Совсем недавно был пост про hardware linux way где у меня переодически отгнивали кнопки на клавиатуре и у меня успешно получалось игнорировать эту проблему. Но, внезапно, кнопки внезапно отгнили и перестали работать и пришлось купить новую клавиатуру на ебае. Есстественно, нормальные люди смотрят не только на цену, но и на раскладку, но некоторые люди (я) идиоты и не смотрят на раскладку.

А раскладка оказалась конченная сказочная и вместо длинного левого шифта у меня короткий левый шифт и волшебная кнопка чтобы печатать символы <, >. Это очень неудобно потому что у меня уже есть скобочки на клавиатуре, а рука просто не может нажимать на этот огрызок шифта — я недостаточно осьминог.

Как же решить эту проблему? Как же адоптироваться к новым условия? Что же делать?.. Но ведь это же, простите Боги, линукс! Почему бы просто не сказать этой кнопке вести себя как левый шифт? Ну, будет у меня два коротки левых шифта вместо одного длинного так и это даже хорошо: один шифт сломается — второй запасной будет.

Запускаем xev и находим код этой клавиши. Потом проверяем все ли работает как надо:

$ xmodmap -e 'keycode 94 = Shift_L'

И если всё хорошо и эта кнопка начала работать как левый шифт (!!!!!!!) то добавляем это в ~/.Xmodmap:

$ echo 'keycode 94 = Shift_L' >> ~/.Xmodmap

Можно бесконечно ненавидеть линукс, но разве чем-то ещё можно пользоваться?

#linux #xmodmap #tp

2019.07.16 16:20

alsa + pulseaudio

Если вы в 2к19 являетесь счастливым обладателем связки alsa + pulseadio (с разморозкой), то у вас может быть проблема источниками звука если их больше одного. Но это легко и просто решается добавлением в файл /etc/pulse/default.pa:

load-module module-alsa-sink device=dmix
load-module module-alsa-source device=dsnoop

#linux #alsa

2019.06.04 14:05

# emerge @world

# emerge --update --newuse --deep --with-bdeps=y --keep-going=y --autounmask-write -av @world

Total: 788 packages (641 upgrades, 5 downgrades, 86 new, 12 in new slots, 44 reinstalls, 2 uninstalls), Size of downloads: 3,031,872 KiB
Fetch Restriction: 2 packages (2 unsatisfied)
Conflict: 6 blocks

#linux #update_world

2019.03.28 16:14

Hardware linux way

Нет никакой уверенности в том что линукс может научить хоть чему-нибудь хорошему, но выражение “если что-нибудь не работает то тебе это просто не нужно” проникает прямо в душу.

Дальше идёт детективная история основанная на догадках и не стоит мне верить.

Иногда у меня получается догонять температуру CPU до 100 градусов. Да и термопаста моя меня что-то не радует и её чуть ни раз в год надо менять. Судя по всему от этого с клавитурой ноутбука что-то случилось приблизительно в том же месте где находятся буквы e и r.

Что удивительно эти буквы плохо работают только когда ноутбук холодный. Стоит ему пару минут погреться и всё начинает работать.

Проблема в том что обе эти буквы у меня в пароле для логина.

Истинный путь линукса — надо просто сменить пароль и проблема решена.

#linux #tlen

2018.09.28 21:15