Linux from scratch gentoo

Знакомьтесь — Linux From Scratch

Вместо вступления

«Хочешь начать изучать GNU/Linux? Начни с Linux From Scratch.»

Единственный бумажный дистрибутив

LFS (здесь и далее аббревиатура от Linux From Scratch) – книга, написанная Герардом Бикмансом, описывающая процесс сборки минимального рабочего варианта GNU/Linux из исходных кодов. Почему бумажный? В свое время книгу можно было купить в твердом переплете, что делает «дистрибутив» несколько необычным, не правда-ли? Помимо самой книги, для сборки конечно-же понадобится интернет (или заранее загруженные исходные коды), свободный раздел на жестком диске, и любая операционная система на базе ядра Linux, имеющая компилятор. Лично я всегда использую либо уже собранный дистрибутив LFS, либо полную установку Slackware – в нем есть все необходимое, чего не скажешь про (например) Ubuntu. Конечно, всегда можно загрузить нехватающие пакеты, но ведь мы хотим только-только научиться линуксу? А Slackware даже в своей базовой установке и без конфигурирования предоставляет требуемый инструментарий.

Следует сказать сразу — дистрибутив собранный по книге LFS не умеет толком ничего. Вернее, ничего такого, что потребуется неискушенному пользователю. Он умеет включаться, выключаться, перезагружаться, использовать Ethernet подключение, но что самое главное — компилировать. Так существуют другие книги, теперь уже поддерживаемые сообществом — Beyond LFS позволяет собрать те самые, интересные пользователю, программы. От браузера и графической среды, до систем управления базами данных и DHCP сервера. Книга имеет свойство отставать в версии от базовой книги, но полученный от LFS опыт обычно достаточен, для самостоятельного разрешения конфликтов версий. Три другие книги — Automated LFS, Cross LFS и Hardened LFS полностью соответствуют названиям и выходят за пределы этой статьи. Впрочем, всегда можно почитать в интернете, правда?

Но почему начинать с него?

Все очень просто, если не сказать — до смешного. Помимо инструкций, в книге много теоретического (но крайне сжатого и как следствие — не заунывного) материала. Установите Ubuntu. Вы знаете что делает пакет Libtool? Или Gawk? После пары успешных сборок LFS, вы будете знать каждый пакет в своей системе и что самое главное — представлять, как они взаимодействуют. Да, состав системы минимальный, но это постоянно подогревает интерес к ее усовершенствованию. Приучит частенько обращаться за помощью к Google и читать англоязычную документацию. Поначалу вы не будете понимать и половины своих действий, внимательно перепечатывая или копируя блоки кода в консоль. Но в самом конце, осознание того, что эту неказистую, без поддержки графики и вашей мощной видеокарты, без новомодного Aero и сенсорных экранов, операционную систему вы собрали сами, придаст вам такой запас сил и гордость, что вы сами потянитесь за новыми знаниями и новыми победами. Я немного утрирую, но ощущения после первой перезагрузки в новую систему сложно забыть даже сейчас.

Цифры и суровая правда жизни

LFS вовсе не минимальный по своему весу дистрибутив. Для сборки потребуется порядка 3 свободный гигабайтов на диске (это помимо уже рабочей Linux-Based системы) — тем не менее, после определенных танцев, систему можно будет превратить в Live-CD. Если у меня будет такая возможность, я расскажу как это делается, в последствии. Компиляция всего и вся (с учетом необходимости создания конфигурационных файлов и прочего) занимает около двух дней. Это если с перерывами на сон, питание и отключение компьютера на ночь. С другой стороны, это зависит от производительности компьютера, на котором собирается система. Моей первой жертвой был ноутбук MSI X-340 — процессор Intel Core 2 Solo с тактовой частотой 1.2 гигагерца (вообще говоря, LFS рекомендуется собирать на одноядерной системе). Оперативная память — 2GB DDR2. Вполне достаточно даже более низких характеристик, а на быстром процессоре сборка пойдет значительно быстрее.

