Учебники (How-To & F.A.Q)

Устранение дребезга клавиш мыши [РЕШЕНО]

Во время командировки, вдали от цивилизации, «внезапно» возникла проблема, лучшим решением которой является покупка новой мыши. Однако, «вдали от цивилизации» это сделать невозможно, потому стал искать программное решение, тем более такая проблема решалась мной на венде года три назад установкой какой-то утилитки. Особенно выбешивало когда щелкаешь правой кнопкой на значке в трее, чтобы посмотреть свойства или контекстное меню, а «оно» само сразу жмет на «выйти»)) и приходится запускать прогу по новой.
Непродолжительное гугление навело на
aur.archlinux.org/packages/xf86-input-evdev-debounce/
там же, чуть ниже на чистом английском совет по сборке:
в PKGBUILD зависимости resourceproto и scrnsaverproto makedepends заменить на xorgproto, тогда соберется.
А именно привести строку сборочника к виду makedepends=('git' 'xorg-server-devel' 'xorgproto')
Перегрузиться и профит.
зы. настройки в /etc/X11/xorg.conf.d/11-evdev-mouse-debounce.conf
Option «DebounceDelay» «50»
Учебники (How-To & F.A.Q)

МУЛЬТИ-УСТАНОВКА дистрибутивов Linux НА ОДИН РАЗДЕЛ в SUBVOLUME-BTRFS на примере Дистрибутива MANJARO

Статья детально описывает процесс установки со всеми пояснениями. Автор рассчитывает достучаться до начинающих пользователей тоже, поэтому, просьба сильно не критиковать подход :)


МУЛЬТИ-УСТАНОВКА дистрибутивов Linux НА ОДИН РАЗДЕЛ в SUBVOLUME-BTRFS на примере Дистрибутива MANJARO с мульти-загрузкой двух или даже многоуровнего GRUB загрузчика для каждого дистрибутива. Все мы привыкли к ситуациям, когда на одном ПК у нас стоит один Linux дистрибутив и например Windows дистрибутив. Иногда системы три, иногда четыре, но это бывает редко. В основном этот подход подразумевает под собой установку разных операционных систем или разных дистрибутивов на разные разделы ваших дисков. Но что если я сейчас вам покажу то, что различные Linux дистрибутивы или один дистрибутив с различными десктопами и для различных нужд могут уживаться на одном единственном разделе и при этом каждый будет жить своей собственной жизнью, а каталог пользователя и его подкаталоги будут объедены в один общий? Такого не может быть? Ну что же, давайте посмотрим :)

Все тесты проводились на дистрибутиве MANJARO KDE, но по сути, не имеет никакого значения какой из доступных дистрибутивов MANJARO выберете вы!

Для начала грузимся с лайв CD/USB, после чего открываем консоль, получаем постоянные root права на эту сессию через «sudo su -» и начинаем :) Нам нужно выполнить разметку диска и присвоить каждому разделу код файловой системы и название. Для этого будем последовательно использовать 2 программы, потому что в одной проще сделать разметку, а во второй присвоить коды и дать название разделам. Опытные пользователи могут выбрать свой вариант.

1. Создаем GPT метку диска утилитой «parted» — нажимаем — «p» — на экран будет выведена информация о разделах и если они есть, то удаляем их командой «rm» — где «1» это номер раздела. Команду нужно повторить для всех разделов. Их список мы смотрели на предыдущем шаге командой «p».
Теперь создаем разметку GPT, пишем «mklabel gpt» — «yes» — «q» и «ENTER»
# parted /dev/sda

2. Запускаем программу разметки диска
# cfdisk /dev/sda

2. Создаём раздел на 31МБ для будущего GRUB загрузчика. Нажимаем — «Новый» — пишем «31M» — выбираем тип файловой системы «EFI»

По этому же принципу делаем остальные разделы

3. Создаём раздел на 128МБ для будущего /BOOT раздела. Переключаемся на неразмеченную область — «Новый» — пишем «128M» — выбираем тип файловой системы «BIOS boot»

4. Создаём раздел на 50ГБ для будущего / раздела систем (у меня на виртуалке для наглядного примера это 25ГБ), переключаемся на неразмеченную область — «Новый» — пишем «50G» и «ENTER»

