Рабочий пример записи в fstab для unionfs-fuse

unionfs-fuse#/media/disk1=rw:/media/disk2=rw /media/unionfs_disk fuse allow_other,nobootwait 0 0

allow_other необходим, чтобы кто-то кроме root мог пользоваться смонтированной unionfs-fuse директорией.

Поскольку sed не использует регулярные выражения, а вместо регулярных выражений использует морально устаревшее, труднообъяснимое, мало понятное непойми что, мы его заменим конструкцией

perl -0777pe 's/search/replace/g' -i filename

Где

-0777 - символ, использующийся в качестве построчного разделителя вместо стандартного \n (значения от 0400 и выше заставят perl обработать сразу весь файл целиком в один заход, но 0777 является общепринятым соглашением для этой цели).
-p - встраивает вводимый вами код на perl в "печатающий цикл", который будет обрабатывать stdin построчно.
-e - Позволяет передать исполняемый код в качестве аргумента, а не файла.
-i - Заменяет строки указанного входного файла на результаты вывода perl.

Живой работающий пример:

perl -0777pe 's#(\s+else[\s]+)cnf="\$1/openssl.cnf"(\s+fi)#$1cnf="\$1/openssl-1\.0\.0\.cnf"$2#g' -i /etc/openvpn/easy-rsa/2.0/whichopensslcnf

Пользителка (пользявка) для .bashrc

greplace()
{
  perl -0777pe "$1" -i $2
}

Или, что еще удобней и безопасней (-i надо добавлять вручную, чтоб заменило, а без -i в stdout для отладки выводить будет просто):

greplace()
{
  perl -0777pe "$1" $2 $3
}

