История: от UNIX к GNU/Linux
UNIX: модульный фундамент (1970-е)
Системы UNIX появились в 1970-х годах благодаря компании AT&T — проект развивался в исследовательском центре Bell Labs. UNIX задал принципы, на которых построены и современные системы:
- Модульный дизайн — каждая задача выполняется отдельной небольшой программой (утилитой);
- Единая файловая система — через неё утилиты взаимодействуют друг с другом;
- Командная оболочка — интерфейс для запуска утилит и скриптов.
- Утилита — вспомогательная программа для выполнения специализированных типовых задач (например,
lsпоказывает содержимое каталога и больше ничего). - Командная оболочка (shell) — программа-посредник между пользователем и ОС: принимает команды по отдельности или выполняет скрипты — списки команд.
- Ядро (kernel) — центральная часть ОС, которая даёт приложениям координированный доступ к ресурсам: процессорному времени, памяти, устройствам. Обычно ядро также предоставляет сервисы файловой системы и сетевых протоколов.
GNU: свободные программы (1983–1990)
Проект GNU создал Ричард Столлман 27 сентября 1983 года. Расшифровка рекурсивна: «GNU is Not Unix». Цель — «разработать достаточно свободного ПО, чтобы можно было обойтись без несвободного». К 1990 году были созданы текстовый редактор Emacs, компилятор gcc, отладчик gdb, командная оболочка bash. Проблема одна: свободного ядра не было.
Линус Торвальдс и ядро Linux (1991–1992)
Линус Торвальдс (р. 28 декабря 1969, Хельсинки) в 1991 году, во время учёбы в Хельсинкском университете, начал писать собственное ядро — разочаровавшись в лицензии учебной ОС Minix. Разработка шла сначала на Minix, потом на самом Linux; GNU-утилиты вскоре заменили всё стороннее ПО. В 1992 году ядро вышло под лицензией GNU GPL v2 — последний пробел ОС GNU был закрыт. Эмблемой системы стал пингвин Tux.
Linux сегодня
- Результат работы тысяч проектов; нет организации-владельца;
- Монолитное ядро: управляет процессами, сетью, периферией и файловой системой;
- Драйверы — встроены в ядро или подключаются как модули во время работы.
Дистрибутивы GNU/Linux
Дистрибутив GNU/Linux — ОС на основе ядра Linux, готовая к установке: ядро + утилиты GNU + прикладные программы. Дистрибутивов много, потому что ядро одно, а сборки делают под разные цели.
- Ubuntu — №1 в рейтингах; легко установить, интуитивно понятна, любимица разработчиков.
- Linux Mint — на основе Ubuntu/Debian; «современная, элегантная и удобная ОС». Полная поддержка мультимедиа из коробки.
- OpenSUSE — управляется только сообществом.
- Debian — «отец-прародитель» семейства дистрибутивов; подходит для серверов и рабочих станций.
- Arch Linux — для компетентных пользователей; система сборки позволяет настраивать пакеты под себя.
- Deepin OS — китайский дистрибутив на базе Ubuntu, только для 64-битных систем.
- Elementary OS (2013) — для новичков; интуитивный и красивый интерфейс.
- Manjaro OS — упор на удобство, работает «из коробки»; следующая ступень после Elementary.
- Fedora — «впереди планеты всей» по новым технологиям.
- Kali Linux — для тестирования на уязвимости; поставляется с набором инструментов. Сложен для новичков.
Файловая система
Главное отличие от Windows: программа в Linux распределена по файловой системе. Приложение в Windows лежит в C:\Program Files\Имя; в Linux: исполняемые файлы — в /usr/bin, библиотеки — в /usr/lib, конфигурация — в /etc.
- Разделитель пути: в Linux —
/(прямой слеш), в Windows —\(обратный). - Дисков
C:иD:нет: все пути начинаются с/; флешки и разделы монтируются как папки.
Стандартные каталоги (из конспекта лекции)
/— корень. Изменять файлы прямо в нём может только root. Домашний каталог root —/root, а не/./bin— пользовательские исполняемые файлы (команды для всех):cat,ls,tail,ps./sbin— системные исполняемые файлы только для суперпользователя:reboot,fdisk,iptables./etc— конфигурационные файлы всех программ, скрипты запуска/завершения демонов./dev— файлы устройств: флешки, клавиатуры, камеры. Все устройства — это файлы (/dev/sda,/dev/tty1)./proc— псевдофайловая система: информация о процессах в реальном времени (/proc/cpuinfo,/proc/meminfo)./var— часто изменяемые файлы:/var/log— логи всех программ;/var/lib— базы данных, пакеты пакетного менеджера;/var/mail— почта сервера;/var/lock— файлы блокировок (ресурс занят другим процессом).
/tmp— временные файлы; писать могут все; очищается при перезагрузке. Аналог —Windows\Temp./usr— программы пользователя:/usr/bin(браузеры, редакторы, плееры), исходники, ресурсы./home— домашние каталоги пользователей (/home/viktor). Обычно на отдельном разделе — данные не теряются при переустановке системы./boot— файлы загрузчика системы./lib— системные библиотеки для программ из/binи/sbin./opt— самодостаточные проприетарные программы «в одной папке» (как в Windows). В учебных заданиях — рабочая директория для файлов./mnt— ручное монтирование разделов администратором./media— автоматическое монтирование съёмных носителей./sys— информация о системе и оборудовании./srv— файлы серверов и сервисов (например, файлы веб-сервера Apache).
Чувствительность к регистру
Linux чувствителен к регистру: Folder, folder и FOLDER — три совершенно разных объекта. Это касается и команд: ls существует, LS — нет.
Report.txt командой cat report.txt не откроется. Всегда проверяйте регистр в именах файлов и каталогов.