Книга посвящена дистрибутиву Linux Mint и одной из его главных



Скачать 21.34 Mb.
Pdf просмотр
страница6/30
Дата22.11.2016
Размер21.34 Mb.
Просмотров2667
Скачиваний0
1   2   3   4   5   6   7   8   9   ...   30
Программа записи USB mintstick
Как известно, оптические приводы постепенно отмирают. И на смену им приходят USB flash и карты. Единственная сфера, где до некоторого времени оптические накопители былине всегда заменимы — это установка системы на чистую машину. Однако ныне все современные дистрибутивы
Linux'а или системы распространяются в виде так называемых гибридных образов, допускающих их запись на твердотельные носители. Что повлекло за собой появление большого числа программ, призванных выполнить эту процедуру.
Имеется такая утилита ив составе фирменного инвентаря а. Это mintstick, которая в главном меню находится в разделе Стандартные под именем Создание загрузочного носителя. И после запуска предстаёт перед глазами применителя в таком виде:
Дальнейшие действия очевидны надо выбрать записываемый образ и указать, куда он должен быть записан (воткнутая флешка или карта предлагается по умолчанию):
После этого потребуется ввести пароль и подождать завершения процесса,
о чем будет сообщено дополнительно:
В поле Подробности будут указаны имена файла образа и целевого устройства:
Всё. Можно либо повторить процедуру для другого образа или устройства,
либо закрыть программу.
Хотелось бы ещё проще Не получится — проще уже некуда.
Языковые настройки — mintlocale
В очерке о настройках Cinnamon упоминался модуль Языки в секции
Параметры его Системных настроек. И, поскольку он, собственно,
принадлежит к семейству фирменных утилит Mint (под именем было обещано рассказать он м в соответствующее время. Время это наступило.
Модуль Языки можно запустить как из панели Системных настроек, таки из секции Параметры главного меню. Он выполняет двоякую функцию. Во- первых, здесь можно изменить собственно язык интерфейса и прочие параметры, объединяемые понятием locale (формат даты, представление чисел, единицы измерения etc.). При выборе русского в качестве языка инсталляции всё это будет русским Российским (интерфейс, разумеется,
русифицируется в меру испорченности перевода):
При желании или необходимости можно установить и более иные языки список доступных превышает два десятка:
Главная особенность нового языкового модуля (он появился в Mint 17.1) разделение групп параметров Language ив русском переводе — Языки Область/Край, соответственно. Первая определяет переменные LANG и, то есть собственно язык интерфейса и местное время. Группа же параметров Region задаёт значения всех остальных локально-зависимых переменных — LC_NUMERIC, LC_MONETARY, LC_PAPER, LC_NAME, LC_ADDRESS,
LC_TELEPHONE, LC_MEASUREMENT и LC_IDENTIFICATION (представление чисел,
единица бабла, формат бумаги, итак далее).
Разнесение переменных по группам может показаться спорным, как и его аргументация Клементом (типа специально для отъезжающих за границу).
Однако сама по себе идея отделения языка интерфейса от прочего локально- зависимого хозяйства весьма здрава, особенно если язык этот — смесь нижегородского с оксфордским. Что же до местного времени. С каждым очередным самым последним переводом часов оно теряет всё больше смысла.
Так что не пора ли жить по Гринвичу Вполне реализуемо, как можно видеть наследующем скриншоте:
Вторая функция mintlocale — определение так называемого метода ввода.
Поддержка их также впервые появилась в Mint 17.1. Методы ввода (Input
Method) — это системы обеспечения ввода символов, отсутствующих на клавиатуре от слова «вааще». Например, китайских иероглифов и символов всех генетически связанных сними систем письма. И потому, конечно,
жизненно необходимы жителям соответствующих стран.
Однако мы, индоевропейцы, семиты, тюрки и многие другие, выступая как единый советский народ, не испытываем в них ни малейшей потребности. И
потому то, что реально ни один метод ввода не включён (разработчики объясняют это недостатком сил, огорчать нас не должно. Напротив, скорее радовать. Ибо попытки майнтайнеров некоторых дистрибутивов включать поддержку какого-либо из этих методов (мне приходилось сталкивать с да ещё и по умолчанию, нам, применителям, не давало ничего, кроме лишних проблем.
Менеджер драйверов и интегрированное видео AMD
Последний из фирменных инструментов Mint, о котором я хотел сказать пару слов — Менеджер драйверов, он же mintdrivers, предназначенный для управления проприетарными драйверами, например, для видеокарт. Правда,
мой личный опыт общения с ним оказался неудачным, но это связано с моим
«железом», а не собственно с программой. Так что просто опишу последовательность действий, проиллюстрировав её скриншотами.
Запуск утилиты происходит из секции Администрирование главного меню,
где она носит имя Менеджер драйверов. После чего на экране появляется (в моём случае с интегрированным процессорным видео Radeon HD 7500G) такая картинка:
Представляется очевидным, что для установки проприетарного драйвера достаточно вместо первой строки отметить третью и нажать кнопку
Применить изменения. Только я это сделал — как процесс пошёл:

Шёл процесс довольно медленно, так как кроме собственно драйвера fglrx входе его устанавливались lib32gcc1, dkms и ещё куча зависимостей, а также регенерация /boot/initrd.img. По завершении всего этого исходная картинка приняла следующий вид:
Заодно был создан и файл /etc/X11/xorg.conf с описанием конфигурации
видеосистемы. Что в моём случае, правда, не помогло после рестарта машина отказалась загружаться, выдав чёрный экран без возможности переключения в текстовую консоль и реакции на комбинацию из трёх пальцев. Пришлось перезагружаться в recovery mode и заниматься ликвидацией этого безобразия но это совсем другая история.
Впрочем, проделанный опыт не был совсем уж бесполезным. Оказалось, что теоретически установка проприетарных драйверов через штатный Менеджер драйверов действительно очень проста, хотя в дальнейшем не исключены осложнения — но они, повторяю, скорее всего связаны с особенностями
«железа».
На этом я пока поставлю точку в описании фирменного инструментария дистрибутива Mint. За бортом остались ещё несколько утилит, повода обращаться к которым у меня не было, и потому ничего сказать про них я не могу. В их числе — средство настройки соответствующего соединения ноу меня на Ноутбучке WiFi волшебным образом заработал сам собой, без всяких настроек

mintupload-manager — средство управления закачками на сервера,
применения которому я не нашёл;

mintnanny — блокировщик доменов без надобности, ибо я не депутат госдумы, чтобы мне везде мерещилась банда педофилов с ихней порнографией. Что же до утилит mint-make, mint-batch-make, mint-compress, mint- decompress, о назначении которых можно догадаться по их именам, ток ним я обращусь, когда и если (если и когда) в этом возникнет практическая необходимость.
Прочие настройки
В предыдущих очерках говорилось о штатных инструментах для настройки дистрибутива Mint и его среды Cinnamon. Чтобы закончить с этой тему, скажу несколько слов об инструментах конфигурирования не то чтобы нештатных,
но непосредственно ник дистрибутиву, ник среде не привязанных. И к которым приходится обращаться не так уж часто.
Редактор dconf
Редактор dconf появился в GNOME 3 и ныне применяется для низкоуровнего конфигурирования, кроме родительсккой среды, также в Unity, MATE и. Он позволяет напрямую редактировать всю базу конфигурации, как общесистемную, таки штатных пользовательских приложений. И, хотя делает это и не самым простым способом, но даёт доступ к тем настройкам, которые разработчики сред посчитали недостойными внимания конечных пользователей. Или, скорее, решили, что народу они не нужны.
Правда, в Cinnamon таких замаскированных настроек очень мало. И если в обращаться к Редактору dconf приходится постоянно, а в MATE периодически, тов нашей среде у меня поводы для запуска этой утилиты возникали буквально считанные разы.
Запускается эта утилита, кстати, через пункт Редактор dconf в секции
Администрирование главного меню, после чего предстаёт в таком виде:
Каждый пункт во фрейме слева разворачивается каскадом вложенных пунктиков и подпунктиков, имя которым далеко превышает легион. И
описывать которые я не буду. Адам пару практических рецептов для включения некоторых опций, недоступных через Системные настройки среды
Cinnamon.
Ранее я упоминал, что в текущей версии Cinnamon возможность сохранения сеанса из пункта Автостарт изъята. Нов Редакторе dconf она осталась. И
доступ к ней осуществляется по схеме org.cinnamon.SessionManager, где следует включить параметр (в терминологии dconf — ключ) auto-save-session:
Не так давно мы весьма подробно рассмотрели конфигурирование раскладок клавиатуры и их переключателей через соответствующий модуль
Системных настроек Cinnamon. И пришли к выводу, что тут можно настроить всё, что только душе угодно. Тогда же было упомянуто, что всё тоже самое можно проделать ив Редакторе dconf. Для чего достаточно проследовать пои заполнить желаемым образом поля layouts,
model и Как заполнить — описывать не буду, потому что через модуль Клавиатура в
Системных настройках это сделать проще. А вот если пройти по схеме org.gnome.libgnomekbd.desktop, то можно включить ключ Это обеспечит загрузку редко используемых раскладок клавиатуры. В
частности, для русской раскладки окажутся доступными дополнительные
варианты — те, что пыведены курсивом:
В русскоязычном окружении этот ключ практического значения не имеет,
но для всяких прочих языцей — может пригодиться. Например, для программирования на Впрочем, более никаких практических задач для решения в Редакторе dconf я не придумал.

Mint и консоль
Всё, что было сказано о конфигурировании Mint в предыдущих очерках,
относилось к настройкам графических сред, даже конкретно одной представительницы их — Cinnamon. Но ведь в е есть ещё и «текстовый»
режим, то есть консоль. Текстовый в кавычках — потому что, конечно, чисто текстовой консоли нынче не найти, наверное, нив одном дистрибутиве, везде frame buffer — но уж такова традиция.
Любителей выполнять в голой консоли практическую работу нынче не так ужи много. Наверное, поэтому майнтайнеры практически всех дистрибутивов относятся к настройке консольного режима абы как, если не сказать — никак.
А уж когда дело доходит до локализованных систем — это вообще туши свет.
Редкий дистрибутив может похвастаться тем, что в его голой консоли в ответ на команду date выводятся настоящие русские буквы, а не квадратики или кракозябры.
Повторяю, вряд ли кто будет сочинять в консоли многотомные романы на русском языке — в основном в текстовом режиме приходится загружаться при всякого рода сбоях. Но иногда приходится. Аварийные работы тоже лучше выполнять в комфортной и приятной для глаз обстановке. Да и вообще, как говорил штабс-капитан Мышлаевский, в казарме должен быть порядок, А
текстовая консоль большинства современных дистрибутивов от порядка далека.
К чести Mint надо сказать, что этот дистрибутив принадлежит как раз к тем редким, у которых консоль русифицирована «искаропки». Русские буквы здесь и правильно выводятся, и правильно вводятся. Причём вводятся в том самом варианте русской раскладки клавиатуры, который был задан при инсталляции системы, и переключатель раскладок (по комбинации Alt+Shift) оказывается таким же, как в графическом режиме. В общем, оказывается, что приложить руки к улучшательству есть где. Ибо у применителя всё должно быть прекрасно — в том числе и консоль.
Особенно раздражает отсутствие поддержки мыши — без неё работа в консоли, даже аварийно-спасательная, становится мучительной. Ибо мышь в консоли — устройство не указательно-позиционирующее, а копировально- вставляющее. Достаточно выделить мышью фрагмент экрана, как он попадает в экранный буфер, откуда может быть вставлен в любое место, в том числе ив другую виртуальную консоль, щелчком средней кнопки мыши.
Функция, незаменимая при правке конфигов — а ведь аварийно-спасательные работы обычно к ней и сводятся.
Поясню (как ни странно, нынче это надо пояснять, что на современных колесовых мышах роль средней кнопки почти всегда выполняет это самое колёсико. А на ноутбучных тачпадах тот же эффект достигается одновременным нажатием обеих кнопок. Правда, что делать на входящих в моду ноутбуках с однокнопочными тачпадами — не знаю разве что, не покупать их...
Из поставленных задач по улучшательству консоли проще всего решается первоочередная — включение службы консольной мыши, сиречь gpm. Для этого нужно, как это ни парадоксально, установить пакет gpm:

$ sudo apt install gpm Если сделать это, находясь в чистой консоли (а перключиться в любую из них можно по комбинации клавиш Control+Alt+F#, # — от 1 до 6; возврат в графический сеанс — Alt+F8), то немедленно после завершения установки можно будет увидеть курсор мыши в виде прямоугольничка. И теперь, по крайней мере, не придётся при всяких ремонтно-восстановительных работах вводить много лишних символов — в распоряжении применителя описанный выше мышиный буфер.
Следующая задача на очереди — установка удобочитаемого экранного шрифта. Проще всего она решается утилитой dpkg-reconfigure. Вызванная в таком виде sudo dpkg-reconfigure console-setup она запустит псевдографическую программу, настройки экранных шрифтов для консоли. Которая сначала попросит выбрать кодировку:
Затем спросит об используемой таблице символов:
Потом последует предложение выбрать шрифт:
Далее будет проведён маленький ликбез о консольных шрифтах и условиях их использования:
Не советую им пренебрегать — после этого легче сделать осознанный выбор матрицы шрифта (типографские термины к консольным шрифтам не применимы):
После этого происходит выход из интерфейса утилиты, и всё заказанное претворяется в действительность. Процесс этот связан с регенерацией так что его результат можно будет увидеть только после рестарта — с которым, впрочем, необязательно торопиться.
Третья задача очень важна для меня — но возможно, что большинству применителей решать её не придётся. Я использую сочетание варианта Legacy для кириллической раскладки ив качестве
переключателя латиница/кириллица. Когда-то эта была стандартная комбинация (именно такова была первая русская раскладка для UNIX-косоли,
созданная Андреем Черновым aka ache), но ныне воспринимается как экзотика. И её спаривание для консоли Linux требует некоторых усилий. В
частности, в большинстве дистрибутивов мне приходилось прибегать к раскладке, изготовленной собственноручно.
А вот в Mint эти усилия минимальны. Я имел не один раз повод радостно сообщить, что выбранная при установке раскладка клавиатуры и один из её
вариантов (среди которых имеется и Typewriter Legacy) наследуется не только
Иксами, но и консолью установленной системы. Правда, с переключением раскладок по Alt+Shift, порождённым каким-то умником в недрах а вместе с раскладкой winkeys (также одной из самых неудобных, какую только можно придумать).
Однако задача с изменением переключателя решается очень просто:
достаточно отредактировать файл /etc/default/keyboard. Он практически точно совпадает с клавиатурной секцией старого /etc/X11/xorg.conf или современного /etc/X11/xorg.conf.d/10-keymap.conf, и по умолчанию выглядит так"
XKBLAYOUT="us,ru"
XKBVARIANT=",typewriter-legacy"
XKBOPTIONS="grp:alt_shift_toggle,grp_led:scroll" Так что в нём достаточно заменить значение переключателя alt_shift_toggle на желаемое, например, для меня — на caps_toggle. После чего можно с чистым сердцем перегружаться и, авторизовавшись в любой текстовой консоли, любоваться красивыми шрифтами семейства Terminus, созданными
Димитром Жековым, набирать русские буквы в привычной раскладке и, при необходимости, копировать набранное из консоли в консоль через
«мышиный» буфер.
GRUB2: восстановление загрузчика
В заключение всей конфигурационной солянки — пара слово загрузчике. Материалов в Сети на эту тему немерянно (одним из самых полезных мне представляется вот этот, и пересказывать их я не намерен. А
остановлюсь только на восстановлении загрузчика в случае его порчи по каким-либо причинам.
Есть несколько методов восстановления GRUB2, я опишу тот, который представляется мне самым простым.
Для начала надо иметь носитель Mint в любом виде — DVD-, флешки,
SD-карты, каковой помещается куда следует. При рестарте машины, обычно в момент появления логотипа производителя, нужно успеть нажать клавишу быстрого выбора загрузочного устройства — для современных ASUS'овских
«матерей» это F8, для ASRock'овских — F11, для прочих — см. документацию.
И в появившемся меню выбрать нужный пункт, он обычно называется явным образом. Происходит загрузка среды, каковая в нашем случае представлена Mint с Cinnamon-окружением.
Далее следует опознать имя файла устройства, несущего корневой раздел системы, загрузчик которой подлежит восстановлению — подчёркиваю,
требуется имя устройства, а не раздела. Это можно сделать просмотром вывода либо команды sudo fdisk -l либо команды ls /dev/sd* Предположим для определённости, что это устройство /dev/sda. Теперь корневой раздел монтируется в файловую систему среды. Прще всего сделать это через Nemo — в его боковой панели, в секции Носители,
отражаются все присутствующие в машине дисковые устройства. И
достаточно выбрать пункт Присоединить контекстного меню или просто
«левокликнуть» на соответствующем имени. Теперь главное — определить точку монтирования. В Mint (как и во всех Ubuntu'идах) временно смотированные устройства попадают в каталог /media/username, устройства сметкой в подкаталог се именем, без оной — в подкаталог с универсальным идентификатором устройства (UID), это полуметровая зубодробительная последовательность букв и цифр.
А вот теперь — собственно восстановление загрузчика. Оно выполняется одной командой sudo grub-install --root-directory=/media/username/mount_point /dev/sda Здесь mount_point — метка диска или его очень простой UID вроде d55aebcb-7e7d-4d34-aff4-ed6e494e9b7f. Автодополнение в этом случае не работает, однако, даже если устройство не помечено, его UID можно взять из файла /etc/mtab, описывающего временно смонтированные устройства,
или, открыв его виз адресной строки последнего.
На этом дело восстановления загрузчика закончено — можно перезагружаться в нормальном режиме.
Основы командного интерфейса
Поскольку не исключена вероятность, что эту книгу будут читать и совсем начинающие применители а вообще, тех, для кого Mint оказался первым дистрибутивом этой операционной системы, в этом очерке будут даны некоторые общие сведения об интерфейсе командной строки (CLI — Command
Line Interface). Тем более, что это потребуется уже ближайшее время, в очерках, посвящённых управлению пакетами.
Введение в CLI
CLI представляет собой базу, для которой GUI всякого рода являют лишь оболочку. Всякое действие в системе может быть выполнено прямой командной директивой. И его же можно осуществить путем манипулирования объектами. Например, копирование файлов выполняется соответствующей командой — cp, это первый способ. Но его же можно осуществить перетаскиванием мышью объекта, представляющего наш файл зрительно, из того места, где он находился ранее, туда, где мы хотим видеть его копию, а это уже второй способ.
То есть манипуляция объектами в GUI — это обычно более или менее опосредованное выполнение соответствующих данному действию команд.
Почему основные навыки работы сне помешают даже тому пользователю,
который не вылезает из графической среды. Ибо сфера применения CLI не ограничивается голой консолью. Он же используется в эмуляторах терминала в графическом режиме оконной среды X. Более того, в настоящее время это основная среда для применения командного интерфейса — к текстовой консоли обычно обращаются только в аварийных ситуациях в большинстве случаев обеспечивается классом программ, именуемых командными интерпретаторами, командными процессорами, командными оболочками или по простому шеллами (Как легко догадаться по одному из определений, кроме предоставления пользовательского интерфейса, шеллы выполняют и вторую функцию служат интерпретаторами собственных языков программирования. На этом основывается классификация шеллов — они разделяются на две группы,
обычно именуемые Bourne-shell совместимые и C-shell совместимые. В силу ряда причин в качестве стандарта принята одна из оболочек первой группы так называемый POSIX-шелл. Правда, он представляет собой чистую абстракцию, однако большинство используемых в ах оболочек с этим стандартом совместимы. А системная оболочка Mint, Dash, довольно точно воспроизводит и его функциональность. И потому все примеры,
иллюстрирующие принципиальные вопросы CLI, будут базироваться на наиболее используемых командах, построенных в соответствие с правилами
POSIX-шелла.
Командная строка
Основой командного интерфейса является командная строка,
начинающаяся с приглашения для ввода. Далее он будет обозначаться милым сердцу россиянина символом длинного зеленого друга — $, если речь идёт о сеансе обычного пользователя, или символом решётки — #, для приглашения строки в сеансе администратора. Это — чистая условность вид приглашения может быть настроен в широких пределах, причём по разному в разных оболочках. Об этом мы поговорим, когда речь дойдёт до описания конкретного шелла — Командная строка — визуальное представление среды, в которой задаются основные элементы командного интерфейса командные директивы сих аргументами и опциями.
Командная директива (или просто команда) — основная единица,
посредством которой пользователь взаимодействует с шеллом. Она образуется по определенным правилам, именуемым синтаксисом. Синтаксис командной директивы определяется, в первую очередь, языком, принятым в данной командной оболочке. Кроме того, некоторые команды (не очень многочисленные, но весьма употребимые) имеют собственный,
нестандартный синтаксис.
Однако в целом базовые правила построения команд имеют много общего.
И именно эти базовые правила станут предметом данного раздела.
Синтаксические особенности отдельных нестандартных команд будут оговариваться походу изложения.
Итак, командная директива образуется:
именем команды, однозначно определяющим ее назначение, опциями, определяющими условия выполнения команды, и аргументами — объектами, над которым осуществляются действия. Очевидно, что имя команды является обязательным компонентом, тогда как опции и аргументы могут и отсутствовать (или подразумеваться в неявном виде по умолчанию).
ещё один непременный компонент командной директивы — это специальный невидимый символ конца строки именно его ввод отправляет команду на исполнение. В обыденной жизни этот символ вводится нажатием и отпусканием клавиши Enter. Почему обычно и говорят для исполнения команды нажмите клавишу Enter. Тот же эффект, как правило, достигается комбинацией клавиш Control+M. Символа конца командной строки,
знаменующего исполнение команды, мы на экране невидим. Однако важно,
что это — такой же символ, как и любой другой (хотя и имеющий специальное значение).
В подавляющем большинстве случаев опции (или их последовательности)
задаются непосредственно за именем команды, а аргумент (или группа аргументов) команду завершает, хотя это правило имеет некоторые исключения. Вне зависимости от порядка опций и аргументов, принятых для данной команды, интерпретация их осуществляется слева направо.
Команды, опции и аргументы обязательно разделяются между собой пробелами. Кроме того, опции обычно предваряются (без пробела) символом дефиса или двойного дефиса. Впрочем, немногочисленные (но весьма употребимые) команды могут использоваться с опциями без всяких предваряющих символов.
Как уже говорилось, имя команды определяет выполняемые ею функции.
Существуют команды, встроенные в оболочку, то есть не имеющие запускающих их исполняемых файлов, и команды внешние. В последнем случае имя команды однозначно указывает на имя исполняемого файла программы, выполняемой при отдаче соответствующей директивы. Часто встроенные и внешние команды одного назначения имеют одинаковые имена.
В этом случае обычно предпочтительно использование встроенных команд впрочем, они и вызываются в первую очередь. Для вызова одноимённой внешней команды её нужно задать с указанием пути. Так, директива time search for Mint in path2/ вызовет для определения времени выполнения команды search (о ней будет рассказываться в следующем очерке) встроенную команду time. А в форме /usr/bin/time search for Mint in path2/ будет задействована внешняя утилита стем же именем. Кстати, это один из тех случаев, когда второй вариант может иногда оказаться предпочтительней встроенная и внешняя команды имеют разные форматы вывода, причём впервой он зависит от используемой командной оболочки. И
потому она не всегда подходит для прямого сравнения результатов например, быстродействия в разных системах.
Определить, является ли данная команда встроенной в оболочку или внешней, можно с помощью встроенных команд type или which. Для встроенных команд вывод их будет таким type which which is a shell builtin
$ which type type: shell built-in command Или, в некоторых случаях, таким which time time: shell reserved word
$ type time time is a reserved word Для внешних команд любой из этих вариантов даст в выводе путь к исполняемому файлу which date
/bin/date
$ type date
/bin/date Некоторые команды могут выступать под несколькими именами. Это связано стем, что исторически в различных системах команды,
исполнявшие одинаковые функции, могли получать разные названия. В
каждой конкретной системе обычно используется только одна из таких команд-дублеров. Но при этом имена дублирующих команд также могут присутствовать в системе — для совместимости. Не следует думать, что это две различные программы одного назначения как правило, такая синонимичность команд реализуется посредством механизма ссылок (или псевдонимов (alias), о которых речь пойдёт позднее.
Иногда команда, вызванная через имя своего синонима, может отличаться по своей функциональности от самой же себя, вызванной под родным именем.
В этом случае говорят о эмуляции одной команды другой. Типичный пример командная оболочка /bin/bash в большинстве дистрибутивов Linux имеет своего дублера — /bin/sh; вызванная таким образом, она воспроизводит базовую функциональность стандарта POSIX-шелла.


Поделитесь с Вашими друзьями:
1   2   3   4   5   6   7   8   9   ...   30


База данных защищена авторским правом ©nethash.ru 2017
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал