1

Линус Торвальдс представил релиз ядра Linux 3.3. Из основных улучшений можно отметить интеграцию изменений, подготовленных в процессе разработки платформы Android, поддержку новой архитектуры TI C6X, включение наработок по борьбе с негативным влиянием промежуточной буферизации пакетов (Bufferbloat), улучшенную реализацию RAID в Btrfs, возможность изменения размера ФС Ext4 на лету, интеграцию кода виртуального коммутатора Open vSwitch, альтернативную систему агрегации сетевых интерфейсов, новые средства для управления сетевыми приоритетами и возможность ограничения TCP-буфера в привязке к cgroup.

В новую версию принято около 9 тысяч исправлений от более тысячи разработчиков, размер патча - 43 Мб (для сравнения, размер патча ядра 3.2 - 99 Мб, 3.1 - 49 Мб, 3.0 - 44 Мб). Добавлено 10753 тыс. строк кода, удалено - 10698 тыс. строк. Около 40% всех представленных в 3.3 изменений связаны с драйверами устройств, примерно 26% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 12% связано с сетевым стеком, 5% - файловыми системами и 4% c внутренними подсистемами ядра.

Ядро 3.3 также примечательно преодолением очередного рубежа - размер исходного кода ядра превысил отметку в 15 млн строк. При этом 5.6 млн строк приходится на драйверы, 1.8 млн на специфичный для аппаратных архитектур код, 700 тыс на файловые системы, 533 тыс на звуковую подсистему, 493 тыс на сетевой стек. 97.22% кода ядра написано на языке Си, 2.47% на ассемблере, 0.15% на Perl и 0.04% на Shell. Отметка в 10 млн строк была пройдена в конце 2008 года, при выпуске ядра 2.6.27.

Наиболее интересные новшества ядра 3.3:

  • Системные сервисы

    • Интеграция некоторых улучшений и исправлений, подготовленных для ядра, используемого в платформе Android. В частности, перенесена поддержка ashmem (реализация разделяемой памяти, позволяющая маркировать незакреплённые страницы памяти, которые в последующем можно освободить в ситуации нехватки свободной памяти), механизм межпроцессного взаимодействия Binder IPC, ram console (возможность сохранить вывод консоли в специальной области ОЗУ, к которой можно получить доступ после перезагрузки в режиме диагностики), специализированный драйвер для ведения системного лога, реализация LMK (low memory killer, управление принудительным завершением приложений в случае нехватки памяти), новый вариант драйвера gpio.

    • Некоторые подсистемы ядра Android, например wakelocks, пока остаются неперенесёнными, но в конечном итоге планируется добиться интеграции всех наработок из ядра Android, что существенно упростит сопровождение кода, позволит сконцентрироваться на одном ядре при разработке драйверов и даст возможность использования последней версии ядра Linux при портировании Android;

    • Поддержка загрузки с использованием EFI (Extensible Firmware Interface). В состав ядра включен набор компонентов, необходимых для загрузки и запуска образа ядра (x86 bzImage) непосредственно прошивкой EFI. Образ ядра bzImage выглядит для прошивки как приложение EFI. При этом, созданный образ bzImage является универсальным и кроме поддержки EFI может использоваться без изменений и с классическими загрузчиками, вызываемыми из BIOS;

    • Интеграция патча, который решает проблемы с повышенным потреблением энергии на ноутбуках, поддерживающих технологию ASPM (Active State Power Management) для карт PCI Express. Проблема проявляется начиная с ядра 2.6.38, в котором была реализована новая система инициализации ASPM, и проявляется в повышении энергопотребления на 10-30%. Патч имитирует поведение Windows Vista при инициализации системы управления питанием, т.е. не очищает статус ASPM для всех устройств в процессе загрузки, оставляя параметры, выставленные BIOS. В феврале данный патч уже был распространён для прошлых версий ядра в виде обновлений 3.0.20 и 3.2.5;

    • Поддержка технологии DMA-BUF для совместного использования буферов. При помощи DMA-BUF различные подсистемы ядра (V4L2, DRI и т.п.) могут совместно использовать буферы между различными драйверами устройств;

  • Дисковая подсистема, ввод/вывод и файловые системы

    • Расширение возможностей файловой системы Btrfs:

      • Полностью переработанная реализация операции балансировки ("balance"), используемых для полной перезаписи данных файловой системы, в чём возникает необходимость, например, при добавлении дополнительного диска, на который следует перераспределить уже имеющиеся в ФС данные. Таким образом, операция балансировки позволяет привести ФС в сбалансированное состояние, но обычно перестроение является длительной операцией и занимает много часов. Новая реализация кода балансировки поддерживает возможность приостановки процесса перестроения и его последующего возобновления, а также возможность вывода подробной информации о статусе выполнения операции. Процесс балансировки теперь основан на использовании профилей данных и метаданных, что позволяет организовать балансировку только пустых групп блоков.

      • Поддержка перестроения данных (restriping) между различными RAID-уровнями (т.е. можно перейти от одного типа RAID на другой). Поддержка новой возможности реализована в ветке "parser" инструментария btrfs-progs;

      • Новая отладочная утилита "integrity check", предназначенная для расширенного тестирования целостности данных разработчиками ФС в процессе выявления ошибок. Суть тестирования состоит в обеспечении дополнительного слежения за соблюдением непротиворечивности записываемых на диск данных, выявляя ситуации при которых возможно нарушение целостности ФС;

    • Новая реализация механизма изменения размера ФС Ext4. В отличие от существующей в настоящее время системы изменения размера, новый механизм полностью реализован в ядре, а потому работает намного быстрее. В тестах производительности он значительно обогнал прошлую реализацию, позволив изменить размер файловой системы, с 20 Гб до 230 Гб за 3.3 секунды, вместо более чем 5 минут, которые понадобились утилите resize2fs. Для выполнения изменения размера в ядро был добавлен новый ioctl EXT4_IOC_RESIZE_FS;

  • Сетевая подсистема

    • Альтернативная реализация системы агрегирования сетевых интерфейсов. Реализовано новое сетевое устройство "teaming", изначально позиционируемое как быстрая, масштабируемая, прозрачная и управляемая из пространства пользователя замена механизму "bonding". Teaming позволяет создавать виртуальные сетевые интерфейсы, объединяющие несколько физических Ethernet-адаптеров, что обычно делается для обеспечения более высокой пропускной способности или для обеспечения отказоустойчивых конфигураций. В настоящее время teaming поддерживает два режима балансировки пакетов между связанными интерфейсами: round-robin и active-backup. Для организации управления новым устройством подготовлена специальная библиотека libteam, а также набор демонстрационных приложений;

    • Контрольная группа net_prio для управления сетевыми приоритетами (Network priority cgroup). Используя cgroup net_prio администратор теперь может динамически управлять приоритетом сетевого трафика, генерируемого различными приложениями. Традиционно, приложение может установить приоритет для своего трафика на этапе создания сокета через опцию SO_PRIORITY, но к сожалению это не всегда возможно. Cgroup позволяет администратору привязать процессы к группе, которая будет иметь иной приоритет для исходящих пакетов, отправляемых через заданный сетевой интерфейс;

    • Поддержка байтового ограничения очередей передачи данных, реализованного в рамках проекта по разработке средств для борьбы с эффектом "Bufferbloat", под которым понимается феномен негативного влияния промежуточной буферизации пакетов на пропускную способность, однородность потока (jitter) и время прохождения пакетов (latency). В состав ядра 3.3 интегрирована поддержка задания ограничения на размер данных, помещаемых в очередь передачи данных для заданного сетевого устройства. В результате появилась возможность обеспечения приемлемой транзитной задержки (latency) для высокоприоритетных пакетов, без очистки аппаратных очередей, когда появляются данные для отправки. Настройка ограничений осуществляется через файлы tx-n в директории byte_queue_limits внутри sysfs;

    • Возможность ограничения размера TCP-буфера в зависимости от cgroup. Механизм cgroup позволяет установить ограничения на ресурсы группы процессов, но эти ограничения ранее затрагивали только память в пространстве пользователя. В некоторых ситуациях, работа процессов приводит к большим расходам памяти на уровне ядра, которую хотелось бы тоже ограничить. Представленная возможность является первым шагом к реализации таких ограничений и позволяет управлять потребление памяти ядра, выделяемой для буферизации TCP-соединений. В частности, теперь можно в привязке с cgroup задать ограничение на размер буферов, используемых кодом TCP;

  • Виртуализация и безопасность

    • Интеграция Open vSwitch, программной реализации мультипротокольного сетевого коммутатора. Open vSwitch поддерживает как стандартные управляющие интерфейсы (sFlow, Netflow, RSPAN, CLI), так и позволяет подключать дополнительные программные расширения или использовать для управления протоколы Openflow и OVSDB. В отличии от уже входящей в состав ядра подсистемы сетевых мостов, Open vSwitch изначально создан для решения более комплексных задач, таких как организация сетевого взаимодействия между виртуальными машинами;

    • Набор патчей с решением некоторых проблем с производительностью Xen Dom0. Патчи позволяют организовать информирование гипервизора о текущих режимах энергопотребления (cpufreq). Поэтому, без данных патчей Xen не может инициировать выставление оптимальной частоты работы CPU, необходимой для достижения максимальной производительности;

  • Оборудование и аппаратные архитектуры

    • Поддержка LPAE (large physical address extension) для 32-разрядной архитектуры ARMv7, что позволит организовать адресацию более 4 Гб памяти;

    • Поддержка архитектуры C6X, используемой в одноядерных и многоядерных DSP-процессорах C64x и C66x, выпускаемых компанией Texas Instruments и используемых в широком спектре современных мобильных платформ (DaVinci, OMAP3, OMAP4). Изначально поддержка C6X для Linux обеспечена проектом linux-c6x.org;

    • В DRM-модуле для карт Radeon обеспечена поддержка вывода звука через порт HDMI для карт серии Radeon HD 5000 "Evergreen";

    • Улучшение поддержки карт Sandy Bridge и Ivy Bridge в DRM-модуле Intel;

    • В DRM-модуле Nouveau для некоторых карт семейства GeForce добавлена поддержка вывода звука через порт HDMI, для карт NVD0-Fermi добавлена поддержка Page Flipping, улучшена поддержка MXM, добавлен код для определения типа памяти, возможность управления частотой GPU для карт Fermi;

    • Множество других улучшений и изменений, связанных с поддержкой аппаратных устройств.

Источник »
Главная ссылка к новости »

2

А я так и не осилил vga_swircheroo, пишет что нет такого файла или каталога :-(

АХАХХАХААХАХАХХАХАХ!!!11
То есть "Мяу"

3

 Консоль:
lupo@gentoo-laptop ~ % uname -r
3.3.0-funtoo-r0a

Был, был и весь вышел...

4

на ноут надо поставить, может теперь электричества расходовать будет поменьше ab

При укусе ядовитой змеи, держите её голову на расстоянии от себя, чтобы она не укусила вас в ответ...

5

 Консоль:
chipset # uname -r
3.3.0-funtoo-r0a

ОС: Gentoo/Funtoo

6

у нас в арче еще нема ac

7

xtables поддержку вернули?

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

8

newzenon пишет:

xtables поддержку вернули?

+ открыть спойлер

 Консоль:
gentoo-laptop linux # zegrep NETFILTER_XT /proc/config.gz
CONFIG_NETFILTER_XTABLES=m
CONFIG_NETFILTER_XT_MARK=m
CONFIG_NETFILTER_XT_CONNMARK=m
CONFIG_NETFILTER_XT_SET=m
CONFIG_NETFILTER_XT_TARGET_AUDIT=m
CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
CONFIG_NETFILTER_XT_TARGET_CT=m
CONFIG_NETFILTER_XT_TARGET_DSCP=m
CONFIG_NETFILTER_XT_TARGET_HL=m
CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m
CONFIG_NETFILTER_XT_TARGET_LED=m
CONFIG_NETFILTER_XT_TARGET_MARK=m
CONFIG_NETFILTER_XT_TARGET_NFLOG=m
CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
CONFIG_NETFILTER_XT_TARGET_RATEEST=m
CONFIG_NETFILTER_XT_TARGET_TEE=m
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
CONFIG_NETFILTER_XT_TARGET_TRACE=m
CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
CONFIG_NETFILTER_XT_MATCH_COMMENT=m
CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
CONFIG_NETFILTER_XT_MATCH_CPU=m
CONFIG_NETFILTER_XT_MATCH_DCCP=m
CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m
CONFIG_NETFILTER_XT_MATCH_DSCP=m
CONFIG_NETFILTER_XT_MATCH_ECN=m
CONFIG_NETFILTER_XT_MATCH_ESP=m
CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
CONFIG_NETFILTER_XT_MATCH_HELPER=m
CONFIG_NETFILTER_XT_MATCH_HL=m
CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
CONFIG_NETFILTER_XT_MATCH_LENGTH=m
CONFIG_NETFILTER_XT_MATCH_LIMIT=m
CONFIG_NETFILTER_XT_MATCH_MAC=m
CONFIG_NETFILTER_XT_MATCH_MARK=m
CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
CONFIG_NETFILTER_XT_MATCH_NFACCT=m
CONFIG_NETFILTER_XT_MATCH_OSF=m
CONFIG_NETFILTER_XT_MATCH_OWNER=m
# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
CONFIG_NETFILTER_XT_MATCH_QUOTA=m
CONFIG_NETFILTER_XT_MATCH_RATEEST=m
CONFIG_NETFILTER_XT_MATCH_REALM=m
CONFIG_NETFILTER_XT_MATCH_RECENT=m
CONFIG_NETFILTER_XT_MATCH_SCTP=m
CONFIG_NETFILTER_XT_MATCH_SOCKET=m
CONFIG_NETFILTER_XT_MATCH_STATE=m
CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
CONFIG_NETFILTER_XT_MATCH_STRING=m
CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
CONFIG_NETFILTER_XT_MATCH_TIME=m
CONFIG_NETFILTER_XT_MATCH_U32=m

Был, был и весь вышел...

9

Lupo Alberto, это не полная поддержка, только цели, модулей не вижу.

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

10 (21.03.2012 19:41:56 отредактировано zenon)

ы. Проверить просто:

iptables -v -I INPUT 1 -i eth0 -m psd -j REJECT
История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

11

newzenon, это не оно?

 Консоль:
gentoo-laptop linux # eix xtables
* net-firewall/xtables-addons
     Available versions:  1.37 (~)1.38 (~)1.39 {{kernel_linux modules xtables_addons_account xtables_addons_chaos xtables_addons_checksum xtables_addons_condition xtables_addons_delude xtables_addons_dhcpmac xtables_addons_dnetmap xtables_addons_echo xtables_addons_fuzzy xtables_addons_geoip xtables_addons_gradm xtables_addons_iface xtables_addons_ipmark xtables_addons_ipp2p xtables_addons_ipset4 xtables_addons_ipset6 xtables_addons_ipv4options xtables_addons_length2 xtables_addons_logmark xtables_addons_lscan xtables_addons_pknock xtables_addons_psd xtables_addons_quota2 xtables_addons_rawnat xtables_addons_steal xtables_addons_sysrq xtables_addons_tarpit xtables_addons_tee}}
     Homepage:            http://xtables-addons.sourceforge.net/
     Description:         extensions not yet accepted in the main kernel/iptables (patch-o-matic(-ng) successor)

Был, был и весь вышел...

12

Увы...  :o

 Консоль:
gentoo-laptop linux # iptables -v -I INPUT 1 -i eth0 -m psd -j REJECT
REJECT  all opt -- in eth0 out *  0.0.0.0/0  -> 0.0.0.0/0   psd weight-threshold: 21 delay-threshold: 300 lo-ports-weight: 3 hi-ports-weight: 1  reject-with icmp-port-unreachable
iptables: No chain/target/match by that name.

Был, был и весь вышел...

13

Lupo Alberto, оно то оно, а работает? Я уже навовозился порядком ... Правило любое попробовать надо, сначала конечно собрать xtables-addons.

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

14

newzenon пишет:

Правило любое попробовать надо, сначала конечно собрать xtables-addons.

Собрать-то, собралось, но не все «соответствия» в ядре есть.

Был, был и весь вышел...

15

net-firewall/xtables-addons при установке «вытянул» virtual/linux-sources-2.6, так что, думаю, не «доросли» они ещё до третьего ядра.

Был, был и весь вышел...

16

Lupo Alberto пишет:

net-firewall/xtables-addons при установке «вытянул» virtual/linux-sources-2.6, так что, думаю, не «доросли» они ещё до третьего ядра.

Да не, все из-за того что главного разработчика не стало.  ac

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

17

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

И вообще есть смысл самому постоянно с кернеля брать и ставить ядро? Или это чисто пунктики у заядлых линуксоидов ?

Никогда не бойся делать то, что ты не умеешь. Помни, "КОВЧЕГ" был построен ЛЮБИТЕЛЕМ. ПРОФЕССИОНАЛЫ построили "ТИТАНИК"

18

Rassol2 пишет:

И вообще есть смысл самому постоянно с кернеля брать и ставить ядро? Или это чисто пунктики у заядлых линуксоидов ?

Чаще «пунктики»  oO

Был, был и весь вышел...

19

Lupo Alberto пишет:
Rassol2 пишет:

И вообще есть смысл самому постоянно с кернеля брать и ставить ядро? Или это чисто пунктики у заядлых линуксоидов ?

Чаще «пунктики»  oO

а тогда все норм.

Вот так получается что в винде рас в 4 года новый релиз и все "уго какая скорость работы!!!" А мы в течении этих 4 лет постоянно обновляемся и не замечаем что стало быстрее работать.

Никогда не бойся делать то, что ты не умеешь. Помни, "КОВЧЕГ" был построен ЛЮБИТЕЛЕМ. ПРОФЕССИОНАЛЫ построили "ТИТАНИК"

20

В Ф-16 сегодня обновилось до 3.3.
Или у меня в квартире холодней стало, или температура проца и правда на 2-3 градуса упала...

21

Rassol2 пишет:

И вообще есть смысл самому постоянно с кернеля брать и ставить ядро? Или это чисто пунктики у заядлых линуксоидов ?

Есть, только если у вас экзотическое железо на домашнем компе, и в новом ядре обещанно его поддержка.
А для серверов всегда есть смысл, так как в новых ядрах исправляются баги (часто появляются новые bx ), они делаются более стабильными, ну и вопросы безопастности тоже не на последнем месте. А что касается багов, пришедших с обновлениями, то я обновляю ядра не на последнюю, а на предпоследнюю версию, как выйдет следующее, так обновлю до того, что последнее сейчас, и т.д. И пока, слава Богу, ничего не падало.

Истина ускользает от тех кто отказывается её видеть обоими глазами.
Талантам нужно помогать, бездарности пробьются сами.
В Туле настолько суровые парни, что вместо пены для бритья, используют пену монтажную.
cat /broken/hands > /dev/null

22

Vadimsky пишет:

А для серверов всегда есть смысл, так как в новых ядрах исправляются баги

На серверах нужно использовать стабильные дистрибутивы. Ставить свежее ядро на боевой сервер нонсенс! Хотя, конечно, некоторые это делают, но рано или поздно они об этом пожалеют.

23

Есть, только если у вас экзотическое железо на домашнем компе, и в новом ядре обещанно его поддержка.
А для серверов всегда есть смысл, так как в новых ядрах исправляются баги (часто появляются новые  ), они делаются более стабильными, ну и вопросы безопастности тоже не на последнем месте. А что касается багов, пришедших с обновлениями, то я обновляю ядра не на последнюю, а на предпоследнюю версию, как выйдет следующее, так обновлю до того, что последнее сейчас, и т.д. И пока, слава Богу, ничего не падало.

вот это интересно но я как то не сильно желаю трогать на сервере свое ядро, дома я бубунте 10.04 я бы обновил но скоро релиз 12.04 там уже посмотрим. Лишние телодвижения.

А вот на сервере!!!
2.6.26-2 ab стрёмно трогать да и как мне объяснили что в новых ядрах поддерживаются новое железо, всякие USB которые на сервере не нужны. Так что можно ездить и на старом ядре. На сколько это верное утверждение ?

Никогда не бойся делать то, что ты не умеешь. Помни, "КОВЧЕГ" был построен ЛЮБИТЕЛЕМ. ПРОФЕССИОНАЛЫ построили "ТИТАНИК"

24

А

Rassol2 пишет:

Так что можно ездить и на старом ядре. На сколько это верное утверждение ?

Есть такая поговорка: не сломалось - не чини.
Тоесть если всё работает и всё устраивает, то трогать конечно не надо.

Thinker пишет:

На серверах нужно использовать стабильные дистрибутивы. Ставить свежее ядро на боевой сервер нонсенс! Хотя, конечно, некоторые это делают, но рано или поздно они об этом пожалеют.

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

Истина ускользает от тех кто отказывается её видеть обоими глазами.
Талантам нужно помогать, бездарности пробьются сами.
В Туле настолько суровые парни, что вместо пены для бритья, используют пену монтажную.
cat /broken/hands > /dev/null

25 (22.03.2012 13:02:38 отредактировано zenon)

Ну в плане серверов Debian хорош со своими секьюрити апдейт, которые регулярно выходят, хоть и ядро не самое свежее, поддержка есть.

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

26

Vadimsky пишет:

Но если  в ядре найдена дыра, которая угрожает моим данным, то не поставить ядро - вот это нонсенс!

дыры закрываются обновлениями безопасности.

27

Thinker пишет:

дыры закрываются обновлениями безопасности.

Предоставляемые мантейнерами дистрибутивов.
Спасибо, а то я как то и не знал даже  ag

Истина ускользает от тех кто отказывается её видеть обоими глазами.
Талантам нужно помогать, бездарности пробьются сами.
В Туле настолько суровые парни, что вместо пены для бритья, используют пену монтажную.
cat /broken/hands > /dev/null