Linux: несколько способов монтирования образов

Категории: HowTo

Монтирование образа с несколькими разделами

Образ с одним разделом

образ с одним разделом или нужно прьсто посмотреть структура разделов не монтируя.

Активировать

# losetup /dev/loop0 some.img

Деактивировать

# losetup -d /dev/loop0

Образ с несколькими разделами

Если образ содержит несколько разделов и нужну примонтирвоать какой-либо из них.

Активировать

# kpartx -v -a some.img
add map loop0p1 (251:0): 0 497664 linear /dev/loop0 2048
add map loop0p2 (251:1): 0 66605058 linear /dev/loop0 501758
add map loop0p5 (251:2): 0 66605056 251:1 2
# ls /dev/mapper/
control  loop0p1  loop0p2  loop0p5
# mount /dev/mapper/loop0p1 /mnt/test
# mount  | grep test
/dev/mapper/loop0p1 on /mnt/test type ext2 (rw)

Деактивировать

# kpartx -v -d logging-test.img
del devmap : loop0p2
del devmap : loop0p1
loop deleted : /dev/loop0
#

Gnome: очень медленный диалог поиска

Категории: HowTo

сравнение занимаемого места

Поиск по строке в gnome shell очень медленный.

Чтобы найти причину открываем wireshark и смотрим, что происходит на интерфейсах в момент ввода текста в поле поиска.

Результат мониторинга сети

В момент ввода текста наблюдаем шквал обращений к шаре nfs (в моем случае).

Чтобы этого избежать достаточно занести все пути в игнор у tracker.

  • Ставим dconf;
  • Редактируем ключ org.freedesktop.tracker.miner.files.ignored-directories;
  • Моментально все обращения к шаре пропадают.

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

dconf

PDF: уменьшаем размер файла

Категории: HowTo

сравнение занимаемого места

gs \
  -sDEVICE=pdfwrite \
  -dCompatibilityLevel=1.4 \
  -dPDFSETTINGS=/ebook \
  -dNOPAUSE \
  -dQUIET \
  -dBATCH \
  -sOutputFile=doc_compress.pdf \
  doc.pdf

Основная опция тут -dPDFSETTINGS=/ebook. Именна она указывает ghostscript жать пдф до состояния, которое пригодно для просмотра в читалках.

А чаще всего такая задача появляется когда кучу отсканированных страниц документа нужно согнать в один pdf.

Dnf: смотрим содержимое пакетов

Категории: HowTo

Иногда требуется посмотреть содержимое пакета. Для этого есть пара удобный опций dnf и rpm.

У dnf это команда repoquery с опцией -l. У rpm это запрос -q c опцией -l.

Важно. Rpm работает только с установленными пакетами, а через dnf можно посмотреть состав любого пакета в репозитарии.

Посмотрим содержимое пакета fbreader.

# dnf repoquery -l fbreader
Последняя проверка окончания срока действия метаданных: 0:00:49 назад, Пн 07 мар 2022 17:16:45.
/usr/bin/FBReader
/usr/lib/.build-id
/usr/lib/.build-id/25
/usr/lib/.build-id/25/6e45979449fce7ee768d016a2cb5bc90d3afc6
/usr/share/FBReader
...
# rpm -ql fbreader
/usr/bin/FBReader
/usr/lib/.build-id
/usr/lib/.build-id/25
/usr/lib/.build-id/25/6e45979449fce7ee768d016a2cb5bc90d3afc6
/usr/share/FBReader
...

Литература

Xorg: двигаем мышку

Категории: HowTo

mouse pointer

Это какая-то напасть. Мониторы стаповятся больше, мониторов становится больше. А курсор мыши так и остался крохотным.

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

Что делать? Сделать хоткей, который будет пригонять курсор в центр конкретного экрана.

#!/usr/bin/env bash

SCREEN=${1:-0}
GEOMETRY=`xdotool getdisplaygeometry --screen ${SCREEN}`

while read w h
do
    xdotool mousemove --screen $SCREEN $((w/2)) $((h/2))
done < <(echo $GEOMETRY)

В качестве аргумента скрипт принимает номер монитора на который хочется пригнать курсор.

Что полезного можно тут увидеть?

Первое - это подстановки. В качестве примера инициализация SCREEN.

Выражение parameter parameter parameter
в скрипте: установлен и не Null установлен и Null не установлен
${parameter:-word} подставит parameter подставит word подставит word
${parameter-word} подставит parameter подставит null подставит word
${parameter:=word} подставит parameter присвоит word присвоит word
${parameter=word} подставит parameter подставит null присвоит word
${parameter:?word} подставит parameter ошибка, exit ошибка, exit
${parameter?word} подставит parameter подставит null ошибка, exit
${parameter:+word} подставит word подставит null подставит null
${parameter+word} подставит word подставит word подставит null

Тут нужно обратить внимание на то, как раскрывается это выражение интерпретатором и что подстановка и присвоение - это разные вещи.

Подстановка возвращает выбранное значение word вместо переменной parameter. Присвоение же устанавливает parameter значение word.

Пример.

Выражение parameter parameter parameter
в скрипте: установлен и не Null установлен и Null не установлен
${FOO:-hello} world hello hello
${FOO-hello} world ”” hello
${FOO:=hello} world FOO=hello FOO=hello
${FOO=hello} world ”” FOO=hello
${FOO:?hello} world ошибка, exit ошибка, exit
${FOO?hello} world ”” ошибка, exit
${FOO:+hello} hello ”” ””
${FOO+hello} hello hello ””

А так же неименованные каналы. Про именованые каналы я уже писал. А неименованые отличаются тем, что не надо делать его вручную.

Литература: