Обучение Linux. От новичка до профи. Часть 1

Привет друг. Решил я сделать некое подобие курса по Linux для абсолютных новичков. Т.е. будем раскрывать тему с самого нуля и развиваться до какой-то приемлемой скилухи. Это будет серия видео и статей.

Начнем с теоретических основ. Это важно для понимания некоторых названий и терминов, и уместности их применения. 

Обучение Linux. От новичка до профи. Часть 1

Что такое Linux?

Linux — принято определять, как семейство Unix-подобных операционных систем на базе ядра Linux. Для понимания. Unix в этом контексте используется просто как некий знак соответствия, чтобы отнести все подобные операционные системы к определенному классу. 

Также часто можно увидеть наименование GNU/Linux. Сторонники свободного программного обеспечения считают такое написание более корректным потому, что по сути сама операционная система (большинство из них) состоит из ядра Linux и системных библиотек, в том числе программ проекта GNU. Поэтому название GNU/Linux более корректно отражает суть операционной системы. Но так как глобально это не влияет ровным счетом ни на что, то мы, конечно же, в дальнейшем, для удобства, будем говорить просто Linux. 

Преимущества и недостатки

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

Плюсы:

  1. Бесплатно. Да, я понимаю, что большинство пользователей Windows в СНГ пространстве и не подозревает что она платная и уж точно не планируют ее покупать, в основном из-за конского ценника. Проблема тут в том, что сборки скачанные с торрентов могут содержать вредоносные компоненты. А если говорить про Linux, она полностью бесплатна без всяких допущений и условностей. Тоже самое касается и программного обеспечения.
  2. Безопасность. И это немаловажно в современных реалиях. Если хапануть вирус, работая под Windows, это вообще элементарно даже при использовании антивируса, то с Linux дела обстоят сильно лучше. Немаловажную роль играет жёсткое разграничение пользователей и прав. А также то что создание вирусов для Linux намного сложнее и они, как правило, не предназначены для массового использования, а заточены под конкретную систему и ситуацию.
  3. Потребление ресурсов. Тут Linux однозначно вне конкуренции. Есть дистрибутивы которые будут работать на любом калькуляторе. Да, и популярные дистры, типа той же Ubuntu, потребляют несравнимо меньше чем какая-нибудь Windows 10. 
  4. Кастомизация. Под кастомизацией я подразумеваю возможность настроить Linux под все свои нужды и хотелки. В большинстве своём это достигается благодаря открытому исходному коду т.е. возможности изменять вообще всё что угодно. Иногда это конечно требует некоторых знаний и навыков. Как, например с системным монитором Conky. Но, как правило, какого-то фантастического скила не требуется, и в большинстве случаев разобраться сможет даже новичок. Также сюда можно отнести и наличие большого количества графических окружений. Можно выбрать какое нравится больше или подобрать под возможности своих железяк.
  5. Установка программ. Здесь тоже Linux однозначно лидирует. Все самые необходимые программы и компоненты бесплатны и есть в официальных репозиториях и их там очень много. Обычному пользователю точно хватит. Скачивается и устанавливается все одной командой из командной строки либо из центра приложений. Если нужно что-то особо специфическое, чего нет в официальном репозитории, то в систему всегда можно подключить дополнительные репозитории и получать программы и обновления оттуда.  Тут, еще наверное стоит, упомянуть байку о том что под Linux нет программ. Это миф 20-ти летней давности, сейчас для Linux есть любые программы которые могут понадобится пользователю. Любым программ которые есть для Windows есть альтернативы для Linux. А если упоминать такие темы как работа с сетями, информационная безопасность, серверное ПО, то тут Linux вообще вне конкуренции. 
  6. Удобство настройки. Тут фишка в том, что в Windows программные и системные настройки хранятся в реестре. И там даже после установки чёрт ногу сломит. А уж если ты какое-то время попользовался системой, то там остается куча мусора и ненужных ключей, вычистить всё это полноценно очень проблематично. А если нужно поменять какие-то настройки в реестре, то это тоже довольно замороченная задача, те кто лазили в реестр знают. С Linux всё намного проще. Настройки как системы так и программ, хранятся в соответствующих файлах, эти файлы лежат в каталоге /etc. Что-то найти там, вообще не проблема. Открыл текстовым редактором нужный файл, поправил нужные значения и забыл. Это намного удобнее и намного проще.
  7. Слежение за пользователем. Windows собирает данные о всех активностях пользователя, в том числе и его данные. Потом засылает всё это на сервера Microsoft. В Linux такого нет. В некоторых дистрибутивах возможен анонимный сбор данных о поведении системы, но это легко отключается.

