Книга администратора Debian


Глава 16. Conclusion: Debian's Future



Pdf просмотр
страница31/32
Дата13.11.2016
Размер7.63 Mb.
Просмотров5036
Скачиваний0
ТипРеферат
1   ...   24   25   26   27   28   29   30   31   32
Глава 16. Conclusion: Debian's Future
The story of Falcot Corp ends with this last chapter; but Debian lives on, and the future will certainly bring many interesting surprises.
16.1. Upcoming Developments
Weeks (or months) before a new version of Debian is released, the Release Manager picks the codename for the next version. Now that Debian version 8 is out, the developers are already busy working on the next version, codenamed Stretch…
Не существует официального списка запланированных изменений, и Debian никогда не дает обещания, касающиеся технических целей на ближайшие версии. Впрочем, пару тенденций о развитии уже можно отметить, и мы можем сделать некоторые ставки, что может случиться (или нет) в будущем.
In order to improve security and trust, most if not all the packages will be made to build reproducibly; that is to say, it will be possible to rebuild byte-for-byte identical binary packages from the source packages, thus allowing everyone to verify that no tampering has happened during the builds.
In a related theme, a lot of effort will have gone into improving security by default, and mitigating both “traditional” attacks and the new threats implied by mass surveillance.
Of course, all the main software suites will have had a major release. The latest version of the various desktops will bring better usability and new features. Wayland, the new display server that is being developed to replace X11 with a more modern alternative, will be available
(although maybe not default) for at least some desktop environments.
A new feature of the archive maintenance software, “bikesheds”, will allow developers to host special-purpose package repositories in addition to the main repositories; this will allow for personal package repositories, repositories for software not ready to go into the main archive,
repositories for software that has only a very small audience, temporary repositories for testing new ideas, and so on.

16.2. Debian's Future
In addition to these internal developments, one can reasonably expect new Debian-based distributions to come to light, as many tools keep making this task easier. New specialized subprojects will also be started, in order to widen Debian's reach to new horizons.
The Debian user community will increase, and new contributors will join the project…
including, maybe, you!
The Debian project is stronger than ever, and well on its way towards its goal of a universal distribution; the inside joke within the Debian community is about World Domination.
In spite of its old age and its respectable size, Debian keeps on growing in all kinds of
(sometimes unexpected) directions. Contributors are teeming with ideas, and discussions on development mailing lists, even when they look like bickerings, keep increasing the momentum.
Debian is sometimes compared to a black hole, of such density that any new free software project is attracted.
Beyond the apparent satisfaction of most Debian users, a deep trend is becoming more and more indisputable: people are increasingly realising that collaborating, rather than working alone in their corner, leads to better results for everyone. Such is the rationale used by distributions merging into Debian by way of subprojects.
The Debian project is therefore not threatened by extinction…

16.3. Future of this Book
We would like this book to evolve in the spirit of free software. We therefore welcome contributions, remarks, suggestions, and criticism. Please direct them to Raphaël
(
<
hertzog@debian.org
>
) or Roland (
<
lolando@debian.org
>
). For actionable feedback, feel free to open bug reports against the debian-handbook
Debian package. The website will be used to gather all information relevant to its evolution, and you will find there information on how to contribute, in particular if you want to translate this book to make it available to an even larger public than today.
→ http://debian-handbook.info/
We tried to integrate most of what our experience at Debian taught us, so that anyone can use this distribution and take the best advantage of it as soon as possible. We hope this book contributes to making Debian less confusing and more popular, and we welcome publicity around it!
We would like to conclude on a personal note. Writing (and translating) this book took a considerable amount of time out of our usual professional activity. Since we are both freelance consultants, any new source of income grants us the freedom to spend more time improving
Debian; we hope this book to be successful and to contribute to this. In the meantime, feel free to retain our services!
→ http://www.freexian.com
→ http://www.gnurandal.com
See you soon!

Приложение A. Производные
дистрибутивы
Многие дистрибутивы Linux происходят от Debian и используют инструменты управления пакетами Debian. Все они обладают собственными особенностями, и,
возможно, один из них будет подходить вам гораздо лучше, нежели сам Debian.
A.1. Перепись и сотрудничество
Проект Debian осознаёт важность производных дистрибутивов и активно поддерживает сотрудничество между всеми причастными сторонами. Это обычно приводит к обратному поглощению улучшений, изначально разработанных производными дистрибутивами, что является взаимовыгодным и снижает издержки на сопровождение.
This explains why derivative distributions are invited to become involved in discussions on the debian-derivatives@lists.debian.org mailing-list, and to participate in the derivative census. This census aims at collecting information on work happening in a derivative so that official Debian maintainers can better track the state of their package in Debian variants.
→ https://wiki.debian.org/DerivativesFrontDesk
→ https://wiki.debian.org/Derivatives/Census
Позвольте нам представить наиболее интересные и популярные производные дистрибутивы.

A.2. Ubuntu
Ubuntu ярко появился на сцене свободного программного обеспечения и этому есть причина: Canonical Ltd., компания, создавшая дистрибутив, наняла 30 с лишним разработчиков Debian и публично заявила о своих целях выпускать релиз для общественности два раза в год. Они также обязались поддерживать каждую версию полтора года.
Эти положения вынуждают сокращать сферу работы: Ubuntu сосредоточен на меньшем числе пакетов, нежели Debian, и зависит только от окружения GNOME (однако есть производный дистрибутив от Ubuntu — «Kubuntu», использующий KDE). Дистрибутив полностью интернационализирован и доступен на многих языках.
До сих пор Ubuntu удаётся держать такой темп выпусков. Также есть выпуски Long Term
Support (LTS) (с долгосрочной поддержкой) с пятилетним обещанным периодом поддержки. На ноябрь 2013 года текущий LTS-выпуск — 12.04 с кодовым названием
Precise Pangolin. Последняя не-LTS версия — 13.10 с кодовым названием Saucy
Salamander. Номера версий привязаны к дате выпуска: например, 13.10 означает, что версия выпущена в октябре 2013 года.
НА ПРАКТИКЕ Поддержка Ubuntu и обещанная поддержка
Canonical неоднократно меняла правила, регламентирующие длительность периода, на протяжении которого сопровождается выпуск. Canonical как компания обещает предоставлять обновления безопасности для всего программного обеспечения, доступного в разделах main и restricted архива Ubuntu на протяжении 5 лет для LTS- выпусков и на протяжении 9 месяцев для остальных выпусков. Всё остальное (доступное в universe и multiverse
)
сопровождается по возможности добровольцами команды MOTU (Masters Of The Universe). Будьте готовы разбираться с поддержкой безопасности самостоятельно, если вы полагаетесь на пакеты из этих разделов.
Ubuntu завоевал широкую аудиторию. Миллионы пользователей были поражены простотой установки и простотой использования рабочего окружения в работе.
Ubuntu and Debian used to have a tense relationship; Debian developers who had placed great hopes in Ubuntu contributing directly to Debian were disappointed by the difference between the
Canonical marketing, which implied Ubuntu were good citizens in the Free Software world, and the actual practice where they simply made public the changes they applied to Debian packages.
Things have been getting better over the years, and Ubuntu has now made it general practice to forward patches to the most appropriate place (although this only applies to external software they package and not to the Ubuntu-specific software such as Mir or Unity).
→ http://www.ubuntu.com/

A.3. Linux Mint
Linux Mint is a (partly) community-maintained distribution, supported by donations and advertisements. Their flagship product is based on Ubuntu, but they also provide a “Linux Mint
Debian Edition” variant that evolves continuously (as it is based on Debian Testing). In both cases, the initial installation involves booting a LiveDVD.
The distribution aims at simplifying access to advanced technologies, and provides specific graphical user interfaces on top of the usual software. For instance, Linux Mint relies on
Cinnamon instead of GNOME by default (but it also includes MATE as well as KDE and Xfce);
similarly, the package management interface, although based on APT, provides a specific interface with an evaluation of the risk from each package update.
Linux Mint включает в себя большое количество собственнического программного обеспечения для упрощения работы пользователей, которым оно может понадобиться.
Например, Adobe Flash или мультимедийные кодеки.
→ http://www.linuxmint.com/

A.4. Knoppix
Определённо нуждается в упоминании дистрибутив Knoppix. Это первый популярный дистрибутив на LiveCD; иными словами, загрузочный CD-ROM, с которого запускается система Linux, полностью готовая к работе, которой не нужен жёсткий диск — любая система, уже установленная на этой машине, не подвергнется изменениям.
Автоматическое определение устройств позволяет дистрибутиву работать на большинстве аппаратных конфигураций. CD-ROM включает в себя почти 2 ГБ (сжатого)
программного обеспечения, а DVD-ROM — ещё больше.
Связка CD-ROM и USB-накопителя позволяет всегда иметь свои файлы при себе и работать на любом компьютере, не оставляя следов — помните, дистрибутив совсем не использует жёсткий диск. Knoppix в основном базируется на LXDE (легковесном графическом рабочем столе), однако многие другие дистрибутивы предоставляют иные комбинации рабочего окружения и программного обеспечения. Это возможно, благодаря пакету live-build, который позволяет относительно легко создавать LiveCD.
→ http://live.debian.net/
Стоит отметить, что у Knoppix так же имеется установщик: вы можете сначала попробовать дистрибутив в качестве LiveCD, а затем установить на жёсткий диск для увеличения производительности.
→ http://www.knopper.net/knoppix/index-en.html

A.5. Aptosid and Siduction
These community-based distributions track the changes in Debian Sid (Unstable) — hence their name. The modifications are limited in scope: the goal is to provide the most recent software and to update drivers for the most recent hardware, while still allowing users to switch back to the official Debian distribution at any time. Aptosid was previously known as Sidux, and
Siduction is a more recent fork of Aptosid.
→ http://aptosid.com
→ http://siduction.org

A.6. Grml
Grml is a LiveCD with many tools for system administrators, dealing with installation,
deployment, and system rescue. The LiveCD is provided in two flavors, full and small
, both available for 32-bit and 64-bit PCs. Obviously, the two flavors differ by the amount of software included and by the resulting size.
→ https://grml.org

A.7. Tails
Tails (The Amnesic Incognito Live System) aims at providing a live system that preserves anonymity and privacy. It takes great care in not leaving any trace on the computer it runs on, and uses the Tor network to connect to the Internet in the most anonymous way possible.
→ https://tails.boum.org

A.8. Kali Linux
Kali Linux is a Debian-based distribution specialising in penetration testing (“pentesting” for short). It provides software that helps auditing the security of an existing network or computer while it is live, and analyze it after an attack (which is known as “computer forensics”).
→ https://kali.org

A.9. Devuan
Devuan is a relatively new fork of Debian: it started in 2014 as a reaction to the decision made by Debian to switch to systemd as the default init system. A group of users attached to sysv and opposing (real or perceived) drawbacks to systemd started Devuan with the objective of maintaining a systemd-less system. As of March 2015, they haven't published any real release:
it remains to be seen if the project will succeed and find its niche, or if the systemd opponents will learn to accept it.
→ https://devuan.org

A.10. Tanglu
Tanglu is another Debian derivative; this one is based on a mix of Debian Testing and Unstable,
with patches to some packages. Its goal is to provide a modern desktop-friendly distribution based on fresh software, without the release constraints of Debian.
→ http://tanglu.org

A.11. DoudouLinux
DoudoLinux нацелен на маленьких детей (начиная с двухлетнего возраста). Поэтому он предоставляет сильно изменённый графический интерфейс (основанный на LXDE) и поставляется с множеством игр и образовательных приложений. Доступ к Интернету фильтруется, чтобы не дать детям посещать проблемные веб-сайты. Реклама блокируется. Рассчитывается, что родители должны свободно позволять своим детям пользоваться компьютером, как только на нём загружен DoudouLinux. Каждому ребёнку понравится использовать DoudouLinux не меньше, чем свою игровую приставку.
→ http://www.doudoulinux.org

A.12. Raspbian
Raspbian is a rebuild of Debian optimised for the popular (and inexpensive) Raspberry Pi family of single-board computers. The hardware for that platform is more powerful than what the Debian armel architecture can take advantage of, but lacks some features that would be required for armhf; so Raspbian is a kind of intermediary, rebuilt specifically for that hardware and including patches targeting this computer only.
→ https://raspbian.org

A.13. И многие другие
На сайте Distrowatch приводятся ссылки на огромное число дистрибутивов Linux, многие из которых основаны на Debian. Исследуя его, можно убедиться в огромном разнообразии мира свободного программного обеспечения.
→ http://distrowatch.com
Поиск может помочь найти дистрибутив на основании его происхождения. В ноябре
2013 года поиск потомков Debian показывал 143 активных дистрибутивф!
→ http://distrowatch.com/search.php

Приложение B. Короткий Коррективный
Курс
Несмотря на то, что эта книга ориентирована на администраторов и опытных пользователей, мы не хотели исключать заинтересовавшихся новичков. Это приложение
- ускоренный курс,в котором описываются основные понятия, затрагивающие обращение с компьютером в Unix.
B.1. Shell и Базовые команды
В мире Unix каждый администратор рано или поздно использует командную строку;
например, когда система не запускается должным образом и имеется только командная строка режима восстановления. Умение управляться с командной строкой - базовое для выживания в таких условиях.
КРАТКИЙ ЭКСКУРС Запуск командного интерпритатора
Окружение командной строки может быть запущено из графической среды, приложением, известным как "Терминал". В GNOME вы можете запустить его из обзора “Activities” (в русской локализации - "Обзор", который открывается когда вы перемещаете курсор мыши в левый верхний угол экрана) после ввода первых букв названия приложения. В KDE, вы найдете его в K → Applications → System меню.
Эта секция дает только краткий обзор команд. Они все имеют много опций, не описанных здесь. Поэтому, пожалуйста, обратитесь к документации в соответствующих страницах руководства.
B.1.1. Обзор Дерева Каталогов и Управления Файлами
После того, как сеанс открыт, команда pwd (которая служит для вывода рабочего
каталога) показывает текущее местоположение в файловой системе. Текущий каталог изменяется с помощью команды cd
каталог
(cd для того, чтобы изменить каталог).
Родительский каталог всегда называют
(две точки), тогда как текущий каталог -
(одна точка). Команда ls выводит список содержимого каталога. Если никаких параметров не задано, она работает в текущем каталоге.
$
pwd
/home/rhertzog
$
cd Desktop
$
pwd
/home/rhertzog/Desktop
$
cd .

$
pwd
/home/rhertzog/Desktop
$
cd ..
$
pwd
/home/rhertzog
$
ls
Desktop Downloads Pictures Templates
Documents Music Public Videos
Новый каталог может быть создан с помощью команды mkdir
каталог
, а удален существующий (пустой) каталог может быть с помощью - rmdir
каталог
. Команда mv
позволяет переместить и/или переименовать файлы и каталоги; удаление файлов достигается с помощью команды rm
файл
$
mkdir test
$
ls
Desktop Downloads Pictures Templates Videos
Documents Music Public test
$
mv test new
$
ls
Desktop Downloads new Public Videos
Documents Music Pictures Templates
$
rmdir new
$
ls
Desktop Downloads Pictures Templates Videos
Documents Music Public
B.1.2. Отображение и Изменение Текстовых Файлов
Команда cat
файл
(предназначенная для связывания файла со стандартным устройством вывода) считывает файл и отображает его содержимое на терминале. Если файл слишком большой чтобы поместиться на экране, используйте пейджер (полоса прокрутки) например меньше (или больше) для прокрутки содержимого файла на странице.
Команда editor запускает текстовый редактор (например vi или nano) и позволяет создавать, редактировать и читать текстовые файлы. Простейшие файлы иногда могут быть созданы непосредственно из интерпретатора команд с помощью перенаправления:
echo "
текст
" >
файл
. Оно создает
файл
с “
текстом
” в качестве содержимого. Добавить строку в конце файла тоже возможно, с помощью такой команды как echo "
еще текст
"
>>
файл
. Запишите
>>
в этот пример.
B.1.3. Поиск Файлов и в пределах Файла
Команда find
каталог

критерий
ищет файлы внутри каталога
каталог
по особым критериям. Наиболее часто используемым критерием является
-name имя
: что позволяет найти файл по его имени.

Команда grep
выражение

файл
ищет содержимое файла и извлекает строки,
совпадающие с выражением (смотри боковую панель
BACK TO BASICS Regular expression
). Добавление опции
-r включает рекурсивный поиск всех файлов,
содержащихся в каталоге, используемом в качестве параметра. Это позволяет найти файл когда известна лишь часть содержимого.
B.1.4. Управление Процессами
Команда ps aux выводит список запущенных процессов и помогает идентифицировать,
показывая их pid (Идентификационный номер процесса). Когда pid процесса известен,
команда kill -
сигнал

pid
позволяет отправить ему сигнал (если процесс принадлежит текущему пользователю). Существует несколько сигналов; наиболее часто используемые
- это
TERM
(запрос завершиться корректно) и
KILL
(принудительно убить).
Командный интерпретатор может запускать программы в фоновом режиме, если за командой следует “&”. Используя амперсанд, пользователь немедленно возобновляет контроль над оболочкой, хотя команда все еще выполняется (как фоновый процесс).
Команда jobs выводит список процессов, запущенных в фоновом режим; ввод fg %
номер
фонового процесса
(от foreground) возвращает процесс на передний план. Когда команда выполняется на переднем плане (была запущена обычным образом или перенесена на передний план с помощью fg), комбинация клавиш
Control+Zприостанавливает процесс и возвращает контроль над командной строкой.
Процесс может быть возобновлен в фоновом режиме с помощью bg %
номер фонового
процесса
(от background).
B.1.5. Информация о системе: Память, Дисковое
пространство, Идентификатор
Команда free отображает сведения о памяти; df (disk free) выводит отчет о доступном дисковом пространстве на каждом из дисков, смонтированных в файловой системе.
Опция
-h
(для читаемости человеком) преобразует размеры в более разборчивый вид
(обычно в мегабайты или гигабайты).Аналогичным образом, команда free
поддерживает опции
-m и
-g для отображения данных в мегабайтах или гигабайтах,
соответственно.
$
free
total used free shared buffers cached
Mem: 1028420 1009624 18796 0 47404 391804
-/+ buffers/cache: 570416 458004
Swap: 2771172 404588 2366584
$
df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 9614084 4737916 4387796 52% /
tmpfs 514208 0 514208 0% /lib/init/rw
udev 10240 100 10140 1% /dev tmpfs 514208 269136 245072 53% /dev/shm
/dev/sda5 44552904 36315896 7784380 83% /home
Команда id выводит идентификатор пользователя, запустившего сессию, а также список групп, в которые он входит. Поскольку доступ к некоторым файлам или устройствам может быть ограничен для членов некоторых групп, проверка групп (в которых состоит пользователь) может быть полезной.
$
id
uid=1000(rhertzog) gid=1000(rhertzog) groups=1000(rhertzog),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),108(netdev),109(bluetooth),115(scanner)

