Семь причин, почему Линукс
Linux доминирует на всех типах компьютеров, кроме настольных (десктопы и ноуты) и, наверное, мейнфреймов. Встроенные системы, мобильные, серверы-облака-суперкомпьютеры — везде преобладают системы на ядре Linux. Линукс провалился на десктопах и мейнфреймах только потому, что в сегментах этих доминируют монополии — Microsoft и IBM. И Майкрософт всеми силами старается удержать своё доминирование (IBM понемногу сдаёт позиции — переводит свои мейнфреймы на Linux).
Майкрософту на руку играет огромная экосистема Windows, её инерция, которая тащит за собой бизнес и домашних юзеров. Но и экосистема Linux сильно разрослась по сравнению с тем, что было лет 15 назад, и сейчас многим организациям и домашним пользователям есть резон перейти на Линукс. И даже не один, а целых семь.
Прозрачность
Linux и большинство софта его экосистемы имеют открытые/свободные лицензии вроде GPL и BSD. Это значит, что исходники программ не хранятся где-то в глубоких программистских копях корпораций, а лежат перед глазами всего мира на публичных серверах. Более того, процесс разработки этого софта тоже полностью открыт, каждое изменение зафиксировано и видно всем. Поэтому код постоянно проверяется децентрализованной сетью специалистов со всего мира на предмет ошибок, уязвимостей и зловредов. Если же изменения (патчи) может присылать любой желающий — такой софт совершенствуется быстрее проприетарного (с поправкой на популярность и модель разработки, конечно).
Доступность
Вы можете получить легальную (лицензионную) копию системы полностью бесплатно, скачав в интернете. Да, есть коммерческие дистрибутивы вроде RHEL, но в них вы платите за обновления и техподдержку. Сами эти дистрибутивы, опять же, можно легально скачать, не платя ни копейки. Предприятие или организация может сильно сэкономить на лицензиях, потому что пиратский софт для них крайне рискован и потому недопустим. На мой взгляд, рядовому домашнему пользователю тоже лучше не пользоваться пиратскими (взломанными) программами, даже несмотря на почти нулевой риск попасть под статью. Ведь взломанная система или программа может работать нестабильно. Да и что мешает пиратам-взломщикам засунуть в код какой-нибудь троян или рекламный модуль?
Имея хорошие скиллы в программировании (и не имея личной жизни), вы можете сами контролировать код программ, которые используете. Тоже совершенно легально. Для организаций и компаний это особенно удобно.
Безопасность
Чуть менее чем все зловреды, обитающие в глобальной сети, разработаны для Windows и её экосистемы. Linux хорошо защищает ваши локальные системы и сети от заразы вроде троянов, вирусов, майнеров, локеров, рекламных модулей.
Да, линуксовые серверы ломают и заражают часто, но большая часть атак происходит через приложения вроде веб-серверов/движков/и т.д. или через явные ошибки в администрировании системы. При надобности уровень защиты можно выкрутить до непробиваемого уровня с помощью hardened-инструментов вроде PaX и SELinux.
Я часто вижу беспечное отношение людей к безопасности своих домашних систем, мол, что этим хакерам с меня взять. На самом деле, у каждого в 2020 году можно много чего взять с компьютеров: рабочие учётки, аккаунты от банков и кошельков, и т.д. Да и личные/рабочие файлы можно потерять из-за какого-нибудь шифровальщика, тоже приятного мало. Хакерам же незачем пыхтеть ломать вручную конкретно вас, боты и вирусня делают всё сами в массовых масштабах.
Децентрализация
Открытые и свободные программы принадлежат сразу всем и никому конкретно. Благодаря этому разные компании, страны, организации, коллективы и даже одиночки вроде Патрика Фолькердинга делают собственные дистрибутивы (комплекты) Linux. Только самых популярных дистрибутивов не меньше десятка, а сколько их всего — неизвестно, потому что дистрибутив для своих внутренних нужд может сделать любая организация.
Как следствие, пользователю Линукса ни один человек, компания или государство не могут диктовать свои условия, особенно если у него есть ресурсы для локального контроля исходников. Да, есть главная ветка ядра, которой командует великий и ужасный (сейчас уже не такой ужасный) Линус Торвальдс, но есть и другие ветки, которыми командуют другие. Да, вы в одиночку скорее всего не сможете влиять на разработку компонентов системы или приложений, но вы можете блокировать или фильтровать изменения. Здесь всё упирается в количество проприетарного софта — чем его больше у вас, тем меньше у вас контроля над происходящим (а проприетарный софт есть и на Линуксах).
Гибкость и разнообразие
Разные дистрибутивы зачастую серьёзно отличаются друг от друга, несмотря на массу всяких Болженосов, у которых из уникальных фич только нескучные обои. Какие-то дистрибутивы делают упор на корпоративную экосистему и поддержку (RHEL, SLED, Fedora, Ubuntu, Calculate), какие-то — на универсальность и мощь (Debian, openSUSE, Arch). Есть узкоспециализированные варианты (медиа-центры, рабочие станции, системы для оборудования и роботов), есть легковесные сборки, есть секурные дистрибутивы для безопасников и Kali для их ночных кошмаров. NixOS и Gentoo предлагают мощные инфраструктуры для кастомизации систем и прикладного софта, для создания заточенных под конкретные задачи сборок. Есть Линуксы для православных и сатанистов (я не шучу), для музыкантов и видеомонтажёров, игровые и образовательные сборки.
Если у вас возникает надобность решить какую-то компьютерную задачу — возможно, для неё уже сделан дистрибутив Линукса.
Масштабируемость
Ядро Linux работает и на встроенных системах, и на суперкомпьютерах. В Линуксах нет искусственных ограничений на количество процессоров, ядер, оперативной памяти, и так далее. Фактически, вы можете скопировать Линукс со своего ноута на взрослый сервер, и он будет работать без проблем. Привет, Microsoft, который даже на Windows 10 Pro не даёт нормально работать больше чем с 64 ядрами 🙂
Это работает и в обратную сторону — любому одиночке-энтузиасту доступны все взрослые возможности вроде упомянутых выше hardened-инструментов или софта для промышленного оборудования и сервисов.
Простота
Да, настольный Linux проще в обращении, чем Windows. Всё, что нужно делать — это ставить-удалять программы через менеджер пакетов и обновлять систему через него же (да и апдейты ставить вас никто не заставляет). Вы избавлены от головной боли поиска и скачивания программ, в которых зачастую то реклама, то куча левых программ впридачу, то вообще зараза какая-нибудь. Система со временем почти не накапливает ошибок и глюков, хотя количество установленных-удалённых пакетов может исчисляться тысячами. Я, например, уже пятый год таскаю за собой Линукс с компа на комп простым копированием корня и домашнего каталога.
Если вам хватает линуксового софта, а железо ваше нормально поддерживается Линуксом, то затруднить переход вам могут только накопленные на Windows привычки и паттерны.
Источник
Про Linux — для любознательных Windows-пользователей
Так уж получилось, что даже на Хабре многие имеют очень смутное представление о семействе OS Linux.
Цель данной статьи – максимально популярным языком рассказать про особенности и отличия Linux от Windows для тех, кто вообще не имел с ним дела.
Я уже не один год свободно пользуюсь Archlinux, загружая винду лишь «на поиграться». Данная статья рассказывает о вещах, которые я выяснил эмпирическим путем, тыкаясь словно слепой котенок. Если бы в свое время мне попалась бы именно такая информация именно в такой форме — это сэкономило бы мне как минимум 2 года, в течение которых я переходил с Windows на Linux.
Краеугольный принцип работы с linux-системами — “От понимания – к действию”, в то время как в Windows — “Знаю куда нажать/где поставить галочку – делаю”. Говоря другими словами, чтобы что-то сделать – необходимо понимать, как оно там, внутри, устроено.
Тезис №1 – НЕОБХОДИМО владеть работой с системой из текстовой консоли!
“Чистый” линукс (базовая система) в любом дистрибутиве выглядит как DOS – черный экран, текстовый режим, мигающий курсор ожидает ввода. Когда сталкиваешься с таким впервые – сидишь и думаешь: “Блин, а что писать-то?”.
Современные user-friendly дистрибутивы дарят иллюзию, что пользователю консоль не нужна. Добрые дяди, мол, уже обо все позаботились. Вот тебе обоина в FullHD-разрешении, вот программа для настройки параметров – знай расставляй галочки, все как в Windows… Чтобы избежать ненужных холиваров, сделаю на этом месте отступление.
Есть пользователи Linux, у которых никогда ничего не глючит. Ubuntu обновляется с одной мажорной версии на другую, причем начиная с Ubuntu 1.0, и так далее. Ребята, не пишите ничего в комментариях про ненужность консоли для пользователя, идите лучше полюбуйтесь на радугу, которой какают розовые пони в вашем мире.
В моем мире Linux глючит и ломается. Нет, все вполне окей, если ты просто запускаешь программы и пользуешься ими. Но потом вдруг наступает момент, когда тебе позарез надо, скажем, сменить открытые дрова на проприетарные… ну или просто обновить систему. И вот тут, если звезды встали неудачно, ты получаешь сломанную систему и текстовую консоль как единственный метод взаимодействия с ней. И (что самое поганое) – подобная фигня имеет свойство случаться регулярно.
Мой опыт говорит о том, что в такие моменты Windows-пользователь действует так, как он привык, повинуясь привычной идеологии. Сначала идет попытка “починить”. Windows-идеология предписывает найти в инете обсуждение аналогичной проблемы и ее решение, после чего повторить все действия, которые привели к решению проблемы. Итог – пользователь бездумно вбивает непонятные ему команды. Иногда это даже помогает, чаще – нет: содержимое команд необходимо модифицировать под конкретные условия и конкретную локальную машину, а знаний для этого нет. Как следствие, дальнейшим логическим шагом идет переустановка системы. Поверьте, я знаю о чем говорю – я сломал и переустановил Ubuntu более 10 раз… из которых около трети после самопроизвольной смерти системы в процессе обновления, без корелляции с кривизной рук.
Изучение устройства системы и работы с ней из консоли сродни известному “день потерять – за час долететь”. Устранить проблему в этом случае – гораздо быстрее переустановки, не говоря уже о том, что куда проще становится “не ломать” 🙂 Кроме того, полностью исчезает разница – сидишь за компьютером локально или через удаленную SSH-сессию. Поверьте, это ощущение многого стоит.
Тезис №2: user-friendly дистрибутивы для изучения системы подходят плохо.
Разработчики подобных дистрибутивов старательно создают интерфейсный графический слой, призванный свести взаимодействие пользователя и системы до бездумного кликанья мышкой. Технически же этот слой может представлять из себя совершенно феерическое нагромождение костылей – на bash’е, python’е, perl’е… совершеннейший ад для новичка, пытающегося понять логику работы системы. Кроме того, вменяемая документация (если она вообще есть) теряется среди форумных постов вида “чтобы получить А, введите в консоли Б, а в настройках нажмите кнопочку С”
Для обучения лучше всего подходят технически минималистичные дистрибутивы с качественной и подробной документацией. Таковыми, к примеру, являются Gentoo и Archlinux. Лично я рекомендую последний – просто потому, что в моем случае это сработало. После пары лет мытарств с Убунтой, всего пара месяцев с Арчем продвинула меня в постижении Linux раз в 10 дальше.
Причин тут несколько:
- Технический минимализм системы сильно облегчает ее понимание.
- Качественная, подробная документация облегчает процесс обучения.
- Выход из “зоны графического комфорта” весьма способствует!
Последний пункт стоит отметить особо. Ubuntu с ее графическим интерфесом никак не добавляет мотивации ковыряться в консоли. Другое дело – когда изначально есть лишь консоль и сильнейшая мотивация “настроить уже этот графический интерфейс” — тут просто деваться некуда, приходится осваивать документацию и обрастать знаниями.
Windows и Linux: принципиальные отличия
1. Файловая система
- В Linux логическим дисковым томам не назначаются буквы. Вместо этого один из них назначается корневым, а остальные подключаются к указанным папкам внутри него. Все пути начинаются с косой черты, без всяких дисков C:
- Все системные файлы свалены в корневой файловой системе, и разбиты по каталогам по типам/назначению. Условно говоря, все настройки находятся в /etc, исполняемые файлы в /bin и /usr/bin – и ко всему этому добру обычный пользователь (не администратор) имеет доступ только на чтение/выполнение, и то не всегда (когда дело касается системных сервисов)
- Расширения у файлов в linux – вещь совершенно необязательная. Является ли файл исполняемым, определяется специальной отметкой – по типу отметки “скрытый” или “архивный” в Windows. Исполняемые файлы без расширения в linux – норма вещей!
- В linux нет специальной отметки того, что файл скрытый. Вместо этого используются имена с точкой в начале, а уже файловые менеджеры позволяют отключать отображение таких файлов. То есть, файл /home/user/.bashrc – скрытый. Точка в этом случае – часть имени файла!
- Обычный пользователь имеет полный доступ только к своей личной папке, которая обычно находится в /home/%имя_пользователя%. По аналогии с диском D: в Windows, к папке /home часто подключают отдельный раздел диска. Таким образом, все данные пользователей находятся на отдельном разделе (или вообще физическом жестком диске).
- Все пользовательские (не системные) программы при необходимости сохранить какие-то свои данные или настройки, делают это только в домашней папке пользователя, от которого они запущены – просто потому, что только в ней они имеют право на запись.
- Само понятие “файл” в Linux немного другое, более широкое. Есть т.н. “файлы устройств”. Например, /dev/sda обычно жесткий диск (хотя может быть и флешка), а /dev/sda1 это первый раздел этого жесткого диска. Отсюда возможны такие хитрые маневры, как dd if=/dev/sda1 of=/home/user/backup – команда побайтно скопирует весь первый раздел диска /dev/sda в файл backup в домашнем каталоге пользователя. Есть т.н. “символьные ссылки” — в файловом менеджере они выглядят как обычный файл, по факту ссылаются на другой файл, и места на диске не занимают. То есть, может быть один исполняемый файл и куча символьных ссылок на него в разных местах.
2. Пакетный менеджер и понятие “пакета”, установка программ.
- Программы ставятся только от аккаунта администратора. При установке все файлы, относящиеся к программе (например, Firefox), “размазываются” по корневой файловой системе – общие для всех пользователей настройки пойдут в /etc, исполняемые файлы в /usr/bin, а иконки и различные ресурсы вроде графики и звуков – в /usr/share/firefox. При таком раскладе пользователь в принципе не может знать, где у него что конкретно лежит. За это отвечает пакетный менеджер. Например, пакет “Firefox” включает в себя кучу файлов. Пакетный менеджер при установке пакета разложит их по файловой системе, а при удалении – соответственно удалит.
- Еще одна важная функция пакетного менеджера – удовлетворение зависимостей пакета. Например, Firefox требует для работы библиотеку libjpeg. Значит, при установке менеджер пакетов автоматически доустановит пакет libjpeg, а при удалении – удалит, если тот не будет требоваться каким-либо еще пакетом.
- В пакетном менеджере обычно есть база данных со всеми доступными пакетами, и он имеет средства поиска по этой базе. Поэтому установка программ в linux невероятно проста – первой командой мы ищем по ключевым словам по базе точное название пакета, второй – ставим. Не нужно лезть на сайты, искать и что-то качать. Если мне надо в Арче поставить skype – я набираю pacman -S skype и жму ENTER, и через минуту у меня установлен скайп. Надо Firefox – пишу pacman -S firefox. И так далее. В другом дистрибутиве будет отличаться команда и синтаксис, возможно потребуется указать адрес репозитория – сам принцип неизменен.
- Никогда, никогда даже не пытайтесь качать и запускать что-либо через браузер, как в Windows! Только если вы полностью знаете, что делаете – но тогда зачем вы все это читаете?) Скачать и запустить файл — это часть полностью чуждой (даже враждебной) для Linux идеологии. Программы надо ставить через пакетный менеджер. Точка.
- Никогда не используйте для установки программы метод “configure && make && make install”. Каждый раз, когда это происходит – в мире мучительной смертью умирает с десяток невинных котят. Данный набор команд соберет из исходников программу, а потом раскидает ее файлы по файловой системе без ведома пакетного менеджера. Это нарушение нормальной логики работы с системой. Не делайте так))
- Добавлю, пожалуй, сюда еще вот что. Очень часто можно увидеть настойчивые советы «не работать из под администратора», и на это есть не совсем очевидная Windows-пользователям причина. Дело в том, что набор команды в консоли таит в себе опасность опечаток и случайных нажатий. Вполне реальна ситуация, когда ты собираешься удалить папку, начинаешь писать к ней путь и случайно задеваешь ENTER. Linux не имеет привычки спрашивать «Ты точно такой дурак? y/n» — он просто сделает. Поэтому под рутом набирать команды приходится предельно внимательно. В Windows такой проблемы, конечно, нет.
3. Графическое окружение пользователя
- Все графическое окружение пользователя – это совокупность прикладных программ. Исторически сложилось, что для Windows-пользователя такие понятия, как “Рабочий стол”, панель задач, системный трей, регулятор громкости, часы и календарь, меню “Пуск”, доступ к настройкам сети из трея – неотъемлимая часть ОС Windows. В Linux все вышеперечисленное реализуется отдельными программами. Более того, для каждой задачи из приведенного списка есть далеко не одна программа. В качестве регулятора громкости я могу поставить volumeicon, написанный на C, или volwheel на python
- В основе работы графического окружения лежат следующие программы:
- X-сервер, или просто “Иксы”. Программа, осуществляющая прием данных от пользователя (с устройств ввода) и базовое управление окнами, их сворачивание-разворачивание. “Сервером” называется потому, что обеспечивает “сетевую прозрачность”: для Linux не существует разницы, каким образом пользователь зашел в графический сеанс, локально или удаленно. Эдакий RDP как базовая функциональность, проще говоря.
- Менеджер окон, он же WM. Занимается отрисовкой элементов оконного интерфейса, плюс (в зависимости от навороченности) предоставляющий ряд других функций. Некоторые WM позволяют задать фон рабочего стола, некоторые добавляют функциональность “системного меню”. Иногда с X-сервером ставится простейший (чтобы было) менеджер окон – TWM. Страшный как божий грех, прямиком из 70х годов.
- Декоратор окон – иногда функционал по оформлению окон, возможность менять темы оформления выносится в отдельную программу
- Композит-менеджер – тоже бывает как часть WM, либо как отдельная программа. Его задачей является переложить отрисовку интерфейса на видеокарту. Технически принцип прост – каждое отрисованное окно это отдельная текстура в памяти видеокарты. А обращаться с текстурами, добавлять эффекты и искажения, проецировать на плоскость в пространстве, менять полупрозрачность и накладывать их друг на друга видеокарты умеют уже много лет.
- Элементы интерфейса: панель задач, трей, менеджер сети, системное меню, программа для задания обоев рабочего стола
- Базовый прикладной софт – диспетчер файлов, эмулятор терминала (чтобы консольные команды писать в красивом полупрозрачном окошке)
- Преднастроенные ”комплекты” подобранных друг под друга элементов графической среды, программ из списка выше, называются “Окружениями рабочего стола”, или DE. Наиболее известны такие DE, как Gnome и KDE, самые тяжеловесные и “жирные”. Есть также XFCE и LXDE. Установка часто реализуется посредством установки так называемого мета-пакета – сам по себе пакет не содержит файлов, но в качестве зависимостей требует установки всего комплекта программ, составляющих DE: WM, декоратора/композит-менеджера, файлового менеджера и так далее
- Также можно (и нередко является разумным) собирать для себя окружение из “кусочков” по своему вкусу – отдельно выбрать WM, отдельно файл-менеджер и так далее
Подведение итогов
После небольшого самообразования, получение из текстово-консольной системы графической происходит в одну команду. В моем случае, я набираю:
pacman -S xf86-video-ati xorg-server openbox tint2 nitrogen lxterminal xcompmgr wicd-gtk volumeicon.
Это команда установить все перечисленные пакеты:
xf86-video-ati это open-source драйвера для моей видеокарты
xorg-server это “иксы”
openbox это легковесный WM с системным меню (типа как “Пуск”)
tint2 это панель задач с треем, куда будут сворачиваться приложения
nitrogen позволяет задать фон рабочего стола
lxterminal – мой любимый эмулятор терминала
xcompmgr это самый простой композит-менеджер, добавляет полупрозрачность и тени
wicd-gtk это менеджер сетевых подключений, который висит в трее
volumeicon – регулятор громкости
После этого, уже из графической среды, через lxterminal устанавливаю все остальное, что нужно для жизни: браузер(ы), файл-менеджер, видео и аудиокодеки, плеер, libreoffice, gimp и прочее)
Источник