Дополнительные возможности
Установленных систем разных или одного дистрибутива может быть 2! на 50GB или даже 3! Тут есть один нюанс — если у вас имеется в наличии например 1SSD на 128ГБ или 256ГБ и 2SSD или HDD на 1ТБ например для /DATA файлов (по сути будущие подкаталоги /home/user/.., то можете в этом пункте отдать под этот раздел 100ГБ. Чем больше места будет в корне, тем большее кол-во разных дистрибутивов или копий одного дистрибутива вы сможете на него установить. Если конечно вам это нужно. Тут важно понимать, что /DATA (это /home/user/..) у нас будет (5) пятым разделом и места под него должно быть достаточно для ВАШИХ нужд! Например у меня на рабочей системе для этого раздела выделен отдельный HDD на 1TB и мне этого хватает для всего что мне нужно.

5. Создаём раздел на RAM+2GB (у меня на виртуалке это 4+2, вы рассчитывайте свой объём оперативной памяти и прибавляйте 2GB), переключаемся на неразмеченную область — «Новый» — пишем «размер равный вашей оперативной памяти + 2ГБ» и «ENTER» — выбираем тип файловой системы «Linux своп»

6. Создаём раздел на всё остальное место для /DATA (будущий /home/user/..), переключаемся на неразмеченную область — «Новый» — жмем «ENTER» чтобы выбрать оставшееся место на диске под будущий /DATA раздел. Нажимаем «Запись» пишем «yes» и нажимаем «ENTER» а после «Выход»

7. Запускаем программу разметки диска # gdisk /dev/sda — и далее присваиваем для каждого раздела код файловой системы и метку раздела (не путайте с меткой диска, это мы сделаем чуть позже при форматировании разделов), всё цифры и имена набираем с клавиатуры.
t - 1 - EF02 - ENTER
t - 2 - 8300 - ENTER
t - 3 - 8300 - ENTER
t - 4 - 8200 - ENTER
t - 5 - 8300 - ENTER

c - 1 - UEFI   - ENTER
c - 2 - BOOT   - ENTER
c - 3 - SYSTEM - ENTER
c - 4 - SWAP   - ENTER
c - 5 - DATA   - ENTER

Теперь нажмите p чтобы проверить всё ли вышло правильно. Должны увидеть что-то вроде этого (фото)
Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048           67583    32.0 MiB    EF02  UEFI
   2           67584         2164735   128.0 MiB    8300  BOOT
   3         2164736       107022335    50.0 GiB    8300  SYSTEM
   4       107022336       136382463     6.0 GiB    8200  SWAP
   5       136382464       500118158    18.8 GiB    8300  DATA

Не забудьте сохранить изменения и выйти, для этого нажмите «w» а после «y» и «ENTER»

8. Запускаем графический установщик. В разделе «Клавиатура» рекомендую пока выбрать «English (US)» и нажать «Далее». Второй язык сможете добавить позднее. Выбираем «Ручная разметка» после выбираем "/dev/sda3" и нажимаем «Править» — выбираем «Форматировать» — «Файловая фистема» — «Btrfs» и «Точка монтирования» — "/" чтобы система понимала, на какой раздел нужно производить установку. Потом выбираем "/dev/sda4" и нажимаем «Править» — выбираем «Форматировать» — «Файловая система» — «Область подкачки Linux» и «Точка монтирования» без изменений. После нажимаем «Ок» и «Далее» — настраиваем имена и пароли. На окно с предупреждением нажимаем «ОК» — «Далее» и у вас должно было быть сейчас что-то вроде этого. Ну всё, можем запускать графическую установку, нажимайте «Установить» и «Приступить к установке» а после завершения процесса установки не перезагружайтесь!

9. Далее переходим к настройке GRUB загрузчика, назовём его установку двухуровневой. Что это нам даёт — у каждой системы есть свой взгляд на загрузку и для того, чтобы избежать конфликтов, мы пропишем GRUB на отдельный раздел и он будет передавать управление тому GRUB загрузчику, чью систему мы будем загружать через GRUB меню при старте ПК/Ноутбука.

10. Форматирование раздела под наш загрузчик "-L BOOT" задаёт метку разделу, он же «LABEL» и "-m0" отключает резерв места для записи от пользователя
# mkfs.ext3 -L BOOT -m0 /dev/sda2

11. Создаём каталог BOOT куда будет установлен наш загрузчик
# mkdir /mnt/BOOT

12. Монтируем наш отформатированный раздел по заданной ранее при форматировании метке, то есть по «LABEL»
# mount -L BOOT /mnt/BOOT

13. Так как при установке системы она поставила свою загрузочную запись на /dev/sda, то нам нужно забрать у системного загрузчика управление назад и прописать туда наш
# grub-install --boot-directory=/mnt/BOOT/ /dev/sda

После чего вы должны получить такой ответ:
"Выполняется установка для платформы i386-pc.
Установка завершена. Ошибок нет."

14. Создадим каталог в папке /mnt/
# mkdir /mnt/SUB

15. Присвоим метку разделу, чтобы мы знали, что это системный раздел
# btrfs filesystem label /dev/sda3 SYSTEM

16. Смонтируем наш системный раздел по метке в созданный каталог для доступа к нашим /@SOBVOLUMES — он пригодится нам для будущей работы с нашими субсистемами :)
# mount -L SYSTEM /mnt/SUB