Кстати, приблизительное время сборки каждого из пакетов указано в учебнике. За единицу времени, принимается время сборки пакета Binutils — ассемблера, линкера и ряда других, более мелких утилит для работы с объектными файлами. На вышеуказанной системе это заняло три минуты.

Состав дистрибутива

Перечислять все входящие в LFS пакеты не имеет большого смысла. Список получится длинным, и практически ни о чем не говорящим новичку; избыточным для человека разбирающегося. В этом небольшом разделе я лишь хотел дать несколько общих советов. Во-первых, собирая пакет, не описанный в книге, загляните в репозиторий патчей — возможно его уже адаптировали для использования в LFS. Во-вторых, BLFS почти полностью состоит из опциональных пакетов — просто выбирайте те, которые вам нужны и смело добавляйте в свою сборку LFS. И третье: с самого начала используйте пакетный менеджер. В книге этому уделяется глава, но практические инструкции отсутствуют чуть менее, чем полностью. Я лишь могу порекомендовать Guarded Installation Tool – написанный на Bash’е скрипт, обеспечивающий минимальный набор команд, для управления пакетами, зависимостями и версиями. В LFS этого будет достаточно. В последствии вы можете скомпилировать из исходных кодов APT или DPKG — это неплохо освещено на форумах сообщества.

Вместо заключения

За прошедшие полтора года я сильно продвинулся в своем изучении. Продвинулся со стадии «Есть такая операционная система» до уровня «Подниму сервер под Gentoo за трое суток». Я еще очень далек от идеала и вряд ли могу даже называть себя настоящий линуксоидом — на домашнем компьютере уживаются старенькая Windows XP и Xubuntu 10.10, но знаете что я отвечаю, когда меня спрашивают с чего начать изучать линукс? Начните с Linux From Scratch.

Источник

LFS vs Gentoo Handbook

Зачем вообще нужен linux from scratch, если уже есть Gentoo?

Да, это тупняк, но мне действительно непонятно, зачем идти более неудобным путём, если ничего дополнительного это не даёт.

Читайте также:  Не запускаются виджеты windows 10

UPD:
и это не я один не понимаю — 1 (вытащил из списка похожих топиков)

Зачем покупать картинки распиленными на множество частей, если можно купить целую и сразу повесить на стену?

Нет, тут выбор в покупке картинки из крупных кусочков (gentoo) и из мелких кусочков (LFS).

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

или даже не так. Кусочки вообще одинакового размера, только в одном случае к ним прилагается инструкция по сборке (LFS), а в другом случае — робот-прораб, которые помогает собирать (Gentoo). Т.е. профита в LFS нет никакого совсем, продавая его нам, нас обвешивают.

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

Открою вам секрет: чем больше кусочков, тем больше фана. И стоят такие пазлы дороже.

фан происходит от осознания своеё крутизны, которая позволит на какой-то реальной задаче получить профит и в идеале захватить мир.

А тут профит одинаковый. Единственное что, в LFS лучше, можно нечаянно стать C++ разработчиком, но кому это нужно в 21-м веке, когда на дворе стоит Java ?

LFS на практике скорее средство создания дистра. Так что если не хочешь чтобы твой дистр был debian-based или gentoo-based, то начинай с LFS. А как ты думаешь те же gentoo с debian создавались? Сейчас это все менее актуально, да. Ну, или just for fun.

LFS нужен исключительно для понимания устройства системы. Гента даёт только гентуспецифичные знания.
Гента — это гигантская временная черная дыра. Трата времени на генту — абсолютно бесполезна потому, что результатом станут умения и знания, которые можно применить лишь в генте. Круг замыкается — вы тратите больше времени на то, чтобы больше времени потратить на генту с тем, чтобы получившиеся знания направить на генту и тратить время и т.д.

Можно подумать, что в LSB знания не специфичные, цитирую: «The LSB has five separate standards: Core, C++, Desktop, Runtime Languages, and Printing»

