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

Как установить Manjaro c жесткого диска

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

Для данного действия нам потребуется:
раздел в файловой системе ext4
образ дистрибутива

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

далее в файл /boot/grub/custom.cfg добавляем следующий текст

menuentry "Manjaro  grub_iso"  {
    set isofile="/manjaro-gnome-20.1-stable-x86_64.iso"
    set dri="free"
    set lang="en_US"
    set keytable="us"
    set timezone="Europe/Moscow"
    search --no-floppy -f --set=root $isofile
    probe -u $root --set=abc
    set pqr="/dev/disk/by-uuid/$abc"
    loopback loop $isofile
    linux  (loop)/boot/vmlinuz-x86_64  img_dev=$pqr img_loop=$isofile driver=$dri tz=$timezone lang=$lang keytable=$keytable copytoram
    initrd  (loop)/boot/intel_ucode.img (loop)/boot/initramfs-x86_64.img
}


сохраняем, делаем sudo update-grub и перезагружаемся.

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

за основу взят оригинал forum.manjaro.org/t/howto-boot-manjaro-iso-directly-with-grub/15892
Учебники (How-To & F.A.Q)

ПЕРЕД ОБНОВЛЕНИЕМ ☂ (личный опыт)

Как не зайду на сайт, так вижу новый топик о проблемах после обновления.
Не один раз были проблемы после обновления.

1- Читайте ранние топики об проблемах с обновлениями.
2- Обновляешься полностью, сделай резервную копию (пользуюсь fsarchiver)
3- Если всё прекрасно работает и для вашей работы ни как не уперлось обновления ядра, то пропускайте обновления: linux***; linux***-headers; linux-api-headers; linux-firmware
4- А самое лучшее, обновлять только те приложения/зависимости, которые нужны!

Установка fsarchiver: 1- через репозиторий fsarchiver; 2- качаем deb пакет (fsarchiver.deb) графической версии (Установка DEB: программа — yay -S dpkg, установка пакета — sudo dpkg -i приложение.deb); 3- На флэшку, для последующего восстановления tuxcomss-eos-64bit

*-три звезды — версия ядра

Отписывайтесь все что придет в голову по теме. Интересно какие еще есть способы избежать проблем после обновления.
Учебники (How-To & F.A.Q)

Установка и конфигурирование драйвера для принтеров Canon LBP2900/LBP3000/LBP3010/LBP3100/LBP3108/LBP3150/LBP6000/LBP6018

Всем привет!
Это максимально короткий и понятный гайд для каждого по установки и конфигурации принтеров Canon (у меня Canon 3010).

1. Заходим в терминал и пишем sudo pacman -S make autoconf
2. Не выходя из терминала пишем sudo pamac install captdriver-git и нажимаем Y/Д
3. После успешной установки можем удалить ненужные пакеты sudo pacman -Rs make autoconf automake
4. Вам нужно зайти в параметры вашей системы, перейти во вкладку «Принтеры», подключить ваш принтер Canon к ПК и нажать на кнопку «Добавить принтер», нажимаем далее-далее, по идеи помощник должен сам подобрать нужный нам .ppd файл, а если это не так, то выбираем в списке «Canon» и жмете на файлик с названием модели принтера.

После всех проделанных действий наш принтер должен появится в списке и мы можем его выбрать по умолчанию!
Учебники (How-To & F.A.Q): Установка и конфигурирование драйвера для принтеров Canon LBP2900/LBP3000/LBP3010/ LBP3100/3108/3150 / LBP6000/6018
Учебники (How-To & F.A.Q)

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

дальнейшее развите кода тут github.com/berligostr/hiber2sd