Минусы Linux:

  1. Сложность перехода. На самом деле Linux не сложнее Windows, а пожалуй на порядок проще. Но, когда много лет использовал Windows, переход может быть связан с некоторыми сложностями, просто из-за отсутствия опыта и привычки. Лечится очень просто. Чем дольше пользуешься — тем больше привыкаешь. Минус условный, но упомянуть стоило.
  2. Программное обеспечение. Как я и говорил, аналоги есть для всего, и ситуация постоянно улучшается, но специализированные программы, типа Photoshop или видеоредакторы, уступают по функционалу. Проблема, опять же решаемая. Есть wine, но я, вообще не фанат его использования. Можно установить виртуалку с виндой и, если возникает необходимость, использовать там нужные программы. Либо поставить рядом две системы и грузится с нужной. Короче вариантом много.
  3. Игры. Тем кто любит погамать тоже придется труднее. Далеко не все игры имеют клиент под Linux. Хотя последнее время эта проблема тоже решается. Уже есть Steam, да и многие разработчики начали добавлять клиенты для Linux.

Виды дистрибутивов Linux

Дистрибутивов Linux существует какое-то нереальное количество. От общеизвестных до очень специфических. В том числе есть специализированные дистрибутивы, такие как Kali Linux или тот же Tsurugi. Я крайне не рекомендую начинать знакомство с Linux со специализированных дистрибутивов. Когда их разрабатывают, на первом плане всегда функциональность, а никак не удобство пользователя. Потому, на первых парах, лучше начать с дистрибутивов заточенных под широкий круг пользователей. Базовые принципы всё равно одни и те же, а использовать будет удобнее и гайдов больше. 

Но тут встаёт другой вопрос. А какой использовать? Чтобы было легче определится с этим выбором, нужно понимать какие есть семейства дистрибутивов. Под семействами подразумевается, скажем так, либо первоначальный дистрибутив, на котором всё основывается т.е родительский дистрибутив, либо пакетный менеджер который используется в системе. 

Мы начнём с изучения дистрибутивов основанных на Debian. Но знать о существовании других точно стоит, потому кратко пройдёмся по основным.

Debian-основанные дистрибутивы. Используют формат пакетов .deb и менеджер пакетов dpkg. Пример это тот же Kali Linux, также antiX — очень легковесный для слабого железа, также Raspberry Pi OS — дистр для мини компьютеров. Также Ubuntu основана на Debian. При этом нужно заметить, что Ubuntu имеет свои собственные репозитории и сейчас Ubuntu развился настолько, что уже на его основе создаются дистрибутивы. Например для слабого железа Lubuntu и Xubuntu, а также, например Kubuntu с окружением рабочего стола KDE. Также очень популярный Linux Mint основан на Ubuntu. Ну и целая куча других.

Следующее семейство это дистрибутивы основанные на пакетном менеджере RPM. Сюда относится и Fedora, и CentOS, и openSUSE и всё что на них основано.

Следующие — основанные на пакетном менеджере pacman. Наиболее популярные здесь это Arch Linux и, основанный на нём Manjaro Linux.

Есть ещё дистрибутивы основанные на Gentoo и Slackware. Но это уже история, мягко говоря, не для новичков.

Интерфейсы пользователя

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

Интерфейс пользователя это общее понятие и состоит оно из двух элементов: оконный менеджер и графическая среда.

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

Мы не будем разбирать прям все существующие пользовательские интерфейсы, потому что это затянется на неопределённый срок. Также, прямо сейчас я не буду останавливаться на программном обеспечении, этому вопросу будет посвящен отдельный раздел. Потому кратко пройдемся по самым популярным интерфейсам.

gnome
Gnome

Gnome. Один из самых популярных интерфейсов, основан на библиотеке GTK. Существует очень давно, активно развивается.  Начиная с версии 3.0 в качестве оболочки используется Gnome Shell, основанный на оконном менеджере Mutter. В комплект входит довольно много базовых приложений. Например: Gnome Terminal — эмулятор терминала, gedit — текстовый редактор, и gnome system tools — это набор графических инструментов для настройки системы, ну и огромная куча других утилит.

В ходе развития Gnome, от него появилось два форка, которые, со временем, стали не менее популярными, это Cinnamon и Mate. Принято считать что они сохранили классический дизайн первоначального Gnome.

KDE
KDE

KDE — ещё один не менее популярный пользовательский интерфейс. В основе лежат библиотеки QT. Рабочий стол в KDE называется Plasma Desktop. Также содержит большое количество программного обеспечения на все случаи жизни. 

XFCE
XFCE

Ну и однозначно стоит упомянуть Xfce. Это интерфейс с минимальным потреблением ресурсов. В нём используется оконный менеджер Xfwm и файловый менеджер Thunar.