Вопросы:
1) почему есть printing, но нет scanning, videocapturing, sound input, sound output ?
2) почему есть C++, но нет Scheme и Lisp (не говорю про java-у)
3) Чем Runtime Languages отличаются от C runtime в glibc ? Зачем их выделять отдельно так и почему там только Perl и Python?

или даже не так. Кусочки вообще одинакового размера, только в одном случае к ним прилагается инструкция по сборке (LFS), а в другом случае — робот-прораб, которые помогает собирать (Gentoo). Т.е. профита в LFS нет никакого совсем, продавая его нам, нас обвешивают.

кому-то все таки нравится именно такой вариант.

кому-то все таки нравится именно такой вариант.

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

Тред эталонного тупняка.

в LFS . можно нечаянно стать C++ разработчиком

Разбил лицо фейспальмом.

стать C++ разработчиком, но кому это нужно в 21-м веке, когда на дворе стоит Java ?

Разбил второе лицо фейспальмом.

Это что, клон anonimous-а?

Приколист, генту со стейджа поставить это максимум 20 минут включая время на компиляцию ядра, а LFS сколько ты будешь собирать?

кому-то все таки нравится именно такой вариант.

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

Не больше траты времени на убунту/винду/дебиан/etc

Зачем ты людям лица разбиваешь?

От безысходности. 😀

LFS даёт более глубокое понимание систем сборки, зависимостей и как вообще устроены дистры изнутри. Ну это если вникать в то, что делаешь, а не бездумно копипастить команды.

На сайте LFS написаны причины, как создатели их видят. http://www.linuxfromscratch.org/lfs/

Первые три вполне справедливы.

Все действия в LFS делаешь (и иногда понимаешь 🙂 ) сам, без дистроспецифичных прослоек.

Источник

Gentoo/Arch/LFS как путь в мир Linux

Долго держался, не публиковал этот материал. Последний каплей стало вот это: Как Unix-way убивает десктопный Linux

Попалось мне обсуждение на habr Q&A habr Q&A
Очень понравился вот этот ответ от пользователя xolst9.

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

О себе — работаю с linux более 10 лет, имеют опыт эксплуатации различных серверов(почта, файловые, DNS, маршрутизаторы, радиотрансляции, кластеры виртуализации и тд) на уровне провайдеров услуг(это несколько отличается от варианта «Фирма в 100 человек»), различных дистрибутивов( включая debian,ubuntu,gentoo, centos/oracle, arch), разные сферы деятельность (включая радиовещание и телеком), есть опыт работы как простым ведущим инженером, так и на руководящей должности. Есть что вспомнить, есть каким опытом поделиться.

Замечу, что каждый дистриб хорош на своем месте. Если мне потребуется создать сервер для длительной эксплуатации, то в 99% случаев я возьму Centos/RedHat. Нужно сделать VPN-сервер — Zentyal. Настроить себе десктоп для работы — mint или fedora, manjaro. Собрать небольшой дистрибутив/live flash с узкими задачами — gentoo/arch. Создать кроссплатформенную прошивку — начну собирать свой дистриб в buildroot.

Да, все это можно делать на ЛЮБОМ дистрибутиве, на самом деле. Будут вопросы в версиях пакетов, но… в том или ином дистрибе есть свои плюсы и минусы.

PS Прекрасно знаю о сборках вроде zentyal/proxmox/esxi/прочие. Так или иначе они мне попадали в руки. Да, они позволяют упростить многие вещи, сэкономить время, дать возможность работать с ними людям, далёким от мира Linux. Но всё это до тех пор, пока вас устраивают их возможности и ограничения. Или пока что-то не сломалось.

PS Ещё я знаю про LFS/YOCTO/buildroot. Последний меня особенно интересует.

PSS И для любителей ткнуть в комментах — да, я знаю, что такое проект GNU, что Linux это только ядро. Для желающих рекомендую прочитить вот это

Читайте также:  Virtualbox настройка сетевого моста mac os

Кто же такой Linux-профи