А теперь заменим все "echo" внутри файла filename на адрес нашего айпишника, который выдаст нам curl из своего stdout (при условии, что сервис по адресу http://myip.dnsomatic.com доступен и работает исправно, чего я гарантировать не могу).

greplace 's/echo/'`curl -s http://myip.dnsomatic.com`'/g' -i filename

На случай, если http://myip.dnsomatic.com или какая-либо другая команда, будет возвращать данные с пробелами или символом ", обернём `curl -s http://myip.dnsomatic.com` в "".

greplace 's/echo/'"`curl -s http://myip.dnsomatic.com`"'/g' -i filename

И ещё можно вынести за скобки s

greplace()
{
  perl -0777pe s"$1" $2 $3
}

и писать вот так

greplace /search/replace/g filename

Правда без использования кавычек \ придётся экранировать: \\

greplace /\\s+/_/g filename

Спасибо всем этим прекрасным людям, лучшим сынам своего отечества, без которых этот пост был бы невозможен:
http://stackoverflow.com/questions/3365260/match-and-replace-multiple-newlines-with-a-sed-or-perl-one-liner
http://stackoverflow.com/questions/6302025/perl-flags-pe-pi-p-w-d-i-t
http://perldoc.perl.org/perlrun.html#Command-Switches

Была проблема с soundconverter который вместо преобразования flv в mp3 зависал навечно. Ffmpeg который теперь avconv называется, при переконвертации этого же файла выдавал ошибку "avconv Encoder (codec id 0) not found for output stream #0:0". Проблема решилась установкой пакета "ubuntu-restricted-extras".

sudo apt-get install ubuntu-restricted-extras

И всё зашибись. По крайн��й мере до тех пор пока еще каких-нибудь ошибок не получу кучу.

UPD: То же самое, только для Debian.

lsb_release -a
echo "deb http://www.deb-multimedia.org squeeze main non-free" >> /etc/apt/sources.list
apt-get update
apt-get install deb-multimedia-keyring
apt-get update
apt-get remove ffmpeg
apt-get install ffmpeg x264
ffmpeg --version

http://www.debiantutorials.com/how-to-install-ffmpeg-with-h-264mpeg-4-avc/

[ ]
 

Твики, уменьшающие изнашиваемость флешки и кое-какие раздражающие факторы.

  1. Отформатировать файловую систему в ext2, которая не ведет журнал изменений, следовательно уменьшится износ ячеек.

    ext2 noatime,nodiratime

  2. Смонтировать временные папки в оперативную память.

    /etc/fstab
    tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
    tmpfs /var/tmp tmpfs defaults,noatime,mode=1777 0 0

  3. Перенести кэщ файрфокса во временную директорию в оперативной памяти

    Firefox -> about:config --> browser.cache.disk.parent_directory --> /tmp

  4. Увеличить промежуток проверки диска при загрузке до 50 запусков и отменить проверку при превышении определенного количества дней.

    sudo tune2fs -c 50 -i 0 /dev/sdXN

[ ]
 

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

Конфиг менюшки находится в файле

~/.config/menus/xfce-applications.menu

И там в этом файле в самом его низу, в разделе Locations, есть такая директива

<Merge type="menus"/>

Которая выдирает все менюшки из различных уголков системы, таких как

~/.config/menus/applications-merged
/etc/xdg/menus/applications-merged
~/.local/share/applications

и многих других уголков, мне неведомых, поскольку слишком запутан сей конфиг для моих маломощных мозгов. Однако, саму эту директиву

<Merge type="menus"/>

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

[ ]
 
  1. Включить в BIOS обязательный Power On при восстановлении электроподачи.
  2. Отключить в BIOS ожидание клавиатуры при загрузке.
  3. Прописать в /etc/default/grub
    GRUB_RECORDFAIL_TIMEOUT=1
  4. Прописать в /etc/default/grub
    GRUB_TERMINAL=console
  5. Прописать в /etc/fstab nobootwait флаг

    UUID=ce752aa9-9682-492c-86ce-5c460f892805 /media/ce752aa9 ext3 rw,nobootwait 0 0

  6. Прописать в /etc/fstab нули

    UUID=ce752aa9-9682-492c-86ce-5c460f892805 /media/ce752aa9 ext3 rw,nobootwait 0 0>

  7. Совершить ритуальный
    sudo update-grub

Многословный вариант, который пока прочитаешь, забудешь что сделать надо было:

  1. Убрал необходимость тыкать кнопку после grub 2 fail. После внезапного отключения электричества, grub всегда требовал нажать кнопку, хотя к нему и клавиатуры-то не подключено. чтобы исправить это, необходимо отредактировать
    /etc/grub/default следующим образом:

    GRUB_RECORDFAIL_TIMEOUT=1
    sudo update-grub

    /etc/grub.d/00_header следующим образом:

    #if [ \${recordfail} = 1 ]; then
    # set timeout=-1
    #else
    set timeout=${GRUB_TIMEOUT}
    #fi

    После чего запустить grub-update

  2. Убрал графический режим в grub. При нормальной загрузке (не по recordfail) убунтусервер почему-то показывал мне кракозябры. Решить это удалось раскомментированием в /etc/grub/default

    GRUB_TERMINAL=console

    И последующим grub-update.

  3. Запретил автопроверку и ожидание дисков при загрузке (кроме корневого раздела). Поскольку лучше я ручками запущу e2fsck чем будет с моими данными происходить непонятно что с непонятно какими результатами. Для этого, в /etc/fstab добавил к строчкам опции

    nobootwait и режим 0

    ОБЯЗАТЕЛЬНО ПРОПИСАТЬ В /ETC/FSTAB NOOBOTWAIT ФЛАГ ДЛЯ КАЖДОГО ДИСКА

[ ]
 

Решение:
Обойти это ограничение возможно, убив deluge (это важно), и затем поправив ~/.config/deluge/web.conf ручками.

Злобные выпады и преамбула:
Не очень понятно, каким образом в столь талантливо написанном приложении как deluge может появиться max value '99999'. Я бы еще понял если бы там стояло ограничение по int или long. Помимо всего прочего, 99999 это ~ 1.15 дня. Именно не реже вы должны соединяться с веб-интерфейсом deluge, чтобы не пропала ваша сессия по cookie. Только вот у меня веб-морда deluge открыта для внешнего мира и в связи с этим пароль там 32-значный, с труднозапоминаемыми символами.

[ ]
 

При отключении шнура USB каждый раз отваливается раскладка. Это баг. Багрепоры писать не умею, поэтому исправил сам, путем редактирования /etc/default/keyboard. У меня стоит раскладка us colemak, поэтому

XKBLAYOUT="us,ru"
XKBVARIANT=","

исправил на

XKBLAYOUT="us,ru"
XKBVARIANT="colemak,"

И теперь она больше не отваливается.

[ ]
 

sudo dd if=./ubuntu-12.04-alternate-i386.iso|pv|sudo dd of=/dev/sdc

[ ]
 

"Dedicated grub partition", в противовес "separate boot" (когда /boot является частью операционной системы), располагается вне операционной системы на отдельном, специально созданном для загрузки других операционных систем, разделе. Краткая инструкция по установке:

  1. Выбрать или создать отдельный раздел, размером 100МБ (данные о необходимом пространстве в разных источниках варьируются от 1МБ до 60МБ и более).
  2. Отформатировать его в файловую систему Ext4 (или любую другую, если вы понимаете, для чего это вам нужно).
  3. Примонтировать этот раздел в /mnt (именно для временного монтирования изначально задумывалась данная директория, см. http://www.pathname.com/fhs/pub/fhs-2.3.html#MNTMOUNTPOINTFORATEMPORARILYMOUNT).
  4. Запустить grub-install следующим образом:

    sudo grub-install --root-directory=/mnt /dev/sdX

    , где /dev/sdX - имя диска, куда будет добавлена запись MBR, необходимая для того чтобы загрузка вообще происходила и происходила именно с раздела примонтированного сейчас на /mnt.

  5. Советуют также убрать ограничения прав доступа на выделенном grub - разделе, чтобы было проще редактировать grub.cfg из-под своего пользователя, а не из-под рута.

    sudo chmod 777 -R /mnt

    Не могу ни рекомендовать, ни опровергнуть данный пункт, поэтому просто упоминаю его здесь, возможно он также поможет решить какие-нибудь проблемы с GRUB, если они возникнут.

  6. Сгенерировать конфиг-файл для GRUB

    sudo grub-mkconfig -o /mnt/boot/grub/grub.cfg

  7. Редактировать или перегенерировать /mnt/boot/grub/grub.cfg вдальнейшем, в процессе использования, при необходимости. Необходимо помнить, что в случае автоматического генерирования /mnt/boot/grub/grub.cfg, все внесенные туда вручную изменения будут уничтожены.
[ ]