Установка Linux

Перед тем как устанавливать Linux, нужно определится какой именно дистрибутив использовать. Я уже упоминал, что если ты находишься в самом начале, не нужно смотреть в сторону специализированных дистрибутивов, типа Kali, ровно также тебе пока не нужны более замороченные дистрибутивы типа Arch или Gentoo. На данном этапе нет задачи взломать пентагон или пересобрать ядро. А есть задача понять как это всё работает и получить первичные навыки и опыт. Поэтому мы начнём с Ubuntu. Это очень простой и понятный дистрибутив, по нему есть огромное количество документации и вероятность словить какой-то сложный затык минимальна. 

Теперь переходим к процессу установки. 

Образ всегда нужно скачивать с официального сайта. И только оттуда. Linux штука бесплатная, потому нет никакого смысла качать его непонятно откуда. Помимо того, что это как минимум не безопасно. 

Еще один немаловажный момент, на первых парах не стоит экспериментировать и обучаться на основной системе. Т.е. если ты решил окончательно перейти на Linux, ставь его, но все свои эксперименты проводи на виртуальной машине. В такой ситуации, даже если ты накасячишь, ничего не случится, накатишь новую виртуалку и продолжишь своё обучение. 

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

Вот теперь точно про установку. Я буду показывать вариант с установкой в VirtualBox. Создаём новую машину и запускаем. Добавляем скачанный нами образ, и следуем подсказкам. Т.е. часовой пояс, язык и имя пользователя вписываем согласно своих пожеланий. Если ставишь как основную систему, то создаешь из скачанного образа загрузочную флешку, любой удобной тебе программой, например Rufus, грузишься с флешки и дальше всё тоже самое.

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

1. Точка монтирования — /; использовать как — журналируемая файловая система ext4; тип раздела — первичный; местоположение — начало этого пространства; размер — минимально 15 Гб, оптимально — более 20 Гб;

2. Использовать как — Раздел подкачки; тип раздела — логический; местоположение — начало этого пространства; размер 2-4 Гб;

3. Точка монтирования — /home; Использовать как — журналируемая файловая система ext4; тип раздела — логический; местоположение — начало этого пространства; размер — всё оставшееся место;

разбивка диска linux

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

Первые шаги после установки

Итак, систему мы поставили. Теперь самое время как-то с ней взаимодействовать. И мы постепенно переходи к штуке, которой боятся новички и которая, по легендам, самая сложная в Linux. Это терминал. На самом деле ничего сложно в этом нет. Более того, тебе даже не придется запоминать тысячи команд. Нет, конечно некоторые придется запомнить. Но когда ты будешь всем этим пользоваться хоть сколько-нибудь часто, они отложатся в голове сами. Тут гораздо важнее понять принцип, как это всё работает. А когда поймёшь, команды отложатся в голове сами. Да, и для повседневного использования их не так то много и нужно. А в специфических случаях всегда можно нагуглить что тебе нужно. 

Вообщем терминал, это такой способ твоего общения с системой. Ты говоришь что ты хочешь чтобы система сделала, и система делает или говорит тебе почему не может сделать. 

Почему предпочтительнее использовать терминал? Понятное дело что есть хардкорные линуксоиды, которые не признают ничего кроме терминала, но мы к таким не относимся. А потому если тебе охота сделать что-то из графического интерфейса, никто тебе ничего не скажет. Например зайти в настройки экрана и поменять разрешение, почему бы и нет. Но, например, может возникнуть ситуация когда тебе понадобится установить разрешение экрана которого нет в списке. И сделать это из графического интерфейса физически невозможно. И вот тут то тебе и придется обращаться к терминалу. Собственно на этом примере я и постарался ответить на вопрос: почему терминал предпочтительнее. Просто потому что в терминале ты намного точнее контролируешь систему и влияешь только на те элементы на которые хочешь повлиять. Это если конечно до конца понимаешь что делаешь. 

Пакетный менеджер

Ну а теперь давай что-нибудь попишем в терминале. И всегда после установки нового дистрибутива, первоочередное наше действие это обновление системы. В большинстве дистрибутивов есть возможность обновляться из графического интерфейса, но предпочтительнее это делать из терминала, чтобы точно контролировать процесс 

Итак для начала вводим нашу первую команду:

sudo apt update

Ввели, нажали Enter, нас спросят пароль, вводим пароль. После чего мы увидим что что-то начало происходит. Теперь давай разберем что мы сделали и как это работает. 

обновление linux

Глобально мы дали команду системе скачать список обновлений. Т.е. проверить какие пакеты обновлений доступны для установки. Этот процесс еще называется синхронизация репозиториев. При этом сами обновления скачаны не будут, только их список. 