Меня давно удивляет ситуация, когда работодатель удивляется:»Вы специалист по Linux, а ни разу не настраивали EXIM4/NGINX/МОЙ_ОГРОМНЫЙ_СОФТ_НАПИСАННЫЙ_СТУДЕНТОМ_ЗА_ЕДУ?».

Так вот, следуют все таки отличать навыки работы в самой ОС и настройку ПРИКЛАДНОГО программного обеспечения на этой ОС. Да, linux популярен в хостингах. Но мне чаще приходилось делать почтовики и шлюзы с прокси, чем LAMP(или эквивалент). Отсюда вывод — умение настраивать конкретный прикладной софт может быть преимуществом при выборе кандидата на вакансию.

Во-первых, этот мир многообразен. В рамках одной компании мне попадались почтовики на postfix/exim4/zimbra/sendmail. Не видел проблемы разобраться с каждым из них и продолжить их успешную эксплуатацию.

Во-вторых, этот мир развивается. Кто-то вспомнит времена, когда web-сервер — это однозначно Apache. Сейчас большинству (из личного опроса) в голову приходит NGINX. Всё больше вокруг меня postgresql, все меньше mysql.

Личный пример. Работал в одном интернет-провайдере, не маленьком. Потребовалось переделать DNS-систему. Не внутреннюю, а для предоставления услуг. Первое что приходит в голову — bind! И тут же понимаю, что не всё так просто. Например — удобный интерфейс управления зонами с возможностью разделения прав доступа.

Решил всё же посмотреть аналоги. И наткнулся на powerDNS. И сделал всё на нём. Почему — потому что удобно:

  • Относительно простая настройка (справедливо и для bind)
  • Наличие «из коробки» веб-интерфейса для редактирования зон, с разделением прав доступа
  • Разделение на recursor и Authoritative серверы
  • Хранение зон в базе данных

Итого, имея опыт настройки и эксплуатации bind, я открыл для себя альтернативную систему, внедрение которой сэкономило мне приличное время и при внедрении, и при последующей эксплуатации.

Второй пример. Коллеги, имеющие опыт работы с Proxmox, смогли создать удивительно тормозящий кластер. У меня такого опыта не было, я работал только с KVM + qemu + libvirt. Замечу, что внутри proxmox находится… правильно, kvm + qemu + libvirt. Тем не менее, проблему нашел и решал именно я. Оказалось, что никто не прочитал отличие паравиртуализированного драйвера от эмуляции IDE. А для дальнейшего перевода виртуалок на паравиртуализированные драйверы потребовалось уметь работать с fstab/grub, тк после смены драйвера виртуалки перестали загружаться(тот случай, когда в fstab и в загрузчике использовались привязки не по UUID/LABEL, а по именам устройств. И когда быстрее было загрузиться с live-диска и быстро всё исправить).

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

Вывод 2. Не так важен дистрибутив, как голова и прямые руки. Умеешь работать в командной строке, понимаешь устройство ОС семейства linux, и адаптация к дистрибутиву перестаёт быть для тебя проблемой. Мне самому приходилось переходить из мира gentoo в мир redhat, что было не сложно. Переход в мир debian/ubuntu также не занял вопросов. Найти почему есть специфические проблемы с прошивке российской разработки тоже не проблема.

Вывод 3. Уметь работать в консоли всё таки надо. Не попадалось мне ещё панели управления или иного gui, имеющих мощность и гибкость командной строки. Да, можно здорово упростить себе жизнь, используя gui (мне нравится, как в zentyal построено управление openvpn). Но консоль никто не отменял.

Gentoo как источник технических навыков

Начну с самого простого — чему учится новичек, решивший отвоить Linux с нуля. Как гласит старая шутка:»Инструкцию по gentoo надо ещё склеить».
Большинство дистрибутивов всё же имеют инсталлятор, утрированно: «Да — да — далее — установить». Так вот, Gentoo не имеет инсталлятора. Уже с моменты начала установки есть шанс получить новые знания. Причем базовые, без которых сложно (а может и невозможно) двигаться дальше. Не могу представить себе linux-профи, не умеющего форматировать разделы в командной строке. Или не освоившего chroot.