17. Для начала сделаем 2 снимка (SNAPSHOT) нашей системы установленной на /@SUBVOLUMES, она сейчас установлена в каталок "/@" — для этого выполним команду
# btrfs subvolume snapshot /mnt/SUB/@ /mnt/SUB/@MSTABLE
# btrfs subvolume snapshot /mnt/SUB/@ /mnt/SUB/@MSECOND

18. И сразу сделаем бэкап свежеустановленной системы в "/@" для того, чтобы у нас вдруг с ним не вощник конфликт делёжки GRUB конфига и заодно если что, можно будет откатиться к свежачку :)
# mv /mnt/SUB/@ /mnt/SUB/@reserved

Что представляет из себя SNAPSHOT
К слову, снимок системы, то есть SNAPSHOT по факту ничего не весит и не замимает места на вашем SSD или HDD, а так же его создание занимает, ну хорошо если 1 секунду :) Таким образом мы сейчас установили на один раздел 2 копии НЕЗАВИСИМЫХ друг от друга систем! Которые не занимают места на диске. Я думаю из названий снимков уже понятно, какая будет у нас основной, а какая второстепенной. А та система, которая была установлена при установке в "/@" пусть там и лежит. Если что-то пойдёт не так, то мы просто загрузимся с LiveCD/USB или из второй системы "@MSECOND", смонтируем нашу систему в "/mnt/SUB" командой «mount -L SYSTEM /mnt/SUB», переименуем наш SNAPSHOT "/@MSTABLE" в "/@MOLD" и сделаем ещё один снимок (SNAPSHOT) командой «btrfs subvolume snapshot /mnt/SUB/@ /mnt/SUB/@MSTABLE». И не забывайте, SNAPSHOT системы не занимает места на вашем диске, а значит вы можете делать его, например перед обновлением или установкой незнакомого софта или же просто имея желание поэкспериментировать с системой.

19. Теперь нужно прописать в загрузчик временный путь к нашему /@MSTABLE SUBVOLUME, чтобы он загрузил именно эту систему. Сделать это можно следующим образом
# nano -w /mnt/SUB/@MSTABLE/boot/grub/grub.cfg

Находим первую запись в строке с названием "### BEGIN /etc/grub.d/10_linux ###"
И заменяем в этом разделе все "/@" на "/@MSTABLE" — должно получиться вот так

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Manjaro Linux' --class manjaro --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-2282e840-f7a1-4312-b6e9-912ea9f9541c' {
	load_video
	set gfxpayload=keep
	insmod gzio
	insmod part_gpt
	insmod btrfs
	set root='hd0,gpt3'
	if [ x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt3 --hint-efi=hd0,gpt3 --hint-baremetal=ahci0,gpt3  2282e840-f7a1-4312-b6e9-912ea9f9541c
	else
	  search --no-floppy --fs-uuid --set=root 2282e840-f7a1-4312-b6e9-912ea9f9541c
	fi
	linux	/@MSTABLE/boot/vmlinuz-5.10-x86_64 root=UUID=2282e840-f7a1-4312-b6e9-912ea9f9541c rw rootflags=subvol=@MSTABLE  quiet apparmor=1 security=apparmor udev.log_priority=3
	initrd	/@MSTABLE/boot/intel-ucode.img /@MSTABLE/boot/initramfs-5.10-x86_64.img
}

20. Теперь проделываем всё то же самое со второй системой
# nano -w /mnt/SUB/@MSECOND/boot/grub/grub.cfg

и в конфиг GRUB копируем и вставляем следующий код
# nano -w /mnt/BOOT/grub/grub.cfg

set timeout=5
set default=0

insmod part_gpt
insmod btrfs

menuentry 'Start MANJARO STABLE'{
    configfile (hd0,gpt3)/@MSTABLE/boot/grub/grub.cfg
}
menuentry 'Start MANJARO-SECOND'{
    configfile (hd0,gpt3)/@MSECOND/boot/grub/grub.cfg
}

Естественно, если схема разбивки вашего диска иначе, то «hd0» подгоните под номер вашего диска и «gpt3» под номер раздела на диске :)