когда это может понадобиться? Приведу пару сценариев:
— вы в секте отрицателей свапа и у вас его просто нет;
— у вас есть свап но он в рам или в чанках;
— у вас есть свап но его мало для гибернации;
далее, вы пооткрывали кучу редакторов, закладок в браузере и что то там делаете важное, и тут такая мама: сына, срочно сгоняй за хлебом…
или
вы трудились весь день на багамах без подключения к сети 220в. всё, акк сел и надо срочно сохранить все труды, что бы при появлении розетки всё открыть в том же месте и продолжить писать роман.
в общем вариантов тьма. далее я приведу скрипт, который позволяет сделать задуманное простым его запуском и БЕЗ ПЕРЕЗАГРУЗКИ вы получите гибернацию на диск с полным отключением питания (само собой скрипт надо запускать через sudo или от root:
#!/bin/bash
#
# История версий
# -------------------------------------------------------------------------------------------------------
# Версия 2.1 почищены комментарии, удалены отладочные заметки 
# Версия 2.2 Переписывает конфигурацию для гибернации даже если она уже существует
# Версия 2.3 Скрипт завершиться при ошибке в любой команде
# Версия 2.4 Произведена структуризация скрипта комментариями
# -------------------------------------------------------------------------------------------------------
# Конец истории версий
#
# введение и пояснения для юзера
# -------------------------------------------------------------------------------------------------------
set -e
echo "Если  на  комьпютере  файловая  система  ext4, то этот скрипт позволяет без"
echo "перезагрузки ввести систему в гибернацию на диск даже если она не настроена."
echo "Предварительно     необходимо   установить   пакет   uswsusp-git   из   AUR."
echo "Не  выходя  из  скрипта,  установи  этот  пакет  в новом окне терминала так:"
echo "------------------------>  pamac build uswsusp-git  <-----------------------"
echo "После  этого  скрипт  произведет  настройку  системы и предложит гибернацию."
echo "Существующие   настройки  swap не повредятся, только добавится  необходимое."
echo "Если  гибернация  более  не  нужна, скрипт  удалит  настройки  и  swap-файл."
# -------------------------------------------------------------------------------------------------------
# Разъяснения юзерам сделаны
#
# Удаление некоторых ненужных настроек гибернации в случае, если она больше не нужна
# -------------------------------------------------------------------------------------------------------
echo -e "\n"; read -n 1 -p "Удалить настройки гибернации? [y/N]: " delhib;
if [[ "$delhib" = [yYlLдД] ]]; then echo -e "\n"; 
  if [ -e /swapfile ]; then swapoff /swapfile ; rm -f /swapfile ; fi
  cp -v /etc/fstab /etc/fstab.backup
  if grep -q "swapfile none swap defaults' /etc/fstab; 
    then sed -i '/swapfile none swap defaults/d' /etc/fstab; 
  fi
  cp -v /etc/mkinitcpio.conf /etc/mkinitcpio.conf.backup
  if grep -q 'uresume' /etc/mkinitcpio.conf; 
    then sed -i 's!\(^HOOKS.*udev\) \(uresume\) \(.*filesystems.*\)!\1 \3!' /etc/mkinitcpio.conf; 
    else echo "/etc/mkinitcpio.conf уже не содержит хук uresume"; 
  fi
  cp -v /etc/suspend.conf /etc/suspend.conf.backup
  if grep -q 'resume device' /etc/suspend.conf; then sed -i '/resume device/d' /etc/suspend.conf; fi
  if grep -q 'resume offset' /etc/suspend.conf; then sed -i '/resume offset/d' /etc/suspend.conf; fi
  mkinitcpio -P
fi
# -------------------------------------------------------------------------------------------------------
# Конец процедуры удаления настроек гибернации
#
# Настройка гибернации в файл
# -------------------------------------------------------------------------------------------------------
echo -e "\n"; read -n 1 -p "Попытаться гибернизировать? [y/N]: " hib;
if [[ "$hib" = [yYlLдД] ]]; 
  then echo -e "\n"; 
# Скрипт работает только на ext4
  tipfs="$(df -Th | grep "$(df | grep '/$' | awk '{ print $1 }')" | awk '{ print $2 }')"
  if [[ ! $tipfs = ext4 ]]; 
    then echo "Ты странный какой-то, у тебя файловая система не ext4"; set +e ; sleep 10; exit; 
  fi
# для нормальной работы скрипта необходим пакет uswsusp-git
  package="uswsusp-git"; check="$(pacman -Qs --color always "${package}" | grep "local" | grep "${package}")";
  if [ -n "${check}" ] ; 
    then
# создание файла подкачки 
# -------------------------------------------------------------------------------------------------------
    if [ -e /swapfile ]; then swapoff /swapfile ; rm -f /swapfile ; fi
    ozu="$(cat /proc/meminfo | grep MemTotal | awk '{ print $2 "K" }')"
    fallocate -l $ozu /swapfile ; chmod 600 /swapfile ; mkswap /swapfile ; 
# Определяем поддержку TRIM
    ssd="$(lsblk -D | grep $(lsblk -r | grep '/$' | awk '{ print $1 }') | awk '{ print $4 }')"; 
    if [[ "$ssd" = 0B ]]; then swapon /swapfile; else swapon --discard /swapfile; fi
    cp -v /etc/fstab /etc/fstab.backup
    if grep -q 'swapfile none swap' /etc/fstab; then sed -i '/swapfile none swap/d' /etc/fstab; fi
    if [[ "$ssd" = 0B ]]; 
      then echo "/swapfile none swap defaults 0 0" | tee -a /etc/fstab; 
      else echo "/swapfile none swap defaults,discard 0 0" | tee -a /etc/fstab; 
    fi
# -------------------------------------------------------------------------------------------------------
# файл подкачки создан
#
# Настройка initramfs
# -------------------------------------------------------------------------------------------------------
    cp -v /etc/mkinitcpio.conf /etc/mkinitcpio.conf.backup
    if grep -q 'uresume' /etc/mkinitcpio.conf; 
      then echo "/etc/mkinitcpio.conf уже содержит хук uresume"; 
      else sed -i 's!\(^HOOKS.*udev\) \(.*filesystems.*\)!\1 uresume \2!' /etc/mkinitcpio.conf; 
    fi
    cp -v /etc/suspend.conf /etc/suspend.conf.backup
    if grep -q 'resume device' /etc/suspend.conf; then sed -i '/resume device/d' /etc/suspend.conf; fi
    if grep -q 'resume offset' /etc/suspend.conf; then sed -i '/resume offset/d' /etc/suspend.conf; fi
    df /swapfile | grep dev | awk '{ print "resume device = " $1 }' | tee -a /etc/suspend.conf
    swap-offset /swapfile | tee -a /etc/suspend.conf
    mkinitcpio -P
# -------------------------------------------------------------------------------------------------------
# Настройка initramfs выполнена
#
# Настройка параметров гибернации пакета uswsusp-git
# -------------------------------------------------------------------------------------------------------
    if [ -f /etc/systemd/system/systemd-hibernate.service.d/override.conf ]; 
      then rm -f /etc/systemd/system/systemd-hibernate.service.d/override.conf ; 
    fi
    echo "[Service]" | tee -a /etc/systemd/system/systemd-hibernate.service.d/override.conf
    echo "ExecStart=" | tee -a /etc/systemd/system/systemd-hibernate.service.d/override.conf
    echo "ExecStartPre=-/usr/bin/run-parts -v -a pre /usr/lib/systemd/systemd-sleep" | tee -a /etc/systemd/system/systemd-hibernate.service.d/override.conf
    echo "ExecStart=/usr/bin/s2disk" | tee -a /etc/systemd/system/systemd-hibernate.service.d/override.conf
    echo "ExecStartPost=-/usr/bin/run-parts -v --reverse -a post /usr/lib/systemd/systemd-sleep" | tee -a /etc/systemd/system/systemd-hibernate.service.d/override.conf
    echo " " | tee -a /etc/systemd/system/systemd-hibernate.service.d/override.conf
# Настройка параметра гибернации системы на диск с полным отключением питания
    if [ -f /etc/systemd/sleep.conf.d/hibernatemode.conf ]; 
      then rm -f /etc/systemd/sleep.conf.d/hibernatemode.conf ; 
    fi
    echo "[Sleep]" | tee -a /etc/systemd/sleep.conf.d/hibernatemode.conf
    echo "HibernateMode=shutdown" | tee -a /etc/systemd/sleep.conf.d/hibernatemode.conf
    echo " " | tee -a /etc/systemd/sleep.conf.d/hibernatemode.conf
# -------------------------------------------------------------------------------------------------------
# Настройка конфигов для гибернации на диск выполнена
#
# гибернация на диск
# -------------------------------------------------------------------------------------------------------
    echo -e "\n"; read -n 1 -p "Гибернизируемся? [y/N]: " hiber;
    if [[ "$hiber" = [yYlLдД] ]]; then echo -e "\n"; systemctl hibernate; fi
# -------------------------------------------------------------------------------------------------------
# гибернация на диск произведена
#
# Пост комментарии для юзера
# -------------------------------------------------------------------------------------------------------
# Пакет uswsusp-git из AUR не установлен, обработка для гибернации не сделана
  else then echo -e "\n"; echo "Для нормальной работы скрипта необходим пакет uswsusp-git из AUR! Установи его немедленно!"; then echo -e "\n";
  fi
  else then echo -e "\n"; echo "Ну на нет и суда нет! Если ошибся, то запусти скрипт снова!" ; then echo -e "\n"; 
# -------------------------------------------------------------------------------------------------------
# Окончание работы скрипта, восстановление стандартных параметров оболочки
#
fi
set +e 
Учебники (How-To & F.A.Q)

Mamjaro KDE не видет USB устройств

Не так давно начал переползать с Windows на Linux. Выбрал для себя Manjaro, но вот налетел на проблему которой не могу найти ответ (ну не хватает знаний). Дело в том что пакеты CubeIDE и элементарный Arduino IDE скачаные из репозитория и по сути нормально работающие не видят программатора (CubeIDE) и саму плату Arduino (Arduino IDE). При этом при вызове в Konsole команды lsusb устройства видятся.

Bus 003 Device 005: ID 0483:3748 STMicroelectronics ST-LINK/V2

Подскажите что можно предпринять, а то что в инете находил, так там сводилось все к проблемам железа (но под виндой все работает без проблем), или к нечтению внешних накопителей с которыми проблем нет (видны и читаются и флешки и диски)
Учебники (How-To & F.A.Q)

Сканер Epson Perfection 660 - Добавление в систему

Учебники (How-To & F.A.Q): EPSON Perfection 660
Здравствуйте. На днях приютил сканер в полностью рабочем состоянии EPSON Perfection 660, который хотели на работе выбросить (подробно модель описана здесь). Стоит отметить, что данная модель из коробки работает на семействе ОС Windows 98-XP. На Windows 7 и выше сканер работает только используя программу VueScan, которую также можно установить на Manjaro из репозитория AUR. Я же, используя Pamac, установил программу Skanpage (KDE). При старте утилиты сразу выводится сообщение:
Skanpage - Failed to open selected device
Учебники (How-To & F.A.Q): Сканер Epson Perfection 660 - Добавление в систему

А при попытке открыть сканер:
Access to selected device has been denied
Т.е. вендор сканера определяется, но модель — нет.

Идём в ArchWiki. В странице описания проекта SANE указано, что дополнительно для сканеров, использующих USB, требуется установка пакета ipp-usb и включение в качестве службы:
sudo pacman -S ipp-usb
sudo systemctl start ipp-usb.service
sudo systemctl enable ipp-usb.service

Но добавление пакета так просто не решает ситуацию. Ключевым моментом конкретно для данной модели сканера заключается в наличие прошивки (firmware). Это удалось понять при попытке тестового сканирования в консоли, указав опцию --device имя сканера, полученного через команду scanimage:
sudo scanimage -L
sudo scanimage --device "ваш_сканер" --format=png --output-file test.png --progress

Учебники (How-To & F.A.Q): Вывод команд scanimage

Заходим в перечень моделей SANE и ищем наш сканер. Там указано:
Requires firmware tail_058.bin.

Требуется прошивка — бинарный файл, но где его взять!? В той же табличке кликаем на backend нашей модели сканера. Пролистываем уже значительно меньшую табличку поддерживаемых данным backend-ом моделей вниз, пока не попадаем на цитату:
Scanner firmware

Most USB models need a firmware upload in order to work (see table above). The bin file can be found in the windows drivers coming with your scanner. For scanners from Acer / Benq the last three digits of the firmware file depend on the version of your driver CD. The files listed in the table are known to work, other versions will probably work as well.

Т.е. требуются драйвера Windows — из дисков, или скачанные из сайта производителя. Увы, для нашей модели их уже нет — гонконгская ветка EPSON предлагает их для загрузки, но при попытке их скачать просто перебрасывает на главную страницу. Можно их взять на сайте Softpedia или на Driver.ru.

Из скачанного архива требуется скопировать файл TAIL_061.BIN из папки Euro/DATA/BIN в папку /usr/share/sane/snapscan/. Несмотря на то, что версия бинарника выше требуемой — работать будет всё равно.
Копирование бинарника прошивки
Учебники (How-To & F.A.Q): Сканер Epson Perfection 660 - Добавление в систему

И правим конфиг /etc/sane.d/snapscan.conf с сохранением:
#------------------------------ General -----------------------------------

# Change to the fully qualified filename of your firmware file, if
# firmware upload is needed by the scanner
firmware /usr/share/sane/snapscan/TAIL_061.BIN

Проверяем работу сканера в консоли:
Учебники (How-To & F.A.Q): Сканирование через консоль командой scanimage

И в утилите Skanlite/Skanpage:
Сканирование в Skanlite
Учебники (How-To & F.A.Q): Работа сканера EPSON Perfection 660 в Skanlite

Также для сканирования вы можете использовать утилиту XSANE — настроек там побогаче, но выглядит не так симпатично. Есть плагин для GIMP. Можно установить с официального репозитория через Pamac.
Учебники (How-To & F.A.Q)

Как в XFCE при автозапуске открыть окно программы на определенном рабочем столе и в определенном месте.

У некоторых возникает вопрос Как в XFCE в автозапуске открыть окно программы на определенном рабочем столе?
есть несколько способов как это сделать (я знаю два) очень удобен был способ при котором использовалась спец гуи утилита, с помощью которой можно было настроить правила для каждого окна любой программы. я пишу «было» потому, что основана она на питоне2, который практически выпилен из системы и его использовать не рекомендуют. когда создатели этих утилит очнуться и перепишут код, я добавлю этот обзор. а пока расскажу про несколько костыльный, но рабочий способ достичь желаемого. есть утилита wmctrl, которая позволяет сделать активным необходимый рабочий стол, рабочие столы нумеруются начиная с 0, запись вида wmctrl -s 1 означает сделать активным второй рабочий стол.
в Автозапуск приложений настроек Сеансы и запуск крысы нужно добавить строки подобного плана
bash -c "sleep 1;wmctrl -s 1 && /opt/Telegram/Telegram -workdir /home/kostya/.local/shar/TelegramDesktop/ -autostart"
bash -c "sleep 10;wmctrl -s 0 && conky -c "/home/kostya/.conky/Conky_left_small_v3/conkysmall-v3-Manjaro/ConkySmall-3" &"

записью sleep 10 контролируем последовательность активирования рабочих столов, а так же даем возможность отработать предыдущей команде с учетом времени активации окна. именно в этом и заключается костыльность такого способа, так как для каждого окна, каждой программы это значение придется подбирать индивидуально.
выше я привел примеры строк автозапуска коньков на первом рабочем столе и телеги на втором рабочем столе. первым делается активным второй рабочий стол и запускается телега, потом активируется первый рабочий стол и запускаются коньки.
Учебники (How-To & F.A.Q): Как в XFCE в автозапуске открыть окно программы на определенном рабочем столе.
зы. как расположить окно в нужном месте рабочего стола описано ниже в моем комментарии
Учебники (How-To & F.A.Q)

Перенос ключа из PuTTY

Имеется: приватный и открытый ключи (пусть зовутся mykey-r.ppk и id_rsa-r.pub), созданные некогда в PuTTY и распространенные по удаленным серверам. Некогда переносил в Убунту и там работало, сейчас копирование тех ключей в Манджаро не дало результат. После некоторых изысканий нашел как сделать рабочий ключ и потому делюсь методом.
  1. Устанавливаем пакет putty
  2. Конвертируем ключ для линукса
    puttygen mykey-r.ppk -O private-openssh -o ~/.ssh/id_rsa_manjaro
  3. Проверяем права на файл — они должны быть 600 на приватный ключ:
    
    -rw-------  1 dmitriy dmitriy 2,6K дек  8 16:26 id_rsa_manjaro
    -rw-r--r--  1 dmitriy dmitriy  572 дек  8 16:26 id_rsa_manjaro.pub
    
  4. Но на некоторых хостах у меня ругалось и не принимало ключ, а требовало ввод пароля — путем некотрых изысканий я нашел причину и поправил файл конфига SSH:
    nano ~/.ssh/config
    HostKeyAlgorithms=+ssh-rsa
    User=root    пользователь по умолчанию для входа
    PubkeyAcceptedKeyTypes=+ssh-rsa
    

  5. Вот после этого у меня работает и спокойно заходит на все ранееизвестные хосты.
Учебники (How-To & F.A.Q)

Постподключение смонтированного облачного ресурса

Совместное использование утилиты rclone и systemd вызывает некоторое поведение смонтированных облачных ресурсов, которое меня не устраивает. А именно, происходит немедленное монтирование и подключение облачного ресурса. А при прописывании параметров монтирования в fstab вообще монтирование происходит дважды и немедленное подключение смонтированного ресурса. Это ни чему особенному не мешает и можно забить. Но мне так не нравиться и не хочется делиться своими ресурсами с другими юзерами в случае с fstab, а в случае монтирования через юниты системды (как от рута, так и от юзера) происходит немедленное подключение ресурса. Итак, костыль:
Рассказываю, этот костыль отменяет линукс и создает подземный стук, а так же выясняет какой главный вопрос вселенной и всего такого, и даже дает ответ на него:
1.конфигурирую rclone config для mailru: ресурса облачного диска
2.создаю в /etc/fstab строку:
#mailru:/ /home/kostya/cloud/cloudmailru rclone config=/home/kostya/.config/rclone/rclone.conf,cache_dir=/home/kostya/cloud/cache 0 0

3.создаю /opt/my_scripts/mountcloud.sh:
#!/bin/bash
username=`who | grep -c "kostya"`
if [ "$username" > "0" ]; then 
  if /usr/bin/grep -q '#mailru:' /etc/fstab; then /usr/bin/sed -i 's/#mailru:/mailru:/g' /etc/fstab; fi; fi;

4.создаю /opt/my_scripts/umountcloud.sh:
#!/bin/bash
 if ! /usr/bin/grep -q '#mailru:' /etc/fstab; then /usr/bin/sed -i 's/mailru:/#mailru:/g' /etc/fstab; fi

5. делаю юниты
/etc/systemd/system/moutcloud.service:
[Unit]
Description=mount cloud (rclone)
Wants=network-online.target
After=network-online.target default.target

[Service]
Type=oneshot
ExecStart=/opt/my_scripts/mountcloud.sh

[Install]
WantedBy=default.target


/etc/systemd/system/umoutcloud.service:
[Unit]
Description=umount cloud (rclone)
DefaultDependencies=no
After=final.target

[Service]
Type=oneshot
ExecStart=/opt/my_scripts/umountcloud.sh

[Install]
WantedBy=final.target

6. на всякий случай скрипт /opt/my_scripts/umountcloud.sh копирую в /usr/lib/systemd/system-shutdown/umountcloud.sh
7. Далее стандартные действа для запуска сервисов
systemctl daemon-reload
systemctl enable moutcloud.service
systemctl enable umoutcloud.service


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