Итак, вот краткий список навыков, получаемых при установке Gentoo:

  • Общие навыки работы в командной строке — копирование, скачивание файлов, навигация по дискам и тд
  • Проверка контрольных сумм
  • Понимание параметров загрузки ядра
  • управление пользователями/группам, специальные группы
  • понимание модулей ядра, их загрузки
  • настройка сети(статика/dhcp/wifi)
  • маршрутизация в сетях
  • работа с разделами дисков
  • создание различных файловых систем(в тч LVM/SWAP/BTRFS)
  • дата/время (вручную и ntp, часовые пояса)
  • работа с переменными (объявление, использование, export)
  • понимание основ сборки пакетов — флаги сборки, настройка параметров компилятора
  • монтирование на лету (в тч особых систем вроде /dev /sys /proc)
  • настройка fstab
  • chroot
  • настройка локали
  • конфигурирование и сборка ядра
  • настройка логирования
  • cron
  • настройка удаленного доступа
  • установка/настройка загрузчика( в тч EFI)

По отдельности кажется, что ничего особого. А где вы видели олимпийского чемпиона по бегу, не умеющего ходить? Чтобы научиться писать книги, надо сначала научиться читать по слогам. Кроме того, все эти задачи выполняются только в консоли и на выходе получается система без графического интерфейса. Хочешь графику? Вэлкам в руководства и изучение новых горизонтов в мире gui.

«Исключения конечно есть, люди которые дальше Ctrl+C, Ctrl+V не пошли и находятся в состоянии «ждем ebuild’ов», но с ростом количества «простых» дистрибутивом, такие уже в большинстве своём исчезли с нашего горизонта.»

Согласен с этим высказыванием. Если человек не готов пойти чуть дальше copy/past готовый инструкции, не хочет включать голову — то дистрибутив не имеет значения. Ошибка как всегда в прокладке между стулом и клавиатурой.

Замечу, что все этапы подробно расписаны в официальном HANDBOOK с привязкой к архитектуре/языку. В нём не только подробно описаны все команды, но и даётся много справочной информации — что, зачем, как устроено.

Результат — на выходе получается человек, который попробовал много чего. А ведь он ещё не начал устанавливать прикладной софт и графику. Сделает и это — весьма не плохо освоит новые подсистемы ОС.

Замечу, что установка Arch в целом похожа (на мой взгляд), только без компиляции. И даёт примерно такой же набор навыков.

Читайте также:  Hp photosmart 2570 all in one series драйвер windows 10

У обоих дистрибутивов отличная документация. Особенно у Arch, субъективно она мне больше нравится.

Психологический аспект

Невероятно, на факт — мне часто встречались/встречаются так называемые «linux-специалисты», неуверенно работающие в командной строке. Или вовсе её боящиеся.

Боязнь эта вполне объяснима и понятно — нет устойчивых навыков работы в командной строке. Что называется — не набита рука! Представьте себе лётчика, который привык летать только на автопилоте. Вы предпочтете лететь с ним или с тем, кто в добавок умеет уверенно управлять вручную? В результате — типичные ошибки:

  • Отрицание возможности выполнения задачи, потому что не знают как
  • Ошибки при выполнении команд (использование неверных ключей, неверный порядок операндов)
  • Использование избыточных средств (например, искать/писать скрипт на питоне там, где достаточно grep)

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

Простой пример — «Сервер тормозит». Или ещё хуже — не отрабатывает загрузчик. Совсем страшное — тормозит сеть на отдачу, отлично работает на приём. Уверяю вас, для решения этих задач потребуется уметь работать в консоли, возможно менять параметры ядра (sysctl это сила). И да, тюнинг в нагруженных системах тоже потребует умения работать в консоли.

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

Человек, имеющий устойчивые навыки работы в любой области будет гораздо эффективнее и надёжнее в этой области. В данном случае — умеющий работать в консоли и понимающий механизмы работы ОС будет большим плюсом для компании, чем привыкший идти путём ‘Да-да-далее’ «специалист».
И это всё на уровне инженера, не говоря уж о разработчике.

