gosha20777

Linux: почему это удобно?

March 22, 2020 | 15 Minute Read

Эта статья о том как я несколько лет назад полностью пересел с windows на linux, а таеже пересадил на пингвина часть своей семьи.

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

Как это - использовать Linux в 2020 году?

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

В доказательство приведу несколько примеров:

Многозадачность: дебажу нейроночку, пишу этот пост и играю в ведьмачка 3.
Читаю документацию и воспроизвожу описанный в ней алгоритм.
Пилю GUI к open source проекту [lacmus](https://github.com/lacmus-foundation/lacmus-app) на С# и AvaloniaUI.
Настраиваю внешнюю звуковую карту для игры на электрогитаре.

Как видно Linux годна не только для программирования, но и для использования профессионального софта.

Последняя капля

Можно подумать что я - заядлый линуксоид, но это отнюдь не так. Раньше я активно использовал windows и даже тестировал новые сборки windows 8 и windows 10. Почему я перешел на linux? Все просто:

  1. Во-первых, у меня и до перехода стоял linux второй системой, но я не очень пользовался ей;
  2. Во-вторых, со временем я понял что разработка под linux более удобна чем под windows (во многом благодаря терминалу);
  3. В третьих, я довольно хорошо изучил windows и мне хотелось постичь чего-то нового;
  4. Ну и наконец, в один прекрасный день я открыл диспетчер задач и увидел что ШINDOШS 10 В ПРОСТОЕ ОТОЖРАЛ 6 ГБ ОЗУ! 6 КАРЛ!!!
Для сравнения моя ubuntu (уже не новая, с большим количеством фоновых программ и "наворотов") ест 1.3 Гб.

Это стало для меня ключевой точкой. В этот же день я снес Windows на всех своих устройствах. Нет я не могу сказать что у меня был слабый компьютер (сейчас я отдал его своей племяннице и купил себе thinkpad): на моем прошлом ноутбуке было 16 Гб ОЗУ и стоял 4x ядерный Core i7, но отдавать 6 Гб ОЗУ под систему я не хотел.

Как перейти на Linux и научится ей пользоваться?

Очень просто: как сказал один мой знакомый чтобы перейти на linux нужно снести windows и начать пользоваться linux. Пройдет пару месяцев и вы освоитесь. Это самый эффективный способ. Если очень боитесь - то сделайте бекап вашего жесткого диска и положите его в сторонку.

Можно попробовать другой путь - более щадящий: поставить linux второй системой и постепенно перейти на нее. В этом случае очень важно проявить силу воли и именно пользоваться linux а не заходить туда раз в неделю. Постараться проникнуться и переползти.

Я бы выбрал первый путь - это не так страшно как кажется на первый взгляд. Многие программы (Skype, Discord, Telegram, Slack, Thunderbird, Firefox и др) доступны под все системы, в том числе на linux, для других есть аналоги или wine в конце концов. Но решать вам.

Какой дистрибутив выбрать?

Часто перед начинающим пользователем встает этот вопрос. Не удивительно - ведь в мире linux дистрибутивов не просто много а очень много:

ubuntu tree.

Если вы думаете что это все, то нет. - это лишь малая часть (только производные ubuntu, которая в сою очередь является производный от Debian). Вот полная схема а вот статья на wiki.

Ну вот уже сложности скажите вы. Я же могу сказать что нет - это совсем не сложно:

  • Во-первых, UNIX он и в Африке UNIX по этому если вы научитесь пользоваться любым одним дистрибутивом Linux вы без труда перерядите на любой другой. Поэтому с философской точки зрения совершенно без разницы. К стати MacOS производная FreeBSD - тоже UNIX система.
  • Во-вторых, среди всего этого многообразия можно выделить несколько “корней” - опорных точек а их количество не велико: Debian + Ununtu, Arch + Monjaro, RedHat + Fedora, Gentoo.
  • В третьих список дистрибутивов “для новичков” или тех которые подойдут большинству еще меньше по этому начать стоит с них а перепрыгнуть в мир Arch и Vim вы всегда успеете.
Так что ставить?

Я вам порекомендую 2 варианта (все это Ubuntu):

  • Если вы разработчик, писатель, художник, учащийся - в общем вы создаете что то - попробуйте Ubuntu - грядущая версия 20.04 вообще сказка! (выйдет в апреле 2020)
  • Если вам нравится классический интерфейс Windows, вы не хотите ник чему привыкать, вы консерватор - попробуйте linux Mit Cinomon - эта система основана на ubuntu и все что справедливо и для ubuntu справедлива и для mint.

Почему я не советую arch / fedora / debian / kde neon? Потому что, как я уже говорил, без разницы с чего начинать, а старт с ubuntu / mint наиболее мягкий. В добавок я сам уже на протяжении многих лет использую ubuntu и она мне очень нравится. Мне нравится Debian, а ubuntu как его представитель лучший выбор. Тут не будет проблем с драйверами - все ставится из коробки (даже драйвера на nvidia видеокарту - только включите галочку “Разрешить установку несвободных компонентов и драйверов” при установке), debian и в частности ubuntu хорошо поддерживаются компанией Google и Microsoft и для этой системы обкатаны и протестированы многие библиотеки машинного обучения, на этой системе без проблем поднимается steam, docker и многие программы. Ну и на подлесок у ubuntu самое большое сообщество. Если вам по каким то причинам не нравится ее внешний вид - то KDE NEON к вашим услугам (это еще одна версия убунту которая использует окружение рабочего стола KDE которое отличается своей гибкостью и эффектами, но мне ближе стандартный GNOME).

Какой у меня компьютер, как настроена Ubuntu у меня и какими программами я пользуюсь?

Thinkpad

В качестве рабочей машины я использую Lenovo Thikpad P1 (Generation 2). Это превосходный ноутбук. Во-первых, потому что это thinkpad и он просто создан для Linux и кодинга, во-вторых, он довольно мощный (i7-9750H, 12 ядер, 16 Гб RAM, nVidia Quadro T1000), он легкий (1.4 кг) с хорошим 15” экраном и долго живущий от батареи (8 часов). Я часто беру его с собой в универ и на работу, дома я подключаю его к внешнему доку:

Олимпиада по программированию 2020 СПб. Берем 1 место.
Домашнее рабочее место.

Список программ и настройки системы

CLI

  • Zsh + Oh-my-zsh самая удобная на мой взгляд оболочка shell. Автокомбинаты, подсвечивание git, подсветка истории, раскраска и масса плагинов. Вот статья про нее;
  • git - система контроля версий;

  • Htop + nvtop + iotop для мониторинга ресурсов. Полезно при дебаге программ и отлове утечек памяти;
  • Vim - лучший редактор текстов и кода;
  • Tmux - терминальный мультиплексор (хотя я его в основном ствлю на сервера, а на ноутбуке использую tilix);
  • Ranger - файловый менеджер он довольно специфичный но если нравится что то более классическое то есть mc. Про ranger можно (и нужно, русскоязычного материала не много) писать отдельную статью;
  • Neofetch + onetetch - просмотр информации о системе и о репозитории git. прикольно и красиво;
  • Yandex-weather-cli - погода. У меня она забинжена на weather;
  • Docker + nvidia docker + docker-compose - мой один из основных инструментов разработки. Контейнеры это удобно;
  • Python + сonda + dotnet + go + clang иногда - ну это компиляторы, менеджеры пакетов и интерпретаторы с помощью которых я запускаю и собираю свои программы;
  • Pass менеджер паролей;
  • KVM + Qemu - эмулятор процессора, необходим для виртуализации. Тут сделаю отступление: это лучший в мире эмулятор процессора (быстрее просто нет). Только тут можно взять и целиком пробросить какие то части вашего железа в виртуальную машину, что избавит от любых потерь в производительности. Например так часто делают с CPU и GPU - вот почему в качестве хостовой системы для вычислительных кластеров и серверов используют linux и только linux. В рамках домашнего использования можно например взять видеокарту и целиком пробросить ее в виртуальную машину где стоят все необходимые драйвера для вычислений или в контейнер Dcker. Аналогично можно пробрасывать и отдельные ядра процессора жесткие диски, модули памяти… именно благодаря KVM только в Linux работает nvidia-docker - важный инструмент при разработке нейронных сетей. Вот почему часто ml разработчики выбирают linux;
  • wine - wine is not emulator - среда, позволяющая закусать нативные windows приложения без потерь в производительности. О нем расскажу ниже;
  • cmatrix - шуточная консольная программа - делает в терминале матрицу как в одноименном фильме.

GUI

  • VS Code - текстовый редактор от Microsoft. Он очень удобный и гибкий. Я часто использую его для программирования на Python / go;
  • Rider - кросс-платформенная IDE для dotnet. В ней я программирую на C#. Не уступает Visual Studio;
  • Tilix - лучший на мой взгляд эмулятор терминала GNOME;
  • KeePassXC - менеджер паролей;
  • Thunderbird - почтовый клиент;
  • Firefox - браузер;
  • Telegram + Slack + discord - в представлении не нуждаются;
  • TeamViewer - подключиться к копму мамы или сестры и помочь что то установить;
  • GNOME Boxes - менеджер виртуальных машин. Как и все что разрабатывает GNOME мне нравится. Удобно быстро и без лишних функций. Работает с использованием KVM + QEMU. Я иногда использую виртуальные машины чтобы протестировать работоспособность своих программ на разных ОС + иногда по работе что то надо поставить или по учебе а засорять свой комп всяким мусором не хочется;
  • Typora - на мой взгляд самый удобный markdown редактор. В нем например были написаны все мои статьи;
  • LibreOffice Writer - я использую только его из всего офисного пакета. О нем будет немного ниже;
  • Steam + SteamProton + wine для ведьмака я редко играю в компьютерные игры и у меня их мало но ведьмак (прошел его раз 20 уже наверное)…
  • Jack + guitarX - гитарный процессор и аудио драйвер. я его использую для наложения всяких эффектов и игры на гитаре (в скором и электро укулеле). Вот статья по настройке.

Оформление и расширения gnome

  • adapta - красивая тема для GNOME;
  • Numix-circle - иконки;
  • Netspeed - скорость интернета в верхнем баре;
  • Tilix dropdown - выпадающий сверху терминалthot. у меня вызывается по F12;
  • Prime Indecator - переключалка графики с intel/nvidia позволяет вырубить nvidia карту если она не нужна, что значительно повышает время работы от батареи ноутбука (это чуть удобнее, чем лезть в nvidia X settings);

Вот readme файл по настройке linux и установке всех необходимых программ и настройке тем оформления:

Как вам темка рабочего стола?

Проблемы и их решения

Конечно у linux осталось несколько несколько проблем: Microsoft Office, Photoshop, 3Ds Max, игры? Но проблемы ли это? Давайте разберемся.

Офисный пакет

Да, под Linux нет Microsoft Office. Но так ли он нужен?

Под linux прекрасно работает libre office. Это не менее мощьный офисный пакет. Он предоставляет большие возможности по редактированию офисных документов. Да это не Microsoft Office и ему стоит учиться заново. Присутствует ряд отличий, но сказать что LibreOffice плохой нельзя. Например у него очень хороший редактор формул, чего не хватает например MS Office. Он похож на LeTeX, только проще и в этом его преимущество: если освоить его о можно жарить формулы быстрее чем если бы писать их руками и везти конспекты по матану без использования бумажки и ручки. Плагины - да для libre office они тоже есть, только не на отвратительном VBA, а на человеческом Python. LibreOffice имеет неплохую совместимость с MS Office и поддерживает все его форматы которые открываются и отображаются правильно (в большинстве случаев). Попробуйте возможно вы откажитесь от пакета MS Office. К стати libre office доступен и под Windows.

Но бывают случаи когда Microsoft Office необходим: например вы работаете с VBA и вам по роду деятельности нужно часто запускать документы с плагинами, а перейти на LibreOffice вы по каким то причинам не можете. Тогда на помочишь приходит он.

Wine

“Wine Is Not an Emulator” - и это действительно так. Это прослойка совместимости, позволяющая запускать приложения Windows в POSIX-совместимых операционных системах, таких как Linux. Вместо того, чтобы имитировать логику Windows, как это делает виртуальная машина или эмулятор, Wine переводит вызовы Windows API в вызовы POSIX на лету, устраняя потери производительности и памяти других методов и позволяя аккуратно интегрировать приложения Windows в Linux. Иными словами любое приложение Windows будет работать в Linux как если бы у вас стояла Windows вместо Linux.

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

Photoshop - лично я ми не пользуюсь (для этого GIMP есть) но он работает под wine.
MS Office - я им тоже не пользуюсь, но он работает.

Чем я пользуюсь и с чего я не пересел - это paint.net. Да да, конечно есть огромное количество альтернатив - gimp, krita и много других. Но я не смог себя заставить выучить их. Panint.net имеет аналог - Pinta. Хорошая штука, но у меня она периодически падает (правда если скачать из официального репозитория исходный код и собрать то все будет работать хорошо) но все равно paint.net мне нравится больше. И я использую wine для него. У меня не было никаких проблем с установкой.

Будем наедятся что разработчики paint.net переведут свой UI на Avalonua UI и paint.net станет кросс-платформенным. Может быть заняться этим? Я же знаю C# а код открыт...

Игры

Во первых много игр которые нативно работают под Linux: tomb rider, metro 2033, skyrim, war thunder… В списке есть и новые игры и этот список довольно большой. Во вторых даже если вашей игры нет для Linux то Wine интегрировали со steam что позволяет запускать windows игры. Этот проект называется Proton. Теперь чтобы запустить любую Windows игру достаточно нажать свойства и поставить галку запустить ее с помощью steam play и выбрать версию proton. На этом все! Даже терминал не надо открывать! Лично у меня не возникло просадок в производительности при запуске ведьмак 3. С wine вы получаете такую же или лучшую производительность чем на windows (вспомните сколько памяти в простое съедает ваша винда…).

Ведьмачек.. Прошел его раз 100 уже наверное. Он бессмертный как и DOOM.

Я не гонюсь за кадрами в секунду и игр у меня всего две: древний DOOM II и ведьмак. Но на моем ноутбуке под wine игра идет без видимых “тормозов” на максимальных настройках.

Вместо заключения

Кому я могу порекомендовать перейти с Windows на Linux - да практически всем:

  • В первую очередь конечно же программистам. Это самая удобная на мой взгляд система для написания программ. Один терминал чего стоит.
  • Если вы занимаетесь рисованием, 3d моделированием или созданием графического контента то Linux тоже будет хорошим выбором для вас. Тут есть blander и GIMP, нативно заводятся такие программы как Maya, Unity, Unreal Engine 4. Под wine можно запустить photoshop и 3Ds MAX (и получить прирост в производительности).
  • Большинству офисных работников. С точки зрения предприятия дешевле перейти на linux с libre office переписать все плагины с VBA на python (ведь python легче поддерживать) и переучить персонал, чем каждый год платить за лицензию microsoft и тратить больше ресурсов на поддержку и более мощное оборудование. (Я знаю несколько крупных предприятий и заводов которые перешли на Linux. К стати 1С под linux тоже заводится).
  • Учащимся школ и университетов. (например моя племянница использует linux + libre office и учится в школе. И да ведьмак и симс 4 у нее тоже стоит…)
  • Обычные пользователи и ваши родители. Например я пересадил свою маму на mint. Она довольна и не испытывает проблем.
  • Ну и конечно школы. Детей надо учить хорошему. За linux будущее. Да школам часто предлагают всякий отстойный “Российский” Гос Linux и Alt Linux. Не ставьте его! Это пример того как нельзя делать linux дистрибутивы. Ставьте свободные Ubuntu или Debian и все будет хорошо. Именно на linux проводятся все олимпиады по программирования. Взамен Pascal ABC и Delphi можно использовать Lazarus (да и сам pascal abc тоже умеет в linux - так как dotnet уже давно кросс-платформенный) а python под windows это вообще преступление (хотя я по прежнему считаю что нет языка для обучения программированию лучше чем pascal. Python можно рассматривать только как дополнение в рамках школьной программы).

Напоследок я бы хотел порекомендовать один хороший фильм о Linux и о явлении Open Source. Он довольно легкий и его можно и семьей посмотреть: