Showing posts with label linux. Show all posts
Showing posts with label linux. Show all posts

Friday, May 20, 2022

Long USB drive unmounting after copying data to it


After copying significant amount of data to a USB drive the data get cached and need to be physically flushed to the drive before unmounting. 
By default, Ubuntu uses 20% of RAM for file caches.

Solution

There are some tunable settings that influence how the Linux kernel deals with the file system cache. 
All of them are connected with dirty data (or dirty memory) - data that is written into the cache but not saved on disk.
  • dirty_ratio - maximum percentage of dirty system memory
  • dirty_bytes - the same as dirty_ratio but specified in bytes
  • dirty_background_ratio - percentage of dirty system memory at which background writeback will start
  • dirty_background_bytes - the same as dirty_background_ratio but specified in bytes
$ sudo bash -c 'echo $((64*1024*1024)) > /proc/sys/vm/dirty_background_bytes'
$ sudo bash -c 'echo $((128*1024*1024)) > /proc/sys/vm/dirty_bytes'
In this case, coping progress shows correct speed, and unmounting takes only several seconds. 
To save this setting after reboot it’s required to add such a line into /etc/sysctl.conf:
vm.dirty_background_bytes = 67108864
vm.dirty_bytes = 134217728
This option is applied to all disks - external and internal ones what can reduce system performance.

Tuesday, September 22, 2020

Garmin SubMusic (on Ubuntu 18.04)

  1. Install dependencies
  2. Install Nextcloud
  3. Install Music
  4. Install Ampache
  5. Install Garmin SubMusic

Nextcloud

Reference guide

Nextcloud 19 dependencies:
  • PHP >=7.2
  • MySQL/MariaDB
  • Nginx
Ampache dependencies:
  • PHP >=7.2
  • MySQL/MariaDB
  • Nginx
  • Composer

Thursday, July 2, 2020

Run GUI application from chroot

xhost +local:
sudo chroot /mnt
export DISPLAY=:0
gedit

Wednesday, June 17, 2020

Gedit transparent background

Some gnome applications (usual ones: gedit, gnome-calculator) can suddenly get looking incorrect (transparent background, visual artifacts, etc).

The reason could be a change in:
- Settings => Region & Language => Manage Installed Languages => Keyboard input method system
- Language Support => Keyboard input method system

Solution:

- remove ~/.xinputrc
- reboot

`Error! Could not locate dkms.conf file`

- adapt /usr/sbin/dkms script 

to be more informative when error logging. You can change the line 527 (or similar on your system):

[[ -r $read_conf_file ]] || die 4 $"Could not locate dkms.conf file." \

to something like

[[ -r $read_conf_file ]] || die 4 $"Could not locate $read_conf_file file." \

to see where exactly is the problem located.

- dkms status

There should be valid output, without error messages.
If any dkms.conf file is not found:
- investigate sources and configs existing in the system (see commands below)
- remove "bad" modules (e.g. sudo rm -rf /var/lib/dkms/nvidia/)
- rebuild existing dkms modules

- ls -l /var/lib/dkms

to know what dkms modules are in the system

- ls /usr/src/*/dkms.conf

check existing dkms config files

sudo dpkg-reconfigure virtualbox-dkms

rebuild dkms modules (here is `virtualbox-dkms` as an example)

Monday, April 13, 2020

Run a GUI app with sudo

Use pkexec as a GUI alternative for sudo.

A krusader's custom action as an examle:
pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY /bin/bash -c "cryptsetup open --allow-discards /dev/sdb7 data -d /key && mount /dev/mapper/data /media/user/data"; %aGoto("/media/user")%

Thursday, April 2, 2020

Clear systemd journal

examples are taken here

Systemd stores its logs in /var/log/journal.
$ du -hs /var/log/journal/
4.1G    /var/log/journal/
Check the oldest logs date:
$ ls -lath /var/log/journal/*/ | tail -n 2
-rw-r-x---+ 1 root systemd-journal 8.0M Dec 24 05:15 user-xxx.journal

Clear by date: older than X days

Clearing everything older than 10 days:
$ journalctl --vacuum-time=10d
...
Vacuuming done, freed 2.3G of archived journals on disk.

Clear by size: if they exceed X storage

Clearing everything that exceeds 2GB size:
$ journalctl --vacuum-size=2G
...
Vacuuming done, freed 720.0M of archived journals on disk.

Sunday, December 20, 2015

Шифрованный контейнер

1) Create an empty container:
$ dd if=/dev/zero of=container.img count=20000
20000+0 records in
20000+0 records out
10240000 bytes (10 MB) copied, 0,0348345 s, 294 MB/s

Monday, July 20, 2015

Искажение звука в Skype и Viber в Linux


  • Откройте файл /etc/pulse/default.pa
  • Найдите строку load-module module-udev-detect и замените ее на load-module module-udev-detect tsched=0
  • Перезапустите pulse коммандой pulseaudio -k 
  • Перезапустите Skype, Viber

Monday, June 8, 2015

VMPlayer fails to build vmnet on linux mint

Для ядра 3.19 сборка модуля vmnet вываливается с ошибкой.
Используем патч.

$ curl http://pastie.org/pastes/9934018/download -o /tmp/vmnet-3.19.patch
$ cd /usr/lib/vmware/modules/source
# tar -xf vmnet.tar
# patch -p0 -i /tmp/vmnet-3.19.patch
# tar -cf vmnet.tar vmnet-only
# rm -r *-only
# vmware-modconfig --console --install-all