В моем понимание успешная работа с Gentoo это не только рост профессиональных навыков, но и психологический отбор. С закалкой.

Gentoo vs Enterprise

Снова вернусь к истоку, к Q&A. Прозвучали фразы вроде «не корпоративный дистриб». В целом согласен, сам предпочитал использовать Centos.
Но сейчас будет подрыв.
Так вот, есть ситуации, когда gentoo используется в суровом Enterprise. Пример — разработка. Gentoo — отличный инструмент для разработчика:

  • Свежие версии пакетов
  • Всегда свежий компилятор (пользователи RH/Centos/Oracle поймут)
  • Возможность собрать свой дистрибутив/прошивку с минимальным и достаточным функционалом
  • Восстановление работы конкретного сервера с live-диска.

Как видно, gentoo может пригодиться в больших компаниях. Скажите, что специфичным образом? А что не специфичный? Почтовик или паблик-шара на samba? 😀

И снова напомню про нештатные/аварийные ситуации. Или про «черные ящики»(‘мы не знаем что там и как, но без него падает что-то важное’), которыми грешат крупные фирмы с историей.

Почему я предпочту гентушника в коллегах

Исходя из выше описанного, при прочих равных гентушник будет иметь преимущество в моих глазах.
Как минимум он не испугался и освоил не слабый handbook.
Он умеет работать в консоли, что критически важно для linux-администратора/инженера/архитектора.
Он понимает основы компиляции и сборки пакетов, что иногда крайне важно (почитайте про тесты SPEC CPU, например spec 2006).

Да, конечно, бывает оборотная сторона. Желание перекомпилировать пакеты или написать свой огромный скрипт вместо готового отлаженного решения.
Но это больше относится к неофитам. Проходит легко и безболезненно в большинстве случаев.

Кроме того, имея богатый арсенал умений, такой человек лучше справится в нестандартной обстановке. Потому что не растеряется и не будет терять прорву времени на поиск 100% работающего руководства именно под такой уровень. Он в состоянии разобраться, догуглить нужное и решить задачу. Впоследствии — написать своё руководство.

«Поколение Ubuntu»

Впервые этот термин был мной услышан в 2012 году в ходе собеседования. Сейчас я им активно пользуюсь.
Maquefel:

Вообще за все надо платить. Линуксоиды, со стажем 15+ лет, а помните, как мы занимались популяризацией GNU/Linux? Вот мы и добились своего, только почему то мы думали, что адепты проникнуться духом и путем Linux/UNIX и все станет лучше, богаче, проще. А нет, адепты просто притащили к нам философию Microsoft, ничего не делать, ждать готового, изобретать громадные комбайны, не читать документацию.»

Всё чаще на собеседования приходят странные люди, считающие себя linux-экспертами как минимум. А по факту — знание многих слов без малейшей практики и понимания. Немало тех, кто не видел консоль или не понимает, зачем уметь в ней работать(это в linux-то). Часто знают много терминов, но не понимают что за ними стоит:

И вот лучшие из ответов(кроме попыток считать вручную):

  • Я бы написал на питоне, там что-то было для работы с SSH (ну да, с текстовым файлом)
  • Может это можно сделать через awk? но я не уверен (тепло, но написать не смог)
  • Есть grep, но я не помню как им пользоваться (оставлю без комментариев)

В данном случае я не агитирую за systemd. У него есть и плюсы, и минусы.

Замечу, что данные вопросы задавал не только я, но и мне практически на всех собеседованиях, где нужен специалист со знанием linux. Конкретно вот эти результаты получены были при собеседовании на далеко не начальную должность, тесно связанную с linux. С шестизначной зарплатой.

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

Постскриптум

Для написания статьи использовался следующий инструментарий:

  • Visual studio code (да, в нем достаточно удобна работать с markdown)
  • vim
  • git

Редактировалось много раз, в основном для замены неприличный слов.

Источник

Оцените статью