- •1Изучение unix® (Linux)
- •1.1Человеко-машинные системы
- •1.2Процедурные системы
- •1.3Проективные системы
- •1.4Открытые технологии
- •1.4.1История развития gnu/Linux
- •1.4.2Архитектура и философия unix®.
- •2Компоненты unix®
- •2.1Ядро
- •2.2Управление памятью
- •2.3Управление процессами
- •2.4Демоны
- •2.5Понятие файла в Linux
- •2.6Организация хранения файлов
- •2.6.1Что такое файловая система?
- •2.7Файловые системы Linux
- •2.8Утилиты
- •2.9Типы программ
- •3Процедура загрузки ос Linux
- •3.1Основные конфигурационные файлы
- •3.2Загрузка в однопользовательском режиме
- •3.3Настройка общесистемных сервисов
- •3.3.1Редактирование файла /etc/fstab
- •3.4Файлы и разделы подкачки
- •3.5Запуск демонов
- •3.6Процессы
- •3.7Управление процессами
- •3.7.1Команда ps
- •3.7.2Команда top
- •3.7.3Приоритеты
- •3.7.4Сигналы и команда kill
- •3.7.5Перевод процесса в фоновый режим
- •3.8Gnu grub загрузчик
- •3.8.1Что такое grub?
- •3.8.2Компиляция и инсталляция программного пакета grub
- •3.8.3Инсталляция загрузчика grub
- •3.8.4Конфигурация grub
- •4Справочная система Linux
- •4.1Руководство (man)
- •4.1.1Утилита man
- •4.2Утилиты whatis и apropos
- •4.3Работа с man
- •4.3.1Система info
- •4.3.3Howto файлы
- •4.3.4Ресурсы в Интеренете.
- •5Оболочка, Shell, командный интерпетатор.
- •5.1Начало работы с Shell
- •5.2Программы
- •5.2.1Выполнение команд
- •5.3Команды Shell
- •5.3.1Опции
- •5.3.2Аргументы
- •5.3.3Исключения
- •5.4Виртуальные консоли
- •5.5Псевдонимы и переменные
- •5.6Навигация и редактирование
- •5.7История команд
- •5.8Простые регулярные выражения
- •5.9Запуск команды на выполнение
- •5.10Стандартный ввод/вывод
- •5.11Фильтры
- •6Shell как язык программирования
- •6.1Сценарий
- •6.2Запуск сценария
- •6.3Встроенные переменные
- •6.4Условия проверки
- •6.4.1Сложные условия поиска:
- •6.4.2Условный оператор "if"
- •6.4.3Конструкции
- •6.4.4Оператор вызова ("case")
- •6.4.5Пустой оператор
- •6.5Функции в shell
- •6.6Популярные команды
- •6.6.1Поиск файлов.
- •6.6.2Поиск внутри файла
- •7Управление пользователями
- •7.1Структура файла /etc/passwd
- •7.2Структура файла /etc/group
- •7.3Псевдопользователи
- •7.4Команды работы с учетными записями пользователей
- •8Установка программного обеспечения
- •8.1Утилита rpm
- •8.2Утилита Apt
- •8.2.1Использование apt
- •8.2.2Установка или обновление пакетов.
- •8.2.3Удаление установленного пакета.
- •8.2.4Обновление всех установленных пакетов
- •8.2.5Поиск в репозитарии
- •9Сборка по из исходных кодов
- •9.1.1Необходимые сведения о программировании на языке Си
- •9.1.2Инсталляция из исходных текстов
- •10Файловая система
- •10.1Основы работы файловых стистем
- •10.1.1Файлы
- •10.1.2Каталоги
- •10.1.3Типы файлов
- •10.1.4Файлы физических устройств
- •10.1.5Именованные каналы (pipes)
- •10.1.6Сокеты (sockets)
- •10.1.7Символические ссылки
- •10.1.8Права доступа к файлам и каталогам
- •10.1.9Расширенные атрибуты доступа
- •10.2Управление файловой системой
- •10.2.1Разбиение диска на разделы, fdisk
- •10.2.2Создание и монтирование файловых систем
- •10.2.3Команды для работы с файлами
- •10.3Команда find и символы шаблонов для имен файлов
- •10.4Команда split — разбиваем файл на несколько частей
- •10.5Сравнение файлов и команда patch
- •10.6Команды архивирования файлов
- •10.6.1Программа tar
- •10.6.2Программа gzip
- •10.6.3Программа bzip2
- •10.6.4Примеры применения tar
- •11Сетевая файловая система (nfs)
- •11.1Запуск nfs
- •11.2Монтирование тома nfs
- •11.4Файл exports
- •12Популярные приложения
- •12.1Эффективная работа с vim
- •12.2Эффективно передвигаемся по файлу
- •12.3Вставка
- •12.4.1Использование mc
- •12.4.2Встроенный ftp-клиент
- •12.4.3Переименование групп файлов
- •13Сетевые средства Linux
- •13.1Общие сведения о сетях
- •13.1.1Стек tcp/ip
- •13.1.2Адресация Internet
- •13.1.3Система имен доменов (dns - Domain Name System)
- •13.1.4Модель Клиент-Сервер
- •13.1.5Адреса tcp/ip
- •13.1.6Преобразование адресов
- •13.2Конфигурация сетевых интерфесов
- •13.2.1Адрес сети
- •13.2.2Широковещательный адрес
- •13.2.3Адрес шлюза
- •13.2.4Адрес сервера имен
- •13.2.5Маска сети
- •13.3Файлы конфигурации tcp/ip
- •13.3.1Файл /etc/hosts
- •13.3.2Файл /etc/networks
- •13.3.3Файл /etc/init.D/network
- •13.3.4Параметры dns
- •13.3.5Файл host.Conf
- •13.3.6Файл /etc/resolv.Conf
- •13.4Команда ifconfig
- •13.5Маршрутизация
- •14Контроль состояния сети
- •14.3Команда lsof
- •14.4Проверка arp-таблиц
- •15Управление работой межсетевого экрана (брандмауэра) netfilter
- •15.1Настройка межсетевого экрана Iptables
- •15.2Порядок прохождения таблиц и цепочек
- •15.2.1Общие положения
- •15.3Как строить правила - основы
- •15.3.1Команды
- •15.3.2Критерии
- •15.3.3Общие критерии
- •15.4Неявные критерии
- •15.4.1Tcp критерии
- •15.4.2Udp критерии
- •15.4.3Критерий mac
- •16Shorewall: iptables с человеческим лицом
- •16.1Базовая настройка
- •16.2Фильтрация трафика
- •16.3Дополнительные возможности
- •16.3.1Вместо заключения
- •16.4Приложение. Устанавливаем Shorewall
- •17Управление ядром
- •17.1Версия ядра
- •17.2Причины для пересборки ядра
- •17.3Подготовка
- •17.4Компиляция (Make)
- •17.5Установка заплат
- •17.6Сборка единичного модуля
- •18Мониторинг системы
- •18.1Система ведения логов
- •18.2Демон Syslogd
- •18.2.1Параметры запуска
- •18.2.2Сигналы
- •18.2.3Файл конфигурации
- •18.2.4Советы по настройке syslog
- •18.3Logger - утилита записи в журнал
- •18.4Logrotate или "что делать со старыми журналами?"
- •18.5Logwatch или "как извлечь полезную информация из кучи мусора?"
- •19Cron - планирование заданий
- •19.1Настройка задач Cron
- •19.2Запуск и остановка службы
- •19.3Системное время
- •20Резервное копирование в Linux
- •20.1Использование серверов резервного копирования
- •20.2Аппаратные средства, предназначенные для создания резервных копий
- •20.3Способы резервного копирования
- •20.3.1Резервное копирование, инициируемое клиентом
- •20.3.2Резервное копирование, инициируемое сервером
- •20.4Использование tar
- •20.4.1Возможности tar
- •20.4.2Список команд tar:
- •20.4.3Использование smbtar
- •20.4.4Создание разделяемых объектов резервного копирования
- •20.5Обзор и установка системы резервного копирования BackupPc
- •20.5.1Введение
- •20.5.2Требования к установке
- •20.5.3Настройка BackupPc
- •20.5.4Интерфейс
- •21Основы безопасности Linux
- •21.1Меры предосторожности
- •21.2Принципы защиты
- •21.3Идентификаторы пользователя и группы пользователей
- •21.4.1Безопасность файлов
- •21.5Важные системные файлы
- •21.6Проблемы защиты /etc/passwd и /etc/shadow
- •21.6.1Скрытые пароли
- •21.6.2Устаревание паролей
1.4Открытые технологии
Хотя об открытых технологиях много пишут и говорят, многим это явление кажется противоестественным.
Много разговоров о конкуренции Linux и Windows. Но чаще всего эти споры разгораются между людьми непосвященными.
Если доверится доводам оппонентов открытых технологий, так этого явления вообще бы не было. Но оно есть. И открытые технологии не просто существуют, они нередко побеждают в конкурентной борьбе.
Многие люди так или иначе используют открытые технологии даже не подозревая об этом. Многие ли знают, что вездесущая мобильная связь стандарта GSM, компьютеры архитектуры IBM PC, глобальная сеть "Internet" это примеры открытых технологий победивших в конкурентной борьбе закрытые аналоги?
Совершенно очевидно, что хотя эти технологии открыты, свободны и бесплатны это не мешает их развитию и широкому распространению.
Иногда открытие технологии является спасением для нее. (Netscape, Interbase и т.д.) Почему проекты за разработку которых никто не платит развиваются быстрее тех, где вкладываются огромные деньги?
Почему многие коммерческие проекты выжили только благодаря тому, что разработчики открыли их код?
Почему открытые проекты достигли наибольшего развития в самых экономически развитых странах (Швеция, Норвегия), а самые бедные страны, включая нашу, заметно отстают?
Может быть нам промыли мозги настолько, что мы не замечаем нечто важное? Каждому следует задуматься: - Может быть, чтобы я так думал важно для того кто зарабатывает на этом мегакапитал?
1.4.1История развития gnu/Linux
Linux основан на системных программах, разработанных в рамках проекта GNU, и на ядре Linux. Обычно по историческим причинам (и для краткости) эта система называется просто «Linux».
В отличие от большинства других операционных систем, GNU/Linux не имеет единой «официальной» комплектации. Вместо этого GNU/Linux поставляется в большом количестве так называемых дистрибутивов, в которых программы GNU соединяются с ядром Linux и другими программами. Наиболее известными дистрибутивами GNU/Linux являются Slackware, Red Hat, Fedora Core, Mandriva, SuSE, Debian, Gentoo, Ubuntu. Из дистрибутивов российских разработчиков наиболее известны ALT Linux и ASPLinux.
В отличие от Microsoft Windows, Mac OS (Mac OS X) и коммерческих UNIX®-подобных систем, GNU/Linux не имеет географического центра разработки. Нет и организации, которая владела бы этой системой; нет даже единого координационного центра. Программы для GNU/Linux — результат работы тысяч проектов. Некоторые из этих проектов централизованы, некоторые сосредоточены в фирмах, но большинство объединяют программистов со всего света, которые знакомы только по переписке. Создать свой проект или присоединиться к уже существующему может любой и, в случае успеха, результаты работы станут известны миллионам пользователей. Пользователи принимают участие в тестировании свободных программ, общаются с разработчиками напрямую, что позволяет быстро находить и исправлять ошибки и реализовывать новые возможности.
Linux – это свободный диалект операционной системы UNIX®
В начале 80-х начались проблемы в виде войн стандартов и коммерциализации программного обеспечения.
В конце 80-х годов молодой руководитель программистской компании со скромным названием "Micro-soft", торгующей интерпретатором Basic без ведома авторов (Дик Уипл и Джон Арнольд), стал писать сатьи относительно пиратства сокрушаясь о том, что, дескать, никто не станет бесплатно писать качественные программы. Другими словами только то, что только программы за деньги это хорошо, а бесплатно - это коммунисты и враги. И кто же станет от денег отказываться?
При таком подходе преимущество модульности UNIX® позволявшее разработчикам никогда не "изобретая велосипед" использовать имеющиеся компоненты и их код в новых разработках потребовало при каждом чихе или становится пиратом или погружаться в финансовую и юридическую трясину.
"Мы программисты или кто?" - сказали программисты и придумали Open Source.
Довольно быстро появилось все необходимое для свободного диалекта UNIX®, не хватало только ядра. Точнее все было примерно так: Было время фантастической коммерции на компьютерных технологиях - «Золотая лихорадка» силиконовой долины.
В лаборатории искусственного интеллекта MIT разрабатывались так называемые LISP-машины, умевшие на аппаратном уровне интерпретировать язык программирования, похожий на LISP – развитый и перспективный язык программирования.
Некоторые сотрудники лаборатории искусственного интеллекта выкупили у MIT права на LISP- машины и математическую систему MACSIMA и основали собственные коммерческие компании для дальнейших разработок в этой области. Очень многие сотрудники лаборатории перешли работать в эти компании, после чего все их разработки уже становились закрытыми для научного сообщества. Новые LISP-машины поставляются с лицензиями, запрещающими пользователям модифицировать и распространять исходные тексты программ. Программы, которые раньше для сотрудников MIT были аналогом научных публикаций, стали принадлежащим кому-то коммерческим продуктом.
Одному из сотрудников, оставшемуся в лаборатории искусственного интеллекта MIT, Ричарду Столлману, такое положение дел казалось недопустимым нарушением открытого научного процесса разработки программного обеспечения. Он в одиночку пытался в рамках прежней академической модели развивать LISP-машины и открыто реализовывать изменения, аналогичные сделанным в рамках закрытой коммерческой разработки, чтобы LISP-машины MIT могли конкурировать с коммерческими аналогами.
В поисках единомышленников Ричард Столлман создает некоммерческую организацию Фонд свободного программного обеспечения (Free Software Foundation, FSF). Своей основной целью организаторы Фонда видят сохранение программного обеспечения, процесс разработки которого всегда будет гарантированно открытым, а исходные тексты – всегда доступными. Более масштабная цель Фонда – разработка операционной системы, целиком состоящей из открыто разрабатываемого программного обеспечения.
Операционная система, разрабатываемая в рамках Фонда, должна была стать совместимой с операционной системой UNIX®. Эта будущая операционная система получила название GNU.
GNU - псевдоаббревиатура, для которой сам Столлман предлагал рекурсивную расшифровку: GNU's Not UNIX® ("Гну – Не UNIX®").
В рамках деятельности Free Software Foundation была разработана лицензия GPL (General Public License - Лицензия Общего пользования).
Она служит для защиты прав разработчиков открытого ПО. Под правами в данном случае понимается не право на получение дохода от продажи программного кода, а право на свободный доступ к исходному коду. Вместе с тем не запрещается продавать его и получать доход. При этом обеспечивается защита от "приватизации" и растаскивания разработок по закрытым коммерческим продуктам.
Вкратце GPL можно свести к следующему:
Вы имеете право использовать как угодно (в том числе - модифицировать и распространять) код, находящийся под GPL, при соблюдении следующих условий:
любой, кому вы передаете этот код, получает в его отношении все те же самые права;
любой код, являющийся кодом, производным от кода, распространяемый на условиях GPL, также можно распространять только на условиях GPL.
При этом GPL в частности и Free Software Foundation вообще прямо поощряют бизнес, связанный с оказанием сопутствующих услуг, - обучение, консультации, и, как это ни покажется странным, - коммерческое тиражирование.
Лицензия, содержащая такие условия, получила название "copyleft". Условие "copyleft" прямо противоположно по смыслу авторскому праву: авторское право призвано ограничить пользователя в копировании и распространении копий продукта, а "авторское лево", наоборот, строго запрещает его ограничивать.
В настоящее время помимо GPL известны и другие лицензии, под которыми может распространяться свободное ПО. Самая распространенная из таких лицензий – BSD4) License. Лицензия BSD отличается от GPL главным образом тем, что в ней отсутствует условие "copyleft", т. е. на основании свободного ПО, распространяемого под этой лицензией, можно производить несвободные модификации. Однако лицензия BSD и другие лицензии будут оставаться лицензиями на свободное программное обеспечение до тех пор, пока они соответствуют условиям, оговоренным принципами свободного ПО, объявленными Фондом.
GPL защищает права разработчика и создает условия для защиты прав потребителя. Главное условие существования свободного ПО – не лицензия, а люди, которые готовы делиться текстами своих программ и совершенствовать тексты чужих. Свободное ПО унаследовало модель открытой научной разработки, а вместе с ней – и специфичеcкую организацию сообщества разработчиков и пользователей, в некоторых отношениях напоминающую академическое сообщество.
Программное обеспечение с открытым кодом распространяемым свободно и бесплатно появилось не без причины. По другому и быть не могло.
Особенности архитектуры UNIX® связанные возможностью развития системы на основе заимствования функций программ и компонентов в сочетании с возможностью заимствования и совершенствования программного кода создали уникальные условия для возможности коллективной разработки мощнейшей системы силами интернет сообщества. К началу 90-х годов сложилась революционная ситуация. Для появления Linux было все готово. Начал бурно развиваться интернет, сформировалось интернет-сообщество разработчиков, в рамках проекта GNU, кирпичик за кирпичиком собирались компоненты для свободного диалекта UNIX® – операционной системы GNU. И 17 сентября 1991 года финский студент Линус Торвальдс выложил на FTP-сайт Linux версии 0.01.
Linux
Линус Бенедикт Торвальдс (Linus Benedict Torvalds) родился 28 декабря 1969 года.
Его дед по материнской линии, Лео Вальдемар Тёрнквист был профессором статистики в Университете Хельсинки. В 1981 он купил компьютер Commodore VIC-20. Это был первый компьютер, к которому Линус получил доступ - он помогал деду набивать программы, которые профессор старательно писал на бумаге, потому что не привык делать это непосредственно за компьютером.
Когда он выжал из VIC-20 все, что смог, он стал копить деньги на модель следующего поколения. В 1987 году он купил Sinclair QL. В этом компьютере был установлен 32-разрядный процессорный чип 68008 компании Motorola с частотой 8 мегагерц. Sinclair имел 128 килобайт (не мегабайт!) памяти, что по тем временам было очень много для домашнего компьютера.
Когда снова пришло время снова менять компьютер ему было не просто, как правоверному программисту, решиться перейти с правильной архитектуры Motorola 68008 на презренную платформу IBM PC .
Но это свершилось, и 2 января 1991 года Линус приобрел в рассрочку новый компьютер, на основе процессора Intel 80386 с 4 мегабайтими ОЗУ и тактовой частотой 33 мегагерца.
Он установил на него систему Minix., однако возникло множество претензий к этой ОС. Хуже всего была эмуляция терминала, очень важная для Торвальдса программа, потому что именно ее он использовал для подключения к университетскому компьютеру MicroVAX, на котором стояла Ultrix – один из диалектов UNIX®, созданный корпорацией Digital Equipment. Пришлось писать собственную программу эмуляции.
Торвальдс решил не строить её под Minix, а опираться прямо на аппаратный уровень. Разработка программы позволяла, кроме всего прочего, детально изучить работу 386-го процессора.
Постепенно эмулятор терминала обрастал наворотами. Был написан драйвер для дисковода. Линус сделал свою файловую систему совместимой с системой Minix, для того, чтобы она могла читать файлы, созданные программой эмуляции терминала. Программа росла, эмулятор терминала превращался в нечто гораздо большее.
17 сентября 1991 года Линус положил на FTP-сайт Linux версии 0.01. Затем был сделан большой шаг вперед - в Linux перенесен компилятор GCC, так что можно было компилировать небольшие программы.
В один прекрасный день у Линуса рухнула базовая операционка - Minix. Это был решающий момент: можно было переустановить Minix или принять вызов и объявить, что Linux может полностью ее заменить. Торвальдс написал программы для компиляции Linux внутри нее самой и каждый раз, когда требовалась Minix, он просто добавлял в Linux нужную функцию. Когда в Linux появилась поддержка подкачки виртуальной памяти (в Minix её не было)
Linux стали сравнивать с Coherent, небольшой коммерческой UNIX®-системой компании
Mark Williams. Люди стали переходить от Minix к Linux.
В 1992 году под Linux заработала графическая система X Window.
В марте 1994-го Linux 1.0 была с большой помпой представлена в аудитории факультета информатики Университета Хельсинки.
1995 год. У Linux появилось множество коммерческих версий, Linux-компании завоевывают признание. В университете Линуса повысили с ассистента до научного сотрудника.
Когда в марте 1995-го была выпущена версия 1.2, ядро уже включало в себя 250 тысяч строк кода, новый журнал "Linux Journal" хвалился десятитысячным тиражом, a Linux могла работать на процессорах Intel, Digital и Sun SPARC. Это был большой прогресс.
Но 1995 год был знаковым. На праздник Хелоуин появилась операционная система Windows 95 для настольных копьютеров. Нет она не была хороша. Наиболее совершенной тогда была OS/2. И серверный вариант Windows тогда только смех вызывал у специалистов. Что это за сервер который можно командой ping уложить?
Проект настольной операционной системы "Looking-glass" у компании Novell был закрыт как неперспективный.
Проект OS/2 у IBM развивался вяло. Этот проект на начинался с Microsoft, неизбежное следствие - лицензионные проблемы и отсутствие поддержки от сыграло свою роль.
1994 - 95 годы были для Линуса непростыми, - родилось двое детей и магистерская диссертация отнимали все время.
Перенос Linux на другие платформы стал темой магистерской диссертации Торвальдса.
А Windows не терял времени. Вся планета была атакована грандиознейшей рекламой Windows. Эту операционную систему покупали даже те, кто о компьютерах и не слышал. На смену черному досу и синему нортону пришла красочная операционная система со свистками и колокольчиками. Установить ее мог кто угодно.
Она победила в конкурентной борьбе даже BeOS, настольную ОС превосходившую Windows по производительности в несколько раз. BeOS предъявляла более низкие требования к аппаратуре компьютера и была более устойчива, чем Windows.
BeOS нравилась многим и некоторые производители стали устанавливать BeOS на новые компьютеры.
Но Microsoft имела лицензиноое соглашение со всеми производителями компьютеров и последовательно потребовала с них: (1)убрать иконку перезагрузки в BeOS с рабочего стола Windows, (2)убрать с упаковки компьютера либо логотип Windows, либо логотип BeOS, (3)удалить из системы мультизагрузчик. Все эти требования родились не на пустом месте, оказалось, что все они давно были включены в стандартное лицензионное соглашение Microsoft с производителями компьютеров, то есть компания Билла Гейтса сумела опередить Be, Inc. и заранее ограничить возможность выпуска компьютеров с другими ОС.
Microsoft в последствии выплатила около 23 миллионов долларов ради снятия претензий со стороны Be Inc.
Логотип Linux придумали в 1996 году. Тогда в рассылке linux-kernel mailing list прозвучала идея о выборе логотипа для Linux.
Логотип Linux — это выбор Линуса. Он говорит, что сам похож на пингвина. Логотип создал Ларри Ивинг (Larry Ewing), причем он нарисовал его прямо в Linux с помощью программы GIMP (The GNU Image Manipulation Program). Если вы хорошо знаете зоологию (или хотя бы видели пингвинов по телевизору), то, наверное, заметили, что у настоящих пингвинов клюв и ласты — черные, а у нашего пингвиненка — оранжевые. Это сделано специально, чтобы пингвин был узнаваем.