B.2. Организация Иерархии Файловой
системы
B.2.1. Корневой каталог
Система Debian организована по Стандарту иерархии файловой системы (FHS от англ.
Filesystem Hierarchy Standard). Этот стандарт определяет назначение каждого каталога.
Например, каталоги верхнего уровня описываются следующим образом:
/bin/
: основные программы;
/boot/
: ядро Linux и другие файлы, необходимые для его своевременного процесса загрузки;
/dev/
: файлы устройств;
/etc/
: конфигурационные файлы;
/home/
: личные файлы пользователей;
/lib/
: основные библиотеки;
/media/*
: точки монтирования съемных устройств (CD-ROM, USB ключей и так далее);
/mnt/
: временные точки монтирования;
/opt/
: дополнительные приложения, поставляемые третьими сторонами;
/root/
: личные файлы администратора (root);
/run/
: непостоянные данные среды выполнения, которые не сохраняются после перезагрузки (еще не включены в FHS)
/sbin/
: системные программы;
/srv/
: данные, используемые серверами, размещенными в этой системе;
/tmp/
: временные файлы; часто этот каталог очищается при загрузке;
/usr/
: приложения; этот каталог далее подразделяется на bin
, sbin
, lib
(согласно той же логике,что и в корневом каталоге). Кроме того,
/usr/share/
содержит архитектурно независимые данные.
/usr/local/
предназначен для использования администратором при установке приложения вручную без перезаписи файлов,
обрабатываемых системой управления пакетами (dpkg).
/var/
: переменные данные, обрабатываемые демонами. Включает в себя файлы логов, очередей, буфера, кэша и так далее.
/proc/
и
/sys/
являются специфическими для ядра Linux (и не входят в FHS). Они используются ядром для экспорта данных в пространство пользователя (смотри
Раздел B.3.4, «Пространство пользователя»
и
Раздел B.5, «Пространство пользователя»
для разъяснения этой идеи).
B.2.2. Домашний Каталог Пользователя

Содержимое домашнего каталога пользователя не стандартизировано, однако имеет несколько заслуживающих внимания соглашений. Одно из них: домашний каталог пользователя часто называют тильдой (“
”). Это полезно знать, потому что интерпретатор команд автоматически заменяет тильду в текущей директории (обычно на
/home/имя пользователя/
).
Традиционно, конфигурационные файлы приложения хранятся непосредственно в домашнем каталоге пользователя,но их имена обычно начинаются с точки (например,
почтовый клиент mutt хранит свои настройки в
/.muttrc
). Обратите внимание, что имена, начинающиеся с точки, скрыты по умолчанию; и ls показывает их только, когда используется с опцией
-a
, а графическому файловому менеджеру нужно включить в настройках "показывать скрытые файлы".
Некоторые программы используют несколько конфигурационных файлов,
расположенных в одной директории (например,
/.ssh/
). Некоторые приложения
(такие как веб-браузер Iceweasel) также используют их каталоги для хранения кэша загруженных данных. Таким образом, эти каталоги могут занимать много дискового пространства..
Эти конфигурационные файлы хранятся непосредственно в домашнем каталоге пользователя, часто называемые dotfiles, быстро разрастаются, что приводит к беспорядку. К счастью, коллективные усилия под эгидой FreeDesktop.org привели к созданию “XDG базовой спецификации каталогов”, соглашения, направленного на наведение порядка среди этих файлов и каталогов. Эта спецификация устанавливает,
что конфигурационные файлы должны храниться в каталоге
/.config
, файлы кэша в
/.cache
, а данные приложений в
/.local
(или в его подкаталогах). Это соглашение постепенно набирает силу, и некоторые приложения (особенно графические) начали следовать ему.
Рабочий стол графического окружения обычно отображает содержимое каталога
/Desktop/
(или каталога, названного соответственно переводу в системах,
сконфигурированных на языках отличных от английского).
Наконец, система электронной почты иногда сохраняет входящие сообщения в каталоге
/Mail/

B.3. Внутренняя Работа Компьютера:
Различные Уровни Сложности
Компьютер обычно рассматривается как нечто весьма абстрактное, и внешний видимый интерфейс намного проще, чем его внутренняя замысловатость. Такая запутанность вызвана отчасти количеством частей, из которых она состоит. Однако, эти части можно рассматривать слоями, где каждый уровень взаимодействует только с теми, что непосредственно выше или ниже его.
Конечный пользователь может не знать этих деталей… до тех пор пока все работает.
При решении таких проблем как “Интернет не работает!” первое, что нужно сделать - это определить на каком уровне проблема возникает. Сетевая карта (аппаратное обеспечение) работает? Она распознается компьютером? Ядро Linux видит ее?
Параметры сети настроены правильно? Все эти вопросы позволяют выделить соответствующие уровни и сосредоточиться на потенциальном источнике проблемы.
B.3.1. Нижний Уровень: Аппаратное Обеспечение
Давайте начнем с базового напоминания о том, что компьютер - это, прежде всего,
набор аппаратных элементов. Обычно это основная плата (известная как материнская
плата), с одним (или больше) процессором, некоторым ОЗУ, контроллерами устройств,
и слотами расширения для дополнительных плат (для остальных контроллеров устройств). Наиболее примечательные из этих контроллеров: IDE (Parallel ATA), SCSI и
Serial ATA, для подключения к устройствам хранения данных, таких как жёсткие диски.
"Другие контроллеры" в себя включают USB, который способен подключить огромное количество разнообразных устройств (начиная от веб-камеры до термометров, от клавиатуры до системы домашней автоматизации) и IEEE 1394 (Firewire). Эти контроллеры часто позволяют подключить несколько устройств, так контроллер обрабатывает их как целую подсистему (из-за этого его обычно называют "шиной").
"Дополнительные платы" включают в себя видео карты (к ним подключается монитор),
аудио карты, сетевые карты и так далее. В некоторых основных платах эти функции встроены, и нет нужды в дополнительных платах.
НА ПРАКТИКЕ Проверка работоспособности оборудования
Проверить работает ли какое-то оборудование может быть весьма сложно. С другой стороны, доказать, что оно не работает, иногда довольно легко.
Жёсткий диск состоит из шпинделя с пластинками и движущихся магнитных головок. Когда жёсткий диск включается, мотор пластинок издает характерное жужжание. Он также рассеивает энергию в виде тепла.
Следовательно, жёсткий диск, остающийся холодным и тихим, когда на него подается питание, сломан.
Сетевые карты обычно оснащены светодиодами, показывающими состояние соединения. Если кабель одним концом подключен к сетевой карте (а другим к концентратору или коммутатору), по крайней мере один светодиод будет
гореть. Если ни один светодиод не светится, сама сетевая карта, сетевое оборудование или кабель между ними неисправны. Следовательно, следующий шаг - тестировать каждый компонент отдельно.
Некоторые дополнительные платы — особенно 3D видео карты — имеют системы охлаждения, такие как радиаторы и/или вентиляторы. Если вентилятор не вращается, несмотря на то, что карта включена, правдоподобное объяснение - перегрев карты. Это также относится к центральному процессору (процессорам), расположенным на основной карте.
B.3.2. Загрузчик: BIOS или UEFI
Оборудование, само по себе, не в состоянии выполнять задачи без соответствующей программной части, управляющей им. Управление и взаимодействие с оборудованием - задача операционной системы и приложений. Они, в свою очередь, требует функционального оборудования для запуска.
Этот симбиоз между аппаратным обеспечением и программным обеспечением не возникает сам собой. Когда компьютер включается, требуется небольшая начальная настройка. Эту роль берёт на себя BIOS или UEFI (части программного обеспечения,
встроенные в материнскую плату), запускающийся автоматически при включении питания. Его основная задача - поиск программного обеспечения, которому он может передать управление. Обычно, в случае с BIOS, это включает поиск первого жёсткого диска с загрузочным сектором (обычно известного как master boot record или MBR),
загрузку этого загрузочного сектора, и его запуск. С этого момента, BIOS обычно не используется (до следующей загрузки). В случае с UEFI, процесс включает сканирование дисков с целью найти выделенные разделы EFI, содержащие дальнейшие для выполнения EFI приложения.
ИНСТРУМЕНТ Настройки, средства конфигурирования BIOS/UEFI
BIOS/UEFI также содержит часть программного обеспечения под названием "Настройки", позволяющую конфигурировать аспекты компьютера. В частности, она позволяет выбрать устройства, предпочтительные для загрузки (например, floppy-диск или CD-ROM), настроить системные часы и так далее. Запуск программы "Настройки" обычно осуществляется нажатием специальной клавиши сразу же после включения компьютера.
Обычно, это клавиша Del или Esc, иногда это F2 или F10. Большую часть времени выбор мигает на экране во время загрузки.
Загрузочный сектор (или раздел EFI), в свою очередь, содержит другие части программного обеспечения, называемые загрузчиками, цель которых - найти и запустить операционную систему. Так как эти загрузчики не встроены в основную плату, а загружаются с диска, они могут быть умнее чем BIOS (это объясняет почему
BIOS не загружает операционную систему самостоятельно). Например, загрузчик
(обычно GRUB для Linux систем) может вывести список доступных операционных систем и попросить пользователя выбрать. Обычно, по истечению времени производится выбор по-умолчанию. Иногда пользователь может также выбрать параметры для запуска ядра, и так далее. В конце концов ядро найдено, загружено в память, и запущено.

ЗАМЕТКА UEFI - современная замена BIOS
UEFI - относительно современная разработка. Большинство новых компьютеров поддерживают загрузку UEFI, но обычно они также поддерживают загрузку BIOS для обратной совместимости с операционными системами, не готовыми использовать UEFI.
Эта новая система свободна от некоторых ограничений загрузчика BIOS: с использованием выделенных разделов,
загрузчикам больше не нужны специальные трюки, чтобы поместиться в крошечную главную загрузочную запись
(MBR), а затем искать ядро для загрузки. Даже лучше, с соответствующей сборкой ядра Linux UEFI может загрузить непосредственно ядро без каких-либо промежуточных загрузчиков. UEFI также является основой для произведения Безопасной загрузки (Secure Boot) (технологии, обеспечивающей выполнение только программного обеспечения, подтвержденного производителем Вашей операционной системы).
BIOS/UEFI также отвечает за обнаружение и инициализацию ряда устройств. Очевидно,
это IDE/SATA устройства (обычно это жесткие диски и CD/DVD-ROM приводы), а также еще и PCI устройства. Обнаруженные устройства часто перечислены на экране во время процесса загрузки. Если этот список выводится слишком быстро, используйте клавишу Pause для его остановки на время, достаточное для прочтения. Не появившиеся установленные PCI устройства являются плохим знаком. В худшем случае, прибор неисправен. В лучшем - он просто не совместим с текущей версией BIOS или материнской платой. Спецификация PCI развивается, и старые основные платы не гарантируют поддержку более новых PCI устройств.
B.3.3. Ядро
BIOS/UEFI с загрузчиком работают всего по несколько секунд. Далее идет первая часть программного обеспечения, работающая длительное время - ядро операционной системы. Ядро берет на себя роль дирижера в оркестре и обеспечивает координацию между аппаратным обеспечением и программным обеспечением. Эта роль включает в себя несколько задач: управление оборудованием, процессами, пользователями и разрешениями, файловой системой и так далее. Ядро предоставляет общую базу для всех остальных программ в системе.
B.3.4. Пространство пользователя
Хотя все что происходит за пределами ядра можно собрать в кучу "пространство пользователя", мы по-прежнему можем разделить это программное обеспечение на уровни. Однако, их взаимодействие намного сложнее прежних, и классифицировать их не так просто. Приложения обычно используют библиотеки, которые в свою очередь окутывают ядро, но взаимодействие может также происходить с другими программами,
или множеством библиотек, вызывающих друг друга.

B.4. Некоторые Выполняемые Ядром
Задачи
B.4.1. Управление Оборудованием
Ядро, прежде всего, предназначено для контролирования оборудования, его обнаружения, его включения когда компьютер запускается и так далее. Это также делает оборудование доступным для программного обеспечения более высокого уровня с упрощенным интерфейсом программирования, так что последнее может воспользоваться преимуществами устройств, не беспокоясь о деталях, таких как: в какой слот расширения вставлена дополнительная плата. Программный интерфейс также предоставляет уровень абстракции; это позволяет, например, программе для видео-конференции использовать веб-камеру независимо от ее производителя и модели.
Программа может просто использовать интерфейс Video for Linux (V4L), а ядро транслирует функциональные вызовы этого интерфейса в фактические машинные команды, необходимые для использования веб-камеры.
Ядро экспортирует информацию об обнаруженном аппаратном обеспечении в виртуальные файловые системы
/proc/
и
/sys/
. Некоторые инструменты суммируют эту информацию. Среди них, lspci (из пакета pciutils) выводит список PCI устройств,
lsusb (из пакета usbutils) выводит список USB устройств, а lspcmcia (из пакета pcmciautils) выводит список PCMCIA плат. Эти инструменты очень полезны для определения точной модели какого-либо устройства. Эта идентификация также позволяет находить в интернете более точную информацию, которая в свою очередь,
приводит к актуальной документации.
Пример B.1. Пример информации, предоставляемой lspci и lsusb
$
lspci
[...]
00:02.1 Display controller: Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller (rev 03)
00:1c.0 PCI bridge: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1 (rev 03)
00:1d.0 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (rev 03)
[...]
01:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5751 Gigabit Ethernet PCI Express (rev 01)
02:03.0 Network controller: Intel Corporation PRO/Wireless 2200BG Network Connection (rev 05)
$
lsusb
Bus 005 Device 004: ID 413c:a005 Dell Computer Corp.
Bus 005 Device 008: ID 413c:9001 Dell Computer Corp.
Bus 005 Device 007: ID 045e:00dd Microsoft Corp.
Bus 005 Device 006: ID 046d:c03d Logitech, Inc.
[...]
Bus 002 Device 004: ID 413c:8103 Dell Computer Corp. Wireless 350 Bluetooth

Эти программы имеют опцию
-v
, с которой выводятся списки с более подробной (но зачастую ненужной) информацией. Наконец, команда lsdev (из пакета procinfo) выводит список коммуникационных ресурсов, используемых устройствами.
Приложения часто получают доступ к устройствам через специальные файлы,
созданные в
/dev/
(см. на боковой панели
BACK TO BASICS Device access permissions
).
Это специальные файлы, представляющие дисковые устройства (например,
/dev/hda и
/dev/sdc
), разделы (
/dev/hda1
или
/dev/sdc3
), мыши (
/dev/input/mouse0
),
клавиатуры (
/dev/input/event0
), звуковые карты (
/dev/snd/*
), серийные порты
(
/dev/ttyS*
) и так далее.
B.4.2. Файловые системы
Файловые системы - один из наиболее выдающихся аспектов ядра. Unix системы соединяют все хранилища файлов в одну единственную иерархическую систему, которая позволяет пользователям (и приложениям) получать доступ к данным просто, зная их местоположение в этой иерархии.
Начальная точка этого иерархического дерева называется корнем,
/
. Этот каталог может содержать именованные подкаталоги. Например, подкаталог home каталога
/
называется
/home/
. Эти подкаталоги могут, в свою очередь, содержать другие подкаталоги и так далее. Каждый каталог также может содержать файлы, в которых фактически и хранятся данные. Таким образом, имя
/home/rmas/Desktop/hello.txt ссылается на файл с именем hello.txt
, хранящийся в подкаталоге
Desktop подкаталога rmas подкаталога home корневого каталога. Ядро занимается преобразованием между этой системой именования и фактической, физической памятью на диске.
В отличии от других систем, есть только одна такая иерархия, и она может содержать данные с разных дисков. Один из этих дисков используется в качестве корня, а остальные - монтируются как каталоги в этой иерархии (в Unix команда называется
mount); после чего, эти диски становятся доступны в этих "точках монтирования". Это позволяет хранить домашние каталоги пользователей (традиционно хранятся в
/home/
)
на втором жёстком диске, который будет содержать каталоги rhertzog и rmas
. После того как диск монтируется в
/home/
, эти каталоги становятся доступны в их обычных местах, и будут работать пути, такие как
/home/rmas/Desktop/hello.txt
Существует множество форматов файловых систем, соответствующих множеству способов физического хранения данных на диске. Наиболее широко известны: ext2, ext3
и ext4, но есть и другие. Например, vfat исторически используется в операционных системах DOS и Windows, и позволяет использовать жёсткие диски как в Debian так и в
Windows. В любом случае, файловая система должна быть подготовлена на диске перед тем, как он будет монтироваться (эта операция известна как “форматирование”).
Команды, такие как mkfs.ext3 (где mkfs от MaKe FileSystem) производят форматирование. Эти команды нуждаются, в качестве параметра, в представляющем раздел для форматирования файле устройства (например,
/dev/sda1
). Эта операция
является разрушительной и должна выполняться только один раз, за исключением тех случаев, если нужно будет уничтожить файловую систему и начать все заново.
Также есть и сетевые файловые системы такие как NFS, в которых данные на хранятся на локальном диске. Вместо этого, данные передаются через сеть на сервер, который хранит и извлекает их по требованию. Абстракция файловой системы защищает пользователей от необходимости беспокоится о том, чтобы файлы оставались по их обычному иерархическому пути.
B.4.3. Общие Функции
Поскольку некоторые функции используются всем программным обеспечением, имеет смысл их централизация в ядре. Например, общая файловая система позволяет любому приложению просто открыть файл по его имени, не заботясь о том, где физически находится файл. Файл может храниться, разделенным на множество частей, на одном или нескольких жёстких дисках или на уделенном сервере. Общие функции взаимодействия используются приложениями для обмена данными, независимо от способа их передачи. К примеру, пусть может проходить через комбинацию локальных или беспроводных сетей, или по телефонной линии.
B.4.4. Управление Процессами
Процесс - запущенный экземпляр программы. Он требует памяти для хранения как самой программы, так и ее оперативных данных. Ядро отвечает за их создание и отслеживание. Когда программа запускается, ядро выделяет некоторый объем памяти,
потом загружает исполняемый код из файловой системы в эту память, а затем начинает исполнение этого кода. Оно хранит сведения об этом процессе, наиболее просматриваемое из которых - идентификационный номер, известный как pid (от англ.
process identifier).
Unix-подобные ядра (включая Linux), как и большинство других современных операционных систем, поддерживают “многозадачность”. Другими словами, они позволяют запускать много процессов "одновременно". Хотя на самом деле только один процесс выполняется в одну единицу времени, но ядро делит время на маленькие промежутки и исполняет каждый процесс пошагово. Так как эти временные интервалы очень короткие (в диапазоне миллисекунды), создается иллюзия параллельного выполнения процессов, хотя на самом деле они активны только в течение нескольких временных промежутков и простаивают остальную часть времени. Работа ядра заключается в регулировании его механизма планирования для поддержания этой иллюзии, увеличивая производительность системы в целом. Если временные интервалы слишком большие, приложение может показаться не таким отзывчивым как хотелось бы.
Если слишком короткие, то система будет терять много времени на переключение между задачами. Эти решения могут изменяться с приоритетами процессов. Процессы с
высоким приоритетом будут работать дольше и с большей частотой временных промежутков нежели процессы с низким приоритетом.
НА ЗАМЕТКУ Многопроцессорные системы (и их разновидности)
Описанное выше ограничение одним процессом, запущенным в единицу времени, не всегда выполняется. На самом деле идет ограничение одним запущенным процессом на ядро процессора в единицу времени. Многопроцессорные,
многоядерные или “гиперпоточные” системы позволяют запускать параллельно несколько процессов. В них также используется та же система временных интервалов, однако, она используется таким образом, чтобы обрабатывать случаи, когда активных процессов больше, чем доступных процессорных ядер. Это совсем не удивительно: базовые системы, по большей части простаивающие, почти всегда имеют десятки запущенных процессов.
Конечно, ядро позволяет запускать несколько независимых экземпляров одной и той же программы. Но каждый из них имеет доступ только к собственным временным интервалам и памяти. Их данные, таким образом, остаются независимыми.
B.4.5. Управление Правами
Также Unix-подобные системы являются многопользовательскими. Они предоставляют систему управления правами, которая поддерживает создание отдельных пользователей и групп; она также позволяет контролировать действия на основе разрешений. Ядро управляет данными для каждого процесса, что позволяет контролировать разрешения.
Большую часть времени процесс идентифицируется пользователем, запустившем его.
Этот процесс имеет право на действия, доступные его владельцу. Например, попытка открыть файл, требует от ядра проверить идентификатор процесса для предоставления доступа (для более подробной информации по данному примеру, см.
Раздел 9.3,
«Managing Rights»
).

B.5. Пространство пользователя
“Пространство пользователя” относится к среде выполнения нормальных (в отличии от ядра) процессов. Это не обязательно означает, что процессы были запущены пользователем, потому что стандартная система обычно имеет несколько “демонов”
(фоновых процессов), запускающихся до того как пользователь даже откроет сеанс.
Демоны - также считаются процессами пользовательского пространства.
B.5.1. Процесс
Когда ядро находится на последней фазе его инициализации, оно запускает первый процесс - init. Процесс #1 очень редко полезен сам по себе, и Unix-подобные системы работают с множеством дополнительных процессов.
Прежде всего, процесс может клонировать себя (это действие называется fork). Ядро выделяет пространство в памяти (точно такое же как и для исходного процесса), и новый процесс его занимает. Единственная разница между этими двумя процессами - их
pid. Новый процесс обычно зовется дочерним процессом, а оригинальный (pid которого не изменился) - родительским процессом.
Иногда, дочерний процесс продолжает жить своей собственной жизнью независимо от родителя, со своими собственными данными, скопированными у родительского процесса. Во многих случаях, однако, этот дочерний процесс выполняется другой программой. За некоторыми исключениями, его память просто замещается новой программой, и начинается выполнение новой программы. Это механизм, используемый init процессом (с процессом #1) для запуска дополнительных сервисов и выполнения последовательности всей загрузки. В определенный момент один процесс из потомства
init запускает графический интерфейс для пользователей и входа в систему (подробно эта последовательность событий описана в
Раздел 9.1, «System Boot»
).
Когда процесс выполняет задачу для которой он был запущен, он завершается. Затем ядро высвобождает память, выделенную для этого процесса и перестает предоставлять ему интервалы времени выполнения. Родительский процесс оповещается о том, что его дочерний процесс был завершен, что позволяет процессу ожидать выполнения задач,
поставленных дочернему процессу. Это поведение ясно видно в интерпретаторе командной строки (известной как shells). При вводе команды в командной строке,
запрос возвращается только после завершения выполнения этой команды. Большинство оболочек позволяют выполнять команды в фоновом режиме (на заднем плане), для этого надо просто добавить
&
в конец команды. Запрос тут же выводится снова, что может вызвать проблемы если команде нужно выводить ее собственные данные.

B.5.2. Демоны
“Демон” - это процесс, запускаемый автоматически в последовательности загрузки. Он продолжает работать (в фоновом режиме), выполняя задачи по обслуживанию или предоставлению сервисов другим процессам. Эти “фоновые задачи” на самом деле произвольны, и не соответствуют ничему конкретному, с точки зрения системы. Это просто процессы, очень похожие на другие процессы, которые выполняются в свои промежутки времени. Различие состоит только в человеческом языке: процесс, который выполняется без взаимодействия с пользователем (в частности, без графического интерфейса) называется “выполняющимся в фоновом режиме” или “демоном”.
СЛОВАРЬ Daemon, demon, уничижительный термин?
Хотя термин daemon разделяет его Греческую этимологию с demon, первый не подразумевает дьявольское зло,
вместо этого, следует воспринимать его как своего рода вспомогательного духа. Это различие достаточно тонко в английском языке; и еще хуже в других языках, где то же самое слово используется для обоих значений.
Несколько таких демонов подробно описаны в
Глава 9, Unix Services
B.5.3. Межпроцессное взаимодействие
Изолированный процесс, демон или интерактивное приложение, редко бывает полезным сам по себе, поэтому существует несколько методов, позволяющих отдельным процессам взаимодействовать друг с другом для обмена данными или управления друг другом. Общий термин обозначающий их - межпроцессное взаимодействие, или коротко IPC (от англ. Inter-Process Communication).
Простейшая система IPC - использование файлов. Процесс, желающий передать данные, пишет их в файл (с заранее известным именем), при этом получатель только открывает файл и читает его содержимое.
В случае, когда вы не хотите сохранять данные на диск, вы можете использовать канал,
который является простым объектом с двумя концами; байты, написанные в одном конце, доступны для чтения на другом. Это простой и удобный способ межпроцессного взаимодействия, т.к. концы управляются отдельными процессами. Каналы могут быть разделены на две категории: именованные и анонимные. Именованный канал представляет собой запись в файловой системе (хотя передаваемые данные не хранятся там), так оба процесса могут самостоятельно открыть его, если расположение именованного канала заранее известно. В тех случаях, когда взаимодействующие процессы связаны между собой (например, родительский и дочерний процессы),
родительский процесс также может создать анонимный канал перед тем как "форкнется", а дочерний процесс наследует его. Таким образом оба процесса могут обмениваться данными через канал без необходимости задействовать файловую систему.
НА ПРАКТИКЕ Конкретный пример

Давайте опишем подробнее, что происходит когда составная команда (конвейер) запускается в оболочке. Мы предполагаем, что у нас есть процесс bash (стандартная оболочка в Debian), с pid 4374; в этой оболочке мы вводим команду: ls | sort.
Вначале оболочка интерпретирует введенную команду. В нашем случае, он понимает, что это две программы (ls и
sort) с потоком данных, идущим из одного в другой (обозначается знаком
|
, известным как канал). Сначала bash
создает анонимный канал (который изначально существует только в рамках самого процесса bash).
Потом оболочка клонирует себя; это создает новый процесс bash с pid #4521 (идентификаторы процессов - абстрактные номера, обычно не имеющие конкретного смысла). Процесс #4521 наследует канал, что означает, что он может писать в его “входную” часть; bash перенаправляет его стандартный поток вывода во вход этого канала.
Затем он выполняет программу ls (и заменяет себя на нее), которая выводит список содержимого текущего каталога. Так как ls пишет в свой стандартный вывод, а этот вывод был заранее перенаправлен, результат эффективно отправляется в канал.
Похожая операция происходит и со второй командой: bash клонирует себя снова, что создает новый процесс bash с pid #4522. Так как это тоже дочерний процесс #4374, он также наследует канал; затем bash соединяет его стандартный ввод с выходом канала, выполняет команду sort (и заменяет себя на нее), которая сортирует ее входные данные и выводит результат.
Теперь все кусочки головоломки собраны воедино: ls читает текущую директорию и пишет список файлов в канал;
sort читает этот список, сортирует его в алфавитном порядке и выводит результат. Затем процессы с номерами
#4521 и #4522 завершаются, а #4374 (который ждал их во время операции) возобновляет управление и выводит приглашение, позволяющее пользователю ввести новую команду.
Однако, межпроцессное взаимодействие используется не только для передачи данных.
Во многих ситуациях, единственная информация, которую нужно передать: это управляющие сообщения такие как “приостановить выполнения” или “возобновить выполнение”. Unix (и Linux) предоставляют механизм, известный как сигналы, через которые процесс может легко отправлять другому процессу специальные сигналы,
выбранные из определенного списка. Необходимо лишь знать pid целевого процесса.
Для более сложного взаимодействия существует механизм, предоставляющий процессу возможность открыть доступ (полностью или частично) к своей выделенной памяти другому процессу. Эта память может использоваться процессами для обмена данными между ними.
Наконец, сетевое подключение может также помогать процессам взаимодействовать друг с другом; причем, эти процессы могут быть запущенны на разных компьютерах и находиться в тысячах километров друг от друга.
Это нормально для Unix-подобных систем: использовать все эти механизмы в разной степени.
B.5.4. Библиотеки
Библиотеки функций играют решающую роль в Unix-подобных операционных системах.
Они не являются программами (они не могут быть выполнены самостоятельно), а представляют собой фрагменты кода, которые могут быть использованы обычными программами. Среди общих библиотек вы можете найти:
стандартная библиотека C (glibc), содержащая базовые функции, такие как функции открывания файлов, сетевого соединения, и другие облегчающие взаимодействие с ядром функции;
графические инструментарии (такие как Gtk+ и Qt) позволяют множеству программ многократно использовать поддерживаемые ими графические объекты;
библиотека libpng, позволяющая загружать, интерпретировать и сохранять изображения в формате PNG.
Благодаря этим библиотекам, приложения могут многократно использовать уже существующий код. Разработка приложений упрощается, т.к. множество приложений может использовать одни и те же функции. С библиотеками, часто разрабатываемыми разными людьми, глобальная разработка системы становится ближе к исторической философии Unix.
КУЛЬТУРА Путь Unix: что-то одно
Одна из фундаментальных концепций, лежащих в основе семейства операционных систем Unix гласит: "каждый инструмент должен делать только одну вещь, и делать её хорошо; приложения могут впоследствии использовать эти инструменты для строительства в итоге более продвинутой логики". Эта философия просматривается во множестве воплощений. Скрипты оболочки могут быть лучшим примером: они собирают сложные последовательности из очень простых инструментов (таких как grep, wc, sort, uniq и т.д.). Еще одной реализацией этой философии являются библиотеки кода: библиотека libpng позволяет считывать и записывать изображения в формате PNG с разными опциями и различными путями, но она делает только это; нет необходимости в функциях отображения или редактирования изображения.
Кроме того, эти библиотеки часто называют “общими библиотеками”, так как ядро может загружать их в память единожды, тогда как несколько процессов будут использовать эти библиотеки одновременно. Это позволяет экономить память, в сравнении с обратной (гипотетической) ситуацией, когда код библиотеки будет загружаться в память столько раз, сколько процессов его использует.


Каталог: wp-content -> uploads -> 2016
2016 -> Государственное областное бюджетное
2016 -> В. П. Зинченко писал о том, что если человек в детстве не дополучил некую норму участия в игровом времяпрепровождении, он приобретает социально-психологическую ущербность вроде «игровой дистрофии», которую в последу
2016 -> Общешкольное родительское собрание «Об ответственности родителей за воспитание детей»
2016 -> 1 июня 2016 года Международный день защиты детей 1 июня
2016 -> «Формирование социально-нравственной позиции дошкольников посредством введения сказочных сюжетов в компьютерные дидактические игры»
2016 -> Принята Утверждена
2016 -> Конкурс по разработке компьютерных игр патриотической направленности «патриот by»


Поделитесь с Вашими друзьями:
1   ...   24   25   26   27   28   29   30   31   32


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

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


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