Вам нужны доказательства что эти системы не имеют общих папок, что это две абсолютно независимые друг от друга системы? Давайте в @MSTABLE и в @MSECOND создадим в /ROOT/ каталоге по одному файлу и назовём их @MSTABLE-proof и @MSECOND-proof :) а после их загрузки убедимся в том, что это две разные системы на одном разделе!
# touch /mnt/SUB/@MSTABLE/root/@MSTABLE-proof
# touch /mnt/SUB/@MSECOND/root/@MSECOND-proof

21. Теперь даём в консоли команды
# umount /mnt/SUB
# umount /mnt/BOOT
# reboot

22. Загрузились :) запускаем консоль, получаем root права через «sudo su -» и первым делом настраиваем все параметры конкретной загруженной системы под её загрузчик, потом повторяем то же самое для второй системы и перезагружаемся!
# grub-mkconfig -o /boot/grub/grub.cfg

23. Теперь отформатируем наш /DATA раздел, чтобы в последующем перенастроить пути к домашним каталогам пользователей, но для этого выйдет отдельная статья!
# mkfs.btrfs -L DATA /dev/sda5
# mkdir /mnt/BOOT
# mkdir /mnt/SUB


Я немного затупил вконце видео, не понял почему файл оставленный на Рабочем столе одной системы появился на второй ) Но у нас же они идентичные, юзер один и тот же и домашние каталоги общие :) Но это тема отдельной статьи!

На этом мы закончили и как видите, на одном "/dev/sda3" разделе может существовать бесконечное множество дистрибутивов. Сам я около 3 месяцев как перешёл на Линукс и мне посчастливилось познакомиться на канале @calculatelinux в Телеграм с замечательным и умнейшим человеком под ником @Kewol. Именно он рассказал мне о такой возможности и на пальцах показал все преимущества такого подхода, за что ему огромнейшее человеческое спасибо! Он так же написал статью на https://wiki.calculate-linux.org/ru/install_multy_distrs_to_btrfs_subvol/draft (к сожалению её пока не подтвердили, да и писал он больше для себя и для того, чтобы увидеть её, нужно пройти регистрацию). Дело в том, что по всей видимости не каждый дистрибутив умеет сразу ставить себя в /@ SUBVOLUME, но когда мы начали пробовать на MANJARO Linux, то он был очень удивлён, так как на этом дистрибутиве всё встало само собой! Очень надеюсь, что статья вызовет резонанс среди продвинутых пользователей и пригодится новичкам :)

Скоро выложу вторую часть по настройке домашних каталогов на другой раздел диска.
Видеоинструкция тут: www.youtube.com/watch?v=tQvttHujarY

Всем спасибо за внимание и всем добра!
Учебники (How-To & F.A.Q)

Медленный запуск приложений на xfce

немного про медленный запуск иксовых приложений на манжаро крысе.
многие жаловались на медленный запуск, почитав эти ваши интернеты и проведя несколько экспериментов остановился на preload в оф репах
1. устанавливаем sudo pacman -S preload
# многие пишут, что шаги 2 и 3 необязательны, я делал так, но можете проверить без них, добавить никогда не поздно

2. sudo touch /var/lib/preload/preload.state
3. sudo chmod 600 /var/lib/preload/preload.state
#

4. sudo systemctl enable --now preload
5. перезагрузка
6. Проверка работы sudo systemctl status preload
даже на глаз стало заметнее быстрее стартовать то, чем пользуюсь постоянно: телега, огнелис, проги для просмотра камер и прочее
Учебники (How-To & F.A.Q)

Нет звука после установки KDE Manjaro

Привет. Помогите, пожалуйста, решить проблему со звуком, точнее с его отсуствием) Установил KDE Manjaro рядом с Windows 10, все отлично, но почему-то нет звука. В винде все работает, до этого стоял Debian на нём тоже все хорошо было. Но теперь не знаю что делать, в интернете все обыскал ничего не помогло
Учебники (How-To & F.A.Q)

Ввод символа с клавиатуры в языке С

Здравствуйте!
Вопрос в заголовке, НО
нужно вводить символы сразу, без завершающего Enter.
getc, fgets, getchar — эти не годятся, пробовал…

Есть getch и getche, но нет conio.h

собственно, либо где взять conio.h или какой стандартной функцией это сделать?
Учебники (How-To & F.A.Q)

Некоторые "тонкости" обновления manjaro

1. необходимо проверить есть ли у вас утилита pacdiff (она входит в пакет pacman) просто запустив ее (может ругнуться на отсутствие vim, доустановите любым способом любой vim)
2. обновляемся
3. после обновления запускаем sudo pacdiff
(кто не привык или не хочет пользоваться редактором vim может дать такую команду sudo DIFFPROG=nano pacdiff )
он покажет все вновь привнесенные конфиги с расширением .pacnew
4. сравниваем изменения, они будут выделены красным (слева файл с расширением .pacnew, справа действующий в системе) при необходимости редачим (при незнании спрашиваем тут)
5. перегружаемся и радуемся отсутствию проблем
Учебники (How-To & F.A.Q)

Ошибка ключей и баз при очень запоздалом обновлении manjaro

при попытке обновления получаем стандартную ошибку ключей.
1.1. Обычно достаточно этого: (все делаю от рута)
pacman-mirrors --fasttrack
rm -R /etc/pacman.d/gnupg
nano /etc/pacman.d/gnupg/gpg.conf (содержание файла ниже в п.1.2.)
pacman-key --init
pacman-key --populate archlinux manjaro
pacman-key --refresh-keys  
pacman -Sc
cp -r /var/lib/pacman/sync/ /sync
rm -R /var/lib/pacman/sync/
pacman -Syyu


1.2. если на шаге
pacman-key --refresh-keys
возникает ошибка, то необходимо подправить или создать конфиг /etc/pacman.d/gnupg/gpg.conf
из предлагаемых по ссылке серверов unix.stackexchange.com/questions/656205/sks-keyservers-gone-what-to-use-instead (из архива archive.is/TDOUP или прямо из исходников с гитхаба github.com/Sicaine/sks-keyserver-git/blob/master/overview-of-pools.php ) выбрать те, которые не требуют ipv6 и https (арч вики рекомендует keyserver hkp://keyserver.ubuntu.com )
в моем случае конфиг такой
no-greeting
no-permission-warning
lock-never
keyserver-options timeout=10
keyserver-options import-clean
keyserver-options no-self-sigs-only
keyserver hkp://keyserver.ubuntu.com

keyserver hkp://pool.sks-keyservers.net
keyserver hkp://pool.sks-keyservers.net:80
keyserver hkps://hkps.pool.sks-keyservers.net:443
keyserver hkp://ipv4.pool.sks-keyservers.net:11371


и заново повторить команду pacman-key --refresh-keys и далее по списку

2. если вышеприведенные команды не привели к успеху
отключаем проверку ключей в /etc/pacman.conf
раздел [options]
SigLevel = Never

Пробуем
pacman -Syyu


получаем «Unrecognized archive format» Error

на любом зеркале, например яндекс, выбираем самые новые файлы и устанавливаем их

pacman -U https://mirror.yandex.ru/mirrors/manjaro/pool/overlay/manjaro-keyring-20200603-1-any.pkg.tar.zst

pacman -U https://mirror.yandex.ru/mirrors/manjaro/pool/sync/archlinux-keyring-20200820-1-any.pkg.tar.zst

rm -f /var/lib/pacman/sync/*
pacman -Sy
pacman -Syu


дальше можно снова включить проверку ключей.

3.Если все работает удаляем директорию /synс эту резервную копию сделали в п.1.
Учебники (How-To & F.A.Q)

Ациклическое переключение раскладки клавиатуры в xfce

по наводке одного уважаемого человека из телеграм канала озадачился ацикличным переключением раскладки в крысе, — это типа когда на каждую раскладку свое сочетание клавишь,
я сделал на капс лок — английскую, на шифт капс — русскую и переключатель пока держишь на правый контрл
всего то надо добавить или изменить строку
grp:shift_caps_switch,grp:rctrl_switch
в редакторе настроек.
действительно, теперь после переключения на окно, надо заиметь привычку сразу нажимать на нужное сочетание раскладки и всегда будешь знать на каком языке ты печатаешь, можно отказаться от индикатора раскладки для экономии места в системном трее. и забыть как страшный сон всякие автопереключатели раскладки типа xneuer
зы. правила переключения лежат тут /usr/share/X11/xkb/rules/base.lst
Учебники (How-To & F.A.Q): Ациклическое переключение раскладки клавиатуры в xfce