LINUX.ORG.RU

Избранные сообщения krakatau

Тайлинг моей мечты

Форум — Talks

В последнее время занимался немного оптимизацией управления окнами в awesome, и теперь получившейся хренью сил нет охота поделиться. Из интересного есть специальный графически оформленный (да, нужен compton) режим для манипуляции окнами, собственная «полуручная» схема тайлинга, нескучные заголовки с табами.

Видео чтобы не описывать: раз, два.

Конфиги можно потыкать палочкой все там же. Отзывы и мнения приветствуются.

 

Worron ()

Разукрашка

Галерея — Скриншоты

После прочтения поста вспомнил свои прошлогодние затеи с раскрашиванием терминалов. Заново прочитал это и это, немного перепелил вывод скрипта под себя.

Скрипт автоматом генерирует цветовую схему для терминалов и GTK2/3, настроен под тёмную гамму. Я использую для этих наркоманств угловатую тему Mist, но вы можете перепилить под ту же более симпатичную и аккуратную oomox, сделать опцию для светлого оформления и терминалов (или, если хотите, я могу).

( Ну и как работает твоя развалюха? )

Скрипт

Mist-Colorized

PNG

>>> Просмотр (2715x1207, 1342 Kb)

 , , , ,

zezic ()

прототип виджета хоткеев для awesome wm

Галерея — Скриншоты

«{Super,Alt,Shift,Control}+?» вызывает попап

сам виджет: https://github.com/actionless/awesome_config/blob/devel/actionless/hotkeys.lua (там дикий ужас, не было времени сделать красиво, хотелось по-скорее увидеть как оно будет работать)

пример файла с самими хоткеями: https://github.com/actionless/awesome_config/blob/devel/config/keys.lua

PNG почему-то не захотело загружаться:

Оригинал

>>> Просмотр (1600x900, 323 Kb)

 

actionless ()

Gentoo на ZFS

Галерея — Скриншоты

Не спрашивайте - зачем. Просто так, потому что можно. Ну и к тому же можно ссылаться на этот топик в ответ на вбросы бздунов насчёт «а этот ваш Линукс умеет ZFS?». Умеет, как видите.

Краткий мануал по красноглазию:

1) Создаём раздел для ZFS. После этого потребуется создать пул. Пул - это что-то вроде виртуального устройства.

zpool create zero /dev/sda2

«zero» - это моё название пула. У вас оно может быть любым другим. Просто создать пул как-то неинтересно, поэтому повключаем всякие разные плюшки ZFS. Включаем дедупликацию:

zfs set dedup=on zero

и сжатие:

zfs set compress=lzjb zero

и отключаем обновление временных меток:

zfs set atime=off zero

ну и отключаем монтирование средствами самой ZFS дабы избежать неудобств на стадии сборки системы в chroot:

zfs set mountpoint=legacy zero

2) Теперь у нас есть чистый пул, но пул - это ещё не ФС. Чтобы установить туда систему, нужно создать файловые системы на этом пуле. Прелесть ZFS в том, что на одном пуле можно создать кучу ФС, каждой из которых можно задать свои опции. Например, я создал ФС для корня (и уже при создании говорим zfs, что монтировать создаваемые ФС мы будем вручную через mount):

zfs create -o mountpoint=legacy zfs/system

Эта ФС унаследовала все опции (дедупликация, сжатие) от пула, потому что для корня такие опции, в общем-то, неплохи. Далее я создал ФС специально для дерева portage, оверлеев и каталога с исходниками ядра:

zfs create -o mountpoint=legacy zfs/src

Так как на этой ФС будет куча текстовых файлов, обращаться к которым придётся сравнительно редко, здесь имеет смысл задействовать несколько иные опции. Например, усилить сжатие (после дефиса указана степень сжатия, диапазон - от 1 до 9, по умолчанию 6):

zfs set compress=gzip-9 zero/src

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

zfs set dedup=off zfs/src

Отдельная ФС для /home:

zfs create -o mountpoint=legacy zero/home

Опции пусть будут унаследованы от пула. Далее я перестраховался и создал отдельную ФС для /var, потому что в какой-то там рассылке видел упоминание каких-то багов при дедупликации на /var. Посты были датированы ещё прошлым годом, с тех пор утекло много воды, но бережёного случай бережёт:

zfs create -o mountpoint=legacy zero/var
zfs set dedup=off zero/var

3) Далее у нас стандартная сборка Gentoo. Монтируем будущий корень:

mount -t zfs zero/system /mnt/system

и остальные ФС:

mount -t zfs zero/src /mnt/system/src
mount -t zfs zero/home /mnt/system/home
mount -t zfs zero/var /mnt/system/var
mount /dev/sda1 /mnt/system/boot

