LINUX.ORG.RU

Сообщения Set440

 

Trim / Over Provisioning: Всё, что мне известно про SSD в Linux

Все вы, наверное, слышали про то, что для долгой службы SSD на нём следует держать 10%-20% свободного места; и почти все слышали, что самый эффективный метод — держать на SSD неразмеченное пространство. — Данный метод называется «Over Provisioning» (что-то вроде «Сверх Обеспечение»). Но Овер-Провиз. одним только оставлением свободного пространства — чаще всего не заведётся, так как для этого требуется Discard ячеек. Я очень подробно распишу всё ниже.

Сейчас лишь добавлю, что и про Trim напишу.

Критическое замечание про SSD

Если у вас примонтирован виндовый SSD через NTFS-3G, то fstrim.timer будет вешать в ОС всю дисковую подсистему на 10-15 минут в состояние паузы/ожидания. Ни за что не жмите кнопку «RESET» — смотрите на индикатор работы дисков на вашем системнике, и просто подождите, пока ОС «отлипнет».

Over Provisioning

Что очень интересно, что двумя кликами включить Овер-Провиз. можно только под виндой и для винды, с помощью фирменных приложений вендоров. Но этот софт не работает для линуксовых SSD.

Линуксовые-же мануалы, предлагают зачастую использовать blkdiscard с байтовыми диапазонами (позиция начала неразмеченного пространства и длина). — НИКОГДА НЕ ДЕЛАЙТЕ НИЧЕГО ПО ЭТИМ МАНАМ, т.к. вы можете запороть последнюю запись GUID Partition Table и/или хвост Swap (или другого последнего своего раздела).

Я придумал более простой, универсальный, надёжный и безопасный метод. Всё очень просто: создаём с помощью GParted раздел БЕЗ ФС во всей неразмеченной области (Нам не нужны там иноды, экстенты, журналы, FAT или MFT). СОХРАНЯЕМ. Теперь натравливаем на этот раздел sudo blkdiscard /dev/sdXY … таким образом, ячейки находящиеся в пределах раздела обнулились и об этом был оповещён контроллер, — МЫ ПОДАРИЛИ МНОГО СВОБОДНОГО МЕСТА КОНТРОЛЛЕРУ, ДЛЯ РОТАЦИИ.

Чем хорош этот метод??? — ОН ВЕНДОРО-НЕЗАВИСИМ, идеально работает в линукс, нет шанса напортачить.

Trim

Вы всё знаете про fstrim.timer, который выполняется раз в неделю. Но не факт, что вы знаете про Swap-Trim…

Swap-Trim

Свопу в /etc/fstab нужно вписать одну из этих опций:

  1. discard=once — Срабатывает однажды при загрузке. Нет оверхэда записи свопа. Не подходит для машин с большим ап-таймом.
  2. discard=pages — Обрабатывает на лету. Подходит для машин с большим аптаймом, но вызывает оверхэд на свопе.
  3. discard — (без опции) объединяет в себе эти 2 режима. Я выбрал это, потому что я шланг.

Зачем это нужно в Свопе??!! — Всё дело в том, что если нет дискарда для свопа, то мусолятся одни и те-же ячейки без ротации, пока в них не протрётся дыра. Согласитесь, если в свопе протереть дырку — стабильность системы упадёт.

ИТОГ

Вот вы и узнали достаточно про эксплуатацию SSD в Linux. Даже при самых пессимистичных прогнозах, — диск в теории прослужит не меньше 15 лет.

Надеюсь, мои мысли вам помогли. Have Fun!!!

ЗЫ: ДОМОРОЩЕННЫЙ КОМПЬЮТЕРНЫЙ КЛУБ!

 ,

Set440
()

Восстанавливаем индексацию KDE Baloo для каталогов на внешних носителях

KDE Baloo не индексирует файлы, которые расположены на других файловых системах за пределами домашнего каталога, в частности, если каталоги Загрузки, Видео и Музыка находятся на внешнем жёстком диске, а из домашнего каталога на них указывают символические ссылки (симлинки). Предлагаемое решение состоит в том, чтобы заменить символические ссылки на Mount-mapping. Баш-портянка, приведённая ниже, автоматизирует этот процесс.

( читать дальше... )

 , , , ,

Set440
()

Systemd-Ukify: Миграция системы на Secure Boot

Secure Boot на линуксе нужен для того, чтобы Windows в дуалбуте была в безопасности, и проходила все тесты на безопасность в Защитнике Windows.
Руководство ориентировано на дистрибутивы из семейства Arch Linux.

( читать дальше... )

 , , , ,

Set440
()

Создание скринсейвера на базе mpv и swayidle

Это мини-руководство показывает, как создавать скринсейверы для систем на базе Wayland с фрагментами видео. Swayidle — это служба управления простоями (idle management daemon), совместимая с любыми Wayland-композиторами, поддерживающими протокол ext-idle-notify.

Для начала можно с помощью yt-dlp скачать с ютуба видео какого-нибудь коммерческого скринсейвера, типа Dream Aquarium. В моём примере видео будет начинаться со случайной позиции, в полноэкранном режиме, зациклено и будет выключаться по нажатию пробела.
Приступим.

pacman -S swayidle mpv


/home/seth/.s44-programs/Dream Aquarium/aqua-start.sh

#!/usr/bin/env bash

cd "$(dirname "$0")" # Определяем директорию скрипта, как текущую рабочую

# запускаем MPV на весь экран, зациклено, со случайной позиции видео
mpv --osc=no --start=$(shuf -n1 -i0-7200) --fs --loop-file "$HOME/Видео/DreamAquarium.webm" &
echo $! >./aquarium.pid # Записываем PID запущенного экземпляра MPV

--start=$(shuf -n1 -i0-7200) — это функция получения случайной позиции видео. Вместо 7200 впишите длительность своего видео в секундах.


/home/seth/.s44-programs/Dream Aquarium/aqua-kill.sh
#!/usr/bin/env bash

cd "$(dirname "$0")" # Смена каталога по месту нахождения скрипта

kill -15 $(cat ./aquarium.pid) # Завершаем MPV

Далее нужно создать ярлычок SwayIdle в автозагрузке:
swayidle timeout 300 ./aqua-start.sh resume ./aqua-kill.sh

Укажите в качестве рабочей директории программы путь к папке со скриптами!

Не забудьте дать права на выполнение:

chmod +x aqua-start.sh
chmod +x aqua-kill.sh

=======================
Поздравляю! Вы самостоятельно сделали скринсейвер! Молодцы!

 , , swayidle,

Set440
()

Как запустить XboxDrv в режиме демона

Как вы знаете, XboxDrv не работает в режиме демона. Он запускается, но геймпад не пробрасывает: либо не подключает устройство по evdev, либо не регистрирует геймпад в виде иксбоксового контроллера.

Выход один: Запустить его демоном без флага --daemon.

Но тут возникает проблема: при попытке запуска демона в обычном режиме xboxdrv — он падает из-за того, что занимает консоль интерактивным выводом.

РЕШЕНИЕ ЕСТЬ!!! Нужно использовать команду bash -c и вписать вначале nohup и в конце &.

# Systemd unit to enable xboxdrv driver for Xbox 360 controller
# Usage:
# save to /lib/systemd/system/xboxdrv-s44.service
# to start: sudo service xboxdrv-s44 start
# to enable on boot: sudo systemctl enable xboxdrv-s44

[Unit]
Description=Xbox controller driver daemon-S44

[Service]
Type=forking
User=root
ExecStart=/usr/bin/bash -c "nohup xboxdrv --evdev /dev/input/by-id/usb-DragonRise_Inc._Generic_USB_Joystick-event-joystick --axismap -Y1=Y1,-Y2=Y2 --evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_RX=x2,ABS_RZ=y2 --evdev-absmap ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y --evdev-keymap BTN_BASE5=tl,BTN_BASE6=tr --evdev-keymap BTN_TOP2=lb,BTN_PINKIE=rb,BTN_BASE=lt,BTN_BASE2=rt --evdev-keymap BTN_BASE4=start,BTN_BASE3=back --evdev-keymap BTN_THUMB2=a,BTN_THUMB=b,BTN_TOP=x,BTN_TRIGGER=y --mimic-xpad --silent &"

[Install]
WantedBy=multi-user.target

Теперь у вас xboxdrv работает в режиме демона, поздравляю!

 , ,

Set440
()

Исправление кракозябров в региональной локали (en_DE, ru_UA...)

Я с одного немецкого форума украл гениальное решение кракозябров для региональных кодировок типа en_DE и ru_UA (многие репаки и старые игры типа NWN2 и VTMB сыпят кракозябрами, если вы используете эти региональные кодировки).

Рассматривать буду своё решение для кодировки ru_UA.

Первым делом, нужно сгенерировать локаль ru_RU

/etc/locale.gen
ru_RU.UTF-8 UTF-8
# locale-gen

Далее САМОЕ ИНТЕРЕСНОЕ: export LANG=ru_RU.UTF-8 даёт лишь временный эффект, вписывание LANG в locale.conf не даёт ощутимых результатов. И тут я прочитал интересное решение.

Берём делаем:

$ export LANG=ru_RU.UTF-8
$ locale

Получается вот такой вывод:

LANG=ru_RU.UTF-8
LC_CTYPE=ru_RU.UTF-8
LC_NUMERIC=ru_UA.UTF-8
LC_TIME=ru_UA.UTF-8
LC_COLLATE=ru_RU.UTF-8
LC_MONETARY=ru_UA.UTF-8
LC_MESSAGES=ru_RU.UTF-8
LC_PAPER=ru_UA.UTF-8
LC_NAME=ru_UA.UTF-8
LC_ADDRESS=ru_UA.UTF-8
LC_TELEPHONE=ru_UA.UTF-8
LC_MEASUREMENT=ru_UA.UTF-8
LC_IDENTIFICATION=ru_UA.UTF-8
LC_ALL=

Что здесь примечательно:

  • в сгенерированный выхлоп добавились значения сразу нескольких полей;
  • сгенерированы дополнительные поля, которые отсутствовали в locale.conf;
  • кодировка всех сообщений принудительно задана как ru_RU, в то время как региональные стандарты ru_UA не пострадали.

Теперь САМОЕ ВАЖНОЕ: Заменяем содержимое /etc/locale.conf на этот сгенерированный выхлоп программы locale.

Перезагружаемся.

Кому это может быть полезно?

  • это хороший воркэраунд для русских кодировок республик бывшего СССР;
  • может быть полезно для английских кодировок стран Европы и Америки.

Примечание: Ваше DE может затирать LANG=, потому по этому вопросу нужно разбираться с конкретным DE. Например, для KDE нужно сделать env-скрипт с экспортом LANG.

Теперь в инсталляторах репаков и старых играх типа NWN2 и VTMB все надписи на русском.

Приятной игры!

 ,

Set440
()

Включение поддержки джойстика DragonRise Inc. Generic USB

Джойстик DragonRise Inc. — хороший китайский геймпад, похожий на старый джой плэйстейшена. Поддерживает только режимы Dendy и DInput, потому чтобы играть с XInput, используйте xboxdrv с такими опциями:

xboxdrv --evdev /dev/input/by-id/usb-DragonRise_Inc._Generic_USB_Joystick-event-joystick --axismap -Y1=Y1,-Y2=Y2 --evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_RX=x2,ABS_RZ=y2 --evdev-absmap ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y --evdev-keymap BTN_BASE5=tl,BTN_BASE6=tr --evdev-keymap BTN_TOP2=lb,BTN_PINKIE=rb,BTN_BASE=lt,BTN_BASE2=rt --evdev-keymap BTN_BASE4=start,BTN_BASE3=back --evdev-keymap BTN_THUMB2=a,BTN_THUMB=b,BTN_TOP=x,BTN_TRIGGER=y --mimic-xpad --silent

У меня так работает под вайном Ведьмак 3 из GOG'а.

Создайте такой ярлычок в своём DE или запустите эту команду. Внимание, xboxdrv конфликтует со Steam! Поэтому, когда играете в вайне — стим закрывайте.

Не забудьте, что если у вас подключено несколько таких джоев, то by-id может быть другой. Посмотрите имя своего джоя в /dev/input/by-id/.

 , ,

Set440
()

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