Я думаю смысл команды этой понятен. Но, команда состоит из нескольких слов и каждое из них что-то означает. Для понимания сути процесса нужно понимать что значит каждое слово в команде.

sudo — это одна из команд (на самом деле утилита) которую ты будешь использовать очень часто (если мы говорим про администрирование системы конечно). Смысл ее в том чтобы дать текущему пользователю права пользователя root для выполнения какой-то команды или запуска утилиты. Так как пользователь root, его ещё называют суперпользователь, имеет повышенные права в системе, то использование sudo позволяет выполнять действия, на выполнение которых у обычного пользователя просто нет прав. И именно потому что мы запусти sudo система спросила у нас пароль. Вобщем, то что после sudo выполнится от имени пользователя root и с его правами. Кстати именно по этому нужно быть внимательным при использовании sudo.

apt — это программа для работы с программными пакетами. С помощью нее можно устанавливать, удалять или обновлять программы, можно искать программы и управлять репозиториями. Apt принято называть пакетным менеджером. Так как тема эта важная, остановимся чуть подробнее. 

Собственно суть введенной нами команды, и заключалась в запуске утилиты apt, потому что update это команда которую она должна исполнить. Т.е. в переводе на человеческий, мы сказали системе: запустит программу apt от имени и с правами пользователя root и пусть она выполнит команду update. На подобном принципе и будет строится все наше дальнейшее взаимодействие с системой через командную строку. Т.е. мы передаем системе вначале команду (программу), а потом опции с которыми она должна работать. При этом команд и опций может быть несколько, и они могут между собой взаимодействовать, но об этом чуть позже. 

Теперь про сам пакетный менеджер. Пользователи Windows привыкли, что чтобы установить программу нужно запустить установщик. Чтобы удалить — сходит в панель управления, либо использовать еще какую-то программу. Чтобы обновить — либо из самой программы, либо качать по новой, а поиск нужного софта — это вообще отдельный вид искусства. Так вот в Linux, подобного головняка нет, потому что есть пакетный менеджер.

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

Пишем:

sudo apt dist-upgrade 

dist-upgrade — это команда обновления системы. При ее выполнении система, в зависимости от ситуации, удалит, установить или обновит нужные пакеты. Некоторые используют команду full-upgrade, это одно и тоже, разницы нет. Если же ввести просто upgrade, то будут только обновлены пакеты уже установленные в системе, но предпочтительнее использовать именно dist-upgrade чтобы, если вдруг возникнут проблемы с зависимостями, были установлены нужные пакеты.

Обновление системы это лишь одна из возможностей утилиты apt. Чтобы увидеть все доступные команды для apt, можно ввести в терминале apt без всяких дополнительных параметров и мы увидим список всех доступных команд.

терминал linux

Тем не менее, большинством из них ты скорее всего никогда не воспользуешься, во всяком случае при повседневном использовании — точно. А потому пройдёмся по тем которые тебе точно пригодятся. 

install — команда для установки пакета. Т.е мы вводим:

sudo apt install firefox

и таким способом мы установим в нашу систему браузер Firefox. 

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

Вводим, например:

sudo apt search telegram

В результате мы увидим все пакеты в названии или описании которых упоминается слово telegram и само описание этих пакетов. Найдя нужный устанавливаем с помощью install.

терминал linux

Для того чтобы что-то удалить используется команды remove и purge. Логика использования такая же как и в других командах. Разница между ними в том, что remove удаляет только пакеты, а purge удаляет пакеты и конфигурационные файлы. Т.е. если ты удалил какую-то программу командой remove, а через время опять её установил то все настройки сохранятся, но если удалил используя purge то удалится и программа и ее настройки. При этом если ты удалил используя remove, то потом можно, используя purge, дополнительно удалить файлы конфигурации.  

Когда активно используешь систему, постепенно накапливаются ненужные пакеты. Смысл в том, что если ты установил программу, а она в процессе установки подтянула какие-то свои зависимости, но потом ты программу удалил, то зависимости считаются ненужными пакетами, если они не нужны другим установленным программам. Их можно смело удалять. Для этого существует команда autoremove. Точно также можно удалять старые архивные файлы, это делается командой autoclean.

sudo apt autoremove
sudo apt autoclean

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

Ещё один момент о котором нужно знать. Иногда у системы могут случится нарушения зависимостей. Это например может появиться при обновлении. Чтобы починить зависимости используется команда:  

sudo apt install -f

На этом первую часть серии уроков «Основы Linux» будем заканчивать. Но не забывай возвращаться потому что очень скоро здесь появится продолжение.

Твой Pulse.

Продолжение:
2-я часть
3-я часть