После чего монтируем нужные виртуальные ФС (proc, dev, sys), монтируем хранилище архивов с исходниками пакетов, в общем, всё по хэнбуку, поэтому не стану заострять на этом внимания. Внимание требуется на этапе установки и сборки ядра. Устанавливать нужно это милое ядрышко (перед этим нужно будет включить флаг zfs, я думаю, разберётесь сами):

layman -a init6
emerge geek-sources

На этапе сборки ядра нужно учесть некоторые детали. Например, в мануалах написано, что нужно включить опцию CONFIG_KALLSYMS и отключить CONFIG_PREEMPT (т.е. установить её в значение «Server») Первую-то я включил, а отключать вторую меня жаба задавила (эта опция влияет на отзывчивость ядра), тем более что на Гитхабе я читал, что в последних версиях zfsonlinux проблемы с этой опцией ядра устранены. После этого, конечно, включаем SPL и ZFS. Первая опция находится прямо в корне конфигуратора, а вторая - в секции «File systems». А вот далее важно не пойти на поводу мануалов Гитхаба, ибо это чревато феерическим ментальным трахом. В мануалах тех написано, что нужно добавить указанный там оверлей и установить оттуда особые версии dracut и genkernel для сборки initramfs с поддержкой ZFS, ибо даже жёсткое включение ZFS в ядро не позволяет загрузить систему с корня ZFS (нужны утилиты для работы с ZFS, которые должны находиться в initramfs). Собственно, я так и сделал. После чего на протяжении дня сношался с кривоглючным dracut, упорно не желавшим включать утилиты ZFS в initramfs. Я даже вытягивал какие-то древние версии dracut и устанавливал их через make install, потом уже добавлял нужные файлы в initramfs вручную - чего я только ни делал! А оказалось, что нужно было тупо забить на эти горе-мануалы и установить самый стандартный genkernel из официального дерева. И всё правильно собирается следующей командой:

genkernel all --no-clean --makeopts=-j16 --zfs --bootloader=grub2

вот и вся недолга. Если перед этим вы успели собрать и установить Grub2, то genkernel сам добавит в grub.cfg нужные опции (укажет ФС, с которой грузить систему, в моём случае это zero/system).

На стадии формирования списка загружаемых демонов нужно сделать следующее:

rc-update add zfs boot
rc-update add zfs-shutdown shutdown

4) Монтирование файловых систем ZFS. Вообще, монтировать их можно двумя способами: посредством утилиты zfs через задание точки монтирования:

zfs set mountpoint=$DIR $FS

или через fstab с предварительным отключением автомонтирования:

zfs set mountpoint=legacy $FS

Запись в fstab для, например, корня, не содержит ничего сверхъестественного:

zero/system        /        zfs        noatime        0 0

Способ монтирования выбирать вам. Следует лишь иметь в виду, что при монтировании через fstab zfs-shutdown будет ругаться при выключении.

5) Вообще это нужно делать раньше, но, в принципе, пофиг:

hostid > /etc/hostid (это в chroot)
cp /etc/zfs/zpool.cache /mnt/system/etc/zfs

6) Если у вас меньше 2 Гб оперативки, то ZFS своим кэшем может сожрать всю раму и завесить систему. Поэтому имеет смысл ограничить её аппетиты:

echo "options zfs zfs_arc_max=512M" > /etc/modprobe.d/zfs.conf

Я выставил 1 Гб.

7) Отмонтируем все ФС, делаем

zpool export zero

и перезагружаемся в свежую систему. Не знаю, как получится у вас, а лично у меня initramfs не может импортировать пул и потому вываливается в busybox. Не проблема, входим в его шелл и импортируем пул вручную:

zpool import zero
exit

и система далее нормально загружается.

Какие профиты? Ну, она явно быстрее ранее используемой мной Btrfs. Опять же, на Btrfs нет дедупликации, и сжатие можно применить/отключить только на весь раздел. Сжатие lzjb не так заметно экономит место (это просто быстрый алгоритм), а вот gzip-9 сжал дерево portage с 350 Мб до 256 Мб, а каталог исходников ядра - так вообще в 2 раза, с 800 с лишним Мб до 400 с лишним. Причём на скорости сборки ядра это практически не отразилось (замерял через time). А ещё в ZFS есть контрольные суммы, так что о целостности системы можно вообще не беспокоиться. Но самое главное, конечно - это снапшоты. Я, попробовав раз снапшоты ещё в Btrfs, так и не смог от них отказаться.

Маленькое дополнение: почитав преисполненные страха комментарии про снижение скорости из-за дедупликации я её таки отключил на всех ФС. И ещё: возможно, я что-то не так делал, но монтирование ZFS посредством утилиты zfs я так и не осилил нормально. В итоге я просто выставил legacy на все ФС, внёс их в fstab и выкинул zfs-shutdown из скриптов выключения.

>>> Просмотр (1280x2048, 1178 Kb)

 , , , ,

Kindly_Cat ()