3D acceleration for vmware in linux mint

This is if you get the following error in vmware tools:
3D Graphics acceleration will be disabled
this computer does not have a 3D graphics system supported by vmware workstation.

Sunday, June 7, 2015

vmware-tools shared folders в гостевом linux

Если драйвер vmhgfs.ko не собирается (ошибка recipe for target '/tmp/modconfig-QTCd9T/vmhgfs-only/inode.o' failed), запускаем следующий скрипт:

#!/bin/sh -x
cd /usr/lib/vmware-tools/modules/source
tar xf vmhgfs.tar
grep -q d_u.d_alias vmhgfs-only/inode.c && echo "already patched" && exit 0
sed -i -e s/d_alias/d_u.d_alias/ vmhgfs-only/inode.c
cp -p vmhgfs.tar vmhgfs.tar.orig
tar cf vmhgfs.tar vmhgfs-only
vmware-config-tools.pl -d -m

Friday, June 5, 2015

Автоматическая сборка PyQt из исходников в Linux Mint, Ubuntu, Debian...

Пользователи ОС Windows могут запросто скачать себе актуальную версию PyQt5.
Однако пользователям Linux систем актуальная версия официально предлагается только в виде исходных кодов.
Для тех пользователей Debian-based систем (Ubuntu, Mint, Debian, ...), кому лень вручную скачивать свежие версии SIP и PyQt5, читать инструкции по сборке и выполнять в терминале рутинные сборочные процедуры, существует удобное решение.

Wednesday, April 15, 2015

Исправление запуска GDB из консоли в Linux Mint 17

Проблема:
При попытке запуска GDB видим:
user@host ~ $ gdb
Failed to import the site module
Traceback (most recent call last):

Tuesday, January 13, 2015

Полезные команды Linux

Серийные номера железа:
sudo dmidecode | less

HEX редактор
bless

tee - read from standard input and write to standard output and files
strace - trace system calls and signals
recode - console text decoder

***
Filter continuous webserver's logs in terminal:
tail -n 1000 -f /var/log/nginx/access.log | \
grep --line-buffered -v -E "EXCLUDE_PATTERN1|EXCLUDE_PATTERN2|..." | \
grep --line-buffered -i -E "pattern1|pattern2|..." \
sed -u "s=\\\x0A=\n=g"

***
sed -u "s=\\\x0A=\n=g" - replace new lines (pretty print in a terminal)
recode html.. - converts HTML entities to native encoding (e.g. &#x410 == cyrillic 'A')

***

Saturday, December 27, 2014

Гибернация в Linux Mint для зашифрованного HDD


  1. Добавим новый ключ для физического зашифрованного раздела HDD, на котором расположен swap:
    sudo /lib/cryptsetup/scripts/decrypt_derived <dmtable-root-volume-name> | sudo cryptsetup luksAddKey --key-file=<path-to-already-registered-keyfile> /dev/<luks-swap-device> -
    Или зададим ключ при создании LUKS-раздела
    sudo /lib/cryptsetup/scripts/decrypt_derived <dmtable-root-volume-name> | sudo cryptsetup luksFormat /dev/<luks-swap-device> --key-file -
    Этот ключ генерируется на основе ранее созданного зашифрованного root-раздела (параметр <dmtable-root-volume-name>) с помощью скрипта /lib/cryptsetup/scripts/decrypt_derived.
    Параметр <luks-swap-device> - имя физического luks-раздела для swap (например, /dev/sda4).
    Параметр <path-to-already-registered-keyfile> - путь к ранее зарегестрированному файлу-ключу для расшифровки раздела.
  2. Убедимся, что swap создан:
    sudo /lib/cryptsetup/scripts/decrypt_derived <dmtable-root-volume-name> | sudo cryptsetup luksOpen /dev/<luks-swap-device> swap --key-file -
    sudo mkswap /dev/mapper/<dmtable-swap-volume-name>
  3. В файл /etc/crypttab добавим/отредактируем строку для работы с разделом swap:
    swap UUID=<uuid-of-luks-swap-device> <dmtable-root-volume-name> luks,discard,keyscript=/lib/cryptsetup/scripts/decrypt_derived
  4. В файл /etc/initramfs-tools/conf.d/resume добавим/отредактируем строку для восстановления из swap:
    RESUME=UUID=<uuid_of_encrypted_swap_partition>
  5. В файл /etc/fstab добавим/отредактируем строку для монтирования swap:
    /dev/mapper/<dmtable-swap-volume-name>   none      swap    sw           0       0
  6. Обновим initrd для всех установленных ядер:
    chroot <target-system-root>
    update-initramfs -u -k all
     

Saturday, December 13, 2014

Сборка Python 3 из исходников в Linux Mint


  1. # apt-get install build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm (выбрать нужное)
    libreadline-dev - служит для поддержки автодополнения (Tab), истории и навигации курсора (клавиши со стрелками)
  2. Установить необходимые *-dev пакеты (Tcl/Tk, ncurses, ...) для поддержки среды IDLE
  3. Создать файл install_python.sh со следующим содержимым:

Saturday, November 1, 2014

Настройки Linux

Установка dconf editor:
sudo apt-get